[Mesa-dev] [PATCH 3/3] i965/gen6-7/sol: Bump primitive counter BO size.
Eero Tamminen
eero.t.tamminen at intel.com
Mon Nov 20 15:00:31 UTC 2017
Hi,
Tested-By: Eero Tamminen <eero.t.tamminen at intel.com>
On 18.11.2017 00:28, Francisco Jerez wrote:
> 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).
I tested the patch series with transform feedback using tests on SNB
GT2, BYT, HSW GT2 and BSW, using git versions of Mesa, drm-tip kernel
and X server.
SNB GT2:
* No noticeable perf impact on GfxBench Manhattan
* Mesa unfortunately renders GSCloth incorrectly on SNB,
but that happens also without this patch series:
https://bugs.freedesktop.org/show_bug.cgi?id=103824
BYT:
* 1-2% perf improvement in GfxBench Manhattan 3.0 & 3.1
* 30% perf improvement in GSCloth
- Device is single channel one, was your VLV 2-channel one?
HSW GT2:
* No noticeable perf impact
BSW:
* No noticeable perf impact (as expected)
- Eero
> ---
> src/mesa/drivers/dri/i965/gen6_sol.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/gen6_sol.c b/src/mesa/drivers/dri/i965/gen6_sol.c
> index b1baf01bcd9..355acd42189 100644
> --- a/src/mesa/drivers/dri/i965/gen6_sol.c
> +++ b/src/mesa/drivers/dri/i965/gen6_sol.c
> @@ -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,
>
More information about the mesa-dev
mailing list