mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-08-19 06:52:36 +00:00
rename legacy Graphics -> Agc
This commit is contained in:
+270
-281
File diff suppressed because it is too large
Load Diff
+254
-264
@@ -36,257 +36,250 @@ namespace Gen5 {
|
||||
struct CommandBuffer;
|
||||
struct Label;
|
||||
|
||||
int KYTY_SYSV_ABI GraphicsInit(uint32_t* state, uint32_t ver);
|
||||
void* KYTY_SYSV_ABI GraphicsGetRegisterDefaults2(uint32_t ver);
|
||||
void* KYTY_SYSV_ABI GraphicsGetRegisterDefaults2Internal(uint32_t ver);
|
||||
int KYTY_SYSV_ABI GraphicsCreateShader(Shader** dst, void* header, const volatile void* code);
|
||||
int KYTY_SYSV_ABI GraphicsUnknownGetFusedShaderSize(SizeAlign* dst, const Shader* front,
|
||||
const Shader* back);
|
||||
int KYTY_SYSV_ABI GraphicsUnknownFuseShaderHalves(Shader* fused_result, const Shader* front,
|
||||
const Shader* back, void* scratch_mem);
|
||||
int KYTY_SYSV_ABI GraphicsUnknownNApJjpKNBl4(Shader* fused_result, const Shader* front,
|
||||
int KYTY_SYSV_ABI AgcInit(uint32_t* state, uint32_t ver);
|
||||
void* KYTY_SYSV_ABI AgcGetRegisterDefaults2(uint32_t ver);
|
||||
void* KYTY_SYSV_ABI AgcGetRegisterDefaults2Internal(uint32_t ver);
|
||||
int KYTY_SYSV_ABI AgcCreateShader(Shader** dst, void* header, const volatile void* code);
|
||||
int KYTY_SYSV_ABI AgcUnknownGetFusedShaderSize(SizeAlign* dst, const Shader* front,
|
||||
const Shader* back);
|
||||
int KYTY_SYSV_ABI AgcUnknownFuseShaderHalves(Shader* fused_result, const Shader* front,
|
||||
const Shader* back, void* scratch_mem);
|
||||
int KYTY_SYSV_ABI GraphicsSetCxRegIndirectPatchSetAddress(uint32_t* cmd,
|
||||
const volatile ShaderRegister* regs);
|
||||
int KYTY_SYSV_ABI GraphicsSetShRegIndirectPatchSetAddress(uint32_t* cmd,
|
||||
const volatile ShaderRegister* regs);
|
||||
int KYTY_SYSV_ABI GraphicsSetUcRegIndirectPatchSetAddress(uint32_t* cmd,
|
||||
const volatile ShaderRegister* regs);
|
||||
int KYTY_SYSV_ABI GraphicsSetCxRegIndirectPatchSetNumRegisters(uint32_t* cmd, uint32_t num_regs);
|
||||
int KYTY_SYSV_ABI GraphicsSetShRegIndirectPatchSetNumRegisters(uint32_t* cmd, uint32_t num_regs);
|
||||
int KYTY_SYSV_ABI GraphicsSetUcRegIndirectPatchSetNumRegisters(uint32_t* cmd, uint32_t num_regs);
|
||||
int KYTY_SYSV_ABI GraphicsSetCxRegIndirectPatchAddRegisters(uint32_t* cmd, uint32_t num_regs);
|
||||
int KYTY_SYSV_ABI GraphicsSetShRegIndirectPatchAddRegisters(uint32_t* cmd, uint32_t num_regs);
|
||||
int KYTY_SYSV_ABI GraphicsSetUcRegIndirectPatchAddRegisters(uint32_t* cmd, uint32_t num_regs);
|
||||
int KYTY_SYSV_ABI GraphicsCreatePrimState(ShaderRegister* cx_regs, ShaderRegister* uc_regs,
|
||||
const Shader* hs, const Shader* gs, uint32_t prim_type);
|
||||
int KYTY_SYSV_ABI GraphicsUpdatePrimState(ShaderRegister* cx_regs, ShaderRegister* uc_regs,
|
||||
uint32_t prim_type);
|
||||
int KYTY_SYSV_ABI GraphicsGetGsOversubscription(ShaderRegister* regs, const Shader* gs,
|
||||
uint32_t budget, float factor);
|
||||
int KYTY_SYSV_ABI GraphicsCreateInterpolantMapping(ShaderRegister* regs, const Shader* gs,
|
||||
const Shader* ps);
|
||||
int KYTY_SYSV_ABI GraphicsGetDataPacketPayloadAddress(uint32_t** addr, uint32_t* cmd, int type);
|
||||
int KYTY_SYSV_ABI GraphicsGetDataPacketPayloadRange(MemoryRange* range, uint32_t* cmd, int type);
|
||||
int KYTY_SYSV_ABI GraphicsWriteDataPatchSetAddressOrOffset(uint32_t* cmd,
|
||||
uint64_t address_or_offset);
|
||||
int KYTY_SYSV_ABI GraphicsUnknownJumpPatchSetTarget(uint32_t* cmd, const volatile uint32_t* target,
|
||||
uint32_t size_in_dwords);
|
||||
int KYTY_SYSV_ABI GraphicsJumpPatchSetTarget(uint32_t* cmd, const volatile uint32_t* target,
|
||||
uint32_t size_in_dwords);
|
||||
int KYTY_SYSV_ABI GraphicsSuspendPoint();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbContextStateOp(CommandBuffer* buf, uint32_t operation);
|
||||
uint64_t KYTY_SYSV_ABI GraphicsDcbContextStateOpGetSize(uint32_t operation);
|
||||
uint64_t KYTY_SYSV_ABI GraphicsGetIsTrinityMode();
|
||||
int KYTY_SYSV_ABI AgcUnknownNApJjpKNBl4(Shader* fused_result, const Shader* front,
|
||||
const Shader* back, void* scratch_mem);
|
||||
int KYTY_SYSV_ABI AgcSetCxRegIndirectPatchSetAddress(uint32_t* cmd,
|
||||
const volatile ShaderRegister* regs);
|
||||
int KYTY_SYSV_ABI AgcSetShRegIndirectPatchSetAddress(uint32_t* cmd,
|
||||
const volatile ShaderRegister* regs);
|
||||
int KYTY_SYSV_ABI AgcSetUcRegIndirectPatchSetAddress(uint32_t* cmd,
|
||||
const volatile ShaderRegister* regs);
|
||||
int KYTY_SYSV_ABI AgcSetCxRegIndirectPatchSetNumRegisters(uint32_t* cmd, uint32_t num_regs);
|
||||
int KYTY_SYSV_ABI AgcSetShRegIndirectPatchSetNumRegisters(uint32_t* cmd, uint32_t num_regs);
|
||||
int KYTY_SYSV_ABI AgcSetUcRegIndirectPatchSetNumRegisters(uint32_t* cmd, uint32_t num_regs);
|
||||
int KYTY_SYSV_ABI AgcSetCxRegIndirectPatchAddRegisters(uint32_t* cmd, uint32_t num_regs);
|
||||
int KYTY_SYSV_ABI AgcSetShRegIndirectPatchAddRegisters(uint32_t* cmd, uint32_t num_regs);
|
||||
int KYTY_SYSV_ABI AgcSetUcRegIndirectPatchAddRegisters(uint32_t* cmd, uint32_t num_regs);
|
||||
int KYTY_SYSV_ABI AgcCreatePrimState(ShaderRegister* cx_regs, ShaderRegister* uc_regs,
|
||||
const Shader* hs, const Shader* gs, uint32_t prim_type);
|
||||
int KYTY_SYSV_ABI AgcUpdatePrimState(ShaderRegister* cx_regs, ShaderRegister* uc_regs,
|
||||
uint32_t prim_type);
|
||||
int KYTY_SYSV_ABI AgcGetGsOversubscription(ShaderRegister* regs, const Shader* gs, uint32_t budget,
|
||||
float factor);
|
||||
int KYTY_SYSV_ABI AgcCreateInterpolantMapping(ShaderRegister* regs, const Shader* gs,
|
||||
const Shader* ps);
|
||||
int KYTY_SYSV_ABI AgcGetDataPacketPayloadAddress(uint32_t** addr, uint32_t* cmd, int type);
|
||||
int KYTY_SYSV_ABI AgcGetDataPacketPayloadRange(MemoryRange* range, uint32_t* cmd, int type);
|
||||
int KYTY_SYSV_ABI AgcWriteDataPatchSetAddressOrOffset(uint32_t* cmd, uint64_t address_or_offset);
|
||||
int KYTY_SYSV_ABI AgcUnknownJumpPatchSetTarget(uint32_t* cmd, const volatile uint32_t* target,
|
||||
uint32_t size_in_dwords);
|
||||
int KYTY_SYSV_ABI AgcJumpPatchSetTarget(uint32_t* cmd, const volatile uint32_t* target,
|
||||
uint32_t size_in_dwords);
|
||||
int KYTY_SYSV_ABI AgcSuspendPoint();
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbContextStateOp(CommandBuffer* buf, uint32_t operation);
|
||||
uint64_t KYTY_SYSV_ABI AgcDcbContextStateOpGetSize(uint32_t operation);
|
||||
uint64_t KYTY_SYSV_ABI AgcGetIsTrinityMode();
|
||||
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDriverGetDefaultOwner();
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDriverGetResourceRegistrationMaxNameLength();
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDriverInitResourceRegistration();
|
||||
uint32_t KYTY_SYSV_ABI AgcDriverGetDefaultOwner();
|
||||
uint32_t KYTY_SYSV_ABI AgcDriverGetResourceRegistrationMaxNameLength();
|
||||
uint32_t KYTY_SYSV_ABI AgcDriverInitResourceRegistration();
|
||||
uint32_t KYTY_SYSV_ABI
|
||||
GraphicsDriverQueryResourceRegistrationUserMemoryRequirements(uint64_t* size_in_bytes);
|
||||
int KYTY_SYSV_ABI GraphicsDriverRegisterOwner();
|
||||
int KYTY_SYSV_ABI GraphicsDriverRegisterResource();
|
||||
int KYTY_SYSV_ABI GraphicsDriverUnregisterOwnerAndResources(uint32_t owner_handle);
|
||||
int KYTY_SYSV_ABI GraphicsDriverUnregisterResource();
|
||||
int KYTY_SYSV_ABI GraphicsDriverRegisterWorkloadStream(uint32_t stream_id, const void* stream);
|
||||
AgcDriverQueryResourceRegistrationUserMemoryRequirements(uint64_t* size_in_bytes);
|
||||
int KYTY_SYSV_ABI AgcDriverRegisterOwner();
|
||||
int KYTY_SYSV_ABI AgcDriverRegisterResource();
|
||||
int KYTY_SYSV_ABI AgcDriverUnregisterOwnerAndResources(uint32_t owner_handle);
|
||||
int KYTY_SYSV_ABI AgcDriverUnregisterResource();
|
||||
int KYTY_SYSV_ABI AgcDriverRegisterWorkloadStream(uint32_t stream_id, const void* stream);
|
||||
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsCbNop(CommandBuffer* buf, uint32_t size_in_dwords);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsCbNopGetSize(uint32_t size_in_dwords);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsCbDispatch(CommandBuffer* buf, uint32_t thread_group_x,
|
||||
uint32_t thread_group_y, uint32_t thread_group_z,
|
||||
uint32_t modifier);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsCbDispatchGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsCbBranch(CommandBuffer* buf, uint8_t mode, uint8_t compare_function,
|
||||
const volatile uint64_t* compare_addr, uint64_t mask,
|
||||
uint64_t reference, uint8_t cache_policy1,
|
||||
const volatile uint32_t* buffer1, uint32_t size_in_dwords1,
|
||||
uint8_t cache_policy2, const volatile uint32_t* buffer2,
|
||||
uint32_t size_in_dwords2);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsCbSetShRegisterRangeDirect(CommandBuffer* buf, uint32_t offset,
|
||||
const uint32_t* values,
|
||||
uint32_t num_values);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsCbSetShRegisterRangeDirectGetSize(uint32_t num_values);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsCbSetShRegistersDirect(CommandBuffer* buf,
|
||||
const volatile ShaderRegister* regs,
|
||||
uint32_t num_regs);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsCbReleaseMem(CommandBuffer* buf, uint8_t action, uint16_t gcr_cntl,
|
||||
uint8_t dst, uint8_t cache_policy,
|
||||
const volatile Label* address, uint8_t data_sel,
|
||||
uint64_t data, uint16_t gds_offset, uint16_t gds_size,
|
||||
uint8_t interrupt, uint32_t interrupt_ctx_id);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsCbQueueEndOfPipeActionGetSize();
|
||||
int KYTY_SYSV_ABI GraphicsDebugRaiseException(uint32_t exception_id);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsAcbResetQueue(CommandBuffer* buf, uint32_t op);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbResetQueue(CommandBuffer* buf, uint32_t op, uint32_t state);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbWaitUntilSafeForRendering(CommandBuffer* buf,
|
||||
uint32_t video_out_handle,
|
||||
uint32_t display_buffer_index);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetWorkloadsActive(CommandBuffer* buf, uint32_t stream_id,
|
||||
const uint32_t* workload_ids,
|
||||
uint32_t workload_count);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetWorkloadComplete(CommandBuffer* buf, uint32_t stream_id,
|
||||
uint32_t workload_id);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetShRegisterDirect(CommandBuffer* buf, ShaderRegister reg);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetCxRegisterDirect(CommandBuffer* buf, ShaderRegister reg);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbSetCxRegisterDirectGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetUcRegisterDirect(CommandBuffer* buf, ShaderRegister reg);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetCxRegistersIndirect(CommandBuffer* buf,
|
||||
const volatile ShaderRegister* regs,
|
||||
uint32_t num_regs);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetShRegistersIndirect(CommandBuffer* buf,
|
||||
const volatile ShaderRegister* regs,
|
||||
uint32_t num_regs);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetUcRegistersIndirect(CommandBuffer* buf,
|
||||
const volatile ShaderRegister* regs,
|
||||
uint32_t num_regs);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetIndexSize(CommandBuffer* buf, uint8_t index_size,
|
||||
uint8_t cache_policy);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetIndexBuffer(CommandBuffer* buf, uint64_t index_addr);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetIndexCount(CommandBuffer* buf, uint32_t index_count);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetNumInstances(CommandBuffer* buf, uint32_t num_instances);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbSetNumInstancesGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbDrawIndex(CommandBuffer* buf, uint32_t index_count,
|
||||
const volatile void* index_addr, uint64_t modifier);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbDrawIndexGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcCbNop(CommandBuffer* buf, uint32_t size_in_dwords);
|
||||
uint32_t KYTY_SYSV_ABI AgcCbNopGetSize(uint32_t size_in_dwords);
|
||||
uint32_t* KYTY_SYSV_ABI AgcCbDispatch(CommandBuffer* buf, uint32_t thread_group_x,
|
||||
uint32_t thread_group_y, uint32_t thread_group_z,
|
||||
uint32_t modifier);
|
||||
uint32_t KYTY_SYSV_ABI AgcCbDispatchGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcCbBranch(CommandBuffer* buf, uint8_t mode, uint8_t compare_function,
|
||||
const volatile uint64_t* compare_addr, uint64_t mask,
|
||||
uint64_t reference, uint8_t cache_policy1,
|
||||
const volatile uint32_t* buffer1, uint32_t size_in_dwords1,
|
||||
uint8_t cache_policy2, const volatile uint32_t* buffer2,
|
||||
uint32_t size_in_dwords2);
|
||||
uint32_t* KYTY_SYSV_ABI AgcCbSetShRegisterRangeDirect(CommandBuffer* buf, uint32_t offset,
|
||||
const uint32_t* values, uint32_t num_values);
|
||||
uint32_t KYTY_SYSV_ABI AgcCbSetShRegisterRangeDirectGetSize(uint32_t num_values);
|
||||
uint32_t* KYTY_SYSV_ABI AgcCbSetShRegistersDirect(CommandBuffer* buf,
|
||||
const volatile ShaderRegister* regs,
|
||||
uint32_t num_regs);
|
||||
uint32_t* KYTY_SYSV_ABI AgcCbReleaseMem(CommandBuffer* buf, uint8_t action, uint16_t gcr_cntl,
|
||||
uint8_t dst, uint8_t cache_policy,
|
||||
const volatile Label* address, uint8_t data_sel,
|
||||
uint64_t data, uint16_t gds_offset, uint16_t gds_size,
|
||||
uint8_t interrupt, uint32_t interrupt_ctx_id);
|
||||
uint32_t KYTY_SYSV_ABI AgcCbQueueEndOfPipeActionGetSize();
|
||||
int KYTY_SYSV_ABI AgcDebugRaiseException(uint32_t exception_id);
|
||||
uint32_t* KYTY_SYSV_ABI AgcAcbResetQueue(CommandBuffer* buf, uint32_t op);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbResetQueue(CommandBuffer* buf, uint32_t op, uint32_t state);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbWaitUntilSafeForRendering(CommandBuffer* buf,
|
||||
uint32_t video_out_handle,
|
||||
uint32_t display_buffer_index);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetWorkloadsActive(CommandBuffer* buf, uint32_t stream_id,
|
||||
const uint32_t* workload_ids,
|
||||
uint32_t workload_count);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetWorkloadComplete(CommandBuffer* buf, uint32_t stream_id,
|
||||
uint32_t workload_id);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetShRegisterDirect(CommandBuffer* buf, ShaderRegister reg);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetCxRegisterDirect(CommandBuffer* buf, ShaderRegister reg);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbSetCxRegisterDirectGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetUcRegisterDirect(CommandBuffer* buf, ShaderRegister reg);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetCxRegistersIndirect(CommandBuffer* buf,
|
||||
const volatile ShaderRegister* regs,
|
||||
uint32_t num_regs);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetShRegistersIndirect(CommandBuffer* buf,
|
||||
const volatile ShaderRegister* regs,
|
||||
uint32_t num_regs);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetUcRegistersIndirect(CommandBuffer* buf,
|
||||
const volatile ShaderRegister* regs,
|
||||
uint32_t num_regs);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetIndexSize(CommandBuffer* buf, uint8_t index_size,
|
||||
uint8_t cache_policy);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetIndexBuffer(CommandBuffer* buf, uint64_t index_addr);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetIndexCount(CommandBuffer* buf, uint32_t index_count);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetNumInstances(CommandBuffer* buf, uint32_t num_instances);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbSetNumInstancesGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbDrawIndex(CommandBuffer* buf, uint32_t index_count,
|
||||
const volatile void* index_addr, uint64_t modifier);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbDrawIndexGetSize();
|
||||
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbDrawIndexMultiInstanced(CommandBuffer* buf, uint32_t index_count,
|
||||
const volatile void* index_addr,
|
||||
const volatile void* object_ids,
|
||||
uint32_t instance_count,
|
||||
uint64_t modifier);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbDrawIndexMultiInstancedGetSize();
|
||||
int KYTY_SYSV_ABI GraphicsUnknownIkfdtRIqCE(uint32_t* cmd, uint64_t arg1,
|
||||
const volatile uint32_t* target,
|
||||
uint32_t size_in_dwords, uint64_t arg4, uint64_t arg5);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbDrawIndexAuto(CommandBuffer* buf, uint32_t index_count,
|
||||
uint64_t modifier);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbDrawIndexAutoGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbDrawIndexOffset(CommandBuffer* buf, uint32_t index_offset,
|
||||
uint32_t index_count, uint64_t modifier);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbDrawIndexOffsetGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetBaseIndirectArgs(CommandBuffer* buf, uint32_t shader_type,
|
||||
const volatile void* indirect_base_addr);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbDrawIndirect(CommandBuffer* buf, uint32_t data_offset_in_bytes,
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbDrawIndexMultiInstanced(CommandBuffer* buf, uint32_t index_count,
|
||||
const volatile void* index_addr,
|
||||
const volatile void* object_ids,
|
||||
uint32_t instance_count, uint64_t modifier);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbDrawIndexMultiInstancedGetSize();
|
||||
int KYTY_SYSV_ABI AgcUnknownIkfdtRIqCE(uint32_t* cmd, uint64_t arg1,
|
||||
const volatile uint32_t* target, uint32_t size_in_dwords,
|
||||
uint64_t arg4, uint64_t arg5);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbDrawIndexAuto(CommandBuffer* buf, uint32_t index_count,
|
||||
uint64_t modifier);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbDrawIndexAutoGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbDrawIndexOffset(CommandBuffer* buf, uint32_t index_offset,
|
||||
uint32_t index_count, uint64_t modifier);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbDrawIndexOffsetGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetBaseIndirectArgs(CommandBuffer* buf, uint32_t shader_type,
|
||||
const volatile void* indirect_base_addr);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbDrawIndirect(CommandBuffer* buf, uint32_t data_offset_in_bytes,
|
||||
uint64_t modifier);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbDrawIndirectGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbDrawIndexIndirect(CommandBuffer* buf, uint32_t data_offset_in_bytes,
|
||||
uint64_t modifier);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbDrawIndirectGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbDrawIndexIndirect(CommandBuffer* buf,
|
||||
uint32_t data_offset_in_bytes,
|
||||
uint64_t modifier);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbDrawIndexIndirectMulti(
|
||||
CommandBuffer* buf, uint32_t data_offset_in_bytes, uint32_t count_indirect,
|
||||
uint32_t max_count_or_count, const volatile void* count_addr, uint32_t stride_in_bytes,
|
||||
uint64_t modifier);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbDispatchIndirect(CommandBuffer* buf,
|
||||
uint32_t data_offset_in_bytes, uint32_t flags);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbDispatchIndirectGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbEventWrite(CommandBuffer* buf, uint8_t event_type,
|
||||
const volatile void* address);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbAcquireMem(CommandBuffer* buf, uint8_t engine, uint32_t cb_db_op,
|
||||
uint32_t gcr_cntl, const volatile void* base,
|
||||
uint64_t size_bytes, uint32_t poll_cycles);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbAcquireMemGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsAcbEventWrite(CommandBuffer* buf, uint8_t event_type,
|
||||
const volatile void* address);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsAcbAcquireMem(CommandBuffer* buf, uint32_t gcr_cntl,
|
||||
const volatile void* base, uint64_t size_bytes,
|
||||
uint32_t poll_cycles);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsAcbAcquireMemGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsAcbCondExec(CommandBuffer* buf, const volatile uint32_t* address,
|
||||
uint32_t num_dwords);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsAcbCondExecGetSize();
|
||||
uint32_t KYTY_SYSV_ABI GraphicsAcbJumpGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsAcbWaitRegMem(CommandBuffer* buf, uint8_t size,
|
||||
uint8_t compare_function, uint8_t cache_policy,
|
||||
const volatile void* address, uint64_t reference,
|
||||
uint64_t mask, uint32_t poll_cycles);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsAcbDmaData(CommandBuffer* buf, uint8_t dst,
|
||||
uint8_t dst_cache_policy, uint64_t dst_address_or_offset,
|
||||
uint8_t src, uint8_t src_cache_policy,
|
||||
uint64_t src_address_or_offset_or_immediate,
|
||||
uint32_t num_bytes, uint8_t wait_for_previous,
|
||||
uint8_t write_confirm);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsAcbCopyData(CommandBuffer* buf, uint8_t dst,
|
||||
uint8_t dst_cache_policy, uint64_t dst_address,
|
||||
uint8_t src, uint8_t src_cache_policy,
|
||||
uint64_t src_address_or_immediate, uint8_t item_size,
|
||||
uint8_t write_confirm);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsAcbDispatchIndirect(CommandBuffer* buf,
|
||||
const volatile void* indirect_args,
|
||||
uint32_t modifier);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsAcbWriteData(CommandBuffer* buf, uint8_t dst, uint8_t cache_policy,
|
||||
uint64_t address_or_offset, const void* data,
|
||||
uint32_t num_dwords, uint8_t increment,
|
||||
uint8_t write_confirm);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsAcbSetMarker(CommandBuffer* buf, const char* str, uint32_t color);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsAcbPushMarker(CommandBuffer* buf, const char* str, uint32_t color);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsAcbPopMarker(CommandBuffer* buf);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbStallCommandBufferParser(CommandBuffer* buf);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbCopyData(CommandBuffer* buf, uint8_t dst,
|
||||
uint8_t dst_cache_policy, uint64_t dst_address,
|
||||
uint8_t src, uint8_t src_cache_policy,
|
||||
uint64_t src_address_or_immediate, uint8_t item_size,
|
||||
uint8_t write_confirm);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbDmaData(CommandBuffer* buf, uint8_t engine, uint8_t dst,
|
||||
uint8_t dst_cache_policy, uint64_t dst_address_or_offset,
|
||||
uint8_t src, uint8_t src_cache_policy,
|
||||
uint64_t src_address_or_offset_or_immediate,
|
||||
uint32_t num_bytes, uint8_t wait_for_previous,
|
||||
uint8_t write_confirm, uint8_t block_engine);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbJump(CommandBuffer* buf, uint8_t mode, uint8_t cache_policy,
|
||||
const uint32_t* target, uint32_t size_in_dwords);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbJumpGetSize();
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbRewindGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbRewind(CommandBuffer* buf, uint32_t initial_state);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbCondExec(CommandBuffer* buf, const volatile uint32_t* address,
|
||||
uint32_t num_dwords);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbCondExecGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetPredication(CommandBuffer* buf, uint8_t condition, uint8_t op,
|
||||
uint8_t wait_op, const volatile void* address,
|
||||
uint32_t count_in_dwords);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsUnknownKRzWekV120(CommandBuffer* buf, uint32_t arg1, uint32_t arg2,
|
||||
uint32_t arg3);
|
||||
int KYTY_SYSV_ABI GraphicsDmaDataPatchSetDstAddressOrOffset(uint32_t* cmd,
|
||||
uint64_t dst_address_or_offset);
|
||||
int KYTY_SYSV_ABI GraphicsDmaDataPatchSetSrcAddressOrOffsetOrImmediate(
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbDrawIndexIndirectMulti(CommandBuffer* buf,
|
||||
uint32_t data_offset_in_bytes,
|
||||
uint32_t count_indirect,
|
||||
uint32_t max_count_or_count,
|
||||
const volatile void* count_addr,
|
||||
uint32_t stride_in_bytes, uint64_t modifier);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbDispatchIndirect(CommandBuffer* buf, uint32_t data_offset_in_bytes,
|
||||
uint32_t flags);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbDispatchIndirectGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbEventWrite(CommandBuffer* buf, uint8_t event_type,
|
||||
const volatile void* address);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbAcquireMem(CommandBuffer* buf, uint8_t engine, uint32_t cb_db_op,
|
||||
uint32_t gcr_cntl, const volatile void* base,
|
||||
uint64_t size_bytes, uint32_t poll_cycles);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbAcquireMemGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcAcbEventWrite(CommandBuffer* buf, uint8_t event_type,
|
||||
const volatile void* address);
|
||||
uint32_t* KYTY_SYSV_ABI AgcAcbAcquireMem(CommandBuffer* buf, uint32_t gcr_cntl,
|
||||
const volatile void* base, uint64_t size_bytes,
|
||||
uint32_t poll_cycles);
|
||||
uint32_t KYTY_SYSV_ABI AgcAcbAcquireMemGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcAcbCondExec(CommandBuffer* buf, const volatile uint32_t* address,
|
||||
uint32_t num_dwords);
|
||||
uint32_t KYTY_SYSV_ABI AgcAcbCondExecGetSize();
|
||||
uint32_t KYTY_SYSV_ABI AgcAcbJumpGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcAcbWaitRegMem(CommandBuffer* buf, uint8_t size, uint8_t compare_function,
|
||||
uint8_t cache_policy, const volatile void* address,
|
||||
uint64_t reference, uint64_t mask, uint32_t poll_cycles);
|
||||
uint32_t* KYTY_SYSV_ABI AgcAcbDmaData(CommandBuffer* buf, uint8_t dst, uint8_t dst_cache_policy,
|
||||
uint64_t dst_address_or_offset, uint8_t src,
|
||||
uint8_t src_cache_policy,
|
||||
uint64_t src_address_or_offset_or_immediate,
|
||||
uint32_t num_bytes, uint8_t wait_for_previous,
|
||||
uint8_t write_confirm);
|
||||
uint32_t* KYTY_SYSV_ABI AgcAcbCopyData(CommandBuffer* buf, uint8_t dst, uint8_t dst_cache_policy,
|
||||
uint64_t dst_address, uint8_t src, uint8_t src_cache_policy,
|
||||
uint64_t src_address_or_immediate, uint8_t item_size,
|
||||
uint8_t write_confirm);
|
||||
uint32_t* KYTY_SYSV_ABI AgcAcbDispatchIndirect(CommandBuffer* buf,
|
||||
const volatile void* indirect_args,
|
||||
uint32_t modifier);
|
||||
uint32_t* KYTY_SYSV_ABI AgcAcbWriteData(CommandBuffer* buf, uint8_t dst, uint8_t cache_policy,
|
||||
uint64_t address_or_offset, const void* data,
|
||||
uint32_t num_dwords, uint8_t increment,
|
||||
uint8_t write_confirm);
|
||||
uint32_t* KYTY_SYSV_ABI AgcAcbSetMarker(CommandBuffer* buf, const char* str, uint32_t color);
|
||||
uint32_t* KYTY_SYSV_ABI AgcAcbPushMarker(CommandBuffer* buf, const char* str, uint32_t color);
|
||||
uint32_t* KYTY_SYSV_ABI AgcAcbPopMarker(CommandBuffer* buf);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbStallCommandBufferParser(CommandBuffer* buf);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbCopyData(CommandBuffer* buf, uint8_t dst, uint8_t dst_cache_policy,
|
||||
uint64_t dst_address, uint8_t src, uint8_t src_cache_policy,
|
||||
uint64_t src_address_or_immediate, uint8_t item_size,
|
||||
uint8_t write_confirm);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbDmaData(CommandBuffer* buf, uint8_t engine, uint8_t dst,
|
||||
uint8_t dst_cache_policy, uint64_t dst_address_or_offset,
|
||||
uint8_t src, uint8_t src_cache_policy,
|
||||
uint64_t src_address_or_offset_or_immediate,
|
||||
uint32_t num_bytes, uint8_t wait_for_previous,
|
||||
uint8_t write_confirm, uint8_t block_engine);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbJump(CommandBuffer* buf, uint8_t mode, uint8_t cache_policy,
|
||||
const uint32_t* target, uint32_t size_in_dwords);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbJumpGetSize();
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbRewindGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbRewind(CommandBuffer* buf, uint32_t initial_state);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbCondExec(CommandBuffer* buf, const volatile uint32_t* address,
|
||||
uint32_t num_dwords);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbCondExecGetSize();
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetPredication(CommandBuffer* buf, uint8_t condition, uint8_t op,
|
||||
uint8_t wait_op, const volatile void* address,
|
||||
uint32_t count_in_dwords);
|
||||
uint32_t* KYTY_SYSV_ABI AgcUnknownKRzWekV120(CommandBuffer* buf, uint32_t arg1, uint32_t arg2,
|
||||
uint32_t arg3);
|
||||
int KYTY_SYSV_ABI AgcDmaDataPatchSetDstAddressOrOffset(uint32_t* cmd,
|
||||
uint64_t dst_address_or_offset);
|
||||
int KYTY_SYSV_ABI AgcDmaDataPatchSetSrcAddressOrOffsetOrImmediate(
|
||||
uint32_t* cmd, uint64_t src_address_or_offset_or_immediate);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsGetPacketSize(uint32_t* packet);
|
||||
int KYTY_SYSV_ABI GraphicsSetPacketPredication(uint32_t* packet, uint32_t predication);
|
||||
int KYTY_SYSV_ABI GraphicsSetRangePredication(uint32_t* start, const volatile uint32_t* end,
|
||||
uint32_t predication);
|
||||
int KYTY_SYSV_ABI GraphicsRewindPatchSetRewindState(uint32_t* cmd, uint8_t state);
|
||||
int KYTY_SYSV_ABI GraphicsCondExecPatchSetEnd(uint32_t* cmd, const volatile uint32_t* buffer);
|
||||
int KYTY_SYSV_ABI GraphicsCondExecPatchSetCommandAddress(uint32_t* cmd,
|
||||
const volatile uint32_t* command);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbWriteData(CommandBuffer* buf, uint8_t dst, uint8_t cache_policy,
|
||||
uint64_t address_or_offset, const void* data,
|
||||
uint32_t num_dwords, uint8_t increment,
|
||||
uint8_t write_confirm);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbWriteDataGetSize(uint32_t num_dwords);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbGetLodStats(CommandBuffer* buf, uint8_t cache_policy,
|
||||
const volatile void* buffer,
|
||||
uint32_t buffer_size_in_bytes, uint32_t reset_count,
|
||||
uint8_t force_reset, uint8_t report_and_reset,
|
||||
uint32_t reporting_interval_in_100k_clocks);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbWaitRegMem(CommandBuffer* buf, uint8_t size,
|
||||
uint8_t compare_function, uint8_t op,
|
||||
uint8_t cache_policy, const volatile void* address,
|
||||
uint64_t reference, uint64_t mask,
|
||||
uint32_t poll_cycles);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDcbWaitOnAddressGetSize(uint32_t size);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetMarker(CommandBuffer* buf, const char* str, uint32_t color);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbPushMarker(CommandBuffer* buf, const char* str, uint32_t color);
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbPopMarker(CommandBuffer* buf);
|
||||
uint32_t KYTY_SYSV_ABI AgcGetPacketSize(uint32_t* packet);
|
||||
int KYTY_SYSV_ABI AgcSetPacketPredication(uint32_t* packet, uint32_t predication);
|
||||
int KYTY_SYSV_ABI AgcSetRangePredication(uint32_t* start, const volatile uint32_t* end,
|
||||
uint32_t predication);
|
||||
int KYTY_SYSV_ABI AgcRewindPatchSetRewindState(uint32_t* cmd, uint8_t state);
|
||||
int KYTY_SYSV_ABI AgcCondExecPatchSetEnd(uint32_t* cmd, const volatile uint32_t* buffer);
|
||||
int KYTY_SYSV_ABI AgcCondExecPatchSetCommandAddress(uint32_t* cmd,
|
||||
const volatile uint32_t* command);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbWriteData(CommandBuffer* buf, uint8_t dst, uint8_t cache_policy,
|
||||
uint64_t address_or_offset, const void* data,
|
||||
uint32_t num_dwords, uint8_t increment,
|
||||
uint8_t write_confirm);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbWriteDataGetSize(uint32_t num_dwords);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbGetLodStats(CommandBuffer* buf, uint8_t cache_policy,
|
||||
const volatile void* buffer,
|
||||
uint32_t buffer_size_in_bytes, uint32_t reset_count,
|
||||
uint8_t force_reset, uint8_t report_and_reset,
|
||||
uint32_t reporting_interval_in_100k_clocks);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbWaitRegMem(CommandBuffer* buf, uint8_t size, uint8_t compare_function,
|
||||
uint8_t op, uint8_t cache_policy,
|
||||
const volatile void* address, uint64_t reference,
|
||||
uint64_t mask, uint32_t poll_cycles);
|
||||
uint32_t KYTY_SYSV_ABI AgcDcbWaitOnAddressGetSize(uint32_t size);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetMarker(CommandBuffer* buf, const char* str, uint32_t color);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbPushMarker(CommandBuffer* buf, const char* str, uint32_t color);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbPopMarker(CommandBuffer* buf);
|
||||
|
||||
int KYTY_SYSV_ABI GraphicsWaitRegMemPatchAddress(uint32_t* cmd, const volatile void* address);
|
||||
int KYTY_SYSV_ABI GraphicsWaitRegMemPatchReference(uint32_t* cmd, uint64_t reference);
|
||||
int KYTY_SYSV_ABI GraphicsQueueEndOfPipeActionPatchAddress(uint32_t* cmd,
|
||||
const volatile Label* address);
|
||||
int KYTY_SYSV_ABI GraphicsQueueEndOfPipeActionPatchData(uint32_t* cmd, uint32_t context_id,
|
||||
uint32_t data_sel, uint64_t data);
|
||||
int KYTY_SYSV_ABI AgcWaitRegMemPatchAddress(uint32_t* cmd, const volatile void* address);
|
||||
int KYTY_SYSV_ABI AgcWaitRegMemPatchReference(uint32_t* cmd, uint64_t reference);
|
||||
int KYTY_SYSV_ABI AgcQueueEndOfPipeActionPatchAddress(uint32_t* cmd, const volatile Label* address);
|
||||
int KYTY_SYSV_ABI AgcQueueEndOfPipeActionPatchData(uint32_t* cmd, uint32_t context_id,
|
||||
uint32_t data_sel, uint64_t data);
|
||||
|
||||
uint32_t* KYTY_SYSV_ABI GraphicsDcbSetFlip(CommandBuffer* buf, uint32_t video_out_handle,
|
||||
int32_t display_buffer_index, uint32_t flip_mode,
|
||||
int64_t flip_arg);
|
||||
uint32_t* KYTY_SYSV_ABI AgcDcbSetFlip(CommandBuffer* buf, uint32_t video_out_handle,
|
||||
int32_t display_buffer_index, uint32_t flip_mode,
|
||||
int64_t flip_arg);
|
||||
|
||||
} // namespace Gen5
|
||||
|
||||
@@ -304,28 +297,25 @@ static_assert(offsetof(Packet, addr) == 0x0);
|
||||
static_assert(offsetof(Packet, dw_num) == 0x8);
|
||||
static_assert(offsetof(Packet, flags) == 0xc);
|
||||
|
||||
int KYTY_SYSV_ABI GraphicsDriverSubmitDcb(const Packet* packet);
|
||||
int KYTY_SYSV_ABI GraphicsDriverSubmitMultiDcbs(uint32_t* const* dcb_gpu_addrs,
|
||||
const uint32_t* dcb_sizes_in_dwords,
|
||||
uint32_t count);
|
||||
int KYTY_SYSV_ABI GraphicsDriverSubmitCommandBuffer(void* queue_context, const Packet* packet);
|
||||
int KYTY_SYSV_ABI GraphicsDriverSubmitMultiCommandBuffers(void* queue_context,
|
||||
uint32_t* const* command_buffers,
|
||||
const uint32_t* sizes_in_dwords,
|
||||
uint32_t count);
|
||||
int KYTY_SYSV_ABI GraphicsDriverSubmitAcb(uint32_t queue, const Packet* packet);
|
||||
int KYTY_SYSV_ABI GraphicsDriverSubmitMultiAcbs(uint32_t queue, uint32_t* const* acbs,
|
||||
const uint32_t* sizes_in_dwords, uint32_t count);
|
||||
int KYTY_SYSV_ABI GraphicsDriverAddEqEvent(LibKernel::EventQueue::KernelEqueue eq, int id,
|
||||
void* udata);
|
||||
int KYTY_SYSV_ABI GraphicsDriverDeleteEqEvent(LibKernel::EventQueue::KernelEqueue eq, int id);
|
||||
int KYTY_SYSV_ABI GraphicsDriverGetEqEventType(const LibKernel::EventQueue::KernelEvent* ev);
|
||||
uint32_t KYTY_SYSV_ABI GraphicsDriverGetEqContextId(const LibKernel::EventQueue::KernelEvent* ev);
|
||||
int KYTY_SYSV_ABI GraphicsDriverSetTFRing(const volatile void* base, uint32_t size);
|
||||
int KYTY_SYSV_ABI GraphicsDriverSetHsOffchipParam(uint64_t value0, uint64_t value1,
|
||||
uint64_t value2);
|
||||
bool KYTY_SYSV_ABI GraphicsDriverIsCaptureInProgress();
|
||||
int KYTY_SYSV_ABI GraphicsDriverUnknownU9ueyEhSkF4();
|
||||
int KYTY_SYSV_ABI AgcDriverSubmitDcb(const Packet* packet);
|
||||
int KYTY_SYSV_ABI AgcDriverSubmitMultiDcbs(uint32_t* const* dcb_gpu_addrs,
|
||||
const uint32_t* dcb_sizes_in_dwords, uint32_t count);
|
||||
int KYTY_SYSV_ABI AgcDriverSubmitCommandBuffer(void* queue_context, const Packet* packet);
|
||||
int KYTY_SYSV_ABI AgcDriverSubmitMultiCommandBuffers(void* queue_context,
|
||||
uint32_t* const* command_buffers,
|
||||
const uint32_t* sizes_in_dwords,
|
||||
uint32_t count);
|
||||
int KYTY_SYSV_ABI AgcDriverSubmitAcb(uint32_t queue, const Packet* packet);
|
||||
int KYTY_SYSV_ABI AgcDriverSubmitMultiAcbs(uint32_t queue, uint32_t* const* acbs,
|
||||
const uint32_t* sizes_in_dwords, uint32_t count);
|
||||
int KYTY_SYSV_ABI AgcDriverAddEqEvent(LibKernel::EventQueue::KernelEqueue eq, int id, void* udata);
|
||||
int KYTY_SYSV_ABI AgcDriverDeleteEqEvent(LibKernel::EventQueue::KernelEqueue eq, int id);
|
||||
int KYTY_SYSV_ABI AgcDriverGetEqEventType(const LibKernel::EventQueue::KernelEvent* ev);
|
||||
uint32_t KYTY_SYSV_ABI AgcDriverGetEqContextId(const LibKernel::EventQueue::KernelEvent* ev);
|
||||
int KYTY_SYSV_ABI AgcDriverSetTFRing(const volatile void* base, uint32_t size);
|
||||
int KYTY_SYSV_ABI AgcDriverSetHsOffchipParam(uint64_t value0, uint64_t value1, uint64_t value2);
|
||||
bool KYTY_SYSV_ABI AgcDriverIsCaptureInProgress();
|
||||
int KYTY_SYSV_ABI AgcDriverUnknownU9ueyEhSkF4();
|
||||
|
||||
} // namespace Gen5Driver
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// No-feature, non-0x840f00 GraphicsGetRegisterDefaults2 dispatch, versions 0..12.
|
||||
// No-feature, non-0x840f00 AgcGetRegisterDefaults2 dispatch, versions 0..12.
|
||||
// Type entries keep the pointer index in bits 0..9; higher bits are AGC flags.
|
||||
|
||||
// g_agc_internal_reg_defaults_v0: regs=(1, 12, 0, 4), ptrs=(1, 12, 0, 2), types=15.
|
||||
|
||||
@@ -0,0 +1,330 @@
|
||||
#include "common/abi.h"
|
||||
#include "libs/agc.h"
|
||||
#include "libs/libs.h"
|
||||
#include "loader/symbolDatabase.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
namespace Libs {
|
||||
|
||||
namespace LibGen5 {
|
||||
|
||||
LIB_VERSION("Graphics5", 1, "Graphics5", 1, 1);
|
||||
|
||||
namespace Gen5 = Graphics::Gen5;
|
||||
|
||||
template <class T>
|
||||
static T ReadUnaligned(const uint8_t* ptr, uint32_t offset) {
|
||||
T ret {};
|
||||
std::memcpy(&ret, ptr + offset, sizeof(T));
|
||||
return ret;
|
||||
}
|
||||
|
||||
static uint32_t BitExtract(uint32_t value, uint32_t start, uint32_t len) {
|
||||
return (value >> start) & ((1u << len) - 1u);
|
||||
}
|
||||
|
||||
static void Graphics5UnknownDbWriteDefault(uint64_t* out, uint32_t first) {
|
||||
constexpr uint64_t default_entry = 0x10000000ull;
|
||||
|
||||
for (uint32_t i = first; i < 32u; i++) {
|
||||
const auto low = static_cast<uint32_t>(default_entry) + i;
|
||||
const auto high = static_cast<uint32_t>(default_entry >> 37u) * 32u + i;
|
||||
out[i] = (static_cast<uint64_t>(high) << 32u) | low;
|
||||
}
|
||||
}
|
||||
|
||||
static uint32_t Graphics5UnknownDbApplyTwoBitField(uint32_t value, uint32_t field, uint32_t shift) {
|
||||
const auto mask = 0x3u << shift;
|
||||
|
||||
switch (field & 0x3u) {
|
||||
case 0: return value & ~mask;
|
||||
case 1: return (value & ~mask) | (0x1u << shift);
|
||||
case 2: return (value & ~mask) | (0x2u << shift);
|
||||
default: return value | mask;
|
||||
}
|
||||
}
|
||||
|
||||
static uint32_t Graphics5UnknownDbApplyFinalMask(uint32_t flags, uint32_t src,
|
||||
uint32_t mask_value) {
|
||||
flags &= 0xffffffe0u;
|
||||
flags |= BitExtract(mask_value, 8u, 5u);
|
||||
flags &= 0xfffffbffu;
|
||||
flags |= ((src & 0x400000u) != 0 ? 0x400u : ((src >> 14u) & 0x400u));
|
||||
return flags;
|
||||
}
|
||||
|
||||
static int KYTY_SYSV_ABI AgcUnknownDbOlWdppb4o(uint64_t arg0, uint64_t arg1, uint64_t arg2,
|
||||
uint64_t arg3, uint64_t arg4, uint64_t arg5) {
|
||||
PRINT_NAME();
|
||||
|
||||
(void)arg3;
|
||||
(void)arg4;
|
||||
(void)arg5;
|
||||
|
||||
auto* out = reinterpret_cast<uint64_t*>(arg0);
|
||||
|
||||
if (arg2 == 0) {
|
||||
Graphics5UnknownDbWriteDefault(out, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
const auto* desc = reinterpret_cast<const uint8_t*>(arg1);
|
||||
const auto* src = reinterpret_cast<const uint8_t*>(arg2);
|
||||
|
||||
const auto count = ReadUnaligned<uint32_t>(src, 0x50u);
|
||||
|
||||
if (count == 0) {
|
||||
Graphics5UnknownDbWriteDefault(out, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
const auto mask_count = ReadUnaligned<uint16_t>(desc, 0x56u);
|
||||
const auto* masks = reinterpret_cast<const uint32_t*>(ReadUnaligned<uint64_t>(desc, 0x38u));
|
||||
const auto* src_entries =
|
||||
reinterpret_cast<const uint32_t*>(ReadUnaligned<uint64_t>(src, 0x30u));
|
||||
|
||||
for (uint32_t i = 0; i < count; i++) {
|
||||
auto src_value = src_entries[i];
|
||||
auto mask_index = static_cast<uint32_t>(mask_count);
|
||||
|
||||
for (uint32_t j = 0; j < mask_count; j++) {
|
||||
if ((static_cast<uint8_t>(masks[j]) ^ static_cast<uint8_t>(src_value)) == 0) {
|
||||
mask_index = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const bool has_mask = (mask_index < mask_count);
|
||||
const auto mode = (src_value >> 20u) & 0x3u;
|
||||
auto flags = 0u;
|
||||
|
||||
if (mode == 0) {
|
||||
flags = (((src_value >> 24u) & 0x1u) | (has_mask ? 0u : 1u)) << 5u;
|
||||
flags = Graphics5UnknownDbApplyTwoBitField(flags, (src_value >> 28u) & 0x3u, 8u);
|
||||
} else {
|
||||
const auto shifted_mode = (src_value << 4u) & 0x03000000u;
|
||||
flags = shifted_mode + 0x80000u;
|
||||
|
||||
if (mode == 2) {
|
||||
flags &= 0xffefffdfu;
|
||||
if (has_mask) {
|
||||
flags |= ((~(masks[mask_index] & src_value) >> 16u) & 0x20u);
|
||||
} else {
|
||||
flags |= 0x20u;
|
||||
}
|
||||
flags = Graphics5UnknownDbApplyTwoBitField(flags, (src_value >> 30u) & 0x3u, 8u);
|
||||
flags = Graphics5UnknownDbApplyTwoBitField(flags, (src_value >> 30u) & 0x3u, 21u);
|
||||
} else {
|
||||
if (has_mask) {
|
||||
const auto masked = masks[mask_index] & src_value;
|
||||
flags &= 0xffffffdfu;
|
||||
flags |= (masked >> 15u) & 0x20u;
|
||||
flags ^= 0x20u;
|
||||
flags &= 0xffefffffu;
|
||||
flags |= ((~masked >> 1u) & 0x100000u);
|
||||
flags =
|
||||
Graphics5UnknownDbApplyTwoBitField(flags, (src_value >> 30u) & 0x3u, 8u);
|
||||
} else {
|
||||
flags |= 0x100020u;
|
||||
flags =
|
||||
Graphics5UnknownDbApplyTwoBitField(flags, (src_value >> 28u) & 0x3u, 8u);
|
||||
}
|
||||
flags = Graphics5UnknownDbApplyTwoBitField(flags, (src_value >> 30u) & 0x3u, 21u);
|
||||
}
|
||||
}
|
||||
|
||||
if (has_mask) {
|
||||
flags = Graphics5UnknownDbApplyFinalMask(flags, src_value, masks[mask_index]);
|
||||
} else {
|
||||
flags &= 0xfffffbe0u;
|
||||
}
|
||||
|
||||
out[i] = (static_cast<uint64_t>(flags) << 32u) | (0x10000000u + i);
|
||||
}
|
||||
|
||||
if (count < 32u) {
|
||||
Graphics5UnknownDbWriteDefault(out, count);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
LIB_DEFINE(InitAgcDriver_1) {
|
||||
PRINT_NAME_ENABLE(true);
|
||||
|
||||
LIB_FUNC("23LRUSvYu1M", Gen5::AgcInit);
|
||||
LIB_FUNC("2JtWUUiYBXs", Gen5::AgcGetRegisterDefaults2);
|
||||
LIB_FUNC("wRbq6ZjNop4", Gen5::AgcGetRegisterDefaults2Internal);
|
||||
LIB_FUNC("f3dg2CSgRKY", Gen5::AgcCreateShader);
|
||||
LIB_FUNC("dolOmWH+huQ", Gen5::AgcUnknownGetFusedShaderSize);
|
||||
LIB_FUNC("fd5Bp5tGTgo", Gen5::AgcUnknownFuseShaderHalves);
|
||||
LIB_FUNC("nApJjpKNBl4", Gen5::AgcUnknownNApJjpKNBl4);
|
||||
LIB_FUNC("vcmNN+AAXnY", Gen5::AgcSetCxRegIndirectPatchSetAddress);
|
||||
LIB_FUNC("Qrj4c+61z4A", Gen5::AgcSetShRegIndirectPatchSetAddress);
|
||||
LIB_FUNC("6lNcCp+fxi4", Gen5::AgcSetUcRegIndirectPatchSetAddress);
|
||||
LIB_FUNC("whb1RL7K4Ss", Gen5::AgcSetCxRegIndirectPatchSetNumRegisters);
|
||||
LIB_FUNC("nCUgItdN2ms", Gen5::AgcSetShRegIndirectPatchSetNumRegisters);
|
||||
LIB_FUNC("fRG-JOH5+sI", Gen5::AgcSetUcRegIndirectPatchSetNumRegisters);
|
||||
LIB_FUNC("d-6uF9sZDIU", Gen5::AgcSetCxRegIndirectPatchAddRegisters);
|
||||
LIB_FUNC("z2duB-hHQSM", Gen5::AgcSetShRegIndirectPatchAddRegisters);
|
||||
LIB_FUNC("vRoArM9zaIk", Gen5::AgcSetUcRegIndirectPatchAddRegisters);
|
||||
LIB_FUNC("D9sr1xGUriE", Gen5::AgcCreatePrimState);
|
||||
LIB_FUNC("Y3ymLfZ1384", Gen5::AgcUpdatePrimState);
|
||||
LIB_FUNC("NKIzURsgV7I", Gen5::AgcGetGsOversubscription);
|
||||
LIB_FUNC("HV4j+E0MBHE", Gen5::AgcCreateInterpolantMapping);
|
||||
LIB_FUNC("V++UgBtQhn0", Gen5::AgcGetDataPacketPayloadAddress);
|
||||
LIB_FUNC("s+VGAMDQ0AQ", Gen5::AgcGetDataPacketPayloadRange);
|
||||
LIB_FUNC("fPSCdQxgpSw", Gen5::AgcWriteDataPatchSetAddressOrOffset);
|
||||
LIB_FUNC("bxca0BK4FNg", Gen5::AgcUnknownJumpPatchSetTarget);
|
||||
LIB_FUNC("2BS4EtAaF28", Gen5::AgcJumpPatchSetTarget);
|
||||
LIB_FUNC("h9z6+0hEydk", Gen5::AgcSuspendPoint);
|
||||
LIB_FUNC("qj7QZpgr9Uw", Gen5::AgcDcbContextStateOp);
|
||||
LIB_FUNC("H6vHS5cidSA", Gen5::AgcDcbContextStateOpGetSize);
|
||||
LIB_FUNC("BfBDZGbti7A", Gen5::AgcGetIsTrinityMode);
|
||||
LIB_FUNC("dbOlWdppb4o", LibGen5::AgcUnknownDbOlWdppb4o);
|
||||
|
||||
LIB_FUNC("F0ZXt5q0ZTA", Gen5::AgcDriverGetDefaultOwner);
|
||||
LIB_FUNC("F0Y42t-3e18", Gen5::AgcDriverInitResourceRegistration);
|
||||
LIB_FUNC("AOLcoIkQDgM", Gen5::AgcDriverQueryResourceRegistrationUserMemoryRequirements);
|
||||
LIB_FUNC("uJziRsODk1c", Gen5::AgcDriverGetResourceRegistrationMaxNameLength);
|
||||
LIB_FUNC("X-Nm5KLREeg", Gen5::AgcDriverRegisterOwner);
|
||||
LIB_FUNC("W5z4eZrjEas", Gen5::AgcDriverRegisterResource);
|
||||
LIB_FUNC("ZLJk9r2+2Aw", Gen5::AgcDriverUnregisterOwnerAndResources);
|
||||
LIB_FUNC("pWLG7WOpVcw", Gen5::AgcDriverUnregisterResource);
|
||||
LIB_FUNC("3AyTaWcF-H8", Gen5::AgcDriverRegisterWorkloadStream);
|
||||
|
||||
LIB_FUNC("LtTouSCZjHM", Gen5::AgcCbNop);
|
||||
LIB_FUNC("t7PlZ9nt5Lc", Gen5::AgcCbNopGetSize);
|
||||
LIB_FUNC("k3GhuSNmBLU", Gen5::AgcCbDispatch);
|
||||
LIB_FUNC("Abendgtz+3o", Gen5::AgcCbDispatchGetSize);
|
||||
LIB_FUNC("w1KFAHVqpaU", Gen5::AgcCbBranch);
|
||||
LIB_FUNC("n2fD4A+pb+g", Gen5::AgcCbSetShRegisterRangeDirect);
|
||||
LIB_FUNC("bxGoVxpdSPQ", Gen5::AgcCbSetShRegisterRangeDirectGetSize);
|
||||
LIB_FUNC("UZbQjYAwwXM", Gen5::AgcCbSetShRegistersDirect);
|
||||
LIB_FUNC("wr23dPKyWc0", Gen5::AgcCbReleaseMem);
|
||||
LIB_FUNC("hL7C0IRpWZI", Gen5::AgcCbQueueEndOfPipeActionGetSize);
|
||||
LIB_FUNC("T6xuVw0KUJo", Gen5::AgcDebugRaiseException);
|
||||
LIB_FUNC("JrtiDtKeS38", Gen5::AgcAcbResetQueue);
|
||||
LIB_FUNC("cFazmnXpJOE", Gen5::AgcAcbEventWrite);
|
||||
LIB_FUNC("KT-hTp-Ch14", Gen5::AgcAcbAcquireMem);
|
||||
LIB_FUNC("ewobAQeMo5k", Gen5::AgcAcbAcquireMemGetSize);
|
||||
LIB_FUNC("qyM2bxYFPAk", Gen5::AgcAcbCondExec);
|
||||
LIB_FUNC("ozKzBP4aki4", Gen5::AgcAcbCondExecGetSize);
|
||||
LIB_FUNC("b-oySn+G2tE", Gen5::AgcAcbJumpGetSize);
|
||||
LIB_FUNC("htn36gPnBk4", Gen5::AgcAcbWaitRegMem);
|
||||
LIB_FUNC("-RnpfpxIhec", Gen5::AgcAcbDmaData);
|
||||
LIB_FUNC("qzMN2XKGA4k", Gen5::AgcAcbCopyData);
|
||||
LIB_FUNC("j3EtxFkSIhQ", Gen5::AgcAcbDispatchIndirect);
|
||||
LIB_FUNC("eZ4+17OQz4Q", Gen5::AgcAcbWriteData);
|
||||
LIB_FUNC("xAeBOa0A3kk", Gen5::AgcAcbSetMarker);
|
||||
LIB_FUNC("cpCILPya5Zk", Gen5::AgcAcbPushMarker);
|
||||
LIB_FUNC("6mFxkVqdmbQ", Gen5::AgcAcbPopMarker);
|
||||
LIB_FUNC("TRO721eVt4g", Gen5::AgcDcbResetQueue);
|
||||
LIB_FUNC("MWiElSNE8j8", Gen5::AgcDcbWaitUntilSafeForRendering);
|
||||
LIB_FUNC("LFSPFmGc9Hg", Gen5::AgcDcbSetWorkloadsActive);
|
||||
LIB_FUNC("hEK26Wdny6s", Gen5::AgcDcbSetWorkloadComplete);
|
||||
LIB_FUNC("QhCbS4X9Rl8", Gen5::AgcDcbSetMarker);
|
||||
LIB_FUNC("pFLArOT53+w", Gen5::AgcDcbSetShRegisterDirect);
|
||||
LIB_FUNC("LHFXRrlTPD8", Gen5::AgcDcbSetCxRegisterDirect);
|
||||
LIB_FUNC("1DeUNpRIDDA", Gen5::AgcDcbSetCxRegisterDirectGetSize);
|
||||
LIB_FUNC("w4-d0n60hdo", Gen5::AgcDcbSetUcRegisterDirect);
|
||||
LIB_FUNC("ZvwO9euwYzc", Gen5::AgcDcbSetCxRegistersIndirect);
|
||||
LIB_FUNC("-HOOCn0JY48", Gen5::AgcDcbSetShRegistersIndirect);
|
||||
LIB_FUNC("hvUfkUIQcOE", Gen5::AgcDcbSetUcRegistersIndirect);
|
||||
LIB_FUNC("GIIW2J37e70", Gen5::AgcDcbSetIndexSize);
|
||||
LIB_FUNC("l4fM9K-Lyks", Gen5::AgcDcbSetIndexBuffer);
|
||||
LIB_FUNC("8N2tmT3jmC8", Gen5::AgcDcbSetIndexCount);
|
||||
LIB_FUNC("tSBxhAPyytQ", Gen5::AgcDcbSetNumInstances);
|
||||
LIB_FUNC("6DFuRKT4C9w", Gen5::AgcDcbSetNumInstancesGetSize);
|
||||
LIB_FUNC("q88lQ+GP5Yk", Gen5::AgcDcbDrawIndex);
|
||||
LIB_FUNC("6ee9Hd3EWXQ", Gen5::AgcDcbDrawIndexGetSize);
|
||||
LIB_FUNC("Ikfdt-rIqCE", Gen5::AgcUnknownIkfdtRIqCE);
|
||||
LIB_FUNC("Rlx+bykm0r0", Gen5::AgcDcbDrawIndexMultiInstanced);
|
||||
LIB_FUNC("mR9j7+SfM34", Gen5::AgcDcbDrawIndexMultiInstancedGetSize);
|
||||
LIB_FUNC("Yw0jKSqop+E", Gen5::AgcDcbDrawIndexAuto);
|
||||
LIB_FUNC("WrdP9Zxx3lQ", Gen5::AgcDcbDrawIndexAutoGetSize);
|
||||
LIB_FUNC("B+aG9DUnTKA", Gen5::AgcDcbDrawIndexOffset);
|
||||
LIB_FUNC("qMlfB1ZhMDc", Gen5::AgcDcbDrawIndexOffsetGetSize);
|
||||
LIB_FUNC("RmaJwLtc8rY", Gen5::AgcDcbSetBaseIndirectArgs);
|
||||
LIB_FUNC("1q1titRBL6o", Gen5::AgcDcbDrawIndirect);
|
||||
LIB_FUNC("cxPZ4Wgvdj8", Gen5::AgcDcbDrawIndirectGetSize);
|
||||
LIB_FUNC("t1vNu082-jM", Gen5::AgcDcbDrawIndexIndirect);
|
||||
LIB_FUNC("ypVBz4uPKcQ", Gen5::AgcDcbDrawIndexIndirectMulti);
|
||||
LIB_FUNC("CtB+A9-VxO0", Gen5::AgcDcbDispatchIndirect);
|
||||
LIB_FUNC("w8HVkEeXPv8", Gen5::AgcDcbDispatchIndirectGetSize);
|
||||
LIB_FUNC("aJf+j5yntiU", Gen5::AgcDcbEventWrite);
|
||||
LIB_FUNC("57labkp+rSQ", Gen5::AgcDcbAcquireMem);
|
||||
LIB_FUNC("-vnlTPPXPrw", Gen5::AgcDcbAcquireMemGetSize);
|
||||
LIB_FUNC("1rZSWUv1IRc", Gen5::AgcDcbCopyData);
|
||||
LIB_FUNC("WmAc2MEj6Io", Gen5::AgcDcbDmaData);
|
||||
LIB_FUNC("xSAR0LTcRKM", Gen5::AgcDcbJump);
|
||||
LIB_FUNC("VEGu4dixjUg", Gen5::AgcDcbJumpGetSize);
|
||||
LIB_FUNC("QIXCsbipds0", Gen5::AgcDcbRewindGetSize);
|
||||
LIB_FUNC("zfcxg-ewMK8", Gen5::AgcDcbRewind);
|
||||
LIB_FUNC("BIPexNBSGog", Gen5::AgcDcbCondExec);
|
||||
LIB_FUNC("ou16V5hh5sg", Gen5::AgcDcbCondExecGetSize);
|
||||
LIB_FUNC("bbFueFP+J4k", Gen5::AgcDcbSetPredication);
|
||||
LIB_FUNC("-KRzWekV120", Gen5::AgcUnknownKRzWekV120);
|
||||
LIB_FUNC("IxYiarKlXxM", Gen5::AgcDmaDataPatchSetDstAddressOrOffset);
|
||||
LIB_FUNC("cdDRpqcFGbU", Gen5::AgcDmaDataPatchSetSrcAddressOrOffsetOrImmediate);
|
||||
LIB_FUNC("Lkf86B98qPc", Gen5::AgcGetPacketSize);
|
||||
LIB_FUNC("w6Dj1VJt5qY", Gen5::AgcSetPacketPredication);
|
||||
LIB_FUNC("n8vgpaQg6dA", Gen5::AgcSetRangePredication);
|
||||
LIB_FUNC("i1jyy49AjXU", Gen5::AgcDcbWriteData);
|
||||
LIB_FUNC("p9tI+yTvx68", Gen5::AgcDcbWriteDataGetSize);
|
||||
LIB_FUNC("vuSXe69VILM", Gen5::AgcDcbGetLodStats);
|
||||
LIB_FUNC("VmW0Tdpy420", Gen5::AgcDcbWaitRegMem);
|
||||
LIB_FUNC("43WJ08sSugE", Gen5::AgcDcbWaitOnAddressGetSize);
|
||||
LIB_FUNC("+kSrjIVxKFE", Gen5::AgcDcbPushMarker);
|
||||
LIB_FUNC("H7uZqCoNuWk", Gen5::AgcDcbPopMarker);
|
||||
LIB_FUNC("u2T2DiA5hRI", Gen5::AgcDcbStallCommandBufferParser);
|
||||
LIB_FUNC("3KDcnM3lrcU", Gen5::AgcWaitRegMemPatchAddress);
|
||||
LIB_FUNC("7nOoijNPvEU", Gen5::AgcWaitRegMemPatchReference);
|
||||
LIB_FUNC("0fWWK5uG9rQ", Gen5::AgcQueueEndOfPipeActionPatchAddress);
|
||||
LIB_FUNC("MlEw1feXcjg", Gen5::AgcQueueEndOfPipeActionPatchData);
|
||||
LIB_FUNC("ORWsxIbk4TE", Gen5::AgcCondExecPatchSetEnd);
|
||||
LIB_FUNC("YWTKOju587o", Gen5::AgcCondExecPatchSetCommandAddress);
|
||||
LIB_FUNC("k-JpyR2dYAM", Gen5::AgcCondExecPatchSetEnd);
|
||||
LIB_FUNC("3ZWa3AoyWZQ", Gen5::AgcCondExecPatchSetCommandAddress);
|
||||
LIB_FUNC("ziVA3whp3p4", Gen5::AgcRewindPatchSetRewindState);
|
||||
LIB_FUNC("YUeqkyT7mEQ", Gen5::AgcDcbSetFlip);
|
||||
}
|
||||
|
||||
} // namespace LibGen5
|
||||
|
||||
namespace LibGen5Driver {
|
||||
|
||||
LIB_VERSION("Graphics5Driver", 1, "Graphics5Driver", 1, 1);
|
||||
|
||||
namespace Gen5Driver = Graphics::Gen5Driver;
|
||||
|
||||
LIB_DEFINE(InitAgcDriver_1) {
|
||||
PRINT_NAME_ENABLE(true);
|
||||
|
||||
LIB_FUNC("UglJIZjGssM", Gen5Driver::AgcDriverSubmitDcb);
|
||||
LIB_FUNC("AhGvpITrf4M", Gen5Driver::AgcDriverSubmitDcb);
|
||||
LIB_FUNC("6UzEidRZwkg", Gen5Driver::AgcDriverSubmitMultiDcbs);
|
||||
LIB_FUNC("+T8Xo6LtFJI", Gen5Driver::AgcDriverSubmitMultiDcbs);
|
||||
LIB_FUNC("b4fpgH5ZXxQ", Gen5Driver::AgcDriverSubmitCommandBuffer);
|
||||
LIB_FUNC("Fj7r9EHzF38", Gen5Driver::AgcDriverSubmitMultiCommandBuffers);
|
||||
LIB_FUNC("gSRnr79F8tQ", Gen5Driver::AgcDriverSubmitAcb);
|
||||
LIB_FUNC("HF3YllT3mXU", Gen5Driver::AgcDriverSubmitMultiAcbs);
|
||||
LIB_FUNC("w2rJhmD+dsE", Gen5Driver::AgcDriverAddEqEvent);
|
||||
LIB_FUNC("DL2RXaXOy88", Gen5Driver::AgcDriverDeleteEqEvent);
|
||||
LIB_FUNC("5CdQTZIQPxM", Gen5Driver::AgcDriverGetEqEventType);
|
||||
LIB_FUNC("Zw7uUVPulbw", Gen5Driver::AgcDriverGetEqContextId);
|
||||
LIB_FUNC("XlNp7jzGiPo", Gen5Driver::AgcDriverSetTFRing);
|
||||
LIB_FUNC("MM4IZSEYytQ", Gen5Driver::AgcDriverSetHsOffchipParam);
|
||||
LIB_FUNC("Ddwk4gLT5j0", Gen5Driver::AgcDriverIsCaptureInProgress);
|
||||
LIB_FUNC("U9ueyEhSkF4", Gen5Driver::AgcDriverUnknownU9ueyEhSkF4);
|
||||
}
|
||||
|
||||
} // namespace LibGen5Driver
|
||||
|
||||
LIB_DEFINE(InitAgcDriver_1) {
|
||||
LibGen5::InitAgcDriver_1(s);
|
||||
LibGen5Driver::InitAgcDriver_1(s);
|
||||
}
|
||||
|
||||
} // namespace Libs
|
||||
@@ -1,330 +0,0 @@
|
||||
#include "common/abi.h"
|
||||
#include "libs/agc.h"
|
||||
#include "libs/libs.h"
|
||||
#include "loader/symbolDatabase.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
namespace Libs {
|
||||
|
||||
namespace LibGen5 {
|
||||
|
||||
LIB_VERSION("Graphics5", 1, "Graphics5", 1, 1);
|
||||
|
||||
namespace Gen5 = Graphics::Gen5;
|
||||
|
||||
template <class T>
|
||||
static T ReadUnaligned(const uint8_t* ptr, uint32_t offset) {
|
||||
T ret {};
|
||||
std::memcpy(&ret, ptr + offset, sizeof(T));
|
||||
return ret;
|
||||
}
|
||||
|
||||
static uint32_t BitExtract(uint32_t value, uint32_t start, uint32_t len) {
|
||||
return (value >> start) & ((1u << len) - 1u);
|
||||
}
|
||||
|
||||
static void Graphics5UnknownDbWriteDefault(uint64_t* out, uint32_t first) {
|
||||
constexpr uint64_t default_entry = 0x10000000ull;
|
||||
|
||||
for (uint32_t i = first; i < 32u; i++) {
|
||||
const auto low = static_cast<uint32_t>(default_entry) + i;
|
||||
const auto high = static_cast<uint32_t>(default_entry >> 37u) * 32u + i;
|
||||
out[i] = (static_cast<uint64_t>(high) << 32u) | low;
|
||||
}
|
||||
}
|
||||
|
||||
static uint32_t Graphics5UnknownDbApplyTwoBitField(uint32_t value, uint32_t field, uint32_t shift) {
|
||||
const auto mask = 0x3u << shift;
|
||||
|
||||
switch (field & 0x3u) {
|
||||
case 0: return value & ~mask;
|
||||
case 1: return (value & ~mask) | (0x1u << shift);
|
||||
case 2: return (value & ~mask) | (0x2u << shift);
|
||||
default: return value | mask;
|
||||
}
|
||||
}
|
||||
|
||||
static uint32_t Graphics5UnknownDbApplyFinalMask(uint32_t flags, uint32_t src,
|
||||
uint32_t mask_value) {
|
||||
flags &= 0xffffffe0u;
|
||||
flags |= BitExtract(mask_value, 8u, 5u);
|
||||
flags &= 0xfffffbffu;
|
||||
flags |= ((src & 0x400000u) != 0 ? 0x400u : ((src >> 14u) & 0x400u));
|
||||
return flags;
|
||||
}
|
||||
|
||||
static int KYTY_SYSV_ABI Graphics5UnknownDb(uint64_t arg0, uint64_t arg1, uint64_t arg2,
|
||||
uint64_t arg3, uint64_t arg4, uint64_t arg5) {
|
||||
PRINT_NAME();
|
||||
|
||||
(void)arg3;
|
||||
(void)arg4;
|
||||
(void)arg5;
|
||||
|
||||
auto* out = reinterpret_cast<uint64_t*>(arg0);
|
||||
|
||||
if (arg2 == 0) {
|
||||
Graphics5UnknownDbWriteDefault(out, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
const auto* desc = reinterpret_cast<const uint8_t*>(arg1);
|
||||
const auto* src = reinterpret_cast<const uint8_t*>(arg2);
|
||||
|
||||
const auto count = ReadUnaligned<uint32_t>(src, 0x50u);
|
||||
|
||||
if (count == 0) {
|
||||
Graphics5UnknownDbWriteDefault(out, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
const auto mask_count = ReadUnaligned<uint16_t>(desc, 0x56u);
|
||||
const auto* masks = reinterpret_cast<const uint32_t*>(ReadUnaligned<uint64_t>(desc, 0x38u));
|
||||
const auto* src_entries =
|
||||
reinterpret_cast<const uint32_t*>(ReadUnaligned<uint64_t>(src, 0x30u));
|
||||
|
||||
for (uint32_t i = 0; i < count; i++) {
|
||||
auto src_value = src_entries[i];
|
||||
auto mask_index = static_cast<uint32_t>(mask_count);
|
||||
|
||||
for (uint32_t j = 0; j < mask_count; j++) {
|
||||
if ((static_cast<uint8_t>(masks[j]) ^ static_cast<uint8_t>(src_value)) == 0) {
|
||||
mask_index = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const bool has_mask = (mask_index < mask_count);
|
||||
const auto mode = (src_value >> 20u) & 0x3u;
|
||||
auto flags = 0u;
|
||||
|
||||
if (mode == 0) {
|
||||
flags = (((src_value >> 24u) & 0x1u) | (has_mask ? 0u : 1u)) << 5u;
|
||||
flags = Graphics5UnknownDbApplyTwoBitField(flags, (src_value >> 28u) & 0x3u, 8u);
|
||||
} else {
|
||||
const auto shifted_mode = (src_value << 4u) & 0x03000000u;
|
||||
flags = shifted_mode + 0x80000u;
|
||||
|
||||
if (mode == 2) {
|
||||
flags &= 0xffefffdfu;
|
||||
if (has_mask) {
|
||||
flags |= ((~(masks[mask_index] & src_value) >> 16u) & 0x20u);
|
||||
} else {
|
||||
flags |= 0x20u;
|
||||
}
|
||||
flags = Graphics5UnknownDbApplyTwoBitField(flags, (src_value >> 30u) & 0x3u, 8u);
|
||||
flags = Graphics5UnknownDbApplyTwoBitField(flags, (src_value >> 30u) & 0x3u, 21u);
|
||||
} else {
|
||||
if (has_mask) {
|
||||
const auto masked = masks[mask_index] & src_value;
|
||||
flags &= 0xffffffdfu;
|
||||
flags |= (masked >> 15u) & 0x20u;
|
||||
flags ^= 0x20u;
|
||||
flags &= 0xffefffffu;
|
||||
flags |= ((~masked >> 1u) & 0x100000u);
|
||||
flags =
|
||||
Graphics5UnknownDbApplyTwoBitField(flags, (src_value >> 30u) & 0x3u, 8u);
|
||||
} else {
|
||||
flags |= 0x100020u;
|
||||
flags =
|
||||
Graphics5UnknownDbApplyTwoBitField(flags, (src_value >> 28u) & 0x3u, 8u);
|
||||
}
|
||||
flags = Graphics5UnknownDbApplyTwoBitField(flags, (src_value >> 30u) & 0x3u, 21u);
|
||||
}
|
||||
}
|
||||
|
||||
if (has_mask) {
|
||||
flags = Graphics5UnknownDbApplyFinalMask(flags, src_value, masks[mask_index]);
|
||||
} else {
|
||||
flags &= 0xfffffbe0u;
|
||||
}
|
||||
|
||||
out[i] = (static_cast<uint64_t>(flags) << 32u) | (0x10000000u + i);
|
||||
}
|
||||
|
||||
if (count < 32u) {
|
||||
Graphics5UnknownDbWriteDefault(out, count);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
LIB_DEFINE(InitGraphicsDriver_1) {
|
||||
PRINT_NAME_ENABLE(true);
|
||||
|
||||
LIB_FUNC("23LRUSvYu1M", Gen5::GraphicsInit);
|
||||
LIB_FUNC("2JtWUUiYBXs", Gen5::GraphicsGetRegisterDefaults2);
|
||||
LIB_FUNC("wRbq6ZjNop4", Gen5::GraphicsGetRegisterDefaults2Internal);
|
||||
LIB_FUNC("f3dg2CSgRKY", Gen5::GraphicsCreateShader);
|
||||
LIB_FUNC("dolOmWH+huQ", Gen5::GraphicsUnknownGetFusedShaderSize);
|
||||
LIB_FUNC("fd5Bp5tGTgo", Gen5::GraphicsUnknownFuseShaderHalves);
|
||||
LIB_FUNC("nApJjpKNBl4", Gen5::GraphicsUnknownNApJjpKNBl4);
|
||||
LIB_FUNC("vcmNN+AAXnY", Gen5::GraphicsSetCxRegIndirectPatchSetAddress);
|
||||
LIB_FUNC("Qrj4c+61z4A", Gen5::GraphicsSetShRegIndirectPatchSetAddress);
|
||||
LIB_FUNC("6lNcCp+fxi4", Gen5::GraphicsSetUcRegIndirectPatchSetAddress);
|
||||
LIB_FUNC("whb1RL7K4Ss", Gen5::GraphicsSetCxRegIndirectPatchSetNumRegisters);
|
||||
LIB_FUNC("nCUgItdN2ms", Gen5::GraphicsSetShRegIndirectPatchSetNumRegisters);
|
||||
LIB_FUNC("fRG-JOH5+sI", Gen5::GraphicsSetUcRegIndirectPatchSetNumRegisters);
|
||||
LIB_FUNC("d-6uF9sZDIU", Gen5::GraphicsSetCxRegIndirectPatchAddRegisters);
|
||||
LIB_FUNC("z2duB-hHQSM", Gen5::GraphicsSetShRegIndirectPatchAddRegisters);
|
||||
LIB_FUNC("vRoArM9zaIk", Gen5::GraphicsSetUcRegIndirectPatchAddRegisters);
|
||||
LIB_FUNC("D9sr1xGUriE", Gen5::GraphicsCreatePrimState);
|
||||
LIB_FUNC("Y3ymLfZ1384", Gen5::GraphicsUpdatePrimState);
|
||||
LIB_FUNC("NKIzURsgV7I", Gen5::GraphicsGetGsOversubscription);
|
||||
LIB_FUNC("HV4j+E0MBHE", Gen5::GraphicsCreateInterpolantMapping);
|
||||
LIB_FUNC("V++UgBtQhn0", Gen5::GraphicsGetDataPacketPayloadAddress);
|
||||
LIB_FUNC("s+VGAMDQ0AQ", Gen5::GraphicsGetDataPacketPayloadRange);
|
||||
LIB_FUNC("fPSCdQxgpSw", Gen5::GraphicsWriteDataPatchSetAddressOrOffset);
|
||||
LIB_FUNC("bxca0BK4FNg", Gen5::GraphicsUnknownJumpPatchSetTarget);
|
||||
LIB_FUNC("2BS4EtAaF28", Gen5::GraphicsJumpPatchSetTarget);
|
||||
LIB_FUNC("h9z6+0hEydk", Gen5::GraphicsSuspendPoint);
|
||||
LIB_FUNC("qj7QZpgr9Uw", Gen5::GraphicsDcbContextStateOp);
|
||||
LIB_FUNC("H6vHS5cidSA", Gen5::GraphicsDcbContextStateOpGetSize);
|
||||
LIB_FUNC("BfBDZGbti7A", Gen5::GraphicsGetIsTrinityMode);
|
||||
LIB_FUNC("dbOlWdppb4o", LibGen5::Graphics5UnknownDb);
|
||||
|
||||
LIB_FUNC("F0ZXt5q0ZTA", Gen5::GraphicsDriverGetDefaultOwner);
|
||||
LIB_FUNC("F0Y42t-3e18", Gen5::GraphicsDriverInitResourceRegistration);
|
||||
LIB_FUNC("AOLcoIkQDgM", Gen5::GraphicsDriverQueryResourceRegistrationUserMemoryRequirements);
|
||||
LIB_FUNC("uJziRsODk1c", Gen5::GraphicsDriverGetResourceRegistrationMaxNameLength);
|
||||
LIB_FUNC("X-Nm5KLREeg", Gen5::GraphicsDriverRegisterOwner);
|
||||
LIB_FUNC("W5z4eZrjEas", Gen5::GraphicsDriverRegisterResource);
|
||||
LIB_FUNC("ZLJk9r2+2Aw", Gen5::GraphicsDriverUnregisterOwnerAndResources);
|
||||
LIB_FUNC("pWLG7WOpVcw", Gen5::GraphicsDriverUnregisterResource);
|
||||
LIB_FUNC("3AyTaWcF-H8", Gen5::GraphicsDriverRegisterWorkloadStream);
|
||||
|
||||
LIB_FUNC("LtTouSCZjHM", Gen5::GraphicsCbNop);
|
||||
LIB_FUNC("t7PlZ9nt5Lc", Gen5::GraphicsCbNopGetSize);
|
||||
LIB_FUNC("k3GhuSNmBLU", Gen5::GraphicsCbDispatch);
|
||||
LIB_FUNC("Abendgtz+3o", Gen5::GraphicsCbDispatchGetSize);
|
||||
LIB_FUNC("w1KFAHVqpaU", Gen5::GraphicsCbBranch);
|
||||
LIB_FUNC("n2fD4A+pb+g", Gen5::GraphicsCbSetShRegisterRangeDirect);
|
||||
LIB_FUNC("bxGoVxpdSPQ", Gen5::GraphicsCbSetShRegisterRangeDirectGetSize);
|
||||
LIB_FUNC("UZbQjYAwwXM", Gen5::GraphicsCbSetShRegistersDirect);
|
||||
LIB_FUNC("wr23dPKyWc0", Gen5::GraphicsCbReleaseMem);
|
||||
LIB_FUNC("hL7C0IRpWZI", Gen5::GraphicsCbQueueEndOfPipeActionGetSize);
|
||||
LIB_FUNC("T6xuVw0KUJo", Gen5::GraphicsDebugRaiseException);
|
||||
LIB_FUNC("JrtiDtKeS38", Gen5::GraphicsAcbResetQueue);
|
||||
LIB_FUNC("cFazmnXpJOE", Gen5::GraphicsAcbEventWrite);
|
||||
LIB_FUNC("KT-hTp-Ch14", Gen5::GraphicsAcbAcquireMem);
|
||||
LIB_FUNC("ewobAQeMo5k", Gen5::GraphicsAcbAcquireMemGetSize);
|
||||
LIB_FUNC("qyM2bxYFPAk", Gen5::GraphicsAcbCondExec);
|
||||
LIB_FUNC("ozKzBP4aki4", Gen5::GraphicsAcbCondExecGetSize);
|
||||
LIB_FUNC("b-oySn+G2tE", Gen5::GraphicsAcbJumpGetSize);
|
||||
LIB_FUNC("htn36gPnBk4", Gen5::GraphicsAcbWaitRegMem);
|
||||
LIB_FUNC("-RnpfpxIhec", Gen5::GraphicsAcbDmaData);
|
||||
LIB_FUNC("qzMN2XKGA4k", Gen5::GraphicsAcbCopyData);
|
||||
LIB_FUNC("j3EtxFkSIhQ", Gen5::GraphicsAcbDispatchIndirect);
|
||||
LIB_FUNC("eZ4+17OQz4Q", Gen5::GraphicsAcbWriteData);
|
||||
LIB_FUNC("xAeBOa0A3kk", Gen5::GraphicsAcbSetMarker);
|
||||
LIB_FUNC("cpCILPya5Zk", Gen5::GraphicsAcbPushMarker);
|
||||
LIB_FUNC("6mFxkVqdmbQ", Gen5::GraphicsAcbPopMarker);
|
||||
LIB_FUNC("TRO721eVt4g", Gen5::GraphicsDcbResetQueue);
|
||||
LIB_FUNC("MWiElSNE8j8", Gen5::GraphicsDcbWaitUntilSafeForRendering);
|
||||
LIB_FUNC("LFSPFmGc9Hg", Gen5::GraphicsDcbSetWorkloadsActive);
|
||||
LIB_FUNC("hEK26Wdny6s", Gen5::GraphicsDcbSetWorkloadComplete);
|
||||
LIB_FUNC("QhCbS4X9Rl8", Gen5::GraphicsDcbSetMarker);
|
||||
LIB_FUNC("pFLArOT53+w", Gen5::GraphicsDcbSetShRegisterDirect);
|
||||
LIB_FUNC("LHFXRrlTPD8", Gen5::GraphicsDcbSetCxRegisterDirect);
|
||||
LIB_FUNC("1DeUNpRIDDA", Gen5::GraphicsDcbSetCxRegisterDirectGetSize);
|
||||
LIB_FUNC("w4-d0n60hdo", Gen5::GraphicsDcbSetUcRegisterDirect);
|
||||
LIB_FUNC("ZvwO9euwYzc", Gen5::GraphicsDcbSetCxRegistersIndirect);
|
||||
LIB_FUNC("-HOOCn0JY48", Gen5::GraphicsDcbSetShRegistersIndirect);
|
||||
LIB_FUNC("hvUfkUIQcOE", Gen5::GraphicsDcbSetUcRegistersIndirect);
|
||||
LIB_FUNC("GIIW2J37e70", Gen5::GraphicsDcbSetIndexSize);
|
||||
LIB_FUNC("l4fM9K-Lyks", Gen5::GraphicsDcbSetIndexBuffer);
|
||||
LIB_FUNC("8N2tmT3jmC8", Gen5::GraphicsDcbSetIndexCount);
|
||||
LIB_FUNC("tSBxhAPyytQ", Gen5::GraphicsDcbSetNumInstances);
|
||||
LIB_FUNC("6DFuRKT4C9w", Gen5::GraphicsDcbSetNumInstancesGetSize);
|
||||
LIB_FUNC("q88lQ+GP5Yk", Gen5::GraphicsDcbDrawIndex);
|
||||
LIB_FUNC("6ee9Hd3EWXQ", Gen5::GraphicsDcbDrawIndexGetSize);
|
||||
LIB_FUNC("Ikfdt-rIqCE", Gen5::GraphicsUnknownIkfdtRIqCE);
|
||||
LIB_FUNC("Rlx+bykm0r0", Gen5::GraphicsDcbDrawIndexMultiInstanced);
|
||||
LIB_FUNC("mR9j7+SfM34", Gen5::GraphicsDcbDrawIndexMultiInstancedGetSize);
|
||||
LIB_FUNC("Yw0jKSqop+E", Gen5::GraphicsDcbDrawIndexAuto);
|
||||
LIB_FUNC("WrdP9Zxx3lQ", Gen5::GraphicsDcbDrawIndexAutoGetSize);
|
||||
LIB_FUNC("B+aG9DUnTKA", Gen5::GraphicsDcbDrawIndexOffset);
|
||||
LIB_FUNC("qMlfB1ZhMDc", Gen5::GraphicsDcbDrawIndexOffsetGetSize);
|
||||
LIB_FUNC("RmaJwLtc8rY", Gen5::GraphicsDcbSetBaseIndirectArgs);
|
||||
LIB_FUNC("1q1titRBL6o", Gen5::GraphicsDcbDrawIndirect);
|
||||
LIB_FUNC("cxPZ4Wgvdj8", Gen5::GraphicsDcbDrawIndirectGetSize);
|
||||
LIB_FUNC("t1vNu082-jM", Gen5::GraphicsDcbDrawIndexIndirect);
|
||||
LIB_FUNC("ypVBz4uPKcQ", Gen5::GraphicsDcbDrawIndexIndirectMulti);
|
||||
LIB_FUNC("CtB+A9-VxO0", Gen5::GraphicsDcbDispatchIndirect);
|
||||
LIB_FUNC("w8HVkEeXPv8", Gen5::GraphicsDcbDispatchIndirectGetSize);
|
||||
LIB_FUNC("aJf+j5yntiU", Gen5::GraphicsDcbEventWrite);
|
||||
LIB_FUNC("57labkp+rSQ", Gen5::GraphicsDcbAcquireMem);
|
||||
LIB_FUNC("-vnlTPPXPrw", Gen5::GraphicsDcbAcquireMemGetSize);
|
||||
LIB_FUNC("1rZSWUv1IRc", Gen5::GraphicsDcbCopyData);
|
||||
LIB_FUNC("WmAc2MEj6Io", Gen5::GraphicsDcbDmaData);
|
||||
LIB_FUNC("xSAR0LTcRKM", Gen5::GraphicsDcbJump);
|
||||
LIB_FUNC("VEGu4dixjUg", Gen5::GraphicsDcbJumpGetSize);
|
||||
LIB_FUNC("QIXCsbipds0", Gen5::GraphicsDcbRewindGetSize);
|
||||
LIB_FUNC("zfcxg-ewMK8", Gen5::GraphicsDcbRewind);
|
||||
LIB_FUNC("BIPexNBSGog", Gen5::GraphicsDcbCondExec);
|
||||
LIB_FUNC("ou16V5hh5sg", Gen5::GraphicsDcbCondExecGetSize);
|
||||
LIB_FUNC("bbFueFP+J4k", Gen5::GraphicsDcbSetPredication);
|
||||
LIB_FUNC("-KRzWekV120", Gen5::GraphicsUnknownKRzWekV120);
|
||||
LIB_FUNC("IxYiarKlXxM", Gen5::GraphicsDmaDataPatchSetDstAddressOrOffset);
|
||||
LIB_FUNC("cdDRpqcFGbU", Gen5::GraphicsDmaDataPatchSetSrcAddressOrOffsetOrImmediate);
|
||||
LIB_FUNC("Lkf86B98qPc", Gen5::GraphicsGetPacketSize);
|
||||
LIB_FUNC("w6Dj1VJt5qY", Gen5::GraphicsSetPacketPredication);
|
||||
LIB_FUNC("n8vgpaQg6dA", Gen5::GraphicsSetRangePredication);
|
||||
LIB_FUNC("i1jyy49AjXU", Gen5::GraphicsDcbWriteData);
|
||||
LIB_FUNC("p9tI+yTvx68", Gen5::GraphicsDcbWriteDataGetSize);
|
||||
LIB_FUNC("vuSXe69VILM", Gen5::GraphicsDcbGetLodStats);
|
||||
LIB_FUNC("VmW0Tdpy420", Gen5::GraphicsDcbWaitRegMem);
|
||||
LIB_FUNC("43WJ08sSugE", Gen5::GraphicsDcbWaitOnAddressGetSize);
|
||||
LIB_FUNC("+kSrjIVxKFE", Gen5::GraphicsDcbPushMarker);
|
||||
LIB_FUNC("H7uZqCoNuWk", Gen5::GraphicsDcbPopMarker);
|
||||
LIB_FUNC("u2T2DiA5hRI", Gen5::GraphicsDcbStallCommandBufferParser);
|
||||
LIB_FUNC("3KDcnM3lrcU", Gen5::GraphicsWaitRegMemPatchAddress);
|
||||
LIB_FUNC("7nOoijNPvEU", Gen5::GraphicsWaitRegMemPatchReference);
|
||||
LIB_FUNC("0fWWK5uG9rQ", Gen5::GraphicsQueueEndOfPipeActionPatchAddress);
|
||||
LIB_FUNC("MlEw1feXcjg", Gen5::GraphicsQueueEndOfPipeActionPatchData);
|
||||
LIB_FUNC("ORWsxIbk4TE", Gen5::GraphicsCondExecPatchSetEnd);
|
||||
LIB_FUNC("YWTKOju587o", Gen5::GraphicsCondExecPatchSetCommandAddress);
|
||||
LIB_FUNC("k-JpyR2dYAM", Gen5::GraphicsCondExecPatchSetEnd);
|
||||
LIB_FUNC("3ZWa3AoyWZQ", Gen5::GraphicsCondExecPatchSetCommandAddress);
|
||||
LIB_FUNC("ziVA3whp3p4", Gen5::GraphicsRewindPatchSetRewindState);
|
||||
LIB_FUNC("YUeqkyT7mEQ", Gen5::GraphicsDcbSetFlip);
|
||||
}
|
||||
|
||||
} // namespace LibGen5
|
||||
|
||||
namespace LibGen5Driver {
|
||||
|
||||
LIB_VERSION("Graphics5Driver", 1, "Graphics5Driver", 1, 1);
|
||||
|
||||
namespace Gen5Driver = Graphics::Gen5Driver;
|
||||
|
||||
LIB_DEFINE(InitGraphicsDriver_1) {
|
||||
PRINT_NAME_ENABLE(true);
|
||||
|
||||
LIB_FUNC("UglJIZjGssM", Gen5Driver::GraphicsDriverSubmitDcb);
|
||||
LIB_FUNC("AhGvpITrf4M", Gen5Driver::GraphicsDriverSubmitDcb);
|
||||
LIB_FUNC("6UzEidRZwkg", Gen5Driver::GraphicsDriverSubmitMultiDcbs);
|
||||
LIB_FUNC("+T8Xo6LtFJI", Gen5Driver::GraphicsDriverSubmitMultiDcbs);
|
||||
LIB_FUNC("b4fpgH5ZXxQ", Gen5Driver::GraphicsDriverSubmitCommandBuffer);
|
||||
LIB_FUNC("Fj7r9EHzF38", Gen5Driver::GraphicsDriverSubmitMultiCommandBuffers);
|
||||
LIB_FUNC("gSRnr79F8tQ", Gen5Driver::GraphicsDriverSubmitAcb);
|
||||
LIB_FUNC("HF3YllT3mXU", Gen5Driver::GraphicsDriverSubmitMultiAcbs);
|
||||
LIB_FUNC("w2rJhmD+dsE", Gen5Driver::GraphicsDriverAddEqEvent);
|
||||
LIB_FUNC("DL2RXaXOy88", Gen5Driver::GraphicsDriverDeleteEqEvent);
|
||||
LIB_FUNC("5CdQTZIQPxM", Gen5Driver::GraphicsDriverGetEqEventType);
|
||||
LIB_FUNC("Zw7uUVPulbw", Gen5Driver::GraphicsDriverGetEqContextId);
|
||||
LIB_FUNC("XlNp7jzGiPo", Gen5Driver::GraphicsDriverSetTFRing);
|
||||
LIB_FUNC("MM4IZSEYytQ", Gen5Driver::GraphicsDriverSetHsOffchipParam);
|
||||
LIB_FUNC("Ddwk4gLT5j0", Gen5Driver::GraphicsDriverIsCaptureInProgress);
|
||||
LIB_FUNC("U9ueyEhSkF4", Gen5Driver::GraphicsDriverUnknownU9ueyEhSkF4);
|
||||
}
|
||||
|
||||
} // namespace LibGen5Driver
|
||||
|
||||
LIB_DEFINE(InitGraphicsDriver_1) {
|
||||
LibGen5::InitGraphicsDriver_1(s);
|
||||
LibGen5Driver::InitGraphicsDriver_1(s);
|
||||
}
|
||||
|
||||
} // namespace Libs
|
||||
+2
-2
@@ -57,7 +57,7 @@ LIB_DEFINE(InitDialog_1);
|
||||
LIB_DEFINE(InitFiber_1);
|
||||
LIB_DEFINE(InitFont_1);
|
||||
LIB_DEFINE(InitFontFt_1);
|
||||
LIB_DEFINE(InitGraphicsDriver_1);
|
||||
LIB_DEFINE(InitAgcDriver_1);
|
||||
LIB_DEFINE(InitLibKernel_1);
|
||||
LIB_DEFINE(InitNet_1);
|
||||
LIB_DEFINE(InitPad_1);
|
||||
@@ -89,7 +89,7 @@ void InitAll(Loader::SymbolDatabase* s) {
|
||||
LIB_LOAD(InitFiber_1);
|
||||
LIB_LOAD(InitFont_1);
|
||||
LIB_LOAD(InitFontFt_1);
|
||||
LIB_LOAD(InitGraphicsDriver_1);
|
||||
LIB_LOAD(InitAgcDriver_1);
|
||||
LIB_LOAD(InitLibKernel_1);
|
||||
LIB_LOAD(LibMouse::InitMouse_1);
|
||||
LIB_LOAD(LibKeyboard::InitKeyboard_1);
|
||||
|
||||
@@ -20823,8 +20823,8 @@ void CheckPm4ContextStateOperations(RenderContext &renderer) {
|
||||
break;
|
||||
}
|
||||
const auto size_dw = static_cast<size_t>(
|
||||
Gen5::GraphicsDcbContextStateOpGetSize(operation_value) / 4);
|
||||
auto *emitted = Gen5::GraphicsDcbContextStateOp(
|
||||
Gen5::AgcDcbContextStateOpGetSize(operation_value) / 4);
|
||||
auto *emitted = Gen5::AgcDcbContextStateOp(
|
||||
reinterpret_cast<Gen5::CommandBuffer *>(&dcb), operation_value);
|
||||
bool packet_matches = true;
|
||||
size_t segment_offset = 0;
|
||||
@@ -20919,11 +20919,11 @@ void CheckPm4ContextStateOperations(RenderContext &renderer) {
|
||||
"processor reset retained an invalid saved Cx state");
|
||||
|
||||
Require("Pm4ContextState", "HLE packet size",
|
||||
Gen5::GraphicsDcbContextStateOpGetSize(0) == 20 &&
|
||||
Gen5::GraphicsDcbContextStateOpGetSize(1) == 108 &&
|
||||
Gen5::GraphicsDcbContextStateOpGetSize(2) == 108 &&
|
||||
Gen5::GraphicsDcbContextStateOpGetSize(3) == 128 &&
|
||||
Gen5::GraphicsDcbContextStateOpGetSize(4) == 0,
|
||||
Gen5::AgcDcbContextStateOpGetSize(0) == 20 &&
|
||||
Gen5::AgcDcbContextStateOpGetSize(1) == 108 &&
|
||||
Gen5::AgcDcbContextStateOpGetSize(2) == 108 &&
|
||||
Gen5::AgcDcbContextStateOpGetSize(3) == 128 &&
|
||||
Gen5::AgcDcbContextStateOpGetSize(4) == 0,
|
||||
"context-state HLE sizes do not match libSceAgc");
|
||||
std::printf("[host] %-32s ok\n", "Pm4ContextState");
|
||||
}
|
||||
|
||||
@@ -5115,7 +5115,7 @@ void TestPsInputCountRegisterDecode() {
|
||||
void TestGraphicsCreateInterpolantMapping() {
|
||||
ShaderRegister regs[32] = {};
|
||||
|
||||
Check(Gen5::GraphicsCreateInterpolantMapping(regs, nullptr, nullptr) == 0,
|
||||
Check(Gen5::AgcCreateInterpolantMapping(regs, nullptr, nullptr) == 0,
|
||||
"null pixel shader interpolant mapping failed");
|
||||
for (uint32_t i = 0; i < 32u; i++) {
|
||||
Check(regs[i].offset == Pm4::CX_PS_SHADER_USAGE_BASE + i,
|
||||
@@ -5154,7 +5154,7 @@ void TestGraphicsCreateInterpolantMapping() {
|
||||
ps.input_semantics = ps_semantics;
|
||||
ps.num_input_semantics = static_cast<uint32_t>(std::size(ps_semantics));
|
||||
|
||||
Check(Gen5::GraphicsCreateInterpolantMapping(regs, &gs, &ps) == 0,
|
||||
Check(Gen5::AgcCreateInterpolantMapping(regs, &gs, &ps) == 0,
|
||||
"shader interpolant mapping failed");
|
||||
Check(regs[0].value == 0x00000005u,
|
||||
"matched interpolant mapping did not use GS hardware mapping");
|
||||
|
||||
Reference in New Issue
Block a user