Mesa (staging/20.1): anv/gen11+: Disable object level preemption
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu May 21 13:30:56 UTC 2020
Module: Mesa
Branch: staging/20.1
Commit: ed599c3e6cda30219d5888fcd7ff5abccebb57a0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ed599c3e6cda30219d5888fcd7ff5abccebb57a0
Author: D Scott Phillips <d.scott.phillips at intel.com>
Date: Tue May 19 13:42:26 2020 -0700
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: <mesa-stable at lists.freedesktop.org>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5110>
(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 9fdb0f2f1b5..5ee4de00acd 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -283,7 +283,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
More information about the mesa-commit
mailing list