binding: update for xglCmdBindDescriptorSets()
This update makes it possible to bind multiple descriptor sets to the command
buffer. We introduced intel_cmd_dset_data to hold the descriptor set offsets
in the global descriptor region as well as their dynamic offsets. We also
changed the descriptor reading routines from
intel_desc_set_read_surface()
intel_desc_set_read_sampler()
to
intel_desc_region_read_surface()
intel_desc_region_read_sampler()
v2: fix a potential crash when allocation of dynamic_desc_indices fails
diff --git a/icd/intel/cmd.h b/icd/intel/cmd.h
index be8bf13..2379b3a 100644
--- a/icd/intel/cmd.h
+++ b/icd/intel/cmd.h
@@ -133,6 +133,14 @@
uint32_t used;
};
+struct intel_cmd_dset_data {
+ struct intel_desc_offset *set_offsets;
+ uint32_t set_offset_count;
+
+ uint32_t *dynamic_offsets;
+ uint32_t dynamic_offset_count;
+};
+
/*
* States bounded to the command buffer. We want to write states directly to
* the command buffer when possible, and reduce this struct.
@@ -162,12 +170,11 @@
} state;
struct {
- const struct intel_desc_set *graphics;
- uint32_t *graphics_dynamic_offsets;
- size_t graphics_dynamic_offset_size;
- const struct intel_desc_set *compute;
- uint32_t *compute_dynamic_offsets;
- size_t compute_dynamic_offset_size;
+ const struct intel_desc_layout_chain *graphics;
+ struct intel_cmd_dset_data graphics_data;
+
+ const struct intel_desc_layout_chain *compute;
+ struct intel_cmd_dset_data compute_data;
} dset;
struct {