diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp b/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp index ca71a5f56..74c0e95aa 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp @@ -36,6 +36,9 @@ static const char* GInstanceExtensions[] = { #if VK_EXT_validation_cache VK_EXT_VALIDATION_CACHE_EXTENSION_NAME, +#endif +#if defined(VK_KHR_display) && 0 + VK_KHR_DISPLAY_EXTENSION_NAME, #endif nullptr }; diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.cpp b/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.cpp index 8cdbae19d..a7872d334 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.cpp @@ -1783,6 +1783,33 @@ bool GPUDeviceVulkan::Init() VALIDATE_VULKAN_RESULT(vmaCreateAllocator(&allocatorInfo, &Allocator)); } +#if defined(VK_KHR_display) && 0 + // Enumerate displays and supported video resolutions + uint32_t displaysCount; + // TODO: for some reason vkGetPhysicalDeviceDisplayPropertiesKHR returns 0 displays (on NVIDIA 1070) + if (vkGetPhysicalDeviceDisplayPropertiesKHR && vkGetPhysicalDeviceDisplayPropertiesKHR(gpu, &displaysCount, nullptr) == VK_SUCCESS && displaysCount != 0) + { + Array> displays; + displays.Resize(displaysCount); + vkGetPhysicalDeviceDisplayPropertiesKHR(gpu, &displaysCount, displays.Get()); + ASSERT_LOW_LAYER(displaysCount == displays.Count()); + Array> displayProperties; + for (auto& display : displays) + { + LOG(Info, "Video output '{0}' {1}x{2}", String(display.displayName), display.physicalResolution.width, display.physicalResolution.height); + + uint32_t propertiesCount = 0; + vkGetDisplayModePropertiesKHR(gpu, display.display, &propertiesCount, nullptr); + displayProperties.Resize(propertiesCount); + vkGetDisplayModePropertiesKHR(gpu, display.display, &propertiesCount, displayProperties.Get()); + for (auto& displayProperty : displayProperties) + { + //.. + } + } + } +#endif + // Prepare stuff FenceManager.Init(this); UniformBufferUploader = New(this);