KFDTest : Add family ID when building SDMA packet

Some SDMA packet format might be different among asic versions

Change-Id: Ic7eda7554c23e3972e168480874ca67a92677346
Signed-off-by: shaoyunl <shaoyun.liu@amd.com>


[ROCm/ROCR-Runtime commit: 395750264d]
This commit is contained in:
shaoyunl
2019-07-18 18:52:56 -04:00
committed by Shaoyun Liu
parent 22da7a83ab
commit a619145290
8 changed files with 57 additions and 58 deletions
@@ -32,18 +32,16 @@
*/
#define SDMA_COUNT(c) (m_FamilyId < FAMILY_AI ? (c) : (c)-1)
SDMAWriteDataPacket::SDMAWriteDataPacket(void):
SDMAWriteDataPacket::SDMAWriteDataPacket(unsigned int familyId, void* destAddr, unsigned int data):
packetData(NULL) {
m_FamilyId = familyId;
InitPacket(destAddr, 1, &data);
}
SDMAWriteDataPacket::SDMAWriteDataPacket(void* destAddr, unsigned int data):
packetData(NULL) {
InitPacket(destAddr, data);
}
SDMAWriteDataPacket::SDMAWriteDataPacket(void* destAddr, unsigned int ndw,
SDMAWriteDataPacket::SDMAWriteDataPacket(unsigned int familyId, void* destAddr, unsigned int ndw,
void *data):
packetData(NULL) {
m_FamilyId = familyId;
InitPacket(destAddr, ndw, data);
}
@@ -52,10 +50,6 @@ SDMAWriteDataPacket::~SDMAWriteDataPacket(void) {
free(packetData);
}
void SDMAWriteDataPacket::InitPacket(void* destAddr, unsigned int data) {
InitPacket(destAddr, 1, &data);
}
void SDMAWriteDataPacket::InitPacket(void* destAddr, unsigned int ndw,
void *data) {
packetSize = sizeof(SDMA_PKT_WRITE_UNTILED) +
@@ -79,7 +73,8 @@ SDMACopyDataPacket::~SDMACopyDataPacket(void) {
free(packetData);
}
SDMACopyDataPacket::SDMACopyDataPacket(void *const dsts[], void *src, int n, unsigned int surfsize) {
SDMACopyDataPacket::SDMACopyDataPacket(unsigned int familyId,
void *const dsts[], void *src, int n, unsigned int surfsize) {
int32_t size = 0, i;
void **dst = reinterpret_cast<void**>(malloc(sizeof(void*) * n));
const int singlePacketSize = sizeof(SDMA_PKT_COPY_LINEAR) +
@@ -88,6 +83,7 @@ SDMACopyDataPacket::SDMACopyDataPacket(void *const dsts[], void *src, int n, uns
if (n > 2)
WARN() << "SDMACopyDataPacket does not support more than 2 dst addresses!" << std::endl;
m_FamilyId = familyId;
memcpy(dst, dsts, sizeof(void*) * n);
packetSize = ((surfsize + TWO_MEG - 1) >> BITS) * singlePacketSize;
@@ -125,18 +121,19 @@ SDMACopyDataPacket::SDMACopyDataPacket(void *const dsts[], void *src, int n, uns
free(dst);
}
SDMACopyDataPacket::SDMACopyDataPacket(void* dst, void *src, unsigned int surfsize) {
new (this)SDMACopyDataPacket(&dst, src, 1, surfsize);
SDMACopyDataPacket::SDMACopyDataPacket(unsigned int familyId, void* dst, void *src, unsigned int surfsize) {
new (this)SDMACopyDataPacket(familyId, &dst, src, 1, surfsize);
}
SDMAFillDataPacket::~SDMAFillDataPacket() {
free(m_PacketData);
}
SDMAFillDataPacket::SDMAFillDataPacket(void *dst, unsigned int data, unsigned int size) {
SDMAFillDataPacket::SDMAFillDataPacket(unsigned int familyId, void *dst, unsigned int data, unsigned int size) {
unsigned int copy_size;
SDMA_PKT_CONSTANT_FILL *pSDMA;
m_FamilyId = familyId;
/* SDMA support maximum 0x3fffe0 byte in one copy. Use 2M copy_size */
m_PacketSize = ((size + TWO_MEG - 1) >> BITS) * sizeof(SDMA_PKT_CONSTANT_FILL);
pSDMA = reinterpret_cast<SDMA_PKT_CONSTANT_FILL *>(calloc(1, m_PacketSize));
@@ -174,7 +171,8 @@ SDMAFillDataPacket::SDMAFillDataPacket(void *dst, unsigned int data, unsigned in
SDMAFencePacket::SDMAFencePacket(void) {
}
SDMAFencePacket::SDMAFencePacket(void* destAddr, unsigned int data) {
SDMAFencePacket::SDMAFencePacket(unsigned int familyId, void* destAddr, unsigned int data) {
m_FamilyId = familyId;
InitPacket(destAddr, data);
}