<div dir="ltr"><div>I discussed this with Ian Romanick, and he said to use the new OpenGL 4.3+ error behavior because it conforms and/or is generally consistent with the error behavior of OpenGL ES 3.1.  This way, the driver will be prepared for upcoming OpenGL ES 3.1 conformance tests.<br><br></div>Laura<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Dec 16, 2014 at 7:45 AM, Brian Paul <span dir="ltr"><<a href="mailto:brianp@vmware.com" target="_blank">brianp@vmware.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 12/15/2014 06:22 PM, Laura Ekstrand wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Beginning in the OpenGL 4.3 core specification, some error handling has<br>
changed. As an example, changing sampler states with a multisample target<br>
throws INVALID_ENUM rather than INVALID_OPERATION.<br>
</blockquote>
<br></span>
So, does this effect any piglit tests?  It seems a little funny to change to GL 4.3 behavior before we even support GL 4.3.<div><div class="h5"><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
---<br>
  src/mesa/main/texparam.c | 70 ++++++++++++++++++++++++++++++<u></u>------------------<br>
  1 file changed, 44 insertions(+), 26 deletions(-)<br>
<br>
diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c<br>
index e40fb24..70685f2 100644<br>
--- a/src/mesa/main/texparam.c<br>
+++ b/src/mesa/main/texparam.c<br>
@@ -234,12 +234,12 @@ target_allows_setting_sampler_<u></u>parameters(GLenum target)<br>
  static GLboolean<br>
  set_tex_parameteri(struct gl_context *ctx,<br>
                     struct gl_texture_object *texObj,<br>
-                   GLenum pname, const GLint *params)<br>
+                   GLenum pname, const GLint *params, bool dsa)<br>
  {<br>
     switch (pname) {<br>
     case GL_TEXTURE_MIN_FILTER:<br>
        if (!target_allows_setting_<u></u>sampler_parameters(texObj-><u></u>Target))<br>
-         goto invalid_operation;<br>
+         goto invalid_enum;<br>
<br>
        if (texObj->Sampler.MinFilter == params[0])<br>
           return GL_FALSE;<br>
@@ -267,7 +267,7 @@ set_tex_parameteri(struct gl_context *ctx,<br>
<br>
     case GL_TEXTURE_MAG_FILTER:<br>
        if (!target_allows_setting_<u></u>sampler_parameters(texObj-><u></u>Target))<br>
-         goto invalid_operation;<br>
+         goto invalid_enum;<br>
<br>
        if (texObj->Sampler.MagFilter == params[0])<br>
           return GL_FALSE;<br>
@@ -284,7 +284,7 @@ set_tex_parameteri(struct gl_context *ctx,<br>
<br>
     case GL_TEXTURE_WRAP_S:<br>
        if (!target_allows_setting_<u></u>sampler_parameters(texObj-><u></u>Target))<br>
-         goto invalid_operation;<br>
+         goto invalid_enum;<br>
<br>
        if (texObj->Sampler.WrapS == params[0])<br>
           return GL_FALSE;<br>
@@ -297,7 +297,7 @@ set_tex_parameteri(struct gl_context *ctx,<br>
<br>
     case GL_TEXTURE_WRAP_T:<br>
        if (!target_allows_setting_<u></u>sampler_parameters(texObj-><u></u>Target))<br>
-         goto invalid_operation;<br>
+         goto invalid_enum;<br>
<br>
        if (texObj->Sampler.WrapT == params[0])<br>
           return GL_FALSE;<br>
@@ -310,7 +310,7 @@ set_tex_parameteri(struct gl_context *ctx,<br>
<br>
     case GL_TEXTURE_WRAP_R:<br>
        if (!target_allows_setting_<u></u>sampler_parameters(texObj-><u></u>Target))<br>
-         goto invalid_operation;<br>
+         goto invalid_enum;<br>
<br>
        if (texObj->Sampler.WrapR == params[0])<br>
           return GL_FALSE;<br>
@@ -332,10 +332,17 @@ set_tex_parameteri(struct gl_context *ctx,<br>
             texObj->Target == GL_TEXTURE_2D_MULTISAMPLE_<u></u>ARRAY) && params[0] != 0)<br>
           goto invalid_operation;<br>
<br>
-      if (params[0] < 0 ||<br>
-          (texObj->Target == GL_TEXTURE_RECTANGLE_ARB && params[0] != 0)) {<br>
+      if (params[0] < 0) {<br>
           _mesa_error(ctx, GL_INVALID_VALUE,<br>
-                     "glTexParameter(param=%d)", params[0]);<br>
+                     "glTex%sParameter(param=%d)", dsa ? "ture" : "",<br>
+                     params[0]);<br>
+         return GL_FALSE;<br>
+      }<br>
+      if (texObj->Target == GL_TEXTURE_RECTANGLE_ARB && params[0] != 0) {<br>
+         _mesa_error(ctx, GL_INVALID_OPERATION,<br>
+                     "glTex%sParameter(target=%s, param=%d)",<br>
+                     dsa ? "true" : "",<br>
</blockquote>
<br></div></div>
true -> ture  Or better yet, do what I suggested for patch 11.<br>
<br>
Same comments for patch 16.<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+                     _mesa_lookup_enum_by_nr(<u></u>texObj->Target), params[0]);<br>
           return GL_FALSE;<br>
        }<br>
        incomplete(ctx, texObj);<br>
@@ -355,7 +362,8 @@ set_tex_parameteri(struct gl_context *ctx,<br>
        if (params[0] < 0 ||<br>
            (texObj->Target == GL_TEXTURE_RECTANGLE_ARB && params[0] > 0)) {<br>
           _mesa_error(ctx, GL_INVALID_VALUE,<br>
-                     "glTexParameter(param=%d)", params[0]);<br>
+                     "glTex%sParameter(param=%d)", dsa ? "ture" : "",<br>
+                     params[0]);<br>
           return GL_FALSE;<br>
        }<br>
        incomplete(ctx, texObj);<br>
@@ -392,7 +400,7 @@ set_tex_parameteri(struct gl_context *ctx,<br>
            || _mesa_is_gles3(ctx)) {<br>
<br>
           if (!target_allows_setting_<u></u>sampler_parameters(texObj-><u></u>Target))<br>
-            goto invalid_operation;<br>
+            goto invalid_enum;<br>
<br>
           if (texObj->Sampler.CompareMode == params[0])<br>
              return GL_FALSE;<br>
@@ -411,7 +419,7 @@ set_tex_parameteri(struct gl_context *ctx,<br>
            || _mesa_is_gles3(ctx)) {<br>
<br>
           if (!target_allows_setting_<u></u>sampler_parameters(texObj-><u></u>Target))<br>
-            goto invalid_operation;<br>
+            goto invalid_enum;<br>
<br>
           if (texObj->Sampler.CompareFunc == params[0])<br>
              return GL_FALSE;<br>
@@ -486,7 +494,8 @@ set_tex_parameteri(struct gl_context *ctx,<br>
           const GLint swz = comp_to_swizzle(params[0]);<br>
           if (swz < 0) {<br>
              _mesa_error(ctx, GL_INVALID_ENUM,<br>
-                        "glTexParameter(swizzle 0x%x)", params[0]);<br>
+                        "glTex%sParameter(swizzle 0x%x)", dsa ? "ture" : "",<br>
+                        params[0]);<br>
              return GL_FALSE;<br>
           }<br>
           ASSERT(comp < 4);<br>
@@ -511,7 +520,8 @@ set_tex_parameteri(struct gl_context *ctx,<br>
              }<br>
              else {<br>
                 _mesa_error(ctx, GL_INVALID_ENUM,<br>
-                           "glTexParameter(swizzle 0x%x)", params[comp]);<br>
+                           "glTex%sParameter(swizzle 0x%x)",<br>
+                           dsa ? "ture" : "", params[comp]);<br>
                 return GL_FALSE;<br>
              }<br>
           }<br>
@@ -525,7 +535,7 @@ set_tex_parameteri(struct gl_context *ctx,<br>
           GLenum decode = params[0];<br>
<br>
           if (!target_allows_setting_<u></u>sampler_parameters(texObj-><u></u>Target))<br>
-            goto invalid_operation;<br>
+            goto invalid_enum;<br>
<br>
         if (decode == GL_DECODE_EXT || decode == GL_SKIP_DECODE_EXT) {<br>
            if (texObj->Sampler.sRGBDecode != decode) {<br>
@@ -543,7 +553,7 @@ set_tex_parameteri(struct gl_context *ctx,<br>
           GLenum param = params[0];<br>
<br>
           if (!target_allows_setting_<u></u>sampler_parameters(texObj-><u></u>Target))<br>
-            goto invalid_operation;<br>
+            goto invalid_enum;<br>
<br>
           if (param != GL_TRUE && param != GL_FALSE) {<br>
              goto invalid_param;<br>
@@ -561,17 +571,25 @@ set_tex_parameteri(struct gl_context *ctx,<br>
     }<br>
<br>
  invalid_pname:<br>
-   _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=%s)",<br>
-               _mesa_lookup_enum_by_nr(pname)<u></u>);<br>
+   _mesa_error(ctx, GL_INVALID_ENUM, "glTex%sParameter(pname=%s)",<br>
+               dsa ? "ture" : "", _mesa_lookup_enum_by_nr(pname)<u></u>);<br>
     return GL_FALSE;<br>
<br>
  invalid_param:<br>
-   _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(param=%s)",<br>
+   _mesa_error(ctx, GL_INVALID_ENUM, "glTex%sParameter(param=%s)",<br>
+               dsa ? "ture" : "",<br>
                 _mesa_lookup_enum_by_nr(<u></u>params[0]));<br>
     return GL_FALSE;<br>
<br>
  invalid_operation:<br>
-   _mesa_error(ctx, GL_INVALID_OPERATION, "glTexParameter(pname=%s)",<br>
+   _mesa_error(ctx, GL_INVALID_OPERATION, "glTex%sParameter(pname=%s)",<br>
+               dsa ? "ture" : "",<br>
+               _mesa_lookup_enum_by_nr(pname)<u></u>);<br>
+   return GL_FALSE;<br>
+<br>
+invalid_enum:<br>
+   _mesa_error(ctx, GL_INVALID_ENUM, "glTex%sParameter(pname=%s)",<br>
+               dsa ? "ture" : "",<br>
                 _mesa_lookup_enum_by_nr(pname)<u></u>);<br>
     return GL_FALSE;<br>
  }<br>
@@ -736,7 +754,7 @@ _mesa_TexParameterf(GLenum target, GLenum pname, GLfloat param)<br>
                  ((param < INT_MIN) ? INT_MIN : (GLint) (param - 0.5));<br>
<br>
           p[1] = p[2] = p[3] = 0;<br>
-         need_update = set_tex_parameteri(ctx, texObj, pname, p);<br>
+         need_update = set_tex_parameteri(ctx, texObj, pname, p, false);<br>
        }<br>
        break;<br>
     default:<br>
@@ -786,7 +804,7 @@ _mesa_TexParameterfv(GLenum target, GLenum pname, const GLfloat *params)<br>
           GLint p[4];<br>
           p[0] = (GLint) params[0];<br>
           p[1] = p[2] = p[3] = 0;<br>
-         need_update = set_tex_parameteri(ctx, texObj, pname, p);<br>
+         need_update = set_tex_parameteri(ctx, texObj, pname, p, false);<br>
        }<br>
        break;<br>
     case GL_TEXTURE_CROP_RECT_OES:<br>
@@ -797,7 +815,7 @@ _mesa_TexParameterfv(GLenum target, GLenum pname, const GLfloat *params)<br>
           iparams[1] = (GLint) params[1];<br>
           iparams[2] = (GLint) params[2];<br>
           iparams[3] = (GLint) params[3];<br>
-         need_update = set_tex_parameteri(ctx, texObj, pname, iparams);<br>
+         need_update = set_tex_parameteri(ctx, texObj, pname, iparams, false);<br>
        }<br>
        break;<br>
     case GL_TEXTURE_SWIZZLE_R_EXT:<br>
@@ -813,7 +831,7 @@ _mesa_TexParameterfv(GLenum target, GLenum pname, const GLfloat *params)<br>
              p[2] = (GLint) params[2];<br>
              p[3] = (GLint) params[3];<br>
           }<br>
-         need_update = set_tex_parameteri(ctx, texObj, pname, p);<br>
+         need_update = set_tex_parameteri(ctx, texObj, pname, p, false);<br>
        }<br>
        break;<br>
     default:<br>
@@ -859,7 +877,7 @@ _mesa_TexParameteri(GLenum target, GLenum pname, GLint param)<br>
           GLint iparam[4];<br>
           iparam[0] = param;<br>
           iparam[1] = iparam[2] = iparam[3] = 0;<br>
-         need_update = set_tex_parameteri(ctx, texObj, pname, iparam);<br>
+         need_update = set_tex_parameteri(ctx, texObj, pname, iparam, false);<br>
        }<br>
     }<br>
<br>
@@ -909,7 +927,7 @@ _mesa_TexParameteriv(GLenum target, GLenum pname, const GLint *params)<br>
        break;<br>
     default:<br>
        /* this will generate an error if pname is illegal */<br>
-      need_update = set_tex_parameteri(ctx, texObj, pname, params);<br>
+      need_update = set_tex_parameteri(ctx, texObj, pname, params, false);<br>
     }<br>
<br>
     if (ctx->Driver.TexParameter && need_update) {<br>
<br>
</blockquote>
<br>
</div></div></blockquote></div></div>