Fix SPIR-V validation in float_controls
authorPiotr Byszewski <piotr.byszewski@mobica.com>
Fri, 19 Oct 2018 11:36:09 +0000 (13:36 +0200)
committerPiotr Byszewski <piotr.byszewski@mobica.com>
Fri, 19 Oct 2018 11:53:30 +0000 (13:53 +0200)
FPRoundingMode decoration can be applied only to the Object
operand of an OpStore. This couldn't be done in vertex stage
without using write to SSBO which is not universally supported.
Because of that two vertex stage tests had to be removed.
FPRoundingMode is still tested in compute and fragment stage.

Components: Vulkan

VK-GL-CTS issue: 1430

Affects:
dEQP-VK.spirv_assembly.instruction.graphics.float_controls.*

Change-Id: I4f01149dae3ec9184b99302d51d681739ed15bf9

android/cts/master/vk-master.txt
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsTests.cpp
external/vulkancts/mustpass/1.1.3/vk-default-no-waivers.txt
external/vulkancts/mustpass/1.1.3/vk-default.txt

index be4ea7b..bcb905b 100755 (executable)
@@ -228240,8 +228240,6 @@ dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.round
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rtz_sconst_conv_from_fp32_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rte_sconst_conv_from_fp64_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rtz_sconst_conv_from_fp64_vert
-dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rte_override_vert
-dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rtz_override_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.conv_from_fp32_denorm_preserve_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.conv_from_fp32_denorm_flush_to_zero_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.conv_from_fp32_zero_preserve_vert
index e1bd5e4..fae13d9 100644 (file)
@@ -2634,7 +2634,7 @@ void getGraphicsShaderCode (vk::SourceCollections& dst, InstanceContext context)
 
                // set of default constants per float type is placed here,
                // operation tests can also define additional constants;
-               // note that O_RETURN_VAL defines function here and becouse
+               // note that O_RETURN_VAL defines function here and because
                // of that this token needs to be directly before main function
                "${vert_constants}"
 
@@ -2719,7 +2719,7 @@ void getGraphicsShaderCode (vk::SourceCollections& dst, InstanceContext context)
 
                // set of default constants per float type is placed here,
                // operation tests can also define additional constants;
-               // note that O_RETURN_VAL defines function here and becouse
+               // note that O_RETURN_VAL defines function here and because
                // of that this token needs to be directly before main function
                "${frag_constants}"
 
@@ -2802,6 +2802,13 @@ void GraphicsTestGroupBuilder::createTests(TestCaseGroup* group, FloatType float
                if (testCase.expectedOutput == V_UNUSED)
                        continue;
 
+               // FPRoundingMode decoration can be applied only to conversion instruction that is used as the object
+               // argument of an OpStore storing through a pointer to a 16-bit floating-point object in Uniform, or
+               // PushConstant, or Input, or Output Storage Classes. SSBO writes are not commonly supported
+               // in VS so this test case needs to be skiped for vertex stage.
+               if ((testCase.operationId == O_ORTZ_ROUND) || (testCase.operationId == O_ORTE_ROUND))
+                       continue;
+
                TestCaseInfo testCaseInfo =
                {
                        floatType,
index c0a8c84..467a551 100644 (file)
@@ -228221,8 +228221,6 @@ dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.round
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rtz_sconst_conv_from_fp32_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rte_sconst_conv_from_fp64_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rtz_sconst_conv_from_fp64_vert
-dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rte_override_vert
-dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rtz_override_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.conv_from_fp32_denorm_preserve_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.conv_from_fp32_denorm_flush_to_zero_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.conv_from_fp32_zero_preserve_vert
index af3a664..86514d7 100644 (file)
@@ -228221,8 +228221,6 @@ dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.round
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rtz_sconst_conv_from_fp32_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rte_sconst_conv_from_fp64_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rtz_sconst_conv_from_fp64_vert
-dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rte_override_vert
-dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rtz_override_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.conv_from_fp32_denorm_preserve_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.conv_from_fp32_denorm_flush_to_zero_vert
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.conv_from_fp32_zero_preserve_vert