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