diff options
author | Liam <byteslice@airmail.cc> | 2024-02-14 06:40:06 +0100 |
---|---|---|
committer | Liam <byteslice@airmail.cc> | 2024-02-14 18:03:32 +0100 |
commit | 8863940bf5c57bf0a286c1eea4798d8160f9cee2 (patch) | |
tree | 8bcae257a3cd70e4e4abc4e12d164027c6d0d722 /src/core/hle/service/vi/system_display_service.h | |
parent | vi: rewrite IManagerDisplayService (diff) | |
download | yuzu-8863940bf5c57bf0a286c1eea4798d8160f9cee2.tar yuzu-8863940bf5c57bf0a286c1eea4798d8160f9cee2.tar.gz yuzu-8863940bf5c57bf0a286c1eea4798d8160f9cee2.tar.bz2 yuzu-8863940bf5c57bf0a286c1eea4798d8160f9cee2.tar.lz yuzu-8863940bf5c57bf0a286c1eea4798d8160f9cee2.tar.xz yuzu-8863940bf5c57bf0a286c1eea4798d8160f9cee2.tar.zst yuzu-8863940bf5c57bf0a286c1eea4798d8160f9cee2.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/service/vi/system_display_service.h | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/src/core/hle/service/vi/system_display_service.h b/src/core/hle/service/vi/system_display_service.h index 57ffbbf76..cfcb196fd 100644 --- a/src/core/hle/service/vi/system_display_service.h +++ b/src/core/hle/service/vi/system_display_service.h @@ -1,28 +1,45 @@ // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include "common/math_util.h" +#include "core/hle/service/cmif_types.h" +#include "core/hle/service/nvnflinger/ui/fence.h" #include "core/hle/service/service.h" +namespace Service::Nvnflinger { +struct SharedMemoryPoolLayout; +} + namespace Service::VI { class ISystemDisplayService final : public ServiceFramework<ISystemDisplayService> { public: - explicit ISystemDisplayService(Core::System& system_, Nvnflinger::Nvnflinger& nvnflinger_); + explicit ISystemDisplayService(Core::System& system_, Nvnflinger::Nvnflinger& nvnflinger); ~ISystemDisplayService() override; private: - void GetSharedBufferMemoryHandleId(HLERequestContext& ctx); - void OpenSharedLayer(HLERequestContext& ctx); - void ConnectSharedLayer(HLERequestContext& ctx); - void GetSharedFrameBufferAcquirableEvent(HLERequestContext& ctx); - void AcquireSharedFrameBuffer(HLERequestContext& ctx); - void PresentSharedFrameBuffer(HLERequestContext& ctx); - void SetLayerZ(HLERequestContext& ctx); - void SetLayerVisibility(HLERequestContext& ctx); - void GetDisplayMode(HLERequestContext& ctx); + Result SetLayerZ(u32 z_value, u64 layer_id); + Result SetLayerVisibility(bool visible, u64 layer_id); + Result GetDisplayMode(Out<u32> out_width, Out<u32> out_height, Out<f32> out_refresh_rate, + Out<u32> out_unknown); + + Result GetSharedBufferMemoryHandleId( + Out<s32> out_nvmap_handle, Out<u64> out_size, + OutLargeData<Nvnflinger::SharedMemoryPoolLayout, BufferAttr_HipcMapAlias> out_pool_layout, + u64 buffer_id, ClientAppletResourceUserId aruid); + Result OpenSharedLayer(u64 layer_id); + Result ConnectSharedLayer(u64 layer_id); + Result GetSharedFrameBufferAcquirableEvent(OutCopyHandle<Kernel::KReadableEvent> out_event, + u64 layer_id); + Result AcquireSharedFrameBuffer(Out<android::Fence> out_fence, + Out<std::array<s32, 4>> out_slots, Out<s64> out_target_slot, + u64 layer_id); + Result PresentSharedFrameBuffer(android::Fence fence, Common::Rectangle<s32> crop_region, + u32 window_transform, s32 swap_interval, u64 layer_id, + s64 surface_id); private: - Nvnflinger::Nvnflinger& nvnflinger; + Nvnflinger::Nvnflinger& m_nvnflinger; }; } // namespace Service::VI |