2 * Copyright (C) 2005-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.
9 #include "GBMBufferObject.h"
11 #include "BufferObjectFactory.h"
12 #include "ServiceBroker.h"
13 #include "windowing/gbm/WinSystemGbmEGLContext.h"
18 using namespace KODI::WINDOWING::GBM
;
20 std::unique_ptr
<CBufferObject
> CGBMBufferObject::Create()
22 return std::make_unique
<CGBMBufferObject
>();
25 void CGBMBufferObject::Register()
27 CBufferObjectFactory::RegisterBufferObject(CGBMBufferObject::Create
);
30 CGBMBufferObject::CGBMBufferObject()
33 static_cast<CWinSystemGbmEGLContext
*>(CServiceBroker::GetWinSystem())->GetGBMDevice()->Get();
36 CGBMBufferObject::~CGBMBufferObject()
39 DestroyBufferObject();
42 bool CGBMBufferObject::CreateBufferObject(uint32_t format
, uint32_t width
, uint32_t height
)
50 m_bo
= gbm_bo_create(m_device
, m_width
, m_height
, format
, GBM_BO_USE_LINEAR
);
55 m_fd
= gbm_bo_get_fd(m_bo
);
60 void CGBMBufferObject::DestroyBufferObject()
71 uint8_t* CGBMBufferObject::GetMemory()
75 m_map
= static_cast<uint8_t*>(gbm_bo_map(m_bo
, 0, 0, m_width
, m_height
, GBM_BO_TRANSFER_WRITE
, &m_stride
, &m_map_data
));
83 void CGBMBufferObject::ReleaseMemory()
87 gbm_bo_unmap(m_bo
, m_map_data
);
93 uint64_t CGBMBufferObject::GetModifier()
95 #if defined(HAS_GBM_MODIFIERS)
96 return gbm_bo_get_modifier(m_bo
);