Module: Mesa Branch: master Commit: e0acd625364528f80b35e80dbb4678a202566f6c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e0acd625364528f80b35e80dbb4678a202566f6c
Author: Ian Romanick <[email protected]> Date: Tue Jan 12 17:09:50 2016 -0800 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 <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> --- src/mesa/main/texparam.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 1059a4cb5e..d8bbabf8f2 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -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 */ _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
