llvmpipe: pass incoming sample_mask into fragment shader context.
This links up the api changing the sample mask to passing it into the fragment shader. Reviewed-by: Roland Scheidegger <sroland@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4122>
This commit is contained in:
parent
c070af8511
commit
cab13f9174
|
@ -801,6 +801,15 @@ lp_setup_set_scissors( struct lp_setup_context *setup,
|
||||||
setup->dirty |= LP_SETUP_NEW_SCISSOR;
|
setup->dirty |= LP_SETUP_NEW_SCISSOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
lp_setup_set_sample_mask(struct lp_setup_context *setup,
|
||||||
|
uint32_t sample_mask)
|
||||||
|
{
|
||||||
|
if (setup->fs.current.jit_context.sample_mask != sample_mask) {
|
||||||
|
setup->fs.current.jit_context.sample_mask = sample_mask;
|
||||||
|
setup->dirty |= LP_SETUP_NEW_FS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
lp_setup_set_flatshade_first(struct lp_setup_context *setup,
|
lp_setup_set_flatshade_first(struct lp_setup_context *setup,
|
||||||
|
|
|
@ -149,6 +149,10 @@ unsigned
|
||||||
lp_setup_is_resource_referenced( const struct lp_setup_context *setup,
|
lp_setup_is_resource_referenced( const struct lp_setup_context *setup,
|
||||||
const struct pipe_resource *texture );
|
const struct pipe_resource *texture );
|
||||||
|
|
||||||
|
void
|
||||||
|
lp_setup_set_sample_mask(struct lp_setup_context *setup,
|
||||||
|
uint32_t sample_mask);
|
||||||
|
|
||||||
void
|
void
|
||||||
lp_setup_set_flatshade_first( struct lp_setup_context *setup,
|
lp_setup_set_flatshade_first( struct lp_setup_context *setup,
|
||||||
boolean flatshade_first );
|
boolean flatshade_first );
|
||||||
|
|
|
@ -60,6 +60,7 @@
|
||||||
#define LP_NEW_FS_IMAGES 0x100000
|
#define LP_NEW_FS_IMAGES 0x100000
|
||||||
#define LP_NEW_TCS 0x200000
|
#define LP_NEW_TCS 0x200000
|
||||||
#define LP_NEW_TES 0x400000
|
#define LP_NEW_TES 0x400000
|
||||||
|
#define LP_NEW_SAMPLE_MASK 0x800000
|
||||||
|
|
||||||
#define LP_CSNEW_CS 0x1
|
#define LP_CSNEW_CS 0x1
|
||||||
#define LP_CSNEW_CONSTANTS 0x2
|
#define LP_CSNEW_CONSTANTS 0x2
|
||||||
|
|
|
@ -182,7 +182,7 @@ llvmpipe_set_sample_mask(struct pipe_context *pipe,
|
||||||
if (sample_mask != llvmpipe->sample_mask) {
|
if (sample_mask != llvmpipe->sample_mask) {
|
||||||
llvmpipe->sample_mask = sample_mask;
|
llvmpipe->sample_mask = sample_mask;
|
||||||
|
|
||||||
llvmpipe->dirty |= LP_NEW_RASTERIZER;
|
llvmpipe->dirty |= LP_NEW_SAMPLE_MASK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,5 +202,6 @@ llvmpipe_init_blend_funcs(struct llvmpipe_context *llvmpipe)
|
||||||
llvmpipe->pipe.set_stencil_ref = llvmpipe_set_stencil_ref;
|
llvmpipe->pipe.set_stencil_ref = llvmpipe_set_stencil_ref;
|
||||||
llvmpipe->pipe.set_sample_mask = llvmpipe_set_sample_mask;
|
llvmpipe->pipe.set_sample_mask = llvmpipe_set_sample_mask;
|
||||||
|
|
||||||
|
llvmpipe->dirty |= LP_NEW_SAMPLE_MASK;
|
||||||
llvmpipe->sample_mask = ~0;
|
llvmpipe->sample_mask = ~0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -214,6 +214,7 @@ void llvmpipe_update_derived( struct llvmpipe_context *llvmpipe )
|
||||||
if (llvmpipe->dirty & (LP_NEW_FS |
|
if (llvmpipe->dirty & (LP_NEW_FS |
|
||||||
LP_NEW_FRAMEBUFFER |
|
LP_NEW_FRAMEBUFFER |
|
||||||
LP_NEW_RASTERIZER |
|
LP_NEW_RASTERIZER |
|
||||||
|
LP_NEW_SAMPLE_MASK |
|
||||||
LP_NEW_DEPTH_STENCIL_ALPHA)) {
|
LP_NEW_DEPTH_STENCIL_ALPHA)) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -225,7 +226,7 @@ void llvmpipe_update_derived( struct llvmpipe_context *llvmpipe )
|
||||||
boolean null_fs = !llvmpipe->fs ||
|
boolean null_fs = !llvmpipe->fs ||
|
||||||
llvmpipe->fs->info.base.num_instructions <= 1;
|
llvmpipe->fs->info.base.num_instructions <= 1;
|
||||||
boolean discard =
|
boolean discard =
|
||||||
(llvmpipe->sample_mask & 1) == 0 ||
|
(llvmpipe->sample_mask) == 0 ||
|
||||||
(llvmpipe->rasterizer ? llvmpipe->rasterizer->rasterizer_discard : FALSE) ||
|
(llvmpipe->rasterizer ? llvmpipe->rasterizer->rasterizer_discard : FALSE) ||
|
||||||
(null_fs &&
|
(null_fs &&
|
||||||
!llvmpipe->depth_stencil->depth.enabled &&
|
!llvmpipe->depth_stencil->depth.enabled &&
|
||||||
|
@ -238,6 +239,9 @@ void llvmpipe_update_derived( struct llvmpipe_context *llvmpipe )
|
||||||
LP_NEW_RASTERIZER))
|
LP_NEW_RASTERIZER))
|
||||||
llvmpipe_update_setup( llvmpipe );
|
llvmpipe_update_setup( llvmpipe );
|
||||||
|
|
||||||
|
if (llvmpipe->dirty & LP_NEW_SAMPLE_MASK)
|
||||||
|
lp_setup_set_sample_mask(llvmpipe->setup, llvmpipe->sample_mask);
|
||||||
|
|
||||||
if (llvmpipe->dirty & LP_NEW_BLEND_COLOR)
|
if (llvmpipe->dirty & LP_NEW_BLEND_COLOR)
|
||||||
lp_setup_set_blend_color(llvmpipe->setup,
|
lp_setup_set_blend_color(llvmpipe->setup,
|
||||||
&llvmpipe->blend_color);
|
&llvmpipe->blend_color);
|
||||||
|
|
|
@ -106,7 +106,7 @@ static void lp_blit(struct pipe_context *pipe,
|
||||||
util_blitter_save_tesseval_shader(lp->blitter, (void*)lp->tes);
|
util_blitter_save_tesseval_shader(lp->blitter, (void*)lp->tes);
|
||||||
util_blitter_save_depth_stencil_alpha(lp->blitter, (void*)lp->depth_stencil);
|
util_blitter_save_depth_stencil_alpha(lp->blitter, (void*)lp->depth_stencil);
|
||||||
util_blitter_save_stencil_ref(lp->blitter, &lp->stencil_ref);
|
util_blitter_save_stencil_ref(lp->blitter, &lp->stencil_ref);
|
||||||
/*util_blitter_save_sample_mask(sp->blitter, lp->sample_mask);*/
|
util_blitter_save_sample_mask(lp->blitter, lp->sample_mask);
|
||||||
util_blitter_save_framebuffer(lp->blitter, &lp->framebuffer);
|
util_blitter_save_framebuffer(lp->blitter, &lp->framebuffer);
|
||||||
util_blitter_save_fragment_sampler_states(lp->blitter,
|
util_blitter_save_fragment_sampler_states(lp->blitter,
|
||||||
lp->num_samplers[PIPE_SHADER_FRAGMENT],
|
lp->num_samplers[PIPE_SHADER_FRAGMENT],
|
||||||
|
|
Loading…
Reference in New Issue