diff options
Diffstat (limited to 'src/gallium/auxiliary/util/u_threaded_context.c')
-rw-r--r-- | src/gallium/auxiliary/util/u_threaded_context.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gallium/auxiliary/util/u_threaded_context.c b/src/gallium/auxiliary/util/u_threaded_context.c index 9c078886b20..f5c4b01618b 100644 --- a/src/gallium/auxiliary/util/u_threaded_context.c +++ b/src/gallium/auxiliary/util/u_threaded_context.c @@ -941,7 +941,7 @@ tc_set_window_rectangles(struct pipe_context *_pipe, bool include, } struct tc_sampler_views { - ubyte shader, start, count; + ubyte shader, start, count, unbind_num_trailing_slots; struct pipe_sampler_view *slot[0]; /* more will be allocated if needed */ }; @@ -951,7 +951,8 @@ tc_call_set_sampler_views(struct pipe_context *pipe, union tc_payload *payload) struct tc_sampler_views *p = (struct tc_sampler_views *)payload; unsigned count = p->count; - pipe->set_sampler_views(pipe, p->shader, p->start, p->count, p->slot); + pipe->set_sampler_views(pipe, p->shader, p->start, p->count, + p->unbind_num_trailing_slots, p->slot); for (unsigned i = 0; i < count; i++) pipe_sampler_view_reference(&p->slot[i], NULL); } @@ -960,9 +961,10 @@ static void tc_set_sampler_views(struct pipe_context *_pipe, enum pipe_shader_type shader, unsigned start, unsigned count, + unsigned unbind_num_trailing_slots, struct pipe_sampler_view **views) { - if (!count) + if (!count && !unbind_num_trailing_slots) return; struct threaded_context *tc = threaded_context(_pipe); @@ -972,6 +974,7 @@ tc_set_sampler_views(struct pipe_context *_pipe, p->shader = shader; p->start = start; p->count = count; + p->unbind_num_trailing_slots = unbind_num_trailing_slots; if (views) { for (unsigned i = 0; i < count; i++) { |