rename legacy Graphics -> Agc

This commit is contained in:
nmzik
2026-08-18 03:53:43 +02:00
parent af931d73c7
commit 7850cbeaef
8 changed files with 866 additions and 887 deletions
+270 -281
View File
File diff suppressed because it is too large Load Diff
+254 -264
View File
@@ -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 -1
View File
@@ -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.
+330
View File
@@ -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
-330
View File
@@ -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
View File
@@ -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);
+7 -7
View File
@@ -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");
}
+2 -2
View File
@@ -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");