Merge pull request #26126 from stephan49/fix-pipewire-unlock-error
[xbmc.git] / xbmc / cores / RetroPlayer / buffers / RenderBufferPoolDMA.cpp
blobe5c4a68b6d5092128aa7c0bf37b7045cda87d8eb
1 /*
2 * Copyright (C) 2017-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #include "RenderBufferPoolDMA.h"
11 #include "RenderBufferDMA.h"
12 #include "cores/RetroPlayer/rendering/RenderVideoSettings.h"
13 #include "cores/RetroPlayer/rendering/VideoRenderers/RPRendererDMAUtils.h"
15 #include <drm_fourcc.h>
17 using namespace KODI;
18 using namespace RETRO;
20 CRenderBufferPoolDMA::CRenderBufferPoolDMA(CRenderContext& context) : m_context(context)
24 bool CRenderBufferPoolDMA::IsCompatible(const CRenderVideoSettings& renderSettings) const
26 if (!CRPRendererDMAUtils::SupportsScalingMethod(renderSettings.GetScalingMethod()))
27 return false;
29 return true;
32 IRenderBuffer* CRenderBufferPoolDMA::CreateRenderBuffer(void* header /* = nullptr */)
34 return new CRenderBufferDMA(m_context, m_fourcc);
37 bool CRenderBufferPoolDMA::ConfigureInternal()
39 switch (m_format)
41 case AV_PIX_FMT_0RGB32:
43 m_fourcc = DRM_FORMAT_ARGB8888;
44 return true;
46 case AV_PIX_FMT_RGB555:
48 m_fourcc = DRM_FORMAT_ARGB1555;
49 return true;
51 case AV_PIX_FMT_RGB565:
53 m_fourcc = DRM_FORMAT_RGB565;
54 return true;
56 default:
57 break; // we shouldn't even get this far if we are given an unsupported pixel format
60 return false;