mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-08 22:12:59 +08:00
Add copy engine support for USM shared migration
Signed-off-by: Jaime Arteaga <jaime.a.arteaga.molina@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
604a680f11
commit
91e9587a07
@@ -104,8 +104,8 @@ struct CommandListCoreFamily : CommandListImp {
|
||||
ze_result_t appendMemoryCopy(void *dstptr, const void *srcptr, size_t size,
|
||||
ze_event_handle_t hSignalEvent, uint32_t numWaitEvents,
|
||||
ze_event_handle_t *phWaitEvents) override;
|
||||
ze_result_t appendPageFaultCopy(NEO::GraphicsAllocation *dstptr,
|
||||
NEO::GraphicsAllocation *srcptr,
|
||||
ze_result_t appendPageFaultCopy(NEO::GraphicsAllocation *dstAllocation,
|
||||
NEO::GraphicsAllocation *srcAllocation,
|
||||
size_t size,
|
||||
bool flushHost) override;
|
||||
ze_result_t appendMemoryCopyRegion(void *dstPtr,
|
||||
|
||||
@@ -958,8 +958,8 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendCopyImageBlit(NEO::Graph
|
||||
}
|
||||
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendPageFaultCopy(NEO::GraphicsAllocation *dstptr,
|
||||
NEO::GraphicsAllocation *srcptr,
|
||||
ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendPageFaultCopy(NEO::GraphicsAllocation *dstAllocation,
|
||||
NEO::GraphicsAllocation *srcAllocation,
|
||||
size_t size, bool flushHost) {
|
||||
|
||||
using GfxFamily = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
|
||||
@@ -972,32 +972,45 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendPageFaultCopy(NEO::Graph
|
||||
isStateless = true;
|
||||
}
|
||||
|
||||
uint64_t dstAddress = dstptr->getGpuAddress();
|
||||
uint64_t srcAddress = srcptr->getGpuAddress();
|
||||
ze_result_t ret = appendMemoryCopyKernelWithGA(reinterpret_cast<void *>(&dstAddress),
|
||||
dstptr, 0,
|
||||
reinterpret_cast<void *>(&srcAddress),
|
||||
srcptr, 0,
|
||||
size - rightSize,
|
||||
middleElSize,
|
||||
Builtin::CopyBufferToBufferMiddle,
|
||||
nullptr,
|
||||
isStateless);
|
||||
if (ret == ZE_RESULT_SUCCESS && rightSize) {
|
||||
appendMemoryCopyKernelWithGA(reinterpret_cast<void *>(&dstAddress),
|
||||
dstptr, size - rightSize,
|
||||
reinterpret_cast<void *>(&srcAddress),
|
||||
srcptr, size - rightSize,
|
||||
rightSize, 1UL,
|
||||
Builtin::CopyBufferToBufferSide,
|
||||
nullptr,
|
||||
isStateless);
|
||||
}
|
||||
uintptr_t dstAddress = static_cast<uintptr_t>(dstAllocation->getGpuAddress());
|
||||
uintptr_t srcAddress = static_cast<uintptr_t>(srcAllocation->getGpuAddress());
|
||||
ze_result_t ret = ZE_RESULT_ERROR_UNKNOWN;
|
||||
if (isCopyOnly()) {
|
||||
ret = appendMemoryCopyBlit(dstAddress, dstAllocation, 0u,
|
||||
srcAddress, srcAllocation, 0u,
|
||||
size - rightSize);
|
||||
|
||||
if (NEO::MemorySynchronizationCommands<GfxFamily>::isDcFlushAllowed()) {
|
||||
if (flushHost) {
|
||||
NEO::PipeControlArgs args(true);
|
||||
NEO::MemorySynchronizationCommands<GfxFamily>::addPipeControl(*commandContainer.getCommandStream(), args);
|
||||
if (ret == ZE_RESULT_SUCCESS && rightSize) {
|
||||
ret = appendMemoryCopyBlit(dstAddress, dstAllocation, size - rightSize,
|
||||
srcAddress, srcAllocation, size - rightSize,
|
||||
rightSize);
|
||||
}
|
||||
} else {
|
||||
ret = appendMemoryCopyKernelWithGA(reinterpret_cast<void *>(&dstAddress),
|
||||
dstAllocation, 0,
|
||||
reinterpret_cast<void *>(&srcAddress),
|
||||
srcAllocation, 0,
|
||||
size - rightSize,
|
||||
middleElSize,
|
||||
Builtin::CopyBufferToBufferMiddle,
|
||||
nullptr,
|
||||
isStateless);
|
||||
if (ret == ZE_RESULT_SUCCESS && rightSize) {
|
||||
ret = appendMemoryCopyKernelWithGA(reinterpret_cast<void *>(&dstAddress),
|
||||
dstAllocation, size - rightSize,
|
||||
reinterpret_cast<void *>(&srcAddress),
|
||||
srcAllocation, size - rightSize,
|
||||
rightSize, 1UL,
|
||||
Builtin::CopyBufferToBufferSide,
|
||||
nullptr,
|
||||
isStateless);
|
||||
}
|
||||
|
||||
if (NEO::MemorySynchronizationCommands<GfxFamily>::isDcFlushAllowed()) {
|
||||
if (flushHost) {
|
||||
NEO::PipeControlArgs args(true);
|
||||
NEO::MemorySynchronizationCommands<GfxFamily>::addPipeControl(*commandContainer.getCommandStream(), args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -65,7 +65,8 @@ struct CommandListCoreFamilyImmediate : public CommandListCoreFamily<gfxCoreFami
|
||||
|
||||
ze_result_t appendEventReset(ze_event_handle_t hEvent) override;
|
||||
|
||||
ze_result_t appendPageFaultCopy(NEO::GraphicsAllocation *dstptr, NEO::GraphicsAllocation *srcptr,
|
||||
ze_result_t appendPageFaultCopy(NEO::GraphicsAllocation *dstAllocation,
|
||||
NEO::GraphicsAllocation *srcAllocation,
|
||||
size_t size, bool flushHost) override;
|
||||
|
||||
ze_result_t appendWaitOnEvents(uint32_t numEvents, ze_event_handle_t *phEvent) override;
|
||||
|
||||
@@ -331,13 +331,15 @@ ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendEventReset(ze_e
|
||||
}
|
||||
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendPageFaultCopy(NEO::GraphicsAllocation *dstptr, NEO::GraphicsAllocation *srcptr, size_t size, bool flushHost) {
|
||||
ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendPageFaultCopy(NEO::GraphicsAllocation *dstAllocation,
|
||||
NEO::GraphicsAllocation *srcAllocation,
|
||||
size_t size, bool flushHost) {
|
||||
|
||||
if (this->isFlushTaskSubmissionEnabled) {
|
||||
checkAvailableSpace();
|
||||
}
|
||||
|
||||
auto ret = CommandListCoreFamily<gfxCoreFamily>::appendPageFaultCopy(dstptr, srcptr, size, flushHost);
|
||||
auto ret = CommandListCoreFamily<gfxCoreFamily>::appendPageFaultCopy(dstAllocation, srcAllocation, size, flushHost);
|
||||
if (ret == ZE_RESULT_SUCCESS) {
|
||||
if (this->isFlushTaskSubmissionEnabled) {
|
||||
executeCommandListImmediateWithFlushTask(false);
|
||||
|
||||
@@ -103,7 +103,11 @@ CommandList *CommandList::createImmediate(uint32_t productFamily, Device *device
|
||||
NEO::CommandStreamReceiver *csr = nullptr;
|
||||
auto deviceImp = static_cast<DeviceImp *>(device);
|
||||
if (internalUsage) {
|
||||
csr = deviceImp->neoDevice->getInternalEngine().commandStreamReceiver;
|
||||
if (NEO::EngineGroupType::Copy == engineGroupType && deviceImp->getActiveDevice()->getInternalCopyEngine()) {
|
||||
csr = deviceImp->getActiveDevice()->getInternalCopyEngine()->commandStreamReceiver;
|
||||
} else {
|
||||
csr = deviceImp->getActiveDevice()->getInternalEngine().commandStreamReceiver;
|
||||
}
|
||||
} else {
|
||||
device->getCsrForOrdinalAndIndex(&csr, desc->ordinal, desc->index);
|
||||
}
|
||||
|
||||
@@ -768,7 +768,7 @@ Device *Device::create(DriverHandle *driverHandle, NEO::Device *neoDevice, uint3
|
||||
ze_result_t resultValue = ZE_RESULT_SUCCESS;
|
||||
device->pageFaultCommandList =
|
||||
CommandList::createImmediate(
|
||||
device->neoDevice->getHardwareInfo().platform.eProductFamily, device, &cmdQueueDesc, true, NEO::EngineGroupType::RenderCompute, resultValue);
|
||||
device->neoDevice->getHardwareInfo().platform.eProductFamily, device, &cmdQueueDesc, true, NEO::EngineGroupType::Copy, resultValue);
|
||||
}
|
||||
|
||||
if (device->getSourceLevelDebugger()) {
|
||||
|
||||
@@ -22,6 +22,7 @@ template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
class MockCommandListHw : public WhiteBox<::L0::CommandListCoreFamily<gfxCoreFamily>> {
|
||||
public:
|
||||
MockCommandListHw() : WhiteBox<::L0::CommandListCoreFamily<gfxCoreFamily>>() {}
|
||||
MockCommandListHw(bool failOnFirst) : WhiteBox<::L0::CommandListCoreFamily<gfxCoreFamily>>(), failOnFirstCopy(failOnFirst) {}
|
||||
|
||||
AlignedAllocationData getAlignedAllocation(L0::Device *device, const void *buffer, uint64_t bufferSize) override {
|
||||
return {0, 0, nullptr, true};
|
||||
@@ -40,6 +41,10 @@ class MockCommandListHw : public WhiteBox<::L0::CommandListCoreFamily<gfxCoreFam
|
||||
appendMemoryCopyKernelWithGACalledTimes++;
|
||||
if (isStateless)
|
||||
appendMemoryCopyKernelWithGAStatelessCalledTimes++;
|
||||
if (failOnFirstCopy &&
|
||||
(appendMemoryCopyKernelWithGACalledTimes == 1 || appendMemoryCopyKernelWithGAStatelessCalledTimes == 1)) {
|
||||
return ZE_RESULT_ERROR_UNKNOWN;
|
||||
}
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
ze_result_t appendMemoryCopyBlit(uintptr_t dstPtr,
|
||||
@@ -49,6 +54,9 @@ class MockCommandListHw : public WhiteBox<::L0::CommandListCoreFamily<gfxCoreFam
|
||||
uint64_t srcOffset,
|
||||
uint64_t size) override {
|
||||
appendMemoryCopyBlitCalledTimes++;
|
||||
if (failOnFirstCopy && appendMemoryCopyBlitCalledTimes == 1) {
|
||||
return ZE_RESULT_ERROR_UNKNOWN;
|
||||
}
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -117,6 +125,7 @@ class MockCommandListHw : public WhiteBox<::L0::CommandListCoreFamily<gfxCoreFam
|
||||
Vec3<size_t> appendImageRegionCopySize = {0, 0, 0};
|
||||
Vec3<size_t> appendImageRegionSrcOrigin = {9, 9, 9};
|
||||
Vec3<size_t> appendImageRegionDstOrigin = {9, 9, 9};
|
||||
bool failOnFirstCopy = false;
|
||||
};
|
||||
|
||||
using Platforms = IsAtLeastProduct<IGFX_SKYLAKE>;
|
||||
@@ -178,6 +187,20 @@ HWTEST2_F(CommandListCreate, givenCommandListWhenPageFaultCopyCalledThenappendPa
|
||||
EXPECT_EQ(cmdList.appendMemoryCopyKernelWithGAStatelessCalledTimes, 0u);
|
||||
}
|
||||
|
||||
HWTEST2_F(CommandListCreate, givenCommandListWhenPageFaultCopyCalledWithCopyEngineThenappendPageFaultCopyWithappendMemoryCopyKernelWithGACalled, Platforms) {
|
||||
MockCommandListHw<gfxCoreFamily> cmdList;
|
||||
size_t size = (sizeof(uint32_t) * 4);
|
||||
cmdList.initialize(device, NEO::EngineGroupType::Copy, 0u);
|
||||
NEO::MockGraphicsAllocation mockAllocationSrc(0, NEO::GraphicsAllocation::AllocationType::INTERNAL_HOST_MEMORY,
|
||||
reinterpret_cast<void *>(0x1234), size, 0, sizeof(uint32_t),
|
||||
MemoryPool::System4KBPages);
|
||||
NEO::MockGraphicsAllocation mockAllocationDst(0, NEO::GraphicsAllocation::AllocationType::INTERNAL_HOST_MEMORY,
|
||||
reinterpret_cast<void *>(0x2345), size, 0, sizeof(uint32_t),
|
||||
MemoryPool::System4KBPages);
|
||||
cmdList.appendPageFaultCopy(&mockAllocationDst, &mockAllocationSrc, size, false);
|
||||
EXPECT_EQ(cmdList.appendMemoryCopyBlitCalledTimes, 1u);
|
||||
}
|
||||
|
||||
HWTEST2_F(CommandListCreate, givenCommandListWhenPageFaultCopyCalledThenappendPageFaultCopyWithappendMemoryCopyKernelWithGACalledForMiddleAndRightSizesAreCalled, Platforms) {
|
||||
MockCommandListHw<gfxCoreFamily> cmdList;
|
||||
size_t size = ((sizeof(uint32_t) * 4) + 1);
|
||||
@@ -193,6 +216,49 @@ HWTEST2_F(CommandListCreate, givenCommandListWhenPageFaultCopyCalledThenappendPa
|
||||
EXPECT_EQ(cmdList.appendMemoryCopyKernelWithGAStatelessCalledTimes, 0u);
|
||||
}
|
||||
|
||||
HWTEST2_F(CommandListCreate, givenCommandListWhenPageFaultCopyCalledAndErrorOnMidCopyThenappendPageFaultCopyWithappendMemoryCopyKernelWithGACalledForMiddleIsCalled, Platforms) {
|
||||
MockCommandListHw<gfxCoreFamily> cmdList(true);
|
||||
size_t size = ((sizeof(uint32_t) * 4) + 1);
|
||||
cmdList.initialize(device, NEO::EngineGroupType::RenderCompute, 0u);
|
||||
NEO::MockGraphicsAllocation mockAllocationSrc(0, NEO::GraphicsAllocation::AllocationType::INTERNAL_HOST_MEMORY,
|
||||
reinterpret_cast<void *>(0x1234), size, 0, sizeof(uint32_t),
|
||||
MemoryPool::System4KBPages);
|
||||
NEO::MockGraphicsAllocation mockAllocationDst(0, NEO::GraphicsAllocation::AllocationType::INTERNAL_HOST_MEMORY,
|
||||
reinterpret_cast<void *>(0x2345), size, 0, sizeof(uint32_t),
|
||||
MemoryPool::System4KBPages);
|
||||
cmdList.appendPageFaultCopy(&mockAllocationDst, &mockAllocationSrc, size, false);
|
||||
EXPECT_EQ(cmdList.appendMemoryCopyKernelWithGACalledTimes, 1u);
|
||||
EXPECT_EQ(cmdList.appendMemoryCopyKernelWithGAStatelessCalledTimes, 0u);
|
||||
}
|
||||
|
||||
HWTEST2_F(CommandListCreate, givenCommandListWhenPageFaultCopyCalledWithCopyEngineThenappendPageFaultCopyWithappendMemoryCopyKernelWithGACalledForMiddleAndRightSizesAreCalled, Platforms) {
|
||||
MockCommandListHw<gfxCoreFamily> cmdList;
|
||||
size_t size = ((sizeof(uint32_t) * 4) + 1);
|
||||
cmdList.initialize(device, NEO::EngineGroupType::Copy, 0u);
|
||||
NEO::MockGraphicsAllocation mockAllocationSrc(0, NEO::GraphicsAllocation::AllocationType::INTERNAL_HOST_MEMORY,
|
||||
reinterpret_cast<void *>(0x1234), size, 0, sizeof(uint32_t),
|
||||
MemoryPool::System4KBPages);
|
||||
NEO::MockGraphicsAllocation mockAllocationDst(0, NEO::GraphicsAllocation::AllocationType::INTERNAL_HOST_MEMORY,
|
||||
reinterpret_cast<void *>(0x2345), size, 0, sizeof(uint32_t),
|
||||
MemoryPool::System4KBPages);
|
||||
cmdList.appendPageFaultCopy(&mockAllocationDst, &mockAllocationSrc, size, false);
|
||||
EXPECT_EQ(cmdList.appendMemoryCopyBlitCalledTimes, 2u);
|
||||
}
|
||||
|
||||
HWTEST2_F(CommandListCreate, givenCommandListWhenPageFaultCopyCalledWithCopyEngineAndErrorOnMidOperationThenappendPageFaultCopyWithappendMemoryCopyKernelWithGACalledForMiddleIsCalled, Platforms) {
|
||||
MockCommandListHw<gfxCoreFamily> cmdList(true);
|
||||
size_t size = ((sizeof(uint32_t) * 4) + 1);
|
||||
cmdList.initialize(device, NEO::EngineGroupType::Copy, 0u);
|
||||
NEO::MockGraphicsAllocation mockAllocationSrc(0, NEO::GraphicsAllocation::AllocationType::INTERNAL_HOST_MEMORY,
|
||||
reinterpret_cast<void *>(0x1234), size, 0, sizeof(uint32_t),
|
||||
MemoryPool::System4KBPages);
|
||||
NEO::MockGraphicsAllocation mockAllocationDst(0, NEO::GraphicsAllocation::AllocationType::INTERNAL_HOST_MEMORY,
|
||||
reinterpret_cast<void *>(0x2345), size, 0, sizeof(uint32_t),
|
||||
MemoryPool::System4KBPages);
|
||||
cmdList.appendPageFaultCopy(&mockAllocationDst, &mockAllocationSrc, size, false);
|
||||
EXPECT_EQ(cmdList.appendMemoryCopyBlitCalledTimes, 1u);
|
||||
}
|
||||
|
||||
HWTEST2_F(CommandListCreate, givenCommandListWhen4GBytePageFaultCopyCalledThenPageFaultCopyWithappendMemoryCopyKernelWithGAStatelessCalled, Platforms) {
|
||||
MockCommandListHw<gfxCoreFamily> cmdList;
|
||||
size_t size = 0x100000000;
|
||||
|
||||
@@ -838,7 +838,11 @@ HWTEST2_F(CommandListCreate, givenImmediateCommandListWhenMemoryCopyRegionWithSi
|
||||
ASSERT_NE(nullptr, commandList0);
|
||||
|
||||
CommandQueueImp *cmdQueue = reinterpret_cast<CommandQueueImp *>(commandList0->cmdQImmediate);
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
if (neoDevice->getInternalCopyEngine()) {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalCopyEngine()->commandStreamReceiver);
|
||||
} else {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
}
|
||||
|
||||
void *srcBuffer = reinterpret_cast<void *>(0x1234);
|
||||
void *dstBuffer = reinterpret_cast<void *>(0x2345);
|
||||
@@ -883,7 +887,11 @@ HWTEST2_F(CommandListCreate, givenImmediateCommandListWhenCopyRegionFromImageToI
|
||||
ASSERT_NE(nullptr, commandList0);
|
||||
|
||||
CommandQueueImp *cmdQueue = reinterpret_cast<CommandQueueImp *>(commandList0->cmdQImmediate);
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
if (neoDevice->getInternalCopyEngine()) {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalCopyEngine()->commandStreamReceiver);
|
||||
} else {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
}
|
||||
|
||||
ze_image_desc_t desc = {};
|
||||
desc.stype = ZE_STRUCTURE_TYPE_IMAGE_DESC;
|
||||
@@ -923,7 +931,11 @@ HWTEST2_F(CommandListCreate, givenImmediateCommandListWhenCopyRegionFromImageToI
|
||||
ASSERT_NE(nullptr, commandList0);
|
||||
|
||||
CommandQueueImp *cmdQueue = reinterpret_cast<CommandQueueImp *>(commandList0->cmdQImmediate);
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
if (neoDevice->getInternalCopyEngine()) {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalCopyEngine()->commandStreamReceiver);
|
||||
} else {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
}
|
||||
|
||||
ze_image_desc_t desc = {};
|
||||
desc.stype = ZE_STRUCTURE_TYPE_IMAGE_DESC;
|
||||
@@ -964,7 +976,11 @@ HWTEST2_F(CommandListCreate, givenImmediateCommandListWhenCopyFromImageToImageUs
|
||||
ASSERT_NE(nullptr, commandList0);
|
||||
|
||||
CommandQueueImp *cmdQueue = reinterpret_cast<CommandQueueImp *>(commandList0->cmdQImmediate);
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
if (neoDevice->getInternalCopyEngine()) {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalCopyEngine()->commandStreamReceiver);
|
||||
} else {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
}
|
||||
|
||||
ze_image_desc_t desc = {};
|
||||
desc.stype = ZE_STRUCTURE_TYPE_IMAGE_DESC;
|
||||
@@ -1003,7 +1019,11 @@ HWTEST2_F(CommandListCreate, givenImmediateCommandListWhenMemoryCopyRegionWithSi
|
||||
ASSERT_NE(nullptr, commandList0);
|
||||
|
||||
CommandQueueImp *cmdQueue = reinterpret_cast<CommandQueueImp *>(commandList0->cmdQImmediate);
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
if (neoDevice->getInternalCopyEngine()) {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalCopyEngine()->commandStreamReceiver);
|
||||
} else {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
}
|
||||
|
||||
void *srcBuffer = reinterpret_cast<void *>(0x1234);
|
||||
void *dstBuffer = reinterpret_cast<void *>(0x2345);
|
||||
|
||||
@@ -573,7 +573,11 @@ HWTEST2_F(HostPointerManagerCommandListTest, givenImmediateCommandListWhenMemory
|
||||
ASSERT_NE(nullptr, commandList0);
|
||||
|
||||
CommandQueueImp *cmdQueue = reinterpret_cast<CommandQueueImp *>(commandList0->cmdQImmediate);
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
if (neoDevice->getInternalCopyEngine()) {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalCopyEngine()->commandStreamReceiver);
|
||||
} else {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
}
|
||||
|
||||
ret = hostDriverHandle->importExternalPointer(heapPointer, MemoryConstants::pageSize);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, ret);
|
||||
@@ -619,7 +623,11 @@ HWTEST2_F(HostPointerManagerCommandListTest, givenImmediateCommandListWhenMemory
|
||||
ASSERT_NE(nullptr, commandList0);
|
||||
|
||||
CommandQueueImp *cmdQueue = reinterpret_cast<CommandQueueImp *>(commandList0->cmdQImmediate);
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
if (neoDevice->getInternalCopyEngine()) {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalCopyEngine()->commandStreamReceiver);
|
||||
} else {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
}
|
||||
|
||||
ret = hostDriverHandle->importExternalPointer(heapPointer, MemoryConstants::pageSize);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, ret);
|
||||
|
||||
@@ -745,7 +745,11 @@ HWTEST2_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForI
|
||||
ASSERT_NE(nullptr, commandList0);
|
||||
|
||||
CommandQueueImp *cmdQueue = reinterpret_cast<CommandQueueImp *>(commandList0->cmdQImmediate);
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
if (neoDevice->getInternalCopyEngine()) {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalCopyEngine()->commandStreamReceiver);
|
||||
} else {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
}
|
||||
|
||||
ze_image_desc_t desc = {};
|
||||
desc.stype = ZE_STRUCTURE_TYPE_IMAGE_DESC;
|
||||
@@ -793,7 +797,11 @@ HWTEST2_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledFor
|
||||
ASSERT_NE(nullptr, commandList0);
|
||||
|
||||
CommandQueueImp *cmdQueue = reinterpret_cast<CommandQueueImp *>(commandList0->cmdQImmediate);
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
if (neoDevice->getInternalCopyEngine()) {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalCopyEngine()->commandStreamReceiver);
|
||||
} else {
|
||||
EXPECT_EQ(cmdQueue->getCsr(), neoDevice->getInternalEngine().commandStreamReceiver);
|
||||
}
|
||||
|
||||
ze_image_desc_t desc = {};
|
||||
desc.stype = ZE_STRUCTURE_TYPE_IMAGE_DESC;
|
||||
|
||||
@@ -565,6 +565,16 @@ EngineControl &Device::getInternalEngine() {
|
||||
return this->getNearestGenericSubDevice(0)->getEngine(engineType, EngineUsage::Internal);
|
||||
}
|
||||
|
||||
EngineControl *Device::getInternalCopyEngine() {
|
||||
for (auto &engine : engines) {
|
||||
if (engine.osContext->getEngineType() == aub_stream::ENGINE_BCS &&
|
||||
engine.osContext->isInternalEngine()) {
|
||||
return &engine;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void Device::initializeRayTracing() {
|
||||
if (rtMemoryBackedBuffer == nullptr) {
|
||||
auto size = RayTracingHelper::getTotalMemoryBackedFifoSize(*this);
|
||||
|
||||
@@ -66,6 +66,7 @@ class Device : public ReferenceTrackedObject<Device> {
|
||||
EngineControl &getEngine(uint32_t index);
|
||||
EngineControl &getDefaultEngine();
|
||||
EngineControl &getInternalEngine();
|
||||
EngineControl *getInternalCopyEngine();
|
||||
SelectorCopyEngine &getSelectorCopyEngine();
|
||||
MemoryManager *getMemoryManager() const;
|
||||
GmmHelper *getGmmHelper() const;
|
||||
|
||||
Reference in New Issue
Block a user