r300,r600,svga: save the FS constant buffer for u_blitter to fix a regression
Fixes: 773a23eb6d
- gallium/u_blitter: clear color buffers using color from a constant buffer
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6548
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6539
Tested-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
Tested-by: Pavel Ondračka <pavel.ondracka@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16711>
This commit is contained in:
@@ -72,6 +72,15 @@ static void r300_blitter_begin(struct r300_context* r300, enum r300_blitter_op o
|
||||
util_blitter_save_vertex_buffer_slot(r300->blitter, r300->vertex_buffer);
|
||||
util_blitter_save_vertex_elements(r300->blitter, r300->velems);
|
||||
|
||||
struct pipe_constant_buffer cb = {
|
||||
/* r300 doesn't use the size for FS at all. The shader determines it.
|
||||
* Set something for blitter.
|
||||
*/
|
||||
.buffer_size = 4,
|
||||
.user_buffer = ((struct r300_constant_buffer*)r300->fs_constants.state)->ptr,
|
||||
};
|
||||
util_blitter_save_fragment_constant_buffer_slot(r300->blitter, &cb);
|
||||
|
||||
if (op & R300_SAVE_FRAMEBUFFER) {
|
||||
util_blitter_save_framebuffer(r300->blitter, r300->fb_state.state);
|
||||
}
|
||||
|
@@ -77,6 +77,8 @@ static void r600_blitter_begin(struct pipe_context *ctx, enum r600_blitter_op op
|
||||
util_blitter_save_depth_stencil_alpha(rctx->blitter, rctx->dsa_state.cso);
|
||||
util_blitter_save_stencil_ref(rctx->blitter, &rctx->stencil_ref.pipe_state);
|
||||
util_blitter_save_sample_mask(rctx->blitter, rctx->sample_mask.sample_mask, rctx->ps_iter_samples);
|
||||
util_blitter_save_fragment_constant_buffer_slot(rctx->blitter,
|
||||
&rctx->constbuf_state[PIPE_SHADER_FRAGMENT].cb[0]);
|
||||
}
|
||||
|
||||
if (op & R600_SAVE_FRAMEBUFFER)
|
||||
|
@@ -58,6 +58,8 @@ begin_blit(struct svga_context *svga)
|
||||
(void*)svga->curr.depth);
|
||||
util_blitter_save_stencil_ref(svga->blitter, &svga->curr.stencil_ref);
|
||||
util_blitter_save_sample_mask(svga->blitter, svga->curr.sample_mask, 0);
|
||||
util_blitter_save_fragment_constant_buffer_slot(svga->blitter,
|
||||
&svga->curr.constbufs[PIPE_SHADER_FRAGMENT][0]);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user