8 changed files with 79 additions and 69 deletions
-
1src/core/CMakeLists.txt
-
1src/core/hle/service/am/service/common_state_getter.cpp
-
44src/core/hle/service/vi/vi.cpp
-
21src/core/hle/service/vi/vi.h
-
5src/core/hle/service/vi/vi_m.cpp
-
5src/core/hle/service/vi/vi_s.cpp
-
66src/core/hle/service/vi/vi_types.h
-
5src/core/hle/service/vi/vi_u.cpp
@ -0,0 +1,66 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project |
|||
// SPDX-License-Identifier: GPL-2.0-or-later |
|||
|
|||
#pragma once |
|||
|
|||
#include "common/common_funcs.h" |
|||
|
|||
namespace Service::VI { |
|||
|
|||
enum class DisplayResolution : u32 { |
|||
DockedWidth = 1920, |
|||
DockedHeight = 1080, |
|||
UndockedWidth = 1280, |
|||
UndockedHeight = 720, |
|||
}; |
|||
|
|||
/// Permission level for a particular VI service instance |
|||
enum class Permission { |
|||
User, |
|||
System, |
|||
Manager, |
|||
}; |
|||
|
|||
/// A policy type that may be requested via GetDisplayService and |
|||
/// GetDisplayServiceWithProxyNameExchange |
|||
enum class Policy { |
|||
User, |
|||
Compositor, |
|||
}; |
|||
|
|||
struct DisplayInfo { |
|||
/// The name of this particular display. |
|||
char display_name[0x40]{"Default"}; |
|||
|
|||
/// Whether or not the display has a limited number of layers. |
|||
u8 has_limited_layers{1}; |
|||
INSERT_PADDING_BYTES(7); |
|||
|
|||
/// Indicates the total amount of layers supported by the display. |
|||
/// @note This is only valid if has_limited_layers is set. |
|||
u64 max_layers{1}; |
|||
|
|||
/// Maximum width in pixels. |
|||
u64 width{1920}; |
|||
|
|||
/// Maximum height in pixels. |
|||
u64 height{1080}; |
|||
}; |
|||
static_assert(sizeof(DisplayInfo) == 0x60, "DisplayInfo has wrong size"); |
|||
|
|||
class NativeWindow final { |
|||
public: |
|||
constexpr explicit NativeWindow(u32 id_) : id{id_} {} |
|||
constexpr explicit NativeWindow(const NativeWindow& other) = default; |
|||
|
|||
private: |
|||
const u32 magic = 2; |
|||
const u32 process_id = 1; |
|||
const u64 id; |
|||
INSERT_PADDING_WORDS(2); |
|||
std::array<u8, 8> dispdrv = {'d', 'i', 's', 'p', 'd', 'r', 'v', '\0'}; |
|||
INSERT_PADDING_WORDS(2); |
|||
}; |
|||
static_assert(sizeof(NativeWindow) == 0x28, "NativeWindow has wrong size"); |
|||
|
|||
} // namespace Service::VI |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue