@@ -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