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.
25 class CDRMAtomic
: public CDRMUtils
28 CDRMAtomic() = default;
29 ~CDRMAtomic() override
= default;
30 void FlipPage(struct gbm_bo
* bo
, bool rendered
, bool videoLayer
, bool async
) override
;
31 bool SetVideoMode(const RESOLUTION_INFO
& res
, struct gbm_bo
* bo
) override
;
32 bool SetActive(bool active
) override
;
33 bool InitDrm() override
;
34 void DestroyDrm() override
;
35 bool AddProperty(CDRMObject
* object
, const char* name
, uint64_t value
);
37 bool DisplayHardwareScalingEnabled();
40 void DrmAtomicCommit(int fb_id
, int flags
, bool rendered
, bool videoLayer
);
42 bool SetScalingFilter(CDRMObject
* object
, const char* name
, const char* type
);
47 class CDRMAtomicRequest
51 ~CDRMAtomicRequest() = default;
52 CDRMAtomicRequest(const CDRMAtomicRequest
& right
) = delete;
54 drmModeAtomicReqPtr
Get() const { return m_atomicRequest
.get(); }
56 bool AddProperty(CDRMObject
* object
, const char* name
, uint64_t value
);
57 void LogAtomicRequest();
59 static void LogAtomicDiff(CDRMAtomicRequest
* current
, CDRMAtomicRequest
* old
);
62 static void LogAtomicRequest(
63 uint8_t logLevel
, std::map
<CDRMObject
*, std::map
<uint32_t, uint64_t>>& atomicRequestItems
);
65 std::map
<CDRMObject
*, std::map
<uint32_t, uint64_t>> m_atomicRequestItems
;
67 struct DrmModeAtomicReqDeleter
69 void operator()(drmModeAtomicReqPtr p
) const;
72 std::unique_ptr
<drmModeAtomicReq
, DrmModeAtomicReqDeleter
> m_atomicRequest
;
75 CDRMAtomicRequest
* m_req
= nullptr;
76 std::deque
<std::unique_ptr
<CDRMAtomicRequest
>> m_atomicRequestQueue
;