diff --git a/runtime/device/device_caps.cpp b/runtime/device/device_caps.cpp index 6f44f15c12..f4de341a5c 100644 --- a/runtime/device/device_caps.cpp +++ b/runtime/device/device_caps.cpp @@ -130,6 +130,9 @@ void Device::initializeCaps() { if (supportsVme) { deviceExtensions += "cl_intel_spirv_device_side_avc_motion_estimation "; } + if (hwInfo.capabilityTable.supportsImages) { + deviceExtensions += "cl_intel_spirv_media_block_io "; + } deviceExtensions += "cl_intel_spirv_subgroups "; deviceExtensions += "cl_khr_spirv_no_integer_wrap_decoration "; } else { diff --git a/unit_tests/device/device_caps_tests.cpp b/unit_tests/device/device_caps_tests.cpp index 4a56359e63..e1bb7c5417 100644 --- a/unit_tests/device/device_caps_tests.cpp +++ b/unit_tests/device/device_caps_tests.cpp @@ -413,10 +413,35 @@ TEST_F(DeviceGetCapsTest, givenOpenCLVersion21WhenCapsAreCreatedThenDeviceReport } else { EXPECT_THAT(caps.deviceExtensions, testing::Not(testing::HasSubstr(std::string("cl_intel_spirv_device_side_avc_motion_estimation")))); } + if (hwInfo->capabilityTable.supportsImages) { + EXPECT_THAT(caps.deviceExtensions, testing::HasSubstr(std::string("cl_intel_spirv_media_block_io"))); + } else { + EXPECT_THAT(caps.deviceExtensions, testing::Not(testing::HasSubstr(std::string("cl_intel_spirv_media_block_io")))); + } EXPECT_THAT(caps.deviceExtensions, testing::HasSubstr(std::string("cl_intel_spirv_subgroups"))); EXPECT_THAT(caps.deviceExtensions, testing::HasSubstr(std::string("cl_khr_spirv_no_integer_wrap_decoration"))); } +TEST_F(DeviceGetCapsTest, givenSupportImagesWhenCapsAreCreatedThenDeviceReportsClIntelSpirvMediaBlockIoExtensions) { + DebugManagerStateRestore dbgRestorer; + DebugManager.flags.ForceOCLVersion.set(21); + HardwareInfo hwInfo = *platformDevices[0]; + hwInfo.capabilityTable.supportsImages = true; + std::unique_ptr device(MockDevice::createWithNewExecutionEnvironment(&hwInfo)); + const auto &caps = device->getDeviceInfo(); + EXPECT_THAT(caps.deviceExtensions, testing::HasSubstr(std::string("cl_intel_spirv_media_block_io"))); +} + +TEST_F(DeviceGetCapsTest, givenNotSupportImagesWhenCapsAreCreatedThenDeviceNotReportsClIntelSpirvMediaBlockIoExtensions) { + DebugManagerStateRestore dbgRestorer; + DebugManager.flags.ForceOCLVersion.set(21); + HardwareInfo hwInfo = *platformDevices[0]; + hwInfo.capabilityTable.supportsImages = false; + std::unique_ptr device(MockDevice::createWithNewExecutionEnvironment(&hwInfo)); + const auto &caps = device->getDeviceInfo(); + EXPECT_THAT(caps.deviceExtensions, testing::Not(testing::HasSubstr(std::string("cl_intel_spirv_media_block_io")))); +} + TEST_F(DeviceGetCapsTest, givenOpenCLVersion12WhenCapsAreCreatedThenDeviceDoesntReportClIntelSpirvExtensions) { DebugManagerStateRestore dbgRestorer; DebugManager.flags.ForceOCLVersion.set(12);