mesa: Refactor error checking for GL_TEXTURE_BASE_LEVEL vs texture targets
Add a big spec quotation justifying the error generated, which has changed over the GL versions. v2: Compact the spec quote based on a Khronos bug and discussion with Jason. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
parent
d2c4f714d1
commit
e0acd62536
|
@ -376,8 +376,26 @@ set_tex_parameteri(struct gl_context *ctx,
|
|||
if (texObj->BaseLevel == params[0])
|
||||
return GL_FALSE;
|
||||
|
||||
/* Section 8.10 (Texture Parameters) of the OpenGL 4.5 Core Profile spec
|
||||
* says:
|
||||
*
|
||||
* An INVALID_OPERATION error is generated if the effective target is
|
||||
* TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY, or
|
||||
* TEXTURE_RECTANGLE, and pname TEXTURE_BASE_LEVEL is set to a value
|
||||
* other than zero.
|
||||
*
|
||||
* Note that section 3.8.8 (Texture Parameters) of the OpenGL 3.3 Core
|
||||
* Profile spec said:
|
||||
*
|
||||
* The error INVALID_VALUE is generated if TEXTURE_BASE_LEVEL is set
|
||||
* to any value other than zero.
|
||||
*
|
||||
* We take the 4.5 language as a correction to 3.3, and we implement
|
||||
* that on all GL versions.
|
||||
*/
|
||||
if ((texObj->Target == GL_TEXTURE_2D_MULTISAMPLE ||
|
||||
texObj->Target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY) && params[0] != 0)
|
||||
texObj->Target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY ||
|
||||
texObj->Target == GL_TEXTURE_RECTANGLE) && params[0] != 0)
|
||||
goto invalid_operation;
|
||||
|
||||
if (params[0] < 0) {
|
||||
|
@ -385,12 +403,6 @@ set_tex_parameteri(struct gl_context *ctx,
|
|||
"glTex%sParameter(param=%d)", suffix, params[0]);
|
||||
return GL_FALSE;
|
||||
}
|
||||
if (texObj->Target == GL_TEXTURE_RECTANGLE_ARB && params[0] != 0) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glTex%sParameter(target=%s, param=%d)", suffix,
|
||||
_mesa_enum_to_string(texObj->Target), params[0]);
|
||||
return GL_FALSE;
|
||||
}
|
||||
incomplete(ctx, texObj);
|
||||
|
||||
/** See note about ARB_texture_storage below */
|
||||
|
|
Loading…
Reference in New Issue