<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Tue, Nov 5, 2013 at 9:40 AM, Ian Romanick <span dir="ltr"><<a href="mailto:idr@freedesktop.org" target="_blank">idr@freedesktop.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On 11/04/2013 03:34 PM, Courtney Goeltzenleuchter wrote:<br>

><br>
> On Fri, Nov 1, 2013 at 1:42 PM, Ian Romanick <<a href="mailto:idr@freedesktop.org">idr@freedesktop.org</a><br>
</div><div class="im">> <mailto:<a href="mailto:idr@freedesktop.org">idr@freedesktop.org</a>>> wrote:<br>
><br>
>     On 11/01/2013 09:54 AM, Courtney Goeltzenleuchter wrote:<br>
</div><div class="im">>     > @@ -1746,11 +1770,37 @@ _mesa_GetTexParameteriv( GLenum target,<br>
>     GLenum pname, GLint *params )<br>
>     >           break;<br>
>     ><br>
>     >        case GL_TEXTURE_IMMUTABLE_LEVELS:<br>
>     > -         if (!_mesa_is_gles3(ctx))<br>
>     > +         if (!_mesa_is_gles3(ctx)<br>
>     > +             && !_mesa_is_desktop_gl(ctx)<br>
>     > +             && !ctx->Extensions.ARB_texture_view)<br>
><br>
>     This if-statement will never evaluate to true because at least one of<br>
>     _mesa_is_gles3 or _mesa_is_desktop_gl will be false.<br>
><br>
><br>
> The intent - as I understand it - is to only return<br>
> GL_TEXTURE_IMMUTABLE_LEVELS if we are being called using a context that<br>
> can support it. How about:<br>
> if (_mesa_is_gles3(ctx) || ctx->Extensions.ARB_texture_view)<br>
>    *params = obj->ImmutableLevels;<br>
> else<br>
>    goto invalid_pname;<br>
><br>
> Does that protect GL_TEXTURE_IMMUTABLE_LEVELS properly?<br>
<br>
</div>No... it still lets it slip through in OpenGL ES 1.x. :)<br>
<br>
   if (!_mesa_is_gles3(ctx) &&<br>
       !(_mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_texture_view))<br>
      goto invalid_pname;<br></blockquote><div>The !'s make my brain hurt.</div><div><br></div><div>This should be equivalent to:</div><div> if (_mesa_is_gles3(ctx) || (_mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_texture_view)) {</div>
<div>      return param</div><div> } else {</div><div>   goto invalid_pname</div><div>}</div><div><br></div><div>In English, if this is a gles3 context or this is a desktop context that supports ARB_texture_view you can get the value of TEXTURE_IMMUTABLE_LEVELS.</div>
<div>If this is not a gles3 context, it's not sufficient to just support the ARB_texture_view extension, this has to be a desktop context for this glGet to succeed.</div><div><br></div><div>That makes me wonder about the other ARB_texture_view texture parameters. I.e.</div>
<div><div>case GL_TEXTURE_VIEW_MIN_LEVEL:</div><div>         if (!ctx->Extensions.ARB_texture_view)</div><div>            goto invalid_pname;</div><div>         *params = (GLint) obj->MinLevel;</div></div><div><br></div>
<div>Is it sufficient to allow the query any time the extension is supported regardless of the context?</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<br>
I'm also debating whether or not we should expose this compatibility<br>
profiles.  The extension spec doesn't mention anything about legacy<br>
texture formats (luminance, etc.).  I haven't looked at the OpenGL 4.3<br>
Compatibility Profile spec yet.  The only relevant text in the extension<br>
spec is:<br>
<div class="im"><br>
    "The two textures' internal formats must be compatible according<br>
</div>    to Table 3.X.2 (Compatible internal formats for TextureView) if<br>
    the internal format exists in that table and the internal<br>
    formats must be identical if not in that table, or else an<br>
    INVALID_OPERATION error is generated."<br>
<br>
So, you can create a GL_LUMINANCE view of a GL_LUMINANCE texture.  Hmm...<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Courtney Goeltzenleuchter<br><div>LunarG</div><div><img src="http://media.lunarg.com/wp-content/themes/LunarG/images/logo.png" width="96" height="65"><br>
</div></div>
</div></div>