From 6bcf70bd8516cab6ba5d91b5290ad27cff71962b Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Thu, 9 Apr 2026 17:27:45 -0700 Subject: [PATCH] anv: Remove saturating cmat configurations when INTEL_LOWER_DPAS=1 Since we don't have any DPAS-based implementation of those, it is odd to support them in the emulation mode that is only enabled with the debug flag INTEL_LOWER_DPAS nowadays. Remove it. Reviewed-by: Ian Romanick Part-of: --- src/intel/vulkan/anv_physical_device.c | 37 -------------------------- 1 file changed, 37 deletions(-) diff --git a/src/intel/vulkan/anv_physical_device.c b/src/intel/vulkan/anv_physical_device.c index 45e053f110a..988554e98fe 100644 --- a/src/intel/vulkan/anv_physical_device.c +++ b/src/intel/vulkan/anv_physical_device.c @@ -3478,43 +3478,6 @@ VkResult anv_GetPhysicalDeviceCooperativeMatrixPropertiesKHR( prop->saturatingAccumulation = VK_FALSE; prop->scope = convert_scope(cfg->scope); } - - /* VUID-RuntimeSpirv-saturatingAccumulation-08983 says: - * - * For OpCooperativeMatrixMulAddKHR, the SaturatingAccumulation - * cooperative matrix operand must be present if and only if - * VkCooperativeMatrixPropertiesKHR::saturatingAccumulation is - * VK_TRUE. - * - * As a result, we have to advertise integer configs both with and - * without this flag set. - * - * The DPAS instruction does not support the .sat modifier, so only - * advertise the configurations when the DPAS would be lowered. - * - * FINISHME: It should be possible to do better than full lowering on - * platforms that support DPAS. Emit a DPAS with a NULL accumulator - * argument, then perform the correct sequence of saturating add - * instructions. - */ - if (cfg->a != INTEL_CMAT_FLOAT16 && - (devinfo->verx10 < 125 || debug_get_bool_option("INTEL_LOWER_DPAS", false))) { - vk_outarray_append_typed(VkCooperativeMatrixPropertiesKHR, &out, prop) { - prop->sType = VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR; - - prop->MSize = cfg->m; - prop->NSize = cfg->n; - prop->KSize = cfg->k; - - prop->AType = convert_component_type(cfg->a); - prop->BType = convert_component_type(cfg->b); - prop->CType = convert_component_type(cfg->c); - prop->ResultType = convert_component_type(cfg->result); - - prop->saturatingAccumulation = VK_TRUE; - prop->scope = convert_scope(cfg->scope); - } - } } return vk_outarray_status(&out);