radv: track cooperative matrix robustness

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41653>
This commit is contained in:
Rhys Perry 2026-05-08 16:18:30 +01:00 committed by Marge Bot
parent b1429caab3
commit 0cdb7594d7
3 changed files with 11 additions and 2 deletions

View file

@ -1169,6 +1169,7 @@ radv_device_init_compiler_info(struct radv_device *device)
.force_64_byte_sampled_image = pdev->force_64_byte_sampled_image,
.robust_buffer_access = pdev->use_llvm && (device->vk.enabled_features.robustBufferAccess2 ||
device->vk.enabled_features.robustBufferAccess),
.coop_matrix_robust_buffer_access = device->vk.enabled_features.cooperativeMatrixRobustBufferAccess,
.mitigate_smem_oob = pdev->info.compiler_info.has_smem_oob_access_bug &&
!(instance->debug_flags & RADV_DEBUG_NO_SMEM_MITIGATION),
.mitigate_smem_with_null_prt =

View file

@ -143,6 +143,11 @@ radv_pipeline_get_shader_key(const struct radv_compiler_info *compiler_info,
radv_set_stage_key_robustness(&rs, s, &key);
if (compiler_info->key.coop_matrix_robust_buffer_access) {
key.coop_matrix_storage_robustness = rs.storage_buffers != VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED;
key.coop_matrix_uniform_robustness = rs.uniform_buffers != VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED;
}
const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *const subgroup_size =
vk_find_struct_const(stage->pNext, PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO);

View file

@ -81,6 +81,8 @@ struct radv_shader_stage_key {
uint8_t storage_robustness2 : 1;
uint8_t uniform_robustness2 : 1;
uint8_t vertex_robustness1 : 1;
uint8_t coop_matrix_storage_robustness : 1;
uint8_t coop_matrix_uniform_robustness : 1;
uint8_t optimisations_disabled : 1;
uint8_t keep_statistic_info : 1;
@ -97,7 +99,7 @@ struct radv_shader_stage_key {
/* Whether the shader is used with indirect pipeline binds. */
uint8_t indirect_bindable : 1;
uint32_t reserved : 17;
uint32_t reserved : 15;
};
struct radv_ps_epilog_key {
@ -530,6 +532,7 @@ struct radv_compiler_info {
uint32_t use_fmask : 1;
uint32_t force_64_byte_sampled_image : 1;
uint32_t robust_buffer_access : 1; /* Only used by LLVM. */
uint32_t coop_matrix_robust_buffer_access : 1;
uint32_t mitigate_smem_oob : 1;
uint32_t mitigate_smem_with_null_prt : 1;
uint32_t bvh8 : 1;
@ -548,7 +551,7 @@ struct radv_compiler_info {
uint32_t tex_non_uniform : 1;
uint32_t lower_terminate_to_discard : 1;
uint32_t no_implicit_varying_subgroup_size : 1;
uint32_t padding : 30;
uint32_t padding : 29;
int32_t force_aniso;