diff --git a/level_zero/core/source/device/device_imp.cpp b/level_zero/core/source/device/device_imp.cpp index 9b608e2082..4b0f45337d 100644 --- a/level_zero/core/source/device/device_imp.cpp +++ b/level_zero/core/source/device/device_imp.cpp @@ -171,6 +171,10 @@ ze_result_t DeviceImp::createImage(const ze_image_desc_t *desc, ze_image_handle_ auto productFamily = neoDevice->getHardwareInfo().platform.eProductFamily; *phImage = Image::create(productFamily, this, desc); + if (!*phImage) { + return ZE_RESULT_ERROR_UNSUPPORTED_IMAGE_FORMAT; + } + return ZE_RESULT_SUCCESS; } diff --git a/level_zero/core/test/unit_tests/sources/image/test_image.cpp b/level_zero/core/test/unit_tests/sources/image/test_image.cpp index 1a77f0805d..266dfa268e 100644 --- a/level_zero/core/test/unit_tests/sources/image/test_image.cpp +++ b/level_zero/core/test/unit_tests/sources/image/test_image.cpp @@ -112,6 +112,23 @@ HWTEST2_F(ImageCreate, givenValidImageDescriptionWhenImageCreateThenImageIsCreat EXPECT_EQ(imageInfo.useLocalMemory, false); } +HWTEST2_F(ImageCreate, givenValidImageDescriptionWhenImageCreateWithUnsupportedImageThenNullPtrImageIsReturned, ImageSupport) { + ze_image_desc_t zeDesc = {}; + zeDesc.arraylevels = 1u; + zeDesc.depth = 1u; + zeDesc.height = 1u; + zeDesc.width = 1u; + zeDesc.miplevels = 1u; + zeDesc.type = ZE_IMAGE_TYPE_2DARRAY; + zeDesc.flags = ZE_IMAGE_FLAG_BIAS_UNCACHED; + + zeDesc.format = {ZE_IMAGE_FORMAT_LAYOUT_Y216}; + + std::unique_ptr image(Image::create(productFamily, device, &zeDesc)); + + ASSERT_EQ(image, nullptr); +} + class TestImageFormats : public DeviceFixture, public testing::TestWithParam> { public: void SetUp() override {