mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-11 01:46:14 +00:00
lib: Skip execution in gem_has_ring()
By looking for a particular error we can avoid actually executing anything when testing whether the kernel supports an individual ring. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
0501dcfd0f
commit
9ba9af2ea4
@ -541,6 +541,7 @@ int __gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
|
|||||||
int err = 0;
|
int err = 0;
|
||||||
if (drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf))
|
if (drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf))
|
||||||
err = -errno;
|
err = -errno;
|
||||||
|
errno = 0;
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -555,7 +556,6 @@ int __gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
|
|||||||
void gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
|
void gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
|
||||||
{
|
{
|
||||||
igt_assert_eq(__gem_execbuf(fd, execbuf), 0);
|
igt_assert_eq(__gem_execbuf(fd, execbuf), 0);
|
||||||
errno = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1398,23 +1398,15 @@ void gem_require_caching(int fd)
|
|||||||
|
|
||||||
static int gem_has_ring(int fd, int ring)
|
static int gem_has_ring(int fd, int ring)
|
||||||
{
|
{
|
||||||
uint32_t bbe = MI_BATCH_BUFFER_END;
|
|
||||||
struct drm_i915_gem_execbuffer2 execbuf;
|
struct drm_i915_gem_execbuffer2 execbuf;
|
||||||
struct drm_i915_gem_exec_object2 exec;
|
struct drm_i915_gem_exec_object2 exec;
|
||||||
int ret;
|
|
||||||
|
|
||||||
memset(&exec, 0, sizeof(exec));
|
memset(&exec, 0, sizeof(exec));
|
||||||
exec.handle = gem_create(fd, 4096);
|
|
||||||
gem_write(fd, exec.handle, 0, &bbe, sizeof(bbe));
|
|
||||||
|
|
||||||
memset(&execbuf, 0, sizeof(execbuf));
|
memset(&execbuf, 0, sizeof(execbuf));
|
||||||
execbuf.buffers_ptr = (uintptr_t)&exec;
|
execbuf.buffers_ptr = (uintptr_t)&exec;
|
||||||
execbuf.buffer_count = 1;
|
execbuf.buffer_count = 1;
|
||||||
execbuf.flags = ring;
|
execbuf.flags = ring;
|
||||||
ret = __gem_execbuf(fd, &execbuf);
|
return __gem_execbuf(fd, &execbuf) == -ENOENT;
|
||||||
gem_close(fd, exec.handle);
|
|
||||||
|
|
||||||
return ret == 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user