mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-11 09:56:22 +00:00
i-g-t: gem_dummy_reloc_loop.c: add vebox test case
Aside from adding VEBOX support, this test allows allows the "mixed" test case variant to work on platforms that have 2 rings which was previously not the case. To the best of my memory, this might therefore impact G45, and Ironlake. Signed-off-by: Zhong Li <zhong.li@intel.com> [Ben: added commit message, remove num_rings = 1, s/LOCACL/LOCAL] Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
This commit is contained in:
parent
8ddf84d129
commit
a417ef7cc8
@ -42,6 +42,8 @@
|
|||||||
#include "intel_gpu_tools.h"
|
#include "intel_gpu_tools.h"
|
||||||
#include "i830_reg.h"
|
#include "i830_reg.h"
|
||||||
|
|
||||||
|
#define LOCAL_I915_EXEC_VEBOX (4<<0)
|
||||||
|
|
||||||
static drm_intel_bufmgr *bufmgr;
|
static drm_intel_bufmgr *bufmgr;
|
||||||
struct intel_batchbuffer *batch;
|
struct intel_batchbuffer *batch;
|
||||||
static drm_intel_bo *target_buffer;
|
static drm_intel_bo *target_buffer;
|
||||||
@ -88,14 +90,14 @@ dummy_reloc_loop(int ring)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dummy_reloc_loop_random_ring(void)
|
dummy_reloc_loop_random_ring(int num_rings)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
srandom(0xdeadbeef);
|
srandom(0xdeadbeef);
|
||||||
|
|
||||||
for (i = 0; i < 0x100000; i++) {
|
for (i = 0; i < 0x100000; i++) {
|
||||||
int ring = random() % 3 + 1;
|
int ring = random() % num_rings + 1;
|
||||||
|
|
||||||
if (ring == I915_EXEC_RENDER) {
|
if (ring == I915_EXEC_RENDER) {
|
||||||
BEGIN_BATCH(4);
|
BEGIN_BATCH(4);
|
||||||
@ -126,11 +128,13 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
int devid;
|
int devid;
|
||||||
|
int num_rings;
|
||||||
|
|
||||||
drmtest_subtest_init(argc, argv);
|
drmtest_subtest_init(argc, argv);
|
||||||
|
|
||||||
fd = drm_open_any();
|
fd = drm_open_any();
|
||||||
devid = intel_get_drm_devid(fd);
|
devid = intel_get_drm_devid(fd);
|
||||||
|
num_rings = gem_get_num_rings(fd);
|
||||||
if (!HAS_BLT_RING(devid)) {
|
if (!HAS_BLT_RING(devid)) {
|
||||||
fprintf(stderr, "not (yet) implemented for pre-snb\n");
|
fprintf(stderr, "not (yet) implemented for pre-snb\n");
|
||||||
return 77;
|
return 77;
|
||||||
@ -179,11 +183,20 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (drmtest_run_subtest("vebox")) {
|
||||||
|
if (gem_has_vebox(fd)) {
|
||||||
|
sleep(2);
|
||||||
|
printf("running dummy loop on vebox\n");
|
||||||
|
dummy_reloc_loop(LOCAL_I915_EXEC_VEBOX);
|
||||||
|
printf("dummy loop run on vebox completed\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (drmtest_run_subtest("mixed")) {
|
if (drmtest_run_subtest("mixed")) {
|
||||||
if (HAS_BLT_RING(devid) && HAS_BSD_RING(devid)) {
|
if (num_rings > 1) {
|
||||||
sleep(2);
|
sleep(2);
|
||||||
printf("running dummy loop on random rings\n");
|
printf("running dummy loop on random rings\n");
|
||||||
dummy_reloc_loop_random_ring();
|
dummy_reloc_loop_random_ring(num_rings);
|
||||||
printf("dummy loop run on random rings completed\n");
|
printf("dummy loop run on random rings completed\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user