diff options
-rw-r--r-- | lib/rendercopy.h | 2 | ||||
-rw-r--r-- | lib/rendercopy_i830.c | 16 | ||||
-rw-r--r-- | tests/gem_ctx_basic.c | 4 | ||||
-rw-r--r-- | tests/gem_ringfill.c | 8 | ||||
-rw-r--r-- | tests/gem_stress.c | 25 |
5 files changed, 27 insertions, 28 deletions
diff --git a/lib/rendercopy.h b/lib/rendercopy.h index 5989d503..b03c1472 100644 --- a/lib/rendercopy.h +++ b/lib/rendercopy.h @@ -63,6 +63,8 @@ typedef void (*render_copyfunc_t)(struct intel_batchbuffer *batch, unsigned width, unsigned height, struct scratch_buf *dst, unsigned dst_x, unsigned dst_y); +render_copyfunc_t get_render_copyfunc(int devid); + void gen7_render_copyfunc(struct intel_batchbuffer *batch, struct scratch_buf *src, unsigned src_x, unsigned src_y, unsigned width, unsigned height, diff --git a/lib/rendercopy_i830.c b/lib/rendercopy_i830.c index 28c3e99e..20f3dc6e 100644 --- a/lib/rendercopy_i830.c +++ b/lib/rendercopy_i830.c @@ -227,3 +227,19 @@ void gen2_render_copyfunc(struct intel_batchbuffer *batch, intel_batchbuffer_flush(batch); } + +render_copyfunc_t get_render_copyfunc(int devid) +{ + render_copyfunc_t copy = NULL; + + if (IS_GEN2(devid)) + copy = gen2_render_copyfunc; + else if (IS_GEN3(devid)) + copy = gen3_render_copyfunc; + else if (IS_GEN6(devid)) + copy = gen6_render_copyfunc; + else if (IS_GEN7(devid)) + copy = gen7_render_copyfunc; + + return copy; +} diff --git a/tests/gem_ctx_basic.c b/tests/gem_ctx_basic.c index 632651ae..3757d847 100644 --- a/tests/gem_ctx_basic.c +++ b/tests/gem_ctx_basic.c @@ -58,6 +58,7 @@ static void init_buffer(drm_intel_bufmgr *bufmgr, static void *work(void *arg) { struct intel_batchbuffer *batch; + render_copyfunc_t rendercopy = get_render_copyfunc(devid); drm_intel_context *context; drm_intel_bufmgr *bufmgr; int thread_id = *(int *)arg; @@ -88,7 +89,8 @@ static void *work(void *arg) if (uncontexted) { - gen6_render_copyfunc(batch, &src, 0, 0, 0, 0, &dst, 0, 0); + assert(rendercopy); + rendercopy(batch, &src, 0, 0, 0, 0, &dst, 0, 0); } else { int ret; ret = drm_intel_bo_subdata(batch->bo, 0, 4096, batch->buffer); diff --git a/tests/gem_ringfill.c b/tests/gem_ringfill.c index 9f711ab3..948630b9 100644 --- a/tests/gem_ringfill.c +++ b/tests/gem_ringfill.c @@ -219,13 +219,7 @@ int main(int argc, char **argv) /* Strictly only required on architectures with a separate BLT ring, * but lets stress everybody. */ - copy = NULL; - if (IS_GEN2(batch->devid)) - copy = gen2_render_copyfunc; - else if (IS_GEN3(batch->devid)) - copy = gen3_render_copyfunc; - else if (IS_GEN6(batch->devid)) - copy = gen6_render_copyfunc; + copy = get_render_copyfunc(batch->devid); if (drmtest_run_subtest("render") && copy) fails += check_ring(bufmgr, batch, "render", copy); diff --git a/tests/gem_stress.c b/tests/gem_stress.c index 69239ac1..be306c53 100644 --- a/tests/gem_stress.c +++ b/tests/gem_stress.c @@ -323,31 +323,16 @@ static void render_copyfunc(struct scratch_buf *src, unsigned src_x, unsigned sr unsigned logical_tile_no) { static unsigned keep_gpu_busy_counter = 0; + render_copyfunc_t rendercopy = get_render_copyfunc(devid); /* check both edges of the fence usage */ if (keep_gpu_busy_counter & 1) keep_gpu_busy(); - if (IS_GEN2(devid)) - gen2_render_copyfunc(batch, - src, src_x, src_y, - options.tile_size, options.tile_size, - dst, dst_x, dst_y); - else if (IS_GEN3(devid)) - gen3_render_copyfunc(batch, - src, src_x, src_y, - options.tile_size, options.tile_size, - dst, dst_x, dst_y); - else if (IS_GEN6(devid)) - gen6_render_copyfunc(batch, - src, src_x, src_y, - options.tile_size, options.tile_size, - dst, dst_x, dst_y); - else if (IS_GEN7(devid)) - gen7_render_copyfunc(batch, - src, src_x, src_y, - options.tile_size, options.tile_size, - dst, dst_x, dst_y); + if (rendercopy) + rendercopy(batch, src, src_x, src_y, + options.tile_size, options.tile_size, + dst, dst_x, dst_y); else blitter_copyfunc(src, src_x, src_y, dst, dst_x, dst_y, |