Skip to content

Commit b93e9b7

Browse files
author
N3xoX1
committed
Add HostSyncpointValue to the video module
1 parent cc2a3dd commit b93e9b7

5 files changed

Lines changed: 18 additions & 3 deletions

File tree

src/nxemu-module-spec/base.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
enum
1818
{
1919
MODULE_LOADER_SPECS_VERSION = 0x0106,
20-
MODULE_VIDEO_SPECS_VERSION = 0x0104,
20+
MODULE_VIDEO_SPECS_VERSION = 0x0105,
2121
MODULE_CPU_SPECS_VERSION = 0x0102,
2222
MODULE_OPERATING_SYSTEM_SPECS_VERSION = 0x0106,
2323
};

src/nxemu-module-spec/video.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ __interface IVideo
5252
void PushGPUEntries(int32_t bindId, const uint64_t * commandList, uint32_t commandListSize, const uint32_t * prefetchCommandlist, uint32_t prefetchCommandlistSize) = 0;
5353
void ApplyOpOnDeviceMemoryPointer(const uint8_t * pointer, uint32_t * scratchBuffer, size_t scratchBufferSize, DeviceMemoryOperation operation, void * userData) = 0;
5454
bool OnCPUWrite(uint64_t addr, uint64_t size) = 0;
55+
uint32_t HostSyncpointValue(uint32_t id) = 0;
5556
};
5657

5758
EXPORT IVideo * CALL CreateVideo(IRenderWindow & RenderWindow, ISwitchSystem & System);

src/nxemu-os/core/hle/service/nvdrv/core/syncpoint_manager.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "yuzu_common/yuzu_assert.h"
66
#include "core/hle/service/nvdrv/core/syncpoint_manager.h"
7+
#include <nxemu-module-spec/video.h>
78

89
namespace Service::Nvidia::NvCore {
910

@@ -106,8 +107,15 @@ u32 SyncpointManager::ReadSyncpointMinValue(u32 id) {
106107
}
107108

108109
u32 SyncpointManager::UpdateMin(u32 id) {
109-
UNIMPLEMENTED();
110-
return 0;
110+
auto& syncpoint = syncpoints.at(id);
111+
112+
if (!syncpoint.reserved) {
113+
ASSERT(false);
114+
return 0;
115+
}
116+
117+
syncpoint.counter_min = video.HostSyncpointValue(id);
118+
return syncpoint.counter_min;
111119
}
112120

113121
NvFence SyncpointManager::GetSyncpointFence(u32 id) {

src/nxemu-video/video_manager.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,3 +153,8 @@ bool VideoManager::OnCPUWrite(uint64_t addr, uint64_t size)
153153
{
154154
return impl->m_gpuCore->OnCPUWrite(addr, size);
155155
}
156+
157+
uint32_t VideoManager::HostSyncpointValue(uint32_t id)
158+
{
159+
return impl->m_host1x->GetSyncpointManager().GetHostSyncpointValue(id);
160+
}

src/nxemu-video/video_manager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class VideoManager :
3030
void PushGPUEntries(int32_t bindId, const uint64_t * commandList, uint32_t commandListSize, const uint32_t * prefetchCommandlist, uint32_t prefetchCommandlistSize);
3131
void ApplyOpOnDeviceMemoryPointer(const uint8_t* pointer, uint32_t* scratchBuffer, size_t scratchBufferSize, DeviceMemoryOperation operation, void* userData) override;
3232
bool OnCPUWrite(uint64_t addr, uint64_t size) override;
33+
uint32_t HostSyncpointValue(uint32_t id) override;
3334

3435
private:
3536
VideoManager() = delete;

0 commit comments

Comments
 (0)