From: Alejandro Piñeiro <apinhe...@igalia.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89580 --- src/mesa/drivers/dri/i965/brw_vec4_nir.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp index c3638a0..47e70ce 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp @@ -1417,13 +1417,18 @@ vec4_visitor::nir_emit_texture(nir_tex_instr *instr) const glsl_type *dest_type; + src_reg shadow_comparitor; + int shadow_compare = 0; + /* Load the texture operation sources */ for (unsigned i = 0; i < instr->num_srcs; i++) { src_reg src = get_nir_src(instr->src[i].src); switch (instr->src[i].src_type) { case nir_tex_src_comparitor: - /* @TODO: not yet implemented */ + shadow_comparitor = retype(src, BRW_REGISTER_TYPE_F); + shadow_comparitor.swizzle = BRW_SWIZZLE_XXXX; + shadow_compare = 1; break; case nir_tex_src_coord: @@ -1497,6 +1502,7 @@ vec4_visitor::nir_emit_texture(nir_tex_instr *instr) inst->base_mrf = 2; inst->mlen = inst->header_size + 1; inst->dst.writemask = WRITEMASK_XYZW; + inst->shadow_compare = shadow_compare; inst->src[1] = sampler_reg; @@ -1508,7 +1514,13 @@ vec4_visitor::nir_emit_texture(nir_tex_instr *instr) } else { /* @TODO: Load the coordinate */ - /* @TODO: Load the shadow comparitor */ + /* Load the shadow comparitor */ + if (shadow_compare && instr->op != nir_texop_txd) { + emit(MOV(dst_reg(MRF, param_base + 1, shadow_comparitor.type, + WRITEMASK_X), + shadow_comparitor)); + inst->mlen++; + } /* Load the LOD info */ if (instr->op == nir_texop_tex || instr->op == nir_texop_txl) { -- 2.1.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev