mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 22:10:11 +01:00
anv/batch_chain: Don't start a new BO just for BATCH_BUFFER_START
Previously, we just went ahead and emitted MI_BATCH_BUFFER_START as
normal. If we are near enough to the end, this can cause us to start a
new BO just for the MI_BATCH_BUFFER_START which messes up chaining. We
always reserve enough space at the end for an MI_BATCH_BUFFER_START so
we can just increment cmd_buffer->batch.end prior to emitting the
command.
Fixes: a0b133286a "anv/batch_chain: Simplify secondary batch return..."
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107926
Tested-by: Alex Smith <asmith@feralinteractive.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
parent
7a89a0d9ed
commit
f5bab06428
1 changed files with 9 additions and 0 deletions
|
|
@ -894,8 +894,17 @@ anv_cmd_buffer_end_batch_buffer(struct anv_cmd_buffer *cmd_buffer)
|
|||
* It doesn't matter where it points now so long as has a valid
|
||||
* relocation. We'll adjust it later as part of the chaining
|
||||
* process.
|
||||
*
|
||||
* We set the end of the batch a little short so we would be sure we
|
||||
* have room for the chaining command. Since we're about to emit the
|
||||
* chaining command, let's set it back where it should go.
|
||||
*/
|
||||
cmd_buffer->batch.end += GEN8_MI_BATCH_BUFFER_START_length * 4;
|
||||
assert(cmd_buffer->batch.start == batch_bo->bo.map);
|
||||
assert(cmd_buffer->batch.end == batch_bo->bo.map + batch_bo->bo.size);
|
||||
|
||||
emit_batch_buffer_start(cmd_buffer, &batch_bo->bo, 0);
|
||||
assert(cmd_buffer->batch.start == batch_bo->bo.map);
|
||||
} else {
|
||||
cmd_buffer->exec_mode = ANV_CMD_BUFFER_EXEC_MODE_COPY_AND_CHAIN;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue