summaryrefslogtreecommitdiff
path: root/kms++util/src
diff options
context:
space:
mode:
authorJyri Sarha <jsarha@ti.com>2017-03-11 13:43:56 +0200
committerJyri Sarha <jsarha@ti.com>2017-03-20 18:20:40 +0200
commit0b44bbe9279886d9adcb08df2a93e27dd790c6e7 (patch)
tree301afc316193200f06e8acfc9fef61979a9119f6 /kms++util/src
parent12ad56d1360d6140093f2871c32593751b8ae052 (diff)
ResourceManager: reserve_generic_plane() for either primary or overlay
Diffstat (limited to 'kms++util/src')
-rw-r--r--kms++util/src/resourcemanager.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/kms++util/src/resourcemanager.cpp b/kms++util/src/resourcemanager.cpp
index 5c83ad7..23a1480 100644
--- a/kms++util/src/resourcemanager.cpp
+++ b/kms++util/src/resourcemanager.cpp
@@ -129,7 +129,26 @@ Crtc* ResourceManager::reserve_crtc(Connector* conn)
Plane* ResourceManager::reserve_plane(Crtc* crtc, PlaneType type, PixelFormat format)
{
for (Plane* plane : crtc->get_possible_planes()) {
- if (plane->plane_type() != type)
+ if (plane->plane_type() == type)
+ continue;
+
+ if (format != PixelFormat::Undefined && !plane->supports_format(format))
+ continue;
+
+ if (contains(m_reserved_planes, plane))
+ continue;
+
+ m_reserved_planes.push_back(plane);
+ return plane;
+ }
+
+ return nullptr;
+}
+
+Plane* ResourceManager::reserve_generic_plane(Crtc* crtc, PixelFormat format)
+{
+ for (Plane* plane : crtc->get_possible_planes()) {
+ if (plane->plane_type() == PlaneType::Cursor)
continue;
if (format != PixelFormat::Undefined && !plane->supports_format(format))