Fix GCC 7 implicit fallthrough warnings
authorMika Väinölä <mika.vainola@siru.fi>
Tue, 20 Mar 2018 11:40:57 +0000 (13:40 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Wed, 11 Apr 2018 15:44:03 +0000 (11:44 -0400)
GCC 7 with -Wextra or -Wimplicit-fallthrough enabled warns when
a switch case falls through. For cases where this is intentional
the warning can be suppressed with a comment. Breaks and returns
were also added for cases which end in DE_FATAL.

Removing a fallthrough in vktSparseResourcesShaderIntrinsics.cpp
resulted in new test cases.

Affects: *

New tests:
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.*

Components: Framework, Vulkan, OpenGL

VK-GL-CTS issue: 1067

Change-Id: I0306f96cf3a50e85144b4dd22a9a88cd908607d3

31 files changed:
android/cts/master/vk-master.txt
executor/xeXMLParser.cpp
external/openglcts/modules/gl/gl4cMultiBindTests.cpp
external/openglcts/modules/gles31/es31cSeparateShaderObjsTests.cpp
external/openglcts/modules/glesext/esextcTestCaseBase.cpp
external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.cpp
external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinPrecisionTests.cpp
external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderTextureGatherTests.cpp
external/vulkancts/modules/vulkan/sparse_resources/vktSparseResourcesShaderIntrinsics.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsArithmeticTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsBallotBroadcastTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsBallotOtherTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsBasicTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsClusteredTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsQuadTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsShapeTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsShuffleTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsTestsUtils.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsVoteTests.cpp
external/vulkancts/modules/vulkan/ycbcr/vktYCbCrViewTests.cpp
external/vulkancts/mustpass/1.1.2/vk-default-no-waivers.txt
external/vulkancts/mustpass/1.1.2/vk-default.txt
framework/common/tcuAstcUtil.cpp
framework/egl/egluGLUtil.cpp
framework/platform/lnx/X11/tcuLnxX11GlxPlatform.cpp
framework/referencerenderer/rrVertexAttrib.cpp
modules/gles3/functional/es3fFboRenderTest.cpp
modules/gles3/functional/es3fFboTestCase.cpp
modules/gles31/functional/es31fShaderFramebufferFetchTests.cpp
modules/glshared/glsBuiltinPrecisionTests.cpp

index 79cd978..0ad92e4 100755 (executable)
@@ -280664,6 +280664,30 @@ dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.512_256
 dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.128_128_8
 dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.503_137_3
 dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.11_37_3
 dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.512_256_1
 dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.128_128_1
 dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.503_137_1
index dcff661..3c39ee8 100644 (file)
@@ -419,7 +419,7 @@ void Parser::advance (void)
                {
                        case STATE_ENTITY:
                                m_state = STATE_DATA;
-                               // Fall-through to STATE_DATA processing.
+                               // Fall-through
 
                        case STATE_DATA:
                                switch (curToken)
index 2696883..24f38ed 100644 (file)
@@ -3766,7 +3766,7 @@ tcu::TestNode::IterateResult DispatchBindTexturesTest::iterate()
                {
                case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
                        is_array = true;
-               /* Intended pass-through */
+               /* Intentional fallthrough */
 
                case GL_TEXTURE_2D_MULTISAMPLE:
                        texture[i].InitStorage(m_context, target, 1, GL_R32UI, width, height, depth);
@@ -4017,7 +4017,7 @@ tcu::TestNode::IterateResult DispatchBindImageTexturesTest::iterate()
                {
                case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
                        is_array = true;
-               /* Intended pass-through */
+               /* Intentional fallthrough */
 
                case GL_TEXTURE_2D_MULTISAMPLE:
                        texture[i].InitStorage(m_context, target, 1, GL_R32UI, width, height, depth);
index 3fcc6a6..103baa2 100644 (file)
@@ -2052,14 +2052,19 @@ public:
                // Note all these cases fall through
                case 5:
                        vtxSrc << "layout(location = 3) out vec4 o_val5;\n";
+               // Fallthrough
                case 4:
                        vtxSrc << "flat out uvec4 val4;\n";
+               // Fallthrough
                case 3:
                        vtxSrc << "flat out ivec2 val3;\n";
+               // Fallthrough
                case 2:
                        vtxSrc << "out vec3 val2[2];\n";
+               // Fallthrough
                case 1:
                        vtxSrc << "out vec4 val1;\n";
+               // Fallthrough
                default:
                        vtxSrc << "out float val0;\n";
                }
@@ -2109,14 +2114,19 @@ public:
                // Note all these cases fall through
                case 5:
                        fragSrc << "layout(location = 3) in vec4 i_val5;\n";
+               // Fallthrough
                case 4:
                        fragSrc << "flat in uvec4 val4;\n";
+               // Fallthrough
                case 3:
                        fragSrc << "flat in ivec2 val3;\n";
+               // Fallthrough
                case 2:
                        fragSrc << "in vec3 val2[2];\n";
+               // Fallthrough
                case 1:
                        fragSrc << "in vec4 val1;\n";
+               // Fallthrough
                default:
                        fragSrc << "in float val0;\n";
                }
@@ -2881,6 +2891,7 @@ public:
                {
                case SET_DEFAULT_PRECISION:
                        vtxSrc << "precision " << precision << " float;\n";
+               // Fallthrough
                case DEFAULT_PRECISION:
                        vtxSrc << "out float var;\n";
                        break;
@@ -2905,6 +2916,7 @@ public:
                {
                case SET_DEFAULT_PRECISION:
                        fragSrc << "precision " << precision << " float;\n";
+               // Fallthrough
                case DEFAULT_PRECISION:
                        fragSrc << "in float var;\n";
                        break;
@@ -2951,6 +2963,7 @@ public:
                {
                case SET_DEFAULT_PRECISION:
                        vtxSrc << "precision " << precision << " int;\n";
+               // Fallthrough
                case DEFAULT_PRECISION:
                        vtxSrc << "flat out int var;\n";
                        break;
@@ -2975,6 +2988,7 @@ public:
                {
                case SET_DEFAULT_PRECISION:
                        fragSrc << "precision " << precision << " int;\n";
+               // Fallthrough
                case DEFAULT_PRECISION:
                        fragSrc << "flat in int var;\n";
                        break;
@@ -3021,6 +3035,7 @@ public:
                {
                case SET_DEFAULT_PRECISION:
                        vtxSrc << "precision " << precision << " int;\n";
+               // Fallthrough
                case DEFAULT_PRECISION:
                        vtxSrc << "flat out uint var;\n";
                        break;
@@ -3045,6 +3060,7 @@ public:
                {
                case SET_DEFAULT_PRECISION:
                        fragSrc << "precision " << precision << " int;\n";
+               // Fallthrough
                case DEFAULT_PRECISION:
                        fragSrc << "flat in uint var;\n";
                        break;
index 5a8c624..34465a4 100644 (file)
@@ -722,16 +722,19 @@ bool TestCaseBase::comparePixel(const unsigned char* buffer, unsigned int x, uns
        {
                result &= (expected_alpha == buffer[texel_offset + 3]);
        }
+       /* Fallthrough */
 
        case 3:
        {
                result &= (expected_blue == buffer[texel_offset + 2]);
        }
+       /* Fallthrough */
 
        case 2:
        {
                result &= (expected_green == buffer[texel_offset + 1]);
        }
+       /* Fallthrough */
 
        case 1:
        {
index a7820e8..4127723 100644 (file)
@@ -178,9 +178,9 @@ void verifyDriverSupport(const deUint32                                                     apiVersion,
                        extensionNames.push_back("VK_KHR_push_descriptor");
                        break;
 
-               // fall through
                case DESCRIPTOR_UPDATE_METHOD_WITH_PUSH_TEMPLATE:
                        extensionNames.push_back("VK_KHR_push_descriptor");
+               // Fallthrough
                case DESCRIPTOR_UPDATE_METHOD_WITH_TEMPLATE:
                        if (!vk::isCoreDeviceExtension(apiVersion, "VK_KHR_descriptor_update_template"))
                                extensionNames.push_back("VK_KHR_descriptor_update_template");
index 840895c..96dc254 100644 (file)
@@ -1517,6 +1517,7 @@ tcu::TestStatus ImageSamplingInstance::verifyImage (void)
                                break;
                        case tcu::TextureFormat::FLOAT_UNSIGNED_INT_24_8_REV:
                                depthChannelType = tcu::TextureFormat::FLOAT;
+                               break;
                        default:
                                DE_ASSERT("Unhandled texture format type in switch");
                        }
index 9bb08d6..bff010b 100644 (file)
@@ -4464,11 +4464,20 @@ tcu::TestStatus BuiltinPrecisionCaseTestInstance<In, Out>::iterate (void)
 
        switch (inCount)
        {
-               case 4: DE_ASSERT(inputs.in3.size() == numValues);
-               case 3: DE_ASSERT(inputs.in2.size() == numValues);
-               case 2: DE_ASSERT(inputs.in1.size() == numValues);
-               case 1: DE_ASSERT(inputs.in0.size() == numValues);
-               default: break;
+               case 4:
+                       DE_ASSERT(inputs.in3.size() == numValues);
+               // Fallthrough
+               case 3:
+                       DE_ASSERT(inputs.in2.size() == numValues);
+               // Fallthrough
+               case 2:
+                       DE_ASSERT(inputs.in1.size() == numValues);
+               // Fallthrough
+               case 1:
+                       DE_ASSERT(inputs.in0.size() == numValues);
+               // Fallthrough
+               default:
+                       break;
        }
 
        m_executor->execute(int(numValues), inputArr, outputArr);
@@ -4518,11 +4527,13 @@ tcu::TestStatus BuiltinPrecisionCaseTestInstance<In, Out>::iterate (void)
                                if (!status.check(contains(reference1, outputs.out1[valueNdx]),
                                                                        "Shader output 1 is outside acceptable range"))
                                        result = false;
+                       // Fallthrough
                        case 1:
                                reference0 = convert<Out0>(highpFmt, env.lookup(*m_variables.out0));
                                if (!status.check(contains(reference0, outputs.out0[valueNdx]),
                                                                        "Shader output 0 is outside acceptable range"))
                                        result = false;
+                       // Fallthrough
                        default: break;
                }
 
@@ -4655,20 +4666,34 @@ void PrecisionCase::testStatement (const Variables<In, Out>& variables, const St
 
        switch (inCount)
        {
-               case 4: m_spec.inputs[3] = makeSymbol(*variables.in3);
-               case 3: m_spec.inputs[2] = makeSymbol(*variables.in2);
-               case 2: m_spec.inputs[1] = makeSymbol(*variables.in1);
-               case 1: m_spec.inputs[0] = makeSymbol(*variables.in0);
-               default: break;
+               case 4:
+                       m_spec.inputs[3] = makeSymbol(*variables.in3);
+               // Fallthrough
+               case 3:
+                       m_spec.inputs[2] = makeSymbol(*variables.in2);
+               // Fallthrough
+               case 2:
+                       m_spec.inputs[1] = makeSymbol(*variables.in1);
+               // Fallthrough
+               case 1:
+                       m_spec.inputs[0] = makeSymbol(*variables.in0);
+               // Fallthrough
+               default:
+                       break;
        }
 
        m_spec.outputs.resize(outCount);
 
        switch (outCount)
        {
-               case 2: m_spec.outputs[1] = makeSymbol(*variables.out1);
-               case 1: m_spec.outputs[0] = makeSymbol(*variables.out0);
-               default: break;
+               case 2:
+                       m_spec.outputs[1] = makeSymbol(*variables.out1);
+               // Fallthrough
+               case 1:
+                       m_spec.outputs[0] = makeSymbol(*variables.out0);
+               // Fallthrough
+               default:
+                       break;
        }
 
        m_spec.source = de::toString(stmt);
index f4ccb04..7e4bd10 100644 (file)
@@ -1083,6 +1083,7 @@ IVec2 getOffsetRange (const OffsetSize offsetSize)
 
                case OFFSETSIZE_IMPLEMENTATION_MAXIMUM:
                        DE_FATAL("Not known");
+                       return IVec2(-1);
 
                default:
                        DE_ASSERT(false);
index a8535a6..a4c528e 100644 (file)
@@ -96,6 +96,7 @@ tcu::TestCaseGroup* createSparseResourcesShaderIntrinsicsTests (tcu::TestContext
                                        {
                                        case SPARSE_FETCH:
                                                if ((imageType == IMAGE_TYPE_CUBE) || (imageType == IMAGE_TYPE_CUBE_ARRAY)) continue;
+                                               break;
                                        case SPARSE_SAMPLE_EXPLICIT_LOD:
                                        case SPARSE_SAMPLE_IMPLICIT_LOD:
                                        case SPARSE_GATHER:
index e4a49ae..08eaf23 100644 (file)
@@ -138,6 +138,7 @@ std::string getOpTypeName(int opType)
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_ADD:
                        return "subgroupAdd";
                case OPTYPE_MUL:
@@ -189,6 +190,7 @@ std::string getOpTypeOperation(int opType, vk::VkFormat format, std::string lhs,
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_ADD:
                case OPTYPE_INCLUSIVE_ADD:
                case OPTYPE_EXCLUSIVE_ADD:
@@ -294,6 +296,7 @@ std::string getIdentity(int opType, vk::VkFormat format)
        {
                default:
                        DE_FATAL("Unhandled format!");
+                       break;
                case VK_FORMAT_R32_SINT:
                case VK_FORMAT_R32G32_SINT:
                case VK_FORMAT_R32G32B32_SINT:
@@ -327,6 +330,7 @@ std::string getIdentity(int opType, vk::VkFormat format)
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_ADD:
                case OPTYPE_INCLUSIVE_ADD:
                case OPTYPE_EXCLUSIVE_ADD:
@@ -353,6 +357,7 @@ std::string getIdentity(int opType, vk::VkFormat format)
                        else
                        {
                                DE_FATAL("Unhandled case");
+                               return "";
                        }
                case OPTYPE_MAX:
                case OPTYPE_INCLUSIVE_MAX:
@@ -372,6 +377,7 @@ std::string getIdentity(int opType, vk::VkFormat format)
                        else
                        {
                                DE_FATAL("Unhandled case");
+                               return "";
                        }
                case OPTYPE_AND:
                case OPTYPE_INCLUSIVE_AND:
index 748487b..3fd88c8 100644 (file)
@@ -120,6 +120,7 @@ std::string getOpTypeName(int opType)
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_BROADCAST:
                        return "subgroupBroadcast";
                case OPTYPE_BROADCAST_FIRST:
index 86a4092..a266bbd 100644 (file)
@@ -124,6 +124,7 @@ std::string getOpTypeName(int opType)
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_INVERSE_BALLOT:
                        return "subgroupInverseBallot";
                case OPTYPE_BALLOT_BIT_EXTRACT:
@@ -175,6 +176,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                default:
                        DE_FATAL("Unknown op type!");
+                       break;
                case OPTYPE_INVERSE_BALLOT:
                        bdy << "  tempResult |= subgroupInverseBallot(allOnes) ? 0x1 : 0;\n"
                                << "  tempResult |= subgroupInverseBallot(allZeros) ? 0 : 0x2;\n"
@@ -405,6 +407,7 @@ void initPrograms (SourceCollections& programCollection, CaseDefinition caseDef)
        {
                default:
                        DE_FATAL("Unknown op type!");
+                       break;
                case OPTYPE_INVERSE_BALLOT:
                        bdy << "  tempResult |= subgroupInverseBallot(allOnes) ? 0x1 : 0;\n"
                                << "  tempResult |= subgroupInverseBallot(allZeros) ? 0 : 0x2;\n"
index 7f46590..4a69d33 100644 (file)
@@ -303,6 +303,7 @@ std::string getOpTypeName(int opType)
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_ELECT:
                        return "subgroupElect";
                case OPTYPE_SUBGROUP_BARRIER:
@@ -1099,6 +1100,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                {
                        default:
                                DE_FATAL("Unhandled op type!");
+                               break;
                        case OPTYPE_SUBGROUP_BARRIER:
                        case OPTYPE_SUBGROUP_MEMORY_BARRIER:
                        case OPTYPE_SUBGROUP_MEMORY_BARRIER_BUFFER:
@@ -1590,6 +1592,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                {
                        default:
                                DE_FATAL("Unhandled op type!");
+                               break;
                        case OPTYPE_SUBGROUP_BARRIER:
                        case OPTYPE_SUBGROUP_MEMORY_BARRIER:
                        case OPTYPE_SUBGROUP_MEMORY_BARRIER_BUFFER:
index 0ebfbec..d46c78a 100644 (file)
@@ -124,6 +124,7 @@ std::string getOpTypeName(int opType)
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_CLUSTERED_ADD:
                        return "subgroupClusteredAdd";
                case OPTYPE_CLUSTERED_MUL:
@@ -147,6 +148,7 @@ std::string getOpTypeOperation(int opType, vk::VkFormat format, std::string lhs,
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_CLUSTERED_ADD:
                        return lhs + " + " + rhs;
                case OPTYPE_CLUSTERED_MUL:
@@ -238,6 +240,7 @@ std::string getIdentity(int opType, vk::VkFormat format)
        {
                default:
                        DE_FATAL("Unhandled format!");
+                       break;
                case VK_FORMAT_R32_SINT:
                case VK_FORMAT_R32G32_SINT:
                case VK_FORMAT_R32G32B32_SINT:
@@ -271,6 +274,7 @@ std::string getIdentity(int opType, vk::VkFormat format)
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_CLUSTERED_ADD:
                        return subgroups::getFormatNameForGLSL(format) + "(0)";
                case OPTYPE_CLUSTERED_MUL:
@@ -291,6 +295,7 @@ std::string getIdentity(int opType, vk::VkFormat format)
                        else
                        {
                                DE_FATAL("Unhandled case");
+                               return "";
                        }
                case OPTYPE_CLUSTERED_MAX:
                        if (isFloat)
@@ -308,6 +313,7 @@ std::string getIdentity(int opType, vk::VkFormat format)
                        else
                        {
                                DE_FATAL("Unhandled case");
+                               return "";
                        }
                case OPTYPE_CLUSTERED_AND:
                        return subgroups::getFormatNameForGLSL(format) + "(~0)";
index e84d67c..bcb408f 100644 (file)
@@ -121,6 +121,7 @@ std::string getOpTypeName(int opType)
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_QUAD_BROADCAST:
                        return "subgroupQuadBroadcast";
                case OPTYPE_QUAD_SWAP_HORIZONTAL:
index 5d72948..bb3195e 100644 (file)
@@ -118,6 +118,7 @@ std::string getOpTypeName(int opType)
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_CLUSTERED:
                        return "clustered";
                case OPTYPE_QUAD:
index 4f671f7..57d5b95 100644 (file)
@@ -121,6 +121,7 @@ std::string getOpTypeName(int opType)
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_SHUFFLE:
                        return "subgroupShuffle";
                case OPTYPE_SHUFFLE_XOR:
index 6ab0744..25ca912 100644 (file)
@@ -43,6 +43,7 @@ deUint32 getFormatSizeInBytes(const VkFormat format)
        {
                default:
                        DE_FATAL("Unhandled format!");
+                       return 0;
                case VK_FORMAT_R32_SINT:
                case VK_FORMAT_R32_UINT:
                        return sizeof(deInt32);
@@ -734,6 +735,7 @@ std::string vkt::subgroups::getShaderStageName(VkShaderStageFlags stage)
        {
                default:
                        DE_FATAL("Unhandled stage!");
+                       return "";
                case VK_SHADER_STAGE_COMPUTE_BIT:
                        return "compute";
                case VK_SHADER_STAGE_FRAGMENT_BIT:
@@ -755,6 +757,7 @@ std::string vkt::subgroups::getSubgroupFeatureName(vk::VkSubgroupFeatureFlagBits
        {
                default:
                        DE_FATAL("Unknown subgroup feature category!");
+                       return "";
                case VK_SUBGROUP_FEATURE_BASIC_BIT:
                        return "VK_SUBGROUP_FEATURE_BASIC_BIT";
                case VK_SUBGROUP_FEATURE_VOTE_BIT:
@@ -1034,6 +1037,7 @@ std::string vkt::subgroups::getVertShaderForStage(vk::VkShaderStageFlags stage)
        {
                default:
                        DE_FATAL("Unhandled stage!");
+                       return "";
                case VK_SHADER_STAGE_FRAGMENT_BIT:
                        return
                                "#version 450\n"
@@ -1149,6 +1153,7 @@ std::string vkt::subgroups::getFormatNameForGLSL (VkFormat format)
        {
                default:
                        DE_FATAL("Unhandled format!");
+                       return "";
                case VK_FORMAT_R32_SINT:
                        return "int";
                case VK_FORMAT_R32G32_SINT:
@@ -1505,6 +1510,7 @@ void initializeMemory(Context& context, const Allocation& alloc, subgroups::SSBO
                {
                        default:
                                DE_FATAL("Illegal buffer format");
+                               break;
                        case VK_FORMAT_R8_USCALED:
                        case VK_FORMAT_R8G8_USCALED:
                        case VK_FORMAT_R8G8B8_USCALED:
index eb032a1..1e213be 100644 (file)
@@ -200,6 +200,7 @@ std::string getOpTypeName(int opType)
        {
                default:
                        DE_FATAL("Unsupported op type");
+                       return "";
                case OPTYPE_ALL:
                        return "subgroupAll";
                case OPTYPE_ANY:
index 9e2a16e..b3268c4 100644 (file)
@@ -76,6 +76,8 @@ VkFormat getPlaneCompatibleFormat (VkFormat multiPlanarFormat, deUint32 planeNdx
                case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:
                        if (de::inRange(planeNdx, 0u, 2u))
                                return VK_FORMAT_R8_UNORM;
+                       else
+                               break;
 
                case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
                case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:
@@ -83,12 +85,16 @@ VkFormat getPlaneCompatibleFormat (VkFormat multiPlanarFormat, deUint32 planeNdx
                                return VK_FORMAT_R8_UNORM;
                        else if (planeNdx == 1)
                                return VK_FORMAT_R8G8_UNORM;
+                       else
+                               break;
 
                case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:
                case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:
                case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:
                        if (de::inRange(planeNdx, 0u, 2u))
                                return VK_FORMAT_R10X6_UNORM_PACK16;
+                       else
+                               break;
 
                case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
                case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:
@@ -96,12 +102,16 @@ VkFormat getPlaneCompatibleFormat (VkFormat multiPlanarFormat, deUint32 planeNdx
                                return VK_FORMAT_R10X6_UNORM_PACK16;
                        else if (planeNdx == 1)
                                return VK_FORMAT_R10X6G10X6_UNORM_2PACK16;
+                       else
+                               break;
 
                case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:
                case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:
                case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:
                        if (de::inRange(planeNdx, 0u, 2u))
                                return VK_FORMAT_R12X4_UNORM_PACK16;
+                       else
+                               break;
 
                case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:
                case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:
@@ -109,12 +119,16 @@ VkFormat getPlaneCompatibleFormat (VkFormat multiPlanarFormat, deUint32 planeNdx
                                return VK_FORMAT_R12X4_UNORM_PACK16;
                        else if (planeNdx == 1)
                                return VK_FORMAT_R12X4G12X4_UNORM_2PACK16;
+                       else
+                               break;
 
                case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:
                case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:
                case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:
                        if (de::inRange(planeNdx, 0u, 2u))
                                return VK_FORMAT_R16_UNORM;
+                       else
+                               break;
 
                case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:
                case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:
@@ -122,11 +136,15 @@ VkFormat getPlaneCompatibleFormat (VkFormat multiPlanarFormat, deUint32 planeNdx
                                return VK_FORMAT_R16_UNORM;
                        else if (planeNdx == 1)
                                return VK_FORMAT_R16G16_UNORM;
+                       else
+                               break;
 
                default:
-                       DE_FATAL("Invalid format and plane index combination");
-                       return VK_FORMAT_UNDEFINED;
+                       break;
        }
+
+       DE_FATAL("Invalid format and plane index combination");
+       return VK_FORMAT_UNDEFINED;
 }
 
 Move<VkImage> createTestImage (const DeviceInterface&  vkd,
index 9d4e016..0cf7b26 100644 (file)
@@ -280992,6 +280992,30 @@ dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.512_256
 dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.128_128_8
 dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.503_137_3
 dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.11_37_3
 dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.512_256_1
 dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.128_128_1
 dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.503_137_1
index 4358edf..5b47fb3 100644 (file)
@@ -280953,6 +280953,30 @@ dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.512_256
 dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.128_128_8
 dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.503_137_3
 dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.11_37_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.256_256_16
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.128_128_8
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.503_137_3
+dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.11_37_3
 dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.512_256_1
 dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.128_128_1
 dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.503_137_1
index 03a2798..096b8b9 100644 (file)
@@ -595,12 +595,20 @@ void decodeISETritBlock (ISEDecodedResult* dst, int numValues, BitAccessStream&
 
        switch (numValues)
        {
-               // \note Fall-throughs.
-               case 1: T23             = 0;
-               case 2: T4              = 0;
-               case 3: T56             = 0;
-               case 4: T7              = 0;
-               case 5: break;
+               case 1:
+                       T23     = 0;
+               // Fallthrough
+               case 2:
+                       T4      = 0;
+               // Fallthrough
+               case 3:
+                       T56     = 0;
+               // Fallthrough
+               case 4:
+                       T7      = 0;
+               // Fallthrough
+               case 5:
+                       break;
                default:
                        DE_ASSERT(false);
        }
@@ -652,10 +660,14 @@ void decodeISEQuintBlock (ISEDecodedResult* dst, int numValues, BitAccessStream&
 
        switch (numValues)
        {
-               // \note Fall-throughs.
-               case 1: Q34             = 0;
-               case 2: Q56             = 0;
-               case 3: break;
+               case 1:
+                       Q34     = 0;
+               // Fallthrough
+               case 2:
+                       Q56     = 0;
+               // Fallthrough
+               case 3:
+                       break;
                default:
                        DE_ASSERT(false);
        }
index 9c0a308..1294728 100644 (file)
@@ -67,7 +67,7 @@ EGLint apiRenderableType (glu::ApiType apiType)
                                case 1:         return EGL_OPENGL_ES_BIT;
                                case 2:         return EGL_OPENGL_ES2_BIT;
                                case 3:         return EGL_OPENGL_ES3_BIT_KHR;
-                               default:        DE_FATAL("Unknown OpenGL ES version");
+                               default:        DE_FATAL("Unknown OpenGL ES version"); break;
                        }
                default:
                        DE_FATAL("Unknown GL API");
index 47f5de0..fd1b2e0 100644 (file)
@@ -665,6 +665,7 @@ GlxDrawable* createDrawable (GlxVisual& visual, const RenderConfig& config)
        {
                case RenderConfig::SURFACETYPE_DONT_CARE:
                        DE_FATAL("Impossible case");
+                       break;
 
                case RenderConfig::SURFACETYPE_WINDOW:
                        return new GlxWindow(visual, config);
index 796cad0..f07592f 100644 (file)
@@ -314,6 +314,7 @@ void readFloat (tcu::Vec4& dst, const VertexAttribType type, const int size, con
                case VERTEXATTRIBTYPE_PURE_INT16:
                case VERTEXATTRIBTYPE_PURE_INT32:
                        DE_FATAL("Invalid read");
+                       break;
 
                default:
                        DE_ASSERT(false);
@@ -360,6 +361,7 @@ void readInt (tcu::IVec4& dst, const VertexAttribType type, const int size, cons
                case VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_CLAMP_BGRA:
                case VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_SCALE_BGRA:
                        DE_FATAL("Invalid read");
+                       break;
 
                default:
                        DE_ASSERT(false);
@@ -406,6 +408,7 @@ void readUint (tcu::UVec4& dst, const VertexAttribType type, const int size, con
                case VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_CLAMP_BGRA:
                case VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_SCALE_BGRA:
                        DE_FATAL("Invalid read");
+                       break;
 
                default:
                        DE_ASSERT(false);
index bf83b39..c1e1a34 100644 (file)
@@ -173,6 +173,7 @@ static std::vector<std::string> getEnablingExtensions (deUint32 format)
                case GL_RG16F:
                case GL_R16F:
                        out.push_back("GL_EXT_color_buffer_half_float");
+               // Fallthrough
 
                case GL_RGBA32F:
                case GL_RGB32F:
@@ -180,6 +181,7 @@ static std::vector<std::string> getEnablingExtensions (deUint32 format)
                case GL_RG32F:
                case GL_R32F:
                        out.push_back("GL_EXT_color_buffer_float");
+                       break;
 
                default:
                        break;
index 4276c63..c1880ea 100644 (file)
@@ -228,6 +228,7 @@ static std::vector<std::string> getEnablingExtensions (deUint32 format, glu::Ren
                case GL_RG16F:
                case GL_R16F:
                        out.push_back("GL_EXT_color_buffer_half_float");
+               // Fallthrough
 
                case GL_RGBA32F:
                case GL_RGB32F:
@@ -236,6 +237,7 @@ static std::vector<std::string> getEnablingExtensions (deUint32 format, glu::Ren
                case GL_R32F:
                        if (!isES32)
                                out.push_back("GL_EXT_color_buffer_float");
+                       break;
 
                default:
                        break;
index c9b0c69..c8a0d86 100644 (file)
@@ -217,6 +217,7 @@ static std::vector<std::string> getEnablingExtensions (deUint32 format, glu::Ren
                case GL_RG16F:
                case GL_R16F:
                        out.push_back("GL_EXT_color_buffer_half_float");
+               // Fallthrough
 
                case GL_RGBA32F:
                case GL_RGB32F:
index 56228fb..8fc7095 100644 (file)
@@ -4638,11 +4638,20 @@ void PrecisionCase::testStatement (const Variables<In, Out>&    variables,
 
        switch (inCount)
        {
-               case 4: DE_ASSERT(inputs.in3.size() == numValues);
-               case 3: DE_ASSERT(inputs.in2.size() == numValues);
-               case 2: DE_ASSERT(inputs.in1.size() == numValues);
-               case 1: DE_ASSERT(inputs.in0.size() == numValues);
-               default: break;
+               case 4:
+                       DE_ASSERT(inputs.in3.size() == numValues);
+               // Fallthrough
+               case 3:
+                       DE_ASSERT(inputs.in2.size() == numValues);
+               // Fallthrough
+               case 2:
+                       DE_ASSERT(inputs.in1.size() == numValues);
+               // Fallthrough
+               case 1:
+                       DE_ASSERT(inputs.in0.size() == numValues);
+               // Fallthrough
+               default:
+                       break;
        }
 
        // Print out the statement and its definitions
@@ -4677,18 +4686,27 @@ void PrecisionCase::testStatement (const Variables<In, Out>&    variables,
 
        switch (inCount)
        {
-               case 4: spec.inputs[3] = makeSymbol(*variables.in3);
-               case 3: spec.inputs[2] = makeSymbol(*variables.in2);
-               case 2: spec.inputs[1] = makeSymbol(*variables.in1);
-               case 1: spec.inputs[0] = makeSymbol(*variables.in0);
-               default: break;
+               case 4:
+                       spec.inputs[3] = makeSymbol(*variables.in3);
+               // Fallthrough
+               case 3:
+                       spec.inputs[2] = makeSymbol(*variables.in2);
+               // Fallthrough
+               case 2:
+                       spec.inputs[1] = makeSymbol(*variables.in1);
+               // Fallthrough
+               case 1:
+                       spec.inputs[0] = makeSymbol(*variables.in0);
+               // Fallthrough
+               default:
+                       break;
        }
 
        spec.outputs.resize(outCount);
 
        switch (outCount)
        {
-               case 2: spec.outputs[1] = makeSymbol(*variables.out1);
+               case 2: spec.outputs[1] = makeSymbol(*variables.out1);  // Fallthrough
                case 1: spec.outputs[0] = makeSymbol(*variables.out0);
                default: break;
        }
@@ -4776,6 +4794,7 @@ void PrecisionCase::testStatement (const Variables<In, Out>&      variables,
                                        failStr = "Fail";
                                        result = false;
                                }
+                       // Fallthrough
 
                        case 1:
                                reference0      = convert<Out0>(highpFmt, env.lookup(*variables.out0));