i965/gen6-7/sol: Bump primitive counter BO size.
authorFrancisco Jerez <currojerez@riseup.net>
Fri, 17 Nov 2017 22:07:21 +0000 (14:07 -0800)
committerFrancisco Jerez <currojerez@riseup.net>
Wed, 17 Jan 2018 00:03:56 +0000 (16:03 -0800)
Improves performance of SynMark2 OglGSCloth by a further 9.65%±0.59%
due to the reduction in overwraps of the primitive count buffer that
lead to a CPU stall on previous rendering.  Cummulative performance
improvement from the series 81.50% ±0.96% (data gathered on VLV).

Tested-By: Eero Tamminen <eero.t.tamminen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/gen6_sol.c

index b1baf01bcd9f9ce13845e72e19f3e08864a6c44e..355acd421893264dcd50a38b47ad48d3feb0b24f 100644 (file)
@@ -197,7 +197,7 @@ brw_new_transform_feedback(struct gl_context *ctx, GLuint name)
    brw_obj->offset_bo =
       brw_bo_alloc(brw->bufmgr, "transform feedback offsets", 16, 64);
    brw_obj->prim_count_bo =
-      brw_bo_alloc(brw->bufmgr, "xfb primitive counts", 4096, 64);
+      brw_bo_alloc(brw->bufmgr, "xfb primitive counts", 16384, 64);
 
    return &brw_obj->base;
 }
@@ -287,7 +287,8 @@ brw_save_primitives_written_counters(struct brw_context *brw,
    assert(obj->prim_count_bo != NULL);
 
    /* Check if there's enough space for a new pair of four values. */
-   if ((obj->counter.bo_end + 2) * streams * sizeof(uint64_t) >= 4096) {
+   if ((obj->counter.bo_end + 2) * streams * sizeof(uint64_t) >=
+       obj->prim_count_bo->size) {
       aggregate_transform_feedback_counter(brw, obj->prim_count_bo,
                                            &obj->previous_counter);
       aggregate_transform_feedback_counter(brw, obj->prim_count_bo,