some levels and diagnostic tool
[fishladder.git] / vg / vg_gldiag.h
diff --git a/vg/vg_gldiag.h b/vg/vg_gldiag.h
new file mode 100644 (file)
index 0000000..29c246d
--- /dev/null
@@ -0,0 +1,41 @@
+#define VG_GLDIAG_GL_GET_STRING( o, x ) fprintf( o, #x ": %s\n", glGetString( x ) );
+
+static void vg_check_gl_integerv( FILE *log, GLenum name, const char *stringname )
+{
+       GLint data;
+       glGetIntegerv( name, &data );
+       fprintf( log, "%s:%d\n", stringname, data );
+}
+
+#define VG_GLDIAG_GL_INTEGERV( o, x ) vg_check_gl_integerv( o, x, #x );
+
+static int vg_run_gfx_diagnostics(void)
+{
+       FILE *log = fopen( "gldiag.txt", "w" );
+       if( log )
+       {
+               VG_GLDIAG_GL_GET_STRING( log, GL_VERSION )
+               VG_GLDIAG_GL_GET_STRING( log, GL_VENDOR )
+               VG_GLDIAG_GL_GET_STRING( log, GL_RENDERER )
+               VG_GLDIAG_GL_GET_STRING( log, GL_SHADING_LANGUAGE_VERSION )
+               
+               VG_GLDIAG_GL_INTEGERV( log, GL_MAX_3D_TEXTURE_SIZE )
+               VG_GLDIAG_GL_INTEGERV( log, GL_MAX_ARRAY_TEXTURE_LAYERS )
+               VG_GLDIAG_GL_INTEGERV( log, GL_MAX_CLIP_DISTANCES )
+               VG_GLDIAG_GL_INTEGERV( log, GL_MAX_COLOR_TEXTURE_SAMPLES )
+               VG_GLDIAG_GL_INTEGERV( log, GL_MAX_COMBINED_UNIFORM_BLOCKS )
+               VG_GLDIAG_GL_INTEGERV( log, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS )
+               VG_GLDIAG_GL_INTEGERV( log, GL_MAX_DRAW_BUFFERS )
+               VG_GLDIAG_GL_INTEGERV( log, GL_MAX_ELEMENTS_INDICES )
+               VG_GLDIAG_GL_INTEGERV( log, GL_MAX_ELEMENTS_VERTICES )
+               VG_GLDIAG_GL_INTEGERV( log, GL_MAX_FRAGMENT_UNIFORM_BLOCKS )
+               VG_GLDIAG_GL_INTEGERV( log, GL_MAX_RENDERBUFFER_SIZE )
+               VG_GLDIAG_GL_INTEGERV( log, GL_MAX_UNIFORM_BLOCK_SIZE )
+               VG_GLDIAG_GL_INTEGERV( log, GL_NUM_EXTENSIONS )
+               VG_GLDIAG_GL_INTEGERV( log, GL_PACK_ALIGNMENT )
+               
+               fclose( log );
+       }
+       
+       return 0;
+}
\ No newline at end of file