diff options
author | Morph <39850852+Morph1984@users.noreply.github.com> | 2020-07-05 12:26:07 +0200 |
---|---|---|
committer | Morph <39850852+Morph1984@users.noreply.github.com> | 2020-07-05 12:26:21 +0200 |
commit | c0dc8f9d2567bd2a7f0bbd0bf4a5f42194bbb102 (patch) | |
tree | 7e11b12eaad4ea25dbefcc08d1e0a5349b3e394d /src/core/hle/service/am/am.cpp | |
parent | Merge pull request #4194 from ReinUsesLisp/fix-shader-cache (diff) | |
download | yuzu-c0dc8f9d2567bd2a7f0bbd0bf4a5f42194bbb102.tar yuzu-c0dc8f9d2567bd2a7f0bbd0bf4a5f42194bbb102.tar.gz yuzu-c0dc8f9d2567bd2a7f0bbd0bf4a5f42194bbb102.tar.bz2 yuzu-c0dc8f9d2567bd2a7f0bbd0bf4a5f42194bbb102.tar.lz yuzu-c0dc8f9d2567bd2a7f0bbd0bf4a5f42194bbb102.tar.xz yuzu-c0dc8f9d2567bd2a7f0bbd0bf4a5f42194bbb102.tar.zst yuzu-c0dc8f9d2567bd2a7f0bbd0bf4a5f42194bbb102.zip |
Diffstat (limited to 'src/core/hle/service/am/am.cpp')
-rw-r--r-- | src/core/hle/service/am/am.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index 1bb544dd8..2642c24cc 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp @@ -271,7 +271,7 @@ ISelfController::ISelfController(Core::System& system, {41, nullptr, "IsSystemBufferSharingEnabled"}, {42, nullptr, "GetSystemSharedLayerHandle"}, {43, nullptr, "GetSystemSharedBufferHandle"}, - {44, nullptr, "CreateManagedDisplaySeparableLayer"}, + {44, &ISelfController::CreateManagedDisplaySeparableLayer, "CreateManagedDisplaySeparableLayer"}, {45, nullptr, "SetManagedDisplayLayerSeparationMode"}, {50, &ISelfController::SetHandlesRequestToDisplay, "SetHandlesRequestToDisplay"}, {51, nullptr, "ApproveToDisplay"}, @@ -461,6 +461,24 @@ void ISelfController::CreateManagedDisplayLayer(Kernel::HLERequestContext& ctx) rb.Push(*layer_id); } +void ISelfController::CreateManagedDisplaySeparableLayer(Kernel::HLERequestContext& ctx) { + LOG_WARNING(Service_AM, "(STUBBED) called"); + + // TODO(Subv): Find out how AM determines the display to use, for now just + // create the layer in the Default display. + // This calls nn::vi::CreateRecordingLayer() which creates another layer. + // Currently we do not support more than 1 layer per display, output 1 layer id for now. + // Outputting 1 layer id instead of the expected 2 has not been observed to cause any adverse + // side effects. + // TODO: Support multiple layers + const auto display_id = nvflinger->OpenDisplay("Default"); + const auto layer_id = nvflinger->CreateLayer(*display_id); + + IPC::ResponseBuilder rb{ctx, 4}; + rb.Push(RESULT_SUCCESS); + rb.Push(*layer_id); +} + void ISelfController::SetHandlesRequestToDisplay(Kernel::HLERequestContext& ctx) { LOG_WARNING(Service_AM, "(STUBBED) called"); |