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