Return error from DeviceImp::createImage call when images are not supported

Signed-off-by: John Falkowski <john.falkowski@intel.com>
This commit is contained in:
John Falkowski 2022-11-07 15:26:56 +00:00 committed by Compute-Runtime-Automation
parent 623c9afdfa
commit 6b64c1b04b
2 changed files with 24 additions and 0 deletions

View File

@ -352,6 +352,12 @@ ze_result_t DeviceImp::getCommandQueueGroupProperties(uint32_t *pCount,
ze_result_t DeviceImp::createImage(const ze_image_desc_t *desc, ze_image_handle_t *phImage) {
auto productFamily = neoDevice->getHardwareInfo().platform.eProductFamily;
Image *pImage = nullptr;
if (neoDevice->getDeviceInfo().imageSupport == false) {
*phImage = nullptr;
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
}
auto result = Image::create(productFamily, this, desc, &pImage);
if (result == ZE_RESULT_SUCCESS) {
*phImage = pImage->toHandle();

View File

@ -3478,6 +3478,24 @@ TEST(zeDevice, givenNoImagesSupportedWhenGettingImagePropertiesThenZeroValuesAre
EXPECT_EQ(0u, properties.maxWriteImageArgs);
}
TEST(zeDevice, givenNoImagesSupportedWhenCreatingImageErrorReturns) {
ze_result_t errorValue;
DriverHandleImp driverHandle{};
NEO::MockDevice *neoDevice = (NEO::MockDevice::createWithNewExecutionEnvironment<NEO::MockDevice>(NEO::defaultHwInfo.get(), 0));
auto device = std::unique_ptr<L0::Device>(Device::create(&driverHandle, neoDevice, false, &errorValue));
ze_image_handle_t image = {};
ze_image_desc_t desc = {};
desc.stype = ZE_STRUCTURE_TYPE_IMAGE_DESC;
neoDevice->deviceInfo.imageSupport = false;
auto result = device->createImage(&desc, &image);
EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, result);
EXPECT_EQ(nullptr, image);
}
class MockCacheReservation : public CacheReservation {
public:
~MockCacheReservation() override = default;