gallium: make u_blitter code save/restore stencil ref values
This commit is contained in:
parent
bf4b0773c5
commit
ed0f3b08b6
|
@ -262,6 +262,8 @@ static void blitter_restore_CSOs(struct blitter_context_priv *ctx)
|
|||
ctx->blitter.saved_fs = INVALID_PTR;
|
||||
ctx->blitter.saved_vs = INVALID_PTR;
|
||||
|
||||
pipe->set_stencil_ref(pipe, &ctx->blitter.saved_stencil_ref);
|
||||
|
||||
/* restore the state objects which are required to be saved before copy/fill
|
||||
*/
|
||||
if (ctx->blitter.saved_fb_state.nr_cbufs != ~0) {
|
||||
|
|
|
@ -47,6 +47,7 @@ struct blitter_context
|
|||
void *saved_fs, *saved_vs; /**< fragment shader, vertex shader */
|
||||
|
||||
struct pipe_framebuffer_state saved_fb_state; /**< framebuffer state */
|
||||
struct pipe_stencil_ref saved_stencil_ref; /**< stencil ref */
|
||||
|
||||
int saved_num_sampler_states;
|
||||
void *saved_sampler_states[32];
|
||||
|
@ -169,6 +170,13 @@ void util_blitter_save_depth_stencil_alpha(struct blitter_context *blitter,
|
|||
blitter->saved_dsa_state = state;
|
||||
}
|
||||
|
||||
static INLINE
|
||||
void util_blitter_save_stencil_ref(struct blitter_context *blitter,
|
||||
const struct pipe_stencil_ref *state)
|
||||
{
|
||||
blitter->saved_stencil_ref = *state;
|
||||
}
|
||||
|
||||
static INLINE
|
||||
void util_blitter_save_rasterizer(struct blitter_context *blitter,
|
||||
void *state)
|
||||
|
|
|
@ -27,6 +27,7 @@ static void r300_blitter_save_states(struct r300_context* r300)
|
|||
{
|
||||
util_blitter_save_blend(r300->blitter, r300->blend_state.state);
|
||||
util_blitter_save_depth_stencil_alpha(r300->blitter, r300->dsa_state.state);
|
||||
util_blitter_save_stencil_ref(r300->blitter, &(r300->stencil_ref));
|
||||
util_blitter_save_rasterizer(r300->blitter, r300->rs_state.state);
|
||||
util_blitter_save_fragment_shader(r300->blitter, r300->fs);
|
||||
util_blitter_save_vertex_shader(r300->blitter, r300->vs);
|
||||
|
|
Loading…
Reference in New Issue