diff --git a/src/graphics/presentation/videoOut.cpp b/src/graphics/presentation/videoOut.cpp index a73ba6e6c..51052333e 100644 --- a/src/graphics/presentation/videoOut.cpp +++ b/src/graphics/presentation/videoOut.cpp @@ -1814,6 +1814,38 @@ KYTY_SYSV_ABI int VideoOutGetOutputStatus(int handle, VideoOutOutputStatus* stat return OK; } +KYTY_SYSV_ABI int VideoOutAllowOutputResolutionWqhdDetection(int handle) { + if (!DriverState().IsOpened(handle)) { + return VIDEO_OUT_ERROR_INVALID_HANDLE; + } + return OK; +} + +KYTY_SYSV_ABI int VideoOutVrrPegToFixedRate(int handle, uint64_t arg1, uint64_t arg2) { + PRINT_NAME(); + + static std::atomic_bool logged {false}; + if (!logged.exchange(true, std::memory_order_relaxed)) { + LOGF("\t handle = %d\n" + "\t arg1 = 0x%016" PRIx64 "\n" + "\t arg2 = 0x%016" PRIx64 "\n", + handle, arg1, arg2); + } + + return OK; +} + +KYTY_SYSV_ABI int VideoOutVrrUnpegFromFixedRate(int handle) { + PRINT_NAME(); + + static std::atomic_bool logged {false}; + if (!logged.exchange(true, std::memory_order_relaxed)) { + LOGF("\t handle = %d\n", handle); + } + + return OK; +} + static int ValidateOutputConfig(int handle, uint64_t mode, const VideoOutOutputOptions* options, void* reserved_ptr, uint64_t reserved) { if (!DriverState().IsOpened(handle)) { diff --git a/src/graphics/presentation/videoOut.h b/src/graphics/presentation/videoOut.h index 06f995067..dad4aaeb2 100644 --- a/src/graphics/presentation/videoOut.h +++ b/src/graphics/presentation/videoOut.h @@ -90,6 +90,9 @@ KYTY_SYSV_ABI int VideoOutGetEventData(const LibKernel::EventQueue::KernelEvent* KYTY_SYSV_ABI int VideoOutGetEventCount(const LibKernel::EventQueue::KernelEvent* ev); KYTY_SYSV_ABI int VideoOutWaitVblank(int handle); KYTY_SYSV_ABI int VideoOutGetOutputStatus(int handle, VideoOutOutputStatus* status); +KYTY_SYSV_ABI int VideoOutAllowOutputResolutionWqhdDetection(int handle); +KYTY_SYSV_ABI int VideoOutVrrPegToFixedRate(int handle, uint64_t arg1, uint64_t arg2); +KYTY_SYSV_ABI int VideoOutVrrUnpegFromFixedRate(int handle); KYTY_SYSV_ABI int VideoOutInitializeOutputOptions(VideoOutOutputOptions* options); KYTY_SYSV_ABI int VideoOutIsOutputSupported(int handle, uint64_t mode, const VideoOutOutputOptions* options, diff --git a/src/libs/libVideoOut.cpp b/src/libs/libVideoOut.cpp index 3c18c9a14..25457863a 100644 --- a/src/libs/libVideoOut.cpp +++ b/src/libs/libVideoOut.cpp @@ -39,6 +39,8 @@ LIB_DEFINE(InitVideoOut_1) { LIB_FUNC("Mt4QHHkxkOc", VideoOut::VideoOutGetEventCount); LIB_FUNC("j6RaAUlaLv0", VideoOut::VideoOutWaitVblank); LIB_FUNC("utPrVdxio-8", VideoOut::VideoOutGetOutputStatus); + LIB_FUNC("5tRaBjtdTzY", VideoOut::VideoOutVrrPegToFixedRate); + LIB_FUNC("T4ucGB8CsnM", VideoOut::VideoOutVrrUnpegFromFixedRate); LIB_FUNC("+I4K03i3EL0", VideoOut::VideoOutInitializeOutputOptions); LIB_FUNC("Nv8c-Kb+DUM", VideoOut::VideoOutIsOutputSupported); LIB_FUNC("w0hLuNarQxY", VideoOut::VideoOutConfigureOutput); @@ -46,6 +48,7 @@ LIB_DEFINE(InitVideoOut_1) { LIB_FUNC("MCJ8SkzsQxY", VideoOut::VideoOutLatencyMeasureSetStartPoint); LIB_FUNC("DYhhWbJSeRg", VideoOut::VideoOutColorSettingsSetGamma); LIB_FUNC("pv9CI5VC+R0", VideoOut::VideoOutAdjustColor); + LIB_FUNC("w7Ipp9Xl7hg", VideoOut::VideoOutAllowOutputResolutionWqhdDetection); } } // namespace LibGen5