<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Sep 7, 2016 at 9:17 AM, Lionel Landwerlin <span dir="ltr"><<a href="mailto:lionel.g.landwerlin@intel.com" target="_blank">lionel.g.landwerlin@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>Thanks,<br>
      <br>
      I thought about that but the various
      nir_intrinsic_set_write_mask()<wbr>/etc.. for load/store kind of
      discouraged me.<br>
      I'll give it a try though.<br></div></div></blockquote><div><br></div><div>I just looked a bit and it's going to be a *major* change.  maybe best left alone for the moment?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><div><div><div class="h5">
      <br>
      On 07/09/16 17:12, Jason Ekstrand wrote:<br>
    </div></div></div><div><div class="h5">
    <blockquote type="cite">
      <div dir="ltr">
        <div>
          <div>LGTM.<br>
            <br>
          </div>
          Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net" target="_blank">jason@jlekstrand.net</a>><br>
          <br>
        </div>
        <div>Maybe we should consider making the orders of arguments a
          bit more consistent for a few functions so that we can use
          fill_common_atomic_sources for load and store too.<br>
          <br>
        </div>
        <div>--Jason<br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Wed, Sep 7, 2016 at 3:10 AM, Lionel
          Landwerlin <span dir="ltr"><<a href="mailto:llandwerlin@gmail.com" target="_blank">llandwerlin@gmail.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Missing
            bits from 2afb950161f847d9b0a7be03dfb62c<wbr>acc5ea51ba.<br>
            <br>
            Signed-off-by: Lionel Landwerlin <<a href="mailto:lionel.g.landwerlin@intel.com" target="_blank">lionel.g.landwerlin@intel.com</a><wbr>><br>
            Cc: Jason Ekstrand <<a href="mailto:jason.ekstrand@intel.com" target="_blank">jason.ekstrand@intel.com</a>><br>
            ---<br>
             src/compiler/spirv/spirv_to_n<wbr>ir.c | 35
            ++++++++++++++++++++++++++++++<wbr>++++-<br>
             1 file changed, 34 insertions(+), 1 deletion(-)<br>
            <br>
            diff --git a/src/compiler/spirv/spirv_to_<wbr>nir.c
            b/src/compiler/spirv/spirv_to_<wbr>nir.c<br>
            index 4d88fdb..f1cd4be 100644<br>
            --- a/src/compiler/spirv/spirv_to_<wbr>nir.c<br>
            +++ b/src/compiler/spirv/spirv_to_<wbr>nir.c<br>
            @@ -1920,11 +1920,44 @@ vtn_handle_ssbo_or_shared_atom<wbr>ic(struct
            vtn_builder *b, SpvOp opcode,<br>
                */<br>
            <br>
                if (chain->var->mode ==
            vtn_variable_mode_workgroup) {<br>
            +      struct vtn_type *type = chain->var->type;<br>
                   nir_deref *deref = &vtn_access_chain_to_deref(b,
            chain)->deref;<br>
                   nir_intrinsic_op op = get_shared_nir_atomic_op(opcod<wbr>e);<br>
                   atomic = nir_intrinsic_instr_create(b-><wbr>nb.shader,
            op);<br>
                   atomic->variables[0] = nir_deref_as_var(nir_copy_dere<wbr>f(atomic,
            deref));<br>
            -      fill_common_atomic_sources(b, opcode, w,
            &atomic->src[0]);<br>
            +<br>
            +      switch (opcode) {<br>
            +      case SpvOpAtomicLoad:<br>
            +         atomic->num_components =
            glsl_get_vector_elements(type-<wbr>>type);<br>
            +         break;<br>
            +<br>
            +      case SpvOpAtomicStore:<br>
            +         atomic->num_components =
            glsl_get_vector_elements(type-<wbr>>type);<br>
            +         nir_intrinsic_set_write_mask(<wbr>atomic, (1
            << atomic->num_components) - 1);<br>
            +         atomic->src[0] = nir_src_for_ssa(vtn_ssa_value(<wbr>b,
            w[4])->def);<br>
            +         break;<br>
            +<br>
            +      case SpvOpAtomicExchange:<br>
            +      case SpvOpAtomicCompareExchange:<br>
            +      case SpvOpAtomicCompareExchangeWeak<wbr>:<br>
            +      case SpvOpAtomicIIncrement:<br>
            +      case SpvOpAtomicIDecrement:<br>
            +      case SpvOpAtomicIAdd:<br>
            +      case SpvOpAtomicISub:<br>
            +      case SpvOpAtomicSMin:<br>
            +      case SpvOpAtomicUMin:<br>
            +      case SpvOpAtomicSMax:<br>
            +      case SpvOpAtomicUMax:<br>
            +      case SpvOpAtomicAnd:<br>
            +      case SpvOpAtomicOr:<br>
            +      case SpvOpAtomicXor:<br>
            +         fill_common_atomic_sources(b, opcode, w,
            &atomic->src[0]);<br>
            +         break;<br>
            +<br>
            +      default:<br>
            +         unreachable("Invalid SPIR-V atomic");<br>
            +<br>
            +      }<br>
                } else {<br>
                   assert(chain->var->mode ==
            vtn_variable_mode_ssbo);<br>
                   struct vtn_type *type;<br>
            <span><font color="#888888">--<br>
                2.9.3<br>
                <br>
                ______________________________<wbr>_________________<br>
                mesa-dev mailing list<br>
                <a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
                <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
              </font></span></blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <p><br>
    </p>
  </div></div></div>

</blockquote></div><br></div></div>