From 4ae6d5ade5212bfbf7b2cb9ed51cf02598bded6e Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Tue, 30 Jul 2024 17:47:29 +0200 Subject: [PATCH 1/3] RPi5: add udev rule to symlink dma_buf/system to dma_buf/vidbuf shared This allows ffmpeg to use the system memory instead of CMA for video decoding. As RPi5 has an MMU CMA is not needed. Signed-off-by: Matthias Reichl --- .../RPi5/filesystem/usr/lib/udev/rules.d/60-dma-heap.rules | 1 + 1 file changed, 1 insertion(+) create mode 100644 projects/RPi/devices/RPi5/filesystem/usr/lib/udev/rules.d/60-dma-heap.rules diff --git a/projects/RPi/devices/RPi5/filesystem/usr/lib/udev/rules.d/60-dma-heap.rules b/projects/RPi/devices/RPi5/filesystem/usr/lib/udev/rules.d/60-dma-heap.rules new file mode 100644 index 0000000000..42745fe4e4 --- /dev/null +++ b/projects/RPi/devices/RPi5/filesystem/usr/lib/udev/rules.d/60-dma-heap.rules @@ -0,0 +1 @@ +SUBSYSTEM=="dma_heap", KERNEL=="system", SYMLINK+="dma_heap/vidbuf_cached" From af67e8627cb30005830f39723da9d424e61c2968 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Wed, 31 Jul 2024 17:49:17 +0200 Subject: [PATCH 2/3] kodi (RPi): add patch to allow using optional vidbuf_cached dma heap Signed-off-by: Matthias Reichl --- ...MAHeapBufferObject-Add-vidbuf_cached.patch | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/RPi/patches/kodi/0100-DMAHeapBufferObject-Add-vidbuf_cached.patch diff --git a/projects/RPi/patches/kodi/0100-DMAHeapBufferObject-Add-vidbuf_cached.patch b/projects/RPi/patches/kodi/0100-DMAHeapBufferObject-Add-vidbuf_cached.patch new file mode 100644 index 0000000000..813f98935c --- /dev/null +++ b/projects/RPi/patches/kodi/0100-DMAHeapBufferObject-Add-vidbuf_cached.patch @@ -0,0 +1,28 @@ +From 863283c15dbba77a50f93640f77630052aef0cc5 Mon Sep 17 00:00:00 2001 +From: Dom Cobley +Date: Wed, 31 Jul 2024 14:23:46 +0100 +Subject: [PATCH] DMAHeapBufferObject: Add vidbuf_cached + +This is an optional symlink that allows preferring system or cma for dmabuf allocations +(typically system for pi5 and cma for pi4) +--- + xbmc/utils/DMAHeapBufferObject.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/xbmc/utils/DMAHeapBufferObject.cpp b/xbmc/utils/DMAHeapBufferObject.cpp +index ad05aa8290ac..d6457318b45e 100644 +--- a/xbmc/utils/DMAHeapBufferObject.cpp ++++ b/xbmc/utils/DMAHeapBufferObject.cpp +@@ -24,7 +24,8 @@ + namespace + { + +-std::array DMA_HEAP_PATHS = { ++std::array DMA_HEAP_PATHS = { ++ "/dev/dma_heap/vidbuf_cached", + "/dev/dma_heap/reserved", + "/dev/dma_heap/linux,cma", + "/dev/dma_heap/system", +-- +2.39.2 + From c5d7ce9251e0aaf1c2364768670d1a496b88ea75 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Wed, 31 Jul 2024 17:50:57 +0200 Subject: [PATCH 3/3] RPi5: reduce CMA memory in distroconfig.txt to 64MB ffmpeg and kodi can now happily use the system memory so it's no longer necessary to reserve a huge block for CMA. Signed-off-by: Matthias Reichl --- projects/RPi/devices/RPi5/config/distroconfig-composite.txt | 2 +- projects/RPi/devices/RPi5/config/distroconfig.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/RPi/devices/RPi5/config/distroconfig-composite.txt b/projects/RPi/devices/RPi5/config/distroconfig-composite.txt index 26625be562..aa6bc18832 100644 --- a/projects/RPi/devices/RPi5/config/distroconfig-composite.txt +++ b/projects/RPi/devices/RPi5/config/distroconfig-composite.txt @@ -7,7 +7,7 @@ arm_64bit=1 kernel=kernel.img display_auto_detect=1 enable_tvout=1 -dtoverlay=vc4-kms-v3d,cma-512,composite=1 +dtoverlay=vc4-kms-v3d,cma-64,composite=1 dtoverlay= disable_overscan=1 disable_fw_kms_setup=1 diff --git a/projects/RPi/devices/RPi5/config/distroconfig.txt b/projects/RPi/devices/RPi5/config/distroconfig.txt index 10df6ca5e3..ce81b92ca9 100644 --- a/projects/RPi/devices/RPi5/config/distroconfig.txt +++ b/projects/RPi/devices/RPi5/config/distroconfig.txt @@ -6,7 +6,7 @@ arm_boost=1 arm_64bit=1 kernel=kernel.img display_auto_detect=1 -dtoverlay=vc4-kms-v3d,cma-512 +dtoverlay=vc4-kms-v3d,cma-64 dtoverlay= disable_overscan=1 disable_fw_kms_setup=1