109 lines
3.9 KiB
C++
109 lines
3.9 KiB
C++
#if defined(OVERRIDING_BASE_CMDPROCESSOR)
|
|
#define PM4_OVERRIDE override
|
|
#else
|
|
#define PM4_OVERRIDE
|
|
#endif
|
|
void ExecuteIndirectBuffer(uint32_t ptr, uint32_t count) XE_RESTRICT;
|
|
virtual uint32_t ExecutePrimaryBuffer(uint32_t start_index, uint32_t end_index)
|
|
XE_RESTRICT PM4_OVERRIDE;
|
|
virtual bool ExecutePacket() PM4_OVERRIDE;
|
|
|
|
public:
|
|
void ExecutePacket(uint32_t ptr, uint32_t count);
|
|
|
|
protected:
|
|
XE_NOINLINE
|
|
void DisassembleCurrentPacket() XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType0(uint32_t packet) XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType1(uint32_t packet) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType2(uint32_t packet) XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType3(uint32_t packet) XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType3_ME_INIT(uint32_t packet, uint32_t count) XE_RESTRICT;
|
|
bool ExecutePacketType3_NOP(uint32_t packet, uint32_t count) XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType3_INTERRUPT(uint32_t packet, uint32_t count) XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType3_XE_SWAP(uint32_t packet, uint32_t count) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType3_INDIRECT_BUFFER(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType3_WAIT_REG_MEM(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType3_REG_RMW(uint32_t packet, uint32_t count) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType3_REG_TO_MEM(uint32_t packet, uint32_t count) XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType3_MEM_WRITE(uint32_t packet, uint32_t count) XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType3_COND_WRITE(uint32_t packet, uint32_t count) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType3_EVENT_WRITE(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType3_EVENT_WRITE_SHD(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType3_EVENT_WRITE_EXT(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType3_EVENT_WRITE_ZPD(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType3Draw(uint32_t packet, const char* opcode_name,
|
|
uint32_t viz_query_condition,
|
|
uint32_t count_remaining) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType3_DRAW_INDX(uint32_t packet, uint32_t count) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType3_DRAW_INDX_2(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
XE_FORCEINLINE
|
|
bool ExecutePacketType3_SET_CONSTANT(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
XE_NOINLINE
|
|
bool ExecutePacketType3_SET_CONSTANT2(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
XE_FORCEINLINE
|
|
bool ExecutePacketType3_LOAD_ALU_CONSTANT(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType3_SET_SHADER_CONSTANTS(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType3_IM_LOAD(uint32_t packet, uint32_t count) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType3_IM_LOAD_IMMEDIATE(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType3_INVALIDATE_STATE(uint32_t packet,
|
|
uint32_t count) XE_RESTRICT;
|
|
|
|
bool ExecutePacketType3_VIZ_QUERY(uint32_t packet, uint32_t count) XE_RESTRICT;
|
|
|
|
XE_FORCEINLINE
|
|
void WriteEventInitiator(uint32_t value) XE_RESTRICT;
|
|
|
|
XE_NOINLINE
|
|
XE_COLD
|
|
bool HitUnimplementedOpcode(uint32_t opcode, uint32_t count) XE_RESTRICT;
|
|
|
|
XE_FORCEINLINE
|
|
XE_NOALIAS
|
|
uint32_t GetCurrentRingReadCount();
|
|
|
|
XE_NOINLINE
|
|
XE_COLD
|
|
bool ExecutePacketType3_CountOverflow(uint32_t count);
|
|
XE_NOINLINE
|
|
XE_COLD
|
|
bool ExecutePacketType0_CountOverflow(uint32_t count);
|
|
|
|
#undef PM4_OVERRIDE
|