[igt-dev] [PATCH i-g-t] gem_gpu_fill: Merging gem_gpgpu_fill and gem_media_fill into one

Lukasz Kalamarz lukasz.kalamarz at intel.com
Fri Jan 26 15:03:02 UTC 2018


Implementation of those test only differ with fill_function used by
either media or gpgpu pipeline, which shared same type. Rather than
having two tests, which are in 98% copy-paste it is easier to
maintain one with same functionality.

This patch does not have any functional changes.

Signed-off-by: Lukasz Kalamarz <lukasz.kalamarz at intel.com>
Cc:Micah Fedke <micah.fedke at collabora.co.uk>
Cc:Xiang, Haihao <haihao.xiang at intel.com>
Cc:Arkadiusz Hiler <arkadiusz.hiler at intel.com>
Cc:Michal Winiarski <michal.winiarski at intel.com>
---
 tests/Makefile.sources                     |   3 +-
 tests/{gem_gpgpu_fill.c => gem_gpu_fill.c} |  57 ++++++++++--
 tests/gem_media_fill.c                     | 142 -----------------------------
 tests/meson.build                          |   3 +-
 4 files changed, 50 insertions(+), 155 deletions(-)
 rename tests/{gem_gpgpu_fill.c => gem_gpu_fill.c} (79%)
 delete mode 100644 tests/gem_media_fill.c

diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index e4e06d0..a327e56 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -95,7 +95,7 @@ TESTS_progs = \
 	gem_fenced_exec_thrash \
 	gem_flink_basic \
 	gem_flink_race \
-	gem_gpgpu_fill \
+	gem_gpu_fill \
 	gem_gtt_cpu_tlb \
 	gem_gtt_hog \
 	gem_gtt_speed \
@@ -103,7 +103,6 @@ TESTS_progs = \
 	gem_linear_blits \
 	gem_lut_handle \
 	gem_madvise \
-	gem_media_fill \
 	gem_mmap \
 	gem_mmap_gtt \
 	gem_mmap_offset_exhaustion \
diff --git a/tests/gem_gpgpu_fill.c b/tests/gem_gpu_fill.c
similarity index 79%
rename from tests/gem_gpgpu_fill.c
rename to tests/gem_gpu_fill.c
index df9e86f..8c4de45 100644
--- a/tests/gem_gpgpu_fill.c
+++ b/tests/gem_gpu_fill.c
@@ -53,6 +53,18 @@
 #define COLOR_C4	0xc4
 #define COLOR_4C	0x4c
 
+enum {
+        GPGPU,
+        MEDIA,
+        MAX_TEST_MODES
+};
+
+static const char * const test_modes[] = {
+        [GPGPU] = "gpgpu",
+        [MEDIA] = "media"
+};
+
+
 typedef struct {
 	int drm_fd;
 	uint32_t devid;
@@ -92,12 +104,12 @@ scratch_buf_check(data_t *data, struct igt_buf *buf, int x, int y,
 		     color, val, x, y);
 }
 
-igt_simple_main
+static void run_test (int fd,unsigned mode)
 {
 	data_t data = {0, };
 	struct intel_batchbuffer *batch = NULL;
 	struct igt_buf dst;
-	igt_fillfunc_t gpgpu_fill = NULL;
+	igt_fillfunc_t fill_func = NULL;
 	int i, j;
 
 	data.drm_fd = drm_open_driver_render(DRIVER_INTEL);
@@ -106,10 +118,21 @@ igt_simple_main
 	data.bufmgr = drm_intel_bufmgr_gem_init(data.drm_fd, 4096);
 	igt_assert(data.bufmgr);
 
-	gpgpu_fill = igt_get_gpgpu_fillfunc(data.devid);
-
-	igt_require_f(gpgpu_fill,
-		      "no gpgpu-fill function\n");
+	switch(mode){
+	case MEDIA:
+		fill_func = igt_get_media_fillfunc(data.devid);
+		igt_require_f(fill_func,
+			      "no media-fill function\n");
+		break;
+	case GPGPU:
+		fill_func = igt_get_gpgpu_fillfunc(data.devid);
+		igt_require_f(fill_func,
+			      "no gpgpu-fill function\n");
+		break;
+	default:
+		igt_assert(false);
+		break;
+	}
 
 	batch = intel_batchbuffer_alloc(data.bufmgr, data.devid);
 	igt_assert(batch);
@@ -122,9 +145,9 @@ igt_simple_main
 		}
 	}
 
-	gpgpu_fill(batch,
-		   &dst, 0, 0, WIDTH / 2, HEIGHT / 2,
-		   COLOR_4C);
+	fill_func(batch,
+		  &dst, 0, 0, WIDTH / 2, HEIGHT / 2,
+		  COLOR_4C);
 
 	for (i = 0; i < WIDTH; i++) {
 		for (j = 0; j < HEIGHT; j++) {
@@ -135,3 +158,19 @@ igt_simple_main
 		}
 	}
 }
+
+igt_main
+{
+	static int fd =0;
+
+	igt_fixture {
+		fd = drm_open_driver(DRIVER_INTEL);
+		igt_require_gem(fd);
+	}
+
+	for (unsigned mode = GPGPU; mode < MAX_TEST_MODES; mode++) {
+		igt_subtest_f("%s-fill", test_modes[mode]) {
+			run_test(fd, mode);
+		}
+	}
+}
diff --git a/tests/gem_media_fill.c b/tests/gem_media_fill.c
deleted file mode 100644
index e3564e8..0000000
--- a/tests/gem_media_fill.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- *    Damien Lespiau <damien.lespiau at intel.com>
- *    Xiang, Haihao <haihao.xiang at intel.com>
- */
-
-/*
- * This file is a basic test for the media_fill() function, a very simple
- * workload for the Media pipeline.
- */
-
-#include "igt.h"
-#include <stdbool.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <stdio.h>
-#include <string.h>
-#include <fcntl.h>
-#include <inttypes.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include "drm.h"
-#include "intel_bufmgr.h"
-
-IGT_TEST_DESCRIPTION("Basic test for the media_fill() function, a very simple"
-		     " workload for the Media pipeline.");
-
-#define WIDTH 64
-#define STRIDE (WIDTH)
-#define HEIGHT 64
-#define SIZE (HEIGHT*STRIDE)
-
-#define COLOR_C4	0xc4
-#define COLOR_4C	0x4c
-
-typedef struct {
-	int drm_fd;
-	uint32_t devid;
-	drm_intel_bufmgr *bufmgr;
-	uint8_t linear[WIDTH * HEIGHT];
-} data_t;
-
-static void scratch_buf_init(data_t *data, struct igt_buf *buf,
-			int width, int height, int stride, uint8_t color)
-{
-	drm_intel_bo *bo;
-	int i;
-
-	bo = drm_intel_bo_alloc(data->bufmgr, "", SIZE, 4096);
-	for (i = 0; i < width * height; i++)
-		data->linear[i] = color;
-	gem_write(data->drm_fd, bo->handle, 0, data->linear,
-		sizeof(data->linear));
-
-	buf->bo = bo;
-	buf->stride = stride;
-	buf->tiling = I915_TILING_NONE;
-	buf->size = SIZE;
-}
-
-static void
-scratch_buf_check(data_t *data, struct igt_buf *buf, int x, int y,
-		uint8_t color)
-{
-	uint8_t val;
-
-	gem_read(data->drm_fd, buf->bo->handle, 0,
-		data->linear, sizeof(data->linear));
-	val = data->linear[y * WIDTH + x];
-	igt_assert_f(val == color,
-		     "Expected 0x%02x, found 0x%02x at (%d,%d)\n",
-		     color, val, x, y);
-}
-
-igt_simple_main
-{
-	data_t data = {0, };
-	struct intel_batchbuffer *batch = NULL;
-	struct igt_buf dst;
-	igt_fillfunc_t media_fill = NULL;
-	int i, j;
-
-	data.drm_fd = drm_open_driver_render(DRIVER_INTEL);
-	igt_require_gem(data.drm_fd);
-
-	data.devid = intel_get_drm_devid(data.drm_fd);
-
-	data.bufmgr = drm_intel_bufmgr_gem_init(data.drm_fd, 4096);
-	igt_assert(data.bufmgr);
-
-	media_fill = igt_get_media_fillfunc(data.devid);
-
-	igt_require_f(media_fill,
-		"no media-fill function\n");
-
-	batch = intel_batchbuffer_alloc(data.bufmgr, data.devid);
-	igt_assert(batch);
-
-	scratch_buf_init(&data, &dst, WIDTH, HEIGHT, STRIDE, COLOR_C4);
-
-	for (i = 0; i < WIDTH; i++) {
-		for (j = 0; j < HEIGHT; j++) {
-			scratch_buf_check(&data, &dst, i, j, COLOR_C4);
-		}
-	}
-
-	media_fill(batch,
-		&dst, 0, 0, WIDTH / 2, HEIGHT / 2,
-		COLOR_4C);
-
-	for (i = 0; i < WIDTH; i++) {
-		for (j = 0; j < HEIGHT; j++) {
-			if (i < WIDTH / 2 && j < HEIGHT / 2)
-				scratch_buf_check(&data, &dst, i, j, COLOR_4C);
-			else
-				scratch_buf_check(&data, &dst, i, j, COLOR_C4);
-		}
-	}
-}
diff --git a/tests/meson.build b/tests/meson.build
index 2322217..82d8a6d 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -73,7 +73,7 @@ test_progs = [
 	'gem_fenced_exec_thrash',
 	'gem_flink_basic',
 	'gem_flink_race',
-	'gem_gpgpu_fill',
+	'gem_gpu_fill',
 	'gem_gtt_cpu_tlb',
 	'gem_gtt_hog',
 	'gem_gtt_speed',
@@ -81,7 +81,6 @@ test_progs = [
 	'gem_linear_blits',
 	'gem_lut_handle',
 	'gem_madvise',
-	'gem_media_fill',
 	'gem_mmap',
 	'gem_mmap_gtt',
 	'gem_mmap_offset_exhaustion',
-- 
2.9.5



More information about the igt-dev mailing list