Create SDMA queue on specific engine
Change-Id: Iece03795510d66b03324174203faa0ac9eb4fb7d
Signed-off-by: Oak Zeng <ozeng@amd.com>
[ROCm/ROCR-Runtime commit: acb80d7583]
This commit is contained in:
@@ -36,7 +36,7 @@ BaseQueue::~BaseQueue(void) {
|
||||
Destroy();
|
||||
}
|
||||
|
||||
HSAKMT_STATUS BaseQueue::Create(unsigned int NodeId, unsigned int size, HSAuint64 *pointers) {
|
||||
HSAKMT_STATUS BaseQueue::Create(unsigned int NodeId, unsigned int size, HSAuint64 *pointers, int sdmaEngineId) {
|
||||
HSAKMT_STATUS status;
|
||||
HSA_QUEUE_TYPE type = GetQueueType();
|
||||
|
||||
@@ -54,6 +54,10 @@ HSAKMT_STATUS BaseQueue::Create(unsigned int NodeId, unsigned int size, HSAuint6
|
||||
m_Resources.Queue_write_ptr_aql = &pointers[1];
|
||||
}
|
||||
|
||||
//TODO: How to get number of SDMA engine?
|
||||
if (type == HSA_QUEUE_SDMA && sdmaEngineId >= 0 && sdmaEngineId < 8)
|
||||
type = (HSA_QUEUE_TYPE) (HSA_QUEUE_SDMA_ENGINE0 + sdmaEngineId);
|
||||
|
||||
status = hsaKmtCreateQueue(NodeId,
|
||||
type,
|
||||
DEFAULT_QUEUE_PERCENTAGE,
|
||||
|
||||
@@ -43,9 +43,10 @@ class BaseQueue {
|
||||
/** Create the queue.
|
||||
* @see hsaKmtCreateQueue
|
||||
* @param pointers is used only for creating AQL queues. Otherwise it is omitted.
|
||||
* @param sdmaEngineId is used only for creating SDMA queues. -1 means let kfd kernel select a sdma engine
|
||||
*/
|
||||
virtual HSAKMT_STATUS Create(unsigned int NodeId, unsigned int size = DEFAULT_QUEUE_SIZE,
|
||||
HSAuint64 *pointers = NULL);
|
||||
HSAuint64 *pointers = NULL, int sdmaEngineId = -1);
|
||||
/** Update the queue.
|
||||
* @see hsaKmtUpdateQueue
|
||||
* @param percent New queue percentage
|
||||
|
||||
Reference in New Issue
Block a user