From: Pierre-Eric Pelloux-Prayer Date: Tue, 2 Jul 2019 09:33:36 +0000 (+0200) Subject: mesa: move lookup_texture_ext_dsa up in teximage.c X-Git-Tag: upstream/19.3.0~3980 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f8ad95c45f75f985b4edd3925b759eaf70a67a27;p=platform%2Fupstream%2Fmesa.git mesa: move lookup_texture_ext_dsa up in teximage.c Reviewed-by: Marek Olšák --- diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 0af4ec8..3a6fa81 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -2873,6 +2873,66 @@ strip_texture_border(GLenum target, } } +static struct gl_texture_object * +lookup_texture_ext_dsa(struct gl_context *ctx, GLenum target, GLuint texture, + const char *caller) +{ + GLenum boundTarget; + switch (target) { + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + boundTarget = GL_TEXTURE_CUBE_MAP; + break; + default: + boundTarget = target; + break; + } + + int targetIndex = _mesa_tex_target_to_index(ctx, boundTarget); + if (targetIndex < 0) { + _mesa_error(ctx, GL_INVALID_ENUM, "%s(target = %s)", caller, + _mesa_enum_to_string(target)); + return NULL; + } + assert(targetIndex < NUM_TEXTURE_TARGETS); + + struct gl_texture_object *texObj; + if (texture == 0) { + /* Use a default texture object */ + texObj = ctx->Shared->DefaultTex[targetIndex]; + assert(texObj); + } else { + texObj = _mesa_lookup_texture(ctx, texture); + if (!texObj && ctx->API == API_OPENGL_CORE) { + _mesa_error(ctx, GL_INVALID_OPERATION, "%s(non-gen name)", caller); + return NULL; + } + + if (!texObj) { + texObj = ctx->Driver.NewTextureObject(ctx, texture, boundTarget); + if (!texObj) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "%s", caller); + return NULL; + } + + /* insert into hash table */ + _mesa_HashInsert(ctx->Shared->TexObjects, texObj->Name, texObj); + } + + if (texObj->Target != boundTarget) { + _mesa_error(ctx, GL_INVALID_OPERATION, "%s(%s != %s)", + caller, _mesa_enum_to_string(texObj->Target), + _mesa_enum_to_string(target)); + return NULL; + } + } + + return texObj; +} /** * Common code to implement all the glTexImage1D/2D/3D functions, @@ -3274,69 +3334,6 @@ _mesa_EGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image) _mesa_unlock_texture(ctx, texObj); } - -static struct gl_texture_object * -lookup_texture_ext_dsa(struct gl_context *ctx, GLenum target, GLuint texture, - const char *caller) -{ - GLenum boundTarget; - switch (target) { - case GL_TEXTURE_CUBE_MAP_POSITIVE_X: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: - boundTarget = GL_TEXTURE_CUBE_MAP; - break; - default: - boundTarget = target; - break; - } - - int targetIndex = _mesa_tex_target_to_index(ctx, boundTarget); - if (targetIndex < 0) { - _mesa_error(ctx, GL_INVALID_ENUM, "%s(target = %s)", caller, - _mesa_enum_to_string(target)); - return NULL; - } - assert(targetIndex < NUM_TEXTURE_TARGETS); - - struct gl_texture_object *texObj; - if (texture == 0) { - /* Use a default texture object */ - texObj = ctx->Shared->DefaultTex[targetIndex]; - assert(texObj); - } else { - texObj = _mesa_lookup_texture(ctx, texture); - if (!texObj && ctx->API == API_OPENGL_CORE) { - _mesa_error(ctx, GL_INVALID_OPERATION, "%s(non-gen name)", caller); - return NULL; - } - - if (!texObj) { - texObj = ctx->Driver.NewTextureObject(ctx, texture, boundTarget); - if (!texObj) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "%s", caller); - return NULL; - } - - /* insert into hash table */ - _mesa_HashInsert(ctx->Shared->TexObjects, texObj->Name, texObj); - } - - if (texObj->Target != boundTarget) { - _mesa_error(ctx, GL_INVALID_OPERATION, "%s(%s != %s)", - caller, _mesa_enum_to_string(texObj->Target), - _mesa_enum_to_string(target)); - return NULL; - } - } - - return texObj; -} - - /** * Helper that implements the glTexSubImage1/2/3D() * and glTextureSubImage1/2/3D() functions.