mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-22 15:26:21 +00:00
tests/kms_psr_sink_crc: Start splitting tests in test_planes and operations.
This will allow us to test input/write oprations on any kind of plane. At this point PLANE_ONOF is just the new name of TEST_SPRITE and PLANE_MOVE is the one for TEST_CURSOR_MOVE. They will be extended and fixed on the following patche(s). v2: fix conflict after changing previous patch Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
52b0e78a94
commit
99efdc0cdb
@ -38,21 +38,45 @@
|
|||||||
#include "igt_kms.h"
|
#include "igt_kms.h"
|
||||||
#include "igt_aux.h"
|
#include "igt_aux.h"
|
||||||
|
|
||||||
enum tests {
|
bool running_with_psr_disabled;
|
||||||
TEST_PAGE_FLIP,
|
|
||||||
TEST_MMAP_CPU,
|
enum planes {
|
||||||
TEST_MMAP_GTT,
|
PRIMARY,
|
||||||
TEST_BLT,
|
SPRITE,
|
||||||
TEST_RENDER,
|
CURSOR,
|
||||||
TEST_CURSOR_MOVE,
|
|
||||||
TEST_SPRITE,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
bool running_with_psr_disabled;
|
enum operations {
|
||||||
|
PAGE_FLIP,
|
||||||
|
MMAP_GTT,
|
||||||
|
MMAP_GTT_WAITING,
|
||||||
|
MMAP_CPU,
|
||||||
|
BLT,
|
||||||
|
RENDER,
|
||||||
|
PLANE_MOVE,
|
||||||
|
PLANE_ONOFF,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *op_str(enum operations op)
|
||||||
|
{
|
||||||
|
static const char * const name[] = {
|
||||||
|
[PAGE_FLIP] = "page_flip",
|
||||||
|
[MMAP_GTT] = "mmap_gtt",
|
||||||
|
[MMAP_GTT_WAITING] = "mmap_gtt_waiting",
|
||||||
|
[MMAP_CPU] = "mmap_cpu",
|
||||||
|
[BLT] = "blt",
|
||||||
|
[RENDER] = "render",
|
||||||
|
[PLANE_MOVE] = "plane_move",
|
||||||
|
[PLANE_ONOFF] = "plane_onoff",
|
||||||
|
};
|
||||||
|
|
||||||
|
return name[op];
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int drm_fd;
|
int drm_fd;
|
||||||
enum tests test;
|
enum planes test_plane;
|
||||||
|
enum operations op;
|
||||||
drmModeRes *resources;
|
drmModeRes *resources;
|
||||||
drm_intel_bufmgr *bufmgr;
|
drm_intel_bufmgr *bufmgr;
|
||||||
uint32_t devid;
|
uint32_t devid;
|
||||||
@ -66,21 +90,6 @@ typedef struct {
|
|||||||
igt_plane_t *plane[2];
|
igt_plane_t *plane[2];
|
||||||
} data_t;
|
} data_t;
|
||||||
|
|
||||||
static const char *tests_str(enum tests test)
|
|
||||||
{
|
|
||||||
static const char * const testss[] = {
|
|
||||||
[TEST_PAGE_FLIP] = "page_flip",
|
|
||||||
[TEST_MMAP_CPU] = "mmap_cpu",
|
|
||||||
[TEST_MMAP_GTT] = "mmap_gtt",
|
|
||||||
[TEST_BLT] = "blt",
|
|
||||||
[TEST_RENDER] = "render",
|
|
||||||
[TEST_CURSOR_MOVE] = "cursor_move",
|
|
||||||
[TEST_SPRITE] = "sprite",
|
|
||||||
};
|
|
||||||
|
|
||||||
return testss[test];
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint32_t create_fb(data_t *data,
|
static uint32_t create_fb(data_t *data,
|
||||||
int w, int h,
|
int w, int h,
|
||||||
double r, double g, double b,
|
double r, double g, double b,
|
||||||
@ -307,7 +316,7 @@ static void test_crc(data_t *data)
|
|||||||
char ref_crc[12];
|
char ref_crc[12];
|
||||||
char crc[12];
|
char crc[12];
|
||||||
|
|
||||||
if (data->test == TEST_CURSOR_MOVE) {
|
if (data->op == PLANE_MOVE) {
|
||||||
igt_assert(drmModeSetCursor(data->drm_fd, data->crtc_id,
|
igt_assert(drmModeSetCursor(data->drm_fd, data->crtc_id,
|
||||||
handle, 64, 64) == 0);
|
handle, 64, 64) == 0);
|
||||||
igt_assert(drmModeMoveCursor(data->drm_fd, data->crtc_id,
|
igt_assert(drmModeMoveCursor(data->drm_fd, data->crtc_id,
|
||||||
@ -317,13 +326,13 @@ static void test_crc(data_t *data)
|
|||||||
igt_assert(wait_psr_entry(data, 10));
|
igt_assert(wait_psr_entry(data, 10));
|
||||||
get_sink_crc(data, ref_crc);
|
get_sink_crc(data, ref_crc);
|
||||||
|
|
||||||
switch (data->test) {
|
switch (data->op) {
|
||||||
void *ptr;
|
void *ptr;
|
||||||
case TEST_PAGE_FLIP:
|
case PAGE_FLIP:
|
||||||
igt_assert(drmModePageFlip(data->drm_fd, data->crtc_id,
|
igt_assert(drmModePageFlip(data->drm_fd, data->crtc_id,
|
||||||
data->fb_id[1], 0, NULL) == 0);
|
data->fb_id[1], 0, NULL) == 0);
|
||||||
break;
|
break;
|
||||||
case TEST_MMAP_CPU:
|
case MMAP_CPU:
|
||||||
ptr = gem_mmap__cpu(data->drm_fd, handle, 4096, PROT_WRITE);
|
ptr = gem_mmap__cpu(data->drm_fd, handle, 4096, PROT_WRITE);
|
||||||
gem_set_domain(data->drm_fd, handle,
|
gem_set_domain(data->drm_fd, handle,
|
||||||
I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU);
|
I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU);
|
||||||
@ -333,7 +342,8 @@ static void test_crc(data_t *data)
|
|||||||
sleep(1);
|
sleep(1);
|
||||||
gem_sw_finish(data->drm_fd, handle);
|
gem_sw_finish(data->drm_fd, handle);
|
||||||
break;
|
break;
|
||||||
case TEST_MMAP_GTT:
|
case MMAP_GTT:
|
||||||
|
case MMAP_GTT_WAITING:
|
||||||
ptr = gem_mmap__gtt(data->drm_fd, handle, 4096, PROT_WRITE);
|
ptr = gem_mmap__gtt(data->drm_fd, handle, 4096, PROT_WRITE);
|
||||||
gem_set_domain(data->drm_fd, handle,
|
gem_set_domain(data->drm_fd, handle,
|
||||||
I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
|
I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
|
||||||
@ -341,16 +351,16 @@ static void test_crc(data_t *data)
|
|||||||
munmap(ptr, 4096);
|
munmap(ptr, 4096);
|
||||||
gem_bo_busy(data->drm_fd, handle);
|
gem_bo_busy(data->drm_fd, handle);
|
||||||
break;
|
break;
|
||||||
case TEST_BLT:
|
case BLT:
|
||||||
fill_blt(data, handle, 0xff);
|
fill_blt(data, handle, 0xff);
|
||||||
break;
|
break;
|
||||||
case TEST_RENDER:
|
case RENDER:
|
||||||
fill_render(data, handle, 0xff);
|
fill_render(data, handle, 0xff);
|
||||||
break;
|
break;
|
||||||
case TEST_CURSOR_MOVE:
|
case PLANE_MOVE:
|
||||||
igt_assert(drmModeMoveCursor(data->drm_fd, data->crtc_id, 1, 2) == 0);
|
igt_assert(drmModeMoveCursor(data->drm_fd, data->crtc_id, 1, 2) == 0);
|
||||||
break;
|
break;
|
||||||
case TEST_SPRITE:
|
case PLANE_ONOFF:
|
||||||
igt_plane_set_fb(data->plane[0], &data->fb[0]);
|
igt_plane_set_fb(data->plane[0], &data->fb[0]);
|
||||||
igt_display_commit(&data->display);
|
igt_display_commit(&data->display);
|
||||||
igt_plane_set_fb(data->plane[1], &data->fb[1]);
|
igt_plane_set_fb(data->plane[1], &data->fb[1]);
|
||||||
@ -378,7 +388,7 @@ static bool prepare_crtc(data_t *data, uint32_t connector_id)
|
|||||||
0.0, 1.0, 0.0, &data->fb[0]);
|
0.0, 1.0, 0.0, &data->fb[0]);
|
||||||
igt_assert(data->fb_id[0]);
|
igt_assert(data->fb_id[0]);
|
||||||
|
|
||||||
if (data->test == TEST_CURSOR_MOVE)
|
if (data->op == PLANE_MOVE)
|
||||||
create_cursor_fb(data, &data->fb[0]);
|
create_cursor_fb(data, &data->fb[0]);
|
||||||
|
|
||||||
data->fb_id[1] = create_fb(data,
|
data->fb_id[1] = create_fb(data,
|
||||||
@ -448,7 +458,7 @@ static void run_test(data_t *data)
|
|||||||
* crtcs = IS_VALLEYVIEW(data->devid)? 2 : 1; */
|
* crtcs = IS_VALLEYVIEW(data->devid)? 2 : 1; */
|
||||||
int crtcs = 1;
|
int crtcs = 1;
|
||||||
|
|
||||||
if (data->test == TEST_SPRITE) {
|
if (data->op == PLANE_ONOFF) {
|
||||||
test_sprite(data);
|
test_sprite(data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -475,7 +485,7 @@ static void run_test(data_t *data)
|
|||||||
igt_main
|
igt_main
|
||||||
{
|
{
|
||||||
data_t data = {};
|
data_t data = {};
|
||||||
enum tests test;
|
enum operations op;
|
||||||
char *env_psr;
|
char *env_psr;
|
||||||
|
|
||||||
env_psr = getenv("IGT_PSR_DISABLED");
|
env_psr = getenv("IGT_PSR_DISABLED");
|
||||||
@ -499,9 +509,27 @@ igt_main
|
|||||||
display_init(&data);
|
display_init(&data);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (test = TEST_PAGE_FLIP; test <= TEST_SPRITE; test++) {
|
|
||||||
igt_subtest_f("%s", tests_str(test)) {
|
for (op = PAGE_FLIP; op <= RENDER; op++) {
|
||||||
data.test = test;
|
igt_subtest_f("primary_%s", op_str(op)) {
|
||||||
|
data.test_plane = PRIMARY;
|
||||||
|
data.op = op;
|
||||||
|
run_test(&data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (op = PLANE_ONOFF; op <= PLANE_ONOFF; op++) {
|
||||||
|
igt_subtest_f("sprite_%s", op_str(op)) {
|
||||||
|
data.test_plane = SPRITE;
|
||||||
|
data.op = op;
|
||||||
|
run_test(&data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (op = PLANE_MOVE; op <= PLANE_MOVE; op++) {
|
||||||
|
igt_subtest_f("cursor_%s", op_str(op)) {
|
||||||
|
data.test_plane = CURSOR;
|
||||||
|
data.op = op;
|
||||||
run_test(&data);
|
run_test(&data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user