Add tests for VK_KHR_shader_non_semantic_info
authorPiotr Byszewski <piotr.byszewski@mobica.com>
Thu, 14 Nov 2019 13:20:35 +0000 (14:20 +0100)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 5 Mar 2020 15:25:05 +0000 (10:25 -0500)
VK-GL-CTS issue: 2076

Components: Vulkan

Affects:
dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.*

Change-Id: I0554c1a3dea49a66d28d1058b3fa63cc4a378a1f
(cherry picked from commit a1c717411059c366058008e86c94d9f8d9b01d1a)

AndroidGen.mk
android/cts/master/vk-master-2020-03-01.txt
android/cts/master/vk-master.txt
external/vulkancts/modules/vulkan/spirv_assembly/CMakeLists.txt
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmNonSemanticInfoTests.cpp [new file with mode: 0644]
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmNonSemanticInfoTests.hpp [new file with mode: 0644]
external/vulkancts/mustpass/master/vk-default-no-waivers.txt
external/vulkancts/mustpass/master/vk-default.txt

index 9d59585..4be2f0b 100644 (file)
@@ -332,6 +332,7 @@ LOCAL_SRC_FILES := \
        external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp \
        external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmLoopDepInfTests.cpp \
        external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmLoopDepLenTests.cpp \
+       external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmNonSemanticInfoTests.cpp \
        external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmPointerParameterTests.cpp \
        external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmPtrAccessChainTests.cpp \
        external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmSignedIntCompareTests.cpp \
index a4e92fb..9010059 100644 (file)
@@ -78975,6 +78975,14 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.crossconvertp2
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.crossconvertp2u.store.replay.std140.vert
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_4_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_5_compute
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.basic
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.dummy_instruction_set
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.large_instruction_number
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.many_parameters
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.any_constant_type
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.any_constant_type_used
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.any_non_constant_type
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.placement
 dEQP-VK.spirv_assembly.instruction.compute.opfunord.equal
 dEQP-VK.spirv_assembly.instruction.compute.opfunord.less
 dEQP-VK.spirv_assembly.instruction.compute.opfunord.lessequal
index 7f2f69a..5a17a98 100644 (file)
@@ -300786,6 +300786,14 @@ dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize_y
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_localsize_z
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_and_specid_localsize_z
 dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize_z
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.basic
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.dummy_instruction_set
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.large_instruction_number
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.many_parameters
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.any_constant_type
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.any_constant_type_used
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.any_non_constant_type
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.placement
 dEQP-VK.spirv_assembly.instruction.compute.opnop.all
 dEQP-VK.spirv_assembly.instruction.compute.opfunord.equal
 dEQP-VK.spirv_assembly.instruction.compute.opfunord.less
index 78d039d..404c1d8 100644 (file)
@@ -59,6 +59,8 @@ set(DEQP_VK_SPIRV_ASSEMBLY_SRCS
        vktSpvAsmVaryingNameTests.hpp
        vktSpvAsmWorkgroupMemoryTests.cpp
        vktSpvAsmWorkgroupMemoryTests.hpp
+       vktSpvAsmNonSemanticInfoTests.cpp
+       vktSpvAsmNonSemanticInfoTests.hpp
        vktSpvAsmPtrAccessChainTests.cpp
        vktSpvAsmPtrAccessChainTests.hpp
        vktSpvAsmFloatControlsExtensionlessTests.cpp
index c614b21..8a0d866 100644 (file)
@@ -77,6 +77,7 @@
 #include "vktSpvAsmSignedIntCompareTests.hpp"
 #include "vktSpvAsmPtrAccessChainTests.hpp"
 #include "vktSpvAsmFloatControlsExtensionlessTests.hpp"
+#include "vktSpvAsmNonSemanticInfoTests.hpp"
 #include "vktSpvAsm64bitCompareTests.hpp"
 
 #include <cmath>
@@ -19831,6 +19832,7 @@ tcu::TestCaseGroup* createInstructionTests (tcu::TestContext& testCtx)
 
        computeTests->addChild(createSpivVersionCheckTests(testCtx, testComputePipeline));
        computeTests->addChild(createLocalSizeGroup(testCtx));
+       computeTests->addChild(createNonSemanticInfoGroup(testCtx));
        computeTests->addChild(createOpNopGroup(testCtx));
        computeTests->addChild(createOpFUnordGroup(testCtx, TEST_WITHOUT_NAN));
        computeTests->addChild(createOpFUnordGroup(testCtx, TEST_WITH_NAN));
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmNonSemanticInfoTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmNonSemanticInfoTests.cpp
new file mode 100644 (file)
index 0000000..bd6089d
--- /dev/null
@@ -0,0 +1,362 @@
+/*-------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 2019 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief SPIR-V non semantic info tests
+ *//*--------------------------------------------------------------------*/
+
+#include "vkApiVersion.hpp"
+
+#include "vktSpvAsmNonSemanticInfoTests.hpp"
+#include "vktTestCase.hpp"
+#include "vktSpvAsmComputeShaderCase.hpp"
+#include "vktSpvAsmGraphicsShaderTestUtil.hpp"
+
+namespace vkt
+{
+namespace SpirVAssembly
+{
+
+using namespace vk;
+
+enum TestType
+{
+       TT_BASIC                                        = 0,
+       TT_DUMMY_INSTRUCTION_SET,
+       TT_LARGE_INSTRUCTION_NUMBER,
+       TT_MANY_PARAMETERS,
+       TT_ANY_CONSTANT_TYPE,
+       TT_ANY_CONSTANT_TYPE_USED,
+       TT_ANY_NON_CONSTANT_TYPE,
+       TT_PLACEMENT
+};
+
+static ComputeShaderSpec getComputeShaderSpec ()
+{
+       deUint32 numElements = 10;
+       std::vector<float>      inoutFloats     (10, 0);
+       for (size_t ndx = 0; ndx < numElements; ++ndx)
+               inoutFloats[ndx] = 1.0f * static_cast<float>(ndx);
+
+       // in one of tests we need to do imageLoad
+       // we don't need any special values in here
+       std::vector<int> inputInts(256, 0);
+
+       ComputeShaderSpec spec;
+       spec.extensions.push_back("VK_KHR_shader_non_semantic_info");
+       spec.inputs.push_back(BufferSp(new Float32Buffer(inoutFloats)));
+       spec.inputs.push_back(Resource(BufferSp(new Int32Buffer(inputInts)), vk::VK_DESCRIPTOR_TYPE_STORAGE_IMAGE));
+       spec.outputs.push_back(BufferSp(new Float32Buffer(inoutFloats)));
+       spec.numWorkGroups = tcu::IVec3(numElements, 1, 1);
+       return spec;
+}
+
+class SpvAsmSpirvNonSemanticInfoBasicInstance : public ComputeShaderSpec, public SpvAsmComputeShaderInstance
+{
+public:
+       SpvAsmSpirvNonSemanticInfoBasicInstance         (Context& ctx, TestType type);
+
+       tcu::TestStatus                 iterate                         (void);
+
+protected:
+       TestType m_testType;
+};
+
+SpvAsmSpirvNonSemanticInfoBasicInstance::SpvAsmSpirvNonSemanticInfoBasicInstance(Context& ctx, TestType type)
+       : ComputeShaderSpec(getComputeShaderSpec())
+       , SpvAsmComputeShaderInstance(ctx, *this)
+       , m_testType(type)
+{
+}
+
+tcu::TestStatus SpvAsmSpirvNonSemanticInfoBasicInstance::iterate (void)
+{
+       return SpvAsmComputeShaderInstance::iterate();
+}
+
+class SpvAsmSpirvNonSemanticInfoBasicCase : public TestCase
+{
+public:
+       SpvAsmSpirvNonSemanticInfoBasicCase             (tcu::TestContext& testCtx, const char* name, TestType type);
+
+       void                    checkSupport                    (Context& context) const;
+       void                    initPrograms                    (vk::SourceCollections& programCollection) const;
+       TestInstance*   createInstance                  (Context& context) const;
+
+protected:
+       TestType m_testType;
+};
+
+SpvAsmSpirvNonSemanticInfoBasicCase::SpvAsmSpirvNonSemanticInfoBasicCase(tcu::TestContext& testCtx, const char* name, TestType type)
+       : TestCase (testCtx, name, "")
+       , m_testType(type)
+{
+}
+
+void SpvAsmSpirvNonSemanticInfoBasicCase::checkSupport(Context& context) const
+{
+       context.requireDeviceFunctionality("VK_KHR_shader_non_semantic_info");
+}
+
+void SpvAsmSpirvNonSemanticInfoBasicCase::initPrograms (SourceCollections& programCollection) const
+{
+       std::string extendedInstructions        = "%extInstSet = OpExtInstImport \"NonSemantic.KHR.DebugInfo\"\n";
+       std::string additionalDecorations       = "";
+       std::string additionalPreamble          = "";
+       std::string additionalTypesAndConst = "";
+       std::string beginningOfMain                     = "";
+       std::string middleOfMain                        = "";
+
+       switch (m_testType)
+       {
+       case TT_BASIC:
+               // Minimal test of basic functionality
+
+               additionalPreamble +=
+                       "%fileStr = OpString \"path\\to\\source.file\"\n"
+                       "OpSource GLSL 430 %fileStr\n";
+               middleOfMain +=
+                       "%tmp = OpExtInst %void %extInstSet 1 %main %fileStr\n";
+               break;
+
+       case TT_DUMMY_INSTRUCTION_SET:
+               // Testing non existing instruction set
+
+               extendedInstructions =
+                       "%extInstSet = OpExtInstImport \"NonSemantic.P.B.DummySet\"\n";
+               additionalPreamble +=
+                       "%testStrA = OpString \"this.is.test\"\n"
+                       "%testStrB = OpString \"yet another test\"\n";
+               middleOfMain +=
+                       "%tmpA = OpExtInst %void %extInstSet 55 %id %testStrA %testStrB\n"
+                       "OpLine %testStrA 1 1\n"
+                       "%tmpB = OpExtInst %void %extInstSet 99 %testStrA %main %testStrA\n"
+                       "OpLine %testStrB 2 2\n"
+                       "OpNoLine\n";
+               break;
+
+       case TT_LARGE_INSTRUCTION_NUMBER:
+       {
+               // Any instruction number should work - testing large values near uint::max
+
+               deUint32 instNr = std::numeric_limits<deUint32>::max() - 1;
+               middleOfMain +=
+                       "%tmpA = OpExtInst %void %extInstSet " + std::to_string(instNr) + " %main\n" +
+                       "%tmpB = OpExtInst %void %extInstSet 4294967290 %main\n";
+               break;
+       }
+
+       case TT_MANY_PARAMETERS:
+               // Many parameters should work - testing 100 parameters
+
+               middleOfMain +=
+                       "%tmp = OpExtInst %void %extInstSet 1234";
+               for (deUint32 parameterIndex = 0; parameterIndex < 100; parameterIndex++)
+               {
+                       std::string iStr = std::to_string(parameterIndex);
+                       std::string strVarName = std::string("%testStr") + iStr;
+                       additionalPreamble += strVarName + " = OpString \"" + iStr +"\"\n";
+                       middleOfMain += std::string(" ") + strVarName;
+               }
+               middleOfMain += "\n";
+               break;
+
+       case TT_ANY_CONSTANT_TYPE:
+       case TT_ANY_CONSTANT_TYPE_USED:
+       {
+               // Any type of constant parameter should work - testing undef,
+               // int, uint, float, struct, vector, array, string, matrix
+
+               additionalDecorations =
+                       "OpMemberDecorate %struct 0 Offset 0\n"
+                       "OpMemberDecorate %struct 1 Offset 4\n"
+                       "OpMemberDecorate %struct 2 Offset 16\n";
+
+               std::string types =
+                       "%struct             = OpTypeStruct %f32 %fvec3 %i32\n"
+                       "%c_array_size       = OpConstant %u32 4\n"
+                       "%array4             = OpTypeArray %f32 %c_array_size\n"
+                       "%matrix3x3          = OpTypeMatrix %fvec3 3\n";
+
+               std::string constans =
+                       "%undef      = OpUndef %i32\n"
+                       "%c_i32      = OpConstant %i32 -45\n"
+                       "%c_u32      = OpConstant %u32 99\n"
+                       "%c_f32      = OpConstant %f32 0.0\n"
+                       "%c_fvec3    = OpConstantComposite %fvec3 %c_f32 %c_f32 %c_f32\n"
+                       "%c_struct   = OpConstantComposite %struct %c_f32 %c_fvec3 %undef\n"
+                       "%c_array    = OpConstantComposite %array4 %c_f32 %c_f32 %c_f32 %c_f32\n"
+                       "%c_matrix   = OpConstantComposite %matrix3x3 %c_fvec3 %c_fvec3 %c_fvec3\n";
+
+               additionalPreamble +=
+                       "%testStr = OpString \"\"\n";
+               additionalTypesAndConst = types + constans;
+               middleOfMain += "%tmp = OpExtInst %void %extInstSet 999 %main %undef %c_i32 %c_u32 %c_f32 %c_struct %c_fvec3 %c_array %testStr %c_matrix\n";
+               if (m_testType == TT_ANY_CONSTANT_TYPE)
+                       break;
+
+               // use all constans outside of OpExtInst
+               middleOfMain +=
+                       "%tmp01      = OpCompositeExtract %f32 %c_fvec3 2\n"
+                       "%tmp02      = OpFAdd %f32 %tmp01 %c_f32\n"
+                       "%tmp03      = OpCompositeExtract %f32 %c_struct 0\n"
+                       "%tmp04      = OpFAdd %f32 %tmp02 %tmp03\n"
+                       "%tmp05      = OpCompositeExtract %f32 %c_array 1\n"
+                       "%tmp06      = OpFAdd %f32 %tmp04 %tmp05\n"
+                       "%tmp07      = OpCompositeExtract %fvec3 %c_matrix 1\n"
+                       "%tmp08      = OpCompositeExtract %f32 %tmp07 1\n"
+                       "%tmp09      = OpFMul %f32 %tmp06 %tmp08\n"
+                       "%tmp10      = OpConvertSToF %f32 %c_i32\n"
+                       "%tmp11      = OpFMul %f32 %tmp09 %tmp10\n"
+                       "              OpStore %outloc %tmp11\n";
+               break;
+       }
+
+       case TT_ANY_NON_CONSTANT_TYPE:
+       {
+               // Any type of existing semantic result ID should be referencable. Testing
+               // the result of a semantic OpExtInst, an entry point, variables of different types,
+               // result IDs of buffer and texture loads, result IDs of arithmetic instructions,
+               // result of an OpLoad, result of a comparison / logical instruction.
+
+               additionalDecorations =
+                       "OpMemberDecorate %struct 0 Offset 0\n"
+                       "OpMemberDecorate %struct 1 Offset 4\n"
+                       "OpMemberDecorate %struct 2 Offset 16\n";
+               extendedInstructions +=
+                       "%std450 = OpExtInstImport \"GLSL.std.450\"\n";
+               additionalTypesAndConst =
+                       "%struct             = OpTypeStruct %f32 %fvec3 %f32\n"
+                       "%struct_ptr         = OpTypePointer Function %struct\n"
+                       "%c_array_size       = OpConstant %u32 4\n"
+                       "%array4             = OpTypeArray %f32 %c_array_size\n"
+                       "%array4_ptr         = OpTypePointer Function %array4\n"
+                       "%matrix3x3          = OpTypeMatrix %fvec3 3\n"
+                       "%matrix3x3_ptr      = OpTypePointer Function %matrix3x3\n"
+                       "%uvec2              = OpTypeVector %u32 2\n"
+                       "%fvec4              = OpTypeVector %f32 4\n"
+                       "%uv                 = OpConstantComposite %uvec2 %zero %zero\n";
+
+               beginningOfMain =
+                       "%struct_var = OpVariable %struct_ptr Function\n"
+                       "%array_var  = OpVariable %array4_ptr Function\n"
+                       "%matrix_var = OpVariable %matrix3x3_ptr Function\n";
+               middleOfMain =
+                       "%tmp01      = OpExtInst %void %extInstSet 486 %main %id %x %idval %struct_var %array_var %matrix_var %uvec3ptr %indata\n"
+                       "%arithmRes  = OpIAdd %u32 %x %x\n"
+                       "%extInstRes = OpExtInst %f32 %std450 FAbs %inval\n"
+                       "%logicRes   = OpIsNan %bool %inval\n"
+                       "%imgLoadRes = OpLoad %image_type %image\n"
+                       "%tmp02      = OpExtInst %void %extInstSet 963 %tmp01 %arithmRes %inloc %outloc %inval %extInstRes %logicRes %imgLoadRes %std450\n";
+               break;
+       }
+
+       case TT_PLACEMENT:
+               // The instructions should be able to be placed at global scope,
+               // in the types/constants section and between function definitions
+
+               additionalTypesAndConst =
+                       "%extInstA   = OpExtInst %void %extInstSet 1 %id\n"                     // at global scope
+                       "%floatf     = OpTypeFunction %f32 %f32\n"
+                       "%funDefA    = OpFunction %f32 None %floatf\n"
+                       "%funApa     = OpFunctionParameter %f32\n"
+                       "%funA       = OpLabel\n"
+                       "              OpReturnValue %funApa\n"
+                       "              OpFunctionEnd\n"
+                       "%extInstB  = OpExtInst %void %extInstSet 3 %id\n";                     // between definitions
+               middleOfMain +=
+                       "%aRes       = OpFunctionCall %f32 %funDefA %inval\n"
+                       "%extInstC   = OpExtInst %void %extInstSet 4 %aRes\n"           // within a block
+                       "              OpStore %outloc %aRes\n";
+               break;
+       }
+
+       std::string source =
+               getComputeAsmShaderPreamble("", "OpExtension \"SPV_KHR_non_semantic_info\"\n" + extendedInstructions) +
+               additionalPreamble +
+               "OpDecorate %id BuiltIn GlobalInvocationId\n" +
+               "OpDecorate %buf BufferBlock\n"
+               "OpDecorate %indata DescriptorSet 0\n"
+               "OpDecorate %indata Binding 0\n"
+               "OpDecorate %image DescriptorSet 0\n"
+               "OpDecorate %image Binding 1\n"
+               "OpDecorate %image NonWritable\n"
+               "OpDecorate %outdata DescriptorSet 0\n"
+               "OpDecorate %outdata Binding 2\n"
+               "OpDecorate %f32arr ArrayStride 4\n"
+               "OpMemberDecorate %buf 0 Offset 0\n" +
+               additionalDecorations +
+               std::string(getComputeAsmCommonTypes()) +
+               std::string(getComputeAsmInputOutputBuffer()) +
+               "%id         = OpVariable %uvec3ptr Input\n"
+               "%image_type = OpTypeImage %f32 2D 0 0 0 2 Rgba8\n"
+               "%image_ptr  = OpTypePointer UniformConstant %image_type\n"
+               "%image      = OpVariable %image_ptr UniformConstant\n"
+               "%zero       = OpConstant %i32 0\n" +
+               additionalTypesAndConst +
+               "%main       = OpFunction %void None %voidf\n"
+               "%label      = OpLabel\n" +
+               beginningOfMain +
+               "%idval      = OpLoad %uvec3 %id\n"
+               "%x          = OpCompositeExtract %u32 %idval 0\n"
+               "%inloc      = OpAccessChain %f32ptr %indata %zero %x\n"
+               "%outloc     = OpAccessChain %f32ptr %outdata %zero %x\n"
+               "%inval      = OpLoad %f32 %inloc\n" +
+               middleOfMain +
+               "             OpStore %outloc %inval\n"
+               "             OpReturn\n"
+               "             OpFunctionEnd\n";
+
+       programCollection.spirvAsmSources.add("compute") << source;
+}
+
+TestInstance* SpvAsmSpirvNonSemanticInfoBasicCase::createInstance (Context& context) const
+{
+       return new SpvAsmSpirvNonSemanticInfoBasicInstance(context, m_testType);
+}
+
+tcu::TestCaseGroup* createNonSemanticInfoGroup(tcu::TestContext& testCtx)
+{
+       de::MovePtr<tcu::TestCaseGroup> group (new tcu::TestCaseGroup(testCtx, "non_semantic_info", "Test for VK_KHR_shader_non_semantic_info"));
+
+       struct TestData
+       {
+               const char*     name;
+               TestType        type;
+       };
+       std::vector<TestData> testList =
+       {
+               { "basic",                                              TT_BASIC },
+               { "dummy_instruction_set",              TT_DUMMY_INSTRUCTION_SET },
+               { "large_instruction_number",   TT_LARGE_INSTRUCTION_NUMBER },
+               { "many_parameters",                    TT_MANY_PARAMETERS },
+               { "any_constant_type",                  TT_ANY_CONSTANT_TYPE },
+               { "any_constant_type_used",             TT_ANY_CONSTANT_TYPE_USED },
+               { "any_non_constant_type",              TT_ANY_NON_CONSTANT_TYPE },
+               { "placement",                                  TT_PLACEMENT },
+       };
+
+       for (const auto& item : testList)
+               group->addChild(new SpvAsmSpirvNonSemanticInfoBasicCase(testCtx, item.name, item.type));
+
+       return group.release();
+}
+
+} // SpirVAssembly
+} // vkt
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmNonSemanticInfoTests.hpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmNonSemanticInfoTests.hpp
new file mode 100644 (file)
index 0000000..b54b07a
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef _VKTSPVASMNONSEMANTICINFOTESTS_HPP
+#define _VKTSPVASMNONSEMANTICINFOTESTS_HPP
+/*-------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 2019 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief SPIR-V non semantic info tests
+ *//*--------------------------------------------------------------------*/
+
+#include "vkPrograms.hpp"
+#include "vktTestCase.hpp"
+
+#include "vktSpvAsmComputeShaderTestUtil.hpp"
+
+namespace vkt
+{
+namespace SpirVAssembly
+{
+
+tcu::TestCaseGroup* createNonSemanticInfoGroup(tcu::TestContext& testCtx);
+
+} // SpirVAssembly
+} // vkt
+
+#endif // _VKTSPVASMNONSEMANTICINFOTESTS_HPP
index c61b228..4c3cccc 100644 (file)
@@ -300673,6 +300673,14 @@ dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize_y
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_localsize_z
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_and_specid_localsize_z
 dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize_z
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.basic
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.dummy_instruction_set
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.large_instruction_number
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.many_parameters
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.any_constant_type
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.any_constant_type_used
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.any_non_constant_type
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.placement
 dEQP-VK.spirv_assembly.instruction.compute.opnop.all
 dEQP-VK.spirv_assembly.instruction.compute.opfunord.equal
 dEQP-VK.spirv_assembly.instruction.compute.opfunord.less
index 688bee3..9d72f7a 100644 (file)
@@ -300673,6 +300673,14 @@ dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize_y
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_localsize_z
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_and_specid_localsize_z
 dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize_z
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.basic
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.dummy_instruction_set
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.large_instruction_number
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.many_parameters
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.any_constant_type
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.any_constant_type_used
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.any_non_constant_type
+dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.placement
 dEQP-VK.spirv_assembly.instruction.compute.opnop.all
 dEQP-VK.spirv_assembly.instruction.compute.opfunord.equal
 dEQP-VK.spirv_assembly.instruction.compute.opfunord.less