@@ -570,6 +570,86 @@ HWTEST_F(KernelImmutableDataTests, givenKernelInitializedWithPrivateMemoryThenCo
570570 EXPECT_EQ (sizeContainerWithoutPrivateMemory + 1u , sizeContainerWithPrivateMemory);
571571}
572572
573+ class KernelDescriptorRTCallsTrue : public NEO ::KernelDescriptor {
574+ bool hasRTCalls () const override {
575+ return true ;
576+ }
577+ };
578+
579+ class KernelDescriptorRTCallsFalse : public NEO ::KernelDescriptor {
580+ bool hasRTCalls () const override {
581+ return false ;
582+ }
583+ };
584+
585+ TEST_F (KernelImmutableDataTests, whenHasRTCallsIsTrueThenRayTracingIsInitialized) {
586+ KernelDescriptorRTCallsTrue mockDescriptor = {};
587+ mockDescriptor.kernelMetadata .kernelName = " rt_test" ;
588+ for (auto i = 0u ; i < 3u ; i++) {
589+ mockDescriptor.kernelAttributes .requiredWorkgroupSize [i] = 0 ;
590+ }
591+
592+ std::unique_ptr<MockImmutableData> mockKernelImmutableData =
593+ std::make_unique<MockImmutableData>(32u );
594+ mockKernelImmutableData->kernelDescriptor = &mockDescriptor;
595+
596+ ModuleBuildLog *moduleBuildLog = nullptr ;
597+ module = std::make_unique<MockModule>(device,
598+ moduleBuildLog,
599+ ModuleType::User,
600+ 32u ,
601+ mockKernelImmutableData.get ());
602+ module ->maxGroupSize = 10 ;
603+
604+ std::unique_ptr<ModuleImmutableDataFixture::MockKernel> kernel;
605+ kernel = std::make_unique<ModuleImmutableDataFixture::MockKernel>(module .get ());
606+
607+ ze_kernel_desc_t kernelDesc = {};
608+ kernelDesc.pKernelName = " rt_test" ;
609+
610+ auto immDataVector =
611+ const_cast <std::vector<std::unique_ptr<KernelImmutableData>> *>(&module .get ()->getKernelImmutableDataVector ());
612+
613+ immDataVector->push_back (std::move (mockKernelImmutableData));
614+
615+ EXPECT_EQ (ZE_RESULT_SUCCESS, kernel->initialize (&kernelDesc));
616+ EXPECT_NE (nullptr , module .get ()->getDevice ()->getNEODevice ()->getRTMemoryBackedBuffer ());
617+ }
618+
619+ TEST_F (KernelImmutableDataTests, whenHasRTCallsIsFalseThenRayTracingIsNotInitialized) {
620+ KernelDescriptorRTCallsFalse mockDescriptor = {};
621+ mockDescriptor.kernelMetadata .kernelName = " rt_test" ;
622+ for (auto i = 0u ; i < 3u ; i++) {
623+ mockDescriptor.kernelAttributes .requiredWorkgroupSize [i] = 0 ;
624+ }
625+
626+ std::unique_ptr<MockImmutableData> mockKernelImmutableData =
627+ std::make_unique<MockImmutableData>(32u );
628+ mockKernelImmutableData->kernelDescriptor = &mockDescriptor;
629+
630+ ModuleBuildLog *moduleBuildLog = nullptr ;
631+ module = std::make_unique<MockModule>(device,
632+ moduleBuildLog,
633+ ModuleType::User,
634+ 32u ,
635+ mockKernelImmutableData.get ());
636+ module ->maxGroupSize = 10 ;
637+
638+ std::unique_ptr<ModuleImmutableDataFixture::MockKernel> kernel;
639+ kernel = std::make_unique<ModuleImmutableDataFixture::MockKernel>(module .get ());
640+
641+ ze_kernel_desc_t kernelDesc = {};
642+ kernelDesc.pKernelName = " rt_test" ;
643+
644+ auto immDataVector =
645+ const_cast <std::vector<std::unique_ptr<KernelImmutableData>> *>(&module .get ()->getKernelImmutableDataVector ());
646+
647+ immDataVector->push_back (std::move (mockKernelImmutableData));
648+
649+ EXPECT_EQ (ZE_RESULT_SUCCESS, kernel->initialize (&kernelDesc));
650+ EXPECT_EQ (nullptr , module .get ()->getDevice ()->getNEODevice ()->getRTMemoryBackedBuffer ());
651+ }
652+
573653using KernelIndirectPropertiesFromIGCTests = KernelImmutableDataTests;
574654
575655HWTEST_F (KernelIndirectPropertiesFromIGCTests, whenInitializingKernelWithNoKernelLoadAndNoStoreAndNoAtomicThenHasIndirectAccessIsSetToFalse) {
@@ -847,6 +927,28 @@ HWTEST_F(KernelPropertiesTests, givenValidKernelWithIndirectAccessFlagsAndDisabl
847927 EXPECT_TRUE (unifiedMemoryControls.indirectSharedAllocationsAllowed );
848928}
849929
930+ HWTEST2_F (KernelPropertiesTests, whenHasRTCallsIsTrueThenUsesRayTracingIsTrue, MatchAny) {
931+ WhiteBoxKernelHw<gfxCoreFamily> mockKernel;
932+ KernelDescriptorRTCallsTrue mockDescriptor = {};
933+ WhiteBox<::L0::KernelImmutableData> mockKernelImmutableData = {};
934+
935+ mockKernelImmutableData.kernelDescriptor = &mockDescriptor;
936+ mockKernel.kernelImmData = &mockKernelImmutableData;
937+
938+ EXPECT_TRUE (mockKernel.usesRayTracing ());
939+ }
940+
941+ HWTEST2_F (KernelPropertiesTests, whenHasRTCallsIsFalseThenUsesRayTracingIsFalse, MatchAny) {
942+ WhiteBoxKernelHw<gfxCoreFamily> mockKernel;
943+ KernelDescriptorRTCallsFalse mockDescriptor = {};
944+ WhiteBox<::L0::KernelImmutableData> mockKernelImmutableData = {};
945+
946+ mockKernelImmutableData.kernelDescriptor = &mockDescriptor;
947+ mockKernel.kernelImmData = &mockKernelImmutableData;
948+
949+ EXPECT_FALSE (mockKernel.usesRayTracing ());
950+ }
951+
850952using KernelIndirectPropertiesTests = KernelPropertiesTests;
851953
852954HWTEST_F (KernelIndirectPropertiesTests, whenCallingSetIndirectAccessWithKernelThatHasIndirectAccessThenIndirectAccessIsSet) {
@@ -1314,6 +1416,7 @@ struct MyMockKernel : public Mock<Kernel> {
13141416 }
13151417 bool setSurfaceStateCalled = false ;
13161418};
1419+
13171420TEST_F (KernelImpPatchBindlessTest, GivenValidBindlessOffsetWhenSetArgBufferWithAllocThensetBufferSurfaceStateCalled) {
13181421 ze_kernel_desc_t desc = {};
13191422 desc.pKernelName = kernelName.c_str ();
0 commit comments