@@ -39,16 +39,19 @@ ur_result_t ze2urImageFormat(const ze_image_desc_t *ZeImageDesc,
39
39
switch (ZeImageFormat.layout ) {
40
40
case ZE_IMAGE_FORMAT_LAYOUT_8:
41
41
case ZE_IMAGE_FORMAT_LAYOUT_8_8:
42
+ case ZE_IMAGE_FORMAT_LAYOUT_8_8_8:
42
43
case ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8:
43
44
ZeImageFormatTypeSize = 8 ;
44
45
break ;
45
46
case ZE_IMAGE_FORMAT_LAYOUT_16:
46
47
case ZE_IMAGE_FORMAT_LAYOUT_16_16:
48
+ case ZE_IMAGE_FORMAT_LAYOUT_16_16_16:
47
49
case ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16:
48
50
ZeImageFormatTypeSize = 16 ;
49
51
break ;
50
52
case ZE_IMAGE_FORMAT_LAYOUT_32:
51
53
case ZE_IMAGE_FORMAT_LAYOUT_32_32:
54
+ case ZE_IMAGE_FORMAT_LAYOUT_32_32_32:
52
55
case ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32:
53
56
ZeImageFormatTypeSize = 32 ;
54
57
break ;
@@ -100,7 +103,30 @@ ur_result_t ze2urImageFormat(const ze_image_desc_t *ZeImageDesc,
100
103
default :
101
104
logger::error (
102
105
" 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" );
104
130
return UR_RESULT_ERROR_INVALID_VALUE;
105
131
}
106
132
break ;
@@ -305,6 +331,24 @@ ur_result_t ur2zeImageDesc(const ur_image_format_t *ImageFormat,
305
331
}
306
332
break ;
307
333
}
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
+ }
308
352
default :
309
353
logger::error (" format channel order = {}" , ImageFormat->channelOrder );
310
354
die (" ur2zeImageDesc: unsupported image channel order\n " );
0 commit comments