P4 to Git Change 1458033 by asalmanp@asalmanp-ocl-stg on 2017/09/12 16:29:49

SWDEV-130722 - Channel order in an interop buffer from OpenCL to OpenGL is flipped on Vega

	Follow up for CL#1456230. Adding a new table that maps the OGL surface formats (hData.format) returned by wglResourceAttachAMD function into the OCL image format. The hData.format is the internal image surface format created for an interop by OGL and should be used by OCL for cl_gl interop.

	ReviewBoardURL = http://ocltc.amd.com/reviews/r/13421/

Affected files ...

... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.hpp#20 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevicegl.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.cpp#36 edit
This commit is contained in:
foreman
2017-09-12 17:07:18 -04:00
parent a88ad35556
commit 23f12d5ea4
3 changed files with 499 additions and 11 deletions
+1 -1
View File
@@ -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
+496 -2
View File
@@ -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<uint>(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<cmSurfFmt>(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;
}
+2 -8
View File
@@ -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<D3DInteropParams*>(params);
openInfo.hExternalResource = d3dRes->handle_;