diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2014-06-17 14:58:14 -0700 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2014-08-19 15:24:18 -0700 |
commit | d82ca4e2b2bd5de93179d29f484bba7e97bcd985 (patch) | |
tree | 12d8df3b9cf97c1a7fe243c33e1a28cff911a8f7 | |
parent | 8b056fc48613b4cd1a32c29cdaffcf363860a62b (diff) |
mesa: Handle uninitialized textures like other textures in get_tex_level_parameter_image
Instead of catching the special case early, handle it by constructing a
fake gl_texture_image that will cause the values required by the OpenGL
4.0 spec to be returned.
Previously, calling
glGenTextures(1, &t);
glBindTexture(GL_TEXTURE_2D, t);
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, 0xDEADBEEF, &value);
would not generate an error.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Suggested-by: Brian Paul <brianp@vmware.com>
Cc: "10.2" <mesa-stable@lists.freedesktop.org>
Cc: Anuj Phogat <anuj.phogat@gmail.com>
(cherry picked from commit ee58c71a65bb5b769a03e4b25bd13c57a6b742d8)
-rw-r--r-- | src/mesa/main/texparam.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 3a0c57f9811..30dd0b9b3bb 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -1051,6 +1051,7 @@ get_tex_level_parameter_image(struct gl_context *ctx, GLenum pname, GLint *params) { const struct gl_texture_image *img = NULL; + struct gl_texture_image dummy_image; mesa_format texFormat; img = _mesa_select_tex_image(ctx, texObj, target, level); @@ -1062,12 +1063,12 @@ get_tex_level_parameter_image(struct gl_context *ctx, * instead of 1. TEXTURE_COMPONENTS is deprecated; always * use TEXTURE_INTERNAL_FORMAT." */ + memset(&dummy_image, 0, sizeof(dummy_image)); + dummy_image.TexFormat = MESA_FORMAT_NONE; + dummy_image.InternalFormat = GL_RGBA; + dummy_image._BaseFormat = GL_NONE; - if (pname == GL_TEXTURE_INTERNAL_FORMAT) - *params = GL_RGBA; - else - *params = 0; - return; + img = &dummy_image; } texFormat = img->TexFormat; |