mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-11 01:46:14 +00:00
Check for vebox support before testing
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=63941
This commit is contained in:
parent
cae610a2e5
commit
2facc1368d
@ -270,6 +270,21 @@ void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride)
|
||||
assert(st.tiling_mode == tiling);
|
||||
}
|
||||
|
||||
#define LOCAL_I915_PARAM_HAS_VEBOX 22
|
||||
int gem_has_vebox(int fd)
|
||||
{
|
||||
struct drm_i915_getparam gp;
|
||||
int val;
|
||||
|
||||
gp.param = LOCAL_I915_PARAM_HAS_VEBOX;
|
||||
gp.value = &val;
|
||||
|
||||
if (ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp, sizeof(gp)))
|
||||
return 0;
|
||||
|
||||
return val != 0;
|
||||
}
|
||||
|
||||
struct local_drm_i915_gem_cacheing {
|
||||
uint32_t handle;
|
||||
uint32_t cacheing;
|
||||
|
@ -47,6 +47,7 @@ int drm_open_any_master(void);
|
||||
void gem_quiescent_gpu(int fd);
|
||||
|
||||
/* ioctl wrappers and similar stuff for bare metal testing */
|
||||
int gem_has_vebox(int fd);
|
||||
void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride);
|
||||
int gem_has_cacheing(int fd);
|
||||
void gem_set_cacheing(int fd, uint32_t handle, int cacheing);
|
||||
|
@ -55,7 +55,6 @@ static drm_intel_bo *target_buffer;
|
||||
#define MI_COND_BATCH_BUFFER_END (0x36<<23 | 1)
|
||||
#define MI_DO_COMPARE (1<<21)
|
||||
|
||||
#define LOCAL_I915_PARAM_HAS_VEBOX 22
|
||||
static int
|
||||
get_num_rings(int fd)
|
||||
{
|
||||
@ -82,10 +81,7 @@ get_num_rings(int fd)
|
||||
else
|
||||
goto skip;
|
||||
|
||||
gp.param = LOCAL_I915_PARAM_HAS_VEBOX;
|
||||
ret = drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp);
|
||||
|
||||
if ((ret == 0) & (*gp.value > 0))
|
||||
if (gem_has_vebox(fd))
|
||||
num_rings++;
|
||||
else
|
||||
goto skip;
|
||||
|
@ -46,7 +46,6 @@
|
||||
static drm_intel_bufmgr *bufmgr;
|
||||
struct intel_batchbuffer *batch;
|
||||
static drm_intel_bo *target_buffer;
|
||||
static int has_ppgtt = 0;
|
||||
|
||||
/*
|
||||
* Testcase: Basic vebox MI check using MI_STORE_DATA_IMM
|
||||
@ -59,8 +58,6 @@ store_dword_loop(int divider)
|
||||
uint32_t *buf;
|
||||
|
||||
cmd = MI_STORE_DWORD_IMM;
|
||||
if (!has_ppgtt)
|
||||
cmd |= MI_MEM_VIRTUAL;
|
||||
|
||||
for (i = 0; i < SLOW_QUICK(0x100000, 0x10); i++) {
|
||||
BEGIN_BATCH(4);
|
||||
@ -103,28 +100,12 @@ cont:
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int fd;
|
||||
int devid;
|
||||
|
||||
if (argc != 1) {
|
||||
fprintf(stderr, "usage: %s\n", argv[0]);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
fd = drm_open_any();
|
||||
devid = intel_get_drm_devid(fd);
|
||||
|
||||
if (!HAS_VEBOX_RING(devid)) {
|
||||
fprintf(stderr, "Doesn't have vebox ring\n");
|
||||
return 77;
|
||||
}
|
||||
|
||||
has_ppgtt = gem_uses_aliasing_ppgtt(fd);
|
||||
|
||||
/* This only works with ppgtt */
|
||||
if (!has_ppgtt) {
|
||||
fprintf(stderr, "no ppgtt detected, which is required\n");
|
||||
if (!gem_has_vebox(fd) || !gem_uses_aliasing_ppgtt(fd))
|
||||
return 77;
|
||||
}
|
||||
|
||||
bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
|
||||
if (!bufmgr) {
|
||||
@ -133,7 +114,7 @@ int main(int argc, char **argv)
|
||||
}
|
||||
drm_intel_bufmgr_gem_enable_reuse(bufmgr);
|
||||
|
||||
batch = intel_batchbuffer_alloc(bufmgr, devid);
|
||||
batch = intel_batchbuffer_alloc(bufmgr, intel_get_drm_devid(fd));
|
||||
if (!batch) {
|
||||
fprintf(stderr, "failed to create batch buffer\n");
|
||||
exit(-1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user