summaryrefslogtreecommitdiffstats
path: root/src/wgl/wglinfo.c
diff options
context:
space:
mode:
authorBrian Paul <brianp@vmware.com>2013-11-01 17:20:12 -0600
committerBrian Paul <brianp@vmware.com>2014-01-20 06:37:11 -0800
commita0b873c80b6246cfb40b9125bfc65cdee36fb5fe (patch)
tree443cbce8d7020b738c8cd2f3662e1601477fab13 /src/wgl/wglinfo.c
parente5bbc0e814fad3d61f72d04037c5e6a153cfcbe0 (diff)
downloadmesa-demos-a0b873c80b6246cfb40b9125bfc65cdee36fb5fe.zip
mesa-demos-a0b873c80b6246cfb40b9125bfc65cdee36fb5fe.tar.xz
wglinfo: query and print list of compressed texture formats
Diffstat (limited to 'src/wgl/wglinfo.c')
-rw-r--r--src/wgl/wglinfo.c147
1 files changed, 144 insertions, 3 deletions
diff --git a/src/wgl/wglinfo.c b/src/wgl/wglinfo.c
index 41f2a31..b54c3b6 100644
--- a/src/wgl/wglinfo.c
+++ b/src/wgl/wglinfo.c
@@ -49,6 +49,137 @@ typedef enum
} InfoMode;
+/**
+ * Return the GL enum name for a numeric value.
+ * We really only care about the compressed texture formats for now.
+ */
+static const char *
+enum_name(GLenum val)
+{
+ static const struct {
+ const char *name;
+ GLenum val;
+ } enums [] = {
+ { "GL_COMPRESSED_ALPHA", 0x84E9 },
+ { "GL_COMPRESSED_LUMINANCE", 0x84EA },
+ { "GL_COMPRESSED_LUMINANCE_ALPHA", 0x84EB },
+ { "GL_COMPRESSED_INTENSITY", 0x84EC },
+ { "GL_COMPRESSED_RGB", 0x84ED },
+ { "GL_COMPRESSED_RGBA", 0x84EE },
+ { "GL_COMPRESSED_TEXTURE_FORMATS", 0x86A3 },
+ { "GL_COMPRESSED_RGB", 0x84ED },
+ { "GL_COMPRESSED_RGBA", 0x84EE },
+ { "GL_COMPRESSED_TEXTURE_FORMATS", 0x86A3 },
+ { "GL_COMPRESSED_ALPHA", 0x84E9 },
+ { "GL_COMPRESSED_LUMINANCE", 0x84EA },
+ { "GL_COMPRESSED_LUMINANCE_ALPHA", 0x84EB },
+ { "GL_COMPRESSED_INTENSITY", 0x84EC },
+ { "GL_COMPRESSED_SRGB", 0x8C48 },
+ { "GL_COMPRESSED_SRGB_ALPHA", 0x8C49 },
+ { "GL_COMPRESSED_SLUMINANCE", 0x8C4A },
+ { "GL_COMPRESSED_SLUMINANCE_ALPHA", 0x8C4B },
+ { "GL_COMPRESSED_RED", 0x8225 },
+ { "GL_COMPRESSED_RG", 0x8226 },
+ { "GL_COMPRESSED_RED_RGTC1", 0x8DBB },
+ { "GL_COMPRESSED_SIGNED_RED_RGTC1", 0x8DBC },
+ { "GL_COMPRESSED_RG_RGTC2", 0x8DBD },
+ { "GL_COMPRESSED_SIGNED_RG_RGTC2", 0x8DBE },
+ { "GL_COMPRESSED_RGB8_ETC2", 0x9274 },
+ { "GL_COMPRESSED_SRGB8_ETC2", 0x9275 },
+ { "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", 0x9276 },
+ { "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", 0x9277 },
+ { "GL_COMPRESSED_RGBA8_ETC2_EAC", 0x9278 },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", 0x9279 },
+ { "GL_COMPRESSED_R11_EAC", 0x9270 },
+ { "GL_COMPRESSED_SIGNED_R11_EAC", 0x9271 },
+ { "GL_COMPRESSED_RG11_EAC", 0x9272 },
+ { "GL_COMPRESSED_SIGNED_RG11_EAC", 0x9273 },
+ { "GL_COMPRESSED_ALPHA_ARB", 0x84E9 },
+ { "GL_COMPRESSED_LUMINANCE_ARB", 0x84EA },
+ { "GL_COMPRESSED_LUMINANCE_ALPHA_ARB", 0x84EB },
+ { "GL_COMPRESSED_INTENSITY_ARB", 0x84EC },
+ { "GL_COMPRESSED_RGB_ARB", 0x84ED },
+ { "GL_COMPRESSED_RGBA_ARB", 0x84EE },
+ { "GL_COMPRESSED_TEXTURE_FORMATS_ARB", 0x86A3 },
+ { "GL_COMPRESSED_RGBA_BPTC_UNORM_ARB", 0x8E8C },
+ { "GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB", 0x8E8D },
+ { "GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB", 0x8E8E },
+ { "GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB", 0x8E8F },
+ { "GL_COMPRESSED_RGBA_ASTC_4x4_KHR", 0x93B0 },
+ { "GL_COMPRESSED_RGBA_ASTC_5x4_KHR", 0x93B1 },
+ { "GL_COMPRESSED_RGBA_ASTC_5x5_KHR", 0x93B2 },
+ { "GL_COMPRESSED_RGBA_ASTC_6x5_KHR", 0x93B3 },
+ { "GL_COMPRESSED_RGBA_ASTC_6x6_KHR", 0x93B4 },
+ { "GL_COMPRESSED_RGBA_ASTC_8x5_KHR", 0x93B5 },
+ { "GL_COMPRESSED_RGBA_ASTC_8x6_KHR", 0x93B6 },
+ { "GL_COMPRESSED_RGBA_ASTC_8x8_KHR", 0x93B7 },
+ { "GL_COMPRESSED_RGBA_ASTC_10x5_KHR", 0x93B8 },
+ { "GL_COMPRESSED_RGBA_ASTC_10x6_KHR", 0x93B9 },
+ { "GL_COMPRESSED_RGBA_ASTC_10x8_KHR", 0x93BA },
+ { "GL_COMPRESSED_RGBA_ASTC_10x10_KHR", 0x93BB },
+ { "GL_COMPRESSED_RGBA_ASTC_12x10_KHR", 0x93BC },
+ { "GL_COMPRESSED_RGBA_ASTC_12x12_KHR", 0x93BD },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR", 0x93D0 },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR", 0x93D1 },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR", 0x93D2 },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR", 0x93D3 },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR", 0x93D4 },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR", 0x93D5 },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR", 0x93D6 },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR", 0x93D7 },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR", 0x93D8 },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR", 0x93D9 },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR", 0x93DA },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR", 0x93DB },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR", 0x93DC },
+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR", 0x93DD },
+ { "GL_COMPRESSED_RGB_FXT1_3DFX", 0x86B0 },
+ { "GL_COMPRESSED_RGBA_FXT1_3DFX", 0x86B1 },
+ { "GL_COMPRESSED_LUMINANCE_LATC1_EXT", 0x8C70 },
+ { "GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT", 0x8C71 },
+ { "GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT", 0x8C72 },
+ { "GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT", 0x8C73 },
+ { "GL_COMPRESSED_RED_RGTC1_EXT", 0x8DBB },
+ { "GL_COMPRESSED_SIGNED_RED_RGTC1_EXT", 0x8DBC },
+ { "GL_COMPRESSED_RED_GREEN_RGTC2_EXT", 0x8DBD },
+ { "GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT", 0x8DBE },
+ { "GL_COMPRESSED_RGB_S3TC_DXT1_EXT", 0x83F0 },
+ { "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT", 0x83F1 },
+ { "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT", 0x83F2 },
+ { "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT", 0x83F3 },
+ { "GL_COMPRESSED_SRGB_EXT", 0x8C48 },
+ { "GL_COMPRESSED_SRGB_ALPHA_EXT", 0x8C49 },
+ { "GL_COMPRESSED_SLUMINANCE_EXT", 0x8C4A },
+ { "GL_COMPRESSED_SLUMINANCE_ALPHA_EXT", 0x8C4B },
+ { "GL_COMPRESSED_SRGB_S3TC_DXT1_EXT", 0x8C4C },
+ { "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT", 0x8C4D },
+ { "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT", 0x8C4E },
+ { "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT", 0x8C4F },
+ { "GL_PALETTE4_RGB8_OES", 0x8B90 },
+ { "GL_PALETTE4_RGBA8_OES", 0x8B91 },
+ { "GL_PALETTE4_R5_G6_B5_OES", 0x8B92 },
+ { "GL_PALETTE4_RGBA4_OES", 0x8B93 },
+ { "GL_PALETTE4_RGB5_A1_OES", 0x8B94 },
+ { "GL_PALETTE8_RGB8_OES", 0x8B95 },
+ { "GL_PALETTE8_RGBA8_OES", 0x8B96 },
+ { "GL_PALETTE8_R5_G6_B5_OES", 0x8B97 },
+ { "GL_PALETTE8_RGBA4_OES", 0x8B98 },
+ { "GL_PALETTE8_RGB5_A1_OES", 0x8B99 }
+ };
+ const int n = sizeof(enums) / sizeof(enums[0]);
+ static char buffer[100];
+ int i;
+ for (i = 0; i < n; i++) {
+ if (enums[i].val == val) {
+ return enums[i].name;
+ }
+ }
+ /* enum val not found, just print hexadecimal value into static buffer */
+ sprintf(buffer, "0x%x", val);
+ return buffer;
+}
+
+
/*
* qsort callback for string comparison.
*/
@@ -343,9 +474,6 @@ print_limits(const char *extensions)
#if defined(GL_NV_texture_rectangle)
{ 1, GL_MAX_RECTANGLE_TEXTURE_SIZE_NV, "GL_MAX_RECTANGLE_TEXTURE_SIZE_NV", "GL_NV_texture_rectangle" },
#endif
-#if defined(GL_ARB_texture_compression)
- { 1, GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB, "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", "GL_ARB_texture_compression" },
-#endif
#if defined(GL_ARB_multitexture)
{ 1, GL_MAX_TEXTURE_UNITS_ARB, "GL_MAX_TEXTURE_UNITS_ARB", "GL_ARB_multitexture" },
#endif
@@ -400,6 +528,19 @@ print_limits(const char *extensions)
}
#endif
+ if (extension_supported("GL_ARB_texture_compression", extensions)) {
+ GLint i, n;
+ GLint *formats;
+ glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &n);
+ printf(" GL_NUM_COMPRESSED_TEXTURE_FORMATS = %d\n", n);
+ formats = (GLint *) malloc(n * sizeof(GLint));
+ glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS, formats);
+ for (i = 0; i < n; i++) {
+ printf(" %s\n", enum_name(formats[i]));
+ }
+ free(formats);
+ }
+
#if defined(GL_ARB_vertex_program)
if (extension_supported("GL_ARB_vertex_program", extensions)) {
print_program_limits(GL_VERTEX_PROGRAM_ARB);