diff options
| author | 2018-11-16 18:07:42 +1100 | |
|---|---|---|
| committer | 2018-11-16 18:07:42 +1100 | |
| commit | 9359655712e99d6e49129a0243cdeec4eac6b250 (patch) | |
| tree | 5a4df04e5b49ef01a3ffd867517d929693d3e577 /src/core | |
| parent | Fixed priority switching edge case for handheld (#1675) (diff) | |
| download | yuzu-9359655712e99d6e49129a0243cdeec4eac6b250.tar.gz yuzu-9359655712e99d6e49129a0243cdeec4eac6b250.tar.xz yuzu-9359655712e99d6e49129a0243cdeec4eac6b250.zip | |
Report resolution scaling support for vi and am
Specifying an internal resolution in yuzu now will report the scaled changes to vi and am.
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hle/service/am/am.cpp | 12 | ||||
| -rw-r--r-- | src/core/hle/service/vi/vi.cpp | 30 |
2 files changed, 29 insertions, 13 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& | |||
| 471 | rb.Push(RESULT_SUCCESS); | 471 | rb.Push(RESULT_SUCCESS); |
| 472 | 472 | ||
| 473 | if (Settings::values.use_docked_mode) { | 473 | if (Settings::values.use_docked_mode) { |
| 474 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedWidth)); | 474 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedWidth) * |
| 475 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedHeight)); | 475 | static_cast<u32>(Settings::values.resolution_factor)); |
| 476 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedHeight) * | ||
| 477 | static_cast<u32>(Settings::values.resolution_factor)); | ||
| 476 | } else { | 478 | } else { |
| 477 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::UndockedWidth)); | 479 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::UndockedWidth) * |
| 478 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::UndockedHeight)); | 480 | static_cast<u32>(Settings::values.resolution_factor)); |
| 481 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::UndockedHeight) * | ||
| 482 | static_cast<u32>(Settings::values.resolution_factor)); | ||
| 479 | } | 483 | } |
| 480 | 484 | ||
| 481 | LOG_DEBUG(Service_AM, "called"); | 485 | 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: | |||
| 494 | 494 | ||
| 495 | if (transaction == TransactionId::Connect) { | 495 | if (transaction == TransactionId::Connect) { |
| 496 | IGBPConnectRequestParcel request{ctx.ReadBuffer()}; | 496 | IGBPConnectRequestParcel request{ctx.ReadBuffer()}; |
| 497 | IGBPConnectResponseParcel response{1280, 720}; | 497 | IGBPConnectResponseParcel response{ |
| 498 | static_cast<u32>(1280 * Settings::values.resolution_factor), | ||
| 499 | static_cast<u32>(720 * Settings::values.resolution_factor)}; | ||
| 498 | ctx.WriteBuffer(response.Serialize()); | 500 | ctx.WriteBuffer(response.Serialize()); |
| 499 | } else if (transaction == TransactionId::SetPreallocatedBuffer) { | 501 | } else if (transaction == TransactionId::SetPreallocatedBuffer) { |
| 500 | IGBPSetPreallocatedBufferRequestParcel request{ctx.ReadBuffer()}; | 502 | IGBPSetPreallocatedBufferRequestParcel request{ctx.ReadBuffer()}; |
| @@ -670,11 +672,15 @@ private: | |||
| 670 | rb.Push(RESULT_SUCCESS); | 672 | rb.Push(RESULT_SUCCESS); |
| 671 | 673 | ||
| 672 | if (Settings::values.use_docked_mode) { | 674 | if (Settings::values.use_docked_mode) { |
| 673 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedWidth)); | 675 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedWidth) * |
| 674 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedHeight)); | 676 | static_cast<u32>(Settings::values.resolution_factor)); |
| 677 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedHeight) * | ||
| 678 | static_cast<u32>(Settings::values.resolution_factor)); | ||
| 675 | } else { | 679 | } else { |
| 676 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::UndockedWidth)); | 680 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::UndockedWidth) * |
| 677 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::UndockedHeight)); | 681 | static_cast<u32>(Settings::values.resolution_factor)); |
| 682 | rb.Push(static_cast<u32>(Service::VI::DisplayResolution::UndockedHeight) * | ||
| 683 | static_cast<u32>(Settings::values.resolution_factor)); | ||
| 678 | } | 684 | } |
| 679 | 685 | ||
| 680 | rb.PushRaw<float>(60.0f); | 686 | rb.PushRaw<float>(60.0f); |
| @@ -879,11 +885,15 @@ private: | |||
| 879 | rb.Push(RESULT_SUCCESS); | 885 | rb.Push(RESULT_SUCCESS); |
| 880 | 886 | ||
| 881 | if (Settings::values.use_docked_mode) { | 887 | if (Settings::values.use_docked_mode) { |
| 882 | rb.Push(static_cast<u64>(DisplayResolution::DockedWidth)); | 888 | rb.Push(static_cast<u64>(DisplayResolution::DockedWidth) * |
| 883 | rb.Push(static_cast<u64>(DisplayResolution::DockedHeight)); | 889 | static_cast<u32>(Settings::values.resolution_factor)); |
| 890 | rb.Push(static_cast<u64>(DisplayResolution::DockedHeight) * | ||
| 891 | static_cast<u32>(Settings::values.resolution_factor)); | ||
| 884 | } else { | 892 | } else { |
| 885 | rb.Push(static_cast<u64>(DisplayResolution::UndockedWidth)); | 893 | rb.Push(static_cast<u64>(DisplayResolution::UndockedWidth) * |
| 886 | rb.Push(static_cast<u64>(DisplayResolution::UndockedHeight)); | 894 | static_cast<u32>(Settings::values.resolution_factor)); |
| 895 | rb.Push(static_cast<u64>(DisplayResolution::UndockedHeight) * | ||
| 896 | static_cast<u32>(Settings::values.resolution_factor)); | ||
| 887 | } | 897 | } |
| 888 | } | 898 | } |
| 889 | 899 | ||
| @@ -900,6 +910,8 @@ private: | |||
| 900 | void ListDisplays(Kernel::HLERequestContext& ctx) { | 910 | void ListDisplays(Kernel::HLERequestContext& ctx) { |
| 901 | IPC::RequestParser rp{ctx}; | 911 | IPC::RequestParser rp{ctx}; |
| 902 | DisplayInfo display_info; | 912 | DisplayInfo display_info; |
| 913 | display_info.width *= static_cast<u64>(Settings::values.resolution_factor); | ||
| 914 | display_info.height *= static_cast<u64>(Settings::values.resolution_factor); | ||
| 903 | ctx.WriteBuffer(&display_info, sizeof(DisplayInfo)); | 915 | ctx.WriteBuffer(&display_info, sizeof(DisplayInfo)); |
| 904 | IPC::ResponseBuilder rb{ctx, 4}; | 916 | IPC::ResponseBuilder rb{ctx, 4}; |
| 905 | rb.Push(RESULT_SUCCESS); | 917 | rb.Push(RESULT_SUCCESS); |