// 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 { public: explicit ISystemDisplayService(Core::System& system_, Nvnflinger::Nvnflinger& nvnflinger); ~ISystemDisplayService() override; private: Result SetLayerZ(u32 z_value, u64 layer_id); Result SetLayerVisibility(bool visible, u64 layer_id); Result GetDisplayMode(Out out_width, Out out_height, Out out_refresh_rate, Out out_unknown); Result GetSharedBufferMemoryHandleId( Out out_nvmap_handle, Out out_size, OutLargeData out_pool_layout, u64 buffer_id, ClientAppletResourceUserId aruid); Result OpenSharedLayer(u64 layer_id); Result ConnectSharedLayer(u64 layer_id); Result GetSharedFrameBufferAcquirableEvent(OutCopyHandle out_event, u64 layer_id); Result AcquireSharedFrameBuffer(Out out_fence, Out> out_slots, Out out_target_slot, u64 layer_id); Result PresentSharedFrameBuffer(android::Fence fence, Common::Rectangle crop_region, u32 window_transform, s32 swap_interval, u64 layer_id, s64 surface_id); private: Nvnflinger::Nvnflinger& m_nvnflinger; }; } // namespace Service::VI