<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEEDINFO "
   title="NEEDINFO - Using array in structure results in wrong GLSL compilation output"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=103955#c5">Comment # 5</a>
              on <a class="bz_bug_link 
          bz_status_NEEDINFO "
   title="NEEDINFO - Using array in structure results in wrong GLSL compilation output"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=103955">bug 103955</a>
              from <span class="vcard"><a class="email" href="mailto:idr@freedesktop.org" title="Ian Romanick <idr@freedesktop.org>"> <span class="fn">Ian Romanick</span></a>
</span></b>
        <pre>(In reply to Ian Romanick from <a href="show_bug.cgi?id=103955#c4">comment #4</a>)
<span class="quote">> (In reply to Ilia Mirkin from <a href="show_bug.cgi?id=103955#c3">comment #3</a>)

> >    (expression vec3 * (record_ref (var_ref u_s) color)
> >                       (array_ref (record_ref (var_ref u_s) arr) (constant int (0)))
> >    )

> This should be fine.  For a bunch of things we allow mixing scalars and
> either vectors or matrices.  The shader_runner test passes on i965, so maybe
> the problem is in st_glsl_to_tgsi?</span >

This is a thing that SPIR-V does not allow (except for multiply which has
special vector-times-scalar opcodes).  For part of the SPIR-V work I wrote a
pass that adds the missing swizzles.  It may be easiest to use that to massage
the GLSL IR before TGSI conversion.

We don't want to use this in general because may of the optimization passes
cannot "see through" a swizzle.  Algebraic optimizations, for example, can't
see that (+ (a) (swizzle xxxx (* (b) (c)))) is a MAD.  Also related to the
SPIR-V work, this is a topic I've been thinking about lately...</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>