mirror of
https://github.com/intel/compute-runtime.git
synced 2025-11-15 10:14:56 +08:00
Move more timestamp packet tests to shared
Signed-off-by: Daniel Chabrowski <daniel.chabrowski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
84de510723
commit
1083a0d0c4
@@ -27,96 +27,6 @@
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
HWTEST_F(TimestampPacketTests, givenCommandStreamReceiverHwWhenObtainingPreferredTagPoolSizeThenReturnCorrectValue) {
|
||||
OsContext &osContext = *executionEnvironment->memoryManager->getRegisteredEngines()[0].osContext;
|
||||
|
||||
CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield());
|
||||
EXPECT_EQ(2048u, csr.getPreferredTagPoolSize());
|
||||
}
|
||||
|
||||
HWTEST_F(TimestampPacketTests, givenDebugFlagSetWhenCreatingAllocatorThenUseCorrectSize) {
|
||||
OsContext &osContext = *executionEnvironment->memoryManager->getRegisteredEngines()[0].osContext;
|
||||
|
||||
{
|
||||
CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield());
|
||||
csr.setupContext(osContext);
|
||||
|
||||
auto allocator = csr.getTimestampPacketAllocator();
|
||||
auto tag = allocator->getTag();
|
||||
auto size = tag->getSinglePacketSize();
|
||||
EXPECT_EQ(4u * sizeof(typename FamilyType::TimestampPacketType), size);
|
||||
}
|
||||
|
||||
{
|
||||
DebugManager.flags.OverrideTimestampPacketSize.set(4);
|
||||
|
||||
CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield());
|
||||
csr.setupContext(osContext);
|
||||
|
||||
auto allocator = csr.getTimestampPacketAllocator();
|
||||
auto tag = allocator->getTag();
|
||||
auto size = tag->getSinglePacketSize();
|
||||
EXPECT_EQ(4u * sizeof(uint32_t), size);
|
||||
}
|
||||
|
||||
{
|
||||
DebugManager.flags.OverrideTimestampPacketSize.set(8);
|
||||
|
||||
CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield());
|
||||
csr.setupContext(osContext);
|
||||
|
||||
auto allocator = csr.getTimestampPacketAllocator();
|
||||
auto tag = allocator->getTag();
|
||||
auto size = tag->getSinglePacketSize();
|
||||
EXPECT_EQ(4u * sizeof(uint64_t), size);
|
||||
}
|
||||
|
||||
{
|
||||
DebugManager.flags.OverrideTimestampPacketSize.set(-1);
|
||||
CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield());
|
||||
csr.setupContext(osContext);
|
||||
|
||||
DebugManager.flags.OverrideTimestampPacketSize.set(12);
|
||||
EXPECT_ANY_THROW(csr.getTimestampPacketAllocator());
|
||||
}
|
||||
}
|
||||
|
||||
HWCMDTEST_F(IGFX_XE_HP_CORE, TimestampPacketTests, givenInvalidDebugFlagSetWhenCreatingCsrThenExceptionIsThrown) {
|
||||
OsContext &osContext = *executionEnvironment->memoryManager->getRegisteredEngines()[0].osContext;
|
||||
DebugManager.flags.OverrideTimestampPacketSize.set(12);
|
||||
|
||||
EXPECT_ANY_THROW(CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield()));
|
||||
}
|
||||
|
||||
HWTEST_F(TimestampPacketTests, givenTagAlignmentWhenCreatingAllocatorThenGpuAddressIsAligned) {
|
||||
auto csr = executionEnvironment->memoryManager->getRegisteredEngines()[0].commandStreamReceiver;
|
||||
|
||||
auto &hwHelper = HwHelper::get(device->getHardwareInfo().platform.eRenderCoreFamily);
|
||||
|
||||
auto allocator = csr->getTimestampPacketAllocator();
|
||||
|
||||
auto tag1 = allocator->getTag();
|
||||
auto tag2 = allocator->getTag();
|
||||
|
||||
EXPECT_TRUE(isAligned(tag1->getGpuAddress(), hwHelper.getTimestampPacketAllocatorAlignment()));
|
||||
EXPECT_TRUE(isAligned(tag2->getGpuAddress(), hwHelper.getTimestampPacketAllocatorAlignment()));
|
||||
}
|
||||
|
||||
HWTEST_F(TimestampPacketTests, givenDebugFlagSetWhenCreatingTimestampPacketAllocatorThenDisableReusingAndLimitPoolSize) {
|
||||
DebugManagerStateRestore restore;
|
||||
DebugManager.flags.DisableTimestampPacketOptimizations.set(true);
|
||||
OsContext &osContext = *executionEnvironment->memoryManager->getRegisteredEngines()[0].osContext;
|
||||
|
||||
CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield());
|
||||
csr.setupContext(osContext);
|
||||
EXPECT_EQ(1u, csr.getPreferredTagPoolSize());
|
||||
|
||||
auto tag = csr.getTimestampPacketAllocator()->getTag();
|
||||
setTagToReadyState<FamilyType>(tag);
|
||||
|
||||
EXPECT_FALSE(tag->canBeReleased());
|
||||
}
|
||||
|
||||
HWCMDTEST_F(IGFX_GEN8_CORE, TimestampPacketTests, givenTimestampPacketWriteEnabledWhenEstimatingStreamSizeThenAddPipeControl) {
|
||||
MockKernelWithInternals kernel2(*device);
|
||||
MockMultiDispatchInfo multiDispatchInfo(device.get(), std::vector<Kernel *>({kernel->mockKernel, kernel2.mockKernel}));
|
||||
@@ -334,20 +244,6 @@ HWTEST_F(TimestampPacketTests, givenEventsRequestWithEventsWithoutTimestampsWhen
|
||||
EXPECT_EQ(expectedSize, TimestampPacketHelper::getRequiredCmdStreamSize<FamilyType>(csrDepsSize3));
|
||||
}
|
||||
|
||||
HWTEST_F(TimestampPacketTests, whenEstimatingSizeForNodeDependencyThenReturnCorrectValue) {
|
||||
TimestampPackets<uint32_t> tag;
|
||||
MockTagNode mockNode;
|
||||
mockNode.tagForCpuAccess = &tag;
|
||||
mockNode.gpuAddress = 0x1230000;
|
||||
|
||||
size_t sizeForNodeDependency = 0;
|
||||
sizeForNodeDependency += TimestampPacketHelper::getRequiredCmdStreamSizeForNodeDependency<FamilyType>(mockNode);
|
||||
|
||||
size_t expectedSize = mockNode.getPacketsUsed() * sizeof(typename FamilyType::MI_SEMAPHORE_WAIT);
|
||||
|
||||
EXPECT_EQ(expectedSize, sizeForNodeDependency);
|
||||
}
|
||||
|
||||
HWCMDTEST_F(IGFX_GEN8_CORE, TimestampPacketTests, givenTimestampPacketWhenDispatchingGpuWalkerThenAddTwoPcForLastWalker) {
|
||||
using GPGPU_WALKER = typename FamilyType::GPGPU_WALKER;
|
||||
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "shared/source/helpers/timestamp_packet.h"
|
||||
#include "shared/source/utilities/tag_allocator.h"
|
||||
#include "shared/test/common/cmd_parse/hw_parse.h"
|
||||
#include "shared/test/common/fixtures/device_fixture.h"
|
||||
#include "shared/test/common/helpers/debug_manager_state_restore.h"
|
||||
#include "shared/test/common/mocks/mock_execution_environment.h"
|
||||
#include "shared/test/common/mocks/mock_memory_manager.h"
|
||||
@@ -20,6 +21,21 @@
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
namespace {
|
||||
template <typename FamilyType>
|
||||
void setTagToReadyState(TagNodeBase *tagNode) {
|
||||
auto packetsUsed = tagNode->getPacketsUsed();
|
||||
tagNode->initialize();
|
||||
|
||||
typename FamilyType::TimestampPacketType zeros[4] = {};
|
||||
|
||||
for (uint32_t i = 0; i < TimestampPacketSizeControl::preferredPacketCount; i++) {
|
||||
tagNode->assignDataToAllTimestamps(i, zeros);
|
||||
}
|
||||
tagNode->setPacketsUsed(packetsUsed);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
struct TimestampPacketTests : public ::testing::Test {
|
||||
struct MockTagNode : public TagNode<TimestampPackets<uint32_t>> {
|
||||
using TagNode<TimestampPackets<uint32_t>>::gpuAddress;
|
||||
@@ -36,19 +52,6 @@ struct TimestampPacketTests : public ::testing::Test {
|
||||
|
||||
EXPECT_EQ(dataAddress, semaphoreCmd->getSemaphoreGraphicsAddress());
|
||||
};
|
||||
|
||||
template <typename FamilyType>
|
||||
void setTagToReadyState(TagNodeBase *tagNode) {
|
||||
auto packetsUsed = tagNode->getPacketsUsed();
|
||||
tagNode->initialize();
|
||||
|
||||
typename FamilyType::TimestampPacketType zeros[4] = {};
|
||||
|
||||
for (uint32_t i = 0; i < TimestampPacketSizeControl::preferredPacketCount; i++) {
|
||||
tagNode->assignDataToAllTimestamps(i, zeros);
|
||||
}
|
||||
tagNode->setPacketsUsed(packetsUsed);
|
||||
}
|
||||
};
|
||||
|
||||
HWTEST_F(TimestampPacketTests, givenTagNodeWhenSemaphoreIsProgrammedThenUseGpuAddress) {
|
||||
@@ -179,3 +182,122 @@ TEST_F(TimestampPacketTests, whenObjectIsCreatedThenInitializeAllStamps) {
|
||||
EXPECT_EQ(1u, packet.globalEnd);
|
||||
}
|
||||
}
|
||||
|
||||
HWTEST_F(TimestampPacketTests, whenEstimatingSizeForNodeDependencyThenReturnCorrectValue) {
|
||||
TimestampPackets<uint32_t> tag;
|
||||
MockTagNode mockNode;
|
||||
mockNode.tagForCpuAccess = &tag;
|
||||
mockNode.gpuAddress = 0x1230000;
|
||||
|
||||
size_t sizeForNodeDependency = 0;
|
||||
sizeForNodeDependency += TimestampPacketHelper::getRequiredCmdStreamSizeForNodeDependency<FamilyType>(mockNode);
|
||||
|
||||
size_t expectedSize = mockNode.getPacketsUsed() * sizeof(typename FamilyType::MI_SEMAPHORE_WAIT);
|
||||
|
||||
EXPECT_EQ(expectedSize, sizeForNodeDependency);
|
||||
}
|
||||
|
||||
struct DeviceTimestampPacketTests : public ::testing::Test, DeviceFixture {
|
||||
DebugManagerStateRestore restore{};
|
||||
ExecutionEnvironment *executionEnvironment{nullptr};
|
||||
|
||||
void SetUp() override {
|
||||
DebugManager.flags.EnableTimestampPacket.set(1);
|
||||
DeviceFixture::SetUp();
|
||||
executionEnvironment = pDevice->executionEnvironment;
|
||||
}
|
||||
|
||||
void TearDown() override {
|
||||
DeviceFixture::TearDown();
|
||||
};
|
||||
};
|
||||
|
||||
HWTEST_F(DeviceTimestampPacketTests, givenCommandStreamReceiverHwWhenObtainingPreferredTagPoolSizeThenReturnCorrectValue) {
|
||||
OsContext &osContext = *executionEnvironment->memoryManager->getRegisteredEngines()[0].osContext;
|
||||
|
||||
CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield());
|
||||
EXPECT_EQ(2048u, csr.getPreferredTagPoolSize());
|
||||
}
|
||||
|
||||
HWTEST_F(DeviceTimestampPacketTests, givenDebugFlagSetWhenCreatingAllocatorThenUseCorrectSize) {
|
||||
OsContext &osContext = *executionEnvironment->memoryManager->getRegisteredEngines()[0].osContext;
|
||||
|
||||
{
|
||||
CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield());
|
||||
csr.setupContext(osContext);
|
||||
|
||||
auto allocator = csr.getTimestampPacketAllocator();
|
||||
auto tag = allocator->getTag();
|
||||
auto size = tag->getSinglePacketSize();
|
||||
EXPECT_EQ(4u * sizeof(typename FamilyType::TimestampPacketType), size);
|
||||
}
|
||||
|
||||
{
|
||||
DebugManager.flags.OverrideTimestampPacketSize.set(4);
|
||||
|
||||
CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield());
|
||||
csr.setupContext(osContext);
|
||||
|
||||
auto allocator = csr.getTimestampPacketAllocator();
|
||||
auto tag = allocator->getTag();
|
||||
auto size = tag->getSinglePacketSize();
|
||||
EXPECT_EQ(4u * sizeof(uint32_t), size);
|
||||
}
|
||||
|
||||
{
|
||||
DebugManager.flags.OverrideTimestampPacketSize.set(8);
|
||||
|
||||
CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield());
|
||||
csr.setupContext(osContext);
|
||||
|
||||
auto allocator = csr.getTimestampPacketAllocator();
|
||||
auto tag = allocator->getTag();
|
||||
auto size = tag->getSinglePacketSize();
|
||||
EXPECT_EQ(4u * sizeof(uint64_t), size);
|
||||
}
|
||||
|
||||
{
|
||||
DebugManager.flags.OverrideTimestampPacketSize.set(-1);
|
||||
CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield());
|
||||
csr.setupContext(osContext);
|
||||
|
||||
DebugManager.flags.OverrideTimestampPacketSize.set(12);
|
||||
EXPECT_ANY_THROW(csr.getTimestampPacketAllocator());
|
||||
}
|
||||
}
|
||||
|
||||
HWCMDTEST_F(IGFX_XE_HP_CORE, DeviceTimestampPacketTests, givenInvalidDebugFlagSetWhenCreatingCsrThenExceptionIsThrown) {
|
||||
OsContext &osContext = *executionEnvironment->memoryManager->getRegisteredEngines()[0].osContext;
|
||||
DebugManager.flags.OverrideTimestampPacketSize.set(12);
|
||||
|
||||
EXPECT_ANY_THROW(CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield()));
|
||||
}
|
||||
|
||||
HWTEST_F(DeviceTimestampPacketTests, givenTagAlignmentWhenCreatingAllocatorThenGpuAddressIsAligned) {
|
||||
auto csr = executionEnvironment->memoryManager->getRegisteredEngines()[0].commandStreamReceiver;
|
||||
|
||||
auto &hwHelper = HwHelper::get(pDevice->getHardwareInfo().platform.eRenderCoreFamily);
|
||||
|
||||
auto allocator = csr->getTimestampPacketAllocator();
|
||||
|
||||
auto tag1 = allocator->getTag();
|
||||
auto tag2 = allocator->getTag();
|
||||
|
||||
EXPECT_TRUE(isAligned(tag1->getGpuAddress(), hwHelper.getTimestampPacketAllocatorAlignment()));
|
||||
EXPECT_TRUE(isAligned(tag2->getGpuAddress(), hwHelper.getTimestampPacketAllocatorAlignment()));
|
||||
}
|
||||
|
||||
HWTEST_F(DeviceTimestampPacketTests, givenDebugFlagSetWhenCreatingTimestampPacketAllocatorThenDisableReusingAndLimitPoolSize) {
|
||||
DebugManagerStateRestore restore;
|
||||
DebugManager.flags.DisableTimestampPacketOptimizations.set(true);
|
||||
OsContext &osContext = *executionEnvironment->memoryManager->getRegisteredEngines()[0].osContext;
|
||||
|
||||
CommandStreamReceiverHw<FamilyType> csr(*executionEnvironment, 0, osContext.getDeviceBitfield());
|
||||
csr.setupContext(osContext);
|
||||
EXPECT_EQ(1u, csr.getPreferredTagPoolSize());
|
||||
|
||||
auto tag = csr.getTimestampPacketAllocator()->getTag();
|
||||
setTagToReadyState<FamilyType>(tag);
|
||||
|
||||
EXPECT_FALSE(tag->canBeReleased());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user