gallium, mesa: keep track of pixel local storage state

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Eric R. Smith <eric.smith@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37110>
This commit is contained in:
Ryan Mckeever 2025-09-16 19:03:47 -07:00 committed by Marge Bot
parent 7f7c4ebbba
commit cc12bac4f8
4 changed files with 10 additions and 0 deletions

View file

@ -560,6 +560,7 @@ void trace_dump_framebuffer_state(const struct pipe_framebuffer_state *state)
trace_dump_member(uint, state, samples);
trace_dump_member(uint, state, layers);
trace_dump_member(uint, state, nr_cbufs);
trace_dump_member(bool, state, pls_enabled);
trace_dump_member_begin("cbufs");
trace_dump_array_impl(surface, state->cbufs, state->nr_cbufs, &);
trace_dump_member_end();
@ -580,6 +581,7 @@ void trace_dump_framebuffer_state_deep(const struct pipe_framebuffer_state *stat
trace_dump_member(uint, state, samples);
trace_dump_member(uint, state, layers);
trace_dump_member(uint, state, nr_cbufs);
trace_dump_member(bool, state, pls_enabled);
trace_dump_member_begin("cbufs");
trace_dump_array_impl(surface, state->cbufs, state->nr_cbufs, &);
trace_dump_member_end();

View file

@ -79,6 +79,9 @@ util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst,
if (dst->viewmask != src->viewmask)
return false;
if (dst->pls_enabled != src->pls_enabled)
return false;
return true;
}
@ -111,6 +114,7 @@ util_copy_framebuffer_state(struct pipe_framebuffer_state *dst,
}
dst->nr_cbufs = src->nr_cbufs;
dst->pls_enabled = src->pls_enabled;
dst->viewmask = src->viewmask;
pipe_resource_reference(&dst->zsbuf.texture, src->zsbuf.texture);

View file

@ -435,6 +435,8 @@ struct pipe_framebuffer_state
/** multiple color buffers for multiple render targets */
uint8_t nr_cbufs;
/** true if pixel local storage is enabled */
bool pls_enabled;
/** used for multiview */
uint8_t viewmask;
struct pipe_surface cbufs[PIPE_MAX_COLOR_BUFS];

View file

@ -148,6 +148,8 @@ st_update_framebuffer_state( struct st_context *st )
*/
framebuffer.nr_cbufs = fb->_NumColorDrawBuffers;
framebuffer.pls_enabled = ctx->PixelLocalStorage;
unsigned num_multiview_layer = 0;
for (i = 0; i < fb->_NumColorDrawBuffers; i++) {
rb = fb->_ColorDrawBuffers[i];