mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-05-29 14:53:18 +00:00
Define remaining ioctls
This commit is contained in:
parent
23883bd42b
commit
4abc2dea49
2 changed files with 62 additions and 3 deletions
|
@ -22,13 +22,40 @@ s32* submits_addr = 0;
|
|||
s32 GcDevice::ioctl(u64 cmd, Common::VaCtx* args) {
|
||||
auto command = GcCommands(cmd);
|
||||
switch(command) {
|
||||
case GcCommands::FlushGarlic: {
|
||||
LOG_ERROR(Lib_GnmDriver, "ioctl FlushGarlic");
|
||||
break;
|
||||
}
|
||||
case GcCommands::SubmitDone: {
|
||||
ASSERT(true);
|
||||
LOG_ERROR(Lib_GnmDriver, "ioctl SubmitDone");
|
||||
break;
|
||||
}
|
||||
case GcCommands::WaitIdle: {
|
||||
ASSERT(true);
|
||||
LOG_ERROR(Lib_GnmDriver, "ioctl WaitIdle");
|
||||
break;
|
||||
}
|
||||
case GcCommands::WaitFree: {
|
||||
ASSERT(true);
|
||||
LOG_ERROR(Lib_GnmDriver, "ioctl WaitFree");
|
||||
break;
|
||||
}
|
||||
case GcCommands::GetNumTcaUnits: {
|
||||
auto data = vaArgPtr<s32*>(&args->va_list);
|
||||
*data = 0;
|
||||
break;
|
||||
}
|
||||
case GcCommands::AreSubmitsAllowed: {
|
||||
LOG_INFO(Lib_GnmDriver, "ioctl AreSubmitsAllowed");
|
||||
case GcCommands::SwitchBuffer: {
|
||||
ASSERT(true);
|
||||
LOG_ERROR(Lib_GnmDriver, "ioctl SwitchBuffer");
|
||||
break;
|
||||
}
|
||||
case GcCommands::DebugHardwareStatus: {
|
||||
break;
|
||||
}
|
||||
case GcCommands::InitializeSubmits: {
|
||||
LOG_INFO(Lib_GnmDriver, "ioctl InitializeSubmits");
|
||||
if (submits_addr == nullptr) {
|
||||
auto* memory = Core::Memory::Instance();
|
||||
s32* out_addr;
|
||||
|
@ -48,6 +75,10 @@ s32 GcDevice::ioctl(u64 cmd, Common::VaCtx* args) {
|
|||
*submits_addr = 0;
|
||||
break;
|
||||
}
|
||||
case GcCommands::UnmapComputeQueue: {
|
||||
LOG_ERROR(Lib_GnmDriver, "ioctl UnmapComputeQueue");
|
||||
break;
|
||||
}
|
||||
case GcCommands::SetGsRingSizes: {
|
||||
auto data = vaArgPtr<SetGsRingSizesArgs>(&args->va_list);
|
||||
LOG_ERROR(Lib_GnmDriver, "unhandled ioctl SetGsRingSizes, esgs size = {:#x}, gsvs size = {:#x}", data->esgs_ring_size, data->gsvs_ring_size);
|
||||
|
@ -69,6 +100,14 @@ s32 GcDevice::ioctl(u64 cmd, Common::VaCtx* args) {
|
|||
data[3] = 0;
|
||||
break;
|
||||
}
|
||||
case GcCommands::DingDong: {
|
||||
ASSERT(true);
|
||||
LOG_ERROR(Lib_GnmDriver, "ioctl DingDong");
|
||||
break;
|
||||
}
|
||||
case GcCommands::RequiresNeoCompat: {
|
||||
return POSIX_ENODEV;
|
||||
}
|
||||
case GcCommands::SubmitEop: {
|
||||
ASSERT(true);
|
||||
LOG_ERROR(Lib_GnmDriver, "ioctl SubmitEop");
|
||||
|
@ -82,7 +121,17 @@ s32 GcDevice::ioctl(u64 cmd, Common::VaCtx* args) {
|
|||
auto data = vaArgPtr<MapComputeQueueArgs>(&args->va_list);
|
||||
auto pipe_id = data->pipe_lo - 1;
|
||||
auto ring_size = pow(2, data->ring_size_dw);
|
||||
data->pipe_priority = 0;
|
||||
LOG_ERROR(Lib_GnmDriver, "ioctl MapComputeQueue, pipe_id = {}", pipe_id);
|
||||
Libraries::GnmDriver::sceGnmMapComputeQueue(pipe_id, data->queue_id, data->ring_base_addr, ring_size, data->read_ptr_addr);
|
||||
break;
|
||||
}
|
||||
case GcCommands::MapComputeQueueWithPriority: {
|
||||
ASSERT(true);
|
||||
auto data = vaArgPtr<MapComputeQueueArgs>(&args->va_list);
|
||||
auto pipe_id = data->pipe_lo - 1;
|
||||
auto ring_size = pow(2, data->ring_size_dw);
|
||||
LOG_ERROR(Lib_GnmDriver, "ioctl MapComputeQueueWithPriority, pipe_id = {}", pipe_id);
|
||||
Libraries::GnmDriver::sceGnmMapComputeQueueWithPriority(pipe_id, data->queue_id, data->ring_base_addr, ring_size, data->read_ptr_addr, data->pipe_priority);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -30,13 +30,23 @@ public:
|
|||
s64 pwrite(const void* buf, size_t nbytes, u64 offset) override;
|
||||
private:
|
||||
enum class GcCommands : u64 {
|
||||
FlushGarlic = 0xc0048114,
|
||||
SubmitDone = 0xc0048116,
|
||||
WaitIdle = 0xc0048117,
|
||||
WaitFree = 0xc004811d,
|
||||
GetNumTcaUnits = 0xc004811f,
|
||||
AreSubmitsAllowed = 0xc008811b,
|
||||
SwitchBuffer = 0xc0088101,
|
||||
DebugHardwareStatus = 0xc0088111,
|
||||
InitializeSubmits = 0xc008811b,
|
||||
UnmapComputeQueue = 0xc00c810e,
|
||||
SetGsRingSizes = 0xc00c8110,
|
||||
Submit = 0xc0108102,
|
||||
GetCuMask = 0xc010810b,
|
||||
DingDong = 0xc010811c,
|
||||
RequiresNeoCompat = 0xc0108120,
|
||||
SubmitEop = 0xc020810c,
|
||||
MapComputeQueue = 0xc030810d,
|
||||
MapComputeQueueWithPriority = 0xc030811a,
|
||||
SetWaveLimitMultipliers = 0xc030811e,
|
||||
MipStatsReport = 0xc0848119,
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue