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
@@ -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; | |||
} |
@@ -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; |
@@ -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; | |||
} | |||