mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Use wait utils while waiting for timestamps
Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
4d433d8674
commit
63116e4100
@ -857,6 +857,55 @@ HWTEST_F(TimestampPacketTests, givenOOQAndEnableTimestampWaitWhenFinishThenWaitO
|
||||
cmdQ.reset();
|
||||
}
|
||||
|
||||
namespace CpuIntrinsicsTests {
|
||||
extern std::atomic<uint32_t> pauseCounter;
|
||||
extern volatile uint32_t *pauseAddress;
|
||||
extern uint32_t pauseValue;
|
||||
extern uint32_t pauseOffset;
|
||||
extern std::function<void()> setupPauseAddress;
|
||||
} // namespace CpuIntrinsicsTests
|
||||
|
||||
HWTEST_F(TimestampPacketTests, givenEnableTimestampWaitWhenFinishThenCallWaitUtils) {
|
||||
DebugManagerStateRestore restorer;
|
||||
DebugManager.flags.UpdateTaskCountFromWait.set(3);
|
||||
DebugManager.flags.EnableTimestampWait.set(1);
|
||||
|
||||
device->getUltCommandStreamReceiver<FamilyType>().timestampPacketWriteEnabled = true;
|
||||
cl_queue_properties props[3] = {CL_QUEUE_PROPERTIES, CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, 0};
|
||||
auto cmdQ = std::make_unique<MockCommandQueueHw<FamilyType>>(context, device.get(), props);
|
||||
|
||||
TimestampPacketContainer *deferredTimestampPackets = cmdQ->deferredTimestampPackets.get();
|
||||
TimestampPacketContainer *timestampPacketContainer = cmdQ->timestampPacketContainer.get();
|
||||
|
||||
cmdQ->enqueueKernel(kernel->mockKernel, 1, nullptr, gws, nullptr, 0, nullptr, nullptr);
|
||||
cmdQ->enqueueKernel(kernel->mockKernel, 1, nullptr, gws, nullptr, 0, nullptr, nullptr);
|
||||
cmdQ->flush();
|
||||
|
||||
EXPECT_EQ(1u, deferredTimestampPackets->peekNodes().size());
|
||||
EXPECT_EQ(1u, timestampPacketContainer->peekNodes().size());
|
||||
|
||||
VariableBackup<volatile uint32_t *> backupPauseAddress(&CpuIntrinsicsTests::pauseAddress);
|
||||
VariableBackup<uint32_t> backupPauseValue(&CpuIntrinsicsTests::pauseValue);
|
||||
VariableBackup<uint32_t> backupPauseOffset(&CpuIntrinsicsTests::pauseOffset);
|
||||
VariableBackup<std::function<void()>> backupSetupPauseAddress(&CpuIntrinsicsTests::setupPauseAddress);
|
||||
|
||||
deferredTimestampPackets->peekNodes()[0]->setPacketsUsed(1u);
|
||||
timestampPacketContainer->peekNodes()[0]->setPacketsUsed(1u);
|
||||
|
||||
CpuIntrinsicsTests::pauseAddress = reinterpret_cast<volatile uint32_t *>(const_cast<void *>(timestampPacketContainer->peekNodes()[0]->getContextEndAddress(0u)));
|
||||
CpuIntrinsicsTests::pauseValue = 2u;
|
||||
CpuIntrinsicsTests::setupPauseAddress = [&]() {
|
||||
CpuIntrinsicsTests::pauseAddress = reinterpret_cast<volatile uint32_t *>(const_cast<void *>(deferredTimestampPackets->peekNodes()[0]->getContextEndAddress(0u)));
|
||||
};
|
||||
CpuIntrinsicsTests::pauseCounter = 0u;
|
||||
|
||||
cmdQ->finish();
|
||||
|
||||
EXPECT_EQ(2u, CpuIntrinsicsTests::pauseCounter);
|
||||
|
||||
cmdQ.reset();
|
||||
}
|
||||
|
||||
HWTEST_F(TimestampPacketTests, givenTimestampPacketWriteEnabledWhenEnqueueingToOoqThenMoveToDeferredList) {
|
||||
device->getUltCommandStreamReceiver<FamilyType>().timestampPacketWriteEnabled = true;
|
||||
|
||||
|
@ -203,6 +203,8 @@ class MockCommandQueue : public CommandQueue {
|
||||
|
||||
bool obtainTimestampPacketForCacheFlush(bool isCacheFlushRequired) const override { return isCacheFlushRequired; }
|
||||
|
||||
void waitForTimestamps(uint32_t taskCount) override{};
|
||||
|
||||
bool releaseIndirectHeapCalled = false;
|
||||
|
||||
cl_int writeBufferRetValue = CL_SUCCESS;
|
||||
|
@ -76,6 +76,8 @@ struct TimeStamps {
|
||||
return end;
|
||||
}
|
||||
|
||||
void const *getContextEndAddress(uint32_t packetIndex) const { return &end; }
|
||||
|
||||
uint64_t start;
|
||||
uint64_t end;
|
||||
|
||||
@ -550,6 +552,7 @@ TEST_F(TagAllocatorTest, givenNotSupportedTagTypeWhenCallingMethodThenAbortOrRet
|
||||
EXPECT_ANY_THROW(perfCounterNode.getGlobalStartValue(0));
|
||||
EXPECT_ANY_THROW(perfCounterNode.getContextEndValue(0));
|
||||
EXPECT_ANY_THROW(perfCounterNode.getGlobalEndValue(0));
|
||||
EXPECT_ANY_THROW(perfCounterNode.getContextEndAddress(0));
|
||||
EXPECT_ANY_THROW(perfCounterNode.getContextCompleteRef());
|
||||
EXPECT_ANY_THROW(perfCounterNode.getGlobalEndRef());
|
||||
EXPECT_ANY_THROW(perfCounterNode.getSinglePacketSize());
|
||||
|
Reference in New Issue
Block a user