@@ -210,11 +210,14 @@ TEST(MemoryProperties, givenClUncompressedHintFlagWhenCreateMemoryPropertiesThen
210
210
}
211
211
212
212
struct MemoryPropertiesHelperTests : ::testing::Test {
213
- MockContext context;
213
+ MockUnrestrictiveContext context;
214
214
MemoryProperties memoryProperties;
215
215
cl_mem_flags flags = 0 ;
216
216
cl_mem_flags_intel flagsIntel = 0 ;
217
217
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));
218
221
};
219
222
220
223
TEST_F (MemoryPropertiesHelperTests, givenNullPropertiesWhenParsingMemoryPropertiesThenTrueIsReturned) {
@@ -244,6 +247,8 @@ TEST_F(MemoryPropertiesHelperTests, givenValidPropertiesWhenParsingMemoryPropert
244
247
CL_MEM_UNCOMPRESSED_HINT_INTEL,
245
248
CL_MEM_ALLOC_FLAGS_INTEL,
246
249
CL_MEM_ALLOC_WRITE_COMBINED_INTEL, CL_MEM_ALLOC_DEFAULT_INTEL,
250
+ CL_MEM_DEVICE_ID_INTEL,
251
+ rootDeviceId,
247
252
0 };
248
253
249
254
EXPECT_TRUE (ClMemoryPropertiesHelper::parseMemoryProperties (properties, memoryProperties, flags, flagsIntel, allocflags,
@@ -510,3 +515,45 @@ TEST_F(MemoryPropertiesHelperTests, WhenCallingSetInitialPlacementThenCorrectVal
510
515
EXPECT_EQ (initialPlacement, allocationProperties.usmInitialPlacement );
511
516
}
512
517
}
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