From 9359655712e99d6e49129a0243cdeec4eac6b250 Mon Sep 17 00:00:00 2001 From: David Marcec Date: Fri, 16 Nov 2018 18:07:42 +1100 Subject: Report resolution scaling support for vi and am Specifying an internal resolution in yuzu now will report the scaled changes to vi and am. --- src/core/hle/service/am/am.cpp | 12 ++-- src/core/hle/service/vi/vi.cpp | 30 ++++++--- src/yuzu/configuration/configure_graphics.ui | 94 ++++++++++++++-------------- 3 files changed, 76 insertions(+), 60 deletions(-) diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index 0477ce66e..b7fe39bc9 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp @@ -471,11 +471,15 @@ void ICommonStateGetter::GetDefaultDisplayResolution(Kernel::HLERequestContext& rb.Push(RESULT_SUCCESS); if (Settings::values.use_docked_mode) { - rb.Push(static_cast(Service::VI::DisplayResolution::DockedWidth)); - rb.Push(static_cast(Service::VI::DisplayResolution::DockedHeight)); + rb.Push(static_cast(Service::VI::DisplayResolution::DockedWidth) * + static_cast(Settings::values.resolution_factor)); + rb.Push(static_cast(Service::VI::DisplayResolution::DockedHeight) * + static_cast(Settings::values.resolution_factor)); } else { - rb.Push(static_cast(Service::VI::DisplayResolution::UndockedWidth)); - rb.Push(static_cast(Service::VI::DisplayResolution::UndockedHeight)); + rb.Push(static_cast(Service::VI::DisplayResolution::UndockedWidth) * + static_cast(Settings::values.resolution_factor)); + rb.Push(static_cast(Service::VI::DisplayResolution::UndockedHeight) * + static_cast(Settings::values.resolution_factor)); } LOG_DEBUG(Service_AM, "called"); diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp index d764b2406..85c74c516 100644 --- a/src/core/hle/service/vi/vi.cpp +++ b/src/core/hle/service/vi/vi.cpp @@ -494,7 +494,9 @@ private: if (transaction == TransactionId::Connect) { IGBPConnectRequestParcel request{ctx.ReadBuffer()}; - IGBPConnectResponseParcel response{1280, 720}; + IGBPConnectResponseParcel response{ + static_cast(1280 * Settings::values.resolution_factor), + static_cast(720 * Settings::values.resolution_factor)}; ctx.WriteBuffer(response.Serialize()); } else if (transaction == TransactionId::SetPreallocatedBuffer) { IGBPSetPreallocatedBufferRequestParcel request{ctx.ReadBuffer()}; @@ -670,11 +672,15 @@ private: rb.Push(RESULT_SUCCESS); if (Settings::values.use_docked_mode) { - rb.Push(static_cast(Service::VI::DisplayResolution::DockedWidth)); - rb.Push(static_cast(Service::VI::DisplayResolution::DockedHeight)); + rb.Push(static_cast(Service::VI::DisplayResolution::DockedWidth) * + static_cast(Settings::values.resolution_factor)); + rb.Push(static_cast(Service::VI::DisplayResolution::DockedHeight) * + static_cast(Settings::values.resolution_factor)); } else { - rb.Push(static_cast(Service::VI::DisplayResolution::UndockedWidth)); - rb.Push(static_cast(Service::VI::DisplayResolution::UndockedHeight)); + rb.Push(static_cast(Service::VI::DisplayResolution::UndockedWidth) * + static_cast(Settings::values.resolution_factor)); + rb.Push(static_cast(Service::VI::DisplayResolution::UndockedHeight) * + static_cast(Settings::values.resolution_factor)); } rb.PushRaw(60.0f); @@ -879,11 +885,15 @@ private: rb.Push(RESULT_SUCCESS); if (Settings::values.use_docked_mode) { - rb.Push(static_cast(DisplayResolution::DockedWidth)); - rb.Push(static_cast(DisplayResolution::DockedHeight)); + rb.Push(static_cast(DisplayResolution::DockedWidth) * + static_cast(Settings::values.resolution_factor)); + rb.Push(static_cast(DisplayResolution::DockedHeight) * + static_cast(Settings::values.resolution_factor)); } else { - rb.Push(static_cast(DisplayResolution::UndockedWidth)); - rb.Push(static_cast(DisplayResolution::UndockedHeight)); + rb.Push(static_cast(DisplayResolution::UndockedWidth) * + static_cast(Settings::values.resolution_factor)); + rb.Push(static_cast(DisplayResolution::UndockedHeight) * + static_cast(Settings::values.resolution_factor)); } } @@ -900,6 +910,8 @@ private: void ListDisplays(Kernel::HLERequestContext& ctx) { IPC::RequestParser rp{ctx}; DisplayInfo display_info; + display_info.width *= static_cast(Settings::values.resolution_factor); + display_info.height *= static_cast(Settings::values.resolution_factor); ctx.WriteBuffer(&display_info, sizeof(DisplayInfo)); IPC::ResponseBuilder rb{ctx, 4}; rb.Push(RESULT_SUCCESS); diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui index 91fcad994..e278cdd05 100644 --- a/src/yuzu/configuration/configure_graphics.ui +++ b/src/yuzu/configuration/configure_graphics.ui @@ -23,31 +23,31 @@ - - - - - Limit Speed Percent - - - - - - - % - - - 1 - - - 9999 - - - 100 - - - - + + + + + Limit Speed Percent + + + + + + + % + + + 1 + + + 9999 + + + 100 + + + + @@ -61,7 +61,7 @@ - Internal Resolution:(Currently does nothing.) + Internal Resolution @@ -96,27 +96,27 @@ - - - - - - Background Color: - - - - - - - - 40 - 16777215 - - - - - - + + + + + + Background Color: + + + + + + + + 40 + 16777215 + + + + + + -- cgit v1.2.3