summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-06-06 09:12:50 -0700
committerJason Ekstrand <[email protected]>2016-06-10 09:42:59 -0700
commite2265926f25235f9be833984a5e365889a70ea74 (patch)
tree4171e9ceb9d1bd83bd48b3e4a172833ce55b17c4
parentcd21015abd134aa815398e90714631d3f6601294 (diff)
anv/descriptor_set: Add a type field in debug builds
This allows for some extra validation and makes it easier to see what's going on when poking around in gdb. Signed-off-by: Jason Ekstrand <[email protected]> Cc: "12.0" <[email protected]>
-rw-r--r--src/intel/vulkan/anv_descriptor_set.c5
-rw-r--r--src/intel/vulkan/anv_private.h5
2 files changed, 10 insertions, 0 deletions
diff --git a/src/intel/vulkan/anv_descriptor_set.c b/src/intel/vulkan/anv_descriptor_set.c
index 3924d04310e..c977318a058 100644
--- a/src/intel/vulkan/anv_descriptor_set.c
+++ b/src/intel/vulkan/anv_descriptor_set.c
@@ -91,6 +91,9 @@ VkResult anv_CreateDescriptorSetLayout(
uint32_t b = binding->binding;
assert(binding->descriptorCount > 0);
+#ifndef NDEBUG
+ set_layout->binding[b].type = binding->descriptorType;
+#endif
set_layout->binding[b].array_size = binding->descriptorCount;
set_layout->binding[b].descriptor_index = set_layout->size;
set_layout->size += binding->descriptorCount;
@@ -526,6 +529,8 @@ void anv_UpdateDescriptorSets(
&set->descriptors[bind_layout->descriptor_index];
desc += write->dstArrayElement;
+ assert(write->descriptorType == bind_layout->type);
+
switch (write->descriptorType) {
case VK_DESCRIPTOR_TYPE_SAMPLER:
for (uint32_t j = 0; j < write->descriptorCount; j++) {
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index 26ffbd65666..975cdfc33a1 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -922,6 +922,11 @@ struct anv_vue_header {
};
struct anv_descriptor_set_binding_layout {
+#ifndef NDEBUG
+ /* The type of the descriptors in this binding */
+ VkDescriptorType type;
+#endif
+
/* Number of array elements in this binding */
uint16_t array_size;