@@ -1216,6 +1216,96 @@ HWTEST2_F(InOrderCmdListTests, givenInOrderModeWhenGpuHangDetectedInCpuCopyPathT
1216
1216
context->freeMem (deviceAlloc);
1217
1217
}
1218
1218
1219
+ HWTEST2_F (InOrderCmdListTests, givenInOrderModeWhenProgrammingKernelSplitWithoutEventThenAddBarrierAndSignalCounter, IsAtLeastXeHpCore) {
1220
+ using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
1221
+ using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
1222
+
1223
+ auto immCmdList = createImmCmdList<gfxCoreFamily>();
1224
+
1225
+ auto cmdStream = immCmdList->getCmdContainer ().getCommandStream ();
1226
+
1227
+ const size_t ptrBaseSize = 128 ;
1228
+ const size_t offset = 1 ;
1229
+ auto alignedPtr = alignedMalloc (ptrBaseSize, MemoryConstants::cacheLineSize);
1230
+ auto unalignedPtr = ptrOffset (alignedPtr, offset);
1231
+
1232
+ immCmdList->appendMemoryCopy (unalignedPtr, unalignedPtr, ptrBaseSize - offset, nullptr , 0 , nullptr , false );
1233
+
1234
+ GenCmdList cmdList;
1235
+ ASSERT_TRUE (FamilyType::PARSE::parseCommandBuffer (cmdList, cmdStream->getCpuBase (), cmdStream->getUsed ()));
1236
+
1237
+ auto cmdItor = find<PIPE_CONTROL *>(cmdList.begin (), cmdList.end ());
1238
+ ASSERT_NE (cmdList.end (), cmdItor);
1239
+
1240
+ auto pcCmd = genCmdCast<PIPE_CONTROL *>(*cmdItor);
1241
+
1242
+ EXPECT_EQ (PIPE_CONTROL::POST_SYNC_OPERATION::POST_SYNC_OPERATION_NO_WRITE, pcCmd->getPostSyncOperation ());
1243
+
1244
+ auto sdiCmd = genCmdCast<MI_STORE_DATA_IMM *>(*(++cmdItor));
1245
+
1246
+ while (sdiCmd == nullptr && cmdItor != cmdList.end ()) {
1247
+ sdiCmd = genCmdCast<MI_STORE_DATA_IMM *>(*(++cmdItor));
1248
+ }
1249
+
1250
+ ASSERT_NE (nullptr , sdiCmd);
1251
+
1252
+ EXPECT_EQ (immCmdList->inOrderDependencyCounterAllocation ->getGpuAddress (), sdiCmd->getAddress ());
1253
+ EXPECT_EQ (0u , sdiCmd->getStoreQword ());
1254
+ EXPECT_EQ (1u , sdiCmd->getDataDword0 ());
1255
+
1256
+ alignedFree (alignedPtr);
1257
+ }
1258
+
1259
+ HWTEST2_F (InOrderCmdListTests, givenInOrderModeWhenProgrammingKernelSplitWithEventThenSignalCounter, IsAtLeastXeHpCore) {
1260
+ using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
1261
+ using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
1262
+
1263
+ auto immCmdList = createImmCmdList<gfxCoreFamily>();
1264
+
1265
+ auto cmdStream = immCmdList->getCmdContainer ().getCommandStream ();
1266
+
1267
+ auto eventPool = createEvents (1 , false );
1268
+ auto eventHandle = events[0 ]->toHandle ();
1269
+
1270
+ const size_t ptrBaseSize = 128 ;
1271
+ const size_t offset = 1 ;
1272
+ auto alignedPtr = alignedMalloc (ptrBaseSize, MemoryConstants::cacheLineSize);
1273
+ auto unalignedPtr = ptrOffset (alignedPtr, offset);
1274
+
1275
+ immCmdList->appendMemoryCopy (unalignedPtr, unalignedPtr, ptrBaseSize - offset, eventHandle, 0 , nullptr , false );
1276
+
1277
+ GenCmdList cmdList;
1278
+ ASSERT_TRUE (FamilyType::PARSE::parseCommandBuffer (cmdList, cmdStream->getCpuBase (), cmdStream->getUsed ()));
1279
+
1280
+ auto cmdItor = find<PIPE_CONTROL *>(cmdList.begin (), cmdList.end ());
1281
+ ASSERT_NE (cmdList.end (), cmdItor);
1282
+
1283
+ auto pcCmd = genCmdCast<PIPE_CONTROL *>(*cmdItor);
1284
+ ASSERT_NE (nullptr , pcCmd);
1285
+
1286
+ while (PIPE_CONTROL::POST_SYNC_OPERATION::POST_SYNC_OPERATION_NO_WRITE == pcCmd->getPostSyncOperation ()) {
1287
+ cmdItor = find<PIPE_CONTROL *>(++cmdItor, cmdList.end ());
1288
+ ASSERT_NE (cmdList.end (), cmdItor);
1289
+
1290
+ pcCmd = genCmdCast<PIPE_CONTROL *>(*cmdItor);
1291
+ ASSERT_NE (nullptr , pcCmd);
1292
+ }
1293
+
1294
+ auto sdiCmd = genCmdCast<MI_STORE_DATA_IMM *>(*(++cmdItor));
1295
+
1296
+ while (sdiCmd == nullptr && cmdItor != cmdList.end ()) {
1297
+ sdiCmd = genCmdCast<MI_STORE_DATA_IMM *>(*(++cmdItor));
1298
+ }
1299
+
1300
+ ASSERT_NE (nullptr , sdiCmd);
1301
+
1302
+ EXPECT_EQ (immCmdList->inOrderDependencyCounterAllocation ->getGpuAddress (), sdiCmd->getAddress ());
1303
+ EXPECT_EQ (0u , sdiCmd->getStoreQword ());
1304
+ EXPECT_EQ (1u , sdiCmd->getDataDword0 ());
1305
+
1306
+ alignedFree (alignedPtr);
1307
+ }
1308
+
1219
1309
struct CommandListAppendLaunchKernelWithImplicitArgs : CommandListAppendLaunchKernel {
1220
1310
template <typename FamilyType>
1221
1311
uint64_t getIndirectHeapOffsetForImplicitArgsBuffer (const Mock<::L0::Kernel> &kernel) {
0 commit comments