summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/util/u_threaded_context.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/auxiliary/util/u_threaded_context.c')
-rw-r--r--src/gallium/auxiliary/util/u_threaded_context.c9
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++) {