diff --git a/rocclr/runtime/device/pal/paldevice.hpp b/rocclr/runtime/device/pal/paldevice.hpp index b22ed66230..191d27aa93 100644 --- a/rocclr/runtime/device/pal/paldevice.hpp +++ b/rocclr/runtime/device/pal/paldevice.hpp @@ -482,7 +482,7 @@ class Device : public NullDevice { bool initGLInteropPrivateExt(void* GLplatformContext, void* GLdeviceContext) const; bool glCanInterop(void* GLplatformContext, void* GLdeviceContext) const; bool resGLAssociate(void* GLContext, uint name, uint type, void** handle, void** mbResHandle, - size_t* offset, uint& glFormat + size_t* offset, cl_image_format& newClFormat #ifdef ATI_OS_WIN , Pal::DoppDesktopInfo& doppDesktopInfo diff --git a/rocclr/runtime/device/pal/paldevicegl.cpp b/rocclr/runtime/device/pal/paldevicegl.cpp index e3ed052f72..764556b50d 100644 --- a/rocclr/runtime/device/pal/paldevicegl.cpp +++ b/rocclr/runtime/device/pal/paldevicegl.cpp @@ -47,6 +47,483 @@ static PFNWGLGETCONTEXTGPUINFOAMD wglGetContextGPUInfoAMD = NULL; namespace pal { +// +/// GSL Surface Formats as per defined in cmSurfFmtEnum enum in //depot/stg/ugl/drivers/ugl/src/include/cm_enum.h +// +typedef enum cmSurfFmtEnum { + CM_SURF_FMT_NOOVERRIDE = -1, + CM_SURF_FMT_LUMINANCE8, ///< Luminance, 8 bits per element packed as (@c LLLLLLLL) + CM_SURF_FMT_LUMINANCE16, ///< Luminance, 16 bits per element packed as (@c LLLLLLLLLLLLLLLL) + CM_SURF_FMT_LUMINANCE16F, ///< Luminance, 16 bits per element packed as (@c LLLLLLLLLLLLLLLL) + CM_SURF_FMT_LUMINANCE32F, ///< Luminance, 32 bits per element packed as (@c LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL) + CM_SURF_FMT_INTENSITY8, ///< Intensity, 8 bits per element packed as (@c IIIIIIII) + CM_SURF_FMT_INTENSITY16, ///< Intensity, 16 bits per element packed as (@c IIIIIIIIIIIIIIII) + CM_SURF_FMT_INTENSITY16F, ///< Intensity, 16 bits per element packed as (@c IIIIIIIIIIIIIIII) + CM_SURF_FMT_INTENSITY32F, ///< Intensity, 32 bits per element packed as (@c IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII) + CM_SURF_FMT_ALPHA8, ///< Alpha, 8 bits per element packed as (@c AAAAAAAA) + CM_SURF_FMT_ALPHA16, ///< Alpha, 16 bits per element packed as (@c AAAAAAAAAAAAAAAA) + CM_SURF_FMT_ALPHA16F, ///< Alpha, 16 bits per element packed as (@c AAAAAAAAAAAAAAAA) + CM_SURF_FMT_ALPHA32F, ///< Alpha, 32 bits per element packed as (@c AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) + CM_SURF_FMT_LUMINANCE8_ALPHA8, ///< Luminance Alpha, 16 bits per element packed as (@c AAAAAAAALLLLLLLL) + CM_SURF_FMT_LUMINANCE16_ALPHA16, ///< Luminance Alpha, 32 bits per element packed as (@c AAAAAAAAAAAAAAAALLLLLLLLLLLLLLLL) + CM_SURF_FMT_LUMINANCE16F_ALPHA16F, ///< Luminance Alpha, 32 bits per element packed as (@c AAAAAAAAAAAAAAAALLLLLLLLLLLLLLLL) + CM_SURF_FMT_LUMINANCE32F_ALPHA32F, ///< Luminance Alpha, 64 bits per element packed as (@c AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL) + CM_SURF_FMT_B2_G3_R3, ///< RGB, 8 bits per element packed as (@c RRRGGGBB) + CM_SURF_FMT_B5_G6_R5, ///< RGB, 16 bits per element packed as (@c RRRRRGGGGGGBBBBB) + CM_SURF_FMT_BGRX4, ///< RGB, 16 bits per element packed as (@c XXXXRRRRGGGGBBBB) + CM_SURF_FMT_BGR5_X1, ///< RGB, 16 bits per element packed as (@c XRRRRRGGGGGBBBBB) + CM_SURF_FMT_BGRX8, ///< RGB, 32 bits per element packed as (@c XXXXXXXXRRRRRRRRGGGGGGGGBBBBBBBB) - XXX unused by current driver + CM_SURF_FMT_BGR10_X2, ///< RGB, 32 bits per element packed as (@c XXRRRRRRRRRRGGGGGGGGGGBBBBBBBBBB) + CM_SURF_FMT_BGRX16, ///< RGB, 64 bits per element packed as (@c XXXXXXXXXXXXXXXXRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBB) + CM_SURF_FMT_BGRX16F, ///< RGB, 64 bits per element packed as (@c XXXXXXXXXXXXXXXXRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBB) + CM_SURF_FMT_BGRX32F, ///< RGB, 128 bits per element packed as (@c XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB) + CM_SURF_FMT_RGBX4, ///< RGB, 16 bits per element packed as (@c XXXXBBBBGGGGRRRR) + CM_SURF_FMT_RGB5_X1, ///< RGB, 16 bits per element packed as (@c XBBBBBGGGGGRRRRR) + CM_SURF_FMT_RGBX8, ///< RGB, 32 bits per element packed as (@c XXXXXXXXBBBBBBBBGGGGGGGGRRRRRRRR) + CM_SURF_FMT_RGB10_X2, ///< RGB, 32 bits per element packed as (@c XXBBBBBBBBBBGGGGGGGGGGRRRRRRRRRR) + CM_SURF_FMT_RGBX16, ///< RGB, 64 bits per element packed as (@c XXXXXXXXXXXXXXXXBBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRR) + CM_SURF_FMT_RGBX16F, ///< RGB, 64 bits per element packed as (@c XXXXXXXXXXXXXXXXBBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRR) + CM_SURF_FMT_RGBX32F, ///< RGB, 128 bits per element packed as (@c XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR) + CM_SURF_FMT_BGRA4, ///< RGBA, 16 bits per element packed as (@c AAAARRRRGGGGBBBB) + CM_SURF_FMT_BGR5_A1, ///< RGBA, 16 bits per element packed as (@c ARRRRRGGGGGBBBBB) + CM_SURF_FMT_BGRA8, ///< RGBA, 32 bits per element packed as (@c AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB) + CM_SURF_FMT_BGR10_A2, ///< RGBA, 32 bits per element packed as (@c AARRRRRRRRRRGGGGGGGGGGBBBBBBBBBB) + CM_SURF_FMT_BGRA16, ///< RGBA, 64 bits per element packed as (@c AAAAAAAAAAAAAAAARRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBB) + CM_SURF_FMT_BGRA16F, ///< RGBA, 64 bits per element packed as (@c AAAAAAAAAAAAAAAARRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBB) + CM_SURF_FMT_BGRA32F, ///< RGBA, 128 bits per element packed as (@c AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB) + CM_SURF_FMT_RGBA4, ///< RGBA, 16 bits per element packed as (@c AAAABBBBGGGGRRRR) + CM_SURF_FMT_RGB5_A1, ///< RGBA, 16 bits per element packed as (@c ABBBBBGGGGGRRRRR) + CM_SURF_FMT_RGBA8, ///< RGBA, 32 bits per element packed as (@c AAAAAAAABBBBBBBBGGGGGGGGRRRRRRRR) + CM_SURF_FMT_RGB10_A2, ///< RGBA, 32 bits per element packed as (@c AABBBBBBBBBBGGGGGGGGGGRRRRRRRRRR) + CM_SURF_FMT_RGBA16, ///< RGBA, 64 bits per element packed as (@c AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRR) + CM_SURF_FMT_RGBA16F, ///< RGBA, 64 bits per element packed as (@c AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRR) + CM_SURF_FMT_RGBA32I, ///< RGBA, 128 bits per element packed as (@c AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR) + CM_SURF_FMT_RGBA32F, ///< RGBA, 128 bits per element packed as (@c AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR) + CM_SURF_FMT_DUDV8, ///< DUDV 16 bits per element packed as (@c VVVVVVVVUUUUUUUU) + CM_SURF_FMT_DXT1, ///< compressed, DXT1 + CM_SURF_FMT_DXT2_3, ///< compressed, DXT2_3 + CM_SURF_FMT_DXT4_5, ///< compressed, DXT4_5 + CM_SURF_FMT_ATI1N, ///< compressed, 1 component + CM_SURF_FMT_ATI2N, ///< compressed, 2 component + CM_SURF_FMT_DEPTH16, ///< depth, 16 bits per element packed as (@c DDDDDDDDDDDDDDDD) + CM_SURF_FMT_DEPTH16F, ///< depth, 16 bits per element packed as (@c DDDDDDDDDDDDDDDD) + CM_SURF_FMT_DEPTH24_X8, ///< depth, 32 bits per element packed as (@c XXXXXXXXDDDDDDDDDDDDDDDDDDDDDDDD) + CM_SURF_FMT_DEPTH24F_X8, ///< depth, 32 bits per element packed as (@c SSSSSSSSDDDDDDDDDDDDDDDDDDDDDDDD) + CM_SURF_FMT_DEPTH24_STEN8, ///< depth + stencil, 32 bits per element packed as (@c SSSSSSSSDDDDDDDDDDDDDDDDDDDDDDDD) + CM_SURF_FMT_DEPTH24F_STEN8, ///< depth + stencil, 32 bits per element packed as (@c SSSSSSSSDDDDDDDDDDDDDDDDDDDDDDDD) + CM_SURF_FMT_DEPTH32F_X24_STEN8, ///< depth + stencil, 64 bits per element packed as (@c XXXXXXXXXXXXXXXXXXXXXXXXSSSSSSSSDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) + CM_SURF_FMT_DEPTH32F, ///< depth, 32 bits per element packed as (@c DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) + CM_SURF_FMT_sR11_sG11_sB10, ///< RGB, 32 bits per element packed as (@c RRRRRRRRRRRGGGGGGGGGGGBBBBBBBBBB) + CM_SURF_FMT_sU16, ///< + CM_SURF_FMT_sUV16, ///< + CM_SURF_FMT_sUVWQ16, ///< + CM_SURF_FMT_RG16, ///< RG, 32 bits per element packed as (@c RRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGG) + CM_SURF_FMT_RG16F, ///< RG, 32 bits per element packed as (@c RRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGG) + CM_SURF_FMT_RG32F, ///< RG, 64 bits per element packed as (@c RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG) + CM_SURF_FMT_ABGR4, ///< RGBA, 16 bits per element packed as (@c RRRRGGGGBBBBAAAA) + CM_SURF_FMT_A1_BGR5, ///< RGBA, 16 bits per element packed as (@c RRRRRGGGGGBBBBBA) + CM_SURF_FMT_ABGR8, ///< RGBA, 32 bits per element packed as (@c RRRRRRRRGGGGGGGGBBBBBBBBAAAAAAAA) + CM_SURF_FMT_A2_BGR10, ///< RGBA, 32 bits per element packed as (@c RRRRRRRRRRGGGGGGGGGGBBBBBBBBBBAA) + CM_SURF_FMT_ABGR16, ///< RGBA, 64 bits per element packed as (@c RRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA) + CM_SURF_FMT_ABGR16F, ///< RGBA, 64 bits per element packed as (@c RRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA) + CM_SURF_FMT_ABGR32F, ///< RGBA, 128 bits per element packed as (@c RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) + CM_SURF_FMT_DXT1A, + CM_SURF_FMT_sRGB10_A2, ///< RGBA, 32 bits per element packed as signed (@c AABBBBBBBBBBGGGGGGGGGGRRRRRRRRRR) + CM_SURF_FMT_sR8, ///< R, 8 bits per element packed as signed (@c RRRRRRRR) + CM_SURF_FMT_sRG8, ///< RG, 16 bits per element packed as signed (@c RRRRRRRRGGGGGGGG) + CM_SURF_FMT_sR32I, ///< R, 32 bits per element packed as signed (@c RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR) + CM_SURF_FMT_sRG32I, ///< RG, 64 bits per element packed as signed (@c RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG) + CM_SURF_FMT_sRGBA32I, ///< RGBA, 128 bits per element packed as signed (@c RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) + CM_SURF_FMT_R32I, ///< R, 32 bits per element packed as (@c RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR) + CM_SURF_FMT_RG32I, ///< RG, 64 bits per element packed as (@c RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG) + CM_SURF_FMT_RG8, ///< RG8, 16 bits per element packed as (@c RRRRRRRRGGGGGGGG) + CM_SURF_FMT_sRGBA8, ///< RGBA8, 32 bits per element packed as signed (@c RRRRRRRRGGGGGGGGBBBBBBBBAAAAAAAA) + CM_SURF_FMT_R11F_G11F_B10F, ///< RGB, 32 bits per element packed as (@c BBBBBBBBBBGGGGGGGGGGGRRRRRRRRRRR) + CM_SURF_FMT_RGB9_E5, ///< RGB, 32 bits per element packed as (@c EEEEEBBBBBBBBBGGGGGGGGGRRRRRRRRR) + CM_SURF_FMT_LUMINANCE_LATC1, ///< compressed LATC1 + CM_SURF_FMT_SIGNED_LUMINANCE_LATC1, ///< compressed signed LATC1 + CM_SURF_FMT_LUMINANCE_ALPHA_LATC2, ///< compressed LATC2 + CM_SURF_FMT_SIGNED_LUMINANCE_ALPHA_LATC2, ///< compressed signed LATC2 + CM_SURF_FMT_RED_RGTC1, ///< compressed RGTC1 + CM_SURF_FMT_SIGNED_RED_RGTC1, ///< compressed signed RGTC1 + CM_SURF_FMT_RED_GREEN_RGTC2, ///< compressed RGTC2 + CM_SURF_FMT_SIGNED_RED_GREEN_RGTC2, ///< compressed signed RGTC2 + CM_SURF_FMT_R8, ///< R, 8 bits per element packed (@c RRRRRRRR) + CM_SURF_FMT_R16, ///< R, 16 bits per element packed (@c RRRRRRRRRRRRRRRR) + CM_SURF_FMT_R16F, ///< R, 16 bits per element packed (@c RRRRRRRRRRRRRRRR) + CM_SURF_FMT_R32F, ///< R, 32 bits per element packed (@c RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR) + CM_SURF_FMT_R8I, ///< R, 8 bits per element packed (@c RRRRRRRR) + CM_SURF_FMT_sR8I, ///< R, 8 bits per element packed as signed (@c RRRRRRRR) + CM_SURF_FMT_RG8I, ///< RG, 16 bits per element packed (@c RRRRRRRRGGGGGGGG) + CM_SURF_FMT_sRG8I, ///< RG, 16 bits per element packed as signed (@c RRRRRRRRGGGGGGGG) + CM_SURF_FMT_R16I, ///< R, 16 bits per element packed (@c RRRRRRRRRRRRRRRR) + CM_SURF_FMT_sR16I, ///< R, 16 bits per element packed as signed (@c RRRRRRRRRRRRRRRR) + CM_SURF_FMT_RG16I, ///< RG, 32 bits per element packed (@c RRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGG) + CM_SURF_FMT_sRG16I, ///< RG, 32 bits per element packed as signed (@c RRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGG) + CM_SURF_FMT_RGBA32UI, ///< RGBA, 128 bits per element packed as (@c AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB) + CM_SURF_FMT_RGBX32UI, ///< RGBX, 128 bits per element packed as(@c XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB) + CM_SURF_FMT_ALPHA32UI, ///< Alpha, 32 bits per element packed as (@c AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) + CM_SURF_FMT_INTENSITY32UI, ///< Intensity, 32 bits per element packed as (@c IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII) + CM_SURF_FMT_LUMINANCE32UI, ///< Luminance, 32 bits per element packed as (@c LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL) + CM_SURF_FMT_LUMINANCE_ALPHA32UI, ///< Luminance Alpha, 64 bits per element packed as (@c AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL) + CM_SURF_FMT_RGBA16UI, ///< RGBA, 64 bits per element packed as (@c AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRR) + CM_SURF_FMT_RGBX16UI, ///< RGB, 64 bits per element packed as (@c XXXXXXXXXXXXXXXXBBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRR) + CM_SURF_FMT_ALPHA16UI, ///< Alpha, 16 bits per element packed as (@c AAAAAAAAAAAAAAAA) + CM_SURF_FMT_INTENSITY16UI, ///< Intensity, 16 bits per element packed as (@c IIIIIIIIIIIIIIII) + CM_SURF_FMT_LUMINANCE16UI, ///< Luminance, 16 bits per element packed as (@c LLLLLLLLLLLLLLLL) + CM_SURF_FMT_LUMINANCE_ALPHA16UI, ///< Luminance Alpha, 32 bits per element packed as (@c AAAAAAAAAAAAAAAALLLLLLLLLLLLLLLL) + CM_SURF_FMT_RGBA8UI, ///< RGBA, 32 bits per element packed as (@c AAAAAAAABBBBBBBBGGGGGGGGRRRRRRRR) + CM_SURF_FMT_RGBX8UI, ///< RGB, 32 bits per element packed as (@c XXXXXXXXBBBBBBBBGGGGGGGGRRRRRRRR) + CM_SURF_FMT_ALPHA8UI, ///< Alpha, 8 bits per element packed as (@c AAAAAAAA) + CM_SURF_FMT_INTENSITY8UI, ///< Intensity, 8 bits per element packed as (@c IIIIIIII) + CM_SURF_FMT_LUMINANCE8UI, ///< Luminance, 8 bits per element packed as (@c LLLLLLLL) + CM_SURF_FMT_LUMINANCE_ALPHA8UI, ///< Luminance Alpha, 32 bits per element packed as (@c AAAAAAAALLLLLLLL) + CM_SURF_FMT_sRGBX32I, ///< RGBX, 128 bits per element packed as(@c XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB) + CM_SURF_FMT_sALPHA32I, ///< Alpha, 32 bits per element packed as (@c AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) + CM_SURF_FMT_sINTENSITY32I, ///< Intensity, 32 bits per element packed as (@c IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII) + CM_SURF_FMT_sLUMINANCE32I, ///< Luminance, 32 bits per element packed as (@c LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL) + CM_SURF_FMT_sLUMINANCE_ALPHA32I, ///< Luminance Alpha, 64 bits per element packed as (@c AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL) + CM_SURF_FMT_sRGBA16I, ///< RGBA, 64 bits per element packed as (@c AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRR) + CM_SURF_FMT_sRGBX16I, ///< RGB, 64 bits per element packed as (@c XXXXXXXXXXXXXXXXBBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRR) + CM_SURF_FMT_sALPHA16I, ///< Alpha, 16 bits per element packed as (@c AAAAAAAAAAAAAAAA) + CM_SURF_FMT_sINTENSITY16I, ///< Intensity, 16 bits per element packed as (@c IIIIIIIIIIIIIIII) + CM_SURF_FMT_sLUMINANCE16I, ///< Luminance, 16 bits per element packed as (@c LLLLLLLLLLLLLLLL) + CM_SURF_FMT_sLUMINANCE_ALPHA16I, ///< Luminance Alpha, 32 bits per element packed as (@c AAAAAAAAAAAAAAAALLLLLLLLLLLLLLLL) + CM_SURF_FMT_sRGBA8I, ///< RGBA, 32 bits per element packed as (@c AAAAAAAABBBBBBBBGGGGGGGGRRRRRRRR) + CM_SURF_FMT_sRGBX8I, ///< RGB, 32 bits per element packed as (@c XXXXXXXXBBBBBBBBGGGGGGGGRRRRRRRR) + CM_SURF_FMT_sALPHA8I, ///< Alpha, 8 bits per element packed as (@c AAAAAAAA) + CM_SURF_FMT_sINTENSITY8I, ///< Intensity, 8 bits per element packed as (@c IIIIIIII) + CM_SURF_FMT_sLUMINANCE8I, ///< Luminance, 8 bits per element packed as (@c LLLLLLLL) + CM_SURF_FMT_sLUMINANCE_ALPHA8I, ///< Alpha, 8 bits per element packed as (@c AAAAAAAA) + CM_SURF_FMT_sDXT6, ///< compressed, CM_SURF_FMT_sDXT6 + CM_SURF_FMT_DXT6, ///< compressed, CM_SURF_FMT_DXT6 + CM_SURF_FMT_DXT7, ///< compressed, DXT7 + CM_SURF_FMT_LUMINANCE8_SNORM, ///< Luminance, 8 bits per element packed as signed (@c LLLLLLLL) + CM_SURF_FMT_LUMINANCE16_SNORM, ///< Luminance, 16 bits per element packed as signed (@c LLLLLLLLLLLLLLLL) + CM_SURF_FMT_INTENSITY8_SNORM, ///< Intensity, 8 bits per element packed as signed (@c IIIIIIII) + CM_SURF_FMT_INTENSITY16_SNORM, ///< Intensity, 16 bits per element packed as signed (@c IIIIIIIIIIIIIIII) + CM_SURF_FMT_ALPHA8_SNORM, ///< Alpha, 8 bits per element packed as signed (@c AAAAAAAA) + CM_SURF_FMT_ALPHA16_SNORM, ///< Alpha, 16 bits per element packed as signed (@c AAAAAAAAAAAAAAAA) + CM_SURF_FMT_LUMINANCE_ALPHA8_SNORM, ///< Luminance Alpha, 16 bits per element packed as signed (@c AAAAAAAALLLLLLLL) + CM_SURF_FMT_LUMINANCE_ALPHA16_SNORM, ///< Luminance Alpha, 32 bits per element packed as signed (@c AAAAAAAAAAAAAAAALLLLLLLLLLLLLLLL) + CM_SURF_FMT_R8_SNORM, ///< R, 8 bits per element packed as signed (@c RRRRRRRR) + CM_SURF_FMT_R16_SNORM, ///< R, 16 bits per element packed as signed (@c RRRRRRRRRRRRRRRR) + CM_SURF_FMT_RG8_SNORM, ///< RG8, 16 bits per element packed as signed (@c RRRRRRRRGGGGGGGG) + CM_SURF_FMT_RG16_SNORM, ///< RG, 32 bits per element packed as signed (@c RRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGG) + CM_SURF_FMT_RGBX8_SNORM, ///< RGB, 32 bits per element packed as signed (@c XXXXXXXXBBBBBBBBGGGGGGGGRRRRRRRR) + CM_SURF_FMT_RGBX16_SNORM, ///< RGB, 64 bits per element packed as signed (@c XXXXXXXXXXXXXXXXBBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRR) + CM_SURF_FMT_RGBA8_SNORM, ///< RGBA, 32 bits per element packed as signed (@c AAAAAAAABBBBBBBBGGGGGGGGRRRRRRRR) + CM_SURF_FMT_RGBA16_SNORM, ///< RGBA, 64 bits per element packed as signed (@c AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRR) + CM_SURF_FMT_RGB10_A2UI, ///< RGBA, 32 bits per element packed as (@c AABBBBBBBBBBGGGGGGGGGGRRRRRRRRRR) + CM_SURF_FMT_RGB32F, ///< RGB, float, 96 bits per element packed as (@c BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR) + CM_SURF_FMT_RGB32I, ///< RGB, unnormalized int, 96 bits per element packed as (@c BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR) + CM_SURF_FMT_RGB32UI, ///< RGB, unnormalized uint, 96 bits per element packed as (@c BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR) + CM_SURF_FMT_RGBX8_SRGB, ///< RGB, 32 bits per element packed as (@c XXXXXXXXBBBBBBBBGGGGGGGGRRRRRRRR) + CM_SURF_FMT_RGBA8_SRGB, ///< RGBA, 32 bits per element packed as (@c AAAAAAAABBBBBBBBGGGGGGGGRRRRRRRR) + CM_SURF_FMT_DXT1_SRGB, ///< compressed, DXT1 + CM_SURF_FMT_DXT1A_SRGB, ///< + CM_SURF_FMT_DXT2_3_SRGB, ///< compressed, DXT2_3 + CM_SURF_FMT_DXT4_5_SRGB, ///< compressed, DXT4_5 + CM_SURF_FMT_DXT7_SRGB, ///< compressed, DXT7 + CM_SURF_FMT_RGB8_ETC2, ///< ETC2 compressed, RGB8 in 64 bits + CM_SURF_FMT_SRGB8_ETC2, ///< ETC2 compressed, SRGB8 in 64 bits + CM_SURF_FMT_RGB8_PT_ALPHA1_ETC2, ///< ETC2 compressed, RGB8 in 64 bits + CM_SURF_FMT_SRGB8_PT_ALPHA1_ETC2, ///< ETC2 compressed, sRGB8A1 in 64 bits + CM_SURF_FMT_RGBA8_ETC2_EAC, ///< ETC2 compressed, RGBA8 in 128 bits + CM_SURF_FMT_SRGB8_ALPHA8_ETC2_EAC, ///< ETC2 compressed, sRGBA8 in 128 bits + CM_SURF_FMT_R11_EAC, ///< EAC compressed, R11 in 64 bits + CM_SURF_FMT_SIGNED_R11_EAC, ///< EAC compressed, signed R11 in 64 bits + CM_SURF_FMT_RG11_EAC, ///< EAC compressed, RG11 in 128 bits + CM_SURF_FMT_SIGNED_RG11_EAC, ///< EAC compressed, signed RG11 in 128 bits + + CM_SURF_FMT_RGBA8_ASTC_4x4, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_5x4, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_5x5, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_6x5, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_6x6, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_8x5, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_8x6, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_8x8, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_10x5, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_10x6, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_10x8, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_10x10, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_12x10, ///< ASTC compressed RGBA8 in 128 bits block + CM_SURF_FMT_RGBA8_ASTC_12x12, ///< ASTC compressed RGBA8 in 128 bits block + + CM_SURF_FMT_SRGBA8_ASTC_4x4, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_5x4, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_5x5, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_6x5, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_6x6, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_8x5, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_8x6, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_8x8, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_10x5, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_10x6, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_10x8, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_10x10, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_12x10, ///< ASTC compressed SRGBA8 in 128 bits block + CM_SURF_FMT_SRGBA8_ASTC_12x12, ///< ASTC compressed SRGBA8 in 128 bits block + + CM_SURF_FMT_BGR10_A2UI, ///< RGBA, 32 bits per element packed as (@c AARRRRRRRRRRGGGGGGGGGGBBBBBBBBBB) + CM_SURF_FMT_A2_BGR10UI, ///< RGBA, 32 bits per element packed as (@c RRRRRRRRRRGGGGGGGGGGBBBBBBBBBBAA) + CM_SURF_FMT_A2_RGB10UI, ///< RGBA, 32 bits per element packed as (@c BBBBBBBBBBGGGGGGGGGGRRRRRRRRRRAA) + CM_SURF_FMT_B5_G6_R5UI, ///< RGB, 16 bits per element packed as (@c BBBBBGGGGGGRRRRR) + CM_SURF_FMT_R5_G6_B5UI, ///< RGB, 16 bits per element packed as (@c RRRRRGGGGGGBBBBB) + + CM_SURF_FMT_DEPTH32F_X24_STEN8_UNCLAMPED, ///< depth + stencil, 64 bits per element packed as (@c XXXXXXXXXXXXXXXXXXXXXXXXSSSSSSSSDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) + CM_SURF_FMT_DEPTH32F_UNCLAMPED, ///< depth, 32 bits per element packed as (@c DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) + + CM_SURF_FMT_L8_X16_A8_SRGB, ///< Sluminance Alpha, 32 bits per element packed as (@c AAAAAAAAXXXXXXXXXXXXXXXXLLLLLLLL) + CM_SURF_FMT_L8_X24_SRGB, ///< Sluminance, 32 bits per element packed as (@c XXXXXXXXXXXXXXXXXXXXXXXXLLLLLLLL) + + CM_SURF_FMT_STENCIL8, ///< stencil, 32 bits per element packed as (@c SSSSSSSSXXXXXXXXXXXXXXXXXXXXXXXX) + + + // non-native surface formats after this line, will be ignored by HWL + // all non-native surface formats should use the _NN suffix to distinguish + // them from potential corresponding native formats added in the future + CM_SURF_FMT_I420_NN, ///< 4:2:0 Planar Y-U-V format + CM_SURF_FMT_YV12_NN, ///< 4:2:0 Planar Y-V-U format + CM_SURF_FMT_NV12_NN, ///< 4:2:0 Semi-planar Y-UV format + CM_SURF_FMT_NV21_NN, ///< 4:2:0 Semi-planar Y-VU format + cmSurfFmt_FIRST = CM_SURF_FMT_LUMINANCE8, ///< First surface format + cmSurfFmt_LAST = CM_SURF_FMT_STENCIL8, ///< Last native surface format + cmSurfFmt_LAST_NON_NATIVE = CM_SURF_FMT_NV21_NN,///< Last non-native surface format +} cmSurfFmt; + +typedef struct cmFormatXlateRec { + cmSurfFmt raw_cmFormat; + cl_channel_type image_channel_data_type; + cl_channel_order image_channel_order; +} cmFormatXlateParams; + +// relates full range of cm surface formats to those supported by CAL +static const cmFormatXlateParams cmFormatXlateTable[] = { + { CM_SURF_FMT_LUMINANCE8, CL_UNORM_INT8, CL_LUMINANCE }, + { CM_SURF_FMT_LUMINANCE16, CL_UNORM_INT16, CL_LUMINANCE }, + { CM_SURF_FMT_LUMINANCE16F, CL_HALF_FLOAT, CL_LUMINANCE }, + { CM_SURF_FMT_LUMINANCE32F, CL_FLOAT, CL_LUMINANCE }, + { CM_SURF_FMT_INTENSITY8, CL_UNORM_INT8, CL_INTENSITY }, + { CM_SURF_FMT_INTENSITY16, CL_UNORM_INT16, CL_INTENSITY }, + { CM_SURF_FMT_INTENSITY16F, CL_HALF_FLOAT, CL_INTENSITY }, + { CM_SURF_FMT_INTENSITY32F, CL_FLOAT, CL_INTENSITY }, + { CM_SURF_FMT_ALPHA8, CL_UNSIGNED_INT8, CL_A }, + { CM_SURF_FMT_ALPHA16, CL_UNORM_INT16, CL_A }, + { CM_SURF_FMT_ALPHA16F, CL_HALF_FLOAT, CL_A }, + { CM_SURF_FMT_ALPHA32F, CL_FLOAT, CL_A }, + { CM_SURF_FMT_LUMINANCE8_ALPHA8, CL_UNSIGNED_INT8, CL_RG }, + { CM_SURF_FMT_LUMINANCE16_ALPHA16, CL_UNSIGNED_INT16, CL_RG }, + { CM_SURF_FMT_LUMINANCE16F_ALPHA16F, CL_HALF_FLOAT, CL_RG }, + { CM_SURF_FMT_LUMINANCE32F_ALPHA32F, CL_FLOAT, CL_RG }, + { CM_SURF_FMT_B2_G3_R3, 500, CL_R }, + { CM_SURF_FMT_B5_G6_R5, CL_UNSIGNED_INT16, CL_RGB }, + { CM_SURF_FMT_BGRX4, 500, CL_BGRA }, + { CM_SURF_FMT_BGR5_X1, CL_UNSIGNED_INT16, CL_RGB }, + { CM_SURF_FMT_BGRX8, CL_UNORM_INT8, CL_BGRA }, + { CM_SURF_FMT_BGR10_X2, CL_UNORM_INT_101010, CL_RGB }, + { CM_SURF_FMT_BGRX16, CL_UNORM_INT16, CL_BGRA }, + { CM_SURF_FMT_BGRX16F, CL_HALF_FLOAT, CL_BGRA }, + { CM_SURF_FMT_BGRX32F, CL_FLOAT, CL_BGRA }, + { CM_SURF_FMT_RGBX4, 500, CL_RGB }, + { CM_SURF_FMT_RGB5_X1, CL_UNORM_INT16, CL_BGRA }, + { CM_SURF_FMT_RGBX8, CL_UNORM_INT8, CL_RGBA }, + { CM_SURF_FMT_RGB10_X2, CL_UNORM_INT_101010, CL_RGBA }, + { CM_SURF_FMT_RGBX16, CL_UNORM_INT16, CL_RGBA }, + { CM_SURF_FMT_RGBX16F, CL_HALF_FLOAT, CL_RGBA }, + { CM_SURF_FMT_RGBX32F, CL_FLOAT, CL_RGBA }, + { CM_SURF_FMT_BGRA4, 500, CL_BGRA }, + { CM_SURF_FMT_BGR5_A1, CL_UNSIGNED_INT16, CL_BGRA }, + { CM_SURF_FMT_BGRA8, CL_UNORM_INT8, CL_BGRA }, + { CM_SURF_FMT_BGR10_A2, CL_UNORM_INT_101010, CL_BGRA }, + { CM_SURF_FMT_BGRA16, CL_UNORM_INT16, CL_BGRA }, + { CM_SURF_FMT_BGRA16F, CL_UNORM_INT16, CL_BGRA }, + { CM_SURF_FMT_BGRA32F, CL_FLOAT, CL_BGRA }, + { CM_SURF_FMT_RGBA4, 500, CL_RGBA }, + { CM_SURF_FMT_RGB5_A1, CL_UNSIGNED_INT16, CL_RGBA }, + { CM_SURF_FMT_RGBA8, CL_UNORM_INT8, CL_RGBA }, + { CM_SURF_FMT_RGB10_A2, CL_UNORM_INT_101010, CL_RGBA }, + { CM_SURF_FMT_RGBA16, CL_UNORM_INT16, CL_RGBA }, + { CM_SURF_FMT_RGBA16F, CL_HALF_FLOAT, CL_RGBA }, + { CM_SURF_FMT_RGBA32I, CL_UNSIGNED_INT32, CL_RGBA }, + { CM_SURF_FMT_RGBA32F, CL_FLOAT, CL_RGBA }, + { CM_SURF_FMT_DUDV8, CL_UNSIGNED_INT8, CL_RG }, + { CM_SURF_FMT_DXT1, 500, CL_R }, + { CM_SURF_FMT_DXT2_3, 500, CL_R }, + { CM_SURF_FMT_DXT4_5, 500, CL_R }, + { CM_SURF_FMT_ATI1N, 500, CL_R }, + { CM_SURF_FMT_ATI2N, 500, CL_R }, + { CM_SURF_FMT_DEPTH16, CL_UNORM_INT16, CL_DEPTH }, + { CM_SURF_FMT_DEPTH16F, CL_HALF_FLOAT, CL_DEPTH }, + { CM_SURF_FMT_DEPTH24_X8, 500, CL_DEPTH }, + { CM_SURF_FMT_DEPTH24F_X8, 500, CL_DEPTH }, + { CM_SURF_FMT_DEPTH24_STEN8, CL_UNORM_INT24, CL_DEPTH_STENCIL }, + { CM_SURF_FMT_DEPTH24F_STEN8, 500, CL_DEPTH_STENCIL }, + { CM_SURF_FMT_DEPTH32F_X24_STEN8, CL_FLOAT, CL_DEPTH_STENCIL }, + { CM_SURF_FMT_DEPTH32F, CL_FLOAT, CL_DEPTH }, + { CM_SURF_FMT_sR11_sG11_sB10, 500, CL_R }, + { CM_SURF_FMT_sU16, CL_SNORM_INT16, CL_R }, + { CM_SURF_FMT_sUV16, CL_SNORM_INT16, CL_RG }, + { CM_SURF_FMT_sUVWQ16, CL_SNORM_INT16, CL_RGBA }, + { CM_SURF_FMT_RG16, CL_UNORM_INT16, CL_RG }, + { CM_SURF_FMT_RG16F, CL_HALF_FLOAT, CL_RG }, + { CM_SURF_FMT_RG32F, CL_FLOAT, CL_RG }, + { CM_SURF_FMT_ABGR4, 500, CL_ARGB }, + { CM_SURF_FMT_A1_BGR5, CL_UNSIGNED_INT16, CL_ARGB }, + { CM_SURF_FMT_ABGR8, CL_UNORM_INT8, CL_ARGB }, + { CM_SURF_FMT_A2_BGR10, CL_UNORM_INT_101010, CL_ARGB }, + { CM_SURF_FMT_ABGR16, CL_UNORM_INT16, CL_ARGB }, + { CM_SURF_FMT_ABGR16F, CL_HALF_FLOAT, CL_ARGB }, + { CM_SURF_FMT_ABGR32F, CL_FLOAT, CL_ARGB }, + { CM_SURF_FMT_DXT1A, 500, CL_R }, + { CM_SURF_FMT_sRGB10_A2, 500, CL_RGBA }, + { CM_SURF_FMT_sR8, CL_SNORM_INT8, CL_R }, + { CM_SURF_FMT_sRG8, CL_SNORM_INT8, CL_RG }, + { CM_SURF_FMT_sR32I, CL_SIGNED_INT32, CL_R }, + { CM_SURF_FMT_sRG32I, CL_SIGNED_INT32, CL_RG }, + { CM_SURF_FMT_sRGBA32I, CL_SIGNED_INT32, CL_RGBA }, + { CM_SURF_FMT_R32I, CL_UNSIGNED_INT32, CL_R }, + { CM_SURF_FMT_RG32I, CL_UNSIGNED_INT32, CL_RG }, + { CM_SURF_FMT_RG8, CL_UNORM_INT8, CL_RG }, + { CM_SURF_FMT_sRGBA8, CL_SNORM_INT8, CL_RGBA }, + { CM_SURF_FMT_R11F_G11F_B10F, 500, CL_RGBA }, + { CM_SURF_FMT_RGB9_E5, CL_UNORM_INT8, CL_ARGB }, + { CM_SURF_FMT_LUMINANCE_LATC1, 500, CL_RGBA }, + { CM_SURF_FMT_SIGNED_LUMINANCE_LATC1,500, CL_RGBA }, + { CM_SURF_FMT_LUMINANCE_ALPHA_LATC2, 500, CL_RGBA }, + { CM_SURF_FMT_SIGNED_LUMINANCE_ALPHA_LATC2, 500, CL_RGBA }, + { CM_SURF_FMT_RED_RGTC1, 500, CL_RGBA }, + { CM_SURF_FMT_SIGNED_RED_RGTC1, 500, CL_RGBA }, + { CM_SURF_FMT_RED_GREEN_RGTC2, 500, CL_RGBA }, + { CM_SURF_FMT_SIGNED_RED_GREEN_RGTC2,500, CL_RGBA }, + { CM_SURF_FMT_R8, CL_UNORM_INT8, CL_R }, + { CM_SURF_FMT_R16, CL_UNORM_INT16, CL_R }, + { CM_SURF_FMT_R16F, CL_HALF_FLOAT, CL_R }, + { CM_SURF_FMT_R32F, CL_FLOAT, CL_R }, + { CM_SURF_FMT_R8I, CL_UNSIGNED_INT8, CL_R }, + { CM_SURF_FMT_sR8I, CL_SIGNED_INT8, CL_R }, + { CM_SURF_FMT_RG8I, CL_UNSIGNED_INT8, CL_RG }, + { CM_SURF_FMT_sRG8I, CL_SIGNED_INT8, CL_RG }, + { CM_SURF_FMT_R16I, CL_UNSIGNED_INT16, CL_R }, + { CM_SURF_FMT_sR16I, CL_SIGNED_INT16, CL_R }, + { CM_SURF_FMT_RG16I, CL_UNSIGNED_INT16, CL_RG }, + { CM_SURF_FMT_sRG16I, CL_SIGNED_INT16, CL_RG }, + { CM_SURF_FMT_RGBA32UI, CL_UNSIGNED_INT32, CL_RGBA }, + { CM_SURF_FMT_RGBX32UI, CL_UNSIGNED_INT32, CL_RGBA }, + { CM_SURF_FMT_ALPHA32UI, CL_UNSIGNED_INT32, CL_R }, + { CM_SURF_FMT_INTENSITY32UI, CL_UNSIGNED_INT32, CL_R }, + { CM_SURF_FMT_LUMINANCE32UI, CL_UNSIGNED_INT32, CL_R }, + { CM_SURF_FMT_LUMINANCE_ALPHA32UI, CL_UNSIGNED_INT32, CL_RG }, + { CM_SURF_FMT_RGBA16UI, CL_UNSIGNED_INT16, CL_RGBA }, + { CM_SURF_FMT_RGBX16UI, CL_UNSIGNED_INT16, CL_RGBA }, + { CM_SURF_FMT_ALPHA16UI, CL_UNSIGNED_INT16, CL_R }, + { CM_SURF_FMT_INTENSITY16UI, CL_UNSIGNED_INT16, CL_R }, + { CM_SURF_FMT_LUMINANCE16UI, CL_UNSIGNED_INT16, CL_R }, + { CM_SURF_FMT_LUMINANCE_ALPHA16UI, CL_UNSIGNED_INT32, CL_RG }, + { CM_SURF_FMT_RGBA8UI, CL_UNSIGNED_INT8, CL_RGBA }, + { CM_SURF_FMT_RGBX8UI, CL_UNORM_INT8, CL_RGBA }, + { CM_SURF_FMT_ALPHA8UI, CL_UNSIGNED_INT8, CL_R }, + { CM_SURF_FMT_INTENSITY8UI, CL_UNSIGNED_INT8, CL_R }, + { CM_SURF_FMT_LUMINANCE8UI, CL_UNSIGNED_INT8, CL_R }, + { CM_SURF_FMT_LUMINANCE_ALPHA8UI, CL_UNSIGNED_INT8, CL_RG }, + { CM_SURF_FMT_sRGBX32I, CL_SIGNED_INT32, CL_RGBA }, + { CM_SURF_FMT_sALPHA32I, CL_SIGNED_INT32, CL_R }, + { CM_SURF_FMT_sINTENSITY32I, CL_SIGNED_INT32, CL_R }, + { CM_SURF_FMT_sLUMINANCE32I, CL_SIGNED_INT32, CL_R }, + { CM_SURF_FMT_sLUMINANCE_ALPHA32I, CL_SIGNED_INT32, CL_RG }, + { CM_SURF_FMT_sRGBA16I, CL_SIGNED_INT16, CL_RGBA }, + { CM_SURF_FMT_sRGBX16I, CL_SIGNED_INT16, CL_RGBA }, + { CM_SURF_FMT_sALPHA16I, CL_SIGNED_INT16, CL_R }, + { CM_SURF_FMT_sINTENSITY16I, CL_SIGNED_INT16, CL_R }, + { CM_SURF_FMT_sLUMINANCE16I, CL_SIGNED_INT16, CL_R }, + { CM_SURF_FMT_sLUMINANCE_ALPHA16I, CL_SIGNED_INT16, CL_RG }, + { CM_SURF_FMT_sRGBA8I, CL_SIGNED_INT8, CL_RGBA }, + { CM_SURF_FMT_sRGBX8I, CL_SIGNED_INT8, CL_RGBA }, + { CM_SURF_FMT_sALPHA8I, CL_SIGNED_INT8, CL_R }, + { CM_SURF_FMT_sINTENSITY8I, CL_SIGNED_INT8, CL_R }, + { CM_SURF_FMT_sLUMINANCE8I, CL_SIGNED_INT8, CL_R }, + { CM_SURF_FMT_sLUMINANCE_ALPHA8I, CM_SURF_FMT_sRG8I, CL_RG }, + { CM_SURF_FMT_sDXT6, 500, CL_R }, + { CM_SURF_FMT_DXT6, 500, CL_R }, + { CM_SURF_FMT_DXT7, 500, CL_R }, + { CM_SURF_FMT_LUMINANCE8_SNORM, CL_SNORM_INT8, CL_R }, + { CM_SURF_FMT_LUMINANCE16_SNORM, CL_SNORM_INT16, CL_R }, + { CM_SURF_FMT_INTENSITY8_SNORM, CL_SNORM_INT8, CL_R }, + { CM_SURF_FMT_INTENSITY16_SNORM, CL_SNORM_INT16, CL_R }, + { CM_SURF_FMT_ALPHA8_SNORM, CL_SNORM_INT8, CL_R }, + { CM_SURF_FMT_ALPHA16_SNORM, CL_SNORM_INT16, CL_R }, + { CM_SURF_FMT_LUMINANCE_ALPHA8_SNORM,CL_SNORM_INT8, CL_RG }, + { CM_SURF_FMT_LUMINANCE_ALPHA16_SNORM,CL_SNORM_INT16, CL_RG }, + { CM_SURF_FMT_R8_SNORM, CL_SNORM_INT8, CL_R }, + { CM_SURF_FMT_R16_SNORM, CL_SNORM_INT16, CL_R }, + { CM_SURF_FMT_RG8_SNORM, CL_SNORM_INT8, CL_RG }, + { CM_SURF_FMT_RG16_SNORM, CL_SNORM_INT16, CL_RG }, + { CM_SURF_FMT_RGBX8_SNORM, CL_SNORM_INT8, CL_RGBA }, + { CM_SURF_FMT_RGBX16_SNORM, CL_SNORM_INT16, CL_RGBA }, + { CM_SURF_FMT_RGBA8_SNORM, CL_SNORM_INT8, CL_RGBA }, + { CM_SURF_FMT_RGBA16_SNORM, CL_SNORM_INT16, CL_RGBA }, + { CM_SURF_FMT_RGB10_A2UI, 500, CL_RGBA }, + { CM_SURF_FMT_RGB32F, 500, CL_RGBA }, + { CM_SURF_FMT_RGB32I, 500, CL_RGBA }, + { CM_SURF_FMT_RGB32UI, 500, CL_RGBA }, + { CM_SURF_FMT_RGBX8_SRGB, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_SRGB, 500, CL_RGBA }, + { CM_SURF_FMT_DXT1_SRGB, 500, CL_RGBA }, + { CM_SURF_FMT_DXT1A_SRGB, 500, CL_RGBA }, + { CM_SURF_FMT_DXT2_3_SRGB, 500, CL_RGBA }, + { CM_SURF_FMT_DXT4_5_SRGB, 500, CL_RGBA }, + { CM_SURF_FMT_DXT7_SRGB, 500, CL_RGBA }, + { CM_SURF_FMT_RGB8_ETC2, 500, CL_RGB }, + { CM_SURF_FMT_SRGB8_ETC2, 500, CL_RGB }, + { CM_SURF_FMT_RGB8_PT_ALPHA1_ETC2, 500, CL_RGBA }, + { CM_SURF_FMT_SRGB8_PT_ALPHA1_ETC2, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ETC2_EAC, 500, CL_RGBA }, + { CM_SURF_FMT_SRGB8_ALPHA8_ETC2_EAC, 500, CL_RGBA }, + { CM_SURF_FMT_R11_EAC, 500, CL_R }, + { CM_SURF_FMT_SIGNED_R11_EAC, 500, CL_R }, + { CM_SURF_FMT_RG11_EAC, 500, CL_RG }, + { CM_SURF_FMT_SIGNED_RG11_EAC, 500, CL_RG }, + { CM_SURF_FMT_RGBA8_ASTC_4x4, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_5x4, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_5x5, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_6x5, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_6x6, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_8x5, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_8x6, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_8x8, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_10x5, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_10x6, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_10x8, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_10x10, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_12x10, 500, CL_RGBA }, + { CM_SURF_FMT_RGBA8_ASTC_12x12, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_4x4, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_5x4, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_5x5, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_6x5, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_6x6, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_8x5, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_8x6, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_8x8, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_10x5, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_10x6, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_10x8, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_10x10, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_12x10, 500, CL_RGBA }, + { CM_SURF_FMT_SRGBA8_ASTC_12x12, 500, CL_RGBA }, + { CM_SURF_FMT_BGR10_A2UI, 500, CL_BGRA }, + { CM_SURF_FMT_A2_BGR10UI, 500, CL_ARGB }, + { CM_SURF_FMT_A2_RGB10UI, 500, CL_ABGR }, + { CM_SURF_FMT_B5_G6_R5UI, 500, CL_BGRA }, + { CM_SURF_FMT_R5_G6_B5UI, 500, CL_RGBA }, + { CM_SURF_FMT_DEPTH32F_X24_STEN8_UNCLAMPED,CL_UNSIGNED_INT32, CL_R }, + { CM_SURF_FMT_DEPTH32F_UNCLAMPED, CL_FLOAT, CL_R }, + { CM_SURF_FMT_L8_X16_A8_SRGB, 500, CL_RGBA }, + { CM_SURF_FMT_L8_X24_SRGB, 500, CL_RGBA }, + { CM_SURF_FMT_STENCIL8, CL_UNSIGNED_INT8, CL_R }, +}; + bool Device::initGLInteropPrivateExt(void* GLplatformContext, void* GLdeviceContext) const { #ifdef ATI_OS_LINUX GLXContext ctx = (GLXContext)GLplatformContext; @@ -178,7 +655,7 @@ bool Device::glDissociate(void* GLplatformContext, void* GLdeviceContext) const } bool Device::resGLAssociate(void* GLContext, uint name, uint type, void** handle, - void** mbResHandle, size_t* offset, uint& glFormat + void** mbResHandle, size_t* offset, cl_image_format& newClFormat #ifdef ATI_OS_WIN , Pal::DoppDesktopInfo& doppDesktopInfo @@ -225,7 +702,24 @@ bool Device::resGLAssociate(void* GLContext, uint name, uint type, void** handle } #endif - glFormat = static_cast(hData.format); + // OCL supports only a limited number of cm_surf formats, so we + // have to translate incoming cm_surf formats + uint index = hData.format - (uint)CM_SURF_FMT_LUMINANCE8; + if (index >= sizeof(cmFormatXlateTable) / sizeof(cmFormatXlateParams)) { + LogError("\nInvalid GL surface reported in hData\n"); + return status; + } + assert(static_cast(hData.format) == cmFormatXlateTable[index].raw_cmFormat); + cl_channel_type imageDataType; + imageDataType = cmFormatXlateTable[index].image_channel_data_type; + if (imageDataType == 500) { + LogError("\nGL surface is not supported by OCL\n"); + return status; + } + + newClFormat.image_channel_data_type = cmFormatXlateTable[index].image_channel_data_type; + newClFormat.image_channel_order = cmFormatXlateTable[index].image_channel_order; + return status; } diff --git a/rocclr/runtime/device/pal/palresource.cpp b/rocclr/runtime/device/pal/palresource.cpp index e44f511960..f06b85268d 100644 --- a/rocclr/runtime/device/pal/palresource.cpp +++ b/rocclr/runtime/device/pal/palresource.cpp @@ -483,20 +483,14 @@ bool Resource::create(MemoryType memType, CreateParams* params) { layer = oglRes->layer_; type = oglRes->type_; mipLevel = oglRes->mipLevel_; - uint glFormat = 0; if (!dev().resGLAssociate(oglRes->glPlatformContext_, oglRes->handle_, glType_, - &openInfo.hExternalResource, &glInteropMbRes_, &offset_, glFormat, + &openInfo.hExternalResource, &glInteropMbRes_, &offset_, desc_.format_, openInfo.doppDesktopInfo)) { return false; } desc_.isDoppTexture_ = (openInfo.doppDesktopInfo.gpuVirtAddr != 0); - // This is a temporary workaround for SWDEV-130722 - // 0x22 = CM_SURF_FMT_BGRA8 defined in cm_enum.h in gsl - if (glFormat == 0x22) { - desc_.format_.image_channel_order = CL_BGRA; - format = dev().getPalFormat(desc().format_, &channels); - } + format = dev().getPalFormat(desc().format_, &channels); } else { D3DInteropParams* d3dRes = reinterpret_cast(params); openInfo.hExternalResource = d3dRes->handle_;