[Mesa-dev] [PATCH] st/mesa: tex offsets can't be in a const or 2d-indexed

Ilia Mirkin imirkin at alum.mit.edu
Sat Apr 7 19:23:47 UTC 2018


ping?

On Tue, Apr 3, 2018 at 12:06 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> All consts are now implicitly 2d (they set .Dimension), so trigger
> asserts. Also, the texture offset can't handle any sort of 2d indexing.
> While this could be tacked on, this seems unnecessary, just move it off
> into a separate temp.
>
> Fixes assertion failure in
> tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-uniform-offset.frag
>
> Note that this was an issue even before the const-always-2d thing, since
> there was no detection of when even a proper second dimension was used,
> e.g. for UBO or geom/tess inputs.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 5f7a0dcd3e8..01a58d7d2c6 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -4096,7 +4096,11 @@ glsl_to_tgsi_visitor::get_deref_offsets(ir_dereference *ir,
>  st_src_reg
>  glsl_to_tgsi_visitor::canonicalize_gather_offset(st_src_reg offset)
>  {
> -   if (offset.reladdr || offset.reladdr2) {
> +   if (offset.reladdr || offset.reladdr2 ||
> +       offset.has_index2 ||
> +       offset.file == PROGRAM_UNIFORM ||
> +       offset.file == PROGRAM_CONSTANT ||
> +       offset.file == PROGRAM_STATE_VAR) {
>        st_src_reg tmp = get_temp(glsl_type::ivec2_type);
>        st_dst_reg tmp_dst = st_dst_reg(tmp);
>        tmp_dst.writemask = WRITEMASK_XY;
> --
> 2.16.1
>


More information about the mesa-dev mailing list