Fix for VK_EXT_device_memory_report tests

VK_EXT_device_memory_report is no longer enabled by default
on the default device. Need to make a change to device memory report tests,
so that checkSupport function does not query default device.
Instead it should query physicalDevice for supported extensions.

Components: Vulkan

VK-GL-CTS issue: 4429

Affected tests:
dEQP-VK.memory.device_memory_report.*

Change-Id: I256ace4608387ec492de02d818faa44f64e0b46b
diff --git a/external/vulkancts/modules/vulkan/memory/vktMemoryDeviceMemoryReportTests.cpp b/external/vulkancts/modules/vulkan/memory/vktMemoryDeviceMemoryReportTests.cpp
index a42179c..9847573 100644
--- a/external/vulkancts/modules/vulkan/memory/vktMemoryDeviceMemoryReportTests.cpp
+++ b/external/vulkancts/modules/vulkan/memory/vktMemoryDeviceMemoryReportTests.cpp
@@ -1584,10 +1584,43 @@
 	CaseDescription<CommandBuffer>			commandBuffer;
 };
 
+static void checkSupport(Context& context)
+{
+	const std::vector<VkExtensionProperties> extensions =
+		enumerateDeviceExtensionProperties(context.getInstanceInterface(), context.getPhysicalDevice(), DE_NULL);
+
+	for (size_t extNdx = 0; extNdx < extensions.size(); extNdx++)
+	{
+		if (deStringEqual("VK_EXT_device_memory_report", extensions[extNdx].extensionName))
+		{
+			VkPhysicalDeviceDeviceMemoryReportFeaturesEXT deviceMemoryReportFeatures =
+			{
+				VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,
+				DE_NULL,
+				VK_FALSE
+			};
+
+			VkPhysicalDeviceFeatures2 availFeatures;
+			availFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
+			availFeatures.pNext = &deviceMemoryReportFeatures;
+
+			context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &availFeatures);
+
+			if (deviceMemoryReportFeatures.deviceMemoryReport == VK_FALSE)
+			{
+				TCU_THROW(NotSupportedError, "VK_EXT_device_memory_report not supported");
+			}
+			return;
+		}
+	}
+
+	TCU_THROW(NotSupportedError, "VK_EXT_device_memory_report not supported");
+}
+
 template<typename Object>
 static void checkSupport (Context& context, typename Object::Parameters)
 {
-	context.requireDeviceFunctionality("VK_EXT_device_memory_report");
+	checkSupport(context);
 }
 
 template<typename Object>
@@ -1902,11 +1935,6 @@
 	return tcu::TestStatus::pass("Ok");
 }
 
-static void checkSupport (Context& context)
-{
-	context.requireDeviceFunctionality("VK_EXT_device_memory_report");
-}
-
 tcu::TestCaseGroup* createVkDeviceMemoryTestsGroup (tcu::TestContext& testCtx, const char* name, const char* desc)
 {
 	MovePtr<tcu::TestCaseGroup>	group	(new tcu::TestCaseGroup(testCtx, name, desc));
@@ -1919,8 +1947,9 @@
 
 static void checkSupport (Context& context, VkExternalMemoryHandleTypeFlagBits externalMemoryType)
 {
+	checkSupport(context);
+
 	context.requireInstanceFunctionality("VK_KHR_external_memory_capabilities");
-	context.requireDeviceFunctionality("VK_EXT_device_memory_report");
 	context.requireDeviceFunctionality("VK_KHR_dedicated_allocation");
 	context.requireDeviceFunctionality("VK_KHR_get_memory_requirements2");