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:
Oak Zeng
2018-11-12 16:06:57 -06:00
parent 6c760dcb74
commit 6087fd7bca
2 changed files with 7 additions and 2 deletions
@@ -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