From 4a2d3c83c77f71334bcb167621bcdde8f89efe87 Mon Sep 17 00:00:00 2001 From: Pokechu22 Date: Sat, 18 Feb 2023 12:35:02 -0800 Subject: Software: Implement GetSurfaceInfo() Before, it used a fallback where it returned a default object, where the width and height were set to 0. Presenter::Initialize() used GetSurfaceInfo to set the backbuffer size, then used that size when initializing the on-screen UI (even for the software renderer, where the on-screen UI isn't currently present), which meant that ImGui got a window size of 0 and thus resulted in a failed assertion. Although BindBackbuffer checks for size changes, it doesn't help because ImGui has already been initialized, and the size hasn't actually changed since initialization occured. Fixes one aspect of https://bugs.dolphin-emu.org/issues/13172. --- Source/Core/VideoBackends/Software/SWGfx.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'Source/Core/VideoBackends/Software/SWGfx.cpp') diff --git a/Source/Core/VideoBackends/Software/SWGfx.cpp b/Source/Core/VideoBackends/Software/SWGfx.cpp index 4dfd5dc0f2..5837e19bf8 100644 --- a/Source/Core/VideoBackends/Software/SWGfx.cpp +++ b/Source/Core/VideoBackends/Software/SWGfx.cpp @@ -128,4 +128,11 @@ void SWGfx::SetScissorRect(const MathUtil::Rectangle& rc) Rasterizer::ScissorChanged(); } +SurfaceInfo SWGfx::GetSurfaceInfo() const +{ + GLContext* context = m_window->GetContext(); + return {std::max(context->GetBackBufferWidth(), 1u), std::max(context->GetBackBufferHeight(), 1u), + 1.0f, AbstractTextureFormat::RGBA8}; +} + } // namespace SW -- cgit v1.2.3