SPV Capabilities: Image types.
authorJohn Kessenich <cepheus@frii.com>
Mon, 15 Feb 2016 00:37:30 +0000 (17:37 -0700)
committerJohn Kessenich <cepheus@frii.com>
Mon, 15 Feb 2016 00:37:30 +0000 (17:37 -0700)
SampledBuffer
ImageBuffer
Sampled1D
Image1D
SampledCubeArray
ImageCubeArray
SampledRect
ImageRect
InputAttachment
ImageMSArray
StorageImageMultisample

SPIRV/SpvBuilder.cpp
Test/baseResults/spv.130.frag.out
Test/baseResults/spv.140.frag.out
Test/baseResults/spv.400.frag.out
Test/baseResults/spv.image.frag.out
Test/baseResults/spv.newTexture.frag.out
Test/baseResults/spv.queryL.frag.out
Test/baseResults/spv.sparseTexture.frag.out
Test/baseResults/spv.sparseTextureClamp.frag.out
Test/baseResults/spv.texture.frag.out
Test/baseResults/spv.texture.vert.out

index a14eb00..ca2017b 100755 (executable)
@@ -406,6 +406,48 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo
     constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
     module.mapInstruction(type);
 
+    // deal with capabilities
+    switch (dim) {
+    case DimBuffer:
+        if (sampled)
+            addCapability(CapabilitySampledBuffer);
+        else
+            addCapability(CapabilityImageBuffer);
+        break;
+    case Dim1D:
+        if (sampled)
+            addCapability(CapabilitySampled1D);
+        else
+            addCapability(CapabilityImage1D);
+        break;
+    case DimCube:
+        if (arrayed) {
+            if (sampled)
+                addCapability(CapabilitySampledCubeArray);
+            else
+                addCapability(CapabilityImageCubeArray);
+        }
+        break;
+    case DimRect:
+        if (sampled)
+            addCapability(CapabilitySampledRect);
+        else
+            addCapability(CapabilityImageRect);
+        break;
+    case DimSubpassData:
+        addCapability(CapabilityInputAttachment);
+        break;
+    default:
+        break;
+    }
+
+    if (ms) {
+        if (arrayed)
+            addCapability(CapabilityImageMSArray);
+        if (! sampled)
+            addCapability(CapabilityStorageImageMultisample);
+    }
+
     return type->getResultId();
 }
 
index 6b47b7d..a9d568b 100644 (file)
@@ -11,6 +11,9 @@ Linked fragment stage:
 
                               Capability Shader
                               Capability ClipDistance
+                              Capability SampledRect
+                              Capability Sampled1D
+                              Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 4  "main" 17 68 79 99 173 184 185 186
index 6028f60..74ba071 100755 (executable)
@@ -9,6 +9,8 @@ Linked fragment stage:
 
                               Capability Shader
                               Capability ClipDistance
+                              Capability SampledRect
+                              Capability SampledBuffer
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 4  "main" 16 28 33 43
index e43527c..81ae28e 100644 (file)
@@ -12,6 +12,7 @@ Linked fragment stage:
                               Capability Shader
                               Capability Float64
                               Capability ClipDistance
+                              Capability SampledRect
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 4  "main" 13 1025 1031 1036 1048 1074 1095 1097
index 65103be..ff538f7 100644 (file)
@@ -10,6 +10,11 @@ Linked fragment stage:
 // Id's are bound by 372
 
                               Capability Shader
+                              Capability SampledRect
+                              Capability Sampled1D
+                              Capability SampledCubeArray
+                              Capability SampledBuffer
+                              Capability ImageMSArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 4  "main" 356
index 41972bb..97b0771 100755 (executable)
@@ -10,6 +10,8 @@ Linked fragment stage:
 // Id's are bound by 278
 
                               Capability Shader
+                              Capability SampledRect
+                              Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 4  "main" 17 26 29 55 81 84 91 247 277
index d72730a..9013b96 100755 (executable)
@@ -10,6 +10,10 @@ Linked fragment stage:
 // Id's are bound by 237
 
                               Capability Shader
+                              Capability SampledRect
+                              Capability Sampled1D
+                              Capability SampledCubeArray
+                              Capability SampledBuffer
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 4  "main"
index 24209e0..6af0a6c 100644 (file)
@@ -10,6 +10,8 @@ Linked fragment stage:
 // Id's are bound by 399
 
                               Capability Shader
+                              Capability SampledRect
+                              Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 4  "main" 384
index 42fc27a..cd23d66 100644 (file)
@@ -10,6 +10,8 @@ Linked fragment stage:
 // Id's are bound by 360
 
                               Capability Shader
+                              Capability SampledRect
+                              Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 4  "main" 345
index 0e79519..91a6832 100755 (executable)
@@ -8,6 +8,7 @@ Linked fragment stage:
 // Id's are bound by 291
 
                               Capability Shader
+                              Capability Sampled1D
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 4  "main" 47 276 290
index f081ce0..23cf754 100755 (executable)
@@ -8,6 +8,7 @@ Linked vertex stage:
 // Id's are bound by 146
 
                               Capability Shader
+                              Capability Sampled1D
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
                               EntryPoint Vertex 4  "main" 39 140 144 145