[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