Mesa (master): st/mesa: use uint-samplers for sampling stencil buffers
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Jan 6 08:41:43 UTC 2020
Module: Mesa
Branch: master
Commit: 642125edd97384b88f491c1383a06c42ed16e11e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=642125edd97384b88f491c1383a06c42ed16e11e
Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date: Sat Jan 4 00:13:07 2020 +0100
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 at collabora.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
---
src/mesa/state_tracker/st_cb_drawpixels.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index a220c841597..55228e3b64d 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -111,10 +111,10 @@
static nir_ssa_def *
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 =
- 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_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(),
"gl_FragDepth");
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);
/* 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(),
"gl_FragStencilRefARB");
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);
}
More information about the mesa-commit
mailing list