drm-lease: Enable DRM render node on R-Car 82/26182/1
authorDamian Hobson-Garcia <dhobsong@igel.co.jp>
Wed, 17 Mar 2021 09:32:18 +0000 (18:32 +0900)
committerDamian Hobson-Garcia <dhobsong@igel.co.jp>
Wed, 17 Mar 2021 09:49:35 +0000 (18:49 +0900)
When using DRM lease, wayland clients applications must
be able to create an EGL context without DRM authentication.
The latest R-Car OpenGL driver, can do this when the R-Car
display driver must provides a render node.

Enable the rcar-du render node and allow it to allocate of
scanout buffers.

Bug-AGL: SPEC-3730

Change-Id: Iae4f74afb69de3a7f9ddf3ec5113938ade81fda4
Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp>
meta-agl-drm-lease/recipes-kernel/linux-renesas/files/0001-drm-enable-dumb-buffer-ops-for-render-nodes.patch [new file with mode: 0644]
meta-agl-drm-lease/recipes-kernel/linux-renesas/files/0002-drm-rcar-du-support-render-node.patch [new file with mode: 0644]
meta-agl-drm-lease/recipes-kernel/linux-renesas/linux-renesas_%.bbappend [new file with mode: 0644]

diff --git a/meta-agl-drm-lease/recipes-kernel/linux-renesas/files/0001-drm-enable-dumb-buffer-ops-for-render-nodes.patch b/meta-agl-drm-lease/recipes-kernel/linux-renesas/files/0001-drm-enable-dumb-buffer-ops-for-render-nodes.patch
new file mode 100644 (file)
index 0000000..a9b6bb5
--- /dev/null
@@ -0,0 +1,31 @@
+From d39ae6c8cdbab2797f5603abe0eb2bacde881951 Mon Sep 17 00:00:00 2001
+From: Damian Hobson-Garcia <dhobsong@igel.co.jp>
+Date: Tue, 16 Mar 2021 19:54:39 +0900
+Subject: [PATCH] drm: enable dumb buffer ops for render nodes
+
+The EGL modules that use render nodes on R-Car use these operations
+to create and manage buffers that can be used for scanout on R-Car.
+---
+ drivers/gpu/drm/drm_ioctl.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
+index fcd728d7cf72..e293cf7bc35c 100644
+--- a/drivers/gpu/drm/drm_ioctl.c
++++ b/drivers/gpu/drm/drm_ioctl.c
+@@ -676,9 +676,9 @@ static const struct drm_ioctl_desc drm_ioctls[] = {
+       DRM_IOCTL_DEF(DRM_IOCTL_MODE_RMFB, drm_mode_rmfb_ioctl, 0),
+       DRM_IOCTL_DEF(DRM_IOCTL_MODE_PAGE_FLIP, drm_mode_page_flip_ioctl, DRM_MASTER),
+       DRM_IOCTL_DEF(DRM_IOCTL_MODE_DIRTYFB, drm_mode_dirtyfb_ioctl, DRM_MASTER),
+-      DRM_IOCTL_DEF(DRM_IOCTL_MODE_CREATE_DUMB, drm_mode_create_dumb_ioctl, 0),
+-      DRM_IOCTL_DEF(DRM_IOCTL_MODE_MAP_DUMB, drm_mode_mmap_dumb_ioctl, 0),
+-      DRM_IOCTL_DEF(DRM_IOCTL_MODE_DESTROY_DUMB, drm_mode_destroy_dumb_ioctl, 0),
++      DRM_IOCTL_DEF(DRM_IOCTL_MODE_CREATE_DUMB, drm_mode_create_dumb_ioctl, DRM_RENDER_ALLOW),
++      DRM_IOCTL_DEF(DRM_IOCTL_MODE_MAP_DUMB, drm_mode_mmap_dumb_ioctl, DRM_RENDER_ALLOW),
++      DRM_IOCTL_DEF(DRM_IOCTL_MODE_DESTROY_DUMB, drm_mode_destroy_dumb_ioctl, DRM_RENDER_ALLOW),
+       DRM_IOCTL_DEF(DRM_IOCTL_MODE_OBJ_GETPROPERTIES, drm_mode_obj_get_properties_ioctl, 0),
+       DRM_IOCTL_DEF(DRM_IOCTL_MODE_OBJ_SETPROPERTY, drm_mode_obj_set_property_ioctl, DRM_MASTER),
+       DRM_IOCTL_DEF(DRM_IOCTL_MODE_CURSOR2, drm_mode_cursor2_ioctl, DRM_MASTER),
+-- 
+2.17.1
+
diff --git a/meta-agl-drm-lease/recipes-kernel/linux-renesas/files/0002-drm-rcar-du-support-render-node.patch b/meta-agl-drm-lease/recipes-kernel/linux-renesas/files/0002-drm-rcar-du-support-render-node.patch
new file mode 100644 (file)
index 0000000..045a63e
--- /dev/null
@@ -0,0 +1,32 @@
+From 2ea386a6175c695d81365acd3b22a3bc87ab8195 Mon Sep 17 00:00:00 2001
+From: Tomohito Esaki <etom@igel.co.jp>
+Date: Wed, 8 Aug 2018 14:20:46 +0900
+Subject: [PATCH 2/2] drm: rcar-du: enable rcar-du render node
+
+Create a render node tied to the DU device so that the allocated
+buffers can be used for scanout, VSP composition, etc.
+
+[dhobsong@igel.co.jp: Rebased to Linux 5.4]
+Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp> 
+
+---
+ drivers/gpu/drm/rcar-du/rcar_du_drv.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+index 6a099b04a161..3e63911e4198 100644
+--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
++++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+@@ -458,7 +458,8 @@ static const struct drm_ioctl_desc rcar_du_ioctls[] = {
+ DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
+ static struct drm_driver rcar_du_driver = {
+-      .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
++      .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC
++                              | DRIVER_RENDER,
+       .gem_free_object_unlocked = drm_gem_cma_free_object,
+       .gem_vm_ops             = &drm_gem_cma_vm_ops,
+       .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
+-- 
+2.25.1
+
diff --git a/meta-agl-drm-lease/recipes-kernel/linux-renesas/linux-renesas_%.bbappend b/meta-agl-drm-lease/recipes-kernel/linux-renesas/linux-renesas_%.bbappend
new file mode 100644 (file)
index 0000000..e0a434c
--- /dev/null
@@ -0,0 +1,8 @@
+COMPATIBLE_MACHINE = "rcar-gen3"
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+SRC_URI_append = " \
+    file://0001-drm-enable-dumb-buffer-ops-for-render-nodes.patch \
+    file://0002-drm-rcar-du-support-render-node.patch \
+"
+