diff --git a/projects/Rockchip/patches/kodi/0001-allow-sw-decoding-on-mali-4xx-gpus.patch b/projects/Rockchip/patches/kodi/0001-allow-sw-decoding-on-mali-4xx-gpus.patch new file mode 100644 index 0000000000..2bb6b0a8a3 --- /dev/null +++ b/projects/Rockchip/patches/kodi/0001-allow-sw-decoding-on-mali-4xx-gpus.patch @@ -0,0 +1,44 @@ +From 7479f183788ad47dc5ab74666808c29b7c272531 Mon Sep 17 00:00:00 2001 +From: Alex Bee +Date: Thu, 14 Jan 2021 23:51:20 +0100 +Subject: [PATCH] HACKOFF: DRMPRIMEGLES: avoid for lima due to broken + YU12->XR24 conversion + +Signed-off-by: Alex Bee +--- + xbmc/cores/VideoPlayer/VideoRenderers/BaseRenderer.cpp | 2 +- + .../VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp | 5 +++++ + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/BaseRenderer.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/BaseRenderer.cpp +index 8c78f1beac..241a307351 100644 +--- a/xbmc/cores/VideoPlayer/VideoRenderers/BaseRenderer.cpp ++++ b/xbmc/cores/VideoPlayer/VideoRenderers/BaseRenderer.cpp +@@ -329,7 +329,7 @@ EShaderFormat CBaseRenderer::GetShaderFormat() + { + EShaderFormat ret = SHADER_NONE; + +- if (m_format == AV_PIX_FMT_YUV420P) ++ if (m_format == AV_PIX_FMT_YUV420P || m_format == AV_PIX_FMT_DRM_PRIME) + ret = SHADER_YV12; + else if (m_format == AV_PIX_FMT_YUV420P9) + ret = SHADER_YV12_9; +diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp +index c1d69bf381..d33b58a321 100644 +--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp ++++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp +@@ -59,6 +59,11 @@ CBaseRenderer* CRendererDRMPRIMEGLES::Create(CVideoBuffer* buffer) + if (!winSystemEGL) + return nullptr; + ++ if (CServiceBroker::GetRenderSystem()->GetRenderVendor() == "lima") ++ { ++ CLog::LogF(LOGDEBUG, "Not using DRMPRIMEGLES due to broken mesa lima driver."); ++ return nullptr; ++ } + CEGLImage image{winSystemEGL->GetEGLDisplay()}; + if (!image.SupportsFormatAndModifier(format, modifier)) + return nullptr; +-- +2.25.1 +