graphics_Gbm: Add dmabuf API test for importing buffers
BUG=chromium:581151
TEST=graphics_Gbm
Change-Id: I0b27f198095fa9eae8c64cc496dc41c16cec127e
Reviewed-on: https://chromium-review.googlesource.com/339770
Commit-Ready: Tiago Vignatti <tiago.vignatti@intel.com>
Tested-by: Tiago Vignatti <tiago.vignatti@intel.com>
Reviewed-by: Tiago Vignatti <tiago.vignatti@intel.com>
Reviewed-by: Dongseong Hwang <dongseong.hwang@intel.com>
Reviewed-by: Zach Reizner <zachr@chromium.org>
diff --git a/client/site_tests/graphics_Gbm/src/gbmtest.c b/client/site_tests/graphics_Gbm/src/gbmtest.c
index e86e716..7930c64 100644
--- a/client/site_tests/graphics_Gbm/src/gbmtest.c
+++ b/client/site_tests/graphics_Gbm/src/gbmtest.c
@@ -473,9 +473,9 @@
}
/*
- * Tests prime import.
+ * Tests prime import using VGEM sharing buffer.
*/
-static int test_import()
+static int test_import_vgem()
{
struct gbm_import_fd_data fd_data;
int vgem_fd = drm_open_vgem();
@@ -502,12 +502,45 @@
bo = gbm_bo_import(gbm, GBM_BO_IMPORT_FD, &fd_data, GBM_BO_USE_RENDERING);
CHECK(check_bo(bo));
gbm_bo_destroy(bo);
+ close(prime_handle.fd);
close(vgem_fd);
return 1;
}
+/*
+ * Tests prime import using dma-buf API.
+ */
+static int test_import_dmabuf()
+{
+ struct gbm_import_fd_data fd_data;
+ struct gbm_bo *bo1, *bo2;
+ const int width = 123;
+ const int height = 456;
+ int prime_fd;
+
+ bo1 = gbm_bo_create(gbm, width, height, GBM_FORMAT_XRGB8888, GBM_BO_USE_RENDERING);
+ CHECK(check_bo(bo1));
+
+ prime_fd = gbm_bo_get_fd(bo1);
+ CHECK(prime_fd >= 0);
+ gbm_bo_destroy(bo1);
+
+ fd_data.fd = prime_fd;
+ fd_data.width = width;
+ fd_data.height = height;
+ fd_data.stride = gbm_bo_get_stride(bo1);
+ fd_data.format = GBM_FORMAT_XRGB8888;
+
+ bo2 = gbm_bo_import(gbm, GBM_BO_IMPORT_FD, &fd_data, GBM_BO_USE_RENDERING);
+ CHECK(check_bo(bo2));
+ gbm_bo_destroy(bo2);
+ close(prime_fd);
+
+ return 1;
+}
+
int main(int argc, char *argv[])
{
int result;
@@ -528,7 +561,8 @@
result &= test_alloc_free_usage();
result &= test_user_data();
result &= test_export();
- result &= test_import();
+ result &= test_import_vgem();
+ result &= test_import_dmabuf();
result &= test_destroy();
if (!result) {