mesa: additional debug flags for glsl debug/disassembly
This commit is contained in:
+24
-28
@@ -150,36 +150,32 @@ void _mesa_print_info( void )
|
||||
static void add_debug_flags( const char *debug )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
if (_mesa_strstr(debug, "varray"))
|
||||
MESA_VERBOSE |= VERBOSE_VARRAY;
|
||||
struct debug_option {
|
||||
const char *name;
|
||||
GLbitfield flag;
|
||||
};
|
||||
static const struct debug_option debug_opt[] = {
|
||||
{ "varray", VERBOSE_VARRAY },
|
||||
{ "tex", VERBOSE_TEXTURE },
|
||||
{ "imm", VERBOSE_IMMEDIATE },
|
||||
{ "pipe", VERBOSE_PIPELINE },
|
||||
{ "driver", VERBOSE_DRIVER },
|
||||
{ "state", VERBOSE_STATE },
|
||||
{ "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 */
|
||||
};
|
||||
GLuint i;
|
||||
|
||||
if (_mesa_strstr(debug, "tex"))
|
||||
MESA_VERBOSE |= VERBOSE_TEXTURE;
|
||||
MESA_VERBOSE = 0x0;
|
||||
for (i = 0; i < Elements(debug_opt); i++) {
|
||||
if (_mesa_strstr(debug, debug_opt[i].name))
|
||||
MESA_VERBOSE |= debug_opt[i].flag;
|
||||
}
|
||||
|
||||
if (_mesa_strstr(debug, "imm"))
|
||||
MESA_VERBOSE |= VERBOSE_IMMEDIATE;
|
||||
|
||||
if (_mesa_strstr(debug, "pipe"))
|
||||
MESA_VERBOSE |= VERBOSE_PIPELINE;
|
||||
|
||||
if (_mesa_strstr(debug, "driver"))
|
||||
MESA_VERBOSE |= VERBOSE_DRIVER;
|
||||
|
||||
if (_mesa_strstr(debug, "state"))
|
||||
MESA_VERBOSE |= VERBOSE_STATE;
|
||||
|
||||
if (_mesa_strstr(debug, "api"))
|
||||
MESA_VERBOSE |= VERBOSE_API;
|
||||
|
||||
if (_mesa_strstr(debug, "list"))
|
||||
MESA_VERBOSE |= VERBOSE_DISPLAY_LIST;
|
||||
|
||||
if (_mesa_strstr(debug, "lighting"))
|
||||
MESA_VERBOSE |= VERBOSE_LIGHTING;
|
||||
|
||||
if (_mesa_strstr(debug, "disassem"))
|
||||
MESA_VERBOSE |= VERBOSE_DISASSEM;
|
||||
|
||||
/* Debug flag:
|
||||
*/
|
||||
if (_mesa_strstr(debug, "flush"))
|
||||
|
||||
@@ -3128,7 +3128,9 @@ enum _verbose
|
||||
VERBOSE_LIGHTING = 0x0200,
|
||||
VERBOSE_PRIMS = 0x0400,
|
||||
VERBOSE_VERTS = 0x0800,
|
||||
VERBOSE_DISASSEM = 0x1000
|
||||
VERBOSE_DISASSEM = 0x1000,
|
||||
VERBOSE_GLSL = 0x2000,
|
||||
VERBOSE_GLSL_DUMP = 0x4000
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -219,6 +219,7 @@ link_uniform_vars(struct gl_shader_program *shProg,
|
||||
inst->Sampler, map[ inst->Sampler ]);
|
||||
*/
|
||||
/* here, texUnit is really samplerUnit */
|
||||
assert(inst->TexSrcUnit < MAX_SAMPLERS);
|
||||
inst->TexSrcUnit = samplerMap[inst->TexSrcUnit];
|
||||
prog->SamplerTargets[inst->TexSrcUnit] = inst->TexSrcTarget;
|
||||
prog->SamplersUsed |= (1 << inst->TexSrcUnit);
|
||||
@@ -564,32 +565,30 @@ _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 0
|
||||
printf("************** original fragment program\n");
|
||||
_mesa_print_program(&fragProg->Base);
|
||||
_mesa_print_program_parameters(ctx, &fragProg->Base);
|
||||
#endif
|
||||
#if 0
|
||||
printf("************** linked fragment prog\n");
|
||||
_mesa_print_program(&shProg->FragmentProgram->Base);
|
||||
_mesa_print_program_parameters(ctx, &shProg->FragmentProgram->Base);
|
||||
#endif
|
||||
if (MESA_VERBOSE & VERBOSE_GLSL_DUMP) {
|
||||
printf("Mesa original fragment program:\n");
|
||||
_mesa_print_program(&fragProg->Base);
|
||||
_mesa_print_program_parameters(ctx, &fragProg->Base);
|
||||
|
||||
printf("Mesa post-link fragment program:\n");
|
||||
_mesa_print_program(&shProg->FragmentProgram->Base);
|
||||
_mesa_print_program_parameters(ctx, &shProg->FragmentProgram->Base);
|
||||
}
|
||||
}
|
||||
|
||||
if (vertProg && shProg->VertexProgram) {
|
||||
/* notify driver that a new vertex program has been compiled/linked */
|
||||
ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB,
|
||||
&shProg->VertexProgram->Base);
|
||||
#if 0
|
||||
printf("************** original vertex program\n");
|
||||
_mesa_print_program(&vertProg->Base);
|
||||
_mesa_print_program_parameters(ctx, &vertProg->Base);
|
||||
#endif
|
||||
#if 0
|
||||
printf("************** linked vertex prog\n");
|
||||
_mesa_print_program(&shProg->VertexProgram->Base);
|
||||
_mesa_print_program_parameters(ctx, &shProg->VertexProgram->Base);
|
||||
#endif
|
||||
if (MESA_VERBOSE & VERBOSE_GLSL_DUMP) {
|
||||
printf("Mesa original vertex program:\n");
|
||||
_mesa_print_program(&vertProg->Base);
|
||||
_mesa_print_program_parameters(ctx, &vertProg->Base);
|
||||
|
||||
printf("Mesa post-link vertex program:\n");
|
||||
_mesa_print_program(&shProg->VertexProgram->Base);
|
||||
_mesa_print_program_parameters(ctx, &shProg->VertexProgram->Base);
|
||||
}
|
||||
}
|
||||
|
||||
shProg->LinkStatus = (shProg->VertexProgram || shProg->FragmentProgram);
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
*/
|
||||
|
||||
#include "main/imports.h"
|
||||
#include "main/context.h"
|
||||
#include "slang_log.h"
|
||||
#include "slang_utility.h"
|
||||
|
||||
@@ -86,9 +87,11 @@ slang_info_log_message(slang_info_log * log, const char *prefix,
|
||||
}
|
||||
slang_string_concat(log->text, msg);
|
||||
slang_string_concat(log->text, "\n");
|
||||
#if 0 /* debug */
|
||||
_mesa_printf("Mesa GLSL error/warning: %s\n", log->text);
|
||||
#endif
|
||||
|
||||
if (MESA_VERBOSE & VERBOSE_GLSL) {
|
||||
_mesa_printf("Mesa: GLSL %s\n", log->text);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user