Skip to content

Commit ba32959

Browse files
committed
VulkanDevice: Allow 0x0 window size
Fixes minimizing in render-to-separate-window mode.
1 parent 4fc49ee commit ba32959

3 files changed

Lines changed: 5 additions & 5 deletions

File tree

src/core/gpu.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,7 @@ float GPU::ComputeDisplayAspectRatio() const
666666
if (g_settings.display_aspect_ratio == DisplayAspectRatio::MatchWindow)
667667
{
668668
const WindowInfo& wi = GPUThread::GetRenderWindowInfo();
669-
if (!wi.IsSurfaceless())
669+
if (!wi.IsSurfaceless() && wi.surface_width > 0 && wi.surface_height > 0)
670670
ar = static_cast<float>(wi.surface_width) / static_cast<float>(wi.surface_height);
671671
}
672672
else if (g_settings.display_aspect_ratio == DisplayAspectRatio::Custom)

src/core/gpu_thread.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1270,8 +1270,9 @@ void GPUThread::DisplayWindowResizedOnThread()
12701270
if (!swap_chain)
12711271
return;
12721272

1273-
const float f_width = static_cast<float>(swap_chain->GetWidth());
1274-
const float f_height = static_cast<float>(swap_chain->GetHeight());
1273+
// our imgui stuff can't cope with 0x0/hidden windows
1274+
const float f_width = static_cast<float>(std::max(swap_chain->GetWidth(), 1u));
1275+
const float f_height = static_cast<float>(std::max(swap_chain->GetHeight(), 1u));
12751276
ImGuiManager::WindowResized(f_width, f_height);
12761277
InputManager::SetDisplayWindowSize(f_width, f_height);
12771278

src/util/vulkan_swap_chain.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -540,8 +540,7 @@ bool VulkanSwapChain::CreateSwapChain(VulkanDevice& dev, Error* error)
540540
if (old_swap_chain != VK_NULL_HANDLE)
541541
vkDestroySwapchainKHR(vkdev, old_swap_chain, nullptr);
542542

543-
if (window_size.width == 0 || window_size.width > std::numeric_limits<u16>::max() || window_size.height == 0 ||
544-
window_size.height > std::numeric_limits<u16>::max())
543+
if (window_size.width > std::numeric_limits<u16>::max() || window_size.height > std::numeric_limits<u16>::max())
545544
{
546545
Error::SetStringFmt(error, "Invalid swap chain dimensions: {}x{}", window_size.width, window_size.height);
547546
return false;

0 commit comments

Comments
 (0)