<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div id="magicdomid80" class="ace-line"><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">Hi
        everybody,</span></div>
    <div id="magicdomid81" class="ace-line"><br>
    </div>
    <div id="magicdomid5" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">recently
        I have sent to the list the first series with patches for
        testing ARB_gl_spirv [1]. On the cover letter I mention
        "barebone tests" and "borrowed tests", and the need f</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">or</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">
        discussion, so here we are. And sorry if the email is somewhat
        long and messy, but it is intended as a brainstorm. FWIW, this
        was already introduced </span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">i</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">n my
        presentation at FOSDEM, as some people (specifically Mark Janes)
        asked about that.</span></div>
    <div id="magicdomid6" class=""><br>
    </div>
    <div id="magicdomid7" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">*
        Barebone tests</span></div>
    <div id="magicdomid8" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">Basically
        smoke testing for all the general shader features supported
        (uniforms, UBO, SSBO, etc), plus tests for some specific
        ARB_gl_spirv features (like specialization constants). Why "just
        barebone"? The issue with this extension is that the
        functionality it covers is basically all current GLSL
        functionality, with some exceptions, so it is complex to get a
        full testing coverage from scratch. So the idea would be </span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">to
      </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">touch
        a little of everything,  so any implementation of the extension
        should pass, but would not provide a full coverage of the
        extension for practical reasons. We would le</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">ave</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> that
        for the "borrowed tests" (more about that below)</span></div>
    <div id="magicdomid9" class=""><br>
    </div>
    <div id="magicdomid10" class=""><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">An
        additional advantage of this approach is that </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">those
      </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">GLSL
        tests are compatible </span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">with</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">
        the ARB_gl_spirv/GL_KHR_vulkan_glsl and </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">would
        not need an automatic conversion like the borrowed tests from
        other specs (more about that below).</span></div>
    <div id="magicdomid11" class=""><br>
    </div>
    <div id="magicdomid12" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">The
        series I sent ha</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">s</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> 25
        tests. On our development branch we have ~70 individual tests,
        and we foresee that the final version would have a little more
        tha</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">n</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> 100
        tests.</span></div>
    <div id="magicdomid13" class=""><br>
    </div>
    <div id="magicdomid14" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">We
        also have some hundred generated builtin tests. Those generate
        SPIR-V</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">
        directly</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">. This
        allows t</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">esting</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> them
        without the need </span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">to</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> rely
        on the borrowed tests, so </span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">it
      </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">avoid</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">s</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> the
        dependency on glslang to test them. It also reduces the number
        of builtin tests needed for a SPIR-V run, as we don't bother
        generating tests that doesn't make sense for SPIR-V, such as
        operators with mixed types.</span></div>
    <div id="magicdomid15" class=""><br>
    </div>
    <div id="magicdomid16" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">Th</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">e</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">s</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">e</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">
        barebone tests only add a dependency to spirv-tools, as the
        SPIR-V is included as assembly. And in any case, it is executed
        as a</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">n</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">
        external binary, as we assumed that a runtime dependency would
        be easier to be accepted tha</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">n</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> a
        build dependency. But it would be easy to replace this with a
        dependency </span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">on</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">
        spirv-tools, and call the library directly. As far as we know,
        adding a dependency to spirv-tools would be considered as
        "fine".</span></div>
    <div id="magicdomid17" class=""><br>
    </div>
    <div id="magicdomid18" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">Some
        people would argue that most of that is already tested on other
        specs, so it would be redundant, and we should only test the
        ARB_gl_spirv specifics, and let the full general coverage on the
        borrowed tests. But there are some extra things to discuss about
        that.</span></div>
    <div id="magicdomid19" class=""><br>
    </div>
    <div id="magicdomid20" class=""><br>
    </div>
    <div id="magicdomid21" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">*
        Borrowed tests</span></div>
    <div id="magicdomid22" class=""><br>
    </div>
    <div id="magicdomid23" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">Those
        are the shader_tests that we re-use from other specification</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">s</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">. In
        this case, the conversion to SPIR-V is a two pass process, done
        by a custom script. I</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">n
        the</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> first
      </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">pass
      </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">the
        script checks the shader and fix</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">es</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> it in
        order to be compatible with glslang shader expectations, and
        then the script calls glslang to convert it to SPIR-V.  Fix in
        this case means things like change gl_Vertex/gl_FragColor to
        generic in/outs. In addition to fix</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">ing</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> the
        shaders, the script ha</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">s</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> some
        features like mark</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">ing</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> the
        tests to be skipped on the following piglit run, and allows </span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">storing</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> the
        SPIR-V assembly </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">i</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">n a</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">n</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">
        external file, or include it </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">i</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">n the
        shader</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">_test</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">
        itself. The former is mostly useful for borrowed tests, the
        latter for barebone tests.</span></div>
    <div id="magicdomid24" class=""><br>
    </div>
    <div id="magicdomid25" class=""><br>
    </div>
    <div id="magicdomid26" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">Nicolai
        started that script, that we have been using and extended for a
        while. Right now we have the current conversion rate:</span></div>
    <div id="magicdomid27" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   *
        piglit/tests directory: [2028] skip: 537, excluded: 0, success:
        1363, fail: 128</span></div>
    <div id="magicdomid28" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   *
        piglit/generated_tests directory: [32354] skip: 1110, excluded:
        0, success: 31244, fail: 0</span></div>
    <div id="magicdomid29" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">That
        is a (IMHO) good conversion rate right now.</span></div>
    <div id="magicdomid30" class=""><br>
    </div>
    <div id="magicdomid31" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">Issues:</span></div>
    <div id="magicdomid32" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   *
        Dependency on glslang to create the binaries: right now the
        GLSL->SPIR-V pass is done using glslang. As with spirv-tools,
        as a runtime binary, but again we could use the library. The
        problem with this</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">
        approach</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> is
        that after talking with some people, they don't consider glslang
        as a "fine" dependency of piglit. The library API is somewhat
        unstable (although not sure if that changed lately), and there
        are also some issues with the SPIR-V generated now and then. So
        there is the possiblity of this dependency to be vetoed. This is
        also the reason barebone tests include the assembly, and only
        depend on spirv-tools to re-assemble it. The idea is that for
        the barebone tests it </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">sh</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">ould
        not matter how SPIR-V</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">
        was generated</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">, you
        could do it writing SPIR-V assembly directly without any tool,
        for example. FWIW, as part of our work we created issues on
        glslang and provided some patches, and we got feedback/fixes, so
        the library is active and receptive to suggestions.</span></div>
    <div id="magicdomid33" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   </span></div>
    <div id="magicdomid34" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   *
        Dependency on glslang to fix the shaders: this is something new
        that didn't have Nicolai</span><span
        class="author-a-9z81zz76z2z81zz75zz67zz80z49z90zkz85zqhp">'s</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">
        original script. Initially we added support for fixing uniforms
        lacking explicit location</span><span
        class="author-a-9jz72zz67zz65zz75zz70zhz85zz72zz81z4z70zb2s">s</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> on
        the script directly. But glslang has already some limited
        support for this, and other automatic fixes, so we moved to a
        mixed approach of using glslang features plus some minor fixes.
        The main advantage of this is that reduces how much the script
        modifies GLSL, letting glslang to do that. So if finally glslang
        is vetoed, we would need to reimplement those features.</span></div>
    <div id="magicdomid35" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   </span></div>
    <div id="magicdomid36" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   *
        Not other real alternative right now: if glslang is vetoed, we
        would need to face that right now there is no real alternative.
        There is one coming, as Ian is working on a Mesa backend for
        SPIR-V [1], first suggested on a previous thread [2].
        Additionally, Ian's work adds an interesting alternative. If
        Mesa itself is able to do the GLSL->SPIR-V pass, then it
        would be feasible to add a special debug mode configured by an
        envvar, so internally it would do the GLSL->SPIR-V pass, and
        then the linking would use the ARB_gl_spirv path. In that way we
        would not need a custom script on piglit, </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">but
        to enable</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> this
        envvar. But then this backend would need to also support shader
        fixing (more advanced tha</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">n</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">
        glslang), and this would not work for non-Mesa drivers using
        piglit (although I</span><span
        class="author-a-9z81zz76z2z81zz75zz67zz80z49z90zkz85zqhp"> a</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">m not
        sure if this is a use case with high priority for piglit). In
        any case, as I said, this alternative is still not available.</span></div>
    <div id="magicdomid37" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   </span></div>
    <div id="magicdomid38" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   *
        Slow conversion: assuming that glslang dependency is okish,
        ideally we would like the GLSL->SPIR-V conversion to be done
        while building piglit, as with the generated tests. But the
        problem is that it is a slow process. Tests directory need 2min,
        and generated_tests need 50 min on my i5. Those times are with
        one process, but although we added support for forking N
        processes, generated_tests conversion would be already too slow,
        25 minutes on my i5.</span></div>
    <div id="magicdomid39" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   </span></div>
    <div id="magicdomid40" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   *
        Slow piglit run: with ARB_gl_spirv we would be duplicating the
        tests to run on the shaders.py profile. And in practice, the
        time needed would be more than the double</span></div>
    <div id="magicdomid41" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   </span></div>
    <div id="magicdomid42" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">Due to
        all this issues, one alternative would be</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z"> to</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> not
        include/run by default the SPIR-V borrowed tests, and only
        include the script and instructions to use</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z"> in
        piglit</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">, so </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">that
      </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">any
        driver developer interested </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">in
        the feature can </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">use</span><span
        class="author-a-9z81zz76z2z81zz75zz67zz80z49z90zkz85zqhp"> it</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">. But
        as we know, usually tools that are not used tend to rot.</span></div>
    <div id="magicdomid43" class=""><br>
    </div>
    <div id="magicdomid44" class=""><br>
    </div>
    <div id="magicdomid45" class=""><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">Taking
        into account the above considerations, our suggestion is the
        following</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">
        compromise:<br>
          * Go on with the barebone tests. Add a spirv-tools runtime
        dependency (those tests would just fail without spirv-tools)<br>
      </span></div>
    <div id="magicdomid46" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">  *
        Accept </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">the
        use of </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">glslang,
        as there is no real alternative right now.</span></div>
    <div id="magicdomid47" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">  * </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">Continue</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">
        execut</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">ing
        it</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> as a
        binary, so</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">
        that it remains</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> a
        runtime dependency. This way, platforms not </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">implementing
        the </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">ARB_gl_spirv</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">
        extension</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> w</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">on't
        have a</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> d</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">ependency
        on</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">
        glslang, and th</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">o</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">se
        tests w</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">ill</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">simply</span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> fail</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z"> or
        be </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">skip</span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">pped
        .</span></div>
    <div id="magicdomid48" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">  * </span><span
        class="author-a-z78zz79zz85zz81zz88zlcz82zajz83z9xz83z1z90z">Only
        convert to SPIR-V the shaders of the test directory and not the
        generated_tests</span></div>
    <div id="magicdomid49" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">      
        * Not only because of the time to convert the generated_tests. </span></div>
    <div id="magicdomid50" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">      
        * Also because as mentioned, we are adding SPIR-V generated
        tests for some of the existing cases.</span></div>
    <div id="magicdomid51" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">      
        * Revisit if generated_tests got slimmed</span></div>
    <div id="magicdomid52" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">  *
        Get the shader.py profile to do a new run but passing a --spirv
        option to the test directory (or perhaps a new
        generated_spirv_tests directory)</span></div>
    <div id="magicdomid53" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">  *
        Revisit everything when the Mesa GLSL->SPIR-V backend got in
        good shape.</span></div>
    <div id="magicdomid54" class=""><br>
    </div>
    <div id="magicdomid55" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">Opinions?</span></div>
    <div id="magicdomid56" class=""><br>
    </div>
    <div id="magicdomid57" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">PS: if
        you are curious, here the comparison of a full piglit shader.py
        run using GLSL vs using SPIR-V with our really-dirty development
        branch for i965 on Skylake:</span></div>
    <div id="magicdomid58" class=""><br>
    </div>
    <div id="magicdomid59" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">      
        name: 20180418-glsl-code-p 20180418-spirv-code-</span></div>
    <div id="magicdomid60" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">      
        ----  -------------------- --------------------</span></div>
    <div id="magicdomid61" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">      
        pass:                30475                28324</span></div>
    <div id="magicdomid62" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">      
        fail:                   15                  287</span></div>
    <div id="magicdomid63" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">     
        crash:                    5                   41</span></div>
    <div id="magicdomid64" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">      
        skip:                 3887                 5730</span></div>
    <div id="magicdomid65" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   
        timeout:                    0                    0</span></div>
    <div id="magicdomid66" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">      
        warn:                    0                    0</span></div>
    <div id="magicdomid67" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> incomplete:                   
        0                    0</span></div>
    <div id="magicdomid68" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> dmesg-warn:                   
        0                    0</span></div>
    <div id="magicdomid69" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj"> dmesg-fail:                   
        0                    0</span></div>
    <div id="magicdomid70" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">   
        changes:                    0                 2176</span></div>
    <div id="magicdomid71" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">     
        fixes:                    0                    9</span></div>
    <div id="magicdomid72" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">regressions:                   
        0                  324</span></div>
    <div id="magicdomid73" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">     
        total:                34382                34382</span></div>
    <div id="magicdomid74" class=""><br>
    </div>
    <div id="magicdomid75" class=""><br>
    </div>
    <div id="magicdomid76" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">[1] </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj url"><a
href="https://lists.freedesktop.org/archives/piglit/2018-April/024145.html">https://lists.freedesktop.org/archives/piglit/2018-April/024145.html</a></span></div>
    <div id="magicdomid77" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">[2] </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj url"><a
href="https://lists.freedesktop.org/archives/mesa-dev/2017-November/176407.html">https://lists.freedesktop.org/archives/mesa-dev/2017-November/176407.html</a></span></div>
    <div id="magicdomid78" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">[3] </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj url"><a
href="https://lists.freedesktop.org/archives/mesa-dev/2017-May/156592.html">https://lists.freedesktop.org/archives/mesa-dev/2017-May/156592.html</a></span></div>
    <div id="magicdomid79" class=""><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj">[4] </span><span
        class="author-a-z70zz78zz71zo47z85zvz69zrmz67ztz72zz67zj url"><a
          href="https://fosdem.org/2018/schedule/event/spirv/">https://fosdem.org/2018/schedule/event/spirv/</a></span></div>
  </body>
</html>