OSDN Git Service

Added handling of a few more types of variable
authorAlexis Hetu <sugoi@google.com>
Mon, 4 May 2015 20:51:06 +0000 (16:51 -0400)
committerAlexis Hétu <sugoi@google.com>
Thu, 14 May 2015 00:27:38 +0000 (00:27 +0000)
Added a few missing types:
- Unsigned ints and vectors
- Signed and unsigned int samplers
- 2D Array samplers

Change-Id: I052f7da3b2cb24c5cd2bdd1cf1e3b3a2b0ee0a50
Reviewed-on: https://swiftshader-review.googlesource.com/3042
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
src/OpenGL/compiler/OutputASM.cpp

index 4d080dd..d66ead1 100644 (file)
@@ -2368,8 +2368,9 @@ namespace glsl
 \r
        GLenum OutputASM::glVariableType(const TType &type)\r
        {\r
-               if(type.getBasicType() == EbtFloat)\r
+               switch(type.getBasicType())\r
                {\r
+               case EbtFloat:\r
                        if(type.isScalar())\r
                        {\r
                                return GL_FLOAT;\r
@@ -2416,9 +2417,8 @@ namespace glsl
                                }\r
                        }\r
                        else UNREACHABLE();\r
-               }\r
-               else if(type.getBasicType() == EbtInt)\r
-               {\r
+                       break;\r
+               case EbtInt:\r
                        if(type.isScalar())\r
                        {\r
                                return GL_INT;\r
@@ -2434,9 +2434,25 @@ namespace glsl
                                }\r
                        }\r
                        else UNREACHABLE();\r
-               }\r
-               else if(type.getBasicType() == EbtBool)\r
-               {\r
+                       break;\r
+               case EbtUInt:\r
+                       if(type.isScalar())\r
+                       {\r
+                               return GL_UNSIGNED_INT;\r
+                       }\r
+                       else if(type.isVector())\r
+                       {\r
+                               switch(type.getNominalSize())\r
+                               {\r
+                               case 2: return GL_UNSIGNED_INT_VEC2;\r
+                               case 3: return GL_UNSIGNED_INT_VEC3;\r
+                               case 4: return GL_UNSIGNED_INT_VEC4;\r
+                               default: UNREACHABLE();\r
+                               }\r
+                       }\r
+                       else UNREACHABLE();\r
+                       break;\r
+               case EbtBool:\r
                        if(type.isScalar())\r
                        {\r
                                return GL_BOOL;\r
@@ -2452,24 +2468,29 @@ namespace glsl
                                }\r
                        }\r
                        else UNREACHABLE();\r
-               }\r
-               else if(type.getBasicType() == EbtSampler2D)\r
-               {\r
+                       break;\r
+               case EbtSampler2D:\r
+               case EbtISampler2D:\r
+               case EbtUSampler2D:\r
                        return GL_SAMPLER_2D;\r
-               }\r
-               else if(type.getBasicType() == EbtSamplerCube)\r
-               {\r
+               case EbtSamplerCube:\r
+               case EbtISamplerCube:\r
+               case EbtUSamplerCube:\r
                        return GL_SAMPLER_CUBE;\r
-               }\r
-               else if(type.getBasicType() == EbtSamplerExternalOES)\r
-               {\r
+               case EbtSamplerExternalOES:\r
                        return GL_SAMPLER_EXTERNAL_OES;\r
-               }\r
-               else if(type.getBasicType() == EbtSampler3D)\r
-               {\r
+               case EbtSampler3D:\r
+               case EbtISampler3D:\r
+               case EbtUSampler3D:\r
                        return GL_SAMPLER_3D_OES;\r
+               case EbtSampler2DArray:\r
+               case EbtISampler2DArray:\r
+               case EbtUSampler2DArray:\r
+                       return GL_SAMPLER_2D_ARRAY;\r
+               default:\r
+                       UNREACHABLE();\r
+                       break;\r
                }\r
-               else UNREACHABLE();\r
 \r
                return GL_NONE;\r
        }\r