diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 48b8e4cfd3..972b0e15fc 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -315,9 +315,7 @@ bool Renderer::CalculateTargetSize() if (max_size < EFB_WIDTH * m_efb_scale) m_efb_scale = max_size / EFB_WIDTH; - int new_efb_width = 0; - int new_efb_height = 0; - std::tie(new_efb_width, new_efb_height) = CalculateTargetScale(EFB_WIDTH, EFB_HEIGHT); + auto [new_efb_width, new_efb_height] = CalculateTargetScale(EFB_WIDTH, EFB_HEIGHT); new_efb_width = std::max(new_efb_width, 1); new_efb_height = std::max(new_efb_height, 1); @@ -631,8 +629,8 @@ void Renderer::ScaleTexture(AbstractFramebuffer* dst_framebuffer, BeginUtilityDrawing(); // The shader needs to know the source rectangle. - const auto converted_src_rect = g_renderer->ConvertFramebufferRectangle( - src_rect, src_texture->GetWidth(), src_texture->GetHeight()); + const auto converted_src_rect = + ConvertFramebufferRectangle(src_rect, src_texture->GetWidth(), src_texture->GetHeight()); const float rcp_src_width = 1.0f / src_texture->GetWidth(); const float rcp_src_height = 1.0f / src_texture->GetHeight(); const std::array uniforms = {{converted_src_rect.left * rcp_src_width, @@ -665,13 +663,13 @@ void Renderer::ScaleTexture(AbstractFramebuffer* dst_framebuffer, MathUtil::Rectangle Renderer::ConvertFramebufferRectangle(const MathUtil::Rectangle& rect, - const AbstractFramebuffer* framebuffer) + const AbstractFramebuffer* framebuffer) const { return ConvertFramebufferRectangle(rect, framebuffer->GetWidth(), framebuffer->GetHeight()); } MathUtil::Rectangle Renderer::ConvertFramebufferRectangle(const MathUtil::Rectangle& rect, - u32 fb_width, u32 fb_height) + u32 fb_width, u32 fb_height) const { MathUtil::Rectangle ret = rect; if (g_ActiveConfig.backend_info.bUsesLowerLeftOrigin) @@ -682,7 +680,7 @@ MathUtil::Rectangle Renderer::ConvertFramebufferRectangle(const MathUtil::R return ret; } -MathUtil::Rectangle Renderer::ConvertEFBRectangle(const MathUtil::Rectangle& rc) +MathUtil::Rectangle Renderer::ConvertEFBRectangle(const MathUtil::Rectangle& rc) const { MathUtil::Rectangle result; result.left = EFBToScaledX(rc.left); @@ -816,24 +814,23 @@ void Renderer::UpdateDrawRectangle() void Renderer::SetWindowSize(int width, int height) { - std::tie(width, height) = CalculateOutputDimensions(width, height); + const auto [out_width, out_height] = CalculateOutputDimensions(width, height); // Track the last values of width/height to avoid sending a window resize event every frame. - if (width != m_last_window_request_width || height != m_last_window_request_height) - { - m_last_window_request_width = width; - m_last_window_request_height = height; - Host_RequestRenderWindowSize(width, height); - } + if (out_width == m_last_window_request_width && out_height == m_last_window_request_height) + return; + + m_last_window_request_width = out_width; + m_last_window_request_height = out_height; + Host_RequestRenderWindowSize(out_width, out_height); } -std::tuple Renderer::CalculateOutputDimensions(int width, int height) +std::tuple Renderer::CalculateOutputDimensions(int width, int height) const { width = std::max(width, 1); height = std::max(height, 1); - float scaled_width, scaled_height; - std::tie(scaled_width, scaled_height) = ScaleToDisplayAspectRatio(width, height); + auto [scaled_width, scaled_height] = ScaleToDisplayAspectRatio(width, height); if (g_ActiveConfig.bCrop) { @@ -1039,7 +1036,7 @@ bool Renderer::InitializeImGui() pconfig.framebuffer_state.samples = 1; pconfig.framebuffer_state.per_sample_shading = false; pconfig.usage = AbstractPipelineUsage::Utility; - m_imgui_pipeline = g_renderer->CreatePipeline(pconfig); + m_imgui_pipeline = CreatePipeline(pconfig); if (!m_imgui_pipeline) { PanicAlert("Failed to create imgui pipeline"); @@ -1210,11 +1207,9 @@ void Renderer::Swap(u32 xfb_addr, u32 fb_width, u32 fb_stride, u32 fb_height, u6 else { // Heuristic to detect if a GameCube game is in 16:9 anamorphic widescreen mode. - - size_t flush_count_4_3, flush_count_anamorphic; - std::tie(flush_count_4_3, flush_count_anamorphic) = + const auto [flush_count_4_3, flush_count_anamorphic] = g_vertex_manager->ResetFlushAspectRatioCount(); - size_t flush_total = flush_count_4_3 + flush_count_anamorphic; + const size_t flush_total = flush_count_4_3 + flush_count_anamorphic; // Modify the threshold based on which aspect ratio we're already using: if // the game's in 4:3, it probably won't switch to anamorphic, and vice-versa. @@ -1344,8 +1339,7 @@ void Renderer::RenderXFBToScreen(const MathUtil::Rectangle& target_rc, if (g_ActiveConfig.stereo_mode == StereoMode::SBS || g_ActiveConfig.stereo_mode == StereoMode::TAB) { - MathUtil::Rectangle left_rc, right_rc; - std::tie(left_rc, right_rc) = ConvertStereoRectangle(target_rc); + const auto [left_rc, right_rc] = ConvertStereoRectangle(target_rc); m_post_processor->BlitFromTexture(left_rc, source_rc, source_texture, 0); m_post_processor->BlitFromTexture(right_rc, source_rc, source_texture, 1); @@ -1356,7 +1350,7 @@ void Renderer::RenderXFBToScreen(const MathUtil::Rectangle& target_rc, } } -bool Renderer::IsFrameDumping() +bool Renderer::IsFrameDumping() const { if (m_screenshot_request.IsSet()) return true; diff --git a/Source/Core/VideoCommon/RenderBase.h b/Source/Core/VideoCommon/RenderBase.h index 116080a1a8..6ff7f410dd 100644 --- a/Source/Core/VideoCommon/RenderBase.h +++ b/Source/Core/VideoCommon/RenderBase.h @@ -159,13 +159,14 @@ public: // Converts an upper-left to lower-left if required by the backend, optionally // clamping to the framebuffer size. MathUtil::Rectangle ConvertFramebufferRectangle(const MathUtil::Rectangle& rect, - u32 fb_width, u32 fb_height); - MathUtil::Rectangle ConvertFramebufferRectangle(const MathUtil::Rectangle& rect, - const AbstractFramebuffer* framebuffer); + u32 fb_width, u32 fb_height) const; + MathUtil::Rectangle + ConvertFramebufferRectangle(const MathUtil::Rectangle& rect, + const AbstractFramebuffer* framebuffer) const; // EFB coordinate conversion functions // Use this to convert a whole native EFB rect to backbuffer coordinates - MathUtil::Rectangle ConvertEFBRectangle(const MathUtil::Rectangle& rc); + MathUtil::Rectangle ConvertEFBRectangle(const MathUtil::Rectangle& rc) const; const MathUtil::Rectangle& GetTargetRectangle() const { return m_target_rectangle; } float CalculateDrawAspectRatio() const; @@ -324,7 +325,7 @@ protected: private: void RunFrameDumps(); - std::tuple CalculateOutputDimensions(int width, int height); + std::tuple CalculateOutputDimensions(int width, int height) const; PEControl::PixelFormat m_prev_efb_format = PEControl::INVALID_FMT; unsigned int m_efb_scale = 1; @@ -373,7 +374,7 @@ private: void DumpFrameToImage(const FrameDumpConfig& config); void ShutdownFrameDumping(); - bool IsFrameDumping(); + bool IsFrameDumping() const; // Checks that the frame dump render texture exists and is the correct size. bool CheckFrameDumpRenderTexture(u32 target_width, u32 target_height);