igt: Add a helper function for creating VC4 BOs.

v2: Use do_ioctl().

Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
Eric Anholt 2016-01-25 13:15:36 -08:00
parent b8badc2436
commit 59f98997ab
3 changed files with 17 additions and 13 deletions

View File

@ -68,9 +68,7 @@ uint32_t igt_vc4_get_cleared_bo(int fd, size_t size, uint32_t clearval)
/* A single row will be a page. */ /* A single row will be a page. */
uint32_t width = 1024; uint32_t width = 1024;
uint32_t height = size / (width * 4); uint32_t height = size / (width * 4);
struct drm_vc4_create_bo create = { uint32_t handle = igt_vc4_create_bo(fd, size);
.size = size,
};
struct drm_vc4_submit_cl submit = { struct drm_vc4_submit_cl submit = {
.color_write = { .color_write = {
.hindex = 0, .hindex = 0,
@ -84,7 +82,7 @@ uint32_t igt_vc4_get_cleared_bo(int fd, size_t size, uint32_t clearval)
.msaa_color_write = { .hindex = ~0 }, .msaa_color_write = { .hindex = ~0 },
.msaa_zs_write = { .hindex = ~0 }, .msaa_zs_write = { .hindex = ~0 },
.bo_handles = (uint64_t)(uintptr_t)&create.handle, .bo_handles = (uint64_t)(uintptr_t)&handle,
.bo_handle_count = 1, .bo_handle_count = 1,
.width = width, .width = width,
.height = height, .height = height,
@ -96,10 +94,20 @@ uint32_t igt_vc4_get_cleared_bo(int fd, size_t size, uint32_t clearval)
igt_assert_eq_u32(width * height * 4, size); igt_assert_eq_u32(width * height * 4, size);
do_ioctl(fd, DRM_IOCTL_VC4_CREATE_BO, &create);
do_ioctl(fd, DRM_IOCTL_VC4_SUBMIT_CL, &submit); do_ioctl(fd, DRM_IOCTL_VC4_SUBMIT_CL, &submit);
return handle;
}
int
igt_vc4_create_bo(int fd, size_t size)
{
struct drm_vc4_create_bo create = {
.size = size,
};
do_ioctl(fd, DRM_IOCTL_VC4_CREATE_BO, &create);
return create.handle; return create.handle;
} }

View File

@ -25,6 +25,7 @@
#define IGT_VC4_H #define IGT_VC4_H
uint32_t igt_vc4_get_cleared_bo(int fd, size_t size, uint32_t clearval); uint32_t igt_vc4_get_cleared_bo(int fd, size_t size, uint32_t clearval);
int igt_vc4_create_bo(int fd, size_t size);
void *igt_vc4_mmap_bo(int fd, uint32_t handle, uint32_t size, unsigned prot); void *igt_vc4_mmap_bo(int fd, uint32_t handle, uint32_t size, unsigned prot);
#endif /* IGT_VC4_H */ #endif /* IGT_VC4_H */

View File

@ -22,6 +22,7 @@
*/ */
#include "igt.h" #include "igt.h"
#include "igt_vc4.h"
#include <unistd.h> #include <unistd.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
@ -39,14 +40,8 @@ igt_main
int bo_handle; int bo_handle;
igt_fixture { igt_fixture {
struct drm_vc4_create_bo create = {
.size = 4096,
};
fd = drm_open_driver(DRIVER_VC4); fd = drm_open_driver(DRIVER_VC4);
bo_handle = igt_vc4_create_bo(fd, 4096);
do_ioctl(fd, DRM_IOCTL_VC4_CREATE_BO, &create);
bo_handle = create.handle;
} }
igt_subtest("bad-bo") { igt_subtest("bad-bo") {