Mesa (master): gallium/u_threaded: unify user and non-user codepaths in set_constant_buffer
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jan 28 00:13:26 UTC 2021
Module: Mesa
Branch: master
Commit: cf82b3dc74c1e30704b01fe85b2d0fcfd1081bc8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cf82b3dc74c1e30704b01fe85b2d0fcfd1081bc8
Author: Marek Olšák <marek.olsak at amd.com>
Date: Sat Dec 12 17:10:00 2020 -0500
gallium/u_threaded: unify user and non-user codepaths in set_constant_buffer
We can do this cleanup thanks to take_ownership.
Reviewed-by: Zoltán Böszörményi <zboszor at gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8298>
---
src/gallium/auxiliary/util/u_threaded_context.c | 33 ++++++++++---------------
1 file changed, 13 insertions(+), 20 deletions(-)
diff --git a/src/gallium/auxiliary/util/u_threaded_context.c b/src/gallium/auxiliary/util/u_threaded_context.c
index cc7fc941706..187b6c367c3 100644
--- a/src/gallium/auxiliary/util/u_threaded_context.c
+++ b/src/gallium/auxiliary/util/u_threaded_context.c
@@ -805,29 +805,22 @@ tc_set_constant_buffer(struct pipe_context *_pipe,
return;
}
- if (cb->user_buffer) {
- struct pipe_resource *buffer = NULL;
- unsigned offset;
+ struct pipe_resource *buffer;
+ unsigned offset;
+ if (cb->user_buffer) {
/* This must be done before adding set_constant_buffer, because it could
* generate e.g. transfer_unmap and flush partially-uninitialized
* set_constant_buffer to the driver if it was done afterwards.
*/
- u_upload_data(tc->base.const_uploader, 0, cb->buffer_size, tc->ubo_alignment,
- cb->user_buffer, &offset, &buffer);
+ buffer = NULL;
+ u_upload_data(tc->base.const_uploader, 0, cb->buffer_size,
+ tc->ubo_alignment, cb->user_buffer, &offset, &buffer);
u_upload_unmap(tc->base.const_uploader);
-
- struct tc_constant_buffer *p =
- tc_add_struct_typed_call(tc, TC_CALL_set_constant_buffer,
- tc_constant_buffer);
- p->info.shader = shader;
- p->info.index = index;
- p->info.is_null = false;
- p->cb.buffer_size = cb->buffer_size;
- p->cb.user_buffer = NULL;
- p->cb.buffer_offset = offset;
- p->cb.buffer = buffer;
- return;
+ take_ownership = true;
+ } else {
+ buffer = cb->buffer;
+ offset = cb->buffer_offset;
}
struct tc_constant_buffer *p =
@@ -837,13 +830,13 @@ tc_set_constant_buffer(struct pipe_context *_pipe,
p->info.index = index;
p->info.is_null = false;
p->cb.user_buffer = NULL;
- p->cb.buffer_offset = cb->buffer_offset;
+ p->cb.buffer_offset = offset;
p->cb.buffer_size = cb->buffer_size;
if (take_ownership)
- p->cb.buffer = cb->buffer;
+ p->cb.buffer = buffer;
else
- tc_set_resource_reference(&p->cb.buffer, cb->buffer);
+ tc_set_resource_reference(&p->cb.buffer, buffer);
}
struct tc_inlinable_constants {
More information about the mesa-commit
mailing list