Skip to content

Commit df4c6c7

Browse files
Add VME support to device caps
Change-Id: I5af819c24f2361b81ee614b2007bde7fa2a84713
1 parent ce75767 commit df4c6c7

File tree

10 files changed

+87
-10
lines changed

10 files changed

+87
-10
lines changed

runtime/device/device_caps.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ void Device::initializeCaps() {
138138
deviceInfo.platformLP = (hwInfo.capabilityTable.clVersionSupport == 12) ? true : false;
139139
deviceInfo.cpuCopyAllowed = true;
140140
deviceInfo.spirVersions = spirVersions.c_str();
141+
auto supportsVme = hwInfo.capabilityTable.supportsVme;
141142

142143
if (enabledClVersion >= 21) {
143144
deviceInfo.independentForwardProgress = true;
@@ -159,11 +160,11 @@ void Device::initializeCaps() {
159160
deviceExtensions += "cl_intel_packed_yuv ";
160161
deviceInfo.packedYuvExtension = true;
161162
}
162-
if (DebugManager.flags.EnableIntelVme.get()) {
163+
if (DebugManager.flags.EnableIntelVme.get() && supportsVme) {
163164
deviceExtensions += "cl_intel_motion_estimation ";
164165
deviceInfo.vmeExtension = true;
165166
}
166-
if (DebugManager.flags.EnableIntelAdvancedVme.get()) {
167+
if (DebugManager.flags.EnableIntelAdvancedVme.get() && supportsVme) {
167168
deviceExtensions += "cl_intel_advanced_motion_estimation ";
168169
}
169170

runtime/gen10/hw_info_cnl.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ const RuntimeCapabilityTable CNL::capabilityTable{0,
6262
true, // sourceLevelDebuggerSupported
6363
CmdServicesMemTraceVersion::DeviceValues::Cnl,
6464
0, // extraQuantityThreadsPerEU
65+
true, // SupportsVme
6566
MemoryConstants::max48BitAddress}; // gpuAddressSpace
6667

6768
const HardwareInfo CNL_2x5x8::hwInfo = {

runtime/gen8/hw_info_bdw.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ const RuntimeCapabilityTable BDW::capabilityTable{0,
6363
false, // sourceLevelDebuggerSupported
6464
CmdServicesMemTraceVersion::DeviceValues::Bdw,
6565
0, // extraQuantityThreadsPerEU
66+
true, // SupportsVme
6667
MemoryConstants::max48BitAddress}; // gpuAddressSpace
6768

6869
const HardwareInfo BDW_1x2x6::hwInfo = {

runtime/gen9/hw_info_bxt.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ const RuntimeCapabilityTable BXT::capabilityTable{0,
6060
true, // sourceLevelDebuggerSupported
6161
CmdServicesMemTraceVersion::DeviceValues::Bxt,
6262
0, // extraQuantityThreadsPerEU
63+
true, // SupportsVme
6364
MemoryConstants::max48BitAddress}; // gpuAddressSpace
6465

6566
const HardwareInfo BXT_1x2x6::hwInfo = {

runtime/gen9/hw_info_cfl.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ const RuntimeCapabilityTable CFL::capabilityTable{0,
5555
true, // sourceLevelDebuggerSupported
5656
CmdServicesMemTraceVersion::DeviceValues::Cfl,
5757
0, // extraQuantityThreadsPerEU
58+
true, // SupportsVme
5859
MemoryConstants::max48BitAddress}; // gpuAddressSpace
5960

6061
const HardwareInfo CFL_1x2x6::hwInfo = {

runtime/gen9/hw_info_glk.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ const RuntimeCapabilityTable GLK::capabilityTable{0,
5555
true, // sourceLevelDebuggerSupported
5656
CmdServicesMemTraceVersion::DeviceValues::Glk,
5757
0, // extraQuantityThreadsPerEU
58+
true, // SupportsVme
5859
MemoryConstants::max48BitAddress}; // gpuAddressSpace
5960

6061
const HardwareInfo GLK_1x3x6::hwInfo = {

runtime/gen9/hw_info_kbl.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ const RuntimeCapabilityTable KBL::capabilityTable{0,
5555
true, // sourceLevelDebuggerSupported
5656
CmdServicesMemTraceVersion::DeviceValues::Kbl,
5757
0, // extraQuantityThreadsPerEU
58+
true, // SupportsVme
5859
MemoryConstants::max48BitAddress}; // gpuAddressSpace
5960

6061
const HardwareInfo KBL_1x2x6::hwInfo = {

runtime/gen9/hw_info_skl.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ const RuntimeCapabilityTable SKL::capabilityTable{0,
6363
true, // sourceLevelDebuggerSupported
6464
CmdServicesMemTraceVersion::DeviceValues::Skl,
6565
0, // extraQuantityThreadsPerEU
66+
true, // SupportsVme
6667
MemoryConstants::max48BitAddress}; // gpuAddressSpace
6768

6869
const HardwareInfo SKL_1x2x6::hwInfo = {

runtime/helpers/hw_info.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ struct RuntimeCapabilityTable {
6464
uint32_t aubDeviceId;
6565

6666
uint32_t extraQuantityThreadsPerEU;
67+
bool supportsVme;
6768
uint64_t gpuAddressSpace;
6869
};
6970

unit_tests/device/device_caps_tests.cpp

Lines changed: 76 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -425,9 +425,11 @@ TEST(Device_GetCaps, givenEnablePackedYuvsetToTrueWhenCapsAreCreatedThenDeviceRe
425425
DebugManager.flags.EnablePackedYuv.set(false);
426426
}
427427

428-
TEST(Device_GetCaps, givenEnableVmeSetToTrueWhenCapsAreCreatedThenDeviceReportsVmeExtensionAndBuiltins) {
428+
TEST(Device_GetCaps, givenEnableVmeSetToTrueAndDeviceSupportsVmeWhenCapsAreCreatedThenDeviceReportsVmeExtensionAndBuiltins) {
429429
DebugManager.flags.EnableIntelVme.set(true);
430-
auto device = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(platformDevices[0]));
430+
auto hwInfo = *platformDevices[0];
431+
hwInfo.capabilityTable.supportsVme = true;
432+
auto device = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hwInfo));
431433
const auto &caps = device->getDeviceInfo();
432434

433435
EXPECT_THAT(caps.deviceExtensions, testing::HasSubstr(std::string("cl_intel_motion_estimation")));
@@ -438,9 +440,41 @@ TEST(Device_GetCaps, givenEnableVmeSetToTrueWhenCapsAreCreatedThenDeviceReportsV
438440
DebugManager.flags.EnableIntelVme.set(false);
439441
}
440442

441-
TEST(Device_GetCaps, givenEnableVmeSetToFalseWhenCapsAreCreatedThenDeviceDoesNotReportsVmeExtensionAndBuiltins) {
443+
TEST(Device_GetCaps, givenEnableVmeSetToTrueAndDeviceDoesNotSupportVmeWhenCapsAreCreatedThenDeviceDoesNotReportVmeExtensionAndBuiltins) {
444+
DebugManager.flags.EnableIntelVme.set(true);
445+
auto hwInfo = *platformDevices[0];
446+
hwInfo.capabilityTable.supportsVme = false;
447+
auto device = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hwInfo));
448+
const auto &caps = device->getDeviceInfo();
449+
450+
EXPECT_THAT(caps.deviceExtensions, testing::Not(testing::HasSubstr(std::string("cl_intel_motion_estimation"))));
451+
EXPECT_FALSE(caps.vmeExtension);
452+
453+
EXPECT_THAT(caps.builtInKernels, testing::Not(testing::HasSubstr("block_motion_estimate_intel")));
454+
442455
DebugManager.flags.EnableIntelVme.set(false);
443-
auto device = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(platformDevices[0]));
456+
}
457+
458+
TEST(Device_GetCaps, givenEnableVmeSetToFalseAndDeviceDoesNotSupportVmeWhenCapsAreCreatedThenDeviceDoesNotReportVmeExtensionAndBuiltins) {
459+
DebugManager.flags.EnableIntelVme.set(false);
460+
auto hwInfo = *platformDevices[0];
461+
hwInfo.capabilityTable.supportsVme = false;
462+
auto device = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hwInfo));
463+
const auto &caps = device->getDeviceInfo();
464+
465+
EXPECT_THAT(caps.deviceExtensions, testing::Not(testing::HasSubstr(std::string("cl_intel_motion_estimation"))));
466+
EXPECT_FALSE(caps.vmeExtension);
467+
468+
EXPECT_THAT(caps.builtInKernels, testing::Not(testing::HasSubstr("block_motion_estimate_intel")));
469+
470+
DebugManager.flags.EnableIntelVme.set(false);
471+
}
472+
473+
TEST(Device_GetCaps, givenEnableVmeSetToFalseAndDeviceSupportsVmeWhenCapsAreCreatedThenDeviceDoesNotReportVmeExtensionAndBuiltins) {
474+
DebugManager.flags.EnableIntelVme.set(false);
475+
auto hwInfo = *platformDevices[0];
476+
hwInfo.capabilityTable.supportsVme = true;
477+
auto device = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hwInfo));
444478
const auto &caps = device->getDeviceInfo();
445479

446480
EXPECT_THAT(caps.deviceExtensions, testing::Not(testing::HasSubstr(std::string("cl_intel_motion_estimation"))));
@@ -451,9 +485,11 @@ TEST(Device_GetCaps, givenEnableVmeSetToFalseWhenCapsAreCreatedThenDeviceDoesNot
451485
DebugManager.flags.EnableIntelVme.set(false);
452486
}
453487

454-
TEST(Device_GetCaps, givenEnableAdvancedVmeSetToTrueWhenCapsAreCreatedThenDeviceReportsAdvancedVmeExtensionAndBuiltins) {
488+
TEST(Device_GetCaps, givenEnableAdvancedVmeSetToTrueAndDeviceSupportsVmeWhenCapsAreCreatedThenDeviceReportsAdvancedVmeExtensionAndBuiltins) {
455489
DebugManager.flags.EnableIntelAdvancedVme.set(true);
456-
auto device = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(platformDevices[0]));
490+
auto hwInfo = *platformDevices[0];
491+
hwInfo.capabilityTable.supportsVme = true;
492+
auto device = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hwInfo));
457493
const auto &caps = device->getDeviceInfo();
458494

459495
EXPECT_THAT(caps.deviceExtensions, testing::HasSubstr(std::string("cl_intel_advanced_motion_estimation")));
@@ -464,9 +500,41 @@ TEST(Device_GetCaps, givenEnableAdvancedVmeSetToTrueWhenCapsAreCreatedThenDevice
464500
DebugManager.flags.EnableIntelAdvancedVme.set(false);
465501
}
466502

467-
TEST(Device_GetCaps, givenEnableAdvancedVmeSetToFalseWhenCapsAreCreatedThenDeviceDoesNotReportsAdvancedVmeExtensionAndBuiltins) {
503+
TEST(Device_GetCaps, givenEnableAdvancedVmeSetToTrueAndDeviceDoesNotSupportVmeWhenCapsAreCreatedThenDeviceDoesNotReportAdvancedVmeExtensionAndBuiltins) {
504+
DebugManager.flags.EnableIntelAdvancedVme.set(true);
505+
auto hwInfo = *platformDevices[0];
506+
hwInfo.capabilityTable.supportsVme = false;
507+
auto device = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hwInfo));
508+
const auto &caps = device->getDeviceInfo();
509+
510+
EXPECT_THAT(caps.deviceExtensions, testing::Not(testing::HasSubstr(std::string("cl_intel_advanced_motion_estimation"))));
511+
512+
EXPECT_THAT(caps.builtInKernels, testing::Not(testing::HasSubstr("block_advanced_motion_estimate_check_intel")));
513+
EXPECT_THAT(caps.builtInKernels, testing::Not(testing::HasSubstr("block_advanced_motion_estimate_bidirectional_check_intel")));
514+
468515
DebugManager.flags.EnableIntelAdvancedVme.set(false);
469-
auto device = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(platformDevices[0]));
516+
}
517+
518+
TEST(Device_GetCaps, givenEnableAdvancedVmeSetToFalseAndDeviceDoesNotSupportVmeWhenCapsAreCreatedThenDeviceDoesNotReportAdvancedVmeExtensionAndBuiltins) {
519+
DebugManager.flags.EnableIntelAdvancedVme.set(false);
520+
auto hwInfo = *platformDevices[0];
521+
hwInfo.capabilityTable.supportsVme = false;
522+
auto device = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hwInfo));
523+
const auto &caps = device->getDeviceInfo();
524+
525+
EXPECT_THAT(caps.deviceExtensions, testing::Not(testing::HasSubstr(std::string("cl_intel_advanced_motion_estimation"))));
526+
527+
EXPECT_THAT(caps.builtInKernels, testing::Not(testing::HasSubstr("block_advanced_motion_estimate_check_intel")));
528+
EXPECT_THAT(caps.builtInKernels, testing::Not(testing::HasSubstr("block_advanced_motion_estimate_bidirectional_check_intel")));
529+
530+
DebugManager.flags.EnableIntelAdvancedVme.set(false);
531+
}
532+
533+
TEST(Device_GetCaps, givenEnableAdvancedVmeSetToFalseAndDeviceSupportsVmeWhenCapsAreCreatedThenDeviceDoesNotReportAdvancedVmeExtensionAndBuiltins) {
534+
DebugManager.flags.EnableIntelAdvancedVme.set(false);
535+
auto hwInfo = *platformDevices[0];
536+
hwInfo.capabilityTable.supportsVme = true;
537+
auto device = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hwInfo));
470538
const auto &caps = device->getDeviceInfo();
471539

472540
EXPECT_THAT(caps.deviceExtensions, testing::Not(testing::HasSubstr(std::string("cl_intel_advanced_motion_estimation"))));

0 commit comments

Comments
 (0)