From 1842df1da5fc52f6aca52d7916e64e43351c6bee Mon Sep 17 00:00:00 2001 From: Liam Date: Wed, 14 Feb 2024 01:18:07 -0500 Subject: vi: rewrite IApplicationDisplayService --- .../hle/service/vi/application_display_service.h | 77 +++++++++++++--------- 1 file changed, 47 insertions(+), 30 deletions(-) (limited to 'src/core/hle/service/vi/application_display_service.h') diff --git a/src/core/hle/service/vi/application_display_service.h b/src/core/hle/service/vi/application_display_service.h index 51ae2c472..5dff4bb31 100644 --- a/src/core/hle/service/vi/application_display_service.h +++ b/src/core/hle/service/vi/application_display_service.h @@ -1,48 +1,65 @@ // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include "core/hle/service/cmif_types.h" #include "core/hle/service/service.h" #include "core/hle/service/vi/vi_types.h" +namespace Kernel { +class KReadableEvent; +} + namespace Service::VI { +class IHOSBinderDriver; +class IManagerDisplayService; +class ISystemDisplayService; + class IApplicationDisplayService final : public ServiceFramework { public: - IApplicationDisplayService(Core::System& system_, Nvnflinger::Nvnflinger& nvnflinger_, - Nvnflinger::HosBinderDriverServer& hos_binder_driver_server_); + IApplicationDisplayService(Core::System& system_, Nvnflinger::Nvnflinger& nvnflinger, + Nvnflinger::HosBinderDriverServer& hos_binder_driver_server); ~IApplicationDisplayService() override; private: - void GetRelayService(HLERequestContext& ctx); - void GetSystemDisplayService(HLERequestContext& ctx); - void GetManagerDisplayService(HLERequestContext& ctx); - void GetIndirectDisplayTransactionService(HLERequestContext& ctx); - void OpenDisplay(HLERequestContext& ctx); - void OpenDefaultDisplay(HLERequestContext& ctx); - void OpenDisplayImpl(HLERequestContext& ctx, std::string_view name); - void CloseDisplay(HLERequestContext& ctx); - void SetDisplayEnabled(HLERequestContext& ctx); - void GetDisplayResolution(HLERequestContext& ctx); - void SetLayerScalingMode(HLERequestContext& ctx); - void ListDisplays(HLERequestContext& ctx); - void OpenLayer(HLERequestContext& ctx); - void CloseLayer(HLERequestContext& ctx); - void CreateStrayLayer(HLERequestContext& ctx); - void DestroyStrayLayer(HLERequestContext& ctx); - void GetDisplayVsyncEvent(HLERequestContext& ctx); - void ConvertScalingMode(HLERequestContext& ctx); - void GetIndirectLayerImageMap(HLERequestContext& ctx); - void GetIndirectLayerImageRequiredMemoryInfo(HLERequestContext& ctx); - -private: - static Result ConvertScalingModeImpl(ConvertedScaleMode* out_scaling_mode, - NintendoScaleMode mode); + Result GetRelayService(Out> out_relay_service); + Result GetSystemDisplayService( + Out> out_system_display_service); + Result GetManagerDisplayService( + Out> out_manager_display_service); + Result GetIndirectDisplayTransactionService( + Out> out_indirect_display_transaction_service); + Result OpenDisplay(Out out_display_id, DisplayName display_name); + Result OpenDefaultDisplay(Out out_display_id); + Result CloseDisplay(u64 display_id); + Result SetDisplayEnabled(u32 state, u64 display_id); + Result GetDisplayResolution(Out out_width, Out out_height, u64 display_id); + Result SetLayerScalingMode(NintendoScaleMode scale_mode, u64 layer_id); + Result ListDisplays(Out out_count, + OutArray out_displays); + Result OpenLayer(Out out_size, OutBuffer out_native_window, + DisplayName display_name, u64 layer_id, ClientAppletResourceUserId aruid); + Result CloseLayer(u64 layer_id); + Result CreateStrayLayer(Out out_layer_id, Out out_size, + OutBuffer out_native_window, u32 flags, + u64 display_id); + Result DestroyStrayLayer(u64 layer_id); + Result GetDisplayVsyncEvent(OutCopyHandle out_vsync_event, + u64 display_id); + Result ConvertScalingMode(Out out_scaling_mode, NintendoScaleMode mode); + Result GetIndirectLayerImageMap( + Out out_size, Out out_stride, + OutBuffer out_buffer, + s64 width, s64 height, u64 indirect_layer_consumer_handle, + ClientAppletResourceUserId aruid); + Result GetIndirectLayerImageRequiredMemoryInfo(Out out_size, Out out_alignment, + s64 width, s64 height); private: - Nvnflinger::Nvnflinger& nvnflinger; - Nvnflinger::HosBinderDriverServer& hos_binder_driver_server; - std::vector stray_layer_ids; - bool vsync_event_fetched{false}; + Nvnflinger::Nvnflinger& m_nvnflinger; + Nvnflinger::HosBinderDriverServer& m_hos_binder_driver_server; + std::vector m_stray_layer_ids; + bool m_vsync_event_fetched{false}; }; } // namespace Service::VI -- cgit v1.2.3