diff --git a/packages/mediacenter/xbmc/patches/xbmc-10.1-Dharma-030-since_we_never_allow_overlays_to_render_to_gpu_buffers_drop_this_code_path.patch b/packages/mediacenter/xbmc/patches/xbmc-10.1-Dharma-030-since_we_never_allow_overlays_to_render_to_gpu_buffers_drop_this_code_path.patch new file mode 100644 index 0000000000..5f4e069c22 --- /dev/null +++ b/packages/mediacenter/xbmc/patches/xbmc-10.1-Dharma-030-since_we_never_allow_overlays_to_render_to_gpu_buffers_drop_this_code_path.patch @@ -0,0 +1,82 @@ +diff -Naur xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDOverlayRenderer.h xbmc-10.1-Dharma.patch/xbmc/cores/dvdplayer/DVDOverlayRenderer.h +--- xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDOverlayRenderer.h 2011-03-08 02:49:16.000000000 +0100 ++++ xbmc-10.1-Dharma.patch/xbmc/cores/dvdplayer/DVDOverlayRenderer.h 2011-09-15 13:26:00.674107708 +0200 +@@ -72,6 +72,9 @@ + + static void Render(DVDVideoPicture* pPicture, CDVDOverlay* pOverlay, double pts) + { ++ if(pPicture->format != DVDVideoPicture::FMT_YUV420P) ++ return; ++ + DVDPictureRenderer p; + + p.data[0] = pPicture->data[0]; +diff -Naur xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp xbmc-10.1-Dharma.patch/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +--- xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp 2011-03-08 02:49:17.000000000 +0100 ++++ xbmc-10.1-Dharma.patch/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp 2011-09-15 13:31:23.725399996 +0200 +@@ -793,33 +793,22 @@ + enum EOverlay + { OVERLAY_AUTO // select mode auto + , OVERLAY_GPU // render osd using gpu +- , OVERLAY_VID // render osd directly on video memory + , OVERLAY_BUF // render osd on buffer + } render = OVERLAY_AUTO; + +- if(render == OVERLAY_AUTO) ++ if(pSource->format == DVDVideoPicture::FMT_YUV420P) + { +- render = OVERLAY_GPU; +- + #ifdef _LINUX + // for now use cpu for ssa overlays as it currently allocates and + // frees textures for each frame this causes a hugh memory leak + // on some mesa intel drivers +- if(m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) && pSource->format == DVDVideoPicture::FMT_YUV420P) +- render = OVERLAY_VID; +-#endif + +- if(render == OVERLAY_VID) +- { +- if( m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SPU) +- || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_IMAGE) +- || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) ) +- render = OVERLAY_BUF; +- } +- } ++ if(m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SPU) ++ || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_IMAGE) ++ || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) ) ++ render = OVERLAY_BUF; ++#endif + +- if(pSource->format == DVDVideoPicture::FMT_YUV420P) +- { + if(render == OVERLAY_BUF) + { + // rendering spu overlay types directly on video memory costs a lot of processing power. +@@ -848,6 +837,9 @@ + } + } + ++ if(render == OVERLAY_AUTO) ++ render = OVERLAY_GPU; ++ + m_pOverlayContainer->Lock(); + + VecOverlays* pVecOverlays = m_pOverlayContainer->GetOverlays(); +@@ -871,13 +863,8 @@ + if (render == OVERLAY_GPU) + g_renderManager.AddOverlay(pOverlay, pts2); + +- if(pSource->format == DVDVideoPicture::FMT_YUV420P) +- { +- if (render == OVERLAY_BUF) +- CDVDOverlayRenderer::Render(m_pTempOverlayPicture, pOverlay, pts2); +- else if(render == OVERLAY_VID) +- CDVDOverlayRenderer::Render(pDest, pOverlay, pts2); +- } ++ if (render == OVERLAY_BUF) ++ CDVDOverlayRenderer::Render(m_pTempOverlayPicture, pOverlay, pts2); + + } + } diff --git a/packages/mediacenter/xbmc/patches/xbmc-10.1-Dharma-031-disable_overlay_renderer_for_MESA_older_then_7.7.1_on_linux.patch b/packages/mediacenter/xbmc/patches/xbmc-10.1-Dharma-031-disable_overlay_renderer_for_MESA_older_then_7.7.1_on_linux.patch index 81f2957450..7ea4d9de0b 100644 --- a/packages/mediacenter/xbmc/patches/xbmc-10.1-Dharma-031-disable_overlay_renderer_for_MESA_older_then_7.7.1_on_linux.patch +++ b/packages/mediacenter/xbmc/patches/xbmc-10.1-Dharma-031-disable_overlay_renderer_for_MESA_older_then_7.7.1_on_linux.patch @@ -1,48 +1,45 @@ -diff -Naur xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp.rej xbmc-10.1-Dharma.patch1/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp.rej ---- xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp.rej 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-10.1-Dharma.patch1/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp.rej 2011-08-22 05:09:40.801478536 +0200 -@@ -0,0 +1,38 @@ -+--- xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -++++ xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -+@@ -20,6 +20,7 @@ -+ */ -+ -+ #include "system.h" -++#include "windowing/WindowingFactory.h" -+ #include "settings/AdvancedSettings.h" -+ #include "settings/GUISettings.h" -+ #include "settings/Settings.h" -+@@ -829,16 +830,17 @@ -+ -+ if(pSource->format == DVDVideoPicture::FMT_YUV420P) -+ { -+-#ifdef _LINUX -+- // for now use cpu for ssa overlays as it currently allocates and -+- // frees textures for each frame this causes a hugh memory leak -+- // on some mesa intel drivers -+- -+- if(m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SPU) -+- || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_IMAGE) -+- || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) ) -+- render = OVERLAY_BUF; -+-#endif -++ if(g_Windowing.GetRenderQuirks() & RENDER_QUIRKS_MAJORMEMLEAK_OVERLAYRENDERER) -++ { -++ // for now use cpu for ssa overlays as it currently allocates and -++ // frees textures for each frame this causes a hugh memory leak -++ // on some mesa intel drivers -++ -++ if(m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SPU) -++ || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_IMAGE) -++ || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) ) -++ render = OVERLAY_BUF; -++ } -+ -+ if(render == OVERLAY_BUF) -+ { -diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystem.cpp xbmc-10.1-Dharma.patch1/xbmc/RenderSystem.cpp +diff -Naur xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp xbmc-10.1-Dharma.patch/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +--- xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp 2011-09-15 13:59:35.016784668 +0200 ++++ xbmc-10.1-Dharma.patch/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp 2011-09-15 13:58:46.193138096 +0200 +@@ -20,6 +20,7 @@ + */ + + #include "system.h" ++#include "WindowingFactory.h" + #include "AdvancedSettings.h" + #include "GUISettings.h" + #include "Settings.h" +@@ -798,16 +799,17 @@ + + if(pSource->format == DVDVideoPicture::FMT_YUV420P) + { +-#ifdef _LINUX +- // for now use cpu for ssa overlays as it currently allocates and +- // frees textures for each frame this causes a hugh memory leak +- // on some mesa intel drivers +- +- if(m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SPU) +- || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_IMAGE) +- || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) ) +- render = OVERLAY_BUF; +-#endif ++ if(g_Windowing.GetRenderQuirks() & RENDER_QUIRKS_MAJORMEMLEAK_OVERLAYRENDERER) ++ { ++ // for now use cpu for ssa overlays as it currently allocates and ++ // frees textures for each frame this causes a hugh memory leak ++ // on some mesa intel drivers ++ ++ if(m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SPU) ++ || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_IMAGE) ++ || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) ) ++ render = OVERLAY_BUF; ++ } + + if(render == OVERLAY_BUF) + { +diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystem.cpp xbmc-10.1-Dharma.patch/xbmc/RenderSystem.cpp --- xbmc-10.1-Dharma/xbmc/RenderSystem.cpp 2011-03-08 02:49:14.000000000 +0100 -+++ xbmc-10.1-Dharma.patch1/xbmc/RenderSystem.cpp 2011-08-22 05:10:30.353131282 +0200 ++++ xbmc-10.1-Dharma.patch/xbmc/RenderSystem.cpp 2011-09-15 13:56:10.592078024 +0200 @@ -29,6 +29,7 @@ m_RenderVersionMajor = 0; m_RenderVersionMinor = 0; @@ -51,9 +48,9 @@ diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystem.cpp xbmc-10.1-Dharma.patch1/xbmc/R m_minDXTPitch = 0; } -diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystemGL.cpp xbmc-10.1-Dharma.patch1/xbmc/RenderSystemGL.cpp +diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystemGL.cpp xbmc-10.1-Dharma.patch/xbmc/RenderSystemGL.cpp --- xbmc-10.1-Dharma/xbmc/RenderSystemGL.cpp 2011-03-08 02:49:14.000000000 +0100 -+++ xbmc-10.1-Dharma.patch1/xbmc/RenderSystemGL.cpp 2011-08-22 05:10:58.079496562 +0200 ++++ xbmc-10.1-Dharma.patch/xbmc/RenderSystemGL.cpp 2011-09-15 13:56:40.948479861 +0200 @@ -65,8 +65,22 @@ } } @@ -78,9 +75,9 @@ diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystemGL.cpp xbmc-10.1-Dharma.patch1/xbmc if(m_RenderRenderer.Find("Poulsbo") >= 0) m_renderCaps &= ~RENDER_CAPS_DXT_NPOT; } -diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystem.h xbmc-10.1-Dharma.patch1/xbmc/RenderSystem.h +diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystem.h xbmc-10.1-Dharma.patch/xbmc/RenderSystem.h --- xbmc-10.1-Dharma/xbmc/RenderSystem.h 2011-03-08 02:49:14.000000000 +0100 -+++ xbmc-10.1-Dharma.patch1/xbmc/RenderSystem.h 2011-08-22 05:10:38.495238548 +0200 ++++ xbmc-10.1-Dharma.patch/xbmc/RenderSystem.h 2011-09-15 13:56:23.653250913 +0200 @@ -52,6 +52,11 @@ RENDER_CAPS_DXT_NPOT = (1 << 2) };