Merge vk-gl-cts/vulkan-cts-1.0.2 into vk-gl-cts/master

Change-Id: I862763ebe1531b6f701657c34083fa715a287678
diff --git a/execserver/tools/xsClient.cpp b/execserver/tools/xsClient.cpp
index e680fc9..49987b7 100644
--- a/execserver/tools/xsClient.cpp
+++ b/execserver/tools/xsClient.cpp
@@ -24,6 +24,7 @@
 #include "xsDefs.hpp"
 #include "xsProtocol.hpp"
 #include "deSocket.hpp"
+#include "deUniquePtr.hpp"
 
 #include "deString.h"
 
@@ -39,7 +40,7 @@
 namespace xs
 {
 
-typedef std::auto_ptr<Message> ScopedMsgPtr;
+typedef de::UniquePtr<Message> ScopedMsgPtr;
 
 class SocketError : public Error
 {
diff --git a/execserver/tools/xsTest.cpp b/execserver/tools/xsTest.cpp
index 5e47377..44483dc 100644
--- a/execserver/tools/xsTest.cpp
+++ b/execserver/tools/xsTest.cpp
@@ -30,6 +30,7 @@
 #include "deBlockBuffer.hpp"
 #include "deThread.hpp"
 #include "deStringUtil.hpp"
+#include "deUniquePtr.hpp"
 
 #include "deClock.h"
 #include "deProcess.h"
@@ -45,7 +46,7 @@
 namespace xs
 {
 
-typedef std::auto_ptr<Message> ScopedMsgPtr;
+typedef de::UniquePtr<Message> ScopedMsgPtr;
 
 class SocketError : public Error
 {
diff --git a/executor/tools/xeCommandLineExecutor.cpp b/executor/tools/xeCommandLineExecutor.cpp
index 2a9af61..d14a1aa 100644
--- a/executor/tools/xeCommandLineExecutor.cpp
+++ b/executor/tools/xeCommandLineExecutor.cpp
@@ -31,6 +31,7 @@
 #include "deCommandLine.hpp"
 #include "deDirectoryIterator.hpp"
 #include "deStringUtil.hpp"
+#include "deUniquePtr.hpp"
 
 #include "deString.h"
 
@@ -604,7 +605,7 @@
 		readLogFile(&batchResult, cmdLine.inFile.c_str());
 
 	// Initialize commLink.
-	std::auto_ptr<xe::CommLink> commLink(createCommLink(cmdLine));
+	de::UniquePtr<xe::CommLink> commLink(createCommLink(cmdLine));
 
 	xe::BatchExecutor executor(cmdLine.targetCfg, commLink.get(), &root, testSet, &batchResult, &infoLog);
 
diff --git a/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp b/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
index 9c924b1..a1eb7dc 100644
--- a/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
+++ b/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
@@ -472,14 +472,14 @@
 		}
 	}
 
-	if (limits->viewportBoundsRange[0] > -2 * limits->maxViewportDimensions[0])
+	if (limits->viewportBoundsRange[0] > float(-2 * limits->maxViewportDimensions[0]))
 	{
 		log << TestLog::Message << "limit validation failed, viewPortBoundsRange[0] of " << limits->viewportBoundsRange[0]
 			<< "is larger than -2*maxViewportDimension[0] of " << -2*limits->maxViewportDimensions[0] << TestLog::EndMessage;
 		limitsOk = false;
 	}
 
-	if (limits->viewportBoundsRange[1] < 2 * limits->maxViewportDimensions[1] - 1)
+	if (limits->viewportBoundsRange[1] < float(2 * limits->maxViewportDimensions[1] - 1))
 	{
 		log << TestLog::Message << "limit validation failed, viewportBoundsRange[1] of " << limits->viewportBoundsRange[1]
 			<< "is less than 2*maxViewportDimension[1] of " << 2*limits->maxViewportDimensions[1] << TestLog::EndMessage;
diff --git a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinPrecisionTests.cpp b/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinPrecisionTests.cpp
index 38ab5e7..a1292b7 100644
--- a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinPrecisionTests.cpp
+++ b/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinPrecisionTests.cpp
@@ -1064,10 +1064,10 @@
 template <typename T0 = Void, typename T1 = Void, typename T2 = Void, typename T3 = Void>
 struct Tuple4
 {
-	explicit Tuple4 (const T0& e0 = T0(),
-					 const T1& e1 = T1(),
-					 const T2& e2 = T2(),
-					 const T3& e3 = T3())
+	explicit Tuple4 (const T0 e0 = T0(),
+					 const T1 e1 = T1(),
+					 const T2 e2 = T2(),
+					 const T3 e3 = T3())
 		: a	(e0)
 		, b	(e1)
 		, c	(e2)
diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderIndexingTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderIndexingTests.cpp
index 1195a37..a3e65f0 100644
--- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderIndexingTests.cpp
+++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderIndexingTests.cpp
@@ -205,7 +205,7 @@
 		else
 			throw tcu::TestError("invalid data type for u_arr");
 
-			instance.addUniform(5u, vk::VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, sizeof(Vec4) * 4, arr[0].getPtr());
+		instance.addUniform(5u, vk::VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, sizeof(Vec4) * 4, arr[0].getPtr());
 	}
 }
 
diff --git a/framework/common/tcuTexVerifierUtil.cpp b/framework/common/tcuTexVerifierUtil.cpp
index bdc1efa..425e037 100644
--- a/framework/common/tcuTexVerifierUtil.cpp
+++ b/framework/common/tcuTexVerifierUtil.cpp
@@ -125,7 +125,7 @@
 
 static inline int mirror (int a)
 {
-	return a >= 0.0f ? a : -(1 + a);
+	return a >= 0 ? a : -(1 + a);
 }
 
 int wrap (Sampler::WrapMode mode, int c, int size)
diff --git a/framework/common/tcuTexture.cpp b/framework/common/tcuTexture.cpp
index d61b134..52b6cf8 100644
--- a/framework/common/tcuTexture.cpp
+++ b/framework/common/tcuTexture.cpp
@@ -1520,7 +1520,7 @@
 
 static inline int mirror (int a)
 {
-	return a >= 0.0f ? a : -(1 + a);
+	return a >= 0 ? a : -(1 + a);
 }
 
 // Nearest-even rounding in case of tie (fractional part 0.5), otherwise ordinary rounding.
diff --git a/framework/delibs/cmake/CFlags.cmake b/framework/delibs/cmake/CFlags.cmake
index 7d2c5bf..8a4b9ad 100644
--- a/framework/delibs/cmake/CFlags.cmake
+++ b/framework/delibs/cmake/CFlags.cmake
@@ -47,7 +47,7 @@
 	set(WARNING_FLAGS			"-Wall -Wextra -Wno-long-long -Wshadow -Wundef -Wconversion -Wno-sign-conversion")
 
 	set(CMAKE_C_FLAGS			"${TARGET_FLAGS} ${WARNING_FLAGS} ${CMAKE_C_FLAGS} -std=c90 -pedantic ")
-	set(CMAKE_CXX_FLAGS			"${TARGET_FLAGS} ${WARNING_FLAGS} ${CMAKE_CXX_FLAGS} -Wno-delete-non-virtual-dtor")
+	set(CMAKE_CXX_FLAGS			"${TARGET_FLAGS} ${WARNING_FLAGS} ${CMAKE_CXX_FLAGS} -std=c++03 -Wno-delete-non-virtual-dtor")
 
 	# Force compiler to generate code where integers have well defined overflow
 	# Turn on -Wstrict-overflow=5 and check all warnings before removing
diff --git a/framework/opengl/simplereference/sglrReferenceContext.cpp b/framework/opengl/simplereference/sglrReferenceContext.cpp
index e5f443b..288b0a9 100644
--- a/framework/opengl/simplereference/sglrReferenceContext.cpp
+++ b/framework/opengl/simplereference/sglrReferenceContext.cpp
@@ -2068,12 +2068,12 @@
 			if (texObj->getType() == Texture::TYPE_2D_ARRAY || texObj->getType() == Texture::TYPE_CUBE_MAP_ARRAY)
 			{
 				RC_IF_ERROR((layer < 0) || (layer >= GL_MAX_ARRAY_TEXTURE_LAYERS),		GL_INVALID_VALUE,		RC_RET_VOID);
-				RC_IF_ERROR((level < 0) || (level > deFloatLog2(GL_MAX_TEXTURE_SIZE)),	GL_INVALID_VALUE,		RC_RET_VOID);
+				RC_IF_ERROR((level < 0) || (level > deLog2Floor32(GL_MAX_TEXTURE_SIZE)),GL_INVALID_VALUE,		RC_RET_VOID);
 			}
 			else if	(texObj->getType() == Texture::TYPE_3D)
 			{
 				RC_IF_ERROR((layer < 0) || (layer >= GL_MAX_3D_TEXTURE_SIZE),				GL_INVALID_VALUE,		RC_RET_VOID);
-				RC_IF_ERROR((level < 0) || (level > deFloatLog2(GL_MAX_3D_TEXTURE_SIZE)),	GL_INVALID_VALUE,		RC_RET_VOID);
+				RC_IF_ERROR((level < 0) || (level > deLog2Floor32(GL_MAX_3D_TEXTURE_SIZE)),	GL_INVALID_VALUE,		RC_RET_VOID);
 			}
 		}
 
diff --git a/modules/egl/teglGLES2SharedRenderingPerfTests.cpp b/modules/egl/teglGLES2SharedRenderingPerfTests.cpp
index b5335a6..bc13aad 100644
--- a/modules/egl/teglGLES2SharedRenderingPerfTests.cpp
+++ b/modules/egl/teglGLES2SharedRenderingPerfTests.cpp
@@ -722,7 +722,6 @@
 
 	void			start			(void);
 	void			join			(void);
-	void			log				(TestLog& log);
 
 	bool			resultOk		(void) { return m_isOk; }
 
@@ -765,12 +764,6 @@
 	m_contexts.clear();
 }
 
-void TestThread::log (TestLog& testLog)
-{
-	if (!m_isOk)
-		testLog << TestLog::Message << "Thread failed: " << m_errorString << TestLog::EndMessage;
-}
-
 void TestThread::start (void)
 {
 	m_startBeginUs = deGetMicroseconds();
diff --git a/modules/egl/teglRenderCase.cpp b/modules/egl/teglRenderCase.cpp
index a0ff8ae..4662487 100644
--- a/modules/egl/teglRenderCase.cpp
+++ b/modules/egl/teglRenderCase.cpp
@@ -158,7 +158,7 @@
 
 		try
 		{
-			std::auto_ptr<eglu::NativePixmap>	pixmap		(pixmapFactory.createPixmap(&nativeDisplay, display, config, DE_NULL, width, height));
+			de::UniquePtr<eglu::NativePixmap>	pixmap		(pixmapFactory.createPixmap(&nativeDisplay, display, config, DE_NULL, width, height));
 			EGLSurface							eglSurface	= createPixmapSurface(nativeDisplay, *pixmap, display, config, DE_NULL);
 			eglu::UniqueSurface					surface		(egl, display, eglSurface);
 
diff --git a/modules/gles2/functional/es2fIntegerStateQueryTests.cpp b/modules/gles2/functional/es2fIntegerStateQueryTests.cpp
index 2b736d7..ed5831c 100644
--- a/modules/gles2/functional/es2fIntegerStateQueryTests.cpp
+++ b/modules/gles2/functional/es2fIntegerStateQueryTests.cpp
@@ -589,9 +589,9 @@
 	if (!state.verifyValidity(testCtx))
 		return;
 
-	if (GLuint(state) < GLfloat(reference))
+	if (state < GLfloat(reference))
 	{
-		testCtx.getLog() << TestLog::Message << "// ERROR: expected greater or equal to " << GLfloat(reference) << "; got " << GLuint(state) << TestLog::EndMessage;
+		testCtx.getLog() << TestLog::Message << "// ERROR: expected greater or equal to " << GLfloat(reference) << "; got " << state << TestLog::EndMessage;
 		if (testCtx.getTestResult() == QP_TEST_RESULT_PASS)
 			testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Got invalid float value");
 	}
diff --git a/modules/gles2/functional/es2fShaderInvarianceTests.cpp b/modules/gles2/functional/es2fShaderInvarianceTests.cpp
index d404ba6..04f3a68 100644
--- a/modules/gles2/functional/es2fShaderInvarianceTests.cpp
+++ b/modules/gles2/functional/es2fShaderInvarianceTests.cpp
@@ -402,7 +402,6 @@
 {
 public:
 								BasicInvarianceTest		(Context& ctx, const char* name, const char* desc, const std::string& vertexShader1, const std::string& vertexShader2);
-								BasicInvarianceTest		(Context& ctx, const char* name, const char* desc, const std::string& vertexShader1, const std::string& vertexShader2, const std::string& fragmentShader);
 	ShaderPair					genShaders				(void) const;
 
 private:
@@ -428,14 +427,6 @@
 {
 }
 
-BasicInvarianceTest::BasicInvarianceTest (Context& ctx, const char* name, const char* desc, const std::string& vertexShader1, const std::string& vertexShader2, const std::string& fragmentShader)
-	: InvarianceTest	(ctx, name, desc)
-	, m_vertexShader1	(vertexShader1)
-	, m_vertexShader2	(vertexShader2)
-	, m_fragmentShader	(fragmentShader)
-{
-}
-
 BasicInvarianceTest::ShaderPair BasicInvarianceTest::genShaders (void) const
 {
 	ShaderPair retVal;
diff --git a/modules/gles2/functional/es2fUniformApiTests.cpp b/modules/gles2/functional/es2fUniformApiTests.cpp
index ff05e27..04d14fc 100644
--- a/modules/gles2/functional/es2fUniformApiTests.cpp
+++ b/modules/gles2/functional/es2fUniformApiTests.cpp
@@ -773,7 +773,6 @@
 		FEATURE_ARRAY_FIRST_ELEM_NAME_NO_INDEX	= 1<<7
 	};
 
-								UniformCase		(Context& context, const char* name, const char* description, CaseShaderType caseType, const SharedPtr<const UniformCollection>& uniformCollection);
 								UniformCase		(Context& context, const char* name, const char* description, CaseShaderType caseType, const SharedPtr<const UniformCollection>& uniformCollection, deUint32 features);
 								UniformCase		(Context& context, const char* name, const char* description, deUint32 seed); // \note Randomizes caseType, uniformCollection and features.
 	virtual						~UniformCase	(void);
@@ -947,15 +946,6 @@
 {
 }
 
-UniformCase::UniformCase (Context& context, const char* const name, const char* const description, const CaseShaderType caseShaderType, const SharedPtr<const UniformCollection>& uniformCollection)
-	: TestCase				(context, name, description)
-	, CallLogWrapper		(context.getRenderContext().getFunctions(), m_testCtx.getLog())
-	, m_features			(0)
-	, m_uniformCollection	(uniformCollection)
-	, m_caseShaderType		(caseShaderType)
-{
-}
-
 UniformCase::UniformCase (Context& context, const char* name, const char* description, const deUint32 seed)
 	: TestCase				(context, name, description)
 	, CallLogWrapper		(context.getRenderContext().getFunctions(), m_testCtx.getLog())
diff --git a/modules/gles3/functional/es3fFboTestUtil.cpp b/modules/gles3/functional/es3fFboTestUtil.cpp
index 5e2e4f2..7dbabbd 100644
--- a/modules/gles3/functional/es3fFboTestUtil.cpp
+++ b/modules/gles3/functional/es3fFboTestUtil.cpp
@@ -68,10 +68,10 @@
 template <typename T>
 static tcu::Vector<T, 4> castVectorSaturate (const tcu::Vec4& in)
 {
-	return tcu::Vector<T, 4>((in.x() + 0.5f >= std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : ((in.x() - 0.5f <= std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.x()))),
-	                         (in.y() + 0.5f >= std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : ((in.y() - 0.5f <= std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.y()))),
-							 (in.z() + 0.5f >= std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : ((in.z() - 0.5f <= std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.z()))),
-							 (in.w() + 0.5f >= std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : ((in.w() - 0.5f <= std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.w()))));
+	return tcu::Vector<T, 4>(((double)in.x() + 0.5 >= (double)std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : (((double)in.x() - 0.5 <= (double)std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.x()))),
+	                         ((double)in.y() + 0.5 >= (double)std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : (((double)in.y() - 0.5 <= (double)std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.y()))),
+							 ((double)in.z() + 0.5 >= (double)std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : (((double)in.z() - 0.5 <= (double)std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.z()))),
+							 ((double)in.w() + 0.5 >= (double)std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : (((double)in.w() - 0.5 <= (double)std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.w()))));
 }
 
 FlatColorShader::FlatColorShader (glu::DataType outputType)
diff --git a/modules/gles3/functional/es3fIntegerStateQueryTests.cpp b/modules/gles3/functional/es3fIntegerStateQueryTests.cpp
index 4837128..16c11b4 100644
--- a/modules/gles3/functional/es3fIntegerStateQueryTests.cpp
+++ b/modules/gles3/functional/es3fIntegerStateQueryTests.cpp
@@ -827,9 +827,9 @@
 	if (!state.verifyValidity(testCtx))
 		return;
 
-	if (GLuint(state) < GLfloat(reference))
+	if (state < GLfloat(reference))
 	{
-		testCtx.getLog() << TestLog::Message << "// ERROR: expected greater or equal to " << GLfloat(reference) << "; got " << GLuint(state) << TestLog::EndMessage;
+		testCtx.getLog() << TestLog::Message << "// ERROR: expected greater or equal to " << GLfloat(reference) << "; got " << state << TestLog::EndMessage;
 		if (testCtx.getTestResult() == QP_TEST_RESULT_PASS)
 			testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Got invalid float value");
 	}
diff --git a/modules/gles3/functional/es3fShaderInvarianceTests.cpp b/modules/gles3/functional/es3fShaderInvarianceTests.cpp
index 765598a..cceba6a 100644
--- a/modules/gles3/functional/es3fShaderInvarianceTests.cpp
+++ b/modules/gles3/functional/es3fShaderInvarianceTests.cpp
@@ -402,7 +402,6 @@
 {
 public:
 								BasicInvarianceTest		(Context& ctx, const char* name, const char* desc, const std::string& vertexShader1, const std::string& vertexShader2);
-								BasicInvarianceTest		(Context& ctx, const char* name, const char* desc, const std::string& vertexShader1, const std::string& vertexShader2, const std::string& fragmentShader);
 	ShaderPair					genShaders				(void) const;
 
 private:
@@ -430,14 +429,6 @@
 {
 }
 
-BasicInvarianceTest::BasicInvarianceTest (Context& ctx, const char* name, const char* desc, const std::string& vertexShader1, const std::string& vertexShader2, const std::string& fragmentShader)
-	: InvarianceTest	(ctx, name, desc)
-	, m_vertexShader1	(vertexShader1)
-	, m_vertexShader2	(vertexShader2)
-	, m_fragmentShader	(fragmentShader)
-{
-}
-
 BasicInvarianceTest::ShaderPair BasicInvarianceTest::genShaders (void) const
 {
 	ShaderPair retVal;
diff --git a/modules/gles3/functional/es3fUniformApiTests.cpp b/modules/gles3/functional/es3fUniformApiTests.cpp
index be953af..07fdd53 100644
--- a/modules/gles3/functional/es3fUniformApiTests.cpp
+++ b/modules/gles3/functional/es3fUniformApiTests.cpp
@@ -938,7 +938,6 @@
 		FEATURE_ARRAY_FIRST_ELEM_NAME_NO_INDEX	= 1<<9
 	};
 
-								UniformCase		(Context& context, const char* name, const char* description, CaseShaderType caseType, const SharedPtr<const UniformCollection>& uniformCollection);
 								UniformCase		(Context& context, const char* name, const char* description, CaseShaderType caseType, const SharedPtr<const UniformCollection>& uniformCollection, deUint32 features);
 								UniformCase		(Context& context, const char* name, const char* description, deUint32 seed); // \note Randomizes caseType, uniformCollection and features.
 	virtual						~UniformCase	(void);
@@ -1118,15 +1117,6 @@
 {
 }
 
-UniformCase::UniformCase (Context& context, const char* const name, const char* const description, const CaseShaderType caseShaderType, const SharedPtr<const UniformCollection>& uniformCollection)
-	: TestCase				(context, name, description)
-	, CallLogWrapper		(context.getRenderContext().getFunctions(), m_testCtx.getLog())
-	, m_features			(0)
-	, m_uniformCollection	(uniformCollection)
-	, m_caseShaderType		(caseShaderType)
-{
-}
-
 UniformCase::UniformCase (Context& context, const char* name, const char* description, const deUint32 seed)
 	: TestCase				(context, name, description)
 	, CallLogWrapper		(context.getRenderContext().getFunctions(), m_testCtx.getLog())
diff --git a/modules/gles31/functional/es31fFboTestUtil.cpp b/modules/gles31/functional/es31fFboTestUtil.cpp
index f3388a4..4d8ade1 100644
--- a/modules/gles31/functional/es31fFboTestUtil.cpp
+++ b/modules/gles31/functional/es31fFboTestUtil.cpp
@@ -68,10 +68,10 @@
 template <typename T>
 static tcu::Vector<T, 4> castVectorSaturate (const tcu::Vec4& in)
 {
-	return tcu::Vector<T, 4>((in.x() + 0.5f >= std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : ((in.x() - 0.5f <= std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.x()))),
-	                         (in.y() + 0.5f >= std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : ((in.y() - 0.5f <= std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.y()))),
-							 (in.z() + 0.5f >= std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : ((in.z() - 0.5f <= std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.z()))),
-							 (in.w() + 0.5f >= std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : ((in.w() - 0.5f <= std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.w()))));
+	return tcu::Vector<T, 4>(((double)in.x() + 0.5 >= (double)std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : (((double)in.x() - 0.5 <= (double)std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.x()))),
+	                         ((double)in.y() + 0.5 >= (double)std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : (((double)in.y() - 0.5 <= (double)std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.y()))),
+							 ((double)in.z() + 0.5 >= (double)std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : (((double)in.z() - 0.5 <= (double)std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.z()))),
+							 ((double)in.w() + 0.5 >= (double)std::numeric_limits<T>::max()) ? (std::numeric_limits<T>::max()) : (((double)in.w() - 0.5 <= (double)std::numeric_limits<T>::min()) ? (std::numeric_limits<T>::min()) : (T(in.w()))));
 }
 
 static string genTexFragmentShader (const vector<glu::DataType>& samplerTypes, glu::DataType outputType)
diff --git a/modules/gles31/functional/es31fMultisampleTests.cpp b/modules/gles31/functional/es31fMultisampleTests.cpp
index 5fe3edf..a4efbe4 100644
--- a/modules/gles31/functional/es31fMultisampleTests.cpp
+++ b/modules/gles31/functional/es31fMultisampleTests.cpp
@@ -174,7 +174,6 @@
 
 protected:
 	void						renderTriangle				(const Vec3& p0, const Vec3& p1, const Vec3& p2, const Vec4& c0, const Vec4& c1, const Vec4& c2) const;
-	void						renderTriangle				(const Vec3& p0, const Vec3& p1, const Vec3& p2, const Vec4& color) const;
 	void						renderTriangle				(const Vec2& p0, const Vec2& p1, const Vec2& p2, const Vec4& c0, const Vec4& c1, const Vec4& c2) const;
 	void						renderTriangle				(const Vec2& p0, const Vec2& p1, const Vec2& p2, const Vec4& color) const;
 	void						renderQuad					(const Vec2& p0, const Vec2& p1, const Vec2& p2, const Vec2& p3, const Vec4& c0, const Vec4& c1, const Vec4& c2, const Vec4& c3) const;
@@ -344,11 +343,6 @@
 	GLU_EXPECT_NO_ERROR(gl.getError(), "drawArrays");
 }
 
-void DefaultFBOMultisampleCase::renderTriangle (const Vec3& p0, const Vec3& p1, const Vec3& p2, const Vec4& color) const
-{
-	renderTriangle(p0, p1, p2, color, color, color);
-}
-
 void DefaultFBOMultisampleCase::renderTriangle (const Vec2& p0, const Vec2& p1, const Vec2& p2, const Vec4& c0, const Vec4& c1, const Vec4& c2) const
 {
 	renderTriangle(Vec3(p0.x(), p0.y(), 0.0f),
diff --git a/modules/gles31/functional/es31fProgramInterfaceQueryTests.cpp b/modules/gles31/functional/es31fProgramInterfaceQueryTests.cpp
index b47e951..cfa8574 100644
--- a/modules/gles31/functional/es31fProgramInterfaceQueryTests.cpp
+++ b/modules/gles31/functional/es31fProgramInterfaceQueryTests.cpp
@@ -436,7 +436,6 @@
 	bool		isStagePresent		(glu::ShaderType stage) const;
 	bool		isStageReferencing	(glu::ShaderType stage) const;
 
-	deUint32	getPresentMask		(void) const;
 	deUint32	getReferencingMask	(void) const;
 
 	const glu::GLSLVersion	m_version;
@@ -494,17 +493,6 @@
 	return m_stageReferencing[stage];
 }
 
-deUint32 ShaderSet::getPresentMask (void) const
-{
-	deUint32 mask = 0;
-	for (deUint32 stage = 0; stage < glu::SHADERTYPE_LAST; ++stage)
-	{
-		if (m_stagePresent[stage])
-			mask |= (1u << stage);
-	}
-	return mask;
-}
-
 deUint32 ShaderSet::getReferencingMask (void) const
 {
 	deUint32 mask = 0;
diff --git a/modules/gles31/functional/es31fProgramUniformTests.cpp b/modules/gles31/functional/es31fProgramUniformTests.cpp
index 91a1257..19fd1c0 100644
--- a/modules/gles31/functional/es31fProgramUniformTests.cpp
+++ b/modules/gles31/functional/es31fProgramUniformTests.cpp
@@ -829,7 +829,6 @@
 		FEATURE_ARRAY_FIRST_ELEM_NAME_NO_INDEX	= 1<<8
 	};
 
-								UniformCase		(Context& context, const char* name, const char* description, CaseShaderType caseType, const SharedPtr<const UniformCollection>& uniformCollection);
 								UniformCase		(Context& context, const char* name, const char* description, CaseShaderType caseType, const SharedPtr<const UniformCollection>& uniformCollection, deUint32 features);
 	virtual						~UniformCase	(void);
 
@@ -945,15 +944,6 @@
 {
 }
 
-UniformCase::UniformCase (Context& context, const char* const name, const char* const description, const CaseShaderType caseShaderType, const SharedPtr<const UniformCollection>& uniformCollection)
-	: TestCase				(context, name, description)
-	, CallLogWrapper		(context.getRenderContext().getFunctions(), m_testCtx.getLog())
-	, m_features			(0)
-	, m_uniformCollection	(uniformCollection)
-	, m_caseShaderType		(caseShaderType)
-{
-}
-
 void UniformCase::init (void)
 {
 	{
diff --git a/modules/glshared/glsBuiltinPrecisionTests.cpp b/modules/glshared/glsBuiltinPrecisionTests.cpp
index 76d83c8..da69f89 100644
--- a/modules/glshared/glsBuiltinPrecisionTests.cpp
+++ b/modules/glshared/glsBuiltinPrecisionTests.cpp
@@ -1085,10 +1085,10 @@
 template <typename T0 = Void, typename T1 = Void, typename T2 = Void, typename T3 = Void>
 struct Tuple4
 {
-	explicit Tuple4 (const T0& e0 = T0(),
-					 const T1& e1 = T1(),
-					 const T2& e2 = T2(),
-					 const T3& e3 = T3())
+	explicit Tuple4 (const T0 e0 = T0(),
+					 const T1 e1 = T1(),
+					 const T2 e2 = T2(),
+					 const T3 e3 = T3())
 		: a	(e0)
 		, b	(e1)
 		, c	(e2)
diff --git a/modules/glshared/glsDrawTest.cpp b/modules/glshared/glsDrawTest.cpp
index c721e14..155bd35 100644
--- a/modules/glshared/glsDrawTest.cpp
+++ b/modules/glshared/glsDrawTest.cpp
@@ -885,7 +885,7 @@
 	return GLValue::Half::create(std::fabs(val.to<float>()));
 }
 
-// AttriuteArray
+// AttributeArray
 
 class AttributeArray
 {
@@ -894,7 +894,6 @@
 								~AttributeArray		(void);
 
 	void						data				(DrawTestSpec::Target target, size_t size, const char* data, DrawTestSpec::Usage usage);
-	void						subdata				(DrawTestSpec::Target target, int offset, int size, const char* data);
 	void						setupArray			(bool bound, int offset, int size, DrawTestSpec::InputType inType, DrawTestSpec::OutputType outType, bool normalized, int stride, int instanceDivisor, const rr::GenericVec4& defaultAttrib, bool isPositionAttr, bool bgraComponentOrder);
 	void						bindAttribute		(deUint32 loc);
 	void						bindIndexArray		(DrawTestSpec::Target storage);
@@ -993,24 +992,6 @@
 		DE_ASSERT(false);
 }
 
-void AttributeArray::subdata (DrawTestSpec::Target target, int offset, int size, const char* ptr)
-{
-	m_target = target;
-
-	if (m_storage == DrawTestSpec::STORAGE_BUFFER)
-	{
-		m_ctx.bindBuffer(targetToGL(target), m_glBuffer);
-		GLU_EXPECT_NO_ERROR(m_ctx.getError(), "glBindBuffer()");
-
-		m_ctx.bufferSubData(targetToGL(target), offset, size, ptr);
-		GLU_EXPECT_NO_ERROR(m_ctx.getError(), "glBufferSubData()");
-	}
-	else if (m_storage == DrawTestSpec::STORAGE_USER)
-		std::memcpy(m_data + offset, ptr, size);
-	else
-		DE_ASSERT(false);
-}
-
 void AttributeArray::setupArray (bool bound, int offset, int size, DrawTestSpec::InputType inputType, DrawTestSpec::OutputType outType, bool normalized, int stride, int instanceDivisor, const rr::GenericVec4& defaultAttrib, bool isPositionAttr, bool bgraComponentOrder)
 {
 	m_componentCount	= size;
@@ -1536,7 +1517,6 @@
 private:
 	template<typename T>
 	static char*			createIndices			(int seed, int elementCount, int offset, int min, int max, int indexBase);
-	static void				setData					(char* data, DrawTestSpec::InputType type, deRandom& rnd, GLValue min, GLValue max);
 
 	static char*			generateBasicArray		(int seed, int elementCount, int componentCount, int offset, int stride, DrawTestSpec::InputType type);
 	template<typename T, typename GLType>
@@ -1544,70 +1524,6 @@
 	static char*			generatePackedArray		(int seed, int elementCount, int componentCount, int offset, int stride);
 };
 
-void RandomArrayGenerator::setData (char* data, DrawTestSpec::InputType type, deRandom& rnd, GLValue min, GLValue max)
-{
-	switch (type)
-	{
-		case DrawTestSpec::INPUTTYPE_FLOAT:
-		{
-			alignmentSafeAssignment<float>(data, getRandom<GLValue::Float>(rnd, min.fl, max.fl));
-			break;
-		}
-
-		case DrawTestSpec::INPUTTYPE_SHORT:
-		{
-			alignmentSafeAssignment<deInt16>(data, getRandom<GLValue::Short>(rnd, min.s, max.s));
-			break;
-		}
-
-		case DrawTestSpec::INPUTTYPE_UNSIGNED_SHORT:
-		{
-			alignmentSafeAssignment<deUint16>(data, getRandom<GLValue::Ushort>(rnd, min.us, max.us));
-			break;
-		}
-
-		case DrawTestSpec::INPUTTYPE_BYTE:
-		{
-			alignmentSafeAssignment<deInt8>(data, getRandom<GLValue::Byte>(rnd, min.b, max.b));
-			break;
-		}
-
-		case DrawTestSpec::INPUTTYPE_UNSIGNED_BYTE:
-		{
-			alignmentSafeAssignment<deUint8>(data, getRandom<GLValue::Ubyte>(rnd, min.ub, max.ub));
-			break;
-		}
-
-		case DrawTestSpec::INPUTTYPE_FIXED:
-		{
-			alignmentSafeAssignment<deInt32>(data, getRandom<GLValue::Fixed>(rnd, min.fi, max.fi));
-			break;
-		}
-
-		case DrawTestSpec::INPUTTYPE_INT:
-		{
-			alignmentSafeAssignment<deInt32>(data, getRandom<GLValue::Int>(rnd, min.i, max.i));
-			break;
-		}
-
-		case DrawTestSpec::INPUTTYPE_UNSIGNED_INT:
-		{
-			alignmentSafeAssignment<deUint32>(data, getRandom<GLValue::Uint>(rnd, min.ui, max.ui));
-			break;
-		}
-
-		case DrawTestSpec::INPUTTYPE_HALF:
-		{
-			alignmentSafeAssignment<deFloat16>(data, getRandom<GLValue::Half>(rnd, min.h, max.h).getValue());
-			break;
-		}
-
-		default:
-			DE_ASSERT(false);
-			break;
-	}
-}
-
 char* RandomArrayGenerator::generateArray (int seed, int elementCount, int componentCount, int offset, int stride, DrawTestSpec::InputType type)
 {
 	if (type == DrawTestSpec::INPUTTYPE_INT_2_10_10_10 || type == DrawTestSpec::INPUTTYPE_UNSIGNED_INT_2_10_10_10)