diff --git a/hw/xbox/nv2a/pgraph/gl/debug.h b/hw/xbox/nv2a/pgraph/gl/debug.h index 1220244da8..56e90ff47e 100644 --- a/hw/xbox/nv2a/pgraph/gl/debug.h +++ b/hw/xbox/nv2a/pgraph/gl/debug.h @@ -31,6 +31,8 @@ #include "gloffscreen.h" #include "config-host.h" +extern uint32_t g_nv2a_current_frame_draw_count; // abaire + void gl_debug_initialize(void); void gl_debug_message(bool cc, const char *fmt, ...); void gl_debug_group_begin(const char *fmt, ...); diff --git a/hw/xbox/nv2a/pgraph/gl/draw.c b/hw/xbox/nv2a/pgraph/gl/draw.c index bfa92662e7..dfd83093cc 100644 --- a/hw/xbox/nv2a/pgraph/gl/draw.c +++ b/hw/xbox/nv2a/pgraph/gl/draw.c @@ -128,7 +128,7 @@ void pgraph_gl_clear_surface(NV2AState *d, uint32_t parameter) if (r->zeta_binding) { r->zeta_binding->cleared = full_clear && write_zeta; } - + pg->clearing = false; } @@ -137,7 +137,16 @@ void pgraph_gl_draw_begin(NV2AState *d) PGRAPHState *pg = &d->pgraph; PGRAPHGLState *r = pg->gl_renderer_state; - NV2A_GL_DGROUP_BEGIN("NV097_SET_BEGIN_END: 0x%x", pg->primitive_mode); + // abaire +#if DEBUG_NV2A_GL + NV2A_GL_DGROUP_BEGIN("NV097_SET_BEGIN_END: 0x%x %d", pg->primitive_mode, g_nv2a_current_frame_draw_count); + { + char buffer[256] = {0}; + sprintf(buffer, "frame_draw %d ", g_nv2a_current_frame_draw_count); + trace_nv2a_pgraph_method(-1, 0, 0, buffer, 0, 0); + } +#endif + // /abaire uint32_t control_0 = pgraph_reg_r(pg, NV_PGRAPH_CONTROL_0); bool mask_alpha = control_0 & NV_PGRAPH_CONTROL_0_ALPHA_WRITE_ENABLE; @@ -367,6 +376,10 @@ void pgraph_gl_draw_end(NV2AState *d) PGRAPHState *pg = &d->pgraph; PGRAPHGLState *r = pg->gl_renderer_state; +#if DEBUG_NV2A_GL + ++g_nv2a_current_frame_draw_count; // abaire +#endif + uint32_t control_0 = pgraph_reg_r(pg, NV_PGRAPH_CONTROL_0); bool mask_alpha = control_0 & NV_PGRAPH_CONTROL_0_ALPHA_WRITE_ENABLE; bool mask_red = control_0 & NV_PGRAPH_CONTROL_0_RED_WRITE_ENABLE; diff --git a/hw/xbox/nv2a/pgraph/profile.c b/hw/xbox/nv2a/pgraph/profile.c index 295042010d..9d876e4697 100644 --- a/hw/xbox/nv2a/pgraph/profile.c +++ b/hw/xbox/nv2a/pgraph/profile.c @@ -20,6 +20,7 @@ #include "hw/xbox/nv2a/nv2a_int.h" NV2AStats g_nv2a_stats; +uint32_t g_nv2a_current_frame_draw_count = 0; // abaire void nv2a_profile_increment(void) { @@ -51,6 +52,8 @@ void nv2a_profile_flip_stall(void) (g_nv2a_stats.frame_ptr + 1) % NV2A_PROF_NUM_FRAMES; g_nv2a_stats.frame_count++; memset(&g_nv2a_stats.frame_working, 0, sizeof(g_nv2a_stats.frame_working)); + + g_nv2a_current_frame_draw_count = 0; // abaire } const char *nv2a_profile_get_counter_name(unsigned int cnt)