Module: Mesa Branch: master Commit: ab336e8b46b6d7016519681c59b9aedf3fea04ad URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ab336e8b46b6d7016519681c59b9aedf3fea04ad
Author: Ilia Mirkin <[email protected]> Date: Sun Nov 19 12:27:12 2017 -0500 nir: allow texture offsets with cube maps GL doesn't have this, but some hardware supports it. This is convenient for lowering tg4 to plain texture calls, which is necessary on Adreno A4xx hardware. Signed-off-by: Ilia Mirkin <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Reviewed-by: Rob Clark <[email protected]> --- src/compiler/nir/nir.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index f46f614711..cf200fdc66 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -1364,8 +1364,7 @@ nir_tex_instr_src_size(const nir_tex_instr *instr, unsigned src) if (instr->src[src].src_type == nir_tex_src_ms_mcs) return 4; - if (instr->src[src].src_type == nir_tex_src_offset || - instr->src[src].src_type == nir_tex_src_ddx || + if (instr->src[src].src_type == nir_tex_src_ddx || instr->src[src].src_type == nir_tex_src_ddy) { if (instr->is_array) return instr->coord_components - 1; @@ -1373,6 +1372,18 @@ nir_tex_instr_src_size(const nir_tex_instr *instr, unsigned src) return instr->coord_components; } + /* Usual APIs don't allow cube + offset, but we allow it, with 2 coords for + * the offset, since a cube maps to a single face. + */ + if (instr->src[src].src_type == nir_tex_src_offset) { + if (instr->sampler_dim == GLSL_SAMPLER_DIM_CUBE) + return 2; + else if (instr->is_array) + return instr->coord_components - 1; + else + return instr->coord_components; + } + return 1; } _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
