diff options
author | Marcin Ślusarz <marcin.slusarz@intel.com> | 2020-09-01 22:02:10 +0200 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2020-09-02 10:16:57 +0000 |
commit | e94c22429b64f419d9a66f04fa5ecdad33f7f5ef (patch) | |
tree | 1c3f199b027a1a328dfd7b2b0dcb135b2b09c833 | |
parent | a1c2bd6ce8981b34c0cf9333699b0ce75be6cb55 (diff) |
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@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6546>
-rw-r--r-- | src/intel/vulkan/anv_batch_chain.c | 5 |
1 files changed, 5 insertions, 0 deletions
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* |