diff options
author | Brian Paul <brianp@vmware.com> | 2009-03-19 09:26:20 -0600 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2009-03-19 09:26:20 -0600 |
commit | 214132adfee555a26b64b2dd359afa6b09e845f5 (patch) | |
tree | 763fed1622560be962372f64a7f472b3c2167aae | |
parent | 264c3d218aa2fd8d06b0e91c1079e43e58d3ee7e (diff) |
glsl: when debug pragma is on, emit comments about function calls/inlines
BTW, the debug pragma syntax is "#pragma debug(on)"
-rw-r--r-- | src/mesa/shader/slang/slang_codegen.c | 6 | ||||
-rw-r--r-- | src/mesa/shader/slang/slang_emit.c | 6 | ||||
-rw-r--r-- | src/mesa/shader/slang/slang_ir.h | 1 |
3 files changed, 13 insertions, 0 deletions
diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c index 6c8c8c1856..13a801c18a 100644 --- a/src/mesa/shader/slang/slang_codegen.c +++ b/src/mesa/shader/slang/slang_codegen.c @@ -1439,6 +1439,12 @@ _slang_gen_function_call(slang_assemble_ctx *A, slang_function *fun, /*_slang_label_delete(A->curFuncEndLabel);*/ A->curFuncEndLabel = prevFuncEndLabel; + if (A->pragmas->Debug) { + char s[1000]; + snprintf(s, sizeof(s), "Call/inline %s()", (char *) fun->header.a_name); + n->Comment = _slang_strdup(s); + } + return n; } diff --git a/src/mesa/shader/slang/slang_emit.c b/src/mesa/shader/slang/slang_emit.c index 94d0c084aa..1b1edb4460 100644 --- a/src/mesa/shader/slang/slang_emit.c +++ b/src/mesa/shader/slang/slang_emit.c @@ -2194,6 +2194,12 @@ emit(slang_emit_info *emitInfo, slang_ir_node *n) return NULL; } + if (n->Comment) { + inst = new_instruction(emitInfo, OPCODE_NOP); + inst->Comment = _mesa_strdup(n->Comment); + inst = NULL; + } + switch (n->Opcode) { case IR_SEQ: /* sequence of two sub-trees */ diff --git a/src/mesa/shader/slang/slang_ir.h b/src/mesa/shader/slang/slang_ir.h index 0ec38b10a5..e796693ed5 100644 --- a/src/mesa/shader/slang/slang_ir.h +++ b/src/mesa/shader/slang/slang_ir.h @@ -212,6 +212,7 @@ typedef struct slang_ir_node_ struct slang_ir_node_ *List; /**< For various linked lists */ struct slang_ir_node_ *Parent; /**< Pointer to logical parent (ie. loop) */ slang_label *Label; /**< Used for branches */ + const char *Comment; /**< If Opcode == IR_COMMENT */ } slang_ir_node; |