diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c index 9a663b1..90b292f 100644 --- a/src/mesa/drivers/dri/i965/brw_misc_state.c +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c @@ -635,6 +635,17 @@ brw_upload_state_base_address(struct brw_context *brw) { const struct gen_device_info *devinfo = &brw->screen->devinfo; + bool our = false; + if (brw->ctx.my_index == 31) + { + static to_fix = true; + if (to_fix && brw->batch.state_base_address_emitted) + { + to_fix = false; + brw->batch.state_base_address_emitted = false; + our = true; + } + } if (brw->batch.state_base_address_emitted) return; @@ -647,7 +658,7 @@ brw_upload_state_base_address(struct brw_context *brw) * maybe this isn't required for us in particular. */ - if (devinfo->gen >= 6) { + if (devinfo->gen >= 6 && !our) { const unsigned dc_flush = devinfo->gen >= 7 ? PIPE_CONTROL_DATA_CACHE_FLUSH : 0; @@ -779,7 +790,7 @@ brw_upload_state_base_address(struct brw_context *brw) ADVANCE_BATCH(); } - if (devinfo->gen >= 6) { + if (devinfo->gen >= 6 && !our) { brw_emit_pipe_control_flush(brw, PIPE_CONTROL_INSTRUCTION_INVALIDATE | PIPE_CONTROL_STATE_CACHE_INVALIDATE | diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 93136f5..8a8a4c2 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -5038,6 +5038,7 @@ struct gl_context struct hash_table_u64 *ResidentTextureHandles; struct hash_table_u64 *ResidentImageHandles; /*@}*/ + unsigned my_index; }; /** diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c index e74e1bd..f159b3f 100644 --- a/src/mesa/vbo/vbo_exec_array.c +++ b/src/mesa/vbo/vbo_exec_array.c @@ -866,6 +866,24 @@ vbo_exec_DrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLuint max_element = 2 * 1000 * 1000 * 1000; /* just a big number */ GET_CURRENT_CONTEXT(ctx); + bool is_needed = false; + if (start == 0 && end == 2171 && count == 8748) + { + static int counter = 0; + ++counter; + ctx->my_index = counter; + fprintf(stderr, "%s rsadraw counter: %u \n", __func__, counter); + if (counter == 30) + { + is_needed = true; //corresponds to line 254494 in the trace + } + } + else if (ctx->my_index >= 30) + { + ++ctx->my_index; //corresponds to line 254532 in the trace + fprintf(stderr, "%s rsadraw counter: %u \n", __func__, ctx->my_index); + } + if (MESA_VERBOSE & VERBOSE_DRAW) _mesa_debug(ctx,