diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 05ed38a..5e1039b 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -553,7 +553,7 @@
 TEST_F(VkRenderTest, VKTriangle_FragColor)
 {
     static const char *vertShaderText =
-        "#version 140\n"
+        "#version 400\n"
         "#extension GL_ARB_separate_shader_objects : enable\n"
         "#extension GL_ARB_shading_language_420pack : enable\n"
         "\n"
@@ -564,6 +564,9 @@
         "} ubuf;\n"
         "\n"
         "layout (location = 0) out vec4 outColor;\n"
+        "out gl_PerVertex {\n"
+        "    vec4 gl_Position;\n"
+        "};\n"
         "\n"
         "void main() \n"
         "{\n"
@@ -572,7 +575,7 @@
         "}\n";
 
     static const char *fragShaderText =
-        "#version 140\n"
+        "#version 400\n"
         "#extension GL_ARB_separate_shader_objects : enable\n"
         "#extension GL_ARB_shading_language_420pack : enable\n"
         "\n"
@@ -591,7 +594,7 @@
 TEST_F(VkRenderTest, VKTriangle_OutputLocation)
 {
     static const char *vertShaderText =
-        "#version 140\n"
+        "#version 400\n"
         "#extension GL_ARB_separate_shader_objects : enable\n"
         "#extension GL_ARB_shading_language_420pack : enable\n"
         "\n"
@@ -602,6 +605,9 @@
         "} ubuf;\n"
         "\n"
         "layout (location = 0) out vec4 outColor;\n"
+        "out gl_PerVertex {\n"
+        "    vec4 gl_Position;\n"
+        "};\n"
         "\n"
         "void main() \n"
         "{\n"
@@ -610,7 +616,7 @@
         "}\n";
 
     static const char *fragShaderText =
-        "#version 140\n"
+        "#version 400\n"
         "#extension GL_ARB_separate_shader_objects : enable\n"
         "#extension GL_ARB_shading_language_420pack : enable\n"
         "\n"
@@ -630,7 +636,7 @@
 TEST_F(VkRenderTest, SPV_VKTriangle)
 {
     static const char *vertShaderText =
-        "#version 140\n"
+        "#version 400\n"
         "#extension GL_ARB_separate_shader_objects : enable\n"
         "#extension GL_ARB_shading_language_420pack : enable\n"
         "\n"
@@ -641,6 +647,9 @@
         "} ubuf;\n"
         "\n"
         "layout (location = 0) out vec4 outColor;\n"
+        "out gl_PerVertex {\n"
+        "    vec4 gl_Position;\n"
+        "};\n"
         "\n"
         "void main() \n"
         "{\n"
@@ -649,7 +658,7 @@
         "}\n";
 
     static const char *fragShaderText =
-        "#version 140\n"
+        "#version 400\n"
         "#extension GL_ARB_separate_shader_objects : enable\n"
         "#extension GL_ARB_shading_language_420pack : enable\n"
         "\n"
@@ -669,8 +678,13 @@
 TEST_F(VkRenderTest, SPV_GreenTriangle)
 {
     static const char *vertShaderText =
-            "#version 130\n"
+            "#version 400\n"
+            "#extension GL_ARB_separate_shader_objects : enable\n"
+            "#extension GL_ARB_shading_language_420pack : enable\n"
             "vec2 vertices[3];\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "      vertices[0] = vec2(-1.0, -1.0);\n"
             "      vertices[1] = vec2( 1.0, -1.0);\n"
@@ -679,7 +693,7 @@
             "}\n";
 
     static const char *fragShaderText =
-       "#version 140\n"
+       "#version 400\n"
        "#extension GL_ARB_separate_shader_objects : enable\n"
        "#extension GL_ARB_shading_language_420pack : enable\n"
        "layout (location = 0) out vec4 outColor;\n"
@@ -695,7 +709,12 @@
 TEST_F(VkRenderTest, YellowTriangle)
 {
     static const char *vertShaderText =
-            "#version 130\n"
+            "#version 400\n"
+            "#extension GL_ARB_separate_shader_objects : enable\n"
+            "#extension GL_ARB_shading_language_420pack : enable\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -709,7 +728,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) out vec4 outColor;\n"
@@ -723,7 +742,7 @@
 TEST_F(VkRenderTest, QuadWithVertexFetch)
 {
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             //XYZ1( -1, -1, -1 )
@@ -731,6 +750,9 @@
             //XYZ1( 0.f, 0.f, 0.f )
             "layout (location = 1) in vec4 inColor;\n"
             "layout (location = 0) out vec4 outColor;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   outColor = inColor;\n"
             "   gl_Position = pos;\n"
@@ -738,7 +760,7 @@
 
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 color;\n"
@@ -806,16 +828,19 @@
 TEST_F(VkRenderTest, TriangleMRT)
 {
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 pos;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   gl_Position = pos;\n"
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) out vec4 uFragData0;\n"
@@ -892,12 +917,15 @@
 TEST_F(VkRenderTest, QuadWithIndexedVertexFetch)
 {
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout(location = 0) in vec4 pos;\n"
             "layout(location = 1) in vec4 inColor;\n"
             "layout(location = 0) out vec4 outColor;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   outColor = inColor;\n"
             "   gl_Position = pos;\n"
@@ -905,7 +933,7 @@
 
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout(location = 0) in vec4 color;\n"
@@ -1001,12 +1029,15 @@
     // This tests gl_FragCoord
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 pos;\n"
             "layout (location = 0) out vec4 outColor;\n"
             "layout (location = 1) out vec4 outColor2;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   gl_Position = pos;\n"
             "   outColor = vec4(0.9, 0.9, 0.9, 1.0);\n"
@@ -1014,7 +1045,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 330\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             //"#extension GL_ARB_fragment_coord_conventions : enable\n"
@@ -1089,12 +1120,15 @@
     // This tests that we correctly handle unread fragment inputs
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 pos;\n"
             "layout (location = 0) out vec4 outColor;\n"
             "layout (location = 1) out vec4 outColor2;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   gl_Position = pos;\n"
             "   outColor = vec4(0.9, 0.9, 0.9, 1.0);\n"
@@ -1102,7 +1136,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 330\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             //"#extension GL_ARB_fragment_coord_conventions : enable\n"
@@ -1175,8 +1209,7 @@
     // This tests reading gl_ClipDistance from FS
 
     static const char *vertShaderText =
-            //"#version 140\n"
-            "#version 330\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "out gl_PerVertex {\n"
@@ -1199,8 +1232,7 @@
 
 
     static const char *fragShaderText =
-            "#version 140\n"
-            //"#version 330\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             //"#extension GL_ARB_fragment_coord_conventions : enable\n"
@@ -1273,12 +1305,15 @@
 TEST_F(VkRenderTest, GreyCirclesonBlueDiscard)
 {
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 pos;\n"
             "layout (location = 0) out vec4 outColor;\n"
             "layout (location = 1) out vec4 outColor2;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   gl_Position = pos;\n"
             "   outColor = vec4(0.9, 0.9, 0.9, 1.0);\n"
@@ -1287,7 +1322,7 @@
 
 
     static const char *fragShaderText =
-            "#version 330\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             //"#extension GL_ARB_fragment_coord_conventions : enable\n"
@@ -1363,13 +1398,16 @@
 TEST_F(VkRenderTest, TriangleVSUniform)
 {
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "\n"
             "layout(binding = 0) uniform buf {\n"
             "        mat4 MVP;\n"
             "} ubuf;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -1379,7 +1417,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) out vec4 outColor;\n"
@@ -1443,12 +1481,15 @@
     // and bar in the FS. The triangle should be blended with red, green and blue
     // corners.
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location=0) out vec4 bar;\n"
             "layout (location=1) out vec4 foo;\n"
             "layout (location=2) out float scale;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "vec2 vertices[3];\n"
             "void main() {\n"
             "      vertices[0] = vec2(-1.0, -1.0);\n"
@@ -1465,7 +1506,7 @@
             "}\n";
 
     static const char *fragShaderText =
-           "#version 140\n"
+           "#version 400\n"
            "#extension GL_ARB_separate_shader_objects : enable\n"
            "#extension GL_ARB_shading_language_420pack : enable\n"
            "layout (location = 1) in vec4 bar;\n"
@@ -1516,7 +1557,7 @@
     // This tests that attributes work in the presence of gl_VertexID
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             //XYZ1( -1, -1, -1 )
@@ -1524,6 +1565,9 @@
             //XYZ1( 0.f, 0.f, 0.f )
             "layout (location = 1) in vec4 inColor;\n"
             "layout (location = 0) out vec4 outColor;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   outColor = inColor;\n"
             "   vec4 vertices[3];"
@@ -1533,7 +1577,7 @@
 
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 color;\n"
@@ -1605,7 +1649,7 @@
     // This tests that attributes work in the presence of gl_VertexID
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             //XYZ1( -1, -1, -1 )
@@ -1613,6 +1657,9 @@
             "layout (location = 4) in vec4 inColor;\n"
             //XYZ1( 0.f, 0.f, 0.f )
             "layout (location = 0) out vec4 outColor;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   outColor = inColor;\n"
             "   gl_Position = pos;\n"
@@ -1620,7 +1667,7 @@
 
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 color;\n"
@@ -1710,7 +1757,7 @@
     // red and green corners, starting at top and going clockwise.
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             //XYZ1( -1, -1, -1 )
@@ -1718,6 +1765,9 @@
             //XYZ1( 0.f, 0.f, 0.f )
             "layout (location = 1) in vec4 inColor;\n"
             "layout (location = 0) out vec4 outColor;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   outColor = inColor;\n"
             "   vec2 vertices[3];"
@@ -1729,7 +1779,7 @@
 
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 color;\n"
@@ -1799,7 +1849,7 @@
 TEST_F(VkRenderTest, CubeWithVertexFetchAndMVP)
 {
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (std140, binding = 0) uniform bufferVals {\n"
@@ -1808,6 +1858,9 @@
             "layout (location = 0) in vec4 pos;\n"
             "layout (location = 1) in vec4 inColor;\n"
             "layout (location = 0) out vec4 outColor;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   outColor = inColor;\n"
             "   gl_Position = myBufferVals.mvp * pos;\n"
@@ -1816,7 +1869,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 color;\n"
@@ -1918,11 +1971,14 @@
     // The expected result from this test is a green and red triangle;
     // one red vertex on the left, two green vertices on the right.
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) out vec4 texColor;\n"
             "uniform sampler2D surface;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -1938,7 +1994,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 texColor;\n"
@@ -1989,10 +2045,13 @@
 {
     // The expected result from this test is a red and green checkered triangle
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) out vec2 samplePos;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -2007,7 +2066,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec2 samplePos;\n"
@@ -2056,7 +2115,7 @@
 {
     // The expected result from this test is a red and green checkered triangle
     static const char *vertShaderText =
-            "#version 330\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) out vec2 samplePos;\n"
@@ -2083,7 +2142,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec2 samplePos;\n"
@@ -2135,10 +2194,13 @@
 {
     // The expected result from this test is a red and green checkered triangle
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) out vec2 samplePos;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -2153,7 +2215,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec2 samplePos;\n"
@@ -2208,10 +2270,13 @@
     // number set up by the application.
     // This test will result in a blue triangle
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) out vec4 samplePos;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -2226,7 +2291,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 samplePos;\n"
@@ -2291,7 +2356,7 @@
     // The expected result from this test is a blue triangle
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) out vec4 outColor;\n"
@@ -2301,6 +2366,9 @@
             "    vec4 blue;\n"
             "    vec4 white;\n"
             "} myBufferVals;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -2311,7 +2379,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 inColor;\n"
@@ -2377,9 +2445,12 @@
     // The expected result from this test is a purple triangle
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -2389,7 +2460,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (std140, binding = 0) uniform redVal   { vec4 color; } myRedVal\n;"
@@ -2472,9 +2543,12 @@
     // The expected result from this test is a purple triangle
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -2566,9 +2640,12 @@
     // The expected result from this test is a purple triangle
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -2680,7 +2757,7 @@
 TEST_F(VkRenderTest, CubeWithVertexFetchAndMVPAndTexture)
 {
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (std140, binding=0) uniform bufferVals {\n"
@@ -2689,6 +2766,9 @@
             "layout (location=0) in vec4 pos;\n"
             "layout (location=1) in vec2 input_uv;\n"
             "layout (location=0) out vec2 UV;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   UV = input_uv;\n"
             "   gl_Position = myBufferVals.mvp * pos;\n"
@@ -2697,7 +2777,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (binding=1) uniform sampler2D surface;\n"
@@ -2813,9 +2893,12 @@
     // you can modify it to move the desired result around.
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -2925,9 +3008,12 @@
     // you can modify it to move the desired result around.
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -3030,7 +3116,7 @@
     // The expected result from this test is a green triangle
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (std140, binding = 0) uniform mixedBuffer {\n"
@@ -3067,6 +3153,9 @@
             "    vec4 uvOffsets[4];\n"
             "};\n"
             "layout (location = 0) out vec4 color;"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
 
             "   vec4 right = vec4(0.0, 1.0, 0.0, 1.0);\n"
@@ -3100,7 +3189,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (std140, binding = 0) uniform mixedBuffer {\n"
@@ -3286,9 +3375,12 @@
     }
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
             "   vec2 vertices[3];"
             "      vertices[0] = vec2(-0.5, -0.5);\n"
@@ -3385,10 +3477,13 @@
     // changes the color of each vertex to red, green, blue
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) out vec4 color;"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
 
             // VS writes out red
@@ -3410,13 +3505,16 @@
             "}\n";
 
     static const char *geomShaderText =
-            "#version 330\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout( triangles ) in;\n"
             "layout( triangle_strip, max_vertices = 3 ) out;\n"
             "layout( location = 0 ) in vec4 inColor[3];\n"
             "layout( location = 0 ) out vec4 outColor;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main()\n"
             "{\n"
 
@@ -3441,7 +3539,7 @@
 
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (location = 0) in vec4 color;\n"
@@ -3490,7 +3588,7 @@
     // The expected result from this test is a green triangle
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (std140, binding = 0) uniform mixedBuffer {\n"
@@ -3527,6 +3625,9 @@
             "    vec4 uvOffsets[4];\n"
             "};\n"
             "layout (location = 0) out vec4 color;"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main() {\n"
 
             "   vec4 right = vec4(0.0, 1.0, 0.0, 1.0);\n"
@@ -3560,7 +3661,7 @@
             "}\n";
 
     static const char *geomShaderText =
-            "#version 330\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
 
@@ -3605,7 +3706,9 @@
             "    vec3 fOneZeroZero;\n"
             "    vec4 uvOffsets[4];\n"
             "};\n"
-
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
             "void main()\n"
             "{\n"
 
@@ -3662,7 +3765,7 @@
             "}\n";
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout (std140, binding = 0) uniform mixedBuffer {\n"
@@ -3840,13 +3943,16 @@
     // Expected result is white triangle with weird positions
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
 
             "layout(location = 0) out vec3 out_a;\n"
             "layout(location = 1) out vec3 out_b;\n"
             "layout(location = 2) out vec3 out_c;\n"
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
 
             "void main() {\n"
 
@@ -3871,7 +3977,7 @@
             "}\n";
 
     static const char *geomShaderText =
-            "#version 330\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout( triangles ) in;\n"
@@ -3885,6 +3991,10 @@
             "layout(location = 1) out vec3 out_b;\n"
             "layout(location = 2) out vec3 out_c;\n"
 
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
+
             "void main()\n"
             "{\n"
 
@@ -3914,7 +4024,7 @@
 
 
     static const char *fragShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
 
@@ -3965,10 +4075,14 @@
     // Correct result is an multicolor circle
 
     static const char *vertShaderText =
-            "#version 140\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
 
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
+
             "void main() {\n"
 
             // generic position stuff
@@ -3987,7 +4101,7 @@
             "}\n";
 
     static const char *geomShaderText =
-            "#version 330\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
             "layout( triangles ) in;\n"
@@ -3995,6 +4109,10 @@
 
             "layout(location = 0) out vec4 outColor;\n"
 
+            "out gl_PerVertex {\n"
+            "    vec4 gl_Position;\n"
+            "};\n"
+
             "void main()\n"
             "{\n"
             // init with first position to get zw
@@ -4032,7 +4150,7 @@
 
 
     static const char *fragShaderText =
-            "#version 150\n"
+            "#version 400\n"
             "#extension GL_ARB_separate_shader_objects : enable\n"
             "#extension GL_ARB_shading_language_420pack : enable\n"
 
