<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<div>
<div dir="auto" style="direction:ltr; margin:0; padding:0; font-family:sans-serif; font-size:11pt; color:black">
Maybe a command line argument could work?<br>
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0; padding:0; font-family:sans-serif; font-size:11pt; color:black">
<span id="x_OutlookSignature">
<div dir="auto" style="direction:ltr; margin:0; padding:0; font-family:sans-serif; font-size:11pt; color:black">
Thanks,<br>
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0; padding:0; font-family:sans-serif; font-size:11pt; color:black">
Abel</div>
</span><br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Ian Romanick <idr@freedesktop.org><br>
<b>Sent:</b> Monday, July 8, 2019 2:27:16 PM<br>
<b>To:</b> Abel Briggs; piglit@lists.freedesktop.org<br>
<b>Subject:</b> Re: [Piglit] shader_runner: ignoring uniforms in [test] header when location cannot be found instead of returning PIGLIT_FAIL</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:11pt;">
<div class="PlainText">On 7/8/19 11:57 AM, Abel Briggs wrote:<br>
> Hi,<br>
> <br>
> Recently, I've been working on scripts for a GLSL fuzz testing framework<br>
> that use piglit's shader_runner to render shaders. As part of the test<br>
> generation process, shaders can be generated that declare uniforms<br>
> without using them (which is valid GLSL according to glslangvalidator).<br>
> One of my scripts turns the shader and uniform data from the framework's<br>
> test format into a shader_test file and runs it via shader_runner_gles3.<br>
> <br>
> However, it seems that some of these unused uniforms are optimized away<br>
> when the shader is compiled, and when shader_runner tries to use the<br>
> uniform data in the [test] header, it can't find the location of the<br>
> given uniform and throws an error.<br>
<br>
Yes.  We did that intentionally because it almost always means that<br>
there is an error in the test case.  Over the years, this has helped me<br>
catch errors in several tests that I have developed.<br>
<br>
> Relevant code (there are similar pieces of code in the file for vertex<br>
> and subuniforms):<br>
> <br>
> piglit/tests/shaders/shader_runner.c, line 2289:<br>
>> loc = glGetUniformLocation(prog, name);<br>
>> if (loc < 0) {<br>
>>  printf("cannot get location of uniform \"%s\"\n",<br>
>>         name);<br>
>>  piglit_report_result(PIGLIT_FAIL);<br>
>> }<br>
> <br>
> I'd like to discuss whether it'd be possible to instead just ignore a<br>
> piece of uniform data if the corresponding uniform can't be found in the<br>
> compiled shader (I'd be willing to submit a patch for this).<br>
<br>
Rather than always ignoring the error, I'd prefer a mechanism where<br>
specific tests can request that the error be ignored.  I'm not sure what<br>
that would look like.  Maybe a directive in the [test] section that<br>
disables this specific error?  Maybe a new uniform setter directive that<br>
silently fails if the location for that uniform cannot be found?<br>
Something else?<br>
<br>
> Something like:<br>
> <br>
>> loc = glGetUniformLocation(prog, name);<br>
>> if (loc < 0) {<br>
>>  printf("cannot get location of uniform \"%s\"\n",<br>
>>         name);<br>
>>  return;<br>
>> }<br>
> <br>
> From my limited grepping of the code, there doesn't seem to be anything<br>
> that would fail horribly if this were to be changed (as the setting of a<br>
> uniform only occurs at the end of set_uniform, after various checks like<br>
> this), but please correct me if I'm wrong about any of this.<br>
> <br>
> _______________________________________________<br>
> Piglit mailing list<br>
> Piglit@lists.freedesktop.org<br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/piglit">https://lists.freedesktop.org/mailman/listinfo/piglit</a><br>
> <br>
<br>
</div>
</span></font>
</body>
</html>