[igt-dev] [PATCH i-g-t 2/3] tests/prime_mmap: Iterate over dma-buf supported memory regions
Zbigniew Kempczyński
zbigniew.kempczynski at intel.com
Mon Feb 28 13:03:27 UTC 2022
To avoid code duplication (prime_mmap_coherency uses similar code)
use helper function which returns dma-buf set of supported regions.
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Cc: Ashutosh Dixit <ashutosh.dixit at intel.com>
---
tests/prime_mmap.c | 34 ++++++----------------------------
1 file changed, 6 insertions(+), 28 deletions(-)
diff --git a/tests/prime_mmap.c b/tests/prime_mmap.c
index e0cb9a25b..dc31bd1b3 100644
--- a/tests/prime_mmap.c
+++ b/tests/prime_mmap.c
@@ -483,31 +483,6 @@ test_aperture_limit(uint32_t region, int size)
gem_close(fd, handle2);
}
-static int
-check_for_dma_buf_mmap(struct igt_collection *set)
-{
- struct igt_collection *region;
- uint32_t reg;
- int dma_buf_fd;
- char *ptr;
- uint32_t handle;
- int ret = 1;
-
- for_each_combination(region, 1, set) {
- reg = igt_collection_get_value(region, 0);
- handle = gem_create_in_memory_regions(fd, BO_SIZE, reg);
-
- dma_buf_fd = prime_handle_to_fd(fd, handle);
- ptr = mmap(NULL, BO_SIZE, PROT_READ, MAP_SHARED, dma_buf_fd, 0);
- if (ptr != MAP_FAILED)
- ret = 0;
- munmap(ptr, BO_SIZE);
- gem_close(fd, handle);
- close(dma_buf_fd);
- }
- return ret;
-}
-
#define SKIP_LMEM (1 << 0)
#define SKIP_USERPTR (1 << 1)
@@ -527,7 +502,7 @@ static bool check_skip(uint32_t skip, uint32_t region)
igt_main
{
- struct igt_collection *set, *regions;
+ struct igt_collection *set, *regions, *dmabufset;
struct drm_i915_query_memory_regions *query_info;
struct {
const char *name;
@@ -560,13 +535,15 @@ igt_main
set = get_memory_region_set(query_info, I915_SYSTEM_MEMORY,
I915_DEVICE_MEMORY);
- igt_assert(check_for_dma_buf_mmap(set) == 0);
+
+ dmabufset = get_dma_buf_mmap_supported_set(fd, set);
+ igt_require_f(dmabufset, "No dma-buf region supported\n");
errno = 0;
}
for (i = 0; i < ARRAY_SIZE(tests); i++)
igt_subtest_with_dynamic(tests[i].name) {
- for_each_combination(regions, 1, set) {
+ for_each_combination(regions, 1, dmabufset) {
region = igt_collection_get_value(regions, 0);
size = gem_get_batch_size(fd, MEMORY_TYPE_FROM_REGION(region));
size = max(size, BO_SIZE);
@@ -582,6 +559,7 @@ igt_main
igt_fixture {
free(query_info);
igt_collection_destroy(set);
+ igt_collection_destroy(dmabufset);
close(fd);
}
}
--
2.32.0
More information about the igt-dev
mailing list