Merge vk-gl-cts/vulkan-cts-1.1.3 into vk-gl-cts/vulkan-cts-1.1.4

Change-Id: I3a118287f4387c798fb2beb82113029308f0762b
diff --git a/external/vulkancts/modules/vulkan/image/vktImageCompressionTranscodingSupport.cpp b/external/vulkancts/modules/vulkan/image/vktImageCompressionTranscodingSupport.cpp
index 1bf5afa..fe84f7d 100644
--- a/external/vulkancts/modules/vulkan/image/vktImageCompressionTranscodingSupport.cpp
+++ b/external/vulkancts/modules/vulkan/image/vktImageCompressionTranscodingSupport.cpp
@@ -2615,7 +2615,7 @@
 						<< "layout (binding = 1, "<<formatQualifierStr<<") writeonly uniform "<<imageTypeStr<<" u_image1;\n\n"
 						<< "void main (void)\n"
 						<< "{\n"
-						<< "    const vec2 pixels_resolution = vec2(gl_NumWorkGroups.x - 1, gl_NumWorkGroups.y - 1);\n"
+						<< "    const vec2 pixels_resolution = vec2(gl_NumWorkGroups.x, gl_NumWorkGroups.y);\n"
 						<< coordDefinitions[imageTypeIndex]
 						<< "    imageStore(u_image1, pos, texture(u_image0, coord));\n"
 						<< "}\n";
@@ -2742,16 +2742,16 @@
 						{
 							// IMAGE_TYPE_1D
 							"    const highp int out_pos = int(gl_FragCoord.x);\n"
-							"    const highp int pixels_resolution = textureSize(u_imageIn, 0) - 1;\n"
-							"    const highp float in_pos = float(out_pos) / pixels_resolution;\n",
+							"    const highp float pixels_resolution = textureSize(u_imageIn, 0);\n"
+							"    const highp float in_pos = gl_FragCoord.x / pixels_resolution;\n",
 							// IMAGE_TYPE_2D
 							"    const ivec2 out_pos = ivec2(gl_FragCoord.xy);\n"
-							"    const ivec2 pixels_resolution = ivec2(textureSize(u_imageIn, 0)) - ivec2(1,1);\n"
-							"    const vec2 in_pos = vec2(out_pos) / vec2(pixels_resolution);\n",
+							"    const vec2 pixels_resolution = vec2(textureSize(u_imageIn, 0));\n"
+							"    const vec2 in_pos = vec2(gl_FragCoord.xy) / vec2(pixels_resolution);\n",
 							// IMAGE_TYPE_3D
 							"    const ivec3 out_pos = ivec3(gl_FragCoord.xy, 0);\n"
-							"    const ivec3 pixels_resolution = ivec3(textureSize(u_imageIn, 0)) - ivec3(1,1,1);\n"
-							"    const vec3 in_pos = vec3(out_pos) / vec3(pixels_resolution.xy, 1.0);\n",
+							"    const vec3 pixels_resolution = vec3(textureSize(u_imageIn, 0));\n"
+							"    const vec3 in_pos = vec3(gl_FragCoord.xy, 0) / vec3(pixels_resolution.xy, 1.0);\n",
 						};
 
 						src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n\n"
@@ -2786,28 +2786,28 @@
 				{
 					// IMAGE_TYPE_1D
 					"    const highp int out_pos = int(gl_FragCoord.x);\n"
-					"    const highp int pixels_resolution0 = textureSize(u_imageIn0, 0) - 1;\n"
-					"    const highp float in_pos0 = float(out_pos) / pixels_resolution0;\n",
+					"    const highp float pixels_resolution0 = textureSize(u_imageIn0, 0);\n"
+					"    const highp float in_pos0 = gl_FragCoord.x / pixels_resolution0;\n",
 					// IMAGE_TYPE_2D
 					"    const ivec2 out_pos = ivec2(gl_FragCoord.xy);\n"
-					"    const ivec2 pixels_resolution0 = ivec2(textureSize(u_imageIn0, 0)) - ivec2(1,1);\n"
-					"    const vec2 in_pos0 = vec2(out_pos) / vec2(pixels_resolution0);\n",
+					"    const vec2 pixels_resolution0 = vec2(textureSize(u_imageIn0, 0));\n"
+					"    const vec2 in_pos0 = vec2(gl_FragCoord.xy) / vec2(pixels_resolution0);\n",
 					// IMAGE_TYPE_3D
 					"    const ivec3 out_pos = ivec3(ivec2(gl_FragCoord.xy), 0);\n"
-					"    const ivec3 pixels_resolution0 = ivec3(textureSize(u_imageIn0, 0)) - ivec3(1,1,1);\n"
-					"    const vec3 in_pos0 = vec3(out_pos) / vec3(pixels_resolution0);\n",
+					"    const vec3 pixels_resolution0 = vec3(textureSize(u_imageIn0, 0));\n"
+					"    const vec3 in_pos0 = vec3(gl_FragCoord.xy, 0) / vec3(pixels_resolution0.xy, 1.0);\n",
 				};
 				const char* pos1Definitions[3] =
 				{
 					// IMAGE_TYPE_1D
-					"    const highp int pixels_resolution1 = textureSize(u_imageIn1, 0) - 1;\n"
-					"    const highp float in_pos1 = float(out_pos) / pixels_resolution1;\n",
+					"    const highp float pixels_resolution1 = textureSize(u_imageIn1, 0);\n"
+					"    const highp float in_pos1 = gl_FragCoord.x / pixels_resolution1;\n",
 					// IMAGE_TYPE_2D
-					"    const ivec2 pixels_resolution1 = ivec2(textureSize(u_imageIn1, 0)) - ivec2(1,1);\n"
-					"    const vec2 in_pos1 = vec2(out_pos) / vec2(pixels_resolution1);\n",
+					"    const vec2 pixels_resolution1 = vec2(textureSize(u_imageIn1, 0));\n"
+					"    const vec2 in_pos1 = vec2(gl_FragCoord.xy) / vec2(pixels_resolution1);\n",
 					// IMAGE_TYPE_3D
-					"    const ivec3 pixels_resolution1 = ivec3(textureSize(u_imageIn1, 0)) - ivec3(1,1,1);\n"
-					"    const vec3 in_pos1 = vec3(out_pos) / vec3(pixels_resolution1);\n",
+					"    const vec3 pixels_resolution1 = vec3(textureSize(u_imageIn1, 0));\n"
+					"    const vec3 in_pos1 = vec3(gl_FragCoord.xy, 0) / vec3(pixels_resolution1.xy, 1.0);\n",
 				};
 
 				src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n\n"
diff --git a/external/vulkancts/modules/vulkan/image/vktImageTranscodingSupportTests.cpp b/external/vulkancts/modules/vulkan/image/vktImageTranscodingSupportTests.cpp
index 43650a8..1ff0905 100644
--- a/external/vulkancts/modules/vulkan/image/vktImageTranscodingSupportTests.cpp
+++ b/external/vulkancts/modules/vulkan/image/vktImageTranscodingSupportTests.cpp
@@ -793,8 +793,8 @@
 					<< "void main (void)\n"
 					<< "{\n"
 					<< "    const ivec2 out_pos = ivec2(gl_FragCoord.xy);\n"
-					<< "    const ivec2 pixels_resolution = ivec2(textureSize(u_imageIn, 0)) - ivec2(1,1);\n"
-					<< "    const vec2 in_pos = vec2(out_pos) / vec2(pixels_resolution);\n"
+					<< "    const vec2 pixels_resolution = vec2(textureSize(u_imageIn, 0));\n"
+					<< "    const vec2 in_pos = vec2(gl_FragCoord.xy) / vec2(pixels_resolution);\n"
 					<< "    imageStore(u_imageOut, out_pos, texture(u_imageIn, in_pos));\n"
 					<< "}\n";
 
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
index 623f4c1..44901f0 100644
--- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
+++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
@@ -9920,12 +9920,14 @@
 	const string						spvCapabilities		= string("OpCapability StorageUniformBufferBlock16\n") + (nanSupported ? "OpCapability SignedZeroInfNanPreserve\n" : "");
 	const string						spvExtensions		= string("OpExtension \"SPV_KHR_16bit_storage\"\n") + (nanSupported ? "OpExtension \"SPV_KHR_float_controls\"\n" : "");
 	const string						spvExecutionMode	= nanSupported ? "OpExecutionMode %BP_main SignedZeroInfNanPreserve 16\n" : "";
-	const deUint32						numDataPoints		= 16;
-	const vector<deFloat16>				float16Data			= getFloat16s(rnd, numDataPoints);
-	const vector<deFloat16>				float16Data1		= squarize(float16Data, 0);
-	const vector<deFloat16>				float16Data2		= squarize(float16Data, 1);
-	const vector<deFloat16>				float16DataVec1		= squarizeVector(float16Data, 0);
-	const vector<deFloat16>				float16DataVec2		= squarizeVector(float16Data, 1);
+	const deUint32						numDataPointsScalar	= 16;
+	const deUint32						numDataPointsVector	= 14;
+	const vector<deFloat16>				float16DataScalar	= getFloat16s(rnd, numDataPointsScalar);
+	const vector<deFloat16>				float16DataVector	= getFloat16s(rnd, numDataPointsVector);
+	const vector<deFloat16>				float16Data1		= squarize(float16DataScalar, 0);			// Total Size: square(sizeof(float16DataScalar))
+	const vector<deFloat16>				float16Data2		= squarize(float16DataScalar, 1);
+	const vector<deFloat16>				float16DataVec1		= squarizeVector(float16DataVector, 0);		// Total Size: 2 * (square(square(sizeof(float16DataVector))))
+	const vector<deFloat16>				float16DataVec2		= squarizeVector(float16DataVector, 1);
 	const vector<deFloat16>				float16OutDummy		(float16Data1.size(), 0);
 	const vector<deFloat16>				float16OutVecDummy	(float16DataVec1.size(), 0);