mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 02:58:05 +02:00
vc4: Keep a reference to BOs queued for rendering.
Otherwise, once we're not flushing at the end of every draw, we'll free things like gallium resources, and free the backing GEM object, before we've flushed the rendering using it to the kernel.
This commit is contained in:
parent
771d86abd6
commit
027d730aff
3 changed files with 4 additions and 8 deletions
|
|
@ -61,10 +61,7 @@ vc4_gem_hindex(struct vc4_context *vc4, struct vc4_bo *bo)
|
|||
}
|
||||
|
||||
cl_u32(&vc4->bo_handles, bo->handle);
|
||||
|
||||
#ifdef USE_VC4_SIMULATOR
|
||||
cl_ptr(&vc4->bo_pointers, bo);
|
||||
#endif
|
||||
cl_ptr(&vc4->bo_pointers, vc4_bo_reference(bo));
|
||||
|
||||
return hindex;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -226,9 +226,10 @@ vc4_flush(struct pipe_context *pctx)
|
|||
vc4_reset_cl(&vc4->shader_rec);
|
||||
vc4_reset_cl(&vc4->uniforms);
|
||||
vc4_reset_cl(&vc4->bo_handles);
|
||||
#ifdef USE_VC4_SIMULATOR
|
||||
struct vc4_bo **referenced_bos = vc4->bo_pointers.base;
|
||||
for (int i = 0; i < submit.bo_handle_count; i++)
|
||||
vc4_bo_unreference(&referenced_bos[i]);
|
||||
vc4_reset_cl(&vc4->bo_pointers);
|
||||
#endif
|
||||
vc4->shader_rec_count = 0;
|
||||
|
||||
vc4->needs_flush = false;
|
||||
|
|
|
|||
|
|
@ -123,9 +123,7 @@ struct vc4_context {
|
|||
struct vc4_cl shader_rec;
|
||||
struct vc4_cl uniforms;
|
||||
struct vc4_cl bo_handles;
|
||||
#ifdef USE_VC4_SIMULATOR
|
||||
struct vc4_cl bo_pointers;
|
||||
#endif
|
||||
uint32_t shader_rec_count;
|
||||
|
||||
struct vc4_bo *tile_alloc;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue