Fixes:
773a23eb6da - 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>
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);
}
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)
(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]);
}