From 23f12d5ea4db245b24b5ae65e29c671a7fadd0a5 Mon Sep 17 00:00:00 2001
From: foreman
Date: Tue, 12 Sep 2017 17:07:18 -0400
Subject: [PATCH] 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
---
rocclr/runtime/device/pal/paldevice.hpp | 2 +-
rocclr/runtime/device/pal/paldevicegl.cpp | 498 +++++++++++++++++++++-
rocclr/runtime/device/pal/palresource.cpp | 10 +-
3 files changed, 499 insertions(+), 11 deletions(-)
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_;