diff options
author | Damian Hobson-Garcia <dhobsong@igel.co.jp> | 2021-03-17 18:32:18 +0900 |
---|---|---|
committer | Damian Hobson-Garcia <dhobsong@igel.co.jp> | 2021-03-17 18:49:35 +0900 |
commit | 049bb26f3d28886a52cc02cdef951022f349ae89 (patch) | |
tree | 267a1977b45a45f4e495f1485911cfcd5994a8b9 | |
parent | 83c248ad5c477cbe9ac5e46923b42dadfa68c6b0 (diff) |
drm-lease: Enable DRM render node on R-Car
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>
3 files changed, 71 insertions, 0 deletions
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 index 00000000..a9b6bb55 --- /dev/null +++ b/meta-agl-drm-lease/recipes-kernel/linux-renesas/files/0001-drm-enable-dumb-buffer-ops-for-render-nodes.patch @@ -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 index 00000000..045a63ed --- /dev/null +++ b/meta-agl-drm-lease/recipes-kernel/linux-renesas/files/0002-drm-rcar-du-support-render-node.patch @@ -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 index 00000000..e0a434c3 --- /dev/null +++ b/meta-agl-drm-lease/recipes-kernel/linux-renesas/linux-renesas_%.bbappend @@ -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 \ +" + |