@@ -375,6 +375,7 @@ struct CmdListHelper {
375375 NEO::ResidencyContainer residencyContainer;
376376 ze_group_count_t threadGroupDimensions;
377377 const uint32_t *groupSize = nullptr ;
378+ uint32_t useOnlyGlobalTimestamp = std::numeric_limits<uint32_t >::max();
378379};
379380
380381template <GFXCORE_FAMILY gfxCoreFamily>
@@ -394,6 +395,20 @@ class MockCommandListForAppendLaunchKernel : public WhiteBox<::L0::CommandListCo
394395 cmdListHelper.groupSize = kernel->getGroupSize ();
395396 cmdListHelper.threadGroupDimensions = *pThreadGroupDimensions;
396397
398+ auto kernelName = kernel->getImmutableData ()->getDescriptor ().kernelMetadata .kernelName ;
399+ NEO::ArgDescriptor arg;
400+ if (kernelName == " QueryKernelTimestamps" ) {
401+ arg = kernel->getImmutableData ()->getDescriptor ().payloadMappings .explicitArgs [2u ];
402+ } else if (kernelName == " QueryKernelTimestampsWithOffsets" ) {
403+ arg = kernel->getImmutableData ()->getDescriptor ().payloadMappings .explicitArgs [3u ];
404+ } else {
405+ return ZE_RESULT_SUCCESS;
406+ }
407+ auto corssThreadData = kernel->getCrossThreadData ();
408+ auto element = arg.as <NEO::ArgDescValue>().elements [0 ];
409+ auto pDst = ptrOffset (corssThreadData, element.offset );
410+ cmdListHelper.useOnlyGlobalTimestamp = *(uint32_t *)(pDst);
411+
397412 return ZE_RESULT_SUCCESS;
398413 }
399414};
@@ -421,7 +436,7 @@ HWTEST2_F(AppendQueryKernelTimestamps, givenCommandListWhenAppendQueryKernelTime
421436 bool containsDstPtr = false ;
422437
423438 for (auto &a : commandList.cmdListHelper .residencyContainer ) {
424- if (a->getGpuAddress () == reinterpret_cast <uint64_t >(alloc)) {
439+ if (a != nullptr && a ->getGpuAddress () == reinterpret_cast <uint64_t >(alloc)) {
425440 containsDstPtr = true ;
426441 }
427442 }
@@ -433,6 +448,8 @@ HWTEST2_F(AppendQueryKernelTimestamps, givenCommandListWhenAppendQueryKernelTime
433448 EXPECT_EQ (1u , commandList.cmdListHelper .groupSize [1 ]);
434449 EXPECT_EQ (1u , commandList.cmdListHelper .groupSize [2 ]);
435450
451+ EXPECT_EQ (NEO::HwHelper::get (device->getHwInfo ().platform .eRenderCoreFamily ).useOnlyGlobalTimestamps () ? 1u : 0u , commandList.cmdListHelper .useOnlyGlobalTimestamp );
452+
436453 EXPECT_EQ (1u , commandList.cmdListHelper .threadGroupDimensions .groupCountX );
437454 EXPECT_EQ (1u , commandList.cmdListHelper .threadGroupDimensions .groupCountY );
438455 EXPECT_EQ (1u , commandList.cmdListHelper .threadGroupDimensions .groupCountZ );
@@ -464,7 +481,7 @@ HWTEST2_F(AppendQueryKernelTimestamps, givenCommandListWhenAppendQueryKernelTime
464481 bool containsDstPtr = false ;
465482
466483 for (auto &a : commandList.cmdListHelper .residencyContainer ) {
467- if (a->getGpuAddress () == reinterpret_cast <uint64_t >(alloc)) {
484+ if (a != nullptr && a ->getGpuAddress () == reinterpret_cast <uint64_t >(alloc)) {
468485 containsDstPtr = true ;
469486 }
470487 }
@@ -474,7 +491,7 @@ HWTEST2_F(AppendQueryKernelTimestamps, givenCommandListWhenAppendQueryKernelTime
474491 bool containOffsetPtr = false ;
475492
476493 for (auto &a : commandList.cmdListHelper .residencyContainer ) {
477- if (a->getGpuAddress () == reinterpret_cast <uint64_t >(offsetAlloc)) {
494+ if (a != nullptr && a ->getGpuAddress () == reinterpret_cast <uint64_t >(offsetAlloc)) {
478495 containOffsetPtr = true ;
479496 }
480497 }
@@ -486,6 +503,8 @@ HWTEST2_F(AppendQueryKernelTimestamps, givenCommandListWhenAppendQueryKernelTime
486503 EXPECT_EQ (1u , commandList.cmdListHelper .groupSize [1 ]);
487504 EXPECT_EQ (1u , commandList.cmdListHelper .groupSize [2 ]);
488505
506+ EXPECT_EQ (NEO::HwHelper::get (device->getHwInfo ().platform .eRenderCoreFamily ).useOnlyGlobalTimestamps () ? 1u : 0u , commandList.cmdListHelper .useOnlyGlobalTimestamp );
507+
489508 EXPECT_EQ (1u , commandList.cmdListHelper .threadGroupDimensions .groupCountX );
490509 EXPECT_EQ (1u , commandList.cmdListHelper .threadGroupDimensions .groupCountY );
491510 EXPECT_EQ (1u , commandList.cmdListHelper .threadGroupDimensions .groupCountZ );
@@ -528,6 +547,8 @@ HWTEST2_F(AppendQueryKernelTimestamps, givenCommandListWhenAppendQueryKernelTime
528547 EXPECT_EQ (groupSizeY, commandList.cmdListHelper .groupSize [1 ]);
529548 EXPECT_EQ (groupSizeZ, commandList.cmdListHelper .groupSize [2 ]);
530549
550+ EXPECT_EQ (NEO::HwHelper::get (device->getHwInfo ().platform .eRenderCoreFamily ).useOnlyGlobalTimestamps () ? 1u : 0u , commandList.cmdListHelper .useOnlyGlobalTimestamp );
551+
531552 EXPECT_EQ (static_cast <uint32_t >(eventCount) / groupSizeX, commandList.cmdListHelper .threadGroupDimensions .groupCountX );
532553 EXPECT_EQ (1u , commandList.cmdListHelper .threadGroupDimensions .groupCountY );
533554 EXPECT_EQ (1u , commandList.cmdListHelper .threadGroupDimensions .groupCountZ );
0 commit comments