DPI code cleanup

This commit is contained in:
Henrik Rydgård
2025-02-20 14:10:50 -06:00
parent dc73e20bd7
commit 23f43dd9fa
5 changed files with 32 additions and 26 deletions
+4 -2
View File
@@ -839,12 +839,14 @@ int main(int argc, char *argv[])
if (res.width() < res.height())
res.transpose();
g_display.pixel_xres = res.width();
g_display.pixel_yres = res.height();
g_display.dpi_scale = screen->logicalDotsPerInchX() / screen->physicalDotsPerInchX();
// We assume physicalDotsPerInchY is the same as PerInchX.
g_display.dpi_scale_real = g_display.dpi_scale;
g_display.dpi_scale_real = screen->logicalDotsPerInchX() / screen->physicalDotsPerInchX();
g_display.dpi_scale = g_display.dpi_scale_real;
g_display.dp_xres = (int)(g_display.pixel_xres * g_display.dpi_scale);
g_display.dp_yres = (int)(g_display.pixel_yres * g_display.dpi_scale);
+16 -15
View File
@@ -1517,7 +1517,7 @@ static bool IsWindowSmall(int pixelWidth, int pixelHeight) {
return g_Config.IsPortrait() ? (h < 480 + 80) : (w < 480 + 80);
}
bool Native_UpdateScreenScale(int width, int height) {
bool Native_UpdateScreenScale(int pixel_width, int pixel_height) {
bool smallWindow;
float g_logical_dpi = System_GetPropertyFloat(SYSPROP_DISPLAY_LOGICAL_DPI);
@@ -1530,29 +1530,30 @@ bool Native_UpdateScreenScale(int width, int height) {
g_logical_dpi = 96.0f;
}
g_display.dpi_scale = g_logical_dpi / g_display.dpi;
g_display.dpi_scale_real = g_display.dpi_scale;
g_display.dpi_scale_real = g_logical_dpi / g_display.dpi;
g_display.dpi_scale = g_display.dpi_scale_real;
smallWindow = IsWindowSmall(width, height);
smallWindow = IsWindowSmall(pixel_width, pixel_height);
if (smallWindow) {
g_display.dpi /= 2.0f;
g_display.dpi_scale *= 2.0f;
}
g_display.pixel_in_dps = 1.0f / g_display.dpi_scale;
int new_dp_xres = (int)(width * g_display.dpi_scale);
int new_dp_yres = (int)(height * g_display.dpi_scale);
int new_dp_xres = (int)(pixel_width * g_display.dpi_scale);
int new_dp_yres = (int)(pixel_height * g_display.dpi_scale);
bool dp_changed = new_dp_xres != g_display.dp_xres || new_dp_yres != g_display.dp_yres;
bool px_changed = g_display.pixel_xres != width || g_display.pixel_yres != height;
bool px_changed = g_display.pixel_xres != pixel_width || g_display.pixel_yres != pixel_height;
if (dp_changed || px_changed) {
g_display.dp_xres = new_dp_xres;
g_display.dp_yres = new_dp_yres;
g_display.pixel_xres = width;
g_display.pixel_yres = height;
NativeResized();
return true;
if (!dp_changed && !px_changed) {
return false;
}
return false;
g_display.dp_xres = new_dp_xres;
g_display.dp_yres = new_dp_yres;
g_display.pixel_xres = pixel_width;
g_display.pixel_yres = pixel_height;
NativeResized();
return true;
}
+5 -2
View File
@@ -143,16 +143,19 @@ void PPSSPP_UWPMain::UpdateScreenState() {
if (g_display.rotation == DisplayRotation::ROTATE_90 || g_display.rotation == DisplayRotation::ROTATE_270) {
// We need to swap our width/height.
// TODO: This is most likely dead code, since we no longer support Windows Phone.
std::swap(g_display.pixel_xres, g_display.pixel_yres);
}
g_display.dpi = m_deviceResources->GetActualDpi();
if (System_GetPropertyInt(SYSPROP_DEVICE_TYPE) == DEVICE_TYPE_MOBILE) {
// Boost DPI a bit to look better.
g_display.dpi *= 96.0f / 136.0f;
}
g_display.dpi_scale = 96.0f / g_display.dpi;
g_display.dpi_scale_real = 96.0f / g_display.dpi;
g_display.dpi_scale = g_display.dpi_scale_real;
g_display.pixel_in_dps = 1.0f / g_display.dpi_scale;
g_display.dp_xres = g_display.pixel_xres * g_display.dpi_scale;
+6 -7
View File
@@ -152,8 +152,8 @@ static int deviceType;
// Exposed so it can be displayed on the touchscreen test.
static int display_xres;
static int display_yres;
static int display_dpi_x;
static int display_dpi_y;
static int display_dpi;
static int backbuffer_format; // Android PixelFormat enum
static int desiredBackbufferSizeX;
@@ -999,8 +999,8 @@ extern "C" jboolean Java_org_ppsspp_ppsspp_NativeRenderer_displayInit(JNIEnv * e
}
static void recalculateDpi() {
g_display.dpi = (float)display_dpi_x;
g_display.dpi_scale_real = 240.0f / (float)display_dpi_x;
g_display.dpi = (float)display_dpi;
g_display.dpi_scale_real = 240.0f / (float)display_dpi;
g_display.dpi_scale = g_display.dpi_scale_real;
g_display.dp_xres = display_xres * g_display.dpi_scale;
@@ -1415,14 +1415,13 @@ extern "C" void JNICALL Java_org_ppsspp_ppsspp_NativeApp_setDisplayParameters(JN
bool changed = false;
changed = changed || display_xres != xres || display_yres != yres;
changed = changed || display_dpi_x != dpi || display_dpi_y != dpi;
changed = changed || display_dpi != dpi;
changed = changed || g_display.display_hz != refreshRate;
if (changed) {
display_xres = xres;
display_yres = yres;
display_dpi_x = dpi;
display_dpi_y = dpi;
display_dpi = dpi;
g_display.display_hz = refreshRate;
recalculateDpi();
+1
View File
@@ -1359,6 +1359,7 @@ ULES00808 = true
ULUS10270 = true
[DeswizzleDepth]
# Ratchet & Clank smoke effects (#15859)
UCUS98633 = true
UCAS40145 = true
UCES00420 = true