[Mesa-dev] [PATCH 08/13] i965 vs: Add get_debug_flag()
Paul Berry
stereotype441 at gmail.com
Wed Nov 16 11:07:15 PST 2011
To determine whether a debug dump should be performed, vec4_visitor
checks the DEBUG_VS bit in INTEL_DEBUG. This patch moves that check
into a single common function, get_debug_flag().
This helps pave the way for sharing code between VS and GS code
generation, by creating a function that can be made virtual.
---
src/mesa/drivers/dri/i965/brw_vec4.h | 2 ++
src/mesa/drivers/dri/i965/brw_vec4_emit.cpp | 21 ++++++++++++++++-----
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 2 +-
3 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h
index 6fafc97..4e17d15 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.h
+++ b/src/mesa/drivers/dri/i965/brw_vec4.h
@@ -515,6 +515,8 @@ public:
bool try_emit_sat(ir_expression *ir);
void resolve_ud_negate(src_reg *reg);
+ bool get_debug_flag() const;
+
int generate_code(int first_non_payload_grf);
void generate_vs_instruction(vec4_instruction *inst,
struct brw_reg dst,
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp b/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp
index e5dc763..0ee6525 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp
@@ -660,9 +660,20 @@ vec4_visitor::run()
prog_data->total_grf = generate_code(first_non_payload_grf);
}
+/**
+ * Return a bool indicating whether debugging output should be generated
+ * for this shader.
+ */
+bool
+vec4_visitor::get_debug_flag() const
+{
+ return INTEL_DEBUG & DEBUG_VS;
+}
+
int
vec4_visitor::generate_code(int first_non_payload_grf)
{
+ bool debug_flag = get_debug_flag();
int last_native_inst = 0;
const char *last_annotation_string = NULL;
ir_instruction *last_annotation_ir = NULL;
@@ -681,7 +692,7 @@ vec4_visitor::generate_code(int first_non_payload_grf)
if (failed())
return 0;
- if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
+ if (unlikely(debug_flag)) {
printf("Native code for vertex shader %d:\n", prog->Name);
}
@@ -689,7 +700,7 @@ vec4_visitor::generate_code(int first_non_payload_grf)
vec4_instruction *inst = (vec4_instruction *)node;
struct brw_reg src[3], dst;
- if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
+ if (unlikely(debug_flag)) {
if (last_annotation_ir != inst->ir) {
last_annotation_ir = inst->ir;
if (last_annotation_ir) {
@@ -862,7 +873,7 @@ vec4_visitor::generate_code(int first_non_payload_grf)
break;
}
- if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
+ if (unlikely(debug_flag)) {
for (unsigned int i = last_native_inst; i < p->nr_insn; i++) {
if (0) {
printf("0x%08x 0x%08x 0x%08x 0x%08x ",
@@ -878,7 +889,7 @@ vec4_visitor::generate_code(int first_non_payload_grf)
last_native_inst = p->nr_insn;
}
- if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
+ if (unlikely(debug_flag)) {
printf("\n");
}
@@ -893,7 +904,7 @@ vec4_visitor::generate_code(int first_non_payload_grf)
* case you're doing that.
*/
if (0) {
- if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
+ if (unlikely(debug_flag)) {
for (unsigned int i = 0; i < p->nr_insn; i++) {
printf("0x%08x 0x%08x 0x%08x 0x%08x ",
((uint32_t *)&p->store[i])[3],
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index 338106c..6262093 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -2428,7 +2428,7 @@ vec4_visitor::fail(const char *format, ...)
this->fail_msg = msg;
- if (INTEL_DEBUG & DEBUG_VS) {
+ if (get_debug_flag()) {
fprintf(stderr, "%s", msg);
}
}
--
1.7.6.4
More information about the mesa-dev
mailing list