<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>