From 642125edd97384b88f491c1383a06c42ed16e11e Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Sat, 4 Jan 2020 00:13:07 +0100 Subject: [PATCH] st/mesa: use uint-samplers for sampling stencil buffers MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Otherwise, we end up mismatching the sampler types when rendering. Signed-off-by: Erik Faye-Lund Reviewed-by: Marek Olšák --- 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); } -- 2.30.2