diff --git a/packages/devel/libcec/package.mk b/packages/devel/libcec/package.mk index c024331fcb..02b4b26270 100644 --- a/packages/devel/libcec/package.mk +++ b/packages/devel/libcec/package.mk @@ -17,13 +17,8 @@ PKG_CMAKE_OPTS_TARGET="-DBUILD_SHARED_LIBS=1 \ -DSKIP_PYTHON_WRAPPER=1 \ -DHAVE_IMX_API=0 \ -DHAVE_AOCEC_API=0 -DHAVE_AMLOGIC_API=0 \ - -DHAVE_GIT_BIN=0" - -if [ "$KODIPLAYER_DRIVER" = "bcm2835-driver" ]; then - PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET bcm2835-driver" -else - PKG_CMAKE_OPTS_TARGET+=" -DHAVE_RPI_LIB=0" -fi + -DHAVE_GIT_BIN=0 \ + -DHAVE_RPI_LIB=0" # libX11 and xrandr to read the sink's EDID, used to determine the PC's HDMI physical address if [ "$DISPLAYSERVER" = "x11" ]; then @@ -36,13 +31,6 @@ else PKG_CMAKE_OPTS_TARGET="$PKG_CMAKE_OPTS_TARGET -DHAVE_LINUX_API=0" fi -pre_configure_target() { - if [ "$KODIPLAYER_DRIVER" = "bcm2835-driver" ]; then - # detecting RPi support fails without -lvchiq_arm - export LDFLAGS="$LDFLAGS -lvchiq_arm" - fi -} - post_makeinstall_target() { # Remove the Python3 demo - useless for us rm -f $INSTALL/usr/bin/pyCecClient diff --git a/packages/graphics/bcm2835-driver/package.mk b/packages/graphics/bcm2835-driver/package.mk index 39bb891c0a..b53f362496 100644 --- a/packages/graphics/bcm2835-driver/package.mk +++ b/packages/graphics/bcm2835-driver/package.mk @@ -20,33 +20,21 @@ else fi makeinstall_target() { - # Install vendor header files + # Install vendor header files except proprietary GL headers mkdir -p ${SYSROOT_PREFIX}/usr/include - if [ "${OPENGLES}" = "bcm2835-driver" ]; then - cp -PRv ${PKG_FLOAT}/opt/vc/include/* ${SYSROOT_PREFIX}/usr/include - else - for f in $(cd ${PKG_FLOAT}/opt/vc/include; ls | grep -v "GL"); do - cp -PRv ${PKG_FLOAT}/opt/vc/include/$f ${SYSROOT_PREFIX}/usr/include - done - fi + for f in $(cd ${PKG_FLOAT}/opt/vc/include; ls | grep -v "GL"); do + cp -PRv ${PKG_FLOAT}/opt/vc/include/$f ${SYSROOT_PREFIX}/usr/include + done - # Install EGL, OpenGL ES, Open VG, etc. vendor libs & pkgconfigs + # Install vendor libs & pkgconfigs except proprietary GL libs mkdir -p ${SYSROOT_PREFIX}/usr/lib - if [ "${OPENGLES}" = "bcm2835-driver" ]; then - cp -PRv ${PKG_FLOAT}/opt/vc/lib/*.so ${SYSROOT_PREFIX}/usr/lib - ln -sf ${SYSROOT_PREFIX}/usr/lib/libbrcmEGL.so ${SYSROOT_PREFIX}/usr/lib/libEGL.so - ln -sf ${SYSROOT_PREFIX}/usr/lib/libbrcmGLESv2.so ${SYSROOT_PREFIX}/usr/lib/libGLESv2.so - cp -PRv ${PKG_FLOAT}/opt/vc/lib/*.a ${SYSROOT_PREFIX}/usr/lib - cp -PRv ${PKG_FLOAT}/opt/vc/lib/pkgconfig ${SYSROOT_PREFIX}/usr/lib - else - for f in $(cd ${PKG_FLOAT}/opt/vc/lib; ls *.so *.a | grep -Ev "^lib(EGL|GL)"); do - cp -PRv ${PKG_FLOAT}/opt/vc/lib/$f ${SYSROOT_PREFIX}/usr/lib + for f in $(cd ${PKG_FLOAT}/opt/vc/lib; ls *.so *.a | grep -Ev "^lib(EGL|GL)"); do + cp -PRv ${PKG_FLOAT}/opt/vc/lib/$f ${SYSROOT_PREFIX}/usr/lib + done + mkdir -p ${SYSROOT_PREFIX}/usr/lib/pkgconfig + for f in $(cd ${PKG_FLOAT}/opt/vc/lib/pkgconfig; ls | grep -v "gl"); do + cp -PRv ${PKG_FLOAT}/opt/vc/lib/pkgconfig/$f ${SYSROOT_PREFIX}/usr/lib/pkgconfig done - mkdir -p ${SYSROOT_PREFIX}/usr/lib/pkgconfig - for f in $(cd ${PKG_FLOAT}/opt/vc/lib/pkgconfig; ls | grep -v "gl"); do - cp -PRv ${PKG_FLOAT}/opt/vc/lib/pkgconfig/$f ${SYSROOT_PREFIX}/usr/lib/pkgconfig - done - fi # Update prefix in vendor pkgconfig files for PKG_CONFIGS in $(find "${SYSROOT_PREFIX}/usr/lib" -type f -name "*.pc" 2>/dev/null); do @@ -58,19 +46,11 @@ makeinstall_target() { ln -sf ${SYSROOT_PREFIX}/usr/lib ${SYSROOT_PREFIX}/opt/vc/lib ln -sf ${SYSROOT_PREFIX}/usr/include ${SYSROOT_PREFIX}/opt/vc/include - # Install EGL, OpenGL ES and other vendor libs + # Install vendor libs except proprietary GL mkdir -p ${INSTALL}/usr/lib - if [ "${OPENGLES}" = "bcm2835-driver" ]; then - cp -PRv ${PKG_FLOAT}/opt/vc/lib/*.so ${INSTALL}/usr/lib - ln -sf /usr/lib/libbrcmEGL.so ${INSTALL}/usr/lib/libEGL.so - ln -sf /usr/lib/libbrcmEGL.so ${INSTALL}/usr/lib/libEGL.so.1 - ln -sf /usr/lib/libbrcmGLESv2.so ${INSTALL}/usr/lib/libGLESv2.so - ln -sf /usr/lib/libbrcmGLESv2.so ${INSTALL}/usr/lib/libGLESv2.so.2 - else - for f in $(cd ${PKG_FLOAT}/opt/vc/lib; ls *.so | grep -Ev "^lib(EGL|GL)"); do - cp -PRv ${PKG_FLOAT}/opt/vc/lib/$f ${INSTALL}/usr/lib - done - fi + for f in $(cd ${PKG_FLOAT}/opt/vc/lib; ls *.so | grep -Ev "^lib(EGL|GL)"); do + cp -PRv ${PKG_FLOAT}/opt/vc/lib/$f ${INSTALL}/usr/lib + done # Install useful tools mkdir -p ${INSTALL}/usr/bin @@ -88,9 +68,3 @@ makeinstall_target() { ln -sf /usr/lib ${INSTALL}/opt/vc/lib } -post_install() { - # unbind Framebuffer console - if [ "${OPENGLES}" = "bcm2835-driver" ]; then - enable_service unbind-console.service - fi -} diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk index 72aa84ad44..67a20c61e8 100644 --- a/packages/mediacenter/kodi/package.mk +++ b/packages/mediacenter/kodi/package.mk @@ -26,10 +26,6 @@ case $KODI_VENDOR in ;; esac -if [ "$KODIPLAYER_DRIVER" = bcm2835-driver -a "$KODI_VENDOR" = "default" ]; then - PKG_PATCH_DIRS+=" rpi-hevc" -fi - configure_package() { # Single threaded LTO is very slow so rely on Kodi for parallel LTO support if [ "$LTO_SUPPORT" = "yes" ] && ! build_with_debug; then @@ -197,9 +193,7 @@ configure_package() { if [ ! "$KODIPLAYER_DRIVER" = default ]; then PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET $KODIPLAYER_DRIVER libinput libxkbcommon" - if [ "$KODIPLAYER_DRIVER" = bcm2835-driver ]; then - KODI_PLAYER="-DCORE_PLATFORM_NAME=rbpi" - elif [ "$OPENGLES_SUPPORT" = yes -a "$KODIPLAYER_DRIVER" = "$OPENGLES" ]; then + if [ "$OPENGLES_SUPPORT" = yes -a "$KODIPLAYER_DRIVER" = "$OPENGLES" ]; then KODI_PLAYER="-DCORE_PLATFORM_NAME=gbm -DGBM_RENDER_SYSTEM=gles" CFLAGS="$CFLAGS -DEGL_NO_X11" CXXFLAGS="$CXXFLAGS -DEGL_NO_X11" diff --git a/packages/mediacenter/kodi/patches/rpi-hevc/001-support-zero-copy.patch b/packages/mediacenter/kodi/patches/rpi-hevc/001-support-zero-copy.patch deleted file mode 100644 index 5d2edd31e3..0000000000 --- a/packages/mediacenter/kodi/patches/rpi-hevc/001-support-zero-copy.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 372718db53f3397dc0e972985202416fffe15ff4 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Thu, 7 May 2015 15:35:43 +0100 -Subject: [PATCH] rbp: Support zero copy interface with hevc acceleration - ---- - .../VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 9 +++++++++ - xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALFFmpeg.cpp | 5 +++-- - 2 files changed, 12 insertions(+), 2 deletions(-) - -diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp -index 0af254029e..e1263012aa 100644 ---- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp -+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp -@@ -366,6 +366,15 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options - if (m_decoderState == STATE_NONE) - { - m_decoderState = STATE_HW_SINGLE; -+#ifdef TARGET_RASPBERRY_PI -+ int num_threads = CServiceBroker::GetCPUInfo()->GetCPUCount() * 3 / 2; -+ num_threads = std::max(1, std::min(num_threads, 16)); -+ if (pCodec->id == AV_CODEC_ID_HEVC) -+ num_threads = 8; -+ m_pCodecContext->thread_count = num_threads; -+ m_pCodecContext->thread_safe_callbacks = 0; -+ CLog::Log(LOGDEBUG, "CDVDVideoCodecFFmpeg - open frame threaded with %d threads", num_threads); -+#endif - } - else - { -diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALFFmpeg.cpp -index 28eff23f16..779a839690 100644 ---- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALFFmpeg.cpp -+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALFFmpeg.cpp -@@ -298,8 +298,9 @@ CDVDVideoCodec::VCReturn CDecoder::Decode(AVCodecContext* avctx, AVFrame* frame) - - CGPUMEM *m_gmem = (CGPUMEM *)av_buffer_get_opaque(frame->buf[0]); - assert(m_gmem); -- // need to flush ARM cache so GPU can see it -- m_gmem->Flush(); -+ // need to flush ARM cache so GPU can see it (HEVC will have already done this) -+ if (avctx->codec_id != AV_CODEC_ID_HEVC) -+ m_gmem->Flush(); - m_renderBuffer = static_cast(m_gmem->m_opaque); - assert(m_renderBuffer && m_renderBuffer->mmal_buffer); - if (m_renderBuffer) --- -2.20.1 - diff --git a/packages/mediacenter/kodi/patches/rpi-hevc/002-add-hevc-support.patch b/packages/mediacenter/kodi/patches/rpi-hevc/002-add-hevc-support.patch deleted file mode 100644 index e50f825e22..0000000000 --- a/packages/mediacenter/kodi/patches/rpi-hevc/002-add-hevc-support.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 115a3328123c060b9e4d5f35c3774aa17c73276a Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Mon, 26 Jun 2017 20:17:09 +0100 -Subject: [PATCH] MMAL: Add hevc support by allowing 4 planes - ---- - xbmc/cores/VideoPlayer/Buffers/VideoBuffer.h | 2 +- - xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALFFmpeg.cpp | 3 +++ - .../VideoPlayer/VideoRenderers/HwDecRender/MMALRenderer.cpp | 3 +++ - 3 files changed, 7 insertions(+), 1 deletion(-) - -diff --git a/xbmc/cores/VideoPlayer/Buffers/VideoBuffer.h b/xbmc/cores/VideoPlayer/Buffers/VideoBuffer.h -index 1c1ba21c48..86a71bb558 100644 ---- a/xbmc/cores/VideoPlayer/Buffers/VideoBuffer.h -+++ b/xbmc/cores/VideoPlayer/Buffers/VideoBuffer.h -@@ -23,7 +23,7 @@ extern "C" { - - struct YuvImage - { -- static const int MAX_PLANES = 3; -+ static const int MAX_PLANES = 4; - - uint8_t* plane[MAX_PLANES]; - int planesize[MAX_PLANES]; -diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALFFmpeg.cpp -index 779a839690..a1a1ab1795 100644 ---- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALFFmpeg.cpp -+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALFFmpeg.cpp -@@ -77,6 +77,8 @@ void CMMALYUVBuffer::GetStrides(int(&strides)[YuvImage::MAX_PLANES]) - strides[0] = geo.getStrideY(); - strides[1] = geo.getStrideC(); - strides[2] = geo.getStrideC(); -+ if (geo.getStripes() > 1) -+ strides[3] = geo.getHeightY() + geo.getHeightC(); // abuse: strides[3] = stripe stride - } - - void CMMALYUVBuffer::SetDimensions(int width, int height, const int (&strides)[YuvImage::MAX_PLANES], const int (&planeOffsets)[YuvImage::MAX_PLANES]) -@@ -284,6 +286,7 @@ CDVDVideoCodec::VCReturn CDecoder::Decode(AVCodecContext* avctx, AVFrame* frame) - if (frame) - { - if ((frame->format != AV_PIX_FMT_YUV420P && frame->format != AV_PIX_FMT_YUV420P10 && frame->format != AV_PIX_FMT_YUV420P12 && frame->format != AV_PIX_FMT_YUV420P14 && frame->format != AV_PIX_FMT_YUV420P16 && -+ frame->format != AV_PIX_FMT_SAND128 && frame->format != AV_PIX_FMT_SAND64_10 && frame->format != AV_PIX_FMT_SAND64_16 && - frame->format != AV_PIX_FMT_BGR0 && frame->format != AV_PIX_FMT_RGB565LE) || - frame->buf[1] != nullptr || frame->buf[0] == nullptr) - { -diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/MMALRenderer.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/MMALRenderer.cpp -index 9b23ddb7fa..e55babf4d3 100644 ---- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/MMALRenderer.cpp -+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/MMALRenderer.cpp -@@ -192,6 +192,9 @@ std::vector CMMALPool::mmal_encoding_table = - { AV_PIX_FMT_YUV420P12,MMAL_ENCODING_I420_16, }, - { AV_PIX_FMT_YUV420P14,MMAL_ENCODING_I420_16, }, - { AV_PIX_FMT_YUV420P16,MMAL_ENCODING_I420_16, }, -+ { AV_PIX_FMT_SAND128, MMAL_ENCODING_YUVUV128 }, -+ { AV_PIX_FMT_SAND64_10,MMAL_ENCODING_YUVUV64_16 }, -+ { AV_PIX_FMT_SAND64_16,MMAL_ENCODING_YUVUV64_16 }, - { AV_PIX_FMT_RGBA, MMAL_ENCODING_RGBA, }, - { AV_PIX_FMT_BGRA, MMAL_ENCODING_BGRA }, - { AV_PIX_FMT_RGB0, MMAL_ENCODING_RGBA }, --- -2.20.1 - diff --git a/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/config.txt b/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/config.txt index 2a326c2121..f6d03777a6 100644 --- a/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/config.txt +++ b/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/config.txt @@ -9,13 +9,8 @@ # Memory (System/GPU configuration ) ################################################################################ -# Default GPU memory split (do not change if you do not know what you are doing) - gpu_mem=128 - -# Configure GPU memory based on SDRAM size - overrides above setting - gpu_mem_256=112 - gpu_mem_512=160 - gpu_mem_1024=256 +# Default GPU memory split +gpu_mem=76 ################################################################################ # For overclocking and various other settings, see: @@ -24,15 +19,6 @@ # Set 'force_turbo=1' to disable dynamic overclocking and enable overclocking always. force_turbo=0 -# Make display smaller to stop text spilling off the screen -# -# Note that the overscan settings only affect the splash screen and not Kodi. -# -# If you experience overscan/underscan issues the best solution is to adjust -# your TV settings ("full pixel", "1-1 pixel" etc.). Alternatively, there is a -# calibration menu in the Kodi GUI. -# disable_overscan=1 - # Force HDMI even if unplugged or powered off # hdmi_force_hotplug=1 @@ -41,14 +27,6 @@ force_turbo=0 # rebooting. hdmi_ignore_cec_init=1 -################################################################################ -# License keys to enable GPU hardware decoding for various codecs -# to obtain keys visit the shop at http://www.raspberrypi.com -################################################################################ - -# decode_MPG2=0x00000000 -# decode_WVC1=0x00000000 - ################################################################################ # End of default configuration ################################################################################ diff --git a/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/distroconfig.txt b/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/distroconfig.txt index 5ff97b5bef..b4fd17b199 100644 --- a/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/distroconfig.txt +++ b/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/distroconfig.txt @@ -2,3 +2,5 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) # WARNING: DO NOT EDIT THIS FILE - IT WILL BE OVERWRITTEN WHEN UPGRADING! +dtoverlay=vc4-kms-v3d +disable_overscan=1 diff --git a/projects/RPi/devices/RPi4/config/config.txt b/projects/RPi/devices/RPi4/config/config.txt deleted file mode 100644 index f6d03777a6..0000000000 --- a/projects/RPi/devices/RPi4/config/config.txt +++ /dev/null @@ -1,38 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) -# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) -################################################################################ -# Bootloader configuration - config.txt -################################################################################ - -################################################################################ -# Memory (System/GPU configuration ) -################################################################################ - -# Default GPU memory split -gpu_mem=76 - -################################################################################ -# For overclocking and various other settings, see: -# https://www.raspberrypi.org/documentation/configuration/config-txt.md -################################################################################ -# Set 'force_turbo=1' to disable dynamic overclocking and enable overclocking always. -force_turbo=0 - -# Force HDMI even if unplugged or powered off -# hdmi_force_hotplug=1 - -# Doesn't sent initial active source message. -# Avoids bringing CEC (enabled TV) out of standby and channel switch when -# rebooting. -hdmi_ignore_cec_init=1 - -################################################################################ -# End of default configuration -################################################################################ - -################################################################################ -# Include distribution specific config file if it exists. -################################################################################ -[all] -include distroconfig.txt diff --git a/projects/RPi/devices/RPi4/options b/projects/RPi/devices/RPi4/options index f64c39afc8..598d57c6bc 100644 --- a/projects/RPi/devices/RPi4/options +++ b/projects/RPi/devices/RPi4/options @@ -10,8 +10,3 @@ # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) FIRMWARE="${FIRMWARE} rpi-eeprom" - - OPENGLES="mesa" - GRAPHIC_DRIVERS="vc4" - KODIPLAYER_DRIVER="mesa" - KODI_VENDOR="default" diff --git a/projects/RPi/devices/RPi4/kodi/appliance.xml b/projects/RPi/kodi/appliance.xml similarity index 100% rename from projects/RPi/devices/RPi4/kodi/appliance.xml rename to projects/RPi/kodi/appliance.xml diff --git a/projects/RPi/options b/projects/RPi/options index 338db45057..53335e6ee9 100644 --- a/projects/RPi/options +++ b/projects/RPi/options @@ -74,7 +74,7 @@ OPENGL="no" # OpenGL-ES implementation to use (no / bcm2835-driver / mesa) - OPENGLES="bcm2835-driver" + OPENGLES="mesa" # Displayserver to use (x11 / no) DISPLAYSERVER="no" @@ -85,13 +85,13 @@ # Xorg Graphic drivers to use (all / vc4 / none) # Space separated list is supported, # e.g. GRAPHIC_DRIVERS="vc4" - GRAPHIC_DRIVERS="" + GRAPHIC_DRIVERS="vc4" # Use a vendor specific KODI repo KODI_VENDOR="default" # KODI Player implementation to use (default / bcm2835-driver / mesa) - KODIPLAYER_DRIVER="bcm2835-driver" + KODIPLAYER_DRIVER="mesa" # use the kernel CEC framework for libcec (yes / no) CEC_FRAMEWORK_SUPPORT="yes"