mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 08:40:11 +01:00
i965: Allocate shadow batches to explicitly be the BO size.
This unfortunately makes it malloc/realloc on every new batch, rather than once at startup. But it ensures that the shadow buffer's size will absolutely match the BO size. Otherwise, as we tune BATCH_SZ/STATE_SZ or bufmgr cache bucket sizes, we may get a BO size that's rounded up, and fail to allocate the shadow buffer large enough. This doesn't fix any bugs today, as BATCH_SZ/STATE_SZ are the size of a cache bucket, but it's better to be safe than sorry. Reported-by: James Xiong <james.xiong@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
parent
ec5df73803
commit
5c04971831
1 changed files with 5 additions and 7 deletions
|
|
@ -107,15 +107,11 @@ intel_batchbuffer_init(struct brw_context *brw)
|
|||
|
||||
batch->use_shadow_copy = !devinfo->has_llc;
|
||||
|
||||
if (batch->use_shadow_copy) {
|
||||
batch->batch.map = malloc(BATCH_SZ);
|
||||
batch->map_next = batch->batch.map;
|
||||
batch->state.map = malloc(STATE_SZ);
|
||||
}
|
||||
|
||||
init_reloc_list(&batch->batch_relocs, 250);
|
||||
init_reloc_list(&batch->state_relocs, 250);
|
||||
|
||||
batch->batch.map = NULL;
|
||||
batch->state.map = NULL;
|
||||
batch->exec_count = 0;
|
||||
batch->exec_array_size = 100;
|
||||
batch->exec_bos =
|
||||
|
|
@ -196,7 +192,9 @@ recreate_growing_buffer(struct brw_context *brw,
|
|||
grow->partial_bo_map = NULL;
|
||||
grow->partial_bytes = 0;
|
||||
|
||||
if (!batch->use_shadow_copy)
|
||||
if (batch->use_shadow_copy)
|
||||
grow->map = realloc(grow->map, grow->bo->size);
|
||||
else
|
||||
grow->map = brw_bo_map(brw, grow->bo, MAP_READ | MAP_WRITE);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue