mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-07 21:27:04 +08:00
fix: use correct gpu address when bindless heaps helper is enabled
Related-To: NEO-7063 Signed-off-by: Fabian Zwoliński <fabian.zwolinski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
619b47e3d5
commit
674c4a15ad
@@ -43,7 +43,8 @@ struct DispatchFlagsHelper {
|
||||
false, // hasRelaxedOrderingDependencies
|
||||
false, // stateCacheInvalidation
|
||||
false, // isStallingCommandsOnNextFlushRequired
|
||||
false // isDcFlushRequiredOnStallingCommandsOnNextFlush
|
||||
false, // isDcFlushRequiredOnStallingCommandsOnNextFlush
|
||||
true // disableGlobalSSH
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -95,6 +95,6 @@ struct ComputeModeRequirements : public ::testing::Test {
|
||||
|
||||
CommandStreamReceiver *csr = nullptr;
|
||||
std::unique_ptr<MockDevice> device;
|
||||
DispatchFlags flags{nullptr, {}, nullptr, QueueThrottle::MEDIUM, PreemptionMode::Disabled, GrfConfig::defaultGrfNumber, L3CachingSettings::l3CacheOn, ThreadArbitrationPolicy::NotPresent, AdditionalKernelExecInfo::notApplicable, KernelExecutionType::notApplicable, MemoryCompressionState::notApplicable, QueueSliceCount::defaultSliceCount, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false};
|
||||
DispatchFlags flags{nullptr, {}, nullptr, QueueThrottle::MEDIUM, PreemptionMode::Disabled, GrfConfig::defaultGrfNumber, L3CachingSettings::l3CacheOn, ThreadArbitrationPolicy::NotPresent, AdditionalKernelExecInfo::notApplicable, KernelExecutionType::notApplicable, MemoryCompressionState::notApplicable, QueueSliceCount::defaultSliceCount, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true};
|
||||
GraphicsAllocation *alloc = nullptr;
|
||||
};
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
#include "shared/source/command_container/encode_surface_state.h"
|
||||
#include "shared/source/gmm_helper/gmm_helper.h"
|
||||
#include "shared/source/helpers/state_base_address_helper.h"
|
||||
#include "shared/source/memory_manager/allocation_properties.h"
|
||||
#include "shared/test/common/helpers/debug_manager_state_restore.h"
|
||||
#include "shared/test/common/mocks/mock_device.h"
|
||||
@@ -746,3 +747,49 @@ HWTEST2_F(SbaTest, givenStateBaseAddressPropertiesWhenSettingBindlessSurfaceStat
|
||||
EXPECT_EQ(surfaceHeapBase, sbaCmd.getBindlessSurfaceStateBaseAddress());
|
||||
EXPECT_TRUE(sbaCmd.getBindlessSurfaceStateBaseAddressModifyEnable());
|
||||
}
|
||||
|
||||
TEST(SbaHelperTest, givenIndirectHeapWhenGetStateBaseAddressAndGetStateSizeThenReturnValuesBasedOnGlobalHeapsAndBindlessKernelPresence) {
|
||||
auto cpuBaseAddress = reinterpret_cast<void *>(0x3000);
|
||||
MockGraphicsAllocation graphicsAllocation(cpuBaseAddress, 4096u);
|
||||
graphicsAllocation.setGpuBaseAddress(4096u);
|
||||
|
||||
IndirectHeap heap(&graphicsAllocation, false);
|
||||
|
||||
auto gpuAddress = heap.getGraphicsAllocation()->getGpuAddress();
|
||||
auto gpuBaseAddress = heap.getGraphicsAllocation()->getGpuBaseAddress();
|
||||
auto heapSize = (static_cast<uint32_t>(heap.getMaxAvailableSpace()) + MemoryConstants::pageMask) / MemoryConstants::pageSize;
|
||||
|
||||
bool useGlobalHeaps = false;
|
||||
|
||||
{
|
||||
useGlobalHeaps = false;
|
||||
EXPECT_EQ(gpuAddress, NEO::getStateBaseAddress(heap, useGlobalHeaps));
|
||||
EXPECT_EQ(heapSize, NEO::getStateSize(heap, useGlobalHeaps));
|
||||
}
|
||||
{
|
||||
useGlobalHeaps = true;
|
||||
EXPECT_EQ(gpuBaseAddress, NEO::getStateBaseAddress(heap, useGlobalHeaps));
|
||||
EXPECT_EQ(MemoryConstants::sizeOf4GBinPageEntities, NEO::getStateSize(heap, useGlobalHeaps));
|
||||
}
|
||||
|
||||
bool isBindlessKernel = false;
|
||||
|
||||
{
|
||||
useGlobalHeaps = false;
|
||||
isBindlessKernel = false;
|
||||
EXPECT_EQ(gpuAddress, NEO::getStateBaseAddress(heap, useGlobalHeaps, isBindlessKernel));
|
||||
EXPECT_EQ(heapSize, NEO::getStateSize(heap, useGlobalHeaps, isBindlessKernel));
|
||||
}
|
||||
{
|
||||
useGlobalHeaps = true;
|
||||
isBindlessKernel = false;
|
||||
EXPECT_EQ(gpuAddress, NEO::getStateBaseAddress(heap, useGlobalHeaps, isBindlessKernel));
|
||||
EXPECT_EQ(heapSize, NEO::getStateSize(heap, useGlobalHeaps, isBindlessKernel));
|
||||
}
|
||||
{
|
||||
useGlobalHeaps = true;
|
||||
isBindlessKernel = true;
|
||||
EXPECT_EQ(gpuBaseAddress, NEO::getStateBaseAddress(heap, useGlobalHeaps, isBindlessKernel));
|
||||
EXPECT_EQ(MemoryConstants::sizeOf4GBinPageEntities, NEO::getStateSize(heap, useGlobalHeaps, isBindlessKernel));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user