mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-12-13 20:24:23 +08:00
panfrost: Fix set_sampler_views for big GL
Roughly use the freedreno logic to handle all the extra things that will come up in our Piglit sooner than later. Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com> Cc: mesa-stable Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13203>
This commit is contained in:
parent
4b2769493e
commit
304851422a
@ -627,32 +627,35 @@ panfrost_set_sampler_views(
|
||||
struct panfrost_context *ctx = pan_context(pctx);
|
||||
ctx->dirty_shader[shader] |= PAN_DIRTY_STAGE_TEXTURE;
|
||||
|
||||
unsigned new_nr = 0;
|
||||
unsigned i;
|
||||
|
||||
assert(start_slot == 0);
|
||||
|
||||
if (!views)
|
||||
num_views = 0;
|
||||
|
||||
for (i = 0; i < num_views; ++i) {
|
||||
if (views[i])
|
||||
new_nr = i + 1;
|
||||
struct pipe_sampler_view *view = views ? views[i] : NULL;
|
||||
unsigned p = i + start_slot;
|
||||
|
||||
if (take_ownership) {
|
||||
pipe_sampler_view_reference((struct pipe_sampler_view **)&ctx->sampler_views[shader][i],
|
||||
pipe_sampler_view_reference((struct pipe_sampler_view **)&ctx->sampler_views[shader][p],
|
||||
NULL);
|
||||
ctx->sampler_views[shader][i] = (struct panfrost_sampler_view *)views[i];
|
||||
ctx->sampler_views[shader][i] = (struct panfrost_sampler_view *)view;
|
||||
} else {
|
||||
pipe_sampler_view_reference((struct pipe_sampler_view **)&ctx->sampler_views[shader][i],
|
||||
views[i]);
|
||||
pipe_sampler_view_reference((struct pipe_sampler_view **)&ctx->sampler_views[shader][p],
|
||||
view);
|
||||
}
|
||||
}
|
||||
|
||||
for (; i < ctx->sampler_view_count[shader]; i++) {
|
||||
pipe_sampler_view_reference((struct pipe_sampler_view **)&ctx->sampler_views[shader][i],
|
||||
for (; i < num_views + unbind_num_trailing_slots; i++) {
|
||||
unsigned p = i + start_slot;
|
||||
pipe_sampler_view_reference((struct pipe_sampler_view **)&ctx->sampler_views[shader][p],
|
||||
NULL);
|
||||
}
|
||||
ctx->sampler_view_count[shader] = new_nr;
|
||||
|
||||
/* Recalculate sampler view count */
|
||||
ctx->sampler_view_count[shader] = 0;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(ctx->sampler_views[shader]); ++i) {
|
||||
if (ctx->sampler_views[shader][i])
|
||||
ctx->sampler_view_count[shader] = i + 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user