diff --git a/src/gallium/auxiliary/driver_trace/tr_dump_state.c b/src/gallium/auxiliary/driver_trace/tr_dump_state.c index bc0f8d80164..bccbf355177 100644 --- a/src/gallium/auxiliary/driver_trace/tr_dump_state.c +++ b/src/gallium/auxiliary/driver_trace/tr_dump_state.c @@ -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(); diff --git a/src/gallium/auxiliary/util/u_framebuffer.c b/src/gallium/auxiliary/util/u_framebuffer.c index ff9a1b0dfa4..3a12670d4b7 100644 --- a/src/gallium/auxiliary/util/u_framebuffer.c +++ b/src/gallium/auxiliary/util/u_framebuffer.c @@ -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); diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h index f9b9174566a..8a97f2dff6b 100644 --- a/src/gallium/include/pipe/p_state.h +++ b/src/gallium/include/pipe/p_state.h @@ -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]; diff --git a/src/mesa/state_tracker/st_atom_framebuffer.c b/src/mesa/state_tracker/st_atom_framebuffer.c index 28be47a1732..710f2f92791 100644 --- a/src/mesa/state_tracker/st_atom_framebuffer.c +++ b/src/mesa/state_tracker/st_atom_framebuffer.c @@ -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];