mirror of
https://github.com/skyline-emu/skyline.git
synced 2024-12-28 08:25:30 +03:00
Reserve host1x channel syncpoints
This commit is contained in:
parent
b0a5dab0f7
commit
5087d3dc2a
@ -15,6 +15,10 @@ namespace skyline::service::nvdrv::core {
|
||||
// https://github.com/Jetson-TX1-AndroidTV/android_kernel_jetson_tx1_hdmi_primary/blob/8f74a72394efb871cb3f886a3de2998cd7ff2990/drivers/gpu/host1x/drm/dc.c#L660
|
||||
ReserveSyncpoint(VBlank0SyncpointId, true);
|
||||
ReserveSyncpoint(VBlank1SyncpointId, true);
|
||||
|
||||
for (u32 syncpointId : ChannelSyncpoints)
|
||||
if (syncpointId)
|
||||
ReserveSyncpoint(syncpointId, false);
|
||||
}
|
||||
|
||||
u32 SyncpointManager::ReserveSyncpoint(u32 id, bool clientManaged) {
|
||||
|
@ -8,6 +8,20 @@
|
||||
#include <services/common/fence.h>
|
||||
|
||||
namespace skyline::service::nvdrv::core {
|
||||
/**
|
||||
* @brief A unique ID for a specific channel type
|
||||
*/
|
||||
enum class ChannelType : u32 {
|
||||
MsEnc = 0,
|
||||
Vic = 1,
|
||||
Gpu = 2,
|
||||
NvDec = 3,
|
||||
Display = 4,
|
||||
NvJpg = 5,
|
||||
TSec = 6,
|
||||
Max = 7
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief SyncpointManager handles allocating and accessing host1x syncpoints, these are cached versions of the HW syncpoints which are intermittently synced
|
||||
* @note Refer to Chapter 14 of the Tegra X1 TRM for an exhaustive overview of them
|
||||
@ -39,6 +53,16 @@ namespace skyline::service::nvdrv::core {
|
||||
u32 FindFreeSyncpoint();
|
||||
|
||||
public:
|
||||
static constexpr std::array<u32, static_cast<u32>(ChannelType::Max)> ChannelSyncpoints{
|
||||
0x0, // `MsEnc` is unimplemented
|
||||
0xC, // `Vic`
|
||||
0x0, // `Gpu` syncpoints are allocated per-channel instead
|
||||
0x36, // `NvDec`
|
||||
0x0, // `Display` is unimplemented
|
||||
0x37, // `NvJpg`
|
||||
0x0, // `TSec` is unimplemented
|
||||
}; //!< Maps each channel ID to a constant syncpoint
|
||||
|
||||
SyncpointManager(const DeviceState &state);
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user