mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-10 16:50:13 +01:00
gallium/u_threaded: don't copy the indexbuf pointer if we overwrite it
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7719>
This commit is contained in:
parent
351ba767af
commit
c8fe9df9c4
1 changed files with 8 additions and 2 deletions
|
|
@ -2345,12 +2345,18 @@ tc_call_draw_multi(struct pipe_context *pipe, union tc_payload *payload)
|
|||
pipe_resource_reference(&info->info.index.resource, NULL);
|
||||
}
|
||||
|
||||
#define DRAW_INFO_SIZE_WITHOUT_INDEXBUF_AND_MIN_MAX_INDEX \
|
||||
offsetof(struct pipe_draw_info, index)
|
||||
|
||||
static void
|
||||
tc_draw_vbo(struct pipe_context *_pipe, const struct pipe_draw_info *info,
|
||||
const struct pipe_draw_indirect_info *indirect,
|
||||
const struct pipe_draw_start_count *draws,
|
||||
unsigned num_draws)
|
||||
{
|
||||
STATIC_ASSERT(DRAW_INFO_SIZE_WITHOUT_INDEXBUF_AND_MIN_MAX_INDEX +
|
||||
sizeof(intptr_t) == offsetof(struct pipe_draw_info, min_index));
|
||||
|
||||
struct threaded_context *tc = threaded_context(_pipe);
|
||||
unsigned index_size = info->index_size;
|
||||
bool has_user_indices = info->has_user_indices;
|
||||
|
|
@ -2397,7 +2403,7 @@ tc_draw_vbo(struct pipe_context *_pipe, const struct pipe_draw_info *info,
|
|||
|
||||
struct tc_draw_single *p =
|
||||
tc_add_struct_typed_call(tc, TC_CALL_draw_single, tc_draw_single);
|
||||
memcpy(&p->info, info, DRAW_INFO_SIZE_WITHOUT_MIN_MAX_INDEX);
|
||||
memcpy(&p->info, info, DRAW_INFO_SIZE_WITHOUT_INDEXBUF_AND_MIN_MAX_INDEX);
|
||||
p->info.index.resource = buffer;
|
||||
/* u_threaded_context stores start/count in min/max_index for single draws. */
|
||||
p->info.min_index = offset >> util_logbase2(index_size);
|
||||
|
|
@ -2444,7 +2450,7 @@ tc_draw_vbo(struct pipe_context *_pipe, const struct pipe_draw_info *info,
|
|||
struct tc_draw_multi *p =
|
||||
tc_add_slot_based_call(tc, TC_CALL_draw_multi, tc_draw_multi,
|
||||
num_draws);
|
||||
memcpy(&p->info, info, DRAW_INFO_SIZE_WITHOUT_MIN_MAX_INDEX);
|
||||
memcpy(&p->info, info, DRAW_INFO_SIZE_WITHOUT_INDEXBUF_AND_MIN_MAX_INDEX);
|
||||
p->info.index.resource = buffer;
|
||||
p->num_draws = num_draws;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue