From b66dd38a37807c28203aa5c6c2707c1dc6dccedf Mon Sep 17 00:00:00 2001 From: Laura Ekstrand Date: Wed, 31 Dec 2014 16:31:50 -0800 Subject: [PATCH] main: Added _mesa_cube_level_complete to check for the completeness of an arbitrary cube map level. Reviewed-by: Chad Versace --- src/mesa/main/texobj.c | 23 ++++++++++++++--------- src/mesa/main/texobj.h | 4 ++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index d6e44f24c8c..6e5eb7398f1 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -810,25 +810,21 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, } -/** - * Check if the given cube map texture is "cube complete" as defined in - * the OpenGL specification. - */ GLboolean -_mesa_cube_complete(const struct gl_texture_object *texObj) +_mesa_cube_level_complete(const struct gl_texture_object *texObj, + const GLint level) { - const GLint baseLevel = texObj->BaseLevel; const struct gl_texture_image *img0, *img; GLuint face; if (texObj->Target != GL_TEXTURE_CUBE_MAP) return GL_FALSE; - if ((baseLevel < 0) || (baseLevel >= MAX_TEXTURE_LEVELS)) + if ((level < 0) || (level >= MAX_TEXTURE_LEVELS)) return GL_FALSE; /* check first face */ - img0 = texObj->Image[0][baseLevel]; + img0 = texObj->Image[0][level]; if (!img0 || img0->Width < 1 || img0->Width != img0->Height) @@ -836,7 +832,7 @@ _mesa_cube_complete(const struct gl_texture_object *texObj) /* check remaining faces vs. first face */ for (face = 1; face < 6; face++) { - img = texObj->Image[face][baseLevel]; + img = texObj->Image[face][level]; if (!img || img->Width != img0->Width || img->Height != img0->Height || @@ -847,6 +843,15 @@ _mesa_cube_complete(const struct gl_texture_object *texObj) return GL_TRUE; } +/** + * Check if the given cube map texture is "cube complete" as defined in + * the OpenGL specification. + */ +GLboolean +_mesa_cube_complete(const struct gl_texture_object *texObj) +{ + return _mesa_cube_level_complete(texObj, texObj->BaseLevel); +} /** * Mark a texture object dirty. It forces the object to be incomplete diff --git a/src/mesa/main/texobj.h b/src/mesa/main/texobj.h index 0a49fe2a4e2..ec5ccb27601 100644 --- a/src/mesa/main/texobj.h +++ b/src/mesa/main/texobj.h @@ -177,6 +177,10 @@ extern void _mesa_test_texobj_completeness( const struct gl_context *ctx, struct gl_texture_object *obj ); +extern GLboolean +_mesa_cube_level_complete(const struct gl_texture_object *texObj, + const GLint level); + extern GLboolean _mesa_cube_complete(const struct gl_texture_object *texObj); -- 2.30.2