[igt-dev] [PATCH i-g-t 2/2] tests/kms_prime: Create the exporting BO with smem placement

Ramalingam C ramalingam.c at intel.com
Tue Sep 7 16:00:12 UTC 2021


On i915, to use the dmabuf, we need the sharing object needs to
be migrated to smem. So shared object needs to have the smem as second
placement option.

Currently kms_prime sharing the dumb buffer between the devices.
But dumb buffer can't have the placements and resides at lmem for the
dgfx. Hence to meet the i915 expectation for dgfx, we create the BO
using the gem_create with smem as second placement option.

Signed-off-by: Ramalingam C <ramalingam.c at intel.com>
---
 tests/kms_prime.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/tests/kms_prime.c b/tests/kms_prime.c
index 2e20c58bc16e..877774249e0f 100644
--- a/tests/kms_prime.c
+++ b/tests/kms_prime.c
@@ -100,18 +100,16 @@ static void prepare_scratch(int exporter_fd, struct dumb_bo *scratch,
 	scratch->height = mode->vdisplay;
 	scratch->bpp = 32;
 
-	scratch->handle = kmstest_dumb_create(exporter_fd,
-			ALIGN(scratch->width, 256),
-			scratch->height,
-			scratch->bpp,
-			&scratch->pitch,
-			&scratch->size);
-
-
-	ptr = kmstest_dumb_map_buffer(exporter_fd,
-				      scratch->handle,
-				      scratch->size,
-				      PROT_WRITE);
+	igt_calc_fb_size(exporter_fd, mode->hdisplay, mode->vdisplay, DRM_FORMAT_XRGB8888,
+			 DRM_FORMAT_MOD_NONE, &scratch->size, &scratch->pitch);
+	if (gem_has_lmem(exporter_fd))
+		scratch->handle = gem_create_in_memory_regions(exporter_fd, scratch->size,
+							       REGION_LMEM(0), REGION_SMEM);
+	else
+		scratch->handle = gem_create_in_memory_regions(exporter_fd, scratch->size,
+							       REGION_SMEM);
+
+	ptr = gem_mmap_ptr(exporter_fd, scratch->handle, 0, scratch->size, PROT_WRITE | PROT_READ);
 
 	for (size_t idx = 0; idx < scratch->size / sizeof(*ptr); ++idx)
 		ptr[idx] = color;
-- 
2.20.1



More information about the igt-dev mailing list