OSDN Git Service

Texture2DArray binding function
authorAlexis Hetu <sugoi@google.com>
Mon, 11 May 2015 20:32:19 +0000 (16:32 -0400)
committerAlexis Hétu <sugoi@google.com>
Wed, 13 May 2015 00:24:21 +0000 (00:24 +0000)
Texture2DArray textures can now be bound properly.

Change-Id: I3516b67c266feaede3e63c30615bd9f2891c0f1b
Reviewed-on: https://swiftshader-review.googlesource.com/3083
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
src/OpenGL/libGLESv2/Context.cpp
src/OpenGL/libGLESv2/Context.h
src/OpenGL/libGLESv2/libGLESv2.cpp

index c6388e9..a66da83 100644 (file)
@@ -1223,6 +1223,13 @@ void Context::bindTexture3D(GLuint texture)
        mState.samplerTexture[TEXTURE_3D][mState.activeSampler] = getTexture(texture);\r
 }\r
 \r
+void Context::bindTexture2DArray(GLuint texture)\r
+{\r
+       mResourceManager->checkTextureAllocation(texture, TEXTURE_2D_ARRAY);\r
+\r
+       mState.samplerTexture[TEXTURE_2D_ARRAY][mState.activeSampler] = getTexture(texture);\r
+}\r
+\r
 void Context::bindReadFramebuffer(GLuint framebuffer)\r
 {\r
     if(!getFramebuffer(framebuffer))\r
index d78a53d..f7795e3 100644 (file)
@@ -516,6 +516,7 @@ public:
     void bindTextureCubeMap(GLuint texture);\r
     void bindTextureExternal(GLuint texture);\r
        void bindTexture3D(GLuint texture);\r
+       void bindTexture2DArray(GLuint texture);\r
     void bindReadFramebuffer(GLuint framebuffer);\r
     void bindDrawFramebuffer(GLuint framebuffer);\r
     void bindRenderbuffer(GLuint renderbuffer);\r
index c9ffa4c..71a6dc3 100644 (file)
@@ -546,27 +546,23 @@ void BindTexture(GLenum target, GLuint texture)
                {\r
                case GL_TEXTURE_2D:\r
                        context->bindTexture2D(texture);\r
-                       return;\r
+                       break;\r
                case GL_TEXTURE_CUBE_MAP:\r
                        context->bindTextureCubeMap(texture);\r
-                       return;\r
+                       break;\r
                case GL_TEXTURE_EXTERNAL_OES:\r
                        context->bindTextureExternal(texture);\r
-                       return;\r
+                       break;\r
                case GL_TEXTURE_2D_ARRAY:\r
                        if(clientVersion < 3)\r
                        {\r
                                return error(GL_INVALID_ENUM);\r
                        }\r
-                       else\r
-                       {\r
-                               UNIMPLEMENTED();\r
-                               context->bindTexture3D(texture);\r
-                               break;\r
-                       }\r
+                       context->bindTexture2DArray(texture);\r
+                       break;\r
                case GL_TEXTURE_3D_OES:\r
                        context->bindTexture3D(texture);\r
-                       return;\r
+                       break;\r
                default:\r
                        return error(GL_INVALID_ENUM);\r
                }\r