From 23fd83e3d537845248f40858a1a5e495bec836f5 Mon Sep 17 00:00:00 2001 From: DH Date: Tue, 2 Dec 2025 19:37:03 +0300 Subject: [PATCH] dce: stub getVBlankStatus --- rpcsx/gpu/Device.cpp | 4 +++- rpcsx/iodev/dce.cpp | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/rpcsx/gpu/Device.cpp b/rpcsx/gpu/Device.cpp index 35f21b41a..0236e68fd 100644 --- a/rpcsx/gpu/Device.cpp +++ b/rpcsx/gpu/Device.cpp @@ -311,7 +311,7 @@ void Device::start() { }); } - std::jthread vblankThread([](const std::stop_token &stopToken) { + std::jthread vblankThread([this](const std::stop_token &stopToken) { orbis::g_context->deviceEventEmitter->emit( orbis::kEvFiltDisplay, [=](orbis::KNote *note) -> std::optional { @@ -330,6 +330,8 @@ void Device::start() { std::chrono::duration_cast(period); std::this_thread::sleep_until(prevVBlank); + vblankCount++; + orbis::g_context->deviceEventEmitter->emit( orbis::kEvFiltDisplay, [=](orbis::KNote *note) -> std::optional { diff --git a/rpcsx/iodev/dce.cpp b/rpcsx/iodev/dce.cpp index ca9a079ff..a2a696988 100644 --- a/rpcsx/iodev/dce.cpp +++ b/rpcsx/iodev/dce.cpp @@ -469,6 +469,22 @@ static orbis::ErrorCode dce_ioctl(orbis::File *file, std::uint64_t request, return {}; }); + } else if (args->id == 0xb) { + struct VblankStatus { + orbis::uint64_t count; + orbis::uint64_t processTime; + orbis::uint64_t tsc; + char flags; + }; + + VblankStatus vblankStatus{}; + // TODO: lock bridge header + vblankStatus.count = gpuCtx.vblankCount; + vblankStatus.processTime = 0; // TODO + vblankStatus.tsc = 0; // TODO + vblankStatus.flags = 0; // TODO + + std::memcpy(args->ptr, &vblankStatus, sizeof(VblankStatus)); } else { // used during open/close ORBIS_LOG_NOTICE("dce: UNIMPLEMENTED FlipControl", args->id, args->arg2, args->ptr, args->size);