v3d: take into account prim_counts_offset
authorAlejandro Piñeiro <apinheiro@igalia.com>
Tue, 8 Oct 2019 13:44:19 +0000 (15:44 +0200)
committerAlejandro Piñeiro <apinheiro@igalia.com>
Thu, 10 Oct 2019 07:51:50 +0000 (09:51 +0200)
Specifically when reading the primitive counters.

This fixed ~700 CTS tests using this pattern:
dEQP-GLES3.functional.transform_feedback.*

when run after tests like
dEQP-GLES3.functional.prerequisite.read_pixels on the same
caselist. When run individually those tests were passing because
prim_counts_offset was zero.

Fixes: 0f2d1dfe65bfe1ee8f02ce45f100a5508debdfd4 ("v3d: use the GPU to
       record primitives written to transform feedback")

Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
src/gallium/drivers/v3d/v3d_job.c

index db2ce0a85bef80588c80072e2df391a41334b104..c5abfa7edb2e97e072e0e375bdb7a2f8ce8a04cd 100644 (file)
@@ -457,7 +457,7 @@ v3d_read_and_accumulate_primitive_counters(struct v3d_context *v3d)
         perf_debug("stalling on TF counts readback\n");
         struct v3d_resource *rsc = v3d_resource(v3d->prim_counts);
         if (v3d_bo_wait(rsc->bo, PIPE_TIMEOUT_INFINITE, "prim-counts")) {
-                uint32_t *map = v3d_bo_map(rsc->bo);
+                uint32_t *map = v3d_bo_map(rsc->bo) + v3d->prim_counts_offset;
                 v3d->tf_prims_generated += map[V3D_PRIM_COUNTS_TF_WRITTEN];
         }
 }