Add function to map GL compressed tex format to tcu.
authorMika Isojärvi <misojarvi@google.com>
Thu, 8 Jan 2015 23:42:40 +0000 (15:42 -0800)
committerMika Isojärvi <misojarvi@google.com>
Thu, 8 Jan 2015 23:42:40 +0000 (15:42 -0800)
Add function that can map OpenGL compressed texture formats to tcu
compressed texture format.

Change-Id: I0867e1e0445821b0a956e695bedf9acb6667da42

framework/opengl/gluTextureUtil.cpp
framework/opengl/gluTextureUtil.hpp

index e26ab54..1b69be3 100644 (file)
@@ -274,6 +274,65 @@ deUint32 getGLFormat (tcu::CompressedTexFormat format)
        }
 }
 
+/*--------------------------------------------------------------------*//*!
+ * \brief Map compressed GL format to generic compressed format.
+ *
+ * Maps compressed GL format to generic compressed format.
+ * If no mapping is found, throws tcu::InternalError.
+ *
+ * \param GL compressed texture format.
+ * \return format Generic compressed format.
+ *//*--------------------------------------------------------------------*/
+tcu::CompressedTexFormat mapGLCompressedTexFormat (deUint32 format)
+{
+       switch (format)
+       {
+               case GL_ETC1_RGB8_OES:                                                          return tcu::COMPRESSEDTEXFORMAT_ETC1_RGB8;
+               case GL_COMPRESSED_R11_EAC:                                                     return tcu::COMPRESSEDTEXFORMAT_EAC_R11;
+               case GL_COMPRESSED_SIGNED_R11_EAC:                                      return tcu::COMPRESSEDTEXFORMAT_EAC_SIGNED_R11;
+               case GL_COMPRESSED_RG11_EAC:                                            return tcu::COMPRESSEDTEXFORMAT_EAC_RG11;
+               case GL_COMPRESSED_SIGNED_RG11_EAC:                                     return tcu::COMPRESSEDTEXFORMAT_EAC_SIGNED_RG11;
+               case GL_COMPRESSED_RGB8_ETC2:                                           return tcu::COMPRESSEDTEXFORMAT_ETC2_RGB8;
+               case GL_COMPRESSED_SRGB8_ETC2:                                          return tcu::COMPRESSEDTEXFORMAT_ETC2_SRGB8;
+               case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:       return tcu::COMPRESSEDTEXFORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1;
+               case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:      return tcu::COMPRESSEDTEXFORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1;
+               case GL_COMPRESSED_RGBA8_ETC2_EAC:                                      return tcu::COMPRESSEDTEXFORMAT_ETC2_EAC_RGBA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:                       return tcu::COMPRESSEDTEXFORMAT_ETC2_EAC_SRGB8_ALPHA8;
+
+               case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:                           return tcu::COMPRESSEDTEXFORMAT_ASTC_4x4_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:                           return tcu::COMPRESSEDTEXFORMAT_ASTC_5x4_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:                           return tcu::COMPRESSEDTEXFORMAT_ASTC_5x5_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:                           return tcu::COMPRESSEDTEXFORMAT_ASTC_6x5_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:                           return tcu::COMPRESSEDTEXFORMAT_ASTC_6x6_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:                           return tcu::COMPRESSEDTEXFORMAT_ASTC_8x5_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:                           return tcu::COMPRESSEDTEXFORMAT_ASTC_8x6_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:                           return tcu::COMPRESSEDTEXFORMAT_ASTC_8x8_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:                          return tcu::COMPRESSEDTEXFORMAT_ASTC_10x5_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:                          return tcu::COMPRESSEDTEXFORMAT_ASTC_10x6_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:                          return tcu::COMPRESSEDTEXFORMAT_ASTC_10x8_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:                         return tcu::COMPRESSEDTEXFORMAT_ASTC_10x10_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:                         return tcu::COMPRESSEDTEXFORMAT_ASTC_12x10_RGBA;
+               case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:                         return tcu::COMPRESSEDTEXFORMAT_ASTC_12x12_RGBA;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:           return tcu::COMPRESSEDTEXFORMAT_ASTC_4x4_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:           return tcu::COMPRESSEDTEXFORMAT_ASTC_5x4_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:           return tcu::COMPRESSEDTEXFORMAT_ASTC_5x5_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:           return tcu::COMPRESSEDTEXFORMAT_ASTC_6x5_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:           return tcu::COMPRESSEDTEXFORMAT_ASTC_6x6_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:           return tcu::COMPRESSEDTEXFORMAT_ASTC_8x5_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:           return tcu::COMPRESSEDTEXFORMAT_ASTC_8x6_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:           return tcu::COMPRESSEDTEXFORMAT_ASTC_8x8_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:          return tcu::COMPRESSEDTEXFORMAT_ASTC_10x5_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:          return tcu::COMPRESSEDTEXFORMAT_ASTC_10x6_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:          return tcu::COMPRESSEDTEXFORMAT_ASTC_10x8_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:         return tcu::COMPRESSEDTEXFORMAT_ASTC_10x10_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:         return tcu::COMPRESSEDTEXFORMAT_ASTC_12x10_SRGB8_ALPHA8;
+               case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:         return tcu::COMPRESSEDTEXFORMAT_ASTC_12x12_SRGB8_ALPHA8;
+
+               default:
+                       throw tcu::InternalError("Can't map compressed GL format to compressed format");
+       }
+}
+
 static tcu::TextureFormat::ChannelType mapGLChannelType (deUint32 dataType, bool normalized)
 {
        // \note Normalized bit is ignored where it doesn't apply.
index 6ba71df..579e5d2 100644 (file)
@@ -58,6 +58,7 @@ struct TransferFormat
 
 tcu::TextureFormat                             mapGLTransferFormat                                     (deUint32 format, deUint32 dataType);
 tcu::TextureFormat                             mapGLInternalFormat                                     (deUint32 internalFormat);
+tcu::CompressedTexFormat               mapGLCompressedTexFormat                        (deUint32 format);
 bool                                                   isGLInternalColorFormatFilterable       (deUint32 internalFormat);
 tcu::Sampler                                   mapGLSampler                                            (deUint32 wrapS, deUint32 minFilter, deUint32 magFilter);
 tcu::Sampler                                   mapGLSampler                                            (deUint32 wrapS, deUint32 wrapT, deUint32 minFilter, deUint32 magFilter);