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);
             }