@@ -591,44 +591,95 @@ HWTEST2_F(CommandListAppendLaunchKernel, givenCommandListWhenAppendLaunchKernelS
591591 EXPECT_EQ (1u , event->getPacketsInUse ());
592592}
593593
594- HWTEST_F (CommandListAppendLaunchKernel, givenIndirectDispatchWhenAppendingThenWorkGroupCountAndGlobalWorkSizeIsSetInCrossThreadData ) {
594+ HWTEST_F (CommandListAppendLaunchKernel, givenIndirectDispatchWhenAppendingThenWorkGroupCountAndGlobalWorkSizeAndWorkDimIsSetInCrossThreadData ) {
595595 using MI_STORE_REGISTER_MEM = typename FamilyType::MI_STORE_REGISTER_MEM;
596596 using MI_LOAD_REGISTER_REG = typename FamilyType::MI_LOAD_REGISTER_REG;
597597 using MI_LOAD_REGISTER_IMM = typename FamilyType::MI_LOAD_REGISTER_IMM;
598598
599599 Mock<::L0::Kernel> kernel;
600+ kernel.groupSize [0 ] = 2 ;
600601 kernel.descriptor .payloadMappings .dispatchTraits .numWorkGroups [0 ] = 2 ;
601602 kernel.descriptor .payloadMappings .dispatchTraits .globalWorkSize [0 ] = 2 ;
603+ kernel.descriptor .payloadMappings .dispatchTraits .workDim = 2 ;
602604 ze_result_t returnValue;
603605 std::unique_ptr<L0::CommandList> commandList (L0::CommandList::create (productFamily, device, NEO::EngineGroupType::RenderCompute, 0u , returnValue));
604606
605607 void *alloc = nullptr ;
606608 ze_device_mem_alloc_desc_t deviceDesc = {};
607609 auto result = context->allocDeviceMem (device->toHandle (), &deviceDesc, 16384u , 4096u , &alloc);
608- ASSERT_EQ (ZE_RESULT_SUCCESS, result );
610+ ASSERT_EQ (result, ZE_RESULT_SUCCESS );
609611
610612 result = commandList->appendLaunchKernelIndirect (kernel.toHandle (),
611613 static_cast <ze_group_count_t *>(alloc),
612614 nullptr , 0 , nullptr );
613- EXPECT_EQ (ZE_RESULT_SUCCESS, result);
615+ EXPECT_EQ (result, ZE_RESULT_SUCCESS);
616+
617+ kernel.groupSize [2 ] = 2 ;
618+ result = commandList->appendLaunchKernelIndirect (kernel.toHandle (),
619+ static_cast <ze_group_count_t *>(alloc),
620+ nullptr , 0 , nullptr );
621+ EXPECT_EQ (result, ZE_RESULT_SUCCESS);
614622
615623 GenCmdList cmdList;
616624 ASSERT_TRUE (FamilyType::PARSE::parseCommandBuffer (
617625 cmdList, ptrOffset (commandList->commandContainer .getCommandStream ()->getCpuBase (), 0 ), commandList->commandContainer .getCommandStream ()->getUsed ()));
618626
619627 auto itor = find<MI_STORE_REGISTER_MEM *>(cmdList.begin (), cmdList.end ());
620- EXPECT_NE (cmdList.end (), itor);
621- itor = find<MI_STORE_REGISTER_MEM *>(itor, cmdList.end ());
622- EXPECT_NE (cmdList.end (), itor);
623- itor = find<MI_STORE_REGISTER_MEM *>(itor, cmdList.end ());
624- EXPECT_NE (cmdList.end (), itor);
628+ EXPECT_NE (itor, cmdList.end ());
625629
626- itor = find<MI_LOAD_REGISTER_REG *>(itor, cmdList.end ());
627- EXPECT_NE (cmdList.end (), itor);
628- itor = find<MI_LOAD_REGISTER_IMM *>(itor, cmdList.end ());
629- EXPECT_NE (cmdList.end (), itor);
630- itor = find<MI_STORE_REGISTER_MEM *>(itor, cmdList.end ());
631- EXPECT_NE (cmdList.end (), itor);
630+ itor = find<MI_LOAD_REGISTER_REG *>(++itor, cmdList.end ());
631+ EXPECT_NE (itor, cmdList.end ());
632+ itor = find<MI_LOAD_REGISTER_IMM *>(++itor, cmdList.end ());
633+ EXPECT_NE (itor, cmdList.end ());
634+ itor = find<MI_STORE_REGISTER_MEM *>(++itor, cmdList.end ());
635+ EXPECT_NE (itor, cmdList.end ());
636+
637+ itor = find<MI_LOAD_REGISTER_IMM *>(++itor, cmdList.end ());
638+ EXPECT_NE (itor, cmdList.end ());
639+
640+ itor = find<MI_LOAD_REGISTER_REG *>(++itor, cmdList.end ());
641+ EXPECT_NE (itor, cmdList.end ());
642+ itor = find<MI_LOAD_REGISTER_REG *>(++itor, cmdList.end ());
643+ EXPECT_NE (itor, cmdList.end ());
644+
645+ itor = find<MI_LOAD_REGISTER_IMM *>(++itor, cmdList.end ());
646+ EXPECT_NE (itor, cmdList.end ());
647+ itor++; // MI_MATH_ALU_INST_INLINE doesn't have tagMI_COMMAND_OPCODE, can't find it in cmdList
648+ EXPECT_NE (itor, cmdList.end ());
649+ itor++;
650+ EXPECT_NE (itor, cmdList.end ());
651+
652+ itor = find<MI_LOAD_REGISTER_IMM *>(++itor, cmdList.end ());
653+ EXPECT_NE (itor, cmdList.end ());
654+ itor++;
655+ EXPECT_NE (itor, cmdList.end ());
656+ itor++;
657+ EXPECT_NE (itor, cmdList.end ());
658+
659+ itor = find<MI_LOAD_REGISTER_IMM *>(++itor, cmdList.end ());
660+ EXPECT_NE (itor, cmdList.end ());
661+ itor++;
662+ EXPECT_NE (itor, cmdList.end ());
663+ itor++;
664+ EXPECT_NE (itor, cmdList.end ());
665+
666+ itor = find<MI_STORE_REGISTER_MEM *>(++itor, cmdList.end ());
667+ EXPECT_NE (itor, cmdList.end ());
668+
669+ itor = find<MI_STORE_REGISTER_MEM *>(++itor, cmdList.end ()); // kernel with groupSize[2] = 2
670+ EXPECT_NE (itor, cmdList.end ());
671+
672+ itor = find<MI_LOAD_REGISTER_REG *>(++itor, cmdList.end ());
673+ EXPECT_NE (itor, cmdList.end ());
674+ itor = find<MI_LOAD_REGISTER_IMM *>(++itor, cmdList.end ());
675+ EXPECT_NE (itor, cmdList.end ());
676+ itor = find<MI_STORE_REGISTER_MEM *>(++itor, cmdList.end ());
677+ EXPECT_NE (itor, cmdList.end ());
678+
679+ itor = find<MI_LOAD_REGISTER_IMM *>(++itor, cmdList.end ());
680+ EXPECT_NE (itor, cmdList.end ());
681+ itor = find<MI_STORE_REGISTER_MEM *>(++itor, cmdList.end ());
682+ EXPECT_NE (itor, cmdList.end ());
632683
633684 context->freeMem (alloc);
634685}
0 commit comments