From: Daniel Vetter Date: Mon, 19 Aug 2013 08:55:28 +0000 (+0200) Subject: lib/drmtest: extract gem_create_context X-Git-Tag: intel-gpu-tools-1.4~163 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9ad062d0b30f307cd5045ba03eeb7d2fa90487b0;p=profile%2Fextras%2Fintel-gpu-tools.git lib/drmtest: extract gem_create_context libdrm requirements are now up to it. Signed-off-by: Daniel Vetter --- diff --git a/lib/drmtest.c b/lib/drmtest.c index 2755ebe..38d215d 100644 --- a/lib/drmtest.c +++ b/lib/drmtest.c @@ -526,6 +526,18 @@ int gem_madvise(int fd, uint32_t handle, int state) return madv.retained; } +uint32_t gem_context_create(int fd) +{ + struct drm_i915_gem_context_create create; + int ret; + + ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create); + igt_require(ret == 0 || (errno == ENODEV || errno == EINVAL)); + igt_assert(ret == 0); + + return create.ctx_id; +} + /* prime */ int prime_handle_to_fd(int fd, uint32_t handle) { diff --git a/lib/drmtest.h b/lib/drmtest.h index d2fe242..3ba3f4f 100644 --- a/lib/drmtest.h +++ b/lib/drmtest.h @@ -77,6 +77,8 @@ uint64_t gem_aperture_size(int fd); uint64_t gem_mappable_aperture_size(void); int gem_madvise(int fd, uint32_t handle, int state); +uint32_t gem_context_create(int fd); + /* feature test helpers */ bool gem_uses_aliasing_ppgtt(int fd); int gem_available_fences(int fd); diff --git a/tests/gem_ctx_bad_destroy.c b/tests/gem_ctx_bad_destroy.c index aec2795..7852618 100644 --- a/tests/gem_ctx_bad_destroy.c +++ b/tests/gem_ctx_bad_destroy.c @@ -34,33 +34,13 @@ #include "i915_drm.h" #include "drmtest.h" -struct local_drm_i915_context_create { - __u32 ctx_id; - __u32 pad; -}; - struct local_drm_i915_context_destroy { __u32 ctx_id; __u32 pad; }; -#define CONTEXT_CREATE_IOCTL DRM_IOWR(DRM_COMMAND_BASE + 0x2d, struct local_drm_i915_context_create) #define CONTEXT_DESTROY_IOCTL DRM_IOWR(DRM_COMMAND_BASE + 0x2e, struct local_drm_i915_context_destroy) -static uint32_t context_create(int fd) -{ - struct local_drm_i915_context_create create; - int ret; - - ret = drmIoctl(fd, CONTEXT_CREATE_IOCTL, &create); - if (ret == -1 && (errno == ENODEV || errno == EINVAL)) - igt_skip(); - else if (ret) - abort(); - - return create.ctx_id; -} - static void handle_bad(int ret, int lerrno, int expected, const char *desc) { if (ret != 0 && lerrno != expected) { @@ -84,7 +64,7 @@ int main(int argc, char *argv[]) fd = drm_open_any(); - ctx_id = context_create(fd); + ctx_id = gem_context_create(fd); destroy.ctx_id = ctx_id; /* Make sure a proper destroy works first */ diff --git a/tests/gem_ctx_bad_exec.c b/tests/gem_ctx_bad_exec.c index 8e80a62..348b2f8 100644 --- a/tests/gem_ctx_bad_exec.c +++ b/tests/gem_ctx_bad_exec.c @@ -46,28 +46,6 @@ #include "i915_drm.h" #include "drmtest.h" -struct local_drm_i915_gem_context_create { - __u32 ctx_id; - __u32 pad; -}; - -#define CONTEXT_CREATE_IOCTL DRM_IOWR(DRM_COMMAND_BASE + 0x2d, struct local_drm_i915_gem_context_create) - -static uint32_t context_create(int fd) -{ - struct local_drm_i915_gem_context_create create; - int ret; - - ret = drmIoctl(fd, CONTEXT_CREATE_IOCTL, &create); - if (ret == -1 && (errno == ENODEV || errno == EINVAL)) { - igt_skip(); - } else if (ret) { - abort(); - } - - return create.ctx_id; -} - /* Copied from gem_exec_nop.c */ static int exec(int fd, uint32_t handle, int ring, int ctx_id) { @@ -116,7 +94,7 @@ int main(int argc, char *argv[]) igt_fixture { fd = drm_open_any(); - ctx_id = context_create(fd); + ctx_id = gem_context_create(fd); handle = gem_create(fd, 4096); gem_write(fd, handle, 0, batch, sizeof(batch)); diff --git a/tests/gem_ctx_exec.c b/tests/gem_ctx_exec.c index 2d1a7de..7b5be56 100644 --- a/tests/gem_ctx_exec.c +++ b/tests/gem_ctx_exec.c @@ -45,33 +45,13 @@ #include "i915_drm.h" #include "drmtest.h" -struct local_drm_i915_gem_context_create { - __u32 ctx_id; - __u32 pad; -}; - struct local_drm_i915_gem_context_destroy { __u32 ctx_id; __u32 pad; }; -#define CONTEXT_CREATE_IOCTL DRM_IOWR(DRM_COMMAND_BASE + 0x2d, struct local_drm_i915_gem_context_create) #define CONTEXT_DESTROY_IOCTL DRM_IOWR(DRM_COMMAND_BASE + 0x2e, struct local_drm_i915_gem_context_destroy) -static uint32_t context_create(int fd) -{ - struct local_drm_i915_gem_context_create create; - int ret; - - ret = drmIoctl(fd, CONTEXT_CREATE_IOCTL, &create); - if (ret == -1 && (errno == ENODEV || errno == EINVAL)) - igt_skip(); - else if (ret) - abort(); - - return create.ctx_id; -} - static void context_destroy(int fd, uint32_t ctx_id) { struct local_drm_i915_gem_context_destroy destroy; @@ -125,14 +105,14 @@ int main(int argc, char *argv[]) fd = drm_open_any(); - ctx_id = context_create(fd); + ctx_id = gem_context_create(fd); handle = gem_create(fd, 4096); gem_write(fd, handle, 0, batch, sizeof(batch)); igt_assert(exec(fd, handle, I915_EXEC_RENDER, ctx_id) == 0); context_destroy(fd, ctx_id); - ctx_id = context_create(fd); + ctx_id = gem_context_create(fd); igt_assert(exec(fd, handle, I915_EXEC_RENDER, ctx_id) == 0); context_destroy(fd, ctx_id);