aboutsummaryrefslogtreecommitdiffstats
path: root/src/intel/vulkan/anv_private.h
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2019-10-31 14:09:39 -0500
committerJason Ekstrand <[email protected]>2019-11-18 18:35:14 +0000
commit0709c0f6b40b1e365104b248464ffefa746b5052 (patch)
treec759dfc92f953fb00089b3d434394c6b887c112d /src/intel/vulkan/anv_private.h
parentfa120cb31cd8802b2a3a758acb1d911b5cbb22a2 (diff)
anv: Flatten descriptor bindings in anv_nir_apply_pipeline_layout
This lets us stop tracking the pipeline layout. It also means less indirection on a very hot path. As an extra bonus, we can make some of our data structures smaller. No measurable CPU overhead improvement. Reviewed-by: Lionel Landwerlin <[email protected]>
Diffstat (limited to 'src/intel/vulkan/anv_private.h')
-rw-r--r--src/intel/vulkan/anv_private.h34
1 files changed, 20 insertions, 14 deletions
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index 0b1e97c64b6..5b8ac491ce5 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -2012,25 +2012,32 @@ anv_descriptor_set_destroy(struct anv_device *device,
#define ANV_DESCRIPTOR_SET_COLOR_ATTACHMENTS UINT8_MAX
struct anv_pipeline_binding {
- /* The descriptor set this surface corresponds to. The special value of
- * ANV_DESCRIPTOR_SET_COLOR_ATTACHMENTS indicates that the offset refers
- * to a color attachment and not a regular descriptor.
+ /** Index in the descriptor set
+ *
+ * This is a flattened index; the descriptor set layout is already taken
+ * into account.
*/
- uint8_t set;
+ uint32_t index;
- /* Binding in the descriptor set */
- uint32_t binding;
+ /** The descriptor set this surface corresponds to.
+ *
+ * The special ANV_DESCRIPTOR_SET_* values above indicates that this
+ * binding is not a normal descriptor set but something else.
+ */
+ uint8_t set;
- /* Index in the binding */
- uint32_t index;
+ union {
+ /** Plane in the binding index for images */
+ uint8_t plane;
- /* Plane in the binding index */
- uint8_t plane;
+ /** Input attachment index (relative to the subpass) */
+ uint8_t input_attachment_index;
- /* Input attachment index (relative to the subpass) */
- uint8_t input_attachment_index;
+ /** Dynamic offset index (for dynamic UBOs and SSBOs) */
+ uint8_t dynamic_offset_index;
+ };
- /* For a storage image, whether it is write-only */
+ /** For a storage image, whether it is write-only */
bool write_only;
};
@@ -2468,7 +2475,6 @@ struct anv_attachment_state {
*/
struct anv_cmd_pipeline_state {
struct anv_pipeline *pipeline;
- struct anv_pipeline_layout *layout;
struct anv_descriptor_set *descriptors[MAX_SETS];
uint32_t dynamic_offsets[MAX_DYNAMIC_BUFFERS];