Skip to content

Commit 897bcfb

Browse files
Merge pull request #2022 from nrspruit/add_3_channel_image_support
[L0] Add 3-channel image support
2 parents 1851492 + 71cdf25 commit 897bcfb

File tree

1 file changed

+45
-1
lines changed

1 file changed

+45
-1
lines changed

source/adapters/level_zero/image.cpp

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,19 @@ ur_result_t ze2urImageFormat(const ze_image_desc_t *ZeImageDesc,
3939
switch (ZeImageFormat.layout) {
4040
case ZE_IMAGE_FORMAT_LAYOUT_8:
4141
case ZE_IMAGE_FORMAT_LAYOUT_8_8:
42+
case ZE_IMAGE_FORMAT_LAYOUT_8_8_8:
4243
case ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8:
4344
ZeImageFormatTypeSize = 8;
4445
break;
4546
case ZE_IMAGE_FORMAT_LAYOUT_16:
4647
case ZE_IMAGE_FORMAT_LAYOUT_16_16:
48+
case ZE_IMAGE_FORMAT_LAYOUT_16_16_16:
4749
case ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16:
4850
ZeImageFormatTypeSize = 16;
4951
break;
5052
case ZE_IMAGE_FORMAT_LAYOUT_32:
5153
case ZE_IMAGE_FORMAT_LAYOUT_32_32:
54+
case ZE_IMAGE_FORMAT_LAYOUT_32_32_32:
5255
case ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32:
5356
ZeImageFormatTypeSize = 32;
5457
break;
@@ -100,7 +103,30 @@ ur_result_t ze2urImageFormat(const ze_image_desc_t *ZeImageDesc,
100103
default:
101104
logger::error(
102105
"ze2urImageFormat: unexpected image format channel y: y = {}\n",
103-
ZeImageFormat.x);
106+
ZeImageFormat.y);
107+
return UR_RESULT_ERROR_INVALID_VALUE;
108+
}
109+
break;
110+
case ZE_IMAGE_FORMAT_LAYOUT_8_8_8:
111+
case ZE_IMAGE_FORMAT_LAYOUT_16_16_16:
112+
case ZE_IMAGE_FORMAT_LAYOUT_32_32_32:
113+
if (ZeImageFormat.x == ZE_IMAGE_FORMAT_SWIZZLE_R &&
114+
ZeImageFormat.y == ZE_IMAGE_FORMAT_SWIZZLE_G) {
115+
switch (ZeImageFormat.z) {
116+
case ZE_IMAGE_FORMAT_SWIZZLE_B:
117+
ChannelOrder = UR_IMAGE_CHANNEL_ORDER_RGB;
118+
break;
119+
case ZE_IMAGE_FORMAT_SWIZZLE_X:
120+
ChannelOrder = UR_IMAGE_CHANNEL_ORDER_RGX;
121+
break;
122+
default:
123+
logger::error(
124+
"ze2urImageFormat: unexpected image format channel z: z = {}\n",
125+
ZeImageFormat.z);
126+
return UR_RESULT_ERROR_INVALID_VALUE;
127+
}
128+
} else {
129+
logger::error("ze2urImageFormat: unexpected image format channel");
104130
return UR_RESULT_ERROR_INVALID_VALUE;
105131
}
106132
break;
@@ -305,6 +331,24 @@ ur_result_t ur2zeImageDesc(const ur_image_format_t *ImageFormat,
305331
}
306332
break;
307333
}
334+
case UR_IMAGE_CHANNEL_ORDER_RGB:
335+
case UR_IMAGE_CHANNEL_ORDER_RGX: {
336+
switch (ZeImageFormatTypeSize) {
337+
case 8:
338+
ZeImageFormatLayout = ZE_IMAGE_FORMAT_LAYOUT_8_8_8;
339+
break;
340+
case 16:
341+
ZeImageFormatLayout = ZE_IMAGE_FORMAT_LAYOUT_16_16_16;
342+
break;
343+
case 32:
344+
ZeImageFormatLayout = ZE_IMAGE_FORMAT_LAYOUT_32_32_32;
345+
break;
346+
default:
347+
logger::error("ur2zeImageDesc: unexpected data type size");
348+
return UR_RESULT_ERROR_INVALID_VALUE;
349+
}
350+
break;
351+
}
308352
default:
309353
logger::error("format channel order = {}", ImageFormat->channelOrder);
310354
die("ur2zeImageDesc: unsupported image channel order\n");

0 commit comments

Comments
 (0)