@@ -210,11 +210,14 @@ TEST(MemoryProperties, givenClUncompressedHintFlagWhenCreateMemoryPropertiesThen
210210}
211211
212212struct MemoryPropertiesHelperTests : ::testing::Test {
213- MockContext context;
213+ MockUnrestrictiveContext context;
214214 MemoryProperties memoryProperties;
215215 cl_mem_flags flags = 0 ;
216216 cl_mem_flags_intel flagsIntel = 0 ;
217217 cl_mem_alloc_flags_intel allocflags = 0 ;
218+ cl_mem_properties_intel rootDeviceId = reinterpret_cast <cl_mem_properties_intel>(static_cast <cl_device_id>(context.pRootDevice));
219+ cl_mem_properties_intel subDevice0Id = reinterpret_cast <cl_mem_properties_intel>(static_cast <cl_device_id>(context.pSubDevice0));
220+ cl_mem_properties_intel subDevice1Id = reinterpret_cast <cl_mem_properties_intel>(static_cast <cl_device_id>(context.pSubDevice1));
218221};
219222
220223TEST_F (MemoryPropertiesHelperTests, givenNullPropertiesWhenParsingMemoryPropertiesThenTrueIsReturned) {
@@ -244,6 +247,8 @@ TEST_F(MemoryPropertiesHelperTests, givenValidPropertiesWhenParsingMemoryPropert
244247 CL_MEM_UNCOMPRESSED_HINT_INTEL,
245248 CL_MEM_ALLOC_FLAGS_INTEL,
246249 CL_MEM_ALLOC_WRITE_COMBINED_INTEL, CL_MEM_ALLOC_DEFAULT_INTEL,
250+ CL_MEM_DEVICE_ID_INTEL,
251+ rootDeviceId,
247252 0 };
248253
249254 EXPECT_TRUE (ClMemoryPropertiesHelper::parseMemoryProperties (properties, memoryProperties, flags, flagsIntel, allocflags,
@@ -510,3 +515,45 @@ TEST_F(MemoryPropertiesHelperTests, WhenCallingSetInitialPlacementThenCorrectVal
510515 EXPECT_EQ (initialPlacement, allocationProperties.usmInitialPlacement );
511516 }
512517}
518+
519+ TEST_F (MemoryPropertiesHelperTests, givenDeviceSpecifiedMultipleTimesWhenParsingExtraMemoryPropertiesThenFalseIsReturned) {
520+ cl_mem_properties_intel propertiesToTest[][5 ] = {
521+ {CL_MEM_DEVICE_ID_INTEL, subDevice0Id, CL_MEM_DEVICE_ID_INTEL, subDevice0Id, 0 },
522+ {CL_MEM_DEVICE_ID_INTEL, subDevice0Id, CL_MEM_DEVICE_ID_INTEL, subDevice1Id, 0 }};
523+
524+ for (auto properties : propertiesToTest) {
525+ EXPECT_FALSE (ClMemoryPropertiesHelper::parseMemoryProperties (properties, memoryProperties, flags, flagsIntel, allocflags,
526+ MemoryPropertiesHelper::ObjType::UNKNOWN, context));
527+ }
528+ }
529+
530+ TEST_F (MemoryPropertiesHelperTests, givenInvalidDeviceIdWhenParsingExtraMemoryPropertiesThenFalseIsReturned) {
531+ cl_mem_properties_intel properties[] = {
532+ CL_MEM_DEVICE_ID_INTEL, rootDeviceId + 1 ,
533+ 0 };
534+
535+ EXPECT_FALSE (ClMemoryPropertiesHelper::parseMemoryProperties (properties, memoryProperties, flags, flagsIntel, allocflags,
536+ MemoryPropertiesHelper::ObjType::UNKNOWN, context));
537+ }
538+
539+ TEST_F (MemoryPropertiesHelperTests, givenRootDeviceIdWhenParsingExtraMemoryPropertiesThenValuesAreProperlySet) {
540+ cl_mem_properties_intel properties[] = {
541+ CL_MEM_DEVICE_ID_INTEL, rootDeviceId,
542+ 0 };
543+
544+ EXPECT_TRUE (ClMemoryPropertiesHelper::parseMemoryProperties (properties, memoryProperties, flags, flagsIntel, allocflags,
545+ MemoryPropertiesHelper::ObjType::UNKNOWN, context));
546+ EXPECT_EQ (0b11u , memoryProperties.pDevice ->getDeviceBitfield ().to_ulong ());
547+ EXPECT_EQ (&context.pRootDevice ->getDevice (), memoryProperties.pDevice );
548+ }
549+
550+ TEST_F (MemoryPropertiesHelperTests, givenSubDeviceIdWhenParsingExtraMemoryPropertiesThenValuesAreProperlySet) {
551+ cl_mem_properties_intel properties[] = {
552+ CL_MEM_DEVICE_ID_INTEL, subDevice1Id,
553+ 0 };
554+
555+ EXPECT_TRUE (ClMemoryPropertiesHelper::parseMemoryProperties (properties, memoryProperties, flags, flagsIntel, allocflags,
556+ MemoryPropertiesHelper::ObjType::UNKNOWN, context));
557+ EXPECT_EQ (0b10u , memoryProperties.pDevice ->getDeviceBitfield ().to_ulong ());
558+ EXPECT_EQ (&context.pSubDevice1 ->getDevice (), memoryProperties.pDevice );
559+ }
0 commit comments