From b2e779988eeb595187933fe2122d86f8ccfe059c Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 6 Feb 2009 09:57:28 -0700 Subject: mesa: meaningless whitespace change to see if git's working (ignore) --- src/mesa/main/debug.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/mesa/main/debug.c') diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 77fef32558..65970a53a9 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -164,9 +164,7 @@ static void add_debug_flags( const char *debug ) { "api", VERBOSE_API }, { "list", VERBOSE_DISPLAY_LIST }, { "lighting", VERBOSE_LIGHTING }, - { "disassem", VERBOSE_DISASSEM }, - { "glsl", VERBOSE_GLSL }, /* report GLSL compile/link errors */ - { "glsl_dump", VERBOSE_GLSL_DUMP } /* print shader GPU instructions */ + { "disassem", VERBOSE_DISASSEM } }; GLuint i; -- cgit v1.2.3 From aafcc26642d5243944a1abb816c2657f644c0649 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 6 Feb 2009 10:00:34 -0700 Subject: Revert "mesa: meaningless whitespace change to see if git's working (ignore)" This reverts commit b2e779988eeb595187933fe2122d86f8ccfe059c. I didn't mean to push this stuff yet. I'm having a bad git day... --- Makefile | 1 - src/mesa/main/debug.c | 4 ++- src/mesa/main/mtypes.h | 10 ++---- src/mesa/shader/shader_api.c | 62 ----------------------------------- src/mesa/shader/slang/slang_compile.c | 18 ++-------- src/mesa/shader/slang/slang_link.c | 20 +++++------ src/mesa/shader/slang/slang_log.c | 6 ++-- src/mesa/sources | 1 - 8 files changed, 20 insertions(+), 102 deletions(-) (limited to 'src/mesa/main/debug.c') diff --git a/Makefile b/Makefile index 4d4c6a551a..419265df80 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,6 @@ default: $(TOP)/configs/current doxygen: cd doxygen && $(MAKE) - clean: -@touch $(TOP)/configs/current -@for dir in $(SUBDIRS) ; do \ diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 65970a53a9..77fef32558 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -164,7 +164,9 @@ static void add_debug_flags( const char *debug ) { "api", VERBOSE_API }, { "list", VERBOSE_DISPLAY_LIST }, { "lighting", VERBOSE_LIGHTING }, - { "disassem", VERBOSE_DISASSEM } + { "disassem", VERBOSE_DISASSEM }, + { "glsl", VERBOSE_GLSL }, /* report GLSL compile/link errors */ + { "glsl_dump", VERBOSE_GLSL_DUMP } /* print shader GPU instructions */ }; GLuint i; diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 509da06d09..17dd3e6afd 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -2162,13 +2162,6 @@ struct gl_shader_program }; -#define GLSL_DUMP 0x1 /**< Dump shaders to stdout */ -#define GLSL_LOG 0x2 /**< Write shaders to files */ -#define GLSL_OPT 0x4 /**< Force optimizations (override pragmas) */ -#define GLSL_NO_OPT 0x8 /**< Force no optimizations (override pragmas) */ -#define GLSL_UNIFORMS 0x10 /**< Print glUniform calls */ - - /** * Context state for GLSL vertex/fragment shaders. */ @@ -2180,7 +2173,6 @@ struct gl_shader_state GLboolean EmitCondCodes; /**< Use condition codes? */ GLboolean EmitComments; /**< Annotated instructions */ void *MemPool; - GLbitfield Flags; /**< Mask of GLSL_x flags */ }; @@ -3171,6 +3163,8 @@ enum _verbose VERBOSE_PRIMS = 0x0400, VERBOSE_VERTS = 0x0800, VERBOSE_DISASSEM = 0x1000, + VERBOSE_GLSL = 0x2000, + VERBOSE_GLSL_DUMP = 0x4000 }; diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index fb2a7e54fe..acee34dc5b 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -370,31 +370,6 @@ _mesa_lookup_shader_err(GLcontext *ctx, GLuint name, const char *caller) } -/** - * Return mask of GLSL_x flags by examining the MESA_GLSL env var. - */ -static GLbitfield -get_shader_flags(void) -{ - GLbitfield flags = 0x0; - const char *env = _mesa_getenv("MESA_GLSL"); - - if (env) { - if (_mesa_strstr(env, "dump")) - flags |= GLSL_DUMP; - if (_mesa_strstr(env, "log")) - flags |= GLSL_LOG; - if (_mesa_strstr(env, "nopt")) - flags |= GLSL_NO_OPT; - else if (_mesa_strstr(env, "opt")) - flags |= GLSL_OPT; - if (_mesa_strstr(env, "uniform")) - flags |= GLSL_UNIFORMS; - } - - return flags; -} - /** * Initialize context's shader state. @@ -408,7 +383,6 @@ _mesa_init_shader_state(GLcontext * ctx) ctx->Shader.EmitHighLevelInstructions = GL_TRUE; ctx->Shader.EmitCondCodes = GL_TRUE; /* XXX probably want GL_FALSE... */ ctx->Shader.EmitComments = GL_FALSE; - ctx->Shader.Flags = get_shader_flags(); } @@ -1639,7 +1613,6 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count, struct gl_shader_program *shProg = ctx->Shader.CurrentProgram; struct gl_uniform *uniform; GLint elems, offset; - GLenum basicType; if (!shProg || !shProg->LinkStatus) { _mesa_error(ctx, GL_INVALID_OPERATION, "glUniform(program not linked)"); @@ -1663,35 +1636,19 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count, switch (type) { case GL_FLOAT: - basicType = GL_FLOAT; - elems = 1; - break; case GL_INT: - basicType = GL_INT; elems = 1; break; case GL_FLOAT_VEC2: - basicType = GL_FLOAT; - elems = 2; - break; case GL_INT_VEC2: - basicType = GL_INT; elems = 2; break; case GL_FLOAT_VEC3: - basicType = GL_FLOAT; - elems = 3; - break; case GL_INT_VEC3: - basicType = GL_INT; elems = 3; break; case GL_FLOAT_VEC4: - basicType = GL_FLOAT; - elems = 4; - break; case GL_INT_VEC4: - basicType = GL_INT; elems = 4; break; default: @@ -1703,25 +1660,6 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count, uniform = &shProg->Uniforms->Uniforms[location]; - if (ctx->Shader.Flags & GLSL_UNIFORMS) { - GLint i; - _mesa_printf("Mesa: set program %u uniform %s (loc %d) to: ", - shProg->Name, uniform->Name, location); - if (basicType == GL_INT) { - const GLint *v = (const GLint *) values; - for (i = 0; i < count * elems; i++) { - _mesa_printf("%d ", v[i]); - } - } - else { - const GLfloat *v = (const GLfloat *) values; - for (i = 0; i < count * elems; i++) { - _mesa_printf("%g ", v[i]); - } - } - _mesa_printf("\n"); - } - /* A uniform var may be used by both a vertex shader and a fragment * shader. We may need to update one or both shader's uniform here: */ diff --git a/src/mesa/shader/slang/slang_compile.c b/src/mesa/shader/slang/slang_compile.c index 0c7881dd19..40460e0c7e 100644 --- a/src/mesa/shader/slang/slang_compile.c +++ b/src/mesa/shader/slang/slang_compile.c @@ -32,7 +32,6 @@ #include "main/context.h" #include "shader/program.h" #include "shader/programopt.h" -#include "shader/prog_optimize.h" #include "shader/prog_print.h" #include "shader/prog_parameter.h" #include "shader/grammar/grammar_mesa.h" @@ -2795,22 +2794,11 @@ _slang_compile(GLcontext *ctx, struct gl_shader *shader) _mesa_print_program(shader->Program); #endif - if (success) { - if ((ctx->Shader.Flags & GLSL_NO_OPT) == 0) { - if ((ctx->Shader.Flags & GLSL_OPT) || shader->Pragmas.Optimize) { - /* apply program optimizations */ - _mesa_remove_extra_moves(shader->Program); - _mesa_remove_dead_code(shader->Program); - _mesa_consolidate_registers(shader->Program); - } - } - } - shader->CompileStatus = success; - if (ctx->Shader.Flags & GLSL_LOG) { - _mesa_write_shader_to_file(shader); - } +#if 0 + _mesa_write_shader_to_file(shader); +#endif return success; } diff --git a/src/mesa/shader/slang/slang_link.c b/src/mesa/shader/slang/slang_link.c index 4ee1beccd4..77bcda0871 100644 --- a/src/mesa/shader/slang/slang_link.c +++ b/src/mesa/shader/slang/slang_link.c @@ -675,12 +675,12 @@ _slang_link(GLcontext *ctx, /* notify driver that a new fragment program has been compiled/linked */ ctx->Driver.ProgramStringNotify(ctx, GL_FRAGMENT_PROGRAM_ARB, &shProg->FragmentProgram->Base); - if (ctx->Shader.Flags & GLSL_DUMP) { - _mesa_printf("Mesa original fragment program:\n"); + if (MESA_VERBOSE & VERBOSE_GLSL_DUMP) { + printf("Mesa original fragment program:\n"); _mesa_print_program(&fragProg->Base); _mesa_print_program_parameters(ctx, &fragProg->Base); - _mesa_printf("Mesa post-link fragment program:\n"); + printf("Mesa post-link fragment program:\n"); _mesa_print_program(&shProg->FragmentProgram->Base); _mesa_print_program_parameters(ctx, &shProg->FragmentProgram->Base); } @@ -693,26 +693,22 @@ _slang_link(GLcontext *ctx, /* notify driver that a new vertex program has been compiled/linked */ ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB, &shProg->VertexProgram->Base); - if (ctx->Shader.Flags & GLSL_DUMP) { - _mesa_printf("Mesa original vertex program:\n"); + if (MESA_VERBOSE & VERBOSE_GLSL_DUMP) { + printf("Mesa original vertex program:\n"); _mesa_print_program(&vertProg->Base); _mesa_print_program_parameters(ctx, &vertProg->Base); - _mesa_printf("Mesa post-link vertex program:\n"); + printf("Mesa post-link vertex program:\n"); _mesa_print_program(&shProg->VertexProgram->Base); _mesa_print_program_parameters(ctx, &shProg->VertexProgram->Base); } } - if (ctx->Shader.Flags & GLSL_DUMP) { - _mesa_printf("Varying vars:\n"); + if (MESA_VERBOSE & VERBOSE_GLSL_DUMP) { + printf("Varying vars:\n"); _mesa_print_parameter_list(shProg->Varying); - if (shProg->InfoLog) { - _mesa_printf("Info Log: %s\n", shProg->InfoLog); - } } - shProg->LinkStatus = (shProg->VertexProgram || shProg->FragmentProgram); } diff --git a/src/mesa/shader/slang/slang_log.c b/src/mesa/shader/slang/slang_log.c index 30729ba8d5..d5576d7ee2 100644 --- a/src/mesa/shader/slang/slang_log.c +++ b/src/mesa/shader/slang/slang_log.c @@ -77,11 +77,13 @@ slang_info_log_message(slang_info_log * log, const char *prefix, slang_string_concat(log->text, msg); slang_string_concat(log->text, "\n"); + if (MESA_VERBOSE & VERBOSE_GLSL) { + _mesa_printf("Mesa: GLSL %s", log->text); + } + return 1; } -#define EXIT_SUCCESS 13 - int slang_info_log_print(slang_info_log * log, const char *msg, ...) { diff --git a/src/mesa/sources b/src/mesa/sources index a7210c134d..01a3fb89e6 100644 --- a/src/mesa/sources +++ b/src/mesa/sources @@ -177,7 +177,6 @@ SHADER_SOURCES = \ shader/prog_execute.c \ shader/prog_instruction.c \ shader/prog_noise.c \ - shader/prog_optimize.c \ shader/prog_parameter.c \ shader/prog_print.c \ shader/prog_statevars.c \ -- cgit v1.2.3 From e01a03d2220199a4541f2cb8b42035237a571aa4 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 6 Feb 2009 10:21:36 -0700 Subject: glsl: new MESA_GLSL env var for GLSL debugging features Replaces the VERBOSE_GLSL, VERBOSE_GLSL_DUMP flags which only worked in debug builds. MESA_GLSL will work both in debug and non-debug builds. Also add facility to dump glUniform() calls to stdout. --- src/mesa/main/debug.c | 4 +-- src/mesa/main/mtypes.h | 10 ++++-- src/mesa/shader/shader_api.c | 62 +++++++++++++++++++++++++++++++++++ src/mesa/shader/slang/slang_compile.c | 6 ++-- src/mesa/shader/slang/slang_link.c | 19 ++++++----- src/mesa/shader/slang/slang_log.c | 4 --- 6 files changed, 85 insertions(+), 20 deletions(-) (limited to 'src/mesa/main/debug.c') diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 77fef32558..65970a53a9 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -164,9 +164,7 @@ static void add_debug_flags( const char *debug ) { "api", VERBOSE_API }, { "list", VERBOSE_DISPLAY_LIST }, { "lighting", VERBOSE_LIGHTING }, - { "disassem", VERBOSE_DISASSEM }, - { "glsl", VERBOSE_GLSL }, /* report GLSL compile/link errors */ - { "glsl_dump", VERBOSE_GLSL_DUMP } /* print shader GPU instructions */ + { "disassem", VERBOSE_DISASSEM } }; GLuint i; diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 17dd3e6afd..509da06d09 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -2162,6 +2162,13 @@ struct gl_shader_program }; +#define GLSL_DUMP 0x1 /**< Dump shaders to stdout */ +#define GLSL_LOG 0x2 /**< Write shaders to files */ +#define GLSL_OPT 0x4 /**< Force optimizations (override pragmas) */ +#define GLSL_NO_OPT 0x8 /**< Force no optimizations (override pragmas) */ +#define GLSL_UNIFORMS 0x10 /**< Print glUniform calls */ + + /** * Context state for GLSL vertex/fragment shaders. */ @@ -2173,6 +2180,7 @@ struct gl_shader_state GLboolean EmitCondCodes; /**< Use condition codes? */ GLboolean EmitComments; /**< Annotated instructions */ void *MemPool; + GLbitfield Flags; /**< Mask of GLSL_x flags */ }; @@ -3163,8 +3171,6 @@ enum _verbose VERBOSE_PRIMS = 0x0400, VERBOSE_VERTS = 0x0800, VERBOSE_DISASSEM = 0x1000, - VERBOSE_GLSL = 0x2000, - VERBOSE_GLSL_DUMP = 0x4000 }; diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index acee34dc5b..fb2a7e54fe 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -370,6 +370,31 @@ _mesa_lookup_shader_err(GLcontext *ctx, GLuint name, const char *caller) } +/** + * Return mask of GLSL_x flags by examining the MESA_GLSL env var. + */ +static GLbitfield +get_shader_flags(void) +{ + GLbitfield flags = 0x0; + const char *env = _mesa_getenv("MESA_GLSL"); + + if (env) { + if (_mesa_strstr(env, "dump")) + flags |= GLSL_DUMP; + if (_mesa_strstr(env, "log")) + flags |= GLSL_LOG; + if (_mesa_strstr(env, "nopt")) + flags |= GLSL_NO_OPT; + else if (_mesa_strstr(env, "opt")) + flags |= GLSL_OPT; + if (_mesa_strstr(env, "uniform")) + flags |= GLSL_UNIFORMS; + } + + return flags; +} + /** * Initialize context's shader state. @@ -383,6 +408,7 @@ _mesa_init_shader_state(GLcontext * ctx) ctx->Shader.EmitHighLevelInstructions = GL_TRUE; ctx->Shader.EmitCondCodes = GL_TRUE; /* XXX probably want GL_FALSE... */ ctx->Shader.EmitComments = GL_FALSE; + ctx->Shader.Flags = get_shader_flags(); } @@ -1613,6 +1639,7 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count, struct gl_shader_program *shProg = ctx->Shader.CurrentProgram; struct gl_uniform *uniform; GLint elems, offset; + GLenum basicType; if (!shProg || !shProg->LinkStatus) { _mesa_error(ctx, GL_INVALID_OPERATION, "glUniform(program not linked)"); @@ -1636,19 +1663,35 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count, switch (type) { case GL_FLOAT: + basicType = GL_FLOAT; + elems = 1; + break; case GL_INT: + basicType = GL_INT; elems = 1; break; case GL_FLOAT_VEC2: + basicType = GL_FLOAT; + elems = 2; + break; case GL_INT_VEC2: + basicType = GL_INT; elems = 2; break; case GL_FLOAT_VEC3: + basicType = GL_FLOAT; + elems = 3; + break; case GL_INT_VEC3: + basicType = GL_INT; elems = 3; break; case GL_FLOAT_VEC4: + basicType = GL_FLOAT; + elems = 4; + break; case GL_INT_VEC4: + basicType = GL_INT; elems = 4; break; default: @@ -1660,6 +1703,25 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count, uniform = &shProg->Uniforms->Uniforms[location]; + if (ctx->Shader.Flags & GLSL_UNIFORMS) { + GLint i; + _mesa_printf("Mesa: set program %u uniform %s (loc %d) to: ", + shProg->Name, uniform->Name, location); + if (basicType == GL_INT) { + const GLint *v = (const GLint *) values; + for (i = 0; i < count * elems; i++) { + _mesa_printf("%d ", v[i]); + } + } + else { + const GLfloat *v = (const GLfloat *) values; + for (i = 0; i < count * elems; i++) { + _mesa_printf("%g ", v[i]); + } + } + _mesa_printf("\n"); + } + /* A uniform var may be used by both a vertex shader and a fragment * shader. We may need to update one or both shader's uniform here: */ diff --git a/src/mesa/shader/slang/slang_compile.c b/src/mesa/shader/slang/slang_compile.c index 40460e0c7e..cfed977905 100644 --- a/src/mesa/shader/slang/slang_compile.c +++ b/src/mesa/shader/slang/slang_compile.c @@ -2796,9 +2796,9 @@ _slang_compile(GLcontext *ctx, struct gl_shader *shader) shader->CompileStatus = success; -#if 0 - _mesa_write_shader_to_file(shader); -#endif + if (ctx->Shader.Flags & GLSL_LOG) { + _mesa_write_shader_to_file(shader); + } return success; } diff --git a/src/mesa/shader/slang/slang_link.c b/src/mesa/shader/slang/slang_link.c index 77bcda0871..848a64f932 100644 --- a/src/mesa/shader/slang/slang_link.c +++ b/src/mesa/shader/slang/slang_link.c @@ -675,12 +675,12 @@ _slang_link(GLcontext *ctx, /* notify driver that a new fragment program has been compiled/linked */ ctx->Driver.ProgramStringNotify(ctx, GL_FRAGMENT_PROGRAM_ARB, &shProg->FragmentProgram->Base); - if (MESA_VERBOSE & VERBOSE_GLSL_DUMP) { - printf("Mesa original fragment program:\n"); + if (ctx->Shader.Flags & GLSL_DUMP) { + _mesa_printf("Mesa pre-link fragment program:\n"); _mesa_print_program(&fragProg->Base); _mesa_print_program_parameters(ctx, &fragProg->Base); - printf("Mesa post-link fragment program:\n"); + _mesa_printf("Mesa post-link fragment program:\n"); _mesa_print_program(&shProg->FragmentProgram->Base); _mesa_print_program_parameters(ctx, &shProg->FragmentProgram->Base); } @@ -693,20 +693,23 @@ _slang_link(GLcontext *ctx, /* notify driver that a new vertex program has been compiled/linked */ ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB, &shProg->VertexProgram->Base); - if (MESA_VERBOSE & VERBOSE_GLSL_DUMP) { - printf("Mesa original vertex program:\n"); + if (ctx->Shader.Flags & GLSL_DUMP) { + _mesa_printf("Mesa pre-link vertex program:\n"); _mesa_print_program(&vertProg->Base); _mesa_print_program_parameters(ctx, &vertProg->Base); - printf("Mesa post-link vertex program:\n"); + _mesa_printf("Mesa post-link vertex program:\n"); _mesa_print_program(&shProg->VertexProgram->Base); _mesa_print_program_parameters(ctx, &shProg->VertexProgram->Base); } } - if (MESA_VERBOSE & VERBOSE_GLSL_DUMP) { - printf("Varying vars:\n"); + if (ctx->Shader.Flags & GLSL_DUMP) { + _mesa_printf("Varying vars:\n"); _mesa_print_parameter_list(shProg->Varying); + if (shProg->InfoLog) { + _mesa_printf("Info Log: %s\n", shProg->InfoLog); + } } shProg->LinkStatus = (shProg->VertexProgram || shProg->FragmentProgram); diff --git a/src/mesa/shader/slang/slang_log.c b/src/mesa/shader/slang/slang_log.c index d5576d7ee2..d7d2b4fbfd 100644 --- a/src/mesa/shader/slang/slang_log.c +++ b/src/mesa/shader/slang/slang_log.c @@ -77,10 +77,6 @@ slang_info_log_message(slang_info_log * log, const char *prefix, slang_string_concat(log->text, msg); slang_string_concat(log->text, "\n"); - if (MESA_VERBOSE & VERBOSE_GLSL) { - _mesa_printf("Mesa: GLSL %s", log->text); - } - return 1; } -- cgit v1.2.3 From 266fe93a87d5c0c21e9e7960699104e0e8bd54b4 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 7 Feb 2009 11:49:52 -0700 Subject: mesa: debug code for printing info about textures, writing teximages to disk --- src/mesa/main/debug.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/mesa/main/debug.h | 3 ++ 2 files changed, 102 insertions(+) (limited to 'src/mesa/main/debug.c') diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 65970a53a9..90a3bf1f04 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -24,9 +24,13 @@ #include "mtypes.h" #include "context.h" +#include "hash.h" #include "imports.h" #include "debug.h" #include "get.h" +#include "texobj.h" +#include "texformat.h" + /** * Primitive names @@ -219,3 +223,98 @@ _mesa_init_debug( GLcontext *ctx ) add_debug_flags(c); } + +/* + * Write ppm file + */ +static void +write_ppm(const char *filename, const GLubyte *buffer, int width, int height, + int comps, int rcomp, int gcomp, int bcomp) +{ + FILE *f = fopen( filename, "w" ); + if (f) { + int i, x, y; + const GLubyte *ptr = buffer; + fprintf(f,"P6\n"); + fprintf(f,"# ppm-file created by osdemo.c\n"); + fprintf(f,"%i %i\n", width,height); + fprintf(f,"255\n"); + fclose(f); + f = fopen( filename, "ab" ); /* reopen in binary append mode */ + for (y=height-1; y>=0; y--) { + for (x=0; xImage[0][0]; + if (img) { + char s[100]; + + /* make filename */ + sprintf(s, "/tmp/teximage%u.ppm", texObj->Name); + + switch (img->TexFormat->MesaFormat) { + case MESA_FORMAT_RGBA8888: + write_ppm(s, img->Data, img->Width, img->Height, 4, 3, 2, 1); + break; + case MESA_FORMAT_ARGB8888: + write_ppm(s, img->Data, img->Width, img->Height, 4, 2, 1, 0); + break; + default: + printf("XXXX unsupported mesa tex format %d in %s\n", + img->TexFormat->MesaFormat, __FUNCTION__); + } + } +} + + +static GLboolean DumpImages; + + +static void +dump_texture_cb(GLuint id, void *data, void *userData) +{ + struct gl_texture_object *texObj = (struct gl_texture_object *) data; + (void) userData; + int i; + + printf("Texture %u\n", texObj->Name); + printf(" Target 0x%x\n", texObj->Target); + for (i = 0; i < MAX_TEXTURE_LEVELS; i++) { + struct gl_texture_image *texImg = texObj->Image[0][i]; + if (texImg) { + printf(" Image %u: %d x %d x %d at %p\n", i, + texImg->Width, texImg->Height, texImg->Depth, texImg->Data); + if (DumpImages && i == 0) { + write_texture_image(texObj); + } + } + } +} + + +/** + * Print basic info about all texture objext to stdout. + * If dumpImages is true, write PPM of level[0] image to a file. + */ +void +_mesa_dump_textures(GLboolean dumpImages) +{ + GET_CURRENT_CONTEXT(ctx); + DumpImages = dumpImages; + _mesa_HashDeleteAll(ctx->Shared->TexObjects, dump_texture_cb, ctx); +} diff --git a/src/mesa/main/debug.h b/src/mesa/main/debug.h index 94d99c384b..1862ec75b7 100644 --- a/src/mesa/main/debug.h +++ b/src/mesa/main/debug.h @@ -57,4 +57,7 @@ extern void _mesa_init_debug( GLcontext *ctx ); #endif +extern void +_mesa_dump_textures(GLboolean dumpImages); + #endif -- cgit v1.2.3 From 8cadf6c0a152a5945e34ea8f6d9935ee399e6ae1 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Wed, 11 Feb 2009 13:50:43 +0000 Subject: mesa: Move statements after declarations. --- src/mesa/main/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mesa/main/debug.c') diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 90a3bf1f04..fcef093ac3 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -289,8 +289,8 @@ static void dump_texture_cb(GLuint id, void *data, void *userData) { struct gl_texture_object *texObj = (struct gl_texture_object *) data; - (void) userData; int i; + (void) userData; printf("Texture %u\n", texObj->Name); printf(" Target 0x%x\n", texObj->Target); -- cgit v1.2.3 From 433f2ab2ec4685328c3ee4802fab84fd12671eb3 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Mon, 2 Mar 2009 17:52:30 -0700 Subject: mesa: more tex image debug/dumping code --- src/mesa/main/debug.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/mesa/main/debug.c') diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index fcef093ac3..fdd10dd307 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -23,6 +23,7 @@ */ #include "mtypes.h" +#include "colormac.h" #include "context.h" #include "hash.h" #include "imports.h" @@ -274,6 +275,27 @@ write_texture_image(struct gl_texture_object *texObj) case MESA_FORMAT_ARGB8888: write_ppm(s, img->Data, img->Width, img->Height, 4, 2, 1, 0); break; + case MESA_FORMAT_RGB888: + write_ppm(s, img->Data, img->Width, img->Height, 3, 2, 1, 0); + break; + case MESA_FORMAT_RGB565: + { + GLubyte *buf2 = (GLubyte *) _mesa_malloc(img->Width * img->Height * 3); + GLint i; + for (i = 0; i < img->Width * img->Height; i++) { + GLint r, g, b; + GLushort s = ((GLushort *) img->Data)[i]; + r = UBYTE_TO_CHAN( ((s >> 8) & 0xf8) | ((s >> 13) & 0x7) ); + g = UBYTE_TO_CHAN( ((s >> 3) & 0xfc) | ((s >> 9) & 0x3) ); + b = UBYTE_TO_CHAN( ((s << 3) & 0xf8) | ((s >> 2) & 0x7) ); + buf2[i*3+1] = r; + buf2[i*3+2] = g; + buf2[i*3+3] = b; + } + write_ppm(s, buf2, img->Width, img->Height, 3, 2, 1, 0); + _mesa_free(buf2); + } + break; default: printf("XXXX unsupported mesa tex format %d in %s\n", img->TexFormat->MesaFormat, __FUNCTION__); -- cgit v1.2.3 From 8ee6ab6acb8f89fbc87865751573fcbffb4695ef Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 22 Apr 2009 15:02:01 -0600 Subject: mesa: fix _mesa_dump_textures(), add null ptr check Calling _mesa_dump_textures() deleted the textures... oops!!! --- src/mesa/main/debug.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/mesa/main/debug.c') diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index fdd10dd307..2eabcdaf49 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -3,6 +3,7 @@ * Version: 6.5 * * Copyright (C) 1999-2005 Brian Paul All Rights Reserved. + * Copyright (C) 2009 VMware, Inc. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -262,7 +263,7 @@ static void write_texture_image(struct gl_texture_object *texObj) { const struct gl_texture_image *img = texObj->Image[0][0]; - if (img) { + if (img && img->Data) { char s[100]; /* make filename */ @@ -338,5 +339,5 @@ _mesa_dump_textures(GLboolean dumpImages) { GET_CURRENT_CONTEXT(ctx); DumpImages = dumpImages; - _mesa_HashDeleteAll(ctx->Shared->TexObjects, dump_texture_cb, ctx); + _mesa_HashWalk(ctx->Shared->TexObjects, dump_texture_cb, ctx); } -- cgit v1.2.3 From 02f73c43b4060b58fa0d9b3da4753cbbccde3c84 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 21 May 2009 09:12:35 -0600 Subject: mesa: added debug functions for dumping color/depth/stencil buffers --- src/mesa/main/debug.c | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/mesa/main/debug.h | 9 +++++ 2 files changed, 110 insertions(+) (limited to 'src/mesa/main/debug.c') diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 2eabcdaf49..80bc6afc4c 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -341,3 +341,104 @@ _mesa_dump_textures(GLboolean dumpImages) DumpImages = dumpImages; _mesa_HashWalk(ctx->Shared->TexObjects, dump_texture_cb, ctx); } + + +void +_mesa_dump_color_buffer(const char *filename) +{ + GET_CURRENT_CONTEXT(ctx); + const GLuint w = ctx->DrawBuffer->Width; + const GLuint h = ctx->DrawBuffer->Height; + GLubyte *buf; + + buf = (GLubyte *) _mesa_malloc(w * h * 4); + + glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT); + glPixelStorei(GL_PACK_ALIGNMENT, 1); + glPixelStorei(GL_PACK_INVERT_MESA, GL_TRUE); + + glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, buf); + + _mesa_printf("ReadBuffer %p 0x%x DrawBuffer %p 0x%x\n", + ctx->ReadBuffer->_ColorReadBuffer, + ctx->ReadBuffer->ColorReadBuffer, + ctx->DrawBuffer->_ColorDrawBuffers[0], + ctx->DrawBuffer->ColorDrawBuffer[0]); + _mesa_printf("Writing %d x %d color buffer to %s\n", w, h, filename); + write_ppm(filename, buf, w, h, 4, 0, 1, 2); + + glPopClientAttrib(); + + _mesa_free(buf); +} + + +void +_mesa_dump_depth_buffer(const char *filename) +{ + GET_CURRENT_CONTEXT(ctx); + const GLuint w = ctx->DrawBuffer->Width; + const GLuint h = ctx->DrawBuffer->Height; + GLuint *buf; + GLubyte *buf2; + GLuint i; + + buf = (GLuint *) _mesa_malloc(w * h * 4); /* 4 bpp */ + buf2 = (GLubyte *) _mesa_malloc(w * h * 3); /* 3 bpp */ + + glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT); + glPixelStorei(GL_PACK_ALIGNMENT, 1); + glPixelStorei(GL_PACK_INVERT_MESA, GL_TRUE); + + glReadPixels(0, 0, w, h, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, buf); + + /* spread 24 bits of Z across R, G, B */ + for (i = 0; i < w * h; i++) { + buf2[i*3+0] = (buf[i] >> 24) & 0xff; + buf2[i*3+1] = (buf[i] >> 16) & 0xff; + buf2[i*3+2] = (buf[i] >> 8) & 0xff; + } + + _mesa_printf("Writing %d x %d depth buffer to %s\n", w, h, filename); + write_ppm(filename, buf2, w, h, 3, 0, 1, 2); + + glPopClientAttrib(); + + _mesa_free(buf); + _mesa_free(buf2); +} + + +void +_mesa_dump_stencil_buffer(const char *filename) +{ + GET_CURRENT_CONTEXT(ctx); + const GLuint w = ctx->DrawBuffer->Width; + const GLuint h = ctx->DrawBuffer->Height; + GLubyte *buf; + GLubyte *buf2; + GLuint i; + + buf = (GLubyte *) _mesa_malloc(w * h); /* 1 bpp */ + buf2 = (GLubyte *) _mesa_malloc(w * h * 3); /* 3 bpp */ + + glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT); + glPixelStorei(GL_PACK_ALIGNMENT, 1); + glPixelStorei(GL_PACK_INVERT_MESA, GL_TRUE); + + glReadPixels(0, 0, w, h, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, buf); + + for (i = 0; i < w * h; i++) { + buf2[i*3+0] = buf[i]; + buf2[i*3+1] = (buf[i] & 127) * 2; + buf2[i*3+2] = (buf[i] - 128) * 2; + } + + _mesa_printf("Writing %d x %d stencil buffer to %s\n", w, h, filename); + write_ppm(filename, buf2, w, h, 3, 0, 1, 2); + + glPopClientAttrib(); + + _mesa_free(buf); + _mesa_free(buf2); +} diff --git a/src/mesa/main/debug.h b/src/mesa/main/debug.h index 1862ec75b7..bb384c4324 100644 --- a/src/mesa/main/debug.h +++ b/src/mesa/main/debug.h @@ -60,4 +60,13 @@ extern void _mesa_init_debug( GLcontext *ctx ); extern void _mesa_dump_textures(GLboolean dumpImages); +extern void +_mesa_dump_color_buffer(const char *filename); + +extern void +_mesa_dump_depth_buffer(const char *filename); + +extern void +_mesa_dump_stencil_buffer(const char *filename); + #endif -- cgit v1.2.3 From 185fbcce3644ff861c60cd73923ef7187c623564 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 4 Jun 2009 14:26:51 -0600 Subject: mesa: call _mesa_ funcs, not gl funcs for debugging --- src/mesa/main/debug.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'src/mesa/main/debug.c') diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 80bc6afc4c..7276c22742 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -24,12 +24,15 @@ */ #include "mtypes.h" +#include "attrib.h" #include "colormac.h" #include "context.h" #include "hash.h" #include "imports.h" #include "debug.h" #include "get.h" +#include "pixelstore.h" +#include "readpix.h" #include "texobj.h" #include "texformat.h" @@ -353,11 +356,11 @@ _mesa_dump_color_buffer(const char *filename) buf = (GLubyte *) _mesa_malloc(w * h * 4); - glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - glPixelStorei(GL_PACK_INVERT_MESA, GL_TRUE); + _mesa_PushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT); + _mesa_PixelStorei(GL_PACK_ALIGNMENT, 1); + _mesa_PixelStorei(GL_PACK_INVERT_MESA, GL_TRUE); - glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, buf); + _mesa_ReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, buf); _mesa_printf("ReadBuffer %p 0x%x DrawBuffer %p 0x%x\n", ctx->ReadBuffer->_ColorReadBuffer, @@ -367,7 +370,7 @@ _mesa_dump_color_buffer(const char *filename) _mesa_printf("Writing %d x %d color buffer to %s\n", w, h, filename); write_ppm(filename, buf, w, h, 4, 0, 1, 2); - glPopClientAttrib(); + _mesa_PopClientAttrib(); _mesa_free(buf); } @@ -386,11 +389,11 @@ _mesa_dump_depth_buffer(const char *filename) buf = (GLuint *) _mesa_malloc(w * h * 4); /* 4 bpp */ buf2 = (GLubyte *) _mesa_malloc(w * h * 3); /* 3 bpp */ - glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - glPixelStorei(GL_PACK_INVERT_MESA, GL_TRUE); + _mesa_PushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT); + _mesa_PixelStorei(GL_PACK_ALIGNMENT, 1); + _mesa_PixelStorei(GL_PACK_INVERT_MESA, GL_TRUE); - glReadPixels(0, 0, w, h, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, buf); + _mesa_ReadPixels(0, 0, w, h, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, buf); /* spread 24 bits of Z across R, G, B */ for (i = 0; i < w * h; i++) { @@ -402,7 +405,7 @@ _mesa_dump_depth_buffer(const char *filename) _mesa_printf("Writing %d x %d depth buffer to %s\n", w, h, filename); write_ppm(filename, buf2, w, h, 3, 0, 1, 2); - glPopClientAttrib(); + _mesa_PopClientAttrib(); _mesa_free(buf); _mesa_free(buf2); @@ -422,11 +425,11 @@ _mesa_dump_stencil_buffer(const char *filename) buf = (GLubyte *) _mesa_malloc(w * h); /* 1 bpp */ buf2 = (GLubyte *) _mesa_malloc(w * h * 3); /* 3 bpp */ - glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - glPixelStorei(GL_PACK_INVERT_MESA, GL_TRUE); + _mesa_PushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT); + _mesa_PixelStorei(GL_PACK_ALIGNMENT, 1); + _mesa_PixelStorei(GL_PACK_INVERT_MESA, GL_TRUE); - glReadPixels(0, 0, w, h, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, buf); + _mesa_ReadPixels(0, 0, w, h, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, buf); for (i = 0; i < w * h; i++) { buf2[i*3+0] = buf[i]; @@ -437,7 +440,7 @@ _mesa_dump_stencil_buffer(const char *filename) _mesa_printf("Writing %d x %d stencil buffer to %s\n", w, h, filename); write_ppm(filename, buf2, w, h, 3, 0, 1, 2); - glPopClientAttrib(); + _mesa_PopClientAttrib(); _mesa_free(buf); _mesa_free(buf2); -- cgit v1.2.3 From e09f78d8dc7f20bb11f84206b6f1d71418332d8a Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Mon, 8 Jun 2009 16:29:46 +0100 Subject: mesa: Use matching signedness for the counter as upper bound. --- src/mesa/main/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mesa/main/debug.c') diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 2eabcdaf49..b54e47919d 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -282,7 +282,7 @@ write_texture_image(struct gl_texture_object *texObj) case MESA_FORMAT_RGB565: { GLubyte *buf2 = (GLubyte *) _mesa_malloc(img->Width * img->Height * 3); - GLint i; + GLuint i; for (i = 0; i < img->Width * img->Height; i++) { GLint r, g, b; GLushort s = ((GLushort *) img->Data)[i]; -- cgit v1.2.3 From b98f0f2d51494d3f766bc53941fff754fce8bd0f Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 4 Aug 2009 15:04:37 -0600 Subject: mesa: better texture dump/debug code --- src/mesa/main/debug.c | 97 ++++++++++++++++++++++++--------------------------- 1 file changed, 45 insertions(+), 52 deletions(-) (limited to 'src/mesa/main/debug.c') diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 1c8c44fcb9..8492c8561d 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -33,6 +33,7 @@ #include "get.h" #include "pixelstore.h" #include "readpix.h" +#include "texgetimage.h" #include "texobj.h" #include "texformat.h" @@ -234,11 +235,11 @@ _mesa_init_debug( GLcontext *ctx ) */ static void write_ppm(const char *filename, const GLubyte *buffer, int width, int height, - int comps, int rcomp, int gcomp, int bcomp) + int comps, int rcomp, int gcomp, int bcomp, GLboolean invert) { FILE *f = fopen( filename, "w" ); if (f) { - int i, x, y; + int x, y; const GLubyte *ptr = buffer; fprintf(f,"P6\n"); fprintf(f,"# ppm-file created by osdemo.c\n"); @@ -246,10 +247,11 @@ write_ppm(const char *filename, const GLubyte *buffer, int width, int height, fprintf(f,"255\n"); fclose(f); f = fopen( filename, "ab" ); /* reopen in binary append mode */ - for (y=height-1; y>=0; y--) { - for (x=0; xImage[0][0]; - if (img && img->Data) { + struct gl_texture_image *img = texObj->Image[face][level]; + if (img) { + GET_CURRENT_CONTEXT(ctx); + struct gl_pixelstore_attrib store; + GLubyte *buffer; char s[100]; + buffer = (GLubyte *) _mesa_malloc(img->Width * img->Height + * img->Depth * 4); + + store = ctx->Pack; /* save */ + ctx->Pack = ctx->DefaultPacking; + + ctx->Driver.GetTexImage(ctx, texObj->Target, level, + GL_RGBA, GL_UNSIGNED_BYTE, + buffer, texObj, img); + /* make filename */ - sprintf(s, "/tmp/teximage%u.ppm", texObj->Name); - - switch (img->TexFormat->MesaFormat) { - case MESA_FORMAT_RGBA8888: - write_ppm(s, img->Data, img->Width, img->Height, 4, 3, 2, 1); - break; - case MESA_FORMAT_ARGB8888: - write_ppm(s, img->Data, img->Width, img->Height, 4, 2, 1, 0); - break; - case MESA_FORMAT_RGB888: - write_ppm(s, img->Data, img->Width, img->Height, 3, 2, 1, 0); - break; - case MESA_FORMAT_RGB565: - { - GLubyte *buf2 = (GLubyte *) _mesa_malloc(img->Width * img->Height * 3); - GLuint i; - for (i = 0; i < img->Width * img->Height; i++) { - GLint r, g, b; - GLushort s = ((GLushort *) img->Data)[i]; - r = UBYTE_TO_CHAN( ((s >> 8) & 0xf8) | ((s >> 13) & 0x7) ); - g = UBYTE_TO_CHAN( ((s >> 3) & 0xfc) | ((s >> 9) & 0x3) ); - b = UBYTE_TO_CHAN( ((s << 3) & 0xf8) | ((s >> 2) & 0x7) ); - buf2[i*3+1] = r; - buf2[i*3+2] = g; - buf2[i*3+3] = b; - } - write_ppm(s, buf2, img->Width, img->Height, 3, 2, 1, 0); - _mesa_free(buf2); - } - break; - default: - printf("XXXX unsupported mesa tex format %d in %s\n", - img->TexFormat->MesaFormat, __FUNCTION__); - } + _mesa_sprintf(s, "/tmp/teximage%u.ppm", texObj->Name); + + _mesa_printf(" Writing image level %u to %s\n", level, s); + write_ppm(s, buffer, img->Width, img->Height, 4, 0, 1, 2, GL_FALSE); + + ctx->Pack = store; /* restore */ + + _mesa_free(buffer); } } @@ -316,17 +305,21 @@ dump_texture_cb(GLuint id, void *data, void *userData) { struct gl_texture_object *texObj = (struct gl_texture_object *) data; int i; + GLboolean written = GL_FALSE; (void) userData; - printf("Texture %u\n", texObj->Name); - printf(" Target 0x%x\n", texObj->Target); + _mesa_printf("Texture %u\n", texObj->Name); + _mesa_printf(" Target 0x%x\n", texObj->Target); for (i = 0; i < MAX_TEXTURE_LEVELS; i++) { struct gl_texture_image *texImg = texObj->Image[0][i]; if (texImg) { - printf(" Image %u: %d x %d x %d at %p\n", i, - texImg->Width, texImg->Height, texImg->Depth, texImg->Data); - if (DumpImages && i == 0) { - write_texture_image(texObj); + _mesa_printf(" Image %u: %d x %d x %d, format %u at %p\n", i, + texImg->Width, texImg->Height, texImg->Depth, + texImg->TexFormat->MesaFormat, texImg->Data); + if (DumpImages && !written) { + GLuint face = 0; + write_texture_image(texObj, face, i); + written = GL_TRUE; } } } @@ -368,7 +361,7 @@ _mesa_dump_color_buffer(const char *filename) ctx->DrawBuffer->_ColorDrawBuffers[0], ctx->DrawBuffer->ColorDrawBuffer[0]); _mesa_printf("Writing %d x %d color buffer to %s\n", w, h, filename); - write_ppm(filename, buf, w, h, 4, 0, 1, 2); + write_ppm(filename, buf, w, h, 4, 0, 1, 2, GL_TRUE); _mesa_PopClientAttrib(); @@ -403,7 +396,7 @@ _mesa_dump_depth_buffer(const char *filename) } _mesa_printf("Writing %d x %d depth buffer to %s\n", w, h, filename); - write_ppm(filename, buf2, w, h, 3, 0, 1, 2); + write_ppm(filename, buf2, w, h, 3, 0, 1, 2, GL_TRUE); _mesa_PopClientAttrib(); @@ -438,7 +431,7 @@ _mesa_dump_stencil_buffer(const char *filename) } _mesa_printf("Writing %d x %d stencil buffer to %s\n", w, h, filename); - write_ppm(filename, buf2, w, h, 3, 0, 1, 2); + write_ppm(filename, buf2, w, h, 3, 0, 1, 2, GL_TRUE); _mesa_PopClientAttrib(); -- cgit v1.2.3