i965: Don't bother trying to extend the current vertex buffers.

This essentially reverts the following:

  commit c625aa19cb
  Author: Chris Wilson <chris@chris-wilson.co.uk>
  Date:   Fri Feb 18 10:37:43 2011 +0000

      intel: extend current vertex buffers

While working on optimizing an upcoming Steam title, I broke this code.
Eric expressed his doubts about this optimization, and noted that the
original commit offered no performance data.

I ran before and after benchmarks on Xonotic and Citybench, and found
that this code made no difference.  So, remove it to reduce complexity
and make future work simpler.

Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Kenneth Graunke 2012-10-26 20:36:50 -07:00
parent 1eedebc65b
commit 3d2b4291c2
3 changed files with 1 additions and 42 deletions

View File

@ -773,16 +773,10 @@ struct brw_context
struct {
struct brw_vertex_element inputs[VERT_ATTRIB_MAX];
struct brw_vertex_buffer buffers[VERT_ATTRIB_MAX];
struct {
uint32_t handle;
uint32_t offset;
uint32_t stride;
uint32_t step_rate;
} current_buffers[VERT_ATTRIB_MAX];
struct brw_vertex_element *enabled[VERT_ATTRIB_MAX];
GLuint nr_enabled;
GLuint nr_buffers, nr_current_buffers;
GLuint nr_buffers;
/* Summary of size and varying of active arrays, so we can check
* for changes to this state:

View File

@ -536,34 +536,6 @@ static void brw_prepare_vertices(struct brw_context *brw)
upload[i]->offset = 0;
}
/* can we simply extend the current vb? */
if (j == brw->vb.nr_current_buffers) {
int delta = 0;
for (i = 0; i < j; i++) {
int d;
if (brw->vb.current_buffers[i].handle != brw->vb.buffers[i].bo->handle ||
brw->vb.current_buffers[i].stride != brw->vb.buffers[i].stride ||
brw->vb.current_buffers[i].step_rate != brw->vb.buffers[i].step_rate)
break;
d = brw->vb.buffers[i].offset - brw->vb.current_buffers[i].offset;
if (d < 0)
break;
if (i == 0)
delta = d / brw->vb.current_buffers[i].stride;
if (delta * brw->vb.current_buffers[i].stride != d)
break;
}
if (i == j) {
brw->vb.start_vertex_bias += delta;
while (--j >= 0)
drm_intel_bo_unreference(brw->vb.buffers[j].bo);
j = 0;
}
}
brw->vb.nr_buffers = j;
}
@ -644,13 +616,7 @@ static void brw_emit_vertices(struct brw_context *brw)
} else
OUT_BATCH(0);
OUT_BATCH(buffer->step_rate);
brw->vb.current_buffers[i].handle = buffer->bo->handle;
brw->vb.current_buffers[i].offset = buffer->offset;
brw->vb.current_buffers[i].stride = buffer->stride;
brw->vb.current_buffers[i].step_rate = buffer->step_rate;
}
brw->vb.nr_current_buffers = i;
ADVANCE_BATCH();
}

View File

@ -196,7 +196,6 @@ static void brw_new_batch( struct intel_context *intel )
*/
brw->sol.offset_0_batch_start = brw->sol.svbi_0_starting_index;
brw->vb.nr_current_buffers = 0;
brw->ib.type = -1;
/* Mark that the current program cache BO has been used by the GPU.