From a366c3f548fe46165c75c3caa3b47e866d42ef93 Mon Sep 17 00:00:00 2001 From: D Scott Phillips Date: Tue, 19 May 2020 13:42:26 -0700 Subject: [PATCH] anv/gen11+: Disable object level preemption An unknown issue is causing vs push constants to become corrupted during object-level preemption. For now, restrict to command buffer level preemption to avoid rendering corruption. Cc: Reviewed-by: Jason Ekstrand Part-of: (cherry picked from commit 81201e461772a06ed2c20207d2901f6cf9a24114) --- .pick_status.json | 2 +- src/intel/vulkan/genX_state.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 3da66cb3804..f15622641ed 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2389,7 +2389,7 @@ "description": "anv/gen11+: Disable object level preemption", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": null }, diff --git a/src/intel/vulkan/genX_state.c b/src/intel/vulkan/genX_state.c index 84c43473774..69c49a46ad3 100644 --- a/src/intel/vulkan/genX_state.c +++ b/src/intel/vulkan/genX_state.c @@ -237,6 +237,22 @@ genX(init_device_state)(struct anv_device *device) lri.DataDWord = cache_mode_0; } } + + /* an unknown issue is causing vs push constants to become + * corrupted during object-level preemption. For now, restrict + * to command buffer level preemption to avoid rendering + * corruption. + */ + uint32_t cs_chicken1; + anv_pack_struct(&cs_chicken1, + GENX(CS_CHICKEN1), + .ReplayMode = MidcmdbufferPreemption, + .ReplayModeMask = true); + + anv_batch_emit(&batch, GENX(MI_LOAD_REGISTER_IMM), lri) { + lri.RegisterOffset = GENX(CS_CHICKEN1_num); + lri.DataDWord = cs_chicken1; + } #endif #if GEN_GEN == 12