Mesa (staging/20.0): st/mesa: use uint-result for sampling stencil buffers
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Feb 4 16:11:32 UTC 2020
Module: Mesa
Branch: staging/20.0
Commit: 450657e26c15aaa6c5732c3374916d5c4c179e52
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=450657e26c15aaa6c5732c3374916d5c4c179e52
Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date: Mon Feb 3 18:22:31 2020 +0100
st/mesa: use uint-result for sampling stencil buffers
Otherwise, we end up mismatching the result-type and the sampler-type.
Fixes: 642125edd97 ("st/mesa: use uint-samplers for sampling stencil buffers")
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3680>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3680>
(cherry picked from commit fd27fb511386615cd6b44b037f9f5117846b51d4)
---
.pick_status.json | 2 +-
src/mesa/state_tracker/st_cb_drawpixels.c | 9 +++++----
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/.pick_status.json b/.pick_status.json
index 3d71e730991..70b747fd317 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -40,7 +40,7 @@
"description": "st/mesa: use uint-result for sampling stencil buffers",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"master_sha": null,
"because_sha": "642125edd97384b88f491c1383a06c42ed16e11e"
},
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index 55228e3b64d..2f2b98ecb6f 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -111,7 +111,8 @@
static nir_ssa_def *
sample_via_nir(nir_builder *b, nir_variable *texcoord,
- const char *name, int sampler, enum glsl_base_type base_type)
+ const char *name, int sampler, enum glsl_base_type base_type,
+ nir_alu_type alu_type)
{
const struct glsl_type *sampler2D =
glsl_sampler_type(GLSL_SAMPLER_DIM_2D, false, false, base_type);
@@ -127,7 +128,7 @@ sample_via_nir(nir_builder *b, nir_variable *texcoord,
tex->op = nir_texop_tex;
tex->sampler_dim = GLSL_SAMPLER_DIM_2D;
tex->coord_components = 2;
- tex->dest_type = nir_type_float;
+ tex->dest_type = alu_type;
tex->src[0].src_type = nir_tex_src_texture_deref;
tex->src[0].src = nir_src_for_ssa(&deref->dest.ssa);
tex->src[1].src_type = nir_tex_src_sampler_deref;
@@ -164,7 +165,7 @@ make_drawpix_z_stencil_program_nir(struct st_context *st,
"gl_FragDepth");
out->data.location = FRAG_RESULT_DEPTH;
nir_ssa_def *depth = sample_via_nir(&b, texcoord, "depth", 0,
- GLSL_TYPE_FLOAT);
+ GLSL_TYPE_FLOAT, nir_type_float);
nir_store_var(&b, out, depth, 0x1);
/* Also copy color */
@@ -186,7 +187,7 @@ make_drawpix_z_stencil_program_nir(struct st_context *st,
"gl_FragStencilRefARB");
out->data.location = FRAG_RESULT_STENCIL;
nir_ssa_def *stencil = sample_via_nir(&b, texcoord, "stencil", 1,
- GLSL_TYPE_UINT);
+ GLSL_TYPE_UINT, nir_type_uint);
nir_store_var(&b, out, stencil, 0x1);
}
More information about the mesa-commit
mailing list