Add a helper method to return the selected texture for the TexParameter* and GetTexParameter* family of functions.
TRAC #23454
Signed-off-by: Nicolas Capens
Signed-off-by: Shannon Woods
Authored-by: Jamie Madill
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index d498b92..0b0f832 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -2087,6 +2087,25 @@
}
+gl::Texture *getTargetTexture(gl::Context *context, GLenum target)
+{
+ if (context->getClientVersion() < 3)
+ {
+ if (target == GL_TEXTURE_3D || target == GL_TEXTURE_2D_ARRAY)
+ {
+ return NULL;
+ }
+ }
+
+ switch (target)
+ {
+ case GL_TEXTURE_2D: return context->getTexture2D();
+ case GL_TEXTURE_CUBE_MAP: return context->getTextureCubeMap();
+ case GL_TEXTURE_3D: return context->getTexture3D();
+ case GL_TEXTURE_2D_ARRAY: return context->getTexture2DArray();
+ default: return NULL;
+ }
+}
extern "C"
{
@@ -5666,31 +5685,10 @@
if (context)
{
- gl::Texture *texture;
+ gl::Texture *texture = getTargetTexture(context, target);
- switch (target)
+ if (!texture)
{
- case GL_TEXTURE_2D:
- texture = context->getTexture2D();
- break;
- case GL_TEXTURE_CUBE_MAP:
- texture = context->getTextureCubeMap();
- break;
- case GL_TEXTURE_3D:
- if (context->getClientVersion() < 3)
- {
- return gl::error(GL_INVALID_ENUM);
- }
- texture = context->getTexture3D();
- break;
- case GL_TEXTURE_2D_ARRAY:
- if (context->getClientVersion() < 3)
- {
- return gl::error(GL_INVALID_ENUM);
- }
- texture = context->getTexture2DArray();
- break;
- default:
return gl::error(GL_INVALID_ENUM);
}
@@ -5757,31 +5755,10 @@
if (context)
{
- gl::Texture *texture;
+ gl::Texture *texture = getTargetTexture(context, target);
- switch (target)
+ if (!texture)
{
- case GL_TEXTURE_2D:
- texture = context->getTexture2D();
- break;
- case GL_TEXTURE_CUBE_MAP:
- texture = context->getTextureCubeMap();
- break;
- case GL_TEXTURE_3D:
- if (context->getClientVersion() < 3)
- {
- return gl::error(GL_INVALID_ENUM);
- }
- texture = context->getTexture3D();
- break;
- case GL_TEXTURE_2D_ARRAY:
- if (context->getClientVersion() < 3)
- {
- return gl::error(GL_INVALID_ENUM);
- }
- texture = context->getTexture2DArray();
- break;
- default:
return gl::error(GL_INVALID_ENUM);
}
@@ -7166,30 +7143,10 @@
return;
}
- gl::Texture *texture;
+ gl::Texture *texture = getTargetTexture(context, target);
- switch (target)
+ if (!texture)
{
- case GL_TEXTURE_2D:
- texture = context->getTexture2D();
- break;
- case GL_TEXTURE_CUBE_MAP:
- texture = context->getTextureCubeMap();
- break;
- case GL_TEXTURE_3D:
- if (context->getClientVersion() < 3)
- {
- return gl::error(GL_INVALID_ENUM);
- }
- texture = context->getTexture3D();
- case GL_TEXTURE_2D_ARRAY:
- if (context->getClientVersion() < 3)
- {
- return gl::error(GL_INVALID_ENUM);
- }
- texture = context->getTexture2DArray();
- break;
- default:
return gl::error(GL_INVALID_ENUM);
}
@@ -7246,31 +7203,10 @@
return;
}
- gl::Texture *texture;
+ gl::Texture *texture = getTargetTexture(context, target);
- switch (target)
+ if (!texture)
{
- case GL_TEXTURE_2D:
- texture = context->getTexture2D();
- break;
- case GL_TEXTURE_CUBE_MAP:
- texture = context->getTextureCubeMap();
- break;
- case GL_TEXTURE_3D:
- if (context->getClientVersion() < 3)
- {
- return gl::error(GL_INVALID_ENUM);
- }
- texture = context->getTexture3D();
- break;
- case GL_TEXTURE_2D_ARRAY:
- if (context->getClientVersion() < 3)
- {
- return gl::error(GL_INVALID_ENUM);
- }
- texture = context->getTexture2DArray();
- break;
- default:
return gl::error(GL_INVALID_ENUM);
}