Skip to content

Commit

Permalink
graphicsDriver| use shader regs size
Browse files Browse the repository at this point in the history
  • Loading branch information
SysRay committed May 29, 2024
1 parent 5e09ef1 commit 35b871f
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions modules/libSceGraphicsDriver/entry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ static SYSV_ABI void hook_setVsShader(void* buffer) {
accessVideoOut().getGraphics()->registerCommandBuffer(buffer);
((__stdcall void (*)(void const*))_hook_setVsShader.data.data())(buffer);
}

constexpr uint32_t NUM_VS_REGS = 4 * 7;
constexpr uint32_t NUM_PS_REGS = 4 * 12;
constexpr uint32_t NUM_CS_REGS = 4 * 7;
} // namespace

extern "C" {
Expand Down Expand Up @@ -72,7 +76,7 @@ int SYSV_ABI sceGnmSetVsShader(uint32_t* cmdOut, uint64_t size, const uint32_t*

cmdOut[0] = Pm4::create(size, Pm4::Custom::R_VS);
cmdOut[1] = shader_modifier;
memcpy(&cmdOut[2], vs_regs, size - 2);
memcpy(&cmdOut[2], vs_regs, NUM_VS_REGS);

return Ok;
}
Expand All @@ -83,7 +87,7 @@ int SYSV_ABI sceGnmUpdateVsShader(uint32_t* cmdOut, uint64_t size, const uint32_

cmdOut[0] = Pm4::create(size, Pm4::Custom::R_VS_UPDATE);
cmdOut[1] = shader_modifier;
memcpy(&cmdOut[2], vs_regs, size - 2);
memcpy(&cmdOut[2], vs_regs, NUM_VS_REGS);

return Ok;
}
Expand All @@ -96,7 +100,7 @@ int SYSV_ABI sceGnmSetPsShader(uint32_t* cmdOut, uint64_t size, const uint32_t*
cmdOut[1] = 0;
} else {
cmdOut[0] = Pm4::create(size, Pm4::Custom::R_PS);
memcpy(&cmdOut[1], ps_regs, size - 1);
memcpy(&cmdOut[1], ps_regs, NUM_PS_REGS);
}

return Ok;
Expand All @@ -110,7 +114,7 @@ int SYSV_ABI sceGnmSetPsShader350(uint32_t* cmdOut, uint64_t size, const uint32_
cmdOut[1] = 0;
} else {
cmdOut[0] = Pm4::create(size, Pm4::Custom::R_PS);
memcpy(&cmdOut[1], ps_regs, size - 1);
memcpy(&cmdOut[1], ps_regs, NUM_PS_REGS);
}

return Ok;
Expand All @@ -121,7 +125,7 @@ int SYSV_ABI sceGnmUpdatePsShader(uint32_t* cmdOut, uint64_t size, const uint32_
LOG_TRACE(L"%S 0x%08llx %u", __FUNCTION__, (uint64_t)cmdOut, size);

cmdOut[0] = Pm4::create(size, Pm4::Custom::R_PS_UPDATE);
memcpy(&cmdOut[1], ps_regs, size - 1);
memcpy(&cmdOut[1], ps_regs, NUM_PS_REGS);

return Ok;
}
Expand All @@ -132,7 +136,7 @@ int SYSV_ABI sceGnmUpdatePsShader350(uint32_t* cmdOut, uint64_t size, const uint
if (cmdOut == nullptr || size < 39) return -1;
if (ps_regs != nullptr) {
cmdOut[0] = Pm4::create(size, Pm4::Custom::R_PS_UPDATE);
memcpy(&cmdOut[1], ps_regs, size - 1);
memcpy(&cmdOut[1], ps_regs, NUM_PS_REGS);
} else {
cmdOut[0] = Pm4::create(size, Pm4::Custom::R_PS_EMBEDDED);
cmdOut[1] = 0x0;
Expand All @@ -146,7 +150,7 @@ int SYSV_ABI sceGnmSetCsShader(uint32_t* cmdOut, uint64_t size, const uint32_t*
LOG_TRACE(L"%S 0x%08llx %u", __FUNCTION__, (uint64_t)cmdOut, size);
cmdOut[0] = Pm4::create(size, Pm4::Custom::R_CS);
cmdOut[1] = 0;
memcpy(&cmdOut[2], cs_regs, size - 2);
memcpy(&cmdOut[2], cs_regs, NUM_CS_REGS);
return Ok;
}

Expand All @@ -155,7 +159,7 @@ int SYSV_ABI sceGnmSetCsShaderWithModifier(uint32_t* cmdOut, uint64_t size, cons
LOG_TRACE(L"%S 0x%08llx %u", __FUNCTION__, (uint64_t)cmdOut, size);
cmdOut[0] = Pm4::create(size, Pm4::Custom::R_CS);
cmdOut[1] = shader_modifier;
memcpy(&cmdOut[2], cs_regs, size - 2);
memcpy(&cmdOut[2], cs_regs, NUM_CS_REGS);
return Ok;
}

Expand Down

0 comments on commit 35b871f

Please sign in to comment.