Blacklist match_different_[member_]struct_names SSO validation tests.
authorKenneth Graunke <kenneth.w.graunke@intel.com>
Wed, 21 Dec 2016 22:48:31 +0000 (22:48 +0000)
committerandroid-build-merger <android-build-merger@google.com>
Wed, 21 Dec 2016 22:48:31 +0000 (22:48 +0000)
am: b81edb4477

Change-Id: Id2c34f0ccfae0c3b2f904d0539e0bc35a3979a18

18 files changed:
android/scripts/common.py
external/fetch_sources.py
external/glslang/CMakeLists.txt
external/vulkancts/data/vulkan/draw/VertexFetch.vert
external/vulkancts/data/vulkan/draw/VertexFetchInstanced.vert
external/vulkancts/data/vulkan/draw/VertexFetchInstancedFirstInstance.vert
external/vulkancts/data/vulkan/dynamic_state/VertexFetch.vert
external/vulkancts/data/vulkan/dynamic_state/ViewportArray.geom
external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineCacheTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineEarlyFragmentTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelinePushConstantTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineTimestampTests.cpp
external/vulkancts/modules/vulkan/query_pool/vktQueryPoolOcclusionTests.cpp
external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutCase.cpp
external/vulkancts/modules/vulkan/ubo/vktUniformBlockCase.cpp
modules/gles31/functional/es31fTessellationTests.cpp

index 16d899a..13fb1fd 100644 (file)
@@ -173,7 +173,7 @@ def getDevices (adb):
        if proc.returncode != 0:
                raise Exception("adb devices -l failed, got %d" % proc.returncode)
 
-       ptrn = re.compile(r'^([a-zA-Z0-9:]+)\s+.*product:([^\s]+)\s+model:([^\s]+)\s+device:([^\s]+)')
+       ptrn = re.compile(r'^([a-zA-Z0-9\.:]+)\s+.*product:([^\s]+)\s+model:([^\s]+)\s+device:([^\s]+)')
        devices = []
        for line in stdout.splitlines()[1:]:
                if len(line.strip()) == 0:
index 67024d5..5178350 100644 (file)
@@ -174,7 +174,7 @@ PACKAGES = [
                "spirv-tools"),
        GitRepo(
                "https://github.com/KhronosGroup/glslang.git",
-               "5639f3aca5b75cbe5419a623eecf5e3794fab917",
+               "d02dc5d05ad1f63db8d37fda9928a4d59e3c132d",
                "glslang"),
 ]
 
index 7c040e3..3a7b96c 100644 (file)
@@ -29,46 +29,59 @@ if (EXISTS ${GLSLANG_ABS_PATH}/glslang/GenericCodeGen/CodeGen.cpp)
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent
                ${GLSLANG_ABS_PATH}/glslang/GenericCodeGen
                ${GLSLANG_ABS_PATH}/glslang/OSDependent
+               ${GLSLANG_ABS_PATH}/hlsl
                ${GLSLANG_ABS_PATH}/OGLCompilersDLL
                ${GLSLANG_ABS_PATH}/SPIRV
                )
 
        set(GLSLANG_SRCS
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/Constant.cpp
+               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/glslang_tab.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/InfoSink.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/Initialize.cpp
-               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/IntermTraverse.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/Intermediate.cpp
+               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/intermOut.cpp
+               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/IntermTraverse.cpp
+               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/limits.cpp
+               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/linkValidate.cpp
+               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/parseConst.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/ParseHelper.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/PoolAlloc.cpp
+               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/propagateNoContraction.cpp
+               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/reflection.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/RemoveTree.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/Scan.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/ShaderLang.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/SymbolTable.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/Versions.cpp
-               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/glslang_tab.cpp
-               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/intermOut.cpp
-               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/limits.cpp
-               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/linkValidate.cpp
-               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/parseConst.cpp
-               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/reflection.cpp
-               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/Pp.cpp
+
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/PpAtom.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/PpContext.cpp
+               ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/Pp.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/PpMemory.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/PpScanner.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/PpSymbols.cpp
                ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/PpTokens.cpp
+
                ${GLSLANG_ABS_PATH}/glslang/GenericCodeGen/CodeGen.cpp
                ${GLSLANG_ABS_PATH}/glslang/GenericCodeGen/Link.cpp
+
                ${GLSLANG_ABS_PATH}/OGLCompilersDLL/InitializeDll.cpp
 
+               ${GLSLANG_ABS_PATH}/hlsl/hlslGrammar.cpp
+               ${GLSLANG_ABS_PATH}/hlsl/hlslOpMap.cpp
+               ${GLSLANG_ABS_PATH}/hlsl/hlslParseables.cpp
+               ${GLSLANG_ABS_PATH}/hlsl/hlslParseHelper.cpp
+               ${GLSLANG_ABS_PATH}/hlsl/hlslScanContext.cpp
+               ${GLSLANG_ABS_PATH}/hlsl/hlslTokenStream.cpp
+
+               ${GLSLANG_ABS_PATH}/SPIRV/disassemble.cpp
+               ${GLSLANG_ABS_PATH}/SPIRV/doc.cpp
                ${GLSLANG_ABS_PATH}/SPIRV/GlslangToSpv.cpp
                ${GLSLANG_ABS_PATH}/SPIRV/InReadableOrder.cpp
+               ${GLSLANG_ABS_PATH}/SPIRV/Logger.cpp
                ${GLSLANG_ABS_PATH}/SPIRV/SpvBuilder.cpp
                ${GLSLANG_ABS_PATH}/SPIRV/SPVRemapper.cpp
-               ${GLSLANG_ABS_PATH}/SPIRV/doc.cpp
-               ${GLSLANG_ABS_PATH}/SPIRV/disassemble.cpp
 
                osinclude.cpp
                )
index 1730f5f..7f070f5 100644 (file)
@@ -5,6 +5,10 @@ layout(location = 1) in vec4 in_color;
 
 layout(location = 0) out vec4 out_color;
 
+out gl_PerVertex {
+    vec4 gl_Position;
+};
+
 void main() {
        gl_Position = in_position;
        out_color = in_color;
index e694f60..1576892 100644 (file)
@@ -5,6 +5,10 @@ layout(location = 1) in vec4 in_color;
 
 layout(location = 0) out vec4 out_color;
 
+out gl_PerVertex {
+    vec4 gl_Position;
+};
+
 void main() {
        vec2 perVertex = vec2(in_position.x, in_position.y);
        vec2 perInstance[6]     = vec2[6](vec2(0.0, 0.0), vec2(0.3, 0.0), vec2(0.0, -0.3),vec2(0.3, -0.3), vec2(0.7, -0.7), vec2(-0.75, 0.8));
index 2e76fe9..f3e4a1a 100644 (file)
@@ -5,6 +5,10 @@ layout(location = 1) in vec4 in_color;
 
 layout(location = 0) out vec4 out_color;
 
+out gl_PerVertex {
+    vec4 gl_Position;
+};
+
 void main() {
        vec2 perVertex = vec2(in_position.x, in_position.y);
        vec2 perInstance[6]     = vec2[6](vec2(0.7, -0.7), vec2(-0.75, 0.8), vec2(0.0, 0.0), vec2(0.3, 0.0), vec2(0.0, -0.3),vec2(0.3, -0.3) );
index 2b97bd9..2387227 100644 (file)
@@ -1,10 +1,11 @@
-#version 310 es
+#version 450
 precision highp float;
 
 layout(location = 0) in vec4 in_position;
 layout(location = 1) in vec4 in_color;
 
 layout(location = 0) out vec4 out_color;
+out gl_PerVertex { vec4 gl_Position; };
 
 void main() {
        gl_Position = in_position;
index ebf6821..eb3c3f2 100644 (file)
@@ -1,7 +1,9 @@
-#version 430
+#version 450
 layout(triangles) in;
 layout(triangle_strip, max_vertices = 3) out;
 
+in gl_PerVertex { vec4 gl_Position; } gl_in[];
+out gl_PerVertex { vec4 gl_Position; };
 layout(location = 0) in vec4 in_color[];
 layout(location = 0) out vec4 out_color;
 
index 4863d05..498a53a 100644 (file)
@@ -1885,28 +1885,12 @@ tcu::TestStatus imageFormatProperties (Context& context, ImageFormatPropertyCase
                                results.check(imageType != VK_IMAGE_TYPE_3D || (properties.maxExtent.width >= 1 && properties.maxExtent.height >= 1 && properties.maxExtent.depth >= 1), "Invalid dimensions for 3D image");
                                results.check(imageType != VK_IMAGE_TYPE_3D || properties.maxArrayLayers == 1, "Invalid maxArrayLayers for 3D image");
 
-                               if (tiling == VK_IMAGE_TILING_OPTIMAL)
+                               if (tiling == VK_IMAGE_TILING_OPTIMAL && imageType == VK_IMAGE_TYPE_2D && !(curCreateFlags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) &&
+                                        ((supportedFeatures & (VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)) ||
+                                        ((supportedFeatures & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) && deviceFeatures.shaderStorageImageMultisample)))
                                {
-                                       // Vulkan API specification has changed since initial Android Nougat release.
-                                       // For NYC CTS we need to tolerate old behavior as well and issue compatibility
-                                       // warning instead.
-                                       //
-                                       // See spec issues 272, 282, 302, 445 and CTS issues 369, 440.
-                                       const bool      requiredByNewSpec       = (imageType == VK_IMAGE_TYPE_2D && !(curCreateFlags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) &&
-                                                                                                         ((supportedFeatures & (VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)) ||
-                                                                                                         ((supportedFeatures & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) && deviceFeatures.shaderStorageImageMultisample)));
-
-                                       if (requiredByNewSpec)
-                                       {
-                                               const VkSampleCountFlags        requiredSampleCounts    = getRequiredOptimalTilingSampleCounts(deviceLimits, format, curUsageFlags);
-
-                                               results.check((properties.sampleCounts & requiredSampleCounts) == requiredSampleCounts, "Required sample counts not supported");
-                                       }
-                                       else if (properties.sampleCounts != VK_SAMPLE_COUNT_1_BIT)
-                                       {
-                                               results.addResult(QP_TEST_RESULT_COMPATIBILITY_WARNING,
-                                                                             "Implementation supports more sample counts than allowed by the spec");
-                                       }
+                                       const VkSampleCountFlags        requiredSampleCounts    = getRequiredOptimalTilingSampleCounts(deviceLimits, format, curUsageFlags);
+                                       results.check((properties.sampleCounts & requiredSampleCounts) == requiredSampleCounts, "Required sample counts not supported");
                                }
                                else
                                        results.check(properties.sampleCounts == VK_SAMPLE_COUNT_1_BIT, "sampleCounts != VK_SAMPLE_COUNT_1_BIT");
index 270f2fb..8cf3d92 100644 (file)
@@ -75,6 +75,43 @@ static const char* const s_quadrantGenVertexPosSource =      "       highp int quadPhase =
                                                                                                                "       quadrant_id = gl_VertexIndex / 6;\n"
                                                                                                                "       result_position = vec4(float(quadOriginX + quadXcoord - 1), float(quadOriginY + quadYcoord - 1), 0.0, 1.0);\n";
 
+std::string genPerVertexBlock (const vk::VkShaderStageFlagBits stage, const glu::GLSLVersion version)
+{
+       static const char* const block = "gl_PerVertex {\n"
+                                                                        "    vec4  gl_Position;\n"
+                                                                        "    float gl_PointSize;\n"    // not used, but for compatibility with how implicit block is declared in ES
+                                                                        "}";
+       std::ostringstream str;
+
+       if (!glu::glslVersionIsES(version))
+               switch (stage)
+               {
+                       case vk::VK_SHADER_STAGE_VERTEX_BIT:
+                               str << "out " << block << ";\n";
+                               break;
+
+                       case vk::VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT:
+                               str << "in " << block << " gl_in[gl_MaxPatchVertices];\n"
+                                       << "out " << block << " gl_out[];\n";
+                               break;
+
+                       case vk::VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT:
+                               str << "in " << block << " gl_in[gl_MaxPatchVertices];\n"
+                                       << "out " << block << ";\n";
+                               break;
+
+                       case vk::VK_SHADER_STAGE_GEOMETRY_BIT:
+                               str << "in " << block << " gl_in[];\n"
+                                       << "out " << block << ";\n";
+                               break;
+
+                       default:
+                               break;
+               }
+
+       return str.str();
+}
+
 bool isUniformDescriptorType (vk::VkDescriptorType type)
 {
        return type == vk::VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER ||
@@ -2247,6 +2284,7 @@ std::string QuadrantRendederCase::genVertexSource (void) const
                        << genResourceDeclarations(vk::VK_SHADER_STAGE_VERTEX_BIT, 0)
                        << "layout(location = 0) out highp vec4 " << nextStageName << "_color;\n"
                        << (onlyVS ? "" : "layout(location = 1) flat out highp int " + de::toString(nextStageName) + "_quadrant_id;\n")
+                       << genPerVertexBlock(vk::VK_SHADER_STAGE_VERTEX_BIT, m_glslVersion)
                        << "void main (void)\n"
                        << "{\n"
                        << "    highp vec4 result_position;\n"
@@ -2266,6 +2304,7 @@ std::string QuadrantRendederCase::genVertexSource (void) const
                buf << versionDecl << "\n"
                        << genExtensionDeclarations(vk::VK_SHADER_STAGE_VERTEX_BIT)
                        << "layout(location = 1) flat out highp int " << nextStageName << "_quadrant_id;\n"
+                       << genPerVertexBlock(vk::VK_SHADER_STAGE_VERTEX_BIT, m_glslVersion)
                        << "void main (void)\n"
                        << "{\n"
                        << "    highp vec4 result_position;\n"
@@ -2299,6 +2338,7 @@ std::string QuadrantRendederCase::genTessCtrlSource (void) const
                        << genResourceDeclarations(vk::VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, 0)
                        << "layout(location = 1) flat in highp int tsc_quadrant_id[];\n"
                        << "layout(location = 0) out highp vec4 tes_color[];\n"
+                       << genPerVertexBlock(vk::VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, m_glslVersion)
                        << "void main (void)\n"
                        << "{\n"
                        << "    highp vec4 result_color;\n"
@@ -2332,6 +2372,7 @@ std::string QuadrantRendederCase::genTessCtrlSource (void) const
                        << "layout(vertices=3) out;\n"
                        << "layout(location = 1) flat in highp int tsc_quadrant_id[];\n"
                        << "layout(location = 1) flat out highp int tes_quadrant_id[];\n"
+                       << genPerVertexBlock(vk::VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, m_glslVersion)
                        << "void main (void)\n"
                        << "{\n"
                        << "    tes_quadrant_id[gl_InvocationID] = tsc_quadrant_id[0];\n"
@@ -2382,6 +2423,7 @@ std::string QuadrantRendederCase::genTessEvalSource (void) const
                        << genResourceDeclarations(vk::VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, 0)
                        << "layout(location = 1) flat in highp int tes_quadrant_id[];\n"
                        << "layout(location = 0) out highp vec4 frag_color;\n"
+                       << genPerVertexBlock(vk::VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, m_glslVersion)
                        << "void main (void)\n"
                        << "{\n"
                        << "    highp vec4 result_color;\n"
@@ -2403,6 +2445,7 @@ std::string QuadrantRendederCase::genTessEvalSource (void) const
                        << "layout(triangles) in;\n"
                        << "layout(location = 0) in highp vec4 tes_color[];\n"
                        << "layout(location = 0) out highp vec4 frag_color;\n"
+                       << genPerVertexBlock(vk::VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, m_glslVersion)
                        << "void main (void)\n"
                        << "{\n"
                        << "    frag_color = tes_color[0];\n"
@@ -2439,6 +2482,7 @@ std::string QuadrantRendederCase::genGeometrySource (void) const
                        << genResourceDeclarations(vk::VK_SHADER_STAGE_GEOMETRY_BIT, 0)
                        << "layout(location = 1) flat in highp int geo_quadrant_id[];\n"
                        << "layout(location = 0) out highp vec4 frag_color;\n"
+                       << genPerVertexBlock(vk::VK_SHADER_STAGE_GEOMETRY_BIT, m_glslVersion)
                        << "void main (void)\n"
                        << "{\n"
                        << "    highp int quadrant_id;\n"
index 07338fa..642ae95 100644 (file)
@@ -397,23 +397,20 @@ Move<VkPipeline> SimpleGraphicsPipelineBuilder::buildPipeline (tcu::UVec2 render
                        0u,                     // deUint32     writeMask;
                        0u,                     // deUint32     reference;
                },
-               -1.0f,                                                      // float                                    minDepthBounds;
-               +1.0f,                                                      // float                                    maxDepthBounds;
+               0.0f,                                                      // float                                    minDepthBounds;
+               1.0f,                                                      // float                                    maxDepthBounds;
        };
 
-       const VkPipelineTessellationStateCreateInfo* pTessCreateInfo = DE_NULL;
-       if (m_patchControlPoints > 0)
+       const VkPipelineTessellationStateCreateInfo tessStateCreateInfo =
        {
-               const VkPipelineTessellationStateCreateInfo tessStateCreateInfo =
-               {
-                       VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,  // VkStructureType                          sType;
-                       DE_NULL,                                                    // const void*                              pNext;
-                       0u,                                                         // VkPipelineTesselationStateCreateFlags    flags;
-                       m_patchControlPoints,                                       // deUint32                                 patchControlPoints;
-               };
-
-               pTessCreateInfo = &tessStateCreateInfo;
-       }
+               VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,  // VkStructureType                          sType;
+               DE_NULL,                                                    // const void*                              pNext;
+               0u,                                                         // VkPipelineTesselationStateCreateFlags    flags;
+               m_patchControlPoints,                                       // deUint32                                 patchControlPoints;
+       };
+       const VkPipelineTessellationStateCreateInfo* pTessCreateInfo = (m_patchControlPoints > 0)
+                                                                                                                                 ? &tessStateCreateInfo
+                                                                                                                                 : DE_NULL;
 
        const VkGraphicsPipelineCreateInfo graphicsPipelineParams =
        {
@@ -696,6 +693,7 @@ protected:
        de::MovePtr<Allocation>             m_depthImageAlloc;
        de::MovePtr<Allocation>             m_colorImageAlloc[PIPELINE_CACHE_NDX_COUNT];
        Move<VkImageView>                   m_depthAttachmentView;
+       VkImageMemoryBarrier                            m_imageLayoutBarriers[3];
 
        Move<VkBuffer>                      m_vertexBuffer;
        de::MovePtr<Allocation>                         m_vertexBufferMemory;
@@ -743,13 +741,18 @@ void GraphicsCacheTest::initPrograms (SourceCollections& programCollection) cons
                        case VK_SHADER_STAGE_GEOMETRY_BIT:
                                programCollection.glslSources.add("dummy_geo") << glu::GeometrySource(
                                        "#version 450 \n"
-                                       "layout (triangles) in;\n"
-                                       "layout (triangle_strip, max_vertices = 3) out;\n"
+                                       "layout(triangles) in;\n"
+                                       "layout(triangle_strip, max_vertices = 3) out;\n"
+                                       "layout(location = 0) in highp vec4 in_vtxColor[];\n"
+                                       "layout(location = 0) out highp vec4 vtxColor;\n"
+                                       "out gl_PerVertex { vec4 gl_Position; };\n"
+                                       "in gl_PerVertex { vec4 gl_Position; } gl_in[];\n"
                                        "void main (void)\n"
                                        "{\n"
                                        "  for(int ndx=0; ndx<3; ndx++)\n"
                                        "  {\n"
                                        "    gl_Position = gl_in[ndx].gl_Position;\n"
+                                       "    vtxColor    = in_vtxColor[ndx];\n"
                                        "    EmitVertex();\n"
                                        "  }\n"
                                        "  EndPrimitive();\n"
@@ -762,6 +765,8 @@ void GraphicsCacheTest::initPrograms (SourceCollections& programCollection) cons
                                        "layout(vertices = 3) out;\n"
                                        "layout(location = 0) in highp vec4 color[];\n"
                                        "layout(location = 0) out highp vec4 vtxColor[];\n"
+                                       "out gl_PerVertex { vec4 gl_Position; } gl_out[3];\n"
+                                       "in gl_PerVertex { vec4 gl_Position; } gl_in[gl_MaxPatchVertices];\n"
                                        "void main()\n"
                                        "{\n"
                                        "  gl_TessLevelOuter[0] = 4.0;\n"
@@ -779,6 +784,8 @@ void GraphicsCacheTest::initPrograms (SourceCollections& programCollection) cons
                                        "layout(triangles, fractional_even_spacing, ccw) in;\n"
                                        "layout(location = 0) in highp vec4 colors[];\n"
                                        "layout(location = 0) out highp vec4 vtxColor;\n"
+                                       "out gl_PerVertex { vec4 gl_Position; };\n"
+                                       "in gl_PerVertex { vec4 gl_Position; } gl_in[gl_MaxPatchVertices];\n"
                                        "void main() \n"
                                        "{\n"
                                        "  float u = gl_TessCoord.x;\n"
@@ -843,7 +850,7 @@ GraphicsCacheTestInstance::GraphicsCacheTestInstance (Context&              cont
                        VK_ATTACHMENT_STORE_OP_STORE,                       // VkAttachmentStoreOp             storeOp;
                        VK_ATTACHMENT_LOAD_OP_DONT_CARE,                    // VkAttachmentLoadOp              stencilLoadOp;
                        VK_ATTACHMENT_STORE_OP_DONT_CARE,                   // VkAttachmentStoreOp             stencilStoreOp;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                          // VkImageLayout                   initialLayout;
+                       VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,           // VkImageLayout                   initialLayout;
                        VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,           // VkImageLayout                   finalLayout;
                };
 
@@ -856,7 +863,7 @@ GraphicsCacheTestInstance::GraphicsCacheTestInstance (Context&              cont
                        VK_ATTACHMENT_STORE_OP_DONT_CARE,                   // VkAttachmentStoreOp          storeOp;
                        VK_ATTACHMENT_LOAD_OP_DONT_CARE,                    // VkAttachmentLoadOp           stencilLoadOp;
                        VK_ATTACHMENT_STORE_OP_DONT_CARE,                   // VkAttachmentStoreOp          stencilStoreOp;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                          // VkImageLayout                initialLayout;
+                       VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,   // VkImageLayout                initialLayout;
                        VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,   // VkImageLayout                finalLayout;
                };
 
@@ -938,6 +945,43 @@ GraphicsCacheTestInstance::GraphicsCacheTestInstance (Context&              cont
                                                                                                  &m_depthImageAlloc);
        }
 
+       // Set up image layout transition barriers
+       {
+               VkImageMemoryBarrier colorImageBarrier =
+               {
+                       VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,                         // VkStructureType                      sType;
+                       DE_NULL,                                                                                        // const void*                          pNext;
+                       0u,                                                                                                     // VkAccessFlags                        srcAccessMask;
+                       VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                           // VkAccessFlags                        dstAccessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                                                      // VkImageLayout                        oldLayout;
+                       VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,                       // VkImageLayout                        newLayout;
+                       VK_QUEUE_FAMILY_IGNORED,                                                        // deUint32                                     srcQueueFamilyIndex;
+                       VK_QUEUE_FAMILY_IGNORED,                                                        // deUint32                                     dstQueueFamilyIndex;
+                       *m_colorImage[PIPELINE_CACHE_NDX_NO_CACHE],                     // VkImage                                      image;
+                       { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u },          // VkImageSubresourceRange      subresourceRange;
+               };
+
+               m_imageLayoutBarriers[0] = colorImageBarrier;
+
+               colorImageBarrier.image = *m_colorImage[PIPELINE_CACHE_NDX_CACHED];
+               m_imageLayoutBarriers[1] = colorImageBarrier;
+
+               const VkImageMemoryBarrier depthImageBarrier =
+               {
+                       VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,                         // VkStructureType                      sType;
+                       DE_NULL,                                                                                        // const void*                          pNext;
+                       0u,                                                                                                     // VkAccessFlags                        srcAccessMask;
+                       VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,           // VkAccessFlags                        dstAccessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                                                      // VkImageLayout                        oldLayout;
+                       VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,       // VkImageLayout                        newLayout;
+                       VK_QUEUE_FAMILY_IGNORED,                                                        // deUint32                                     srcQueueFamilyIndex;
+                       VK_QUEUE_FAMILY_IGNORED,                                                        // deUint32                                     dstQueueFamilyIndex;
+                       *m_depthImage,                                                                          // VkImage                                      image;
+                       { VK_IMAGE_ASPECT_DEPTH_BIT, 0u, 1u, 0u, 1u },          // VkImageSubresourceRange      subresourceRange;
+               };
+
+               m_imageLayoutBarriers[2] = depthImageBarrier;
+       }
        // Create color attachment view
        {
                VkImageViewCreateInfo colorAttachmentViewParams =
@@ -1105,8 +1149,13 @@ void GraphicsCacheTestInstance::prepareCommandBuffer (void)
 
        VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo));
 
+       vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, (VkDependencyFlags)0,
+               0u, DE_NULL, 0u, DE_NULL, DE_LENGTH_OF_ARRAY(m_imageLayoutBarriers), m_imageLayoutBarriers);
+
        prepareRenderPass(*m_framebuffer[PIPELINE_CACHE_NDX_NO_CACHE], *m_pipeline[PIPELINE_CACHE_NDX_NO_CACHE]);
 
+       // After the first render pass, the images are in correct layouts
+
        prepareRenderPass(*m_framebuffer[PIPELINE_CACHE_NDX_CACHED], *m_pipeline[PIPELINE_CACHE_NDX_CACHED]);
 
        VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer));
index b2731f5..c5fe5b1 100644 (file)
@@ -759,6 +759,10 @@ void EarlyFragmentTest::initPrograms (SourceCollections& programCollection) cons
                        << "\n"
                        << "layout(location = 0) in highp vec4 position;\n"
                        << "\n"
+                       << "out gl_PerVertex {\n"
+                       << "   vec4 gl_Position;\n"
+                       << "};\n"
+                       << "\n"
                        << "void main (void)\n"
                        << "{\n"
                        << "    gl_Position = position;\n"
index 1e3e967..fdd6fd2 100644 (file)
@@ -228,6 +228,7 @@ void PushConstantGraphicsTest::initPrograms (SourceCollections& sourceCollection
                                          << "layout(location = 0) in highp vec4 position;\n"
                                          << "layout(location = 1) in highp vec4 color;\n"
                                          << "layout(location = 0) out highp vec4 vtxColor;\n"
+                                         << "out gl_PerVertex { vec4 gl_Position; };\n"
                                          << "layout(push_constant) uniform Material {\n";
 
                        switch (getRangeSizeCase(m_pushConstantRange[rangeNdx].range.size))
@@ -314,6 +315,8 @@ void PushConstantGraphicsTest::initPrograms (SourceCollections& sourceCollection
                                                   << "} tessLevel;\n"
                                                   << "layout(location = 0) in highp vec4 color[];\n"
                                                   << "layout(location = 0) out highp vec4 vtxColor[];\n"
+                                                  << "in gl_PerVertex { vec4 gl_Position; } gl_in[gl_MaxPatchVertices];\n"
+                                                  << "out gl_PerVertex { vec4 gl_Position; } gl_out[];\n"
                                                   << "void main()\n"
                                                   << "{\n"
                                                   << "  gl_TessLevelInner[0] = tessLevel.level;\n"
@@ -336,6 +339,8 @@ void PushConstantGraphicsTest::initPrograms (SourceCollections& sourceCollection
                                                          << "} matInst;\n"
                                                          << "layout(location = 0) in highp vec4 color[];\n"
                                                          << "layout(location = 0) out highp vec4 vtxColor;\n"
+                                                         << "in gl_PerVertex { vec4 gl_Position; } gl_in[gl_MaxPatchVertices];\n"
+                                                         << "out gl_PerVertex { vec4 gl_Position; };\n"
                                                          << "void main()\n"
                                                          << "{\n"
                                                          << "  gl_Position = gl_TessCoord.x * gl_in[0].gl_Position + gl_TessCoord.y * gl_in[1].gl_Position + gl_TessCoord.z * gl_in[2].gl_Position;\n"
@@ -355,6 +360,8 @@ void PushConstantGraphicsTest::initPrograms (SourceCollections& sourceCollection
                                                << "} matInst;\n"
                                                << "layout(location = 0) in highp vec4 color[];\n"
                                                << "layout(location = 0) out highp vec4 vtxColor;\n"
+                                               << "in gl_PerVertex { vec4 gl_Position; } gl_in[];\n"
+                                               << "out gl_PerVertex { vec4 gl_Position; };\n"
                                                << "void main()\n"
                                                << "{\n"
                                                << "  for(int i=0; i<3; i++)\n"
index 744c84a..692367e 100644 (file)
@@ -1367,7 +1367,8 @@ void AdvGraphicsTest::initPrograms(SourceCollections& programCollection) const
        BasicGraphicsTest::initPrograms(programCollection);
 
        programCollection.glslSources.add("dummy_geo") << glu::GeometrySource(
-               "#version 450 \n"
+               "#version 310 es\n"
+               "#extension GL_EXT_geometry_shader : enable\n"
                "layout(triangles) in;\n"
                "layout(triangle_strip, max_vertices = 3) out;\n"
                "layout(location = 0) in highp vec4 in_vtxColor[];\n"
@@ -1384,7 +1385,8 @@ void AdvGraphicsTest::initPrograms(SourceCollections& programCollection) const
                "}\n");
 
        programCollection.glslSources.add("basic_tcs") << glu::TessellationControlSource(
-               "#version 450 \n"
+               "#version 310 es\n"
+               "#extension GL_EXT_tessellation_shader : enable\n"
                "layout(vertices = 3) out;\n"
                "layout(location = 0) in highp vec4 color[];\n"
                "layout(location = 0) out highp vec4 vtxColor[];\n"
@@ -1399,7 +1401,8 @@ void AdvGraphicsTest::initPrograms(SourceCollections& programCollection) const
                "}\n");
 
        programCollection.glslSources.add("basic_tes") << glu::TessellationEvaluationSource(
-               "#version 450 \n"
+               "#version 310 es\n"
+               "#extension GL_EXT_tessellation_shader : enable\n"
                "layout(triangles, fractional_even_spacing, ccw) in;\n"
                "layout(location = 0) in highp vec4 colors[];\n"
                "layout(location = 0) out highp vec4 vtxColor;\n"
index 22feecc..74a9742 100644 (file)
@@ -1005,9 +1005,10 @@ private:
                                                                                                                                           "}\n");
 
                programCollection.glslSources.add("vert") << glu::VertexSource("#version 430\n"
-                                                                                                                                                "layout(location = 0) in vec4 in_Postion;\n"
+                                                                                                                                                "layout(location = 0) in vec4 in_Position;\n"
+                                                                                                                                                "out gl_PerVertex { vec4 gl_Position; float gl_PointSize; };\n"
                                                                                                                                                 "void main() {\n"
-                                                                                                                                                "      gl_Position  = in_Postion;\n"
+                                                                                                                                                "      gl_Position  = in_Position;\n"
                                                                                                                                                 "      gl_PointSize = 1.0;\n"
                                                                                                                                                 "}\n");
        }
index ca02de0..f56c50b 100644 (file)
@@ -1201,7 +1201,7 @@ string generateComputeShader (const ShaderInterface& interface, const BufferLayo
 {
        std::ostringstream src;
 
-       src << "#version 450\n";
+       src << "#version 310 es\n";
        src << "layout(local_size_x = 1) in;\n";
        src << "\n";
 
index 35805fb..6dee37d 100644 (file)
@@ -1052,7 +1052,7 @@ void generateCompareSrc (std::ostringstream& src, const char* resultVar, const S
 std::string generateVertexShader (const ShaderInterface& interface, const UniformLayout& layout, const std::map<int, void*>& blockPointers)
 {
        std::ostringstream src;
-       src << "#version 450\n";
+       src << "#version 310 es\n";
 
        src << "layout(location = 0) in highp vec4 a_position;\n";
        src << "layout(location = 0) out mediump float v_vtxResult;\n";
@@ -1092,7 +1092,7 @@ std::string generateVertexShader (const ShaderInterface& interface, const Unifor
 std::string generateFragmentShader (const ShaderInterface& interface, const UniformLayout& layout, const std::map<int, void*>& blockPointers)
 {
        std::ostringstream src;
-       src << "#version 450\n";
+       src << "#version 310 es\n";
 
        src << "layout(location = 0) in mediump float v_vtxResult;\n";
        src << "layout(location = 0) out mediump vec4 dEQP_FragColor;\n";
index 22f09c2..e0434ea 100644 (file)
@@ -7230,7 +7230,7 @@ void TessellationTests::init (void)
                queryGroup->addChild(new LimitQueryCase(m_context, "max_tess_evaluation_texture_image_units",                   "Test MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS",                 GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS,             16));
                queryGroup->addChild(new LimitQueryCase(m_context, "max_tess_control_output_components",                                "Test MAX_TESS_CONTROL_OUTPUT_COMPONENTS",                              GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS,                  64));
                queryGroup->addChild(new LimitQueryCase(m_context, "max_tess_patch_components",                                                 "Test MAX_TESS_PATCH_COMPONENTS",                                               GL_MAX_TESS_PATCH_COMPONENTS,                                   120));
-               queryGroup->addChild(new LimitQueryCase(m_context, "max_tess_control_total_output_components",                  "Test MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS",                GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS,    4096));
+               queryGroup->addChild(new LimitQueryCase(m_context, "max_tess_control_total_output_components",                  "Test MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS",                GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS,    2048));
                queryGroup->addChild(new LimitQueryCase(m_context, "max_tess_evaluation_output_components",                             "Test MAX_TESS_EVALUATION_OUTPUT_COMPONENTS",                   GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS,               64));
                queryGroup->addChild(new LimitQueryCase(m_context, "max_tess_control_uniform_blocks",                                   "Test MAX_TESS_CONTROL_UNIFORM_BLOCKS",                                 GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS,                             12));
                queryGroup->addChild(new LimitQueryCase(m_context, "max_tess_evaluation_uniform_blocks",                                "Test MAX_TESS_EVALUATION_UNIFORM_BLOCKS",                              GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS,                  12));