Mesa (master): anv: refresh cached current batch bo after emitting some commands
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Sep 2 10:22:28 UTC 2020
Module: Mesa
Branch: master
Commit: e94c22429b64f419d9a66f04fa5ecdad33f7f5ef
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e94c22429b64f419d9a66f04fa5ecdad33f7f5ef
Author: Marcin Ślusarz <marcin.slusarz at intel.com>
Date: Tue Sep 1 22:02:10 2020 +0200
anv: refresh cached current batch bo after emitting some commands
Fixes crashes in:
- Rise of the Tomb Rider (on benchmark start)
- Total War: Three Kingdoms (on game start)
- Total War: Warhammer II (on game start)
Fixes: 34a0ce58c7f ("anv: add a new execution mode for secondary command buffers")
Signed-off-by: Marcin Ślusarz <marcin.slusarz at intel.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6546>
---
src/intel/vulkan/anv_batch_chain.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/intel/vulkan/anv_batch_chain.c b/src/intel/vulkan/anv_batch_chain.c
index 4aefa58ea1e..ce429ff2d85 100644
--- a/src/intel/vulkan/anv_batch_chain.c
+++ b/src/intel/vulkan/anv_batch_chain.c
@@ -951,6 +951,11 @@ anv_cmd_buffer_end_batch_buffer(struct anv_cmd_buffer *cmd_buffer)
.SecondLevelBatchBuffer = Firstlevelbatch) +
(GEN8_MI_BATCH_BUFFER_START_BatchBufferStartAddress_start / 8);
cmd_buffer->return_addr = anv_batch_address(&cmd_buffer->batch, jump_addr);
+
+ /* The emit above may have caused us to chain batch buffers which
+ * would mean that batch_bo is no longer valid.
+ */
+ batch_bo = anv_cmd_buffer_current_batch_bo(cmd_buffer);
} else if ((cmd_buffer->batch_bos.next == cmd_buffer->batch_bos.prev) &&
(length < ANV_CMD_BUFFER_BATCH_SIZE / 2)) {
/* If the secondary has exactly one batch buffer in its list *and*
More information about the mesa-commit
mailing list