diff options
author | Brian Paul <[email protected]> | 2011-08-18 15:59:33 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2011-08-19 13:31:11 -0600 |
commit | 3e9dc51f82276e57ecfb4e2725d88d83dbedcd85 (patch) | |
tree | 4b89b240584c19f733cc34d1801d5f8340a8f07d /src/mesa/main/fbobject.c | |
parent | 0f8c43c34f74b2ebc40ade2944f3b56b7dc606b0 (diff) |
mesa: handle array textures in GenerateMipmap(), FramebufferTexture1/2D()
This was an unfinished to-do item before.
With this patch and the two preceeding patches, piglit's
fbo-generatemipmap-array test runs and passes instead of generating
a GL error and dying on an assertion.
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/mesa/main/fbobject.c')
-rw-r--r-- | src/mesa/main/fbobject.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index e25ec8cc2b7..0b48fc7eab0 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -1991,6 +1991,9 @@ _mesa_FramebufferTexture1DEXT(GLenum target, GLenum attachment, case GL_TEXTURE_1D: error = GL_FALSE; break; + case GL_TEXTURE_1D_ARRAY: + error = !ctx->Extensions.EXT_texture_array; + break; default: error = GL_TRUE; } @@ -2032,6 +2035,9 @@ _mesa_FramebufferTexture2DEXT(GLenum target, GLenum attachment, case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: error = !ctx->Extensions.ARB_texture_cube_map; break; + case GL_TEXTURE_2D_ARRAY: + error = !ctx->Extensions.EXT_texture_array; + break; default: error = GL_FALSE; } @@ -2380,6 +2386,8 @@ void GLAPIENTRY _mesa_GenerateMipmapEXT(GLenum target) { struct gl_texture_object *texObj; + GLboolean error; + GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); @@ -2389,12 +2397,22 @@ _mesa_GenerateMipmapEXT(GLenum target) case GL_TEXTURE_1D: case GL_TEXTURE_2D: case GL_TEXTURE_3D: + error = GL_FALSE; + break; case GL_TEXTURE_CUBE_MAP: - /* OK, legal value */ + error = !ctx->Extensions.ARB_texture_cube_map; + break; + case GL_TEXTURE_1D_ARRAY: + case GL_TEXTURE_2D_ARRAY: + error = !ctx->Extensions.EXT_texture_array; break; default: - /* XXX need to implement GL_TEXTURE_1D_ARRAY and GL_TEXTURE_2D_ARRAY */ - _mesa_error(ctx, GL_INVALID_ENUM, "glGenerateMipmapEXT(target)"); + error = GL_TRUE; + } + + if (error) { + _mesa_error(ctx, GL_INVALID_ENUM, "glGenerateMipmapEXT(target=%s)", + _mesa_lookup_enum_by_nr(target)); return; } |