mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 19:50:11 +01:00
st/mesa: use uint-samplers for sampling stencil buffers
Otherwise, we end up mismatching the sampler types when rendering. Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
09ea2de2b8
commit
642125edd9
1 changed files with 6 additions and 4 deletions
|
|
@ -111,10 +111,10 @@
|
||||||
|
|
||||||
static nir_ssa_def *
|
static nir_ssa_def *
|
||||||
sample_via_nir(nir_builder *b, nir_variable *texcoord,
|
sample_via_nir(nir_builder *b, nir_variable *texcoord,
|
||||||
const char *name, int sampler)
|
const char *name, int sampler, enum glsl_base_type base_type)
|
||||||
{
|
{
|
||||||
const struct glsl_type *sampler2D =
|
const struct glsl_type *sampler2D =
|
||||||
glsl_sampler_type(GLSL_SAMPLER_DIM_2D, false, false, GLSL_TYPE_FLOAT);
|
glsl_sampler_type(GLSL_SAMPLER_DIM_2D, false, false, base_type);
|
||||||
|
|
||||||
nir_variable *var =
|
nir_variable *var =
|
||||||
nir_variable_create(b->shader, nir_var_uniform, sampler2D, name);
|
nir_variable_create(b->shader, nir_var_uniform, sampler2D, name);
|
||||||
|
|
@ -163,7 +163,8 @@ make_drawpix_z_stencil_program_nir(struct st_context *st,
|
||||||
nir_variable_create(b.shader, nir_var_shader_out, glsl_float_type(),
|
nir_variable_create(b.shader, nir_var_shader_out, glsl_float_type(),
|
||||||
"gl_FragDepth");
|
"gl_FragDepth");
|
||||||
out->data.location = FRAG_RESULT_DEPTH;
|
out->data.location = FRAG_RESULT_DEPTH;
|
||||||
nir_ssa_def *depth = sample_via_nir(&b, texcoord, "depth", 0);
|
nir_ssa_def *depth = sample_via_nir(&b, texcoord, "depth", 0,
|
||||||
|
GLSL_TYPE_FLOAT);
|
||||||
nir_store_var(&b, out, depth, 0x1);
|
nir_store_var(&b, out, depth, 0x1);
|
||||||
|
|
||||||
/* Also copy color */
|
/* Also copy color */
|
||||||
|
|
@ -184,7 +185,8 @@ make_drawpix_z_stencil_program_nir(struct st_context *st,
|
||||||
nir_variable_create(b.shader, nir_var_shader_out, glsl_uint_type(),
|
nir_variable_create(b.shader, nir_var_shader_out, glsl_uint_type(),
|
||||||
"gl_FragStencilRefARB");
|
"gl_FragStencilRefARB");
|
||||||
out->data.location = FRAG_RESULT_STENCIL;
|
out->data.location = FRAG_RESULT_STENCIL;
|
||||||
nir_ssa_def *stencil = sample_via_nir(&b, texcoord, "stencil", 1);
|
nir_ssa_def *stencil = sample_via_nir(&b, texcoord, "stencil", 1,
|
||||||
|
GLSL_TYPE_UINT);
|
||||||
nir_store_var(&b, out, stencil, 0x1);
|
nir_store_var(&b, out, stencil, 0x1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue