mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-30 06:06:43 +00:00
rockchip: kodi: add workaround for rendering sw-decoded content on mali4x0 GPUs
Current upstream mesa has a shortcoming for YUV12 to XR24 conversion so that DRMPRIMEGLES conversion cannot be used (for details see https://gitlab.freedesktop.org/mesa/mesa/-/issues/4074) This adds a patch to kodi to not use this on lima GPUs and allow proper fallback to LinuxRendererGLES where shaders are used and the conversion is working.
This commit is contained in:
parent
aa7c55f606
commit
6528f66833
@ -0,0 +1,44 @@
|
||||
From 7479f183788ad47dc5ab74666808c29b7c272531 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Bee <knaerzche@gmail.com>
|
||||
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 <knaerzche@gmail.com>
|
||||
---
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user