From 06635c10cd45361f0df70b4506ec611099bd16d8 Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Wed, 9 Dec 2020 15:14:22 -0700 Subject: vulkaninfo: Fix win32 fullscreen pnext chain vulkaninfo was triggering VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-02671 by not adding a VkSurfaceFullScreenExclusiveWin32InfoEXT in the pNext chain of VkSurfaceCapabilitiesFullScreenExclusiveEXT. This commit fixes it by adding the struct and filling in HMONITOR with the 'current monitor' as gotten by MonitorFromWindow with a default of using the primary monitor. Change-Id: I025f66ef8e2d47ebb29ccd7361d3d162c644de09 --- vulkaninfo/vulkaninfo.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/vulkaninfo/vulkaninfo.h b/vulkaninfo/vulkaninfo.h index 6820bbac..d47f7fb7 100644 --- a/vulkaninfo/vulkaninfo.h +++ b/vulkaninfo/vulkaninfo.h @@ -1219,9 +1219,8 @@ class AppSurface { surface_extension.surface}; if (inst.CheckExtensionEnabled(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME)) { - VkSurfaceFormat2KHR init; + VkSurfaceFormat2KHR init{}; init.sType = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR; - init.pNext = nullptr; surf_formats2 = GetVectorInit("vkGetPhysicalDeviceSurfaceFormats2KHR", inst.ext_funcs.vkGetPhysicalDeviceSurfaceFormats2KHR, init, phys_device, &surface_info2); @@ -1241,11 +1240,16 @@ class AppSurface { surface_capabilities2_khr.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR; buildpNextChain((VkStructureHeader *)&surface_capabilities2_khr, sur_extension_pNextChain); - VkPhysicalDeviceSurfaceInfo2KHR surface_info; + VkPhysicalDeviceSurfaceInfo2KHR surface_info{}; surface_info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR; - surface_info.pNext = nullptr; surface_info.surface = surface_extension.surface; +#if defined(WIN32) + VkSurfaceFullScreenExclusiveWin32InfoEXT win32_fullscreen_exclusive_info{}; + win32_fullscreen_exclusive_info.sType = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT; + win32_fullscreen_exclusive_info.hmonitor = MonitorFromWindow(inst.h_wnd, MONITOR_DEFAULTTOPRIMARY); + surface_info.pNext = reinterpret_cast(&win32_fullscreen_exclusive_info); +#endif // defined(WIN32) VkResult err = inst.ext_funcs.vkGetPhysicalDeviceSurfaceCapabilities2KHR(phys_device, &surface_info, &surface_capabilities2_khr); if (err) THROW_VK_ERR("vkGetPhysicalDeviceSurfaceCapabilities2KHR", err); -- cgit v1.2.3