diff --git a/external/vulkancts/modules/vulkan/memory/vktMemoryExternalMemoryHostTests.cpp b/external/vulkancts/modules/vulkan/memory/vktMemoryExternalMemoryHostTests.cpp
index e23046a..d5d3e50 100644
--- a/external/vulkancts/modules/vulkan/memory/vktMemoryExternalMemoryHostTests.cpp
+++ b/external/vulkancts/modules/vulkan/memory/vktMemoryExternalMemoryHostTests.cpp
@@ -335,6 +335,11 @@
 	// Verify image format properties before proceeding.
 	verifyFormatProperties(m_testParams.m_format, tiling, usageFlags);
 
+	VkFormatProperties formatProperties;
+	m_vki.getPhysicalDeviceFormatProperties(m_physicalDevice, m_testParams.m_format, &formatProperties);
+	if ((formatProperties.linearTilingFeatures & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) != VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)
+		TCU_THROW(NotSupportedError, "Format does not support linear tiling for color attachment");
+
 	// Create image with external host memory.
 	m_image = createImage(m_testParams.m_format, tiling, usageFlags);
 
diff --git a/external/vulkancts/modules/vulkan/memory_model/vktMemoryModelSharedLayoutCase.cpp b/external/vulkancts/modules/vulkan/memory_model/vktMemoryModelSharedLayoutCase.cpp
index be47515..3432110 100644
--- a/external/vulkancts/modules/vulkan/memory_model/vktMemoryModelSharedLayoutCase.cpp
+++ b/external/vulkancts/modules/vulkan/memory_model/vktMemoryModelSharedLayoutCase.cpp
@@ -362,6 +362,7 @@
 	const vk::VkDevice							device						= m_context.getDevice();
 	const vk::VkQueue							queue						= m_context.getUniversalQueue();
 	const deUint32								queueFamilyIndex			= m_context.getUniversalQueueFamilyIndex();
+	vk::Allocator&								allocator					= m_context.getDefaultAllocator();
 	const deUint32								bufferSize					= 4;
 
 	// Create descriptor set
@@ -378,12 +379,12 @@
 	};
 
 	vk::Move<vk::VkBuffer>						buffer						(vk::createBuffer(vk, device, &params));
-
-	de::MovePtr<vk::Allocation>					bufferAlloc					(vk::bindBuffer (m_context.getDeviceInterface(), m_context.getDevice(),
-																			m_context.getDefaultAllocator(), *buffer, vk::MemoryRequirement::HostVisible));
+	vk::VkMemoryRequirements					requirements				= getBufferMemoryRequirements(vk, device, *buffer);
+	de::MovePtr<vk::Allocation>					bufferAlloc					(allocator.allocate(requirements, vk::MemoryRequirement::HostVisible));
+	VK_CHECK(vk.bindBufferMemory(device, *buffer, bufferAlloc->getMemory(), bufferAlloc->getOffset()));
 
 	deMemset(bufferAlloc->getHostPtr(), 0, bufferSize);
-	flushMappedMemoryRange(vk, device, bufferAlloc->getMemory(), bufferAlloc->getOffset(), bufferSize);
+	flushMappedMemoryRange(vk, device, bufferAlloc->getMemory(), bufferAlloc->getOffset(), requirements.size);
 
 	vk::DescriptorSetLayoutBuilder				setLayoutBuilder;
 	vk::DescriptorPoolBuilder					poolBuilder;
diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp
index f782c9b..749f04d 100644
--- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp
+++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp
@@ -305,6 +305,7 @@
 			"void main (void)\n"
 			"{\n"
 			"	gl_Position = position;\n"
+			"	gl_PointSize = 1.0f;\n"
 			"}\n");
 	}
 }
diff --git a/external/vulkancts/modules/vulkan/texture/vktTextureCompressedFormatTests.cpp b/external/vulkancts/modules/vulkan/texture/vktTextureCompressedFormatTests.cpp
index 65a2b14..9ad6857 100644
--- a/external/vulkancts/modules/vulkan/texture/vktTextureCompressedFormatTests.cpp
+++ b/external/vulkancts/modules/vulkan/texture/vktTextureCompressedFormatTests.cpp
@@ -272,7 +272,7 @@
 	const ParameterType&				m_testParameters;
 	const tcu::CompressedTexFormat		m_compressedFormat;
 	TestTexture3DSp						m_texture3D;
-	TextureRenderer						m_renderer3D;
+	TextureRenderer						m_renderer2D;
 };
 
 Compressed3DTestInstance::Compressed3DTestInstance (Context&				context,
@@ -281,9 +281,9 @@
 	, m_testParameters		(testParameters)
 	, m_compressedFormat	(mapVkCompressedFormat(testParameters.format))
 	, m_texture3D			(TestTexture3DSp(new pipeline::TestTexture3D(m_compressedFormat, testParameters.width, testParameters.height, testParameters.depth)))
-	, m_renderer3D			(context, testParameters.sampleCount, testParameters.width, testParameters.height, testParameters.depth, makeComponentMappingRGBA(), VK_IMAGE_TYPE_3D, VK_IMAGE_VIEW_TYPE_3D)
+	, m_renderer2D			(context, testParameters.sampleCount, testParameters.width, testParameters.height, 1, makeComponentMappingRGBA(), VK_IMAGE_TYPE_2D, VK_IMAGE_VIEW_TYPE_2D)
 {
-	m_renderer3D.add3DTexture		(m_texture3D, testParameters.aspectMask, testParameters.backingMode);
+	m_renderer2D.add3DTexture		(m_texture3D, testParameters.aspectMask, testParameters.backingMode);
 
 	VkPhysicalDeviceFeatures		physicalFeatures;
 	context.getInstanceInterface().getPhysicalDeviceFeatures(context.getPhysicalDevice(), &physicalFeatures);
@@ -312,12 +312,12 @@
 tcu::TestStatus Compressed3DTestInstance::iterate (void)
 {
 	tcu::TestLog&					log				= m_context.getTestContext().getLog();
-	const pipeline::TestTexture3D&	texture			= m_renderer3D.get3DTexture(0);
+	const pipeline::TestTexture3D&	texture			= m_renderer2D.get3DTexture(0);
 	const tcu::TextureFormat		textureFormat	= texture.getTextureFormat();
 	const tcu::TextureFormatInfo	formatInfo		= tcu::getTextureFormatInfo(textureFormat);
 
 	ReferenceParams					sampleParams	(TEXTURETYPE_3D);
-	tcu::Surface					rendered		(m_renderer3D.getRenderWidth(), m_renderer3D.getRenderHeight());
+	tcu::Surface					rendered		(m_renderer2D.getRenderWidth(), m_renderer2D.getRenderHeight());
 	vector<float>					texCoord;
 
 	// Setup params for reference.
@@ -376,10 +376,10 @@
 		// Render texture.
 		z = ((float)sliceNdx + 0.5f) / (float)m_testParameters.depth;
 		computeQuadTexCoord3D(texCoord, tcu::Vec3(0.0f, 0.0f, z), tcu::Vec3(1.0f, 1.0f, z), tcu::IVec3(0,1,2));
-		m_renderer3D.renderQuad(rendered, 0, &texCoord[0], sampleParams);
+		m_renderer2D.renderQuad(rendered, 0, &texCoord[0], sampleParams);
 
 		// Compute reference.
-		tcu::Surface referenceFrame	(m_renderer3D.getRenderWidth(), m_renderer3D.getRenderHeight());
+		tcu::Surface referenceFrame	(m_renderer2D.getRenderWidth(), m_renderer2D.getRenderHeight());
 		sampleTexture(tcu::SurfaceAccess(referenceFrame, pixelFormat), m_texture3D->getTexture(), &texCoord[0], sampleParams);
 
 		// Compare and log.
