Browse Source

anv: set right datatypes in anv_pipeline_binding

This structure contains two fields, binding and index, that store the
binding in the descriptor set and the index inside the binding.

These structures are defined as uint8_t, but the types in Vulkan
specification are uint32_t, so big values are clamp.

This fixes dEQP-VK.binding_model.shader_access.*.multiple_arbitrary_descriptors.*

v2: use UINT32_MAX for index when having no render targets (Tapani)

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
tags/17.3-branchpoint
Juan A. Suarez Romero 8 years ago
parent
commit
a2234614b6

+ 1
- 1
src/intel/vulkan/anv_pipeline.c View File

@@ -907,7 +907,7 @@ anv_pipeline_compile_fs(struct anv_pipeline *pipeline,
rt_bindings[0] = (struct anv_pipeline_binding) {
.set = ANV_DESCRIPTOR_SET_COLOR_ATTACHMENTS,
.binding = 0,
.index = UINT8_MAX,
.index = UINT32_MAX,
};
num_rts = 1;
}

+ 2
- 2
src/intel/vulkan/anv_private.h View File

@@ -1246,10 +1246,10 @@ struct anv_pipeline_binding {
uint8_t set;

/* Binding in the descriptor set */
uint8_t binding;
uint32_t binding;

/* Index in the binding */
uint8_t index;
uint32_t index;

/* Input attachment index (relative to the subpass) */
uint8_t input_attachment_index;

+ 1
- 1
src/intel/vulkan/genX_pipeline.c View File

@@ -1346,7 +1346,7 @@ has_color_buffer_write_enabled(const struct anv_pipeline *pipeline)
if (bind_map->surface_to_descriptor[i].set !=
ANV_DESCRIPTOR_SET_COLOR_ATTACHMENTS)
continue;
if (bind_map->surface_to_descriptor[i].index != UINT8_MAX)
if (bind_map->surface_to_descriptor[i].index != UINT32_MAX)
return true;
}


Loading…
Cancel
Save