Module: Mesa Branch: master Commit: 33ac9dec91d07ef353e110ac376842d84ec539b4 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=33ac9dec91d07ef353e110ac376842d84ec539b4
Author: Marek Olšák <[email protected]> Date: Thu Feb 11 17:41:01 2021 -0500 radeonsi: allocate filled_size for streamout targets in set_streamout_buffers so that create_stream_output_target doesn't use the context and can be called from any thread. This is for u_threaded_context. Reviewed-by: Zoltán Böszörményi <[email protected]> Reviewed-by: Pierre-Eric Pelloux-Prayer <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9028> --- src/gallium/drivers/radeonsi/si_state_streamout.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_state_streamout.c b/src/gallium/drivers/radeonsi/si_state_streamout.c index 2d8fb989106..5303ad5e83d 100644 --- a/src/gallium/drivers/radeonsi/si_state_streamout.c +++ b/src/gallium/drivers/radeonsi/si_state_streamout.c @@ -39,7 +39,6 @@ static struct pipe_stream_output_target *si_create_so_target(struct pipe_context unsigned buffer_offset, unsigned buffer_size) { - struct si_context *sctx = (struct si_context *)ctx; struct si_streamout_target *t; struct si_resource *buf = si_resource(buffer); @@ -48,14 +47,6 @@ static struct pipe_stream_output_target *si_create_so_target(struct pipe_context return NULL; } - unsigned buf_filled_size_size = sctx->screen->use_ngg_streamout ? 8 : 4; - u_suballocator_alloc(&sctx->allocator_zeroed_memory, buf_filled_size_size, 4, - &t->buf_filled_size_offset, (struct pipe_resource **)&t->buf_filled_size); - if (!t->buf_filled_size) { - FREE(t); - return NULL; - } - t->b.reference.count = 1; t->b.context = ctx; pipe_resource_reference(&t->b.buffer, buffer); @@ -166,6 +157,15 @@ static void si_set_streamout_targets(struct pipe_context *ctx, unsigned num_targ if (offsets[i] == ((unsigned)-1)) append_bitmask |= 1 << i; + + /* Allocate space for the filled buffer size. */ + struct si_streamout_target *t = sctx->streamout.targets[i]; + if (!t->buf_filled_size) { + unsigned buf_filled_size_size = sctx->screen->use_ngg_streamout ? 8 : 4; + u_suballocator_alloc(&sctx->allocator_zeroed_memory, buf_filled_size_size, 4, + &t->buf_filled_size_offset, + (struct pipe_resource **)&t->buf_filled_size); + } } for (; i < sctx->streamout.num_targets; i++) _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
