From 2d8f30599bebc47d1b5ba7524714ee12dae033f8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Fri, 26 Apr 2013 09:59:36 +0100 Subject: [PATCH] gltrace: Handle even more formats in _gl_format_channels(). The valid formats can be found by grepping 'Accepted by the ' in OpenGL extension specs. These were all I could find. --- helpers/glsize.hpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/helpers/glsize.hpp b/helpers/glsize.hpp index 6b1ad18..a920ac0 100644 --- a/helpers/glsize.hpp +++ b/helpers/glsize.hpp @@ -706,6 +706,12 @@ _glMap2d_size(GLenum target, GLint ustride, GLint uorder, GLint vstride, GLint v #define _glMap2f_size _glMap2d_size +/** + * Number of channels in this format. + * + * That is, the number of elements per pixel when this format is passed with a + * to DrawPixels, ReadPixels, TexImage*, TexSubImage*, GetTexImage, etc. + */ static inline unsigned _gl_format_channels(GLenum format) { switch (format) { @@ -729,14 +735,22 @@ _gl_format_channels(GLenum format) { case GL_LUMINANCE_ALPHA_INTEGER_EXT: case GL_RG: case GL_RG_INTEGER: - case GL_HILO_NV: - case GL_DSDT_NV: + case GL_422_EXT: // (luminance, chrominance) + case GL_422_REV_EXT: // (luminance, chrominance) + case GL_422_AVERAGE_EXT: // (luminance, chrominance) + case GL_422_REV_AVERAGE_EXT: // (luminance, chrominance) + case GL_HILO_NV: // (hi, lo) + case GL_DSDT_NV: // (ds, dt) + case GL_YCBCR_422_APPLE: // (luminance, chroma) + case GL_RGB_422_APPLE: // (G, B) on even pixels, (G, R) on odd pixels + case GL_YCRCB_422_SGIX: // (Y, [Cb,Cr]) return 2; case GL_RGB: case GL_RGB_INTEGER: case GL_BGR: case GL_BGR_INTEGER: - case GL_DSDT_MAG_NV: + case GL_DSDT_MAG_NV: // (ds, dt, magnitude) + case GL_YCRCB_444_SGIX: // (Cb, Y, Cr) return 3; case GL_RGBA: case GL_RGBA_INTEGER: @@ -744,10 +758,14 @@ _gl_format_channels(GLenum format) { case GL_BGRA_INTEGER: case GL_ABGR_EXT: case GL_CMYK_EXT: - case GL_DSDT_MAG_VIB_NV: + case GL_DSDT_MAG_VIB_NV: // (ds, dt, magnitude, vibrance) return 4; case GL_CMYKA_EXT: return 5; + case GL_FORMAT_SUBSAMPLE_24_24_OML: + case GL_FORMAT_SUBSAMPLE_244_244_OML: + // requires UNSIGNED_INT_10_10_10_2, so this value will be ignored + return 0; default: os::log("apitrace: warning: %s: unexpected format GLenum 0x%04X\n", __FUNCTION__, format); return 0; -- 2.43.0