fix: adjust tests to enabled global allocator 5/n

Related-To: NEO-7063
Signed-off-by: Fabian Zwoliński <fabian.zwolinski@intel.com>
This commit is contained in:
Fabian Zwoliński
2024-07-19 10:26:58 +00:00
committed by Compute-Runtime-Automation
parent 6a11e8a077
commit 9128635311
8 changed files with 98 additions and 14 deletions

View File

@@ -2062,6 +2062,7 @@ HWTEST2_F(ImmediateFlushTaskCsrSharedHeapCmdListTest,
IsAtLeastXeHpCore) {
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
auto bindlessHeapsHelper = neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[neoDevice->getRootDeviceIndex()]->bindlessHeapsHelper.get();
auto &csrImmediate = neoDevice->getUltCommandStreamReceiver<FamilyType>();
csrImmediate.storeMakeResidentAllocations = true;
auto &csrStream = csrImmediate.commandStream;
@@ -2077,9 +2078,14 @@ HWTEST2_F(ImmediateFlushTaskCsrSharedHeapCmdListTest,
auto ssBaseAddress = ssHeap->getHeapGpuBase();
uint64_t dsBaseAddress = 0;
if (dshRequired) {
auto dsHeap = commandListImmediate->getCmdContainer().getDynamicStateHeapReserve().indirectHeapReservation;
dsBaseAddress = dsHeap->getHeapGpuBase();
if (bindlessHeapsHelper) {
dsBaseAddress = bindlessHeapsHelper->getGlobalHeapsBase();
} else {
auto dsHeap = commandListImmediate->getCmdContainer().getDynamicStateHeapReserve().indirectHeapReservation;
dsBaseAddress = dsHeap->getHeapGpuBase();
}
}
auto ioHeap = commandListImmediate->getCmdContainer().getIndirectHeap(NEO::HeapType::indirectObject);
@@ -2132,6 +2138,7 @@ HWTEST2_F(ImmediateFlushTaskCsrSharedHeapCmdListTest,
GTEST_SKIP();
}
auto bindlessHeapsHelper = neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[neoDevice->getRootDeviceIndex()]->bindlessHeapsHelper.get();
auto &csrImmediate = neoDevice->getUltCommandStreamReceiver<FamilyType>();
auto &csrStream = csrImmediate.commandStream;
@@ -2147,8 +2154,12 @@ HWTEST2_F(ImmediateFlushTaskCsrSharedHeapCmdListTest,
uint64_t dsBaseAddress = 0;
if (dshRequired) {
auto dsHeap = commandListImmediate->getCmdContainer().getDynamicStateHeapReserve().indirectHeapReservation;
dsBaseAddress = dsHeap->getHeapGpuBase();
if (bindlessHeapsHelper) {
dsBaseAddress = bindlessHeapsHelper->getGlobalHeapsBase();
} else {
auto dsHeap = commandListImmediate->getCmdContainer().getDynamicStateHeapReserve().indirectHeapReservation;
dsBaseAddress = dsHeap->getHeapGpuBase();
}
}
GenCmdList cmdList;
@@ -2285,6 +2296,7 @@ HWTEST2_F(ImmediateFlushTaskCsrSharedHeapCmdListTest,
IsAtLeastXeHpCore) {
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
auto bindlessHeapsHelper = neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[neoDevice->getRootDeviceIndex()]->bindlessHeapsHelper.get();
auto &csrImmediate = neoDevice->getUltCommandStreamReceiver<FamilyType>();
auto &csrStream = csrImmediate.commandStream;
@@ -2303,7 +2315,11 @@ HWTEST2_F(ImmediateFlushTaskCsrSharedHeapCmdListTest,
uint64_t dsShareBaseAddress = 0;
if (this->dshRequired) {
EXPECT_NE(nullptr, dsSharedHeap->getGraphicsAllocation());
dsShareBaseAddress = dsSharedHeap->getHeapGpuBase();
if (bindlessHeapsHelper) {
dsShareBaseAddress = bindlessHeapsHelper->getGlobalHeapsBase();
} else {
dsShareBaseAddress = dsSharedHeap->getHeapGpuBase();
}
} else {
EXPECT_EQ(nullptr, dsSharedHeap->getGraphicsAllocation());
}

View File

@@ -215,6 +215,8 @@ HWTEST2_P(L0DebuggerParameterizedTests, givenDebuggerWhenAppendingKernelToComman
DebugManagerStateRestore dbgRestorer;
debugManager.flags.SelectCmdListHeapAddressModel.set(0);
auto bindlessHeapsHelper = device->getNEODevice()->getExecutionEnvironment()->rootDeviceEnvironments[device->getNEODevice()->getRootDeviceIndex()]->bindlessHeapsHelper.get();
Mock<::L0::KernelImp> kernel;
ze_result_t returnValue;
std::unique_ptr<L0::CommandList> commandList(L0::CommandList::create(productFamily, device, NEO::EngineGroupType::renderCompute, 0u, returnValue, false));
@@ -225,7 +227,12 @@ HWTEST2_P(L0DebuggerParameterizedTests, givenDebuggerWhenAppendingKernelToComman
commandList->close();
auto *ssh = commandList->getCmdContainer().getIndirectHeap(NEO::HeapType::surfaceState);
NEO::IndirectHeap *ssh;
if (bindlessHeapsHelper) {
ssh = neoDevice->getBindlessHeapsHelper()->getHeap(NEO::BindlessHeapsHelper::specialSsh);
} else {
ssh = commandList->getCmdContainer().getIndirectHeap(NEO::HeapType::surfaceState);
}
auto debugSurfaceState = reinterpret_cast<RENDER_SURFACE_STATE *>(ssh->getCpuBase());
auto debugSurface = static_cast<L0::DeviceImp *>(device)->getDebugSurface();
@@ -250,6 +257,8 @@ HWTEST2_P(L0DebuggerParameterizedTests, givenDebuggerWhenAppendingKernelToComman
DebugManagerStateRestore dbgRestorer;
debugManager.flags.SelectCmdListHeapAddressModel.set(0);
auto bindlessHeapsHelper = device->getNEODevice()->getExecutionEnvironment()->rootDeviceEnvironments[device->getNEODevice()->getRootDeviceIndex()]->bindlessHeapsHelper.get();
Mock<::L0::KernelImp> kernel;
ze_result_t returnValue;
std::unique_ptr<L0::CommandList> commandList(L0::CommandList::create(productFamily, device, NEO::EngineGroupType::renderCompute, 0u, returnValue, false));
@@ -260,7 +269,13 @@ HWTEST2_P(L0DebuggerParameterizedTests, givenDebuggerWhenAppendingKernelToComman
commandList->close();
auto *ssh = commandList->getCmdContainer().getIndirectHeap(NEO::HeapType::surfaceState);
NEO::IndirectHeap *ssh;
if (bindlessHeapsHelper) {
ssh = neoDevice->getBindlessHeapsHelper()->getHeap(NEO::BindlessHeapsHelper::specialSsh);
} else {
ssh = commandList->getCmdContainer().getIndirectHeap(NEO::HeapType::surfaceState);
}
auto debugSurfaceState = reinterpret_cast<RENDER_SURFACE_STATE *>(ssh->getCpuBase());
const auto mocsNoCache = device->getNEODevice()->getGmmHelper()->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED);
@@ -613,6 +628,8 @@ HWTEST2_F(L0DebuggerTest, givenDebuggerEnabledAndL1CachePolicyWBWhenAppendingThe
DebugManagerStateRestore restore;
debugManager.flags.SelectCmdListHeapAddressModel.set(0);
auto bindlessHeapsHelper = device->getNEODevice()->getExecutionEnvironment()->rootDeviceEnvironments[device->getNEODevice()->getRootDeviceIndex()]->bindlessHeapsHelper.get();
NEO::RAIIProductHelperFactory<MockProductHelperHw<productFamily>> raii(*device->getNEODevice()->getExecutionEnvironment()->rootDeviceEnvironments[0]);
raii.mockProductHelper->returnedL1CachePolicy = RENDER_SURFACE_STATE::L1_CACHE_POLICY_WB;
raii.mockProductHelper->returnedL1CachePolicyIfDebugger = RENDER_SURFACE_STATE::L1_CACHE_POLICY_WBP;
@@ -626,7 +643,13 @@ HWTEST2_F(L0DebuggerTest, givenDebuggerEnabledAndL1CachePolicyWBWhenAppendingThe
ASSERT_EQ(ZE_RESULT_SUCCESS, returnValue);
commandList->close();
auto *ssh = commandList->getCmdContainer().getIndirectHeap(NEO::HeapType::surfaceState);
NEO::IndirectHeap *ssh;
if (bindlessHeapsHelper) {
ssh = neoDevice->getBindlessHeapsHelper()->getHeap(NEO::BindlessHeapsHelper::specialSsh);
} else {
ssh = commandList->getCmdContainer().getIndirectHeap(NEO::HeapType::surfaceState);
}
ASSERT_NE(ssh, nullptr);
auto debugSurfaceState = reinterpret_cast<RENDER_SURFACE_STATE *>(ssh->getCpuBase());
ASSERT_NE(debugSurfaceState, nullptr);
@@ -664,6 +687,8 @@ HWTEST2_F(L0DebuggerTest, givenFlushTaskSubmissionAndSharedHeapsEnabledWhenAppen
NEO::debugManager.flags.UseImmediateFlushTask.set(0);
NEO::debugManager.flags.SelectCmdListHeapAddressModel.set(0);
auto bindlessHeapsHelper = device->getNEODevice()->getExecutionEnvironment()->rootDeviceEnvironments[device->getNEODevice()->getRootDeviceIndex()]->bindlessHeapsHelper.get();
ze_command_queue_desc_t queueDesc = {};
ze_result_t returnValue = ZE_RESULT_SUCCESS;
auto commandList = CommandList::whiteboxCast(CommandList::createImmediate(productFamily, device, &queueDesc, false, NEO::EngineGroupType::renderCompute, returnValue));
@@ -688,7 +713,13 @@ HWTEST2_F(L0DebuggerTest, givenFlushTaskSubmissionAndSharedHeapsEnabledWhenAppen
returnValue = commandList->appendLaunchKernel(kernel.toHandle(), groupCount, nullptr, 0, nullptr, launchParams, false);
EXPECT_EQ(ZE_RESULT_SUCCESS, returnValue);
auto csrHeap = &commandList->getCsr(false)->getIndirectHeap(NEO::HeapType::surfaceState, 0);
NEO::IndirectHeap *csrHeap;
if (bindlessHeapsHelper) {
csrHeap = neoDevice->getBindlessHeapsHelper()->getHeap(NEO::BindlessHeapsHelper::specialSsh);
} else {
csrHeap = &commandList->getCsr(false)->getIndirectHeap(NEO::HeapType::surfaceState, 0);
}
ASSERT_NE(nullptr, csrHeap);
auto debugSurfaceState = reinterpret_cast<RENDER_SURFACE_STATE *>(csrHeap->getCpuBase());
@@ -716,6 +747,8 @@ HWTEST2_F(L0DebuggerTest, givenImmediateFlushTaskWhenAppendingKernelUsingNewHeap
NEO::debugManager.flags.UseImmediateFlushTask.set(1);
NEO::debugManager.flags.SelectCmdListHeapAddressModel.set(static_cast<int32_t>(NEO::HeapAddressModel::privateHeaps));
auto bindlessHeapsHelper = device->getNEODevice()->getExecutionEnvironment()->rootDeviceEnvironments[device->getNEODevice()->getRootDeviceIndex()]->bindlessHeapsHelper.get();
ze_command_queue_desc_t queueDesc = {};
ze_result_t returnValue = ZE_RESULT_SUCCESS;
auto commandList = CommandList::whiteboxCast(CommandList::createImmediate(productFamily, device, &queueDesc, false, NEO::EngineGroupType::compute, returnValue));
@@ -737,7 +770,13 @@ HWTEST2_F(L0DebuggerTest, givenImmediateFlushTaskWhenAppendingKernelUsingNewHeap
returnValue = commandList->appendLaunchKernel(kernel.toHandle(), groupCount, nullptr, 0, nullptr, launchParams, false);
EXPECT_EQ(ZE_RESULT_SUCCESS, returnValue);
auto csrHeap = &commandList->getCsr(false)->getIndirectHeap(NEO::HeapType::surfaceState, 0);
NEO::IndirectHeap *csrHeap;
if (bindlessHeapsHelper) {
csrHeap = neoDevice->getBindlessHeapsHelper()->getHeap(NEO::BindlessHeapsHelper::specialSsh);
} else {
csrHeap = &commandList->getCsr(false)->getIndirectHeap(NEO::HeapType::surfaceState, 0);
}
ASSERT_NE(nullptr, csrHeap);
auto debugSurfaceState = reinterpret_cast<RENDER_SURFACE_STATE *>(csrHeap->getCpuBase());

View File

@@ -75,7 +75,9 @@ TEST_P(PciBusOrderingTest, givenMultipleDevicesAndZePcieIdOrderingSetThenDevices
debugManager.flags.CreateMultipleSubDevices.set(numSubDevices);
debugManager.flags.EnableChipsetUniqueUUID.set(0);
auto executionEnvironment = new NEO::ExecutionEnvironment;
auto executionEnvironment = NEO::MockDevice::prepareExecutionEnvironment(defaultHwInfo.get(), 0u);
auto memoryManager = new MockMemoryManagerOsAgnosticContext(*executionEnvironment);
executionEnvironment->memoryManager.reset(memoryManager);
auto neoDevices = NEO::DeviceFactory::createDevices(*executionEnvironment);
EXPECT_EQ(numRootDevices, neoDevices.size());
EXPECT_EQ(numRootDevices, executionEnvironment->rootDeviceEnvironments.size());
@@ -88,7 +90,6 @@ TEST_P(PciBusOrderingTest, givenMultipleDevicesAndZePcieIdOrderingSetThenDevices
executionEnvironment->rootDeviceEnvironments[i]->getMutableHardwareInfo()->capabilityTable.isIntegratedDevice = false;
}
}
executionEnvironment->memoryManager.reset(new MockMemoryManagerOsAgnosticContext(*executionEnvironment));
executionEnvironment->sortNeoDevices();
auto deviceFactory = std::make_unique<UltDeviceFactory>(numRootDevices, numSubDevices, *executionEnvironment);

View File

@@ -128,6 +128,10 @@ TEST_F(DriverVersionTest, givenCallToGetExtensionPropertiesThenSupportedExtensio
additionalExtensions.emplace_back(ZEX_INTEL_QUEUE_COPY_OPERATIONS_OFFLOAD_HINT_EXP_NAME, ZEX_INTEL_QUEUE_COPY_OPERATIONS_OFFLOAD_HINT_EXP_VERSION_CURRENT);
}
if (device->getNEODevice()->getRootDeviceEnvironment().getBindlessHeapsHelper()) {
additionalExtensions.emplace_back(ZE_BINDLESS_IMAGE_EXP_NAME, ZE_BINDLESS_IMAGE_EXP_VERSION_CURRENT);
}
uint32_t count = 0;
ze_result_t res = driverHandle->getExtensionProperties(&count, nullptr);
EXPECT_EQ(count, static_cast<uint32_t>(driverHandle->extensionsSupported.size() + additionalExtensions.size()));

View File

@@ -1633,6 +1633,8 @@ HWTEST2_F(ImageCreate, GivenNonBindlessImageWhenGettingDeviceOffsetThenErrorIsRe
}
HWTEST2_F(ImageCreate, GivenNoBindlessHelperAndBindlessImageFlagWhenCreatingImageThenErrorIsReturned, ImageSupport) {
device->getNEODevice()->getExecutionEnvironment()->rootDeviceEnvironments[device->getNEODevice()->getRootDeviceIndex()]->bindlessHeapsHelper.reset();
const size_t width = 32;
const size_t height = 32;
const size_t depth = 1;

View File

@@ -2339,6 +2339,8 @@ HWTEST2_F(KernelImpPatchBindlessTest, GivenMisalignedBufferAddressWhenSettingSur
}
HWTEST2_F(KernelImpPatchBindlessTest, GivenBindlessImplicitArgAndNoBindlessHeapsHelperWhenGetSurfaceStateHeapDataSizeThenReturnSurfaceStateHeapDataSize, MatchAny) {
neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[neoDevice->getRootDeviceIndex()]->bindlessHeapsHelper.reset();
ze_kernel_desc_t desc = {};
desc.pKernelName = kernelName.c_str();
@@ -2830,6 +2832,8 @@ HWTEST2_F(SetKernelArg, givenImageAndBindlessKernelWhenSetArgImageThenCopySurfac
}
HWTEST2_F(SetKernelArg, givenNoGlobalAllocatorAndBindlessKernelWhenSetArgImageThenBindlessOffsetIsNotSetAndSshIsUsed, ImageSupport) {
neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[neoDevice->getRootDeviceIndex()]->bindlessHeapsHelper.reset();
createKernel();
auto &imageArg = const_cast<NEO::ArgDescImage &>(kernel->kernelImmData->getDescriptor().payloadMappings.explicitArgs[3].template as<NEO::ArgDescImage>());
@@ -3064,6 +3068,8 @@ HWTEST2_F(SetKernelArg, givenNoGlobalBindlessHelperAndImageViewWhenAllocatingBin
}
HWTEST2_F(SetKernelArg, givenImageAndBindlessKernelWhenSetArgRedescribedImageCalledThenCopySurfaceStateToSSHCalledWithCorrectArgs, ImageSupport) {
auto bindlessHeapsHelper = neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[neoDevice->getRootDeviceIndex()]->bindlessHeapsHelper.get();
Mock<Module> mockModule(this->device, nullptr);
Mock<KernelImp> mockKernel;
mockKernel.module = &mockModule;
@@ -3098,10 +3104,21 @@ HWTEST2_F(SetKernelArg, givenImageAndBindlessKernelWhenSetArgRedescribedImageCal
ret = mockKernel.setArgRedescribedImage(0, handle);
EXPECT_EQ(ZE_RESULT_SUCCESS, ret);
auto expectedSsInHeap = ptrOffset(mockKernel.surfaceStateHeapData.get(), mockKernel.kernelImmData->getDescriptor().getBindlessOffsetToSurfaceState().find(0x0)->second * surfaceStateSize);
void *expectedSsInHeap = nullptr;
if (bindlessHeapsHelper) {
expectedSsInHeap = ptrOffset(imageHW->getBindlessSlot()->ssPtr, surfaceStateSize * NEO::BindlessImageSlot::redescribedImage);
} else {
expectedSsInHeap = ptrOffset(mockKernel.surfaceStateHeapData.get(), mockKernel.kernelImmData->getDescriptor().getBindlessOffsetToSurfaceState().find(0x0)->second * surfaceStateSize);
}
EXPECT_EQ(imageHW->passedRedescribedSurfaceStateHeap, expectedSsInHeap);
EXPECT_EQ(imageHW->passedRedescribedSurfaceStateOffset, 0u);
EXPECT_TRUE(mockKernel.usingSurfaceStateHeap[0]);
if (bindlessHeapsHelper) {
EXPECT_TRUE(mockKernel.isBindlessOffsetSet[0]);
} else {
EXPECT_TRUE(mockKernel.usingSurfaceStateHeap[0]);
}
}
HWTEST2_F(SetKernelArg, givenBindlessKernelAndNoAvailableSpaceOnSshWhenSetArgRedescribedImageCalledThenOutOfMemoryErrorReturned, ImageSupport) {

View File

@@ -516,6 +516,7 @@ HWTEST2_F(KernelImmutableDataBindlessTest, givenGlobalConstBufferAndBindlessExpl
HardwareInfo hwInfo = *defaultHwInfo;
auto device = std::unique_ptr<NEO::MockDevice>(NEO::MockDevice::createWithNewExecutionEnvironment<NEO::MockDevice>(&hwInfo, 0));
device->getExecutionEnvironment()->rootDeviceEnvironments[device->getRootDeviceIndex()]->bindlessHeapsHelper.reset();
static EncodeSurfaceStateArgs savedSurfaceStateArgs{};
static size_t encodeBufferSurfaceStateCalled{};
@@ -584,6 +585,7 @@ HWTEST2_F(KernelImmutableDataBindlessTest, givenGlobalVarBufferAndBindlessExplic
HardwareInfo hwInfo = *defaultHwInfo;
auto device = std::unique_ptr<NEO::MockDevice>(NEO::MockDevice::createWithNewExecutionEnvironment<NEO::MockDevice>(&hwInfo, 0));
device->getExecutionEnvironment()->rootDeviceEnvironments[device->getRootDeviceIndex()]->bindlessHeapsHelper.reset();
static EncodeSurfaceStateArgs savedSurfaceStateArgs{};
static size_t encodeBufferSurfaceStateCalled{};

View File

@@ -14,6 +14,7 @@
#include "shared/source/device_binary_format/zebin/debug_zebin.h"
#include "shared/source/gmm_helper/gmm_helper.h"
#include "shared/source/helpers/addressing_mode_helper.h"
#include "shared/source/helpers/bindless_heaps_helper.h"
#include "shared/source/helpers/blit_helper.h"
#include "shared/source/helpers/compiler_product_helper.h"
#include "shared/source/helpers/gfx_core_helper.h"
@@ -346,6 +347,8 @@ HWTEST2_F(ModuleTest, givenNonPatchedTokenThenSurfaceBaseAddressIsCorrectlySet,
}
HWTEST_F(ModuleTest, givenStatefulBufferWhenOffsetIsPatchedThenAllocBaseAddressIsSet) {
device->getNEODevice()->getExecutionEnvironment()->rootDeviceEnvironments[device->getNEODevice()->getRootDeviceIndex()]->bindlessHeapsHelper.reset();
using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE;
ze_kernel_handle_t kernelHandle;