mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-09 00:46:17 +00:00
drmtest: Use standard gem_execbuf() calls in gem_quiescent_gpu()
Now that we have better ioctl wrappers, let's make us of them. The advantage should be in improved error reporting in case gem_quiescent_gpu() ever fails. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
b718f50f92
commit
59f076a089
@ -147,56 +147,40 @@ static void check_stop_rings(void)
|
|||||||
void gem_quiescent_gpu(int fd)
|
void gem_quiescent_gpu(int fd)
|
||||||
{
|
{
|
||||||
uint32_t batch[2] = {MI_BATCH_BUFFER_END, 0};
|
uint32_t batch[2] = {MI_BATCH_BUFFER_END, 0};
|
||||||
uint32_t handle;
|
|
||||||
struct drm_i915_gem_execbuffer2 execbuf;
|
struct drm_i915_gem_execbuffer2 execbuf;
|
||||||
struct drm_i915_gem_exec_object2 gem_exec[1];
|
struct drm_i915_gem_exec_object2 gem_exec[1];
|
||||||
|
|
||||||
check_stop_rings();
|
check_stop_rings();
|
||||||
|
|
||||||
handle = gem_create(fd, 4096);
|
memset(gem_exec, 0, sizeof(gem_exec));
|
||||||
gem_write(fd, handle, 0, batch, sizeof(batch));
|
gem_exec[0].handle = gem_create(fd, 4096);
|
||||||
|
gem_write(fd, gem_exec[0].handle, 0, batch, sizeof(batch));
|
||||||
gem_exec[0].handle = handle;
|
|
||||||
gem_exec[0].relocation_count = 0;
|
|
||||||
gem_exec[0].relocs_ptr = 0;
|
|
||||||
gem_exec[0].alignment = 0;
|
|
||||||
gem_exec[0].offset = 0;
|
|
||||||
gem_exec[0].flags = 0;
|
|
||||||
gem_exec[0].rsvd1 = 0;
|
|
||||||
gem_exec[0].rsvd2 = 0;
|
|
||||||
|
|
||||||
|
memset(&execbuf, 0, sizeof(execbuf));
|
||||||
execbuf.buffers_ptr = (uintptr_t)gem_exec;
|
execbuf.buffers_ptr = (uintptr_t)gem_exec;
|
||||||
execbuf.buffer_count = 1;
|
execbuf.buffer_count = 1;
|
||||||
execbuf.batch_start_offset = 0;
|
|
||||||
execbuf.batch_len = 8;
|
|
||||||
execbuf.cliprects_ptr = 0;
|
|
||||||
execbuf.num_cliprects = 0;
|
|
||||||
execbuf.DR1 = 0;
|
|
||||||
execbuf.DR4 = 0;
|
|
||||||
execbuf.flags = 0;
|
|
||||||
i915_execbuffer2_set_context_id(execbuf, 0);
|
|
||||||
execbuf.rsvd2 = 0;
|
|
||||||
|
|
||||||
do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
|
execbuf.flags = I915_EXEC_RENDER;
|
||||||
|
gem_execbuf(fd, &execbuf);
|
||||||
|
|
||||||
if (gem_has_blt(fd)) {
|
if (gem_has_blt(fd)) {
|
||||||
execbuf.flags = I915_EXEC_BLT;
|
execbuf.flags = I915_EXEC_BLT;
|
||||||
do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
|
gem_execbuf(fd, &execbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gem_has_bsd(fd)) {
|
if (gem_has_bsd(fd)) {
|
||||||
execbuf.flags = I915_EXEC_BSD;
|
execbuf.flags = I915_EXEC_BSD;
|
||||||
do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
|
gem_execbuf(fd, &execbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gem_has_vebox(fd)) {
|
if (gem_has_vebox(fd)) {
|
||||||
execbuf.flags = LOCAL_I915_EXEC_VEBOX;
|
execbuf.flags = LOCAL_I915_EXEC_VEBOX;
|
||||||
do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
|
gem_execbuf(fd, &execbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
gem_sync(fd, handle);
|
gem_sync(fd, gem_exec[0].handle);
|
||||||
igt_drop_caches_set(DROP_RETIRE);
|
igt_drop_caches_set(DROP_RETIRE);
|
||||||
gem_close(fd, handle);
|
gem_close(fd, gem_exec[0].handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user