<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Ahh, yes, I see that now in on page 35 of the OpenGL spec: “The value -1 will be returned if name does not correspond to an active uniform variable name in program
 or if name starts with the reserved prefix "gl_".”  Thank you for the clarification, Jeff.<br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">I know that we have conformance tests that ensure an error is returned if you call getAttribLocation with a name that begins with ‘gl_’.  If we don’t already
 have the same thing for getUniformLocation, we should add those.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Jeff Gilbert [mailto:jgilbert@mozilla.com]
<br>
<b>Sent:</b> Wednesday, March 18, 2015 7:00 PM<br>
<b>To:</b> Rafael Cintron<br>
<b>Cc:</b> Kenneth Russell; public_webgl@khronos.org<br>
<b>Subject:</b> Re: [Public WebGL] Conformance test change around active uniforms<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">getUniformLocation returns null for any name starting with a reserved prefix. The uniforms are 'active', but you can't get or set them via normal means.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Mar 18, 2015 at 6:53 PM, Rafael Cintron <<a href="mailto:Rafael.Cintron@microsoft.com" target="_blank">Rafael.Cintron@microsoft.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">In the shader, gl_DepthRange is meant to reflect what you set via the depthRange function.  Are these
 builtin uniforms able to be returned via getUniformLocation and set via uniformXXX?  If so, what ends up winning, depthRange or uniformXXX? 
</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">
<a href="mailto:owners-public_webgl@khronos.org" target="_blank">owners-public_webgl@khronos.org</a> [mailto:<a href="mailto:owners-public_webgl@khronos.org" target="_blank">owners-public_webgl@khronos.org</a>]
<b>On Behalf Of </b>Jeff Gilbert<br>
<b>Sent:</b> Wednesday, March 18, 2015 6:28 PM<br>
<b>To:</b> Kenneth Russell<br>
<b>Cc:</b> <a href="mailto:public_webgl@khronos.org" target="_blank">public_webgl@khronos.org</a><br>
<b>Subject:</b> Re: [Public WebGL] Conformance test change around active uniforms</span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt">I advise that we not fake the inclusion of the third part of gl_DepthRange, since this impacts active uniform packing, even if the driver is apparently not packing them. (as indicated
 by not exposing the third part in the list of active uniforms)<o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Active uniforms is not so much 'what am I using', but rather 'what is the driver using'.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">On Wed, Mar 18, 2015 at 6:01 PM, Kenneth Russell <<a href="mailto:kbr@google.com" target="_blank">kbr@google.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt"><br>
There's been a longstanding issue with the WebGL conformance tests<br>
that were ported from the OpenGL ES 2.0 suite. To ensure consistency<br>
between implementations, the WebGL harness is stricter than the OpenGL<br>
ES one in requiring certain uniforms to be considered active or<br>
inactive in the various test cases.<br>
<br>
Jeff Gilbert from Mozilla rediscovered this discrepancy in<br>
<a href="https://github.com/KhronosGroup/WebGL/pull/888" target="_blank">https://github.com/KhronosGroup/WebGL/pull/888</a> and found the root<br>
cause: some implementations were exposing the built-in uniforms<br>
gl_DepthRange.near, gl_DepthRange.far and gl_DepthRange.diff as active<br>
uniforms, and some weren't.<br>
<br>
Now that the difference in behavior is well understood, these tests<br>
have been changed in the top of tree conformance suite to require that<br>
these uniforms be reported as active when they are referenced in the<br>
shaders. Please see <a href="https://github.com/KhronosGroup/WebGL/pull/902" target="_blank">
https://github.com/KhronosGroup/WebGL/pull/902</a> .<br>
<br>
The reason that only some, and not all, of these three built-in<br>
uniforms were required to be present is pragmatic: some drivers seem<br>
to optimize one of them away and compute it from the other two. If<br>
necessary, implementations could be changed to report all of them.<br>
<br>
If you have any comments on this change please post them to the list.<br>
The archived WebGL conformance suites have been changed to allow both<br>
the old and new behavior.<br>
<br>
Thanks,<br>
<br>
-Ken<br>
<br>
-----------------------------------------------------------<br>
You are currently subscribed to <a href="mailto:public_webgl@khronos.org" target="_blank">
public_webgl@khronos.org</a>.<br>
To unsubscribe, send an email to <a href="mailto:majordomo@khronos.org" target="_blank">
majordomo@khronos.org</a> with<br>
the following command in the body of your email:<br>
unsubscribe public_webgl<br>
-----------------------------------------------------------<o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>