libraries: Add libSceRazorCpu HLE skeleton.

This commit is contained in:
squidbus 2024-11-30 00:38:14 -08:00
parent 666b0609f7
commit 1a49c9d5ba
7 changed files with 272 additions and 4 deletions

View File

@ -318,6 +318,8 @@ set(SYSTEM_LIBS src/core/libraries/system/commondialog.cpp
src/core/libraries/remote_play/remoteplay.h
src/core/libraries/share_play/shareplay.cpp
src/core/libraries/share_play/shareplay.h
src/core/libraries/razor_cpu/razor_cpu.cpp
src/core/libraries/razor_cpu/razor_cpu.h
)
set(VIDEOOUT_LIB src/core/libraries/videoout/buffer.h

View File

@ -121,6 +121,7 @@ bool ParseFilterRule(Filter& instance, Iterator begin, Iterator end) {
SUB(Lib, Fiber) \
SUB(Lib, Vdec2) \
SUB(Lib, Videodec) \
SUB(Lib, RazorCpu) \
CLS(Frontend) \
CLS(Render) \
SUB(Render, Vulkan) \

View File

@ -88,6 +88,7 @@ enum class Class : u8 {
Lib_Fiber, ///< The LibSceFiber implementation.
Lib_Vdec2, ///< The LibSceVideodec2 implementation.
Lib_Videodec, ///< The LibSceVideodec implementation.
Lib_RazorCpu, ///< The LibRazorCpu implementation.
Frontend, ///< Emulator UI
Render, ///< Video Core
Render_Vulkan, ///< Vulkan backend

View File

@ -28,6 +28,7 @@
#include "core/libraries/pad/pad.h"
#include "core/libraries/playgo/playgo.h"
#include "core/libraries/random/random.h"
#include "core/libraries/razor_cpu/razor_cpu.h"
#include "core/libraries/remote_play/remoteplay.h"
#include "core/libraries/rtc/rtc.h"
#include "core/libraries/save_data/dialog/savedatadialog.h"
@ -87,6 +88,7 @@ void InitHLELibs(Core::Loader::SymbolsResolver* sym) {
Libraries::SharePlay::RegisterlibSceSharePlay(sym);
Libraries::Remoteplay::RegisterlibSceRemoteplay(sym);
Libraries::Videodec::RegisterlibSceVideodec(sym);
Libraries::RazorCpu::RegisterlibSceRazorCpu(sym);
}
} // namespace Libraries

View File

@ -0,0 +1,249 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "razor_cpu.h"
#include "common/logging/log.h"
#include "core/libraries/error_codes.h"
#include "core/libraries/libs.h"
namespace Libraries::RazorCpu {
s32 PS4_SYSV_ABI sceRazorCpuBeginLogicalFileAccess() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
void PS4_SYSV_ABI sceRazorCpuDisableFiberUserMarkers() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
}
s32 PS4_SYSV_ABI sceRazorCpuEndLogicalFileAccess() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuFiberLogNameChange() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuFiberSwitch() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
bool PS4_SYSV_ABI sceRazorCpuFlushOccurred() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return false;
}
s32 PS4_SYSV_ABI sceRazorCpuGetDataTagStorageSize() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuGpuMarkerSync() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuInitDataTags() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuInitializeGpuMarkerContext() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuInitializeInternal() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
bool PS4_SYSV_ABI sceRazorCpuIsCapturing() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return false;
}
s32 PS4_SYSV_ABI sceRazorCpuJobManagerDispatch() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuJobManagerJob() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuJobManagerSequence() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuNamedSync() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuPlotValue() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuPopMarker() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuPushMarker() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuPushMarkerStatic() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuResizeTaggedBuffer() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
void PS4_SYSV_ABI sceRazorCpuSetPopMarkerCallback() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
}
void PS4_SYSV_ABI sceRazorCpuSetPushMarkerCallback() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
}
void PS4_SYSV_ABI sceRazorCpuSetPushMarkerStaticCallback() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
}
s32 PS4_SYSV_ABI sceRazorCpuShutdownDataTags() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuStartCaptureInternal() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuStopCaptureInternal() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuSync() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuTagArray() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuTagBuffer() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuUnTagBuffer() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuWorkloadRunBegin() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuWorkloadRunEnd() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuWorkloadSubmit() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
s32 PS4_SYSV_ABI sceRazorCpuWriteBookmark() {
LOG_DEBUG(Lib_RazorCpu, "(STUBBED) called");
return ORBIS_OK;
}
void RegisterlibSceRazorCpu(Core::Loader::SymbolsResolver* sym) {
LIB_FUNCTION("JFzLJBlYIJE", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuBeginLogicalFileAccess);
LIB_FUNCTION("SfRTRZ1Sh+U", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuDisableFiberUserMarkers);
LIB_FUNCTION("gVioM9cbiDs", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuEndLogicalFileAccess);
LIB_FUNCTION("G90IIOtgFQ0", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuFiberLogNameChange);
LIB_FUNCTION("PAytDtFGpqY", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuFiberSwitch);
LIB_FUNCTION("sPhrQD31ClM", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuFlushOccurred);
LIB_FUNCTION("B782NptkGUc", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuGetDataTagStorageSize);
LIB_FUNCTION("EH9Au2RlSrE", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuGpuMarkerSync);
LIB_FUNCTION("A7oRMdaOJP8", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuInitDataTags);
LIB_FUNCTION("NFwh-J-BrI0", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuInitializeGpuMarkerContext);
LIB_FUNCTION("ElNyedXaa4o", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuInitializeInternal);
LIB_FUNCTION("EboejOQvLL4", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuIsCapturing);
LIB_FUNCTION("dnEdyY4+klQ", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuJobManagerDispatch);
LIB_FUNCTION("KP+TBWGHlgs", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuJobManagerJob);
LIB_FUNCTION("9FowWFMEIM8", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuJobManagerSequence);
LIB_FUNCTION("XCuZoBSVFG8", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1, sceRazorCpuNamedSync);
LIB_FUNCTION("njGikRrxkC0", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1, sceRazorCpuPlotValue);
LIB_FUNCTION("YpkGsMXP3ew", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1, sceRazorCpuPopMarker);
LIB_FUNCTION("zw+celG7zSI", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1, sceRazorCpuPushMarker);
LIB_FUNCTION("uZrOwuNJX-M", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuPushMarkerStatic);
LIB_FUNCTION("D0yUjM33QqU", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuResizeTaggedBuffer);
LIB_FUNCTION("jqYWaTfgZs0", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuSetPopMarkerCallback);
LIB_FUNCTION("DJsHcEb94n0", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuSetPushMarkerCallback);
LIB_FUNCTION("EZtqozPTS4M", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuSetPushMarkerStaticCallback);
LIB_FUNCTION("emklx7RK-LY", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuShutdownDataTags);
LIB_FUNCTION("TIytAjYeaik", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuStartCaptureInternal);
LIB_FUNCTION("jWpkVWdMrsM", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuStopCaptureInternal);
LIB_FUNCTION("Ax7NjOzctIM", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1, sceRazorCpuSync);
LIB_FUNCTION("we3oTKSPSTw", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1, sceRazorCpuTagArray);
LIB_FUNCTION("vyjdThnQfQQ", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1, sceRazorCpuTagBuffer);
LIB_FUNCTION("0yNHPIkVTmw", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuUnTagBuffer);
LIB_FUNCTION("Crha9LvwvJM", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuWorkloadRunBegin);
LIB_FUNCTION("q1GxBfGHO0s", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuWorkloadRunEnd);
LIB_FUNCTION("6rUvx-6QmYc", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuWorkloadSubmit);
LIB_FUNCTION("G3brhegfyNg", "libSceRazorCpu", 1, "libSceRazorCpu", 1, 1,
sceRazorCpuWriteBookmark);
}
} // namespace Libraries::RazorCpu

View File

@ -0,0 +1,17 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/types.h"
#include <atomic>
#include <memory>
namespace Core::Loader {
class SymbolsResolver;
}
namespace Libraries::RazorCpu {
void RegisterlibSceRazorCpu(Core::Loader::SymbolsResolver* sym);
} // namespace Libraries::RazorCpu

View File

@ -48,10 +48,6 @@ int PS4_SYSV_ABI sceSysmoduleIsLoadedInternal(OrbisSysModuleInternal id) {
LOG_ERROR(Lib_SysModule, "Invalid internal sysmodule ID: {:#x}", static_cast<u32>(id));
return ORBIS_SYSMODULE_INVALID_ID;
}
if (id == OrbisSysModuleInternal::ORBIS_SYSMODULE_INTERNAL_RAZOR_CPU) {
// Internal debugging library, report as not loaded so it won't be used.
return ORBIS_SYSMODULE_NOT_LOADED;
}
return ORBIS_OK;
}