diff --git a/src/intel/vulkan/anv_physical_device.c b/src/intel/vulkan/anv_physical_device.c index 6cd2711e3b0..07e609ca881 100644 --- a/src/intel/vulkan/anv_physical_device.c +++ b/src/intel/vulkan/anv_physical_device.c @@ -2581,6 +2581,14 @@ anv_physical_device_try_create(struct vk_instance *vk_instance, goto fail_fd; } + /* Disable Wa_16013994831 on Gfx12.0 because we found other cases where we + * need to always disable preemption : + * - https://gitlab.freedesktop.org/mesa/mesa/-/issues/5963 + * - https://gitlab.freedesktop.org/mesa/mesa/-/issues/5662 + */ + if (devinfo.verx10 == 120) + BITSET_CLEAR(devinfo.workarounds, INTEL_WA_16013994831); + if (!devinfo.has_context_isolation) { result = vk_errorf(instance, VK_ERROR_INCOMPATIBLE_DRIVER, "Vulkan requires context isolation for %s", devinfo.name); diff --git a/src/intel/vulkan/genX_init_state.c b/src/intel/vulkan/genX_init_state.c index 3cf9563c45f..5b58a55b3c5 100644 --- a/src/intel/vulkan/genX_init_state.c +++ b/src/intel/vulkan/genX_init_state.c @@ -502,6 +502,11 @@ init_render_queue_state(struct anv_queue *queue, bool is_companion_rcs_batch) anv_batch_write_reg(batch, GENX(CS_CHICKEN1), cc1) { cc1.ReplayMode = MidcmdbufferPreemption; cc1.ReplayModeMask = true; + +#if GFX_VERx10 == 120 + cc1.DisablePreemptionandHighPriorityPausingdueto3DPRIMITIVECommand = true; + cc1.DisablePreemptionandHighPriorityPausingdueto3DPRIMITIVECommandMask = true; +#endif } #if INTEL_NEEDS_WA_1806527549