Skip to content

Commit ff79add

Browse files
committed
[L0] Add 3-channel image support
- add support for UR_IMAGE_CHANNEL_ORDER_RGB and UR_IMAGE_CHANNEL_ORDER_RGX Signed-off-by: Neil R. Spruit <neil.r.spruit@intel.com>
1 parent 35e4ba1 commit ff79add

File tree

1 file changed

+44
-1
lines changed

1 file changed

+44
-1
lines changed

source/adapters/level_zero/image.cpp

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,19 @@ ur_result_t ze2urImageFormat(const ze_image_desc_t *ZeImageDesc,
3737
switch (ZeImageFormat.layout) {
3838
case ZE_IMAGE_FORMAT_LAYOUT_8:
3939
case ZE_IMAGE_FORMAT_LAYOUT_8_8:
40+
case ZE_IMAGE_FORMAT_LAYOUT_8_8_8:
4041
case ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8:
4142
ZeImageFormatTypeSize = 8;
4243
break;
4344
case ZE_IMAGE_FORMAT_LAYOUT_16:
4445
case ZE_IMAGE_FORMAT_LAYOUT_16_16:
46+
case ZE_IMAGE_FORMAT_LAYOUT_16_16_16:
4547
case ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16:
4648
ZeImageFormatTypeSize = 16;
4749
break;
4850
case ZE_IMAGE_FORMAT_LAYOUT_32:
4951
case ZE_IMAGE_FORMAT_LAYOUT_32_32:
52+
case ZE_IMAGE_FORMAT_LAYOUT_32_32_32:
5053
case ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32:
5154
ZeImageFormatTypeSize = 32;
5255
break;
@@ -98,7 +101,29 @@ ur_result_t ze2urImageFormat(const ze_image_desc_t *ZeImageDesc,
98101
default:
99102
logger::error(
100103
"ze2urImageFormat: unexpected image format channel y: y = {}\n",
101-
ZeImageFormat.x);
104+
ZeImageFormat.y);
105+
return UR_RESULT_ERROR_INVALID_VALUE;
106+
}
107+
break;
108+
case ZE_IMAGE_FORMAT_LAYOUT_8_8_8:
109+
case ZE_IMAGE_FORMAT_LAYOUT_16_16_16:
110+
case ZE_IMAGE_FORMAT_LAYOUT_32_32_32:
111+
if (ZeImageFormat.x != ZE_IMAGE_FORMAT_SWIZZLE_R &&
112+
ZeImageFormat.y != ZE_IMAGE_FORMAT_SWIZZLE_G) {
113+
logger::error("ze2urImageFormat: unexpected image format channel");
114+
return UR_RESULT_ERROR_INVALID_VALUE;
115+
}
116+
switch (ZeImageFormat.z) {
117+
case ZE_IMAGE_FORMAT_SWIZZLE_B:
118+
ChannelOrder = UR_IMAGE_CHANNEL_ORDER_RGB;
119+
break;
120+
case ZE_IMAGE_FORMAT_SWIZZLE_X:
121+
ChannelOrder = UR_IMAGE_CHANNEL_ORDER_RGX;
122+
break;
123+
default:
124+
logger::error(
125+
"ze2urImageFormat: unexpected image format channel z: z = {}\n",
126+
ZeImageFormat.z);
102127
return UR_RESULT_ERROR_INVALID_VALUE;
103128
}
104129
break;
@@ -303,6 +328,24 @@ ur_result_t ur2zeImageDesc(const ur_image_format_t *ImageFormat,
303328
}
304329
break;
305330
}
331+
case UR_IMAGE_CHANNEL_ORDER_RGB:
332+
case UR_IMAGE_CHANNEL_ORDER_RGX: {
333+
switch (ZeImageFormatTypeSize) {
334+
case 8:
335+
ZeImageFormatLayout = ZE_IMAGE_FORMAT_LAYOUT_8_8_8;
336+
break;
337+
case 16:
338+
ZeImageFormatLayout = ZE_IMAGE_FORMAT_LAYOUT_16_16_16;
339+
break;
340+
case 32:
341+
ZeImageFormatLayout = ZE_IMAGE_FORMAT_LAYOUT_32_32_32;
342+
break;
343+
default:
344+
logger::error("ur2zeImageDesc: unexpected data type size");
345+
return UR_RESULT_ERROR_INVALID_VALUE;
346+
}
347+
break;
348+
}
306349
default:
307350
logger::error("format channel order = {}", ImageFormat->channelOrder);
308351
die("ur2zeImageDesc: unsupported image channel order\n");

0 commit comments

Comments
 (0)