From d24079e693befa45e0ea1d89d70f48adf25614a8 Mon Sep 17 00:00:00 2001 From: FireNX70 Date: Tue, 11 Jun 2024 15:56:24 +0200 Subject: [PATCH] Better tile scaling calc --- src/GPU3D_Compute.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/GPU3D_Compute.cpp b/src/GPU3D_Compute.cpp index 294cd518..9d5a2378 100644 --- a/src/GPU3D_Compute.cpp +++ b/src/GPU3D_Compute.cpp @@ -302,6 +302,8 @@ void ComputeRenderer::Reset(GPU& gpu) void ComputeRenderer::SetRenderSettings(int scale, bool highResolutionCoordinates) { + unsigned char TileScale; + CurGLCompositor.SetScaleFactor(scale); if (ScaleFactor != -1) @@ -315,7 +317,13 @@ void ComputeRenderer::SetRenderSettings(int scale, bool highResolutionCoordinate ScreenWidth = 256 * ScaleFactor; ScreenHeight = 192 * ScaleFactor; - TileSize = std::min(8 << (ScaleFactor / 5), 32); + //Starting at 4.5x we want to double TileSize every time scale doubles + TileScale = 2 * ScaleFactor / 9; + TileScale &= ~(TileScale >> 1); + TileScale <<= 1; + TileScale += TileScale == 0; + + TileSize = std::min(8 * TileScale, 32); CoarseTileCountY = TileSize < 32 ? 4 : 6; CoarseTileW = CoarseTileCountX * TileSize; CoarseTileH = CoarseTileCountY * TileSize;