@@ -150,6 +150,12 @@ void brw_set_acc_write_control(struct brw_compile *p, GLuint value)
p->current->header.acc_wr_control = value;
}
+void brw_set_breakpoint(struct brw_compile *p)
+{
+ if (p->brw->intel.gen >= 6)
+ p->current->header.debug_control = 1;
+}
+
void brw_push_insn_state( struct brw_compile *p )
{
assert(p->current != &p->stack[BRW_EU_MAX_INSN_STACK-1]);
@@ -793,6 +793,7 @@ void brw_set_predicate_control( struct brw_compile *p, GLuint pc );
void brw_set_predicate_inverse(struct brw_compile *p, bool predicate_inverse);
void brw_set_conditionalmod( struct brw_compile *p, GLuint conditional );
void brw_set_acc_write_control(struct brw_compile *p, GLuint value);
+void brw_set_breakpoint( struct brw_compile *p );
void brw_init_compile(struct brw_context *, struct brw_compile *p,
void *mem_ctx);
@@ -229,6 +229,9 @@ bool do_wm_prog(struct brw_context *brw,
brw_init_compile(brw, &c->func, c);
+ if (brw->wm.debugging)
+ brw_set_breakpoint(&c->func);
+
if (prog && prog->FragmentProgram) {
if (!brw_wm_fs_emit(brw, c, prog))
return false;
Provide a function to allow emitting breakpoints in the instruction oword. Use breakpoints when debugging. Signed-off-by: Ben Widawsky <ben@bwidawsk.net> --- src/mesa/drivers/dri/i965/brw_eu.c | 6 ++++++ src/mesa/drivers/dri/i965/brw_eu.h | 1 + src/mesa/drivers/dri/i965/brw_wm.c | 3 +++ 3 files changed, 10 insertions(+), 0 deletions(-)