/
sce_gnm_dispatch.cpp
70 lines (55 loc) · 1.94 KB
/
sce_gnm_dispatch.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "sce_gnmdriver.h"
#include "Gnm/GnmOpCode.h"
#include <cassert>
LOG_CHANNEL(SceModules.SceGnmDriver.GnmDispatch);
using namespace sce::Gnm;
uint32_t PS4API sceGnmDispatchInitDefaultHardwareState(uint32_t* cmdBuffer, uint32_t numDwords)
{
LOG_SCE_GRAPHIC("cmdbuff %p numDwords %d", cmdBuffer, numDwords);
const uint32_t initCmdSize = sizeof(GnmCmdDispatchInitDefaultHardwareState) / sizeof(uint32_t);
assert(numDwords >= initCmdSize);
GnmCmdDispatchInitDefaultHardwareState* initParam = (GnmCmdDispatchInitDefaultHardwareState*)cmdBuffer;
initParam->opcode = PM4_HEADER_BUILD(initCmdSize, IT_GNM_PRIVATE, OP_PRIV_INITIALIZE_DEFAULT_HARDWARE_STATE);
memset(initParam->reserved, 0, sizeof(initParam->reserved));
return initCmdSize;
}
int PS4API sceGnmDisableMipStatsReport(void)
{
LOG_SCE_GRAPHIC("Not implemented");
return SCE_OK;
}
int PS4API sceGnmDispatchIndirectOnMec(void)
{
LOG_SCE_GRAPHIC("Not implemented");
return SCE_OK;
}
int PS4API sceGnmComputeWaitOnAddress(
uint32_t* cmdBuffer,
uint32_t numDwords,
void* gpuAddr,
uint32_t mask,
uint32_t compareFunc,
uint32_t refValue)
{
LOG_SCE_GRAPHIC("cmdbuff %p numDwords %d", cmdBuffer, numDwords);
const uint32_t cmdSize = sizeof(GnmCmdComputeWaitOnAddress) / sizeof(uint32_t);
assert(numDwords == cmdSize);
GnmCmdComputeWaitOnAddress* param = (GnmCmdComputeWaitOnAddress*)cmdBuffer;
param->opcode = PM4_HEADER_BUILD(cmdSize, IT_GNM_PRIVATE, OP_PRIV_COMPUTE_WAIT_ON_ADDRESS);
param->gpuAddr = reinterpret_cast<uint64_t>(gpuAddr);
param->mask = mask;
param->compareFunc = compareFunc;
param->refValue = refValue;
memset(param->reserved, 0, sizeof(param->reserved));
return SCE_OK;
}
int PS4API sceGnmComputeWaitSemaphore(void)
{
LOG_SCE_GRAPHIC("Not implemented");
return SCE_OK;
}
int PS4API sceGnmInsertDingDongMarker(void)
{
LOG_SCE_GRAPHIC("Not implemented");
return SCE_OK;
}