summaryrefslogtreecommitdiff
path: root/libkms++
diff options
context:
space:
mode:
Diffstat (limited to 'libkms++')
-rw-r--r--libkms++/CMakeLists.txt8
-rw-r--r--libkms++/atomicreq.cpp94
-rw-r--r--libkms++/atomicreq.h36
-rw-r--r--libkms++/blob.cpp51
-rw-r--r--libkms++/blob.h22
-rw-r--r--libkms++/card.cpp239
-rw-r--r--libkms++/card.h71
-rw-r--r--libkms++/connector.cpp224
-rw-r--r--libkms++/connector.h51
-rw-r--r--libkms++/crtc.cpp140
-rw-r--r--libkms++/crtc.h50
-rw-r--r--libkms++/decls.h19
-rw-r--r--libkms++/drmobject.cpp34
-rw-r--r--libkms++/drmobject.h40
-rw-r--r--libkms++/drmpropobject.cpp86
-rw-r--r--libkms++/drmpropobject.h35
-rw-r--r--libkms++/dumbframebuffer.cpp137
-rw-r--r--libkms++/dumbframebuffer.h46
-rw-r--r--libkms++/encoder.cpp77
-rw-r--r--libkms++/encoder.h25
-rw-r--r--libkms++/extframebuffer.cpp68
-rw-r--r--libkms++/extframebuffer.h21
-rw-r--r--libkms++/framebuffer.cpp42
-rw-r--r--libkms++/framebuffer.h40
-rw-r--r--libkms++/helpers.cpp72
-rw-r--r--libkms++/helpers.h12
-rw-r--r--libkms++/kms++.h15
-rw-r--r--libkms++/modedb.cpp42
-rw-r--r--libkms++/modedb.h16
-rw-r--r--libkms++/modedb_cea.cpp401
-rw-r--r--libkms++/modedb_dmt.cpp410
-rw-r--r--libkms++/pagefliphandler.h11
-rw-r--r--libkms++/pipeline.h11
-rw-r--r--libkms++/pixelformats.cpp32
-rw-r--r--libkms++/pixelformats.h63
-rw-r--r--libkms++/plane.cpp105
-rw-r--r--libkms++/plane.h41
-rw-r--r--libkms++/property.cpp87
-rw-r--r--libkms++/property.h44
-rw-r--r--libkms++/videomode.cpp19
-rw-r--r--libkms++/videomode.h36
41 files changed, 0 insertions, 3073 deletions
diff --git a/libkms++/CMakeLists.txt b/libkms++/CMakeLists.txt
deleted file mode 100644
index 4409b8b..0000000
--- a/libkms++/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-include_directories(${LIBDRM_INCLUDE_DIRS})
-link_directories(${LIBDRM_LIBRARY_DIRS})
-
-file(GLOB SRCS "*.cpp" "*.h")
-add_library(kms++ ${SRCS})
-
-target_link_libraries(kms++ ${LIBDRM_LIBRARIES})
-target_include_directories(kms++ PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
diff --git a/libkms++/atomicreq.cpp b/libkms++/atomicreq.cpp
deleted file mode 100644
index 3aa2ff6..0000000
--- a/libkms++/atomicreq.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-#include <cassert>
-#include <stdexcept>
-
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "atomicreq.h"
-#include "property.h"
-#include "card.h"
-
-#ifndef DRM_CLIENT_CAP_ATOMIC
-
-#define DRM_MODE_ATOMIC_TEST_ONLY 0
-#define DRM_MODE_ATOMIC_NONBLOCK 0
-
-struct _drmModeAtomicReq;
-typedef struct _drmModeAtomicReq* drmModeAtomicReqPtr;
-
-static inline drmModeAtomicReqPtr drmModeAtomicAlloc() { return 0; }
-static inline void drmModeAtomicFree(drmModeAtomicReqPtr) { }
-static inline int drmModeAtomicAddProperty(drmModeAtomicReqPtr, uint32_t, uint32_t, uint64_t) { return 0; }
-static inline int drmModeAtomicCommit(int, drmModeAtomicReqPtr, int, void*) { return 0; }
-
-#endif // DRM_CLIENT_CAP_ATOMIC
-
-using namespace std;
-
-namespace kms
-{
-AtomicReq::AtomicReq(Card& card)
- : m_card(card)
-{
- assert(card.has_atomic());
- m_req = drmModeAtomicAlloc();
-}
-
-AtomicReq::~AtomicReq()
-{
- drmModeAtomicFree(m_req);
-}
-
-void AtomicReq::add(uint32_t ob_id, uint32_t prop_id, uint64_t value)
-{
- int r = drmModeAtomicAddProperty(m_req, ob_id, prop_id, value);
- if (r <= 0)
- throw std::invalid_argument("foo");
-}
-
-void AtomicReq::add(DrmObject *ob, Property *prop, uint64_t value)
-{
- add(ob->id(), prop->id(), value);
-}
-
-void AtomicReq::add(DrmObject* ob, const string& prop, uint64_t value)
-{
- add(ob, m_card.get_prop(prop), value);
-}
-
-void AtomicReq::add(DrmObject* ob, const map<string, uint64_t>& values)
-{
- for(const auto& kvp : values)
- add(ob, kvp.first, kvp.second);
-}
-
-int AtomicReq::test(bool allow_modeset)
-{
- uint32_t flags = DRM_MODE_ATOMIC_TEST_ONLY;
-
- if (allow_modeset)
- flags |= DRM_MODE_ATOMIC_ALLOW_MODESET;
-
- return drmModeAtomicCommit(m_card.fd(), m_req, flags, 0);
-}
-
-int AtomicReq::commit(void* data, bool allow_modeset)
-{
- uint32_t flags = DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_ATOMIC_NONBLOCK;
-
- if (allow_modeset)
- flags |= DRM_MODE_ATOMIC_ALLOW_MODESET;
-
- return drmModeAtomicCommit(m_card.fd(), m_req, flags, data);
-}
-
-int AtomicReq::commit_sync(bool allow_modeset)
-{
- uint32_t flags = 0;
-
- if (allow_modeset)
- flags |= DRM_MODE_ATOMIC_ALLOW_MODESET;
-
- return drmModeAtomicCommit(m_card.fd(), m_req, flags, 0);
-}
-}
diff --git a/libkms++/atomicreq.h b/libkms++/atomicreq.h
deleted file mode 100644
index 6ebdbf8..0000000
--- a/libkms++/atomicreq.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include <string>
-#include <map>
-
-struct _drmModeAtomicReq;
-
-#include "decls.h"
-
-namespace kms
-{
-class AtomicReq
-{
-public:
- AtomicReq(Card& card);
- ~AtomicReq();
-
- AtomicReq(const AtomicReq& other) = delete;
- AtomicReq& operator=(const AtomicReq& other) = delete;
-
- void add(uint32_t ob_id, uint32_t prop_id, uint64_t value);
- void add(DrmObject *ob, Property *prop, uint64_t value);
- void add(DrmObject *ob, const std::string& prop, uint64_t value);
- void add(DrmObject *ob, const std::map<std::string, uint64_t>& values);
-
- int test(bool allow_modeset = false);
- int commit(void* data, bool allow_modeset = false);
- int commit_sync(bool allow_modeset = false);
-
-private:
- Card& m_card;
- _drmModeAtomicReq* m_req;
-};
-
-}
diff --git a/libkms++/blob.cpp b/libkms++/blob.cpp
deleted file mode 100644
index 10a71c6..0000000
--- a/libkms++/blob.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "kms++.h"
-
-using namespace std;
-
-namespace kms
-{
-
-Blob::Blob(Card& card, uint32_t blob_id)
- : DrmObject(card, blob_id, DRM_MODE_OBJECT_BLOB), m_created(false)
-{
- // XXX should we verify that the blob_id is a blob object?
-}
-
-Blob::Blob(Card& card, void* data, size_t len)
- : DrmObject(card, DRM_MODE_OBJECT_BLOB), m_created(true)
-{
- uint32_t id;
-
- int r = drmModeCreatePropertyBlob(card.fd(), data, len, &id);
- if (r)
- throw invalid_argument("FAILED TO CREATE PROP\n");
-
- set_id(id);
-}
-
-Blob::~Blob()
-{
- if (m_created)
- drmModeDestroyPropertyBlob(card().fd(), id());
-}
-
-vector<uint8_t> Blob::data()
-{
- drmModePropertyBlobPtr blob = drmModeGetPropertyBlob(card().fd(), id());
-
- if (!blob)
- throw invalid_argument("Blob data not available");
-
- uint8_t* data = (uint8_t*)blob->data;
-
- auto v = vector<uint8_t>(data, data + blob->length);
-
- drmModeFreePropertyBlob(blob);
-
- return v;
-}
-
-}
diff --git a/libkms++/blob.h b/libkms++/blob.h
deleted file mode 100644
index fd872f1..0000000
--- a/libkms++/blob.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#pragma once
-
-#include "drmobject.h"
-#include <vector>
-
-namespace kms
-{
-
-class Blob : public DrmObject
-{
-public:
- Blob(Card& card, uint32_t blob_id);
- Blob(Card& card, void* data, size_t len);
- virtual ~Blob();
-
- std::vector<uint8_t> data();
-
-private:
- bool m_created;
-};
-
-}
diff --git a/libkms++/card.cpp b/libkms++/card.cpp
deleted file mode 100644
index 504aa61..0000000
--- a/libkms++/card.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-#include <stdio.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <utility>
-#include <stdexcept>
-#include <string.h>
-#include <algorithm>
-
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "kms++.h"
-
-using namespace std;
-
-namespace kms
-{
-
-Card::Card()
- : Card("/dev/dri/card0")
-{
-}
-
-
-Card::Card(const std::string& device)
-{
- int fd = open(device.c_str(), O_RDWR | O_CLOEXEC);
- if (fd < 0)
- throw invalid_argument(string(strerror(errno)) + " opening " + device);
- m_fd = fd;
-
- int r;
-
- r = drmSetMaster(fd);
- m_master = r == 0;
-
- if (getenv("LIBKMSXX_DISABLE_UNIVERSAL_PLANES") == 0) {
- r = drmSetClientCap(m_fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1);
- m_has_universal_planes = r == 0;
- } else {
- m_has_universal_planes = false;
- }
-
-#ifdef DRM_CLIENT_CAP_ATOMIC
- if (getenv("LIBKMSXX_DISABLE_ATOMIC") == 0) {
- r = drmSetClientCap(m_fd, DRM_CLIENT_CAP_ATOMIC, 1);
- m_has_atomic = r == 0;
- } else {
- m_has_atomic = false;
- }
-#else
- m_has_atomic = false;
-#endif
-
- uint64_t has_dumb;
- r = drmGetCap(fd, DRM_CAP_DUMB_BUFFER, &has_dumb);
- if (r || !has_dumb)
- throw invalid_argument("Dumb buffers not available");
-
- auto res = drmModeGetResources(m_fd);
- if (!res)
- throw invalid_argument("Can't get card resources");
-
- for (int i = 0; i < res->count_connectors; ++i) {
- uint32_t id = res->connectors[i];
- auto ob = new Connector(*this, id, i);
- m_obmap[id] = ob;
- m_connectors.push_back(ob);
- }
-
- for (int i = 0; i < res->count_crtcs; ++i) {
- uint32_t id = res->crtcs[i];
- auto ob = new Crtc(*this, id, i);
- m_obmap[id] = ob;
- m_crtcs.push_back(ob);
- }
-
- for (int i = 0; i < res->count_encoders; ++i) {
- uint32_t id = res->encoders[i];
- auto ob = new Encoder(*this, id, i);
- m_obmap[id] = ob;
- m_encoders.push_back(ob);
- }
-
- drmModeFreeResources(res);
-
- auto planeRes = drmModeGetPlaneResources(m_fd);
-
- for (uint i = 0; i < planeRes->count_planes; ++i) {
- uint32_t id = planeRes->planes[i];
- auto ob = new Plane(*this, id, i);
- m_obmap[id] = ob;
- m_planes.push_back(ob);
- }
-
- drmModeFreePlaneResources(planeRes);
-
- // collect all possible props
- for (auto ob : get_objects()) {
- auto props = drmModeObjectGetProperties(m_fd, ob->id(), ob->object_type());
-
- if (props == nullptr)
- continue;
-
- for (unsigned i = 0; i < props->count_props; ++i) {
- uint32_t prop_id = props->props[i];
-
- if (m_obmap.find(prop_id) == m_obmap.end()) {
- auto ob = new Property(*this, prop_id);
- m_obmap[prop_id] = ob;
- m_properties.push_back(ob);
- }
- }
-
- drmModeFreeObjectProperties(props);
- }
-
- for (auto pair : m_obmap)
- pair.second->setup();
-}
-
-Card::~Card()
-{
- restore_modes();
-
- while (m_framebuffers.size() > 0)
- delete m_framebuffers.back();
-
- for (auto pair : m_obmap)
- delete pair.second;
-
- close(m_fd);
-}
-
-void Card::drop_master()
-{
- drmDropMaster(fd());
-}
-
-void Card::restore_modes()
-{
- for (auto conn : get_connectors())
- conn->restore_mode();
-}
-
-Property* Card::get_prop(const string& name) const
-{
- for (auto prop : m_properties) {
- if (name == prop->name())
- return prop;
- }
-
- throw invalid_argument(string("Card property ") + name + " not found");
-}
-
-Connector* Card::get_first_connected_connector() const
-{
- for(auto c : m_connectors) {
- if (c->connected())
- return c;
- }
-
- throw invalid_argument("no connected connectors");
-}
-
-DrmObject* Card::get_object(uint32_t id) const
-{
- auto iter = m_obmap.find(id);
- if (iter != m_obmap.end())
- return iter->second;
- return nullptr;
-}
-
-const vector<DrmObject*> Card::get_objects() const
-{
- vector<DrmObject*> v;
- for(auto pair : m_obmap)
- v.push_back(pair.second);
- return v;
-}
-
-Connector* Card::get_connector(uint32_t id) const { return dynamic_cast<Connector*>(get_object(id)); }
-Crtc* Card::get_crtc(uint32_t id) const { return dynamic_cast<Crtc*>(get_object(id)); }
-Encoder* Card::get_encoder(uint32_t id) const { return dynamic_cast<Encoder*>(get_object(id)); }
-Property* Card::get_prop(uint32_t id) const { return dynamic_cast<Property*>(get_object(id)); }
-Plane* Card::get_plane(uint32_t id) const { return dynamic_cast<Plane*>(get_object(id)); }
-
-std::vector<kms::Pipeline> Card::get_connected_pipelines()
-{
- vector<Pipeline> outputs;
-
- for (auto conn : get_connectors())
- {
- if (conn->connected() == false)
- continue;
-
- Crtc* crtc = conn->get_current_crtc();
-
- if (!crtc) {
- for (auto possible : conn->get_possible_crtcs()) {
- if (find_if(outputs.begin(), outputs.end(), [possible](Pipeline out) { return out.crtc == possible; }) == outputs.end()) {
- crtc = possible;
- break;
- }
- }
- }
-
- if (!crtc)
- throw invalid_argument(string("Connector #") +
- to_string(conn->idx()) +
- " has no possible crtcs");
-
- outputs.push_back(Pipeline { crtc, conn });
- }
-
- return outputs;
-}
-
-static void page_flip_handler(int fd, unsigned int frame,
- unsigned int sec, unsigned int usec,
- void *data)
-{
- auto handler = (PageFlipHandlerBase*)data;
- double time = sec + usec / 1000000.0;
- handler->handle_page_flip(frame, time);
-}
-
-void Card::call_page_flip_handlers()
-{
- drmEventContext ev = {
- .version = DRM_EVENT_CONTEXT_VERSION,
- .vblank_handler = 0,
- .page_flip_handler = page_flip_handler,
- };
-
- drmHandleEvent(fd(), &ev);
-}
-
-}
diff --git a/libkms++/card.h b/libkms++/card.h
deleted file mode 100644
index 5ecaecf..0000000
--- a/libkms++/card.h
+++ /dev/null
@@ -1,71 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include <vector>
-#include <map>
-
-#include "decls.h"
-#include "pipeline.h"
-
-namespace kms
-{
-class Card
-{
- friend class Framebuffer;
-public:
- Card();
- Card(const std::string& device);
- ~Card();
-
- Card(const Card& other) = delete;
- Card& operator=(const Card& other) = delete;
-
- int fd() const { return m_fd; }
-
- void drop_master();
-
- Connector* get_first_connected_connector() const;
-
- DrmObject* get_object(uint32_t id) const;
- Connector* get_connector(uint32_t id) const;
- Crtc* get_crtc(uint32_t id) const;
- Encoder* get_encoder(uint32_t id) const;
- Plane* get_plane(uint32_t id) const;
- Property* get_prop(uint32_t id) const;
- Property* get_prop(const std::string& name) const;
-
- bool master() const { return m_master; }
- bool has_atomic() const { return m_has_atomic; }
- bool has_has_universal_planes() const { return m_has_universal_planes; }
-
- const std::vector<Connector*> get_connectors() const { return m_connectors; }
- const std::vector<Encoder*> get_encoders() const { return m_encoders; }
- const std::vector<Crtc*> get_crtcs() const { return m_crtcs; }
- const std::vector<Plane*> get_planes() const { return m_planes; }
- const std::vector<Property*> get_properties() const { return m_properties; }
-
- const std::vector<DrmObject*> get_objects() const;
-
- std::vector<Pipeline> get_connected_pipelines();
-
- void call_page_flip_handlers();
-
-private:
- void restore_modes();
-
- std::map<uint32_t, DrmObject*> m_obmap;
-
- std::vector<Connector*> m_connectors;
- std::vector<Encoder*> m_encoders;
- std::vector<Crtc*> m_crtcs;
- std::vector<Plane*> m_planes;
- std::vector<Property*> m_properties;
- std::vector<Framebuffer*> m_framebuffers;
-
- int m_fd;
- bool m_master;
-
- bool m_has_atomic;
- bool m_has_universal_planes;
-};
-}
diff --git a/libkms++/connector.cpp b/libkms++/connector.cpp
deleted file mode 100644
index 0f471e1..0000000
--- a/libkms++/connector.cpp
+++ /dev/null
@@ -1,224 +0,0 @@
-#include <stdio.h>
-#include <iostream>
-#include <unistd.h>
-#include <fcntl.h>
-#include <cassert>
-
-#include "kms++.h"
-#include "helpers.h"
-
-using namespace std;
-
-namespace kms
-{
-
-
-static const map<int, string> connector_names = {
- { DRM_MODE_CONNECTOR_Unknown, "Unknown" },
- { DRM_MODE_CONNECTOR_VGA, "VGA" },
- { DRM_MODE_CONNECTOR_DVII, "DVI-I" },
- { DRM_MODE_CONNECTOR_DVID, "DVI-D" },
- { DRM_MODE_CONNECTOR_DVIA, "DVI-A" },
- { DRM_MODE_CONNECTOR_Composite, "Composite" },
- { DRM_MODE_CONNECTOR_SVIDEO, "S-Video" },
- { DRM_MODE_CONNECTOR_LVDS, "LVDS" },
- { DRM_MODE_CONNECTOR_Component, "Component" },
- { DRM_MODE_CONNECTOR_9PinDIN, "9-Pin-DIN" },
- { DRM_MODE_CONNECTOR_DisplayPort, "DP" },
- { DRM_MODE_CONNECTOR_HDMIA, "HDMI-A" },
- { DRM_MODE_CONNECTOR_HDMIB, "HDMI-B" },
- { DRM_MODE_CONNECTOR_TV, "TV" },
- { DRM_MODE_CONNECTOR_eDP, "eDP" },
- { DRM_MODE_CONNECTOR_VIRTUAL, "Virtual" },
- { DRM_MODE_CONNECTOR_DSI, "DSI" },
-};
-
-static const map<int, string> connection_str = {
- { 0, "<unknown>" },
- { DRM_MODE_CONNECTED, "Connected" },
- { DRM_MODE_DISCONNECTED, "Disconnected" },
- { DRM_MODE_UNKNOWNCONNECTION, "Unknown" },
-};
-
-static const map<int, string> subpix_str = {
-#define DEF_SUBPIX(c) { DRM_MODE_SUBPIXEL_##c, #c }
- DEF_SUBPIX(UNKNOWN),
- DEF_SUBPIX(HORIZONTAL_RGB),
- DEF_SUBPIX(HORIZONTAL_BGR),
- DEF_SUBPIX(VERTICAL_RGB),
- DEF_SUBPIX(VERTICAL_BGR),
- DEF_SUBPIX(NONE),
-#undef DEF_SUBPIX
-};
-
-struct ConnectorPriv
-{
- drmModeConnectorPtr drm_connector;
-};
-
-Connector::Connector(Card &card, uint32_t id, uint32_t idx)
- :DrmPropObject(card, id, DRM_MODE_OBJECT_CONNECTOR, idx)
-{
- m_priv = new ConnectorPriv();
-
- m_priv->drm_connector = drmModeGetConnector(this->card().fd(), this->id());
- assert(m_priv->drm_connector);
-
- // XXX drmModeGetConnector() does forced probe, which seems to change (at least) EDID blob id.
- // XXX So refresh the props again here.
- refresh_props();
-
- const auto& name = connector_names.at(m_priv->drm_connector->connector_type);
- m_fullname = name + "-" + to_string(m_priv->drm_connector->connector_type_id);
-}
-
-
-Connector::~Connector()
-{
- drmModeFreeConnector(m_priv->drm_connector);
- delete m_priv;
-}
-
-void Connector::setup()
-{
- if (m_priv->drm_connector->encoder_id != 0)
- m_current_encoder = card().get_encoder(m_priv->drm_connector->encoder_id);
- else
- m_current_encoder = 0;
-
- if (m_current_encoder)
- m_saved_crtc = m_current_encoder->get_crtc();
- else
- m_saved_crtc = 0;
-}
-
-void Connector::restore_mode()
-{
- if (m_saved_crtc)
- m_saved_crtc->restore_mode(this);
-}
-
-Videomode Connector::get_default_mode() const
-{
- if (m_priv->drm_connector->count_modes == 0)
- throw invalid_argument("no modes available\n");
- drmModeModeInfo drmmode = m_priv->drm_connector->modes[0];
-
- return drm_mode_to_video_mode(drmmode);
-}
-
-Videomode Connector::get_mode(const string& mode) const
-{
- auto c = m_priv->drm_connector;
-
- for (int i = 0; i < c->count_modes; i++)
- if (mode == c->modes[i].name)
- return drm_mode_to_video_mode(c->modes[i]);
-
- throw invalid_argument(mode + ": mode not found");
-}
-
-Videomode Connector::get_mode(unsigned xres, unsigned yres, unsigned refresh, bool ilace) const
-{
- auto c = m_priv->drm_connector;
-
- for (int i = 0; i < c->count_modes; i++) {
- drmModeModeInfo& m = c->modes[i];
-
- if (m.hdisplay != xres || m.vdisplay != yres)
- continue;
-
- if (refresh && m.vrefresh != refresh)
- continue;
-
- if (ilace != !!(m.flags & DRM_MODE_FLAG_INTERLACE))
- continue;
-
- return drm_mode_to_video_mode(c->modes[i]);
- }
-
- throw invalid_argument("mode not found");
-}
-
-bool Connector::connected() const
-{
- return m_priv->drm_connector->connection == DRM_MODE_CONNECTED ||
- m_priv->drm_connector->connection == DRM_MODE_UNKNOWNCONNECTION;
-}
-
-vector<Crtc*> Connector::get_possible_crtcs() const
-{
- vector<Crtc*> crtcs;
-
- for (int i = 0; i < m_priv->drm_connector->count_encoders; ++i) {
- auto enc = card().get_encoder(m_priv->drm_connector->encoders[i]);
-
- auto l = enc->get_possible_crtcs();
-
- crtcs.insert(crtcs.end(), l.begin(), l.end());
- }
-
- return crtcs;
-}
-
-Crtc* Connector::get_current_crtc() const
-{
- if (m_current_encoder)
- return m_current_encoder->get_crtc();
- else
- return 0;
-}
-
-uint32_t Connector::connector_type() const
-{
- return m_priv->drm_connector->connector_type;
-}
-
-uint32_t Connector::connector_type_id() const
-{
- return m_priv->drm_connector->connector_type_id;
-}
-
-uint32_t Connector::mmWidth() const
-{
- return m_priv->drm_connector->mmWidth;
-}
-
-uint32_t Connector::mmHeight() const
-{
- return m_priv->drm_connector->mmHeight;
-}
-
-uint32_t Connector::subpixel() const
-{
- return m_priv->drm_connector->subpixel;
-}
-
-const string& Connector::subpixel_str() const
-{
- return subpix_str.at(subpixel());
-}
-
-std::vector<Videomode> Connector::get_modes() const
-{
- vector<Videomode> modes;
-
- for (int i = 0; i < m_priv->drm_connector->count_modes; i++)
- modes.push_back(drm_mode_to_video_mode(
- m_priv->drm_connector->modes[i]));
-
- return modes;
-}
-
-std::vector<Encoder*> Connector::get_encoders() const
-{
- vector<Encoder*> encoders;
-
- for (int i = 0; i < m_priv->drm_connector->count_encoders; i++) {
- auto enc = card().get_encoder(m_priv->drm_connector->encoders[i]);
- encoders.push_back(enc);
- }
- return encoders;
-}
-
-}
diff --git a/libkms++/connector.h b/libkms++/connector.h
deleted file mode 100644
index 6ccc959..0000000
--- a/libkms++/connector.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#pragma once
-
-#include <vector>
-
-#include "drmpropobject.h"
-#include "videomode.h"
-
-namespace kms
-{
-
-struct ConnectorPriv;
-
-class Connector : public DrmPropObject
-{
- friend class Card;
-public:
- Videomode get_default_mode() const;
-
- Videomode get_mode(const std::string& mode) const;
- Videomode get_mode(unsigned xres, unsigned yres, unsigned refresh, bool ilace) const;
-
- Crtc* get_current_crtc() const;
- std::vector<Crtc*> get_possible_crtcs() const;
-
- bool connected() const;
-
- const std::string& fullname() const { return m_fullname; }
- uint32_t connector_type() const;
- uint32_t connector_type_id() const;
- uint32_t mmWidth() const;
- uint32_t mmHeight() const;
- uint32_t subpixel() const;
- const std::string& subpixel_str() const;
- std::vector<Videomode> get_modes() const;
- std::vector<Encoder*> get_encoders() const;
-private:
- Connector(Card& card, uint32_t id, uint32_t idx);
- ~Connector();
-
- void setup();
- void restore_mode();
-
- ConnectorPriv* m_priv;
-
- std::string m_fullname;
-
- Encoder* m_current_encoder;
-
- Crtc* m_saved_crtc;
-};
-}
diff --git a/libkms++/crtc.cpp b/libkms++/crtc.cpp
deleted file mode 100644
index 6cbdf0c..0000000
--- a/libkms++/crtc.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-#include <stdio.h>
-#include <iostream>
-#include <unistd.h>
-#include <fcntl.h>
-#include <cassert>
-
-#include "kms++.h"
-#include "helpers.h"
-
-using namespace std;
-
-namespace kms
-{
-
-struct CrtcPriv
-{
- drmModeCrtcPtr drm_crtc;
-};
-
-Crtc::Crtc(Card &card, uint32_t id, uint32_t idx)
- :DrmPropObject(card, id, DRM_MODE_OBJECT_CRTC, idx)
-{
- m_priv = new CrtcPriv();
- m_priv->drm_crtc = drmModeGetCrtc(this->card().fd(), this->id());
- assert(m_priv->drm_crtc);
-}
-
-Crtc::~Crtc()
-{
- drmModeFreeCrtc(m_priv->drm_crtc);
- delete m_priv;
-}
-
-void Crtc::setup()
-{
- for (Plane* plane : card().get_planes()) {
- if (plane->supports_crtc(this))
- m_possible_planes.push_back(plane);
- }
-}
-
-void Crtc::restore_mode(Connector* conn)
-{
- auto c = m_priv->drm_crtc;
-
- uint32_t conns[] = { conn->id() };
-
- drmModeSetCrtc(card().fd(), id(), c->buffer_id,
- c->x, c->y,
- conns, 1, &c->mode);
-}
-
-int Crtc::set_mode(Connector* conn, Framebuffer& fb, const Videomode& mode)
-{
- uint32_t conns[] = { conn->id() };
- drmModeModeInfo drmmode = video_mode_to_drm_mode(mode);
-
- return drmModeSetCrtc(card().fd(), id(), fb.id(),
- 0, 0,
- conns, 1, &drmmode);
-}
-
-static inline uint32_t conv(float x)
-{
- // XXX fix the conversion for fractional part
- return ((uint32_t)x) << 16;
-}
-
-int Crtc::set_plane(Plane* plane, Framebuffer& fb,
- int32_t dst_x, int32_t dst_y, uint32_t dst_w, uint32_t dst_h,
- float src_x, float src_y, float src_w, float src_h)
-{
- return drmModeSetPlane(card().fd(), plane->id(), id(), fb.id(), 0,
- dst_x, dst_y, dst_w, dst_h,
- conv(src_x), conv(src_y), conv(src_w), conv(src_h));
-}
-
-int Crtc::disable_plane(Plane* plane)
-{
- return drmModeSetPlane(card().fd(), plane->id(), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-}
-
-Plane* Crtc::get_primary_plane()
-{
- for (Plane* p : get_possible_planes()) {
- if (p->plane_type() != PlaneType::Primary)
- continue;
-
- return p;
- }
-
- throw invalid_argument(string("No primary plane for crtc ") + to_string(id()));
-}
-
-int Crtc::page_flip(Framebuffer& fb, void *data)
-{
- return drmModePageFlip(card().fd(), id(), fb.id(), DRM_MODE_PAGE_FLIP_EVENT, data);
-}
-
-uint32_t Crtc::buffer_id() const
-{
- return m_priv->drm_crtc->buffer_id;
-}
-
-uint32_t Crtc::x() const
-{
- return m_priv->drm_crtc->x;
-}
-
-uint32_t Crtc::y() const
-{
- return m_priv->drm_crtc->y;
-}
-
-uint32_t Crtc::width() const
-{
- return m_priv->drm_crtc->width;
-}
-
-uint32_t Crtc::height() const
-{
- return m_priv->drm_crtc->height;
-}
-
-int Crtc::mode_valid() const
-{
- return m_priv->drm_crtc->mode_valid;
-}
-
-Videomode Crtc::mode() const
-{
- return drm_mode_to_video_mode(m_priv->drm_crtc->mode);
-}
-
-int Crtc::gamma_size() const
-{
- return m_priv->drm_crtc->gamma_size;
-}
-
-}
diff --git a/libkms++/crtc.h b/libkms++/crtc.h
deleted file mode 100644
index f3b525a..0000000
--- a/libkms++/crtc.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#pragma once
-
-#include <vector>
-
-#include "drmpropobject.h"
-
-namespace kms
-{
-
-struct CrtcPriv;
-
-class Crtc : public DrmPropObject
-{
- friend class Card;
- friend class Connector;
-public:
- const std::vector<Plane*>& get_possible_planes() const { return m_possible_planes; }
-
- int set_mode(Connector* conn, Framebuffer& fb, const Videomode& mode);
-
- int set_plane(Plane *plane, Framebuffer &fb,
- int32_t dst_x, int32_t dst_y, uint32_t dst_w, uint32_t dst_h,
- float src_x, float src_y, float src_w, float src_h);
-
- int disable_plane(Plane* plane);
-
- Plane* get_primary_plane();
-
- int page_flip(Framebuffer& fb, void *data);
-
- uint32_t buffer_id() const;
- uint32_t x() const;
- uint32_t y() const;
- uint32_t width() const;
- uint32_t height() const;
- int mode_valid() const;
- Videomode mode() const;
- int gamma_size() const;
-private:
- Crtc(Card& card, uint32_t id, uint32_t idx);
- ~Crtc();
-
- void setup();
- void restore_mode(Connector *conn);
-
- CrtcPriv* m_priv;
-
- std::vector<Plane*> m_possible_planes;
-};
-}
diff --git a/libkms++/decls.h b/libkms++/decls.h
deleted file mode 100644
index e84b29a..0000000
--- a/libkms++/decls.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#pragma once
-
-namespace kms
-{
-class AtomicReq;
-class Card;
-class Connector;
-class Crtc;
-class Encoder;
-class Framebuffer;
-class DumbFramebuffer;
-class ExtFramebuffer;
-class DrmObject;
-class PageFlipHandlerBase;
-class Plane;
-class Property;
-class Blob;
-struct Videomode;
-}
diff --git a/libkms++/drmobject.cpp b/libkms++/drmobject.cpp
deleted file mode 100644
index 8abecc7..0000000
--- a/libkms++/drmobject.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include <string.h>
-#include <iostream>
-#include <stdexcept>
-
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "kms++.h"
-
-using namespace std;
-
-namespace kms
-{
-
-DrmObject::DrmObject(Card& card, uint32_t object_type)
- :m_card(card), m_id(-1), m_object_type(object_type), m_idx(0)
-{
-}
-
-DrmObject::DrmObject(Card& card, uint32_t id, uint32_t object_type, uint32_t idx)
- :m_card(card), m_id(id), m_object_type(object_type), m_idx(idx)
-{
-}
-
-DrmObject::~DrmObject()
-{
-
-}
-
-void DrmObject::set_id(uint32_t id)
-{
- m_id = id;
-}
-}
diff --git a/libkms++/drmobject.h b/libkms++/drmobject.h
deleted file mode 100644
index a939aa7..0000000
--- a/libkms++/drmobject.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#pragma once
-
-#include <map>
-
-#include "decls.h"
-
-namespace kms
-{
-
-class DrmObject
-{
- friend class Card;
-public:
- DrmObject(const DrmObject& other) = delete;
- DrmObject& operator=(const DrmObject& other) = delete;
-
- uint32_t id() const { return m_id; }
- Card& card() const { return m_card; }
-
- uint32_t object_type() const { return m_object_type; }
- uint32_t idx() const { return m_idx; }
-
-protected:
- DrmObject(Card& card, uint32_t object_type);
- DrmObject(Card& card, uint32_t id, uint32_t object_type, uint32_t idx = 0);
-
- virtual ~DrmObject();
-
- virtual void setup() { }
-
- virtual void set_id(uint32_t id);
-
-private:
- Card& m_card;
-
- uint32_t m_id;
- uint32_t m_object_type;
- uint32_t m_idx;
-};
-}
diff --git a/libkms++/drmpropobject.cpp b/libkms++/drmpropobject.cpp
deleted file mode 100644
index 50f87a7..0000000
--- a/libkms++/drmpropobject.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-#include <string.h>
-#include <iostream>
-#include <stdexcept>
-
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "kms++.h"
-
-using namespace std;
-
-namespace kms
-{
-
-DrmPropObject::DrmPropObject(Card& card, uint32_t object_type)
- : DrmObject(card, object_type)
-{
-}
-
-DrmPropObject::DrmPropObject(Card& card, uint32_t id, uint32_t object_type, uint32_t idx)
- : DrmObject(card, id, object_type, idx)
-{
- refresh_props();
-}
-
-DrmPropObject::~DrmPropObject()
-{
-
-}
-
-void DrmPropObject::refresh_props()
-{
- auto props = drmModeObjectGetProperties(card().fd(), this->id(), this->object_type());
-
- if (props == nullptr)
- return;
-
- for (unsigned i = 0; i < props->count_props; ++i) {
- uint32_t prop_id = props->props[i];
- uint64_t prop_value = props->prop_values[i];
-
- m_prop_values[prop_id] = prop_value;
- }
-
- drmModeFreeObjectProperties(props);
-}
-
-uint64_t DrmPropObject::get_prop_value(uint32_t id) const
-{
- return m_prop_values.at(id);
-}
-
-uint64_t DrmPropObject::get_prop_value(const string& name) const
-{
- for (auto pair : m_prop_values) {
- auto prop = card().get_prop(pair.first);
- if (name == prop->name())
- return m_prop_values.at(prop->id());
- }
-
- throw invalid_argument("property not found: " + name);
-}
-
-unique_ptr<Blob> DrmPropObject::get_prop_value_as_blob(const string& name) const
-{
- uint32_t blob_id = (uint32_t)get_prop_value(name);
-
- return unique_ptr<Blob>(new Blob(card(), blob_id));
-}
-
-int DrmPropObject::set_prop_value(uint32_t id, uint64_t value)
-{
- return drmModeObjectSetProperty(card().fd(), this->id(), this->object_type(), id, value);
-}
-
-int DrmPropObject::set_prop_value(const string &name, uint64_t value)
-{
- Property* prop = card().get_prop(name);
-
- if (prop == nullptr)
- throw invalid_argument("property not found: " + name);
-
- return set_prop_value(prop->id(), value);
-}
-
-}
diff --git a/libkms++/drmpropobject.h b/libkms++/drmpropobject.h
deleted file mode 100644
index ec28d45..0000000
--- a/libkms++/drmpropobject.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#pragma once
-
-#include <map>
-#include <memory>
-
-#include "drmobject.h"
-#include "decls.h"
-
-namespace kms
-{
-
-class DrmPropObject : public DrmObject
-{
- friend class Card;
-public:
- void refresh_props();
- uint64_t get_prop_value(uint32_t id) const;
- uint64_t get_prop_value(const std::string& name) const;
- std::unique_ptr<Blob> get_prop_value_as_blob(const std::string& name) const;
-
- const std::map<uint32_t, uint64_t>& get_prop_map() const { return m_prop_values; }
-
- int set_prop_value(uint32_t id, uint64_t value);
- int set_prop_value(const std::string& name, uint64_t value);
-
-protected:
- DrmPropObject(Card& card, uint32_t object_type);
- DrmPropObject(Card& card, uint32_t id, uint32_t object_type, uint32_t idx = 0);
-
- virtual ~DrmPropObject();
-
-private:
- std::map<uint32_t, uint64_t> m_prop_values;
-};
-}
diff --git a/libkms++/dumbframebuffer.cpp b/libkms++/dumbframebuffer.cpp
deleted file mode 100644
index fcd01d0..0000000
--- a/libkms++/dumbframebuffer.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-
-#include <cstring>
-#include <stdexcept>
-#include <sys/mman.h>
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <drm_fourcc.h>
-#include <drm.h>
-#include <drm_mode.h>
-
-#include "kms++.h"
-
-#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
-
-using namespace std;
-
-namespace kms
-{
-
-DumbFramebuffer::DumbFramebuffer(Card &card, uint32_t width, uint32_t height, const string& fourcc)
- :DumbFramebuffer(card, width, height, FourCCToPixelFormat(fourcc))
-{
-}
-
-DumbFramebuffer::DumbFramebuffer(Card& card, uint32_t width, uint32_t height, PixelFormat format)
- :Framebuffer(card, width, height), m_format(format)
-{
- Create();
-}
-
-DumbFramebuffer::~DumbFramebuffer()
-{
- Destroy();
-}
-
-void DumbFramebuffer::Create()
-{
- int r;
-
- const PixelFormatInfo& format_info = get_pixel_format_info(m_format);
-
- m_num_planes = format_info.num_planes;
-
- for (int i = 0; i < format_info.num_planes; ++i) {
- const PixelFormatPlaneInfo& pi = format_info.planes[i];
- FramebufferPlane& plane = m_planes[i];
-
- /* create dumb buffer */
- struct drm_mode_create_dumb creq = drm_mode_create_dumb();
- creq.width = width();
- creq.height = height() / pi.ysub;
- creq.bpp = pi.bitspp;
- r = drmIoctl(card().fd(), DRM_IOCTL_MODE_CREATE_DUMB, &creq);
- if (r)
- throw invalid_argument(string("DRM_IOCTL_MODE_CREATE_DUMB failed") + strerror(errno));
-
- plane.handle = creq.handle;
- plane.stride = creq.pitch;
- plane.size = creq.height * creq.pitch;
- plane.offset = 0;
- plane.map = 0;
- plane.prime_fd = -1;
- }
-
- /* create framebuffer object for the dumb-buffer */
- uint32_t bo_handles[4] = { m_planes[0].handle, m_planes[1].handle };
- uint32_t pitches[4] = { m_planes[0].stride, m_planes[1].stride };
- uint32_t offsets[4] = { m_planes[0].offset, m_planes[1].offset };
- uint32_t id;
- r = drmModeAddFB2(card().fd(), width(), height(), (uint32_t)format(),
- bo_handles, pitches, offsets, &id, 0);
- if (r)
- throw invalid_argument(string("drmModeAddFB2 failed: ") + strerror(errno));
-
- set_id(id);
-}
-
-void DumbFramebuffer::Destroy()
-{
- /* delete framebuffer */
- drmModeRmFB(card().fd(), id());
-
- for (uint i = 0; i < m_num_planes; ++i) {
- FramebufferPlane& plane = m_planes[i];
-
- /* unmap buffer */
- if (plane.map)
- munmap(plane.map, plane.size);
-
- /* delete dumb buffer */
- struct drm_mode_destroy_dumb dreq = drm_mode_destroy_dumb();
- dreq.handle = plane.handle;
- drmIoctl(card().fd(), DRM_IOCTL_MODE_DESTROY_DUMB, &dreq);
- if (plane.prime_fd >= 0)
- ::close(plane.prime_fd);
- }
-}
-
-uint8_t* DumbFramebuffer::map(unsigned plane)
-{
- FramebufferPlane& p = m_planes[plane];
-
- if (p.map)
- return p.map;
-
- /* prepare buffer for memory mapping */
- struct drm_mode_map_dumb mreq = drm_mode_map_dumb();
- mreq.handle = p.handle;
- int r = drmIoctl(card().fd(), DRM_IOCTL_MODE_MAP_DUMB, &mreq);
- if (r)
- throw invalid_argument(string("DRM_IOCTL_MODE_MAP_DUMB failed") + strerror(errno));
-
- /* perform actual memory mapping */
- p.map = (uint8_t *)mmap(0, p.size, PROT_READ | PROT_WRITE, MAP_SHARED,
- card().fd(), mreq.offset);
- if (p.map == MAP_FAILED)
- throw invalid_argument(string("mmap failed: ") + strerror(errno));
-
- return p.map;
-}
-
-int DumbFramebuffer::prime_fd(unsigned int plane)
-{
- if (m_planes[plane].prime_fd >= 0)
- return m_planes[plane].prime_fd;
-
- int r = drmPrimeHandleToFD(card().fd(), m_planes[plane].handle,
- DRM_CLOEXEC, &m_planes[plane].prime_fd);
- if (r)
- throw std::runtime_error("drmPrimeHandleToFD failed");
-
- return m_planes[plane].prime_fd;
-}
-
-}
diff --git a/libkms++/dumbframebuffer.h b/libkms++/dumbframebuffer.h
deleted file mode 100644
index 6b3ee64..0000000
--- a/libkms++/dumbframebuffer.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-
-#include "framebuffer.h"
-#include "pixelformats.h"
-
-namespace kms
-{
-class DumbFramebuffer : public Framebuffer, public IMappedFramebuffer
-{
-public:
- DumbFramebuffer(Card& card, uint32_t width, uint32_t height, const std::string& fourcc);
- DumbFramebuffer(Card& card, uint32_t width, uint32_t height, PixelFormat format);
- virtual ~DumbFramebuffer();
-
- uint32_t width() const { return Framebuffer::width(); }
- uint32_t height() const { return Framebuffer::height(); }
-
- PixelFormat format() const { return m_format; }
- unsigned num_planes() const { return m_num_planes; }
-
- uint32_t handle(unsigned plane) const { return m_planes[plane].handle; }
- uint32_t stride(unsigned plane) const { return m_planes[plane].stride; }
- uint32_t size(unsigned plane) const { return m_planes[plane].size; }
- uint32_t offset(unsigned plane) const { return m_planes[plane].offset; }
- uint8_t* map(unsigned plane);
- int prime_fd(unsigned plane);
-
-private:
- struct FramebufferPlane {
- uint32_t handle;
- int prime_fd;
- uint32_t size;
- uint32_t stride;
- uint32_t offset;
- uint8_t *map;
- };
-
- void Create();
- void Destroy();
-
- unsigned m_num_planes;
- struct FramebufferPlane m_planes[4];
-
- PixelFormat m_format;
-};
-}
diff --git a/libkms++/encoder.cpp b/libkms++/encoder.cpp
deleted file mode 100644
index 1ed2d5c..0000000
--- a/libkms++/encoder.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-#include <stdio.h>
-#include <iostream>
-#include <unistd.h>
-#include <fcntl.h>
-#include <cassert>
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "kms++.h"
-
-using namespace std;
-
-namespace kms
-{
-
-struct EncoderPriv
-{
- drmModeEncoderPtr drm_encoder;
-};
-
-static const map<int, string> encoder_types = {
-#define DEF_ENC(c) { DRM_MODE_ENCODER_##c, #c }
- DEF_ENC(NONE),
- DEF_ENC(DAC),
- DEF_ENC(TMDS),
- DEF_ENC(LVDS),
- DEF_ENC(TVDAC),
- DEF_ENC(VIRTUAL),
- DEF_ENC(DSI),
- { 7, "DPMST" },
-#undef DEF_ENC
-};
-
-Encoder::Encoder(Card &card, uint32_t id, uint32_t idx)
- :DrmPropObject(card, id, DRM_MODE_OBJECT_ENCODER, idx)
-{
- m_priv = new EncoderPriv();
- m_priv->drm_encoder = drmModeGetEncoder(this->card().fd(), this->id());
- assert(m_priv->drm_encoder);
-}
-
-Encoder::~Encoder()
-{
- drmModeFreeEncoder(m_priv->drm_encoder);
- delete m_priv;
-}
-
-Crtc* Encoder::get_crtc() const
-{
- if (m_priv->drm_encoder->crtc_id)
- return card().get_crtc(m_priv->drm_encoder->crtc_id);
- else
- return 0;
-}
-
-vector<Crtc*> Encoder::get_possible_crtcs() const
-{
- unsigned bits = m_priv->drm_encoder->possible_crtcs;
- vector<Crtc*> crtcs;
-
- for (int idx = 0; bits; idx++, bits >>= 1) {
- if ((bits & 1) == 0)
- continue;
-
- auto crtc = card().get_crtcs()[idx];
- crtcs.push_back(crtc);
- }
-
- return crtcs;
-}
-
-const string& Encoder::get_encoder_type() const
-{
- return encoder_types.at(m_priv->drm_encoder->encoder_type);
-}
-
-}
diff --git a/libkms++/encoder.h b/libkms++/encoder.h
deleted file mode 100644
index b5aac70..0000000
--- a/libkms++/encoder.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-
-#include <vector>
-#include "drmpropobject.h"
-
-namespace kms
-{
-
-struct EncoderPriv;
-
-class Encoder : public DrmPropObject
-{
- friend class Card;
-public:
- Crtc* get_crtc() const;
- std::vector<Crtc*> get_possible_crtcs() const;
-
- const std::string& get_encoder_type() const;
-private:
- Encoder(Card& card, uint32_t id, uint32_t idx);
- ~Encoder();
-
- EncoderPriv* m_priv;
-};
-}
diff --git a/libkms++/extframebuffer.cpp b/libkms++/extframebuffer.cpp
deleted file mode 100644
index 352c1a7..0000000
--- a/libkms++/extframebuffer.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-
-#include <cstring>
-#include <stdexcept>
-#include <sys/mman.h>
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "kms++.h"
-
-using namespace std;
-
-namespace kms
-{
-
-ExtFramebuffer::ExtFramebuffer(Card& card, uint32_t width, uint32_t height, uint8_t depth, uint8_t bpp, uint32_t stride, uint32_t handle)
- :Framebuffer(card, width, height)
-{
- uint32_t id;
- int r = drmModeAddFB(card.fd(), width, height, depth, bpp, stride, handle, &id);
- if (r)
- throw invalid_argument("fob");
-
- set_id(id);
-}
-
-ExtFramebuffer::ExtFramebuffer(Card& card, uint32_t width, uint32_t height, PixelFormat format,
- uint32_t handles[], uint32_t pitches[], uint32_t offsets[])
- : Framebuffer(card, width, height)
-{
- uint32_t id;
- int r = drmModeAddFB2(card.fd(), width, height, (uint32_t)format, handles, pitches, offsets, &id, 0);
- if (r)
- throw std::invalid_argument(string("Failed to create ExtFramebuffer: ") + strerror(r));
-
- set_id(id);
-}
-
-ExtFramebuffer::ExtFramebuffer(Card& card, uint32_t width, uint32_t height, PixelFormat format,
- int fds[4], uint32_t pitches[4], uint32_t offsets[4])
- : Framebuffer(card, width, height)
-{
- int r;
-
- const PixelFormatInfo& format_info = get_pixel_format_info(format);
-
- uint32_t handles[4] = { 0 };
-
- for (int i = 0; i < format_info.num_planes; ++i) {
- r = drmPrimeFDToHandle(card.fd(), fds[i], &handles[i]);
- if (r)
- throw invalid_argument(string("drmPrimeFDToHandle: ") + strerror(errno));
- }
-
- uint32_t id;
- r = drmModeAddFB2(card.fd(), width, height, (uint32_t)format,
- handles, pitches, offsets, &id, 0);
- if (r)
- throw invalid_argument(string("drmModeAddFB2 failed: ") + strerror(errno));
-
- set_id(id);
-}
-
-ExtFramebuffer::~ExtFramebuffer()
-{
- drmModeRmFB(card().fd(), id());
-}
-
-}
diff --git a/libkms++/extframebuffer.h b/libkms++/extframebuffer.h
deleted file mode 100644
index eab7e3c..0000000
--- a/libkms++/extframebuffer.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#pragma once
-
-#include "framebuffer.h"
-#include "pixelformats.h"
-
-namespace kms
-{
-
-class ExtFramebuffer : public Framebuffer
-{
-public:
- ExtFramebuffer(Card& card, uint32_t width, uint32_t height, uint8_t depth, uint8_t bpp, uint32_t stride, uint32_t handle);
- ExtFramebuffer(Card& card, uint32_t width, uint32_t height, PixelFormat format,
- uint32_t handles[4], uint32_t pitches[4], uint32_t offsets[4]);
- ExtFramebuffer(Card& card, uint32_t width, uint32_t height, PixelFormat format,
- int fds[4], uint32_t pitches[4], uint32_t offsets[4]);
- virtual ~ExtFramebuffer();
-
-private:
-};
-}
diff --git a/libkms++/framebuffer.cpp b/libkms++/framebuffer.cpp
deleted file mode 100644
index bf9ab01..0000000
--- a/libkms++/framebuffer.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#include <algorithm>
-#include <cstring>
-#include <stdexcept>
-#include <sys/mman.h>
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "kms++.h"
-
-using namespace std;
-
-namespace kms
-{
-
-Framebuffer::Framebuffer(Card& card, uint32_t width, uint32_t height)
- : DrmObject(card, DRM_MODE_OBJECT_FB), m_width(width), m_height(height)
-{
- card.m_framebuffers.push_back(this);
-}
-
-Framebuffer::Framebuffer(Card& card, uint32_t id)
- : DrmObject(card, id, DRM_MODE_OBJECT_FB)
-{
- auto fb = drmModeGetFB(card.fd(), id);
-
- m_width = fb->width;
- m_height = fb->height;
-
- drmModeFreeFB(fb);
-
- card.m_framebuffers.push_back(this);
-}
-
-Framebuffer::~Framebuffer()
-{
- auto& fbs = card().m_framebuffers;
- auto iter = find(fbs.begin(), fbs.end(), this);
- card().m_framebuffers.erase(iter);
-}
-
-
-}
diff --git a/libkms++/framebuffer.h b/libkms++/framebuffer.h
deleted file mode 100644
index cbf705d..0000000
--- a/libkms++/framebuffer.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#pragma once
-
-#include "drmobject.h"
-#include "pixelformats.h"
-
-namespace kms
-{
-class Framebuffer : public DrmObject
-{
-public:
- Framebuffer(Card& card, uint32_t id);
- virtual ~Framebuffer();
-
- uint32_t width() const { return m_width; }
- uint32_t height() const { return m_height; }
-protected:
- Framebuffer(Card& card, uint32_t width, uint32_t height);
-
-private:
- uint32_t m_width;
- uint32_t m_height;
-};
-
-class IMappedFramebuffer {
-public:
- virtual ~IMappedFramebuffer() { }
-
- virtual uint32_t width() const = 0;
- virtual uint32_t height() const = 0;
-
- virtual PixelFormat format() const = 0;
- virtual unsigned num_planes() const = 0;
-
- virtual uint32_t stride(unsigned plane) const = 0;
- virtual uint32_t size(unsigned plane) const = 0;
- virtual uint32_t offset(unsigned plane) const = 0;
- virtual uint8_t* map(unsigned plane) = 0;
-};
-
-}
diff --git a/libkms++/helpers.cpp b/libkms++/helpers.cpp
deleted file mode 100644
index 715e757..0000000
--- a/libkms++/helpers.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-
-#include "connector.h"
-#include "helpers.h"
-#include <cstring>
-
-#define CPY(field) dst.field = src.field
-
-namespace kms
-{
-Videomode drm_mode_to_video_mode(const drmModeModeInfo& drmmode)
-{
- Videomode mode = { };
-
- auto& src = drmmode;
- auto& dst = mode;
-
- CPY(clock);
-
- CPY(hdisplay);
- CPY(hsync_start);
- CPY(hsync_end);
- CPY(htotal);
- CPY(hskew);
-
- CPY(vdisplay);
- CPY(vsync_start);
- CPY(vsync_end);
- CPY(vtotal);
- CPY(vscan);
-
- CPY(vrefresh);
-
- CPY(flags);
- CPY(type);
-
- mode.name = drmmode.name;
-
- return mode;
-}
-
-drmModeModeInfo video_mode_to_drm_mode(const Videomode& mode)
-{
- drmModeModeInfo drmmode = { };
-
- auto& src = mode;
- auto& dst = drmmode;
-
- CPY(clock);
-
- CPY(hdisplay);
- CPY(hsync_start);
- CPY(hsync_end);
- CPY(htotal);
- CPY(hskew);
-
- CPY(vdisplay);
- CPY(vsync_start);
- CPY(vsync_end);
- CPY(vtotal);
- CPY(vscan);
-
- CPY(vrefresh);
-
- CPY(flags);
- CPY(type);
-
- strncpy(drmmode.name, mode.name.c_str(), sizeof(drmmode.name));
- drmmode.name[sizeof(drmmode.name) - 1] = 0;
-
- return drmmode;
-}
-}
diff --git a/libkms++/helpers.h b/libkms++/helpers.h
deleted file mode 100644
index 4eb597c..0000000
--- a/libkms++/helpers.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#pragma once
-
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-namespace kms
-{
-struct Videomode;
-
-Videomode drm_mode_to_video_mode(const drmModeModeInfo& drmmode);
-drmModeModeInfo video_mode_to_drm_mode(const Videomode& mode);
-}
diff --git a/libkms++/kms++.h b/libkms++/kms++.h
deleted file mode 100644
index 3365ef7..0000000
--- a/libkms++/kms++.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#pragma once
-
-#include "atomicreq.h"
-#include "card.h"
-#include "connector.h"
-#include "crtc.h"
-#include "encoder.h"
-#include "framebuffer.h"
-#include "dumbframebuffer.h"
-#include "extframebuffer.h"
-#include "plane.h"
-#include "property.h"
-#include "blob.h"
-#include "pipeline.h"
-#include "pagefliphandler.h"
diff --git a/libkms++/modedb.cpp b/libkms++/modedb.cpp
deleted file mode 100644
index 53dcfcf..0000000
--- a/libkms++/modedb.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#include <xf86drm.h>
-#include <stdexcept>
-
-#include "modedb.h"
-#include "videomode.h"
-
-using namespace std;
-
-namespace kms
-{
-
-static const Videomode& find_from_table(const Videomode* modes, uint32_t width, uint32_t height, uint32_t refresh, bool ilace)
-{
- for (unsigned i = 0; modes[i].clock; ++i) {
- const Videomode& m = modes[i];
-
- if (m.hdisplay != width || m.vdisplay != height)
- continue;
-
- if (refresh && m.vrefresh != refresh)
- continue;
-
- if (ilace != !!(m.flags & DRM_MODE_FLAG_INTERLACE))
- continue;
-
- return m;
- }
-
- throw invalid_argument("mode not found");
-}
-
-const Videomode& find_dmt(uint32_t width, uint32_t height, uint32_t refresh, bool ilace)
-{
- return find_from_table(dmt_modes, width, height, refresh, ilace);
-}
-
-const Videomode& find_cea(uint32_t width, uint32_t height, uint32_t refresh, bool ilace)
-{
- return find_from_table(cea_modes, width, height, refresh, ilace);
-}
-
-}
diff --git a/libkms++/modedb.h b/libkms++/modedb.h
deleted file mode 100644
index 43c7afc..0000000
--- a/libkms++/modedb.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include "videomode.h"
-
-namespace kms
-{
-struct Videomode;
-
-extern const Videomode dmt_modes[];
-extern const Videomode cea_modes[];
-
-const Videomode& find_dmt(uint32_t width, uint32_t height, uint32_t vrefresh, bool ilace);
-const Videomode& find_cea(uint32_t width, uint32_t height, uint32_t refresh, bool ilace);
-
-}
diff --git a/libkms++/modedb_cea.cpp b/libkms++/modedb_cea.cpp
deleted file mode 100644
index a1f4ab9..0000000
--- a/libkms++/modedb_cea.cpp
+++ /dev/null
@@ -1,401 +0,0 @@
-/* From Linux kernel: drm_edid.c */
-/*
- * Copyright (c) 2006 Luc Verhaegen (quirks list)
- * Copyright (c) 2007-2008 Intel Corporation
- * Jesse Barnes <jesse.barnes@intel.com>
- * Copyright 2010 Red Hat, Inc.
- *
- * DDC probing routines (drm_ddc_read & drm_do_probe_ddc_edid) originally from
- * FB layer.
- * Copyright (C) 2006 Dennis Munsie <dmunsie@cecropia.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include "modedb.h"
-
-#include <xf86drm.h>
-
-namespace kms
-{
-
-#define DIV_ROUND(n, d) (((n) + (d) / 2) / (d))
-
-#define DRM_MODE(nm, c, hd, hss, hse, ht, hsk, vd, vss, vse, vt, vs, f) \
- .name = nm, .clock = (c), \
- .hdisplay = (hd), .hsync_start = (hss), .hsync_end = (hse), .htotal = (ht), .hskew = (hsk), \
- .vdisplay = (vd), .vsync_start = (vss), .vsync_end = (vse), .vtotal = (vt), .vscan = (vs), \
- .vrefresh = DIV_ROUND(c * 1000, ht * vt), .flags = (f), .type = 0
-
-/*
- * Probably taken from CEA-861 spec.
- * This table is converted from xorg's hw/xfree86/modes/xf86EdidModes.c.
- */
-const Videomode cea_modes[] = {
- /* 1 - 640x480@60Hz */
- { DRM_MODE("640x480", 25175, 640, 656,
- 752, 800, 0, 480, 490, 492, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 2 - 720x480@60Hz */
- { DRM_MODE("720x480", 27000, 720, 736,
- 798, 858, 0, 480, 489, 495, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 3 - 720x480@60Hz */
- { DRM_MODE("720x480", 27000, 720, 736,
- 798, 858, 0, 480, 489, 495, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 4 - 1280x720@60Hz */
- { DRM_MODE("1280x720", 74250, 1280, 1390,
- 1430, 1650, 0, 720, 725, 730, 750, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 5 - 1920x1080i@60Hz */
- { DRM_MODE("1920x1080i", 74250, 1920, 2008,
- 2052, 2200, 0, 1080, 1084, 1094, 1125, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
- DRM_MODE_FLAG_INTERLACE),
- },
- /* 6 - 720(1440)x480i@60Hz */
- { DRM_MODE("720x480i", 13500, 720, 739,
- 801, 858, 0, 480, 488, 494, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK),
- },
- /* 7 - 720(1440)x480i@60Hz */
- { DRM_MODE("720x480i", 13500, 720, 739,
- 801, 858, 0, 480, 488, 494, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK),
- },
- /* 8 - 720(1440)x240@60Hz */
- { DRM_MODE("720x240", 13500, 720, 739,
- 801, 858, 0, 240, 244, 247, 262, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_DBLCLK),
- },
- /* 9 - 720(1440)x240@60Hz */
- { DRM_MODE("720x240", 13500, 720, 739,
- 801, 858, 0, 240, 244, 247, 262, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_DBLCLK),
- },
- /* 10 - 2880x480i@60Hz */
- { DRM_MODE("2880x480i", 54000, 2880, 2956,
- 3204, 3432, 0, 480, 488, 494, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE),
- },
- /* 11 - 2880x480i@60Hz */
- { DRM_MODE("2880x480i", 54000, 2880, 2956,
- 3204, 3432, 0, 480, 488, 494, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE),
- },
- /* 12 - 2880x240@60Hz */
- { DRM_MODE("2880x240", 54000, 2880, 2956,
- 3204, 3432, 0, 240, 244, 247, 262, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 13 - 2880x240@60Hz */
- { DRM_MODE("2880x240", 54000, 2880, 2956,
- 3204, 3432, 0, 240, 244, 247, 262, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 14 - 1440x480@60Hz */
- { DRM_MODE("1440x480", 54000, 1440, 1472,
- 1596, 1716, 0, 480, 489, 495, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 15 - 1440x480@60Hz */
- { DRM_MODE("1440x480", 54000, 1440, 1472,
- 1596, 1716, 0, 480, 489, 495, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 16 - 1920x1080@60Hz */
- { DRM_MODE("1920x1080", 148500, 1920, 2008,
- 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 17 - 720x576@50Hz */
- { DRM_MODE("720x576", 27000, 720, 732,
- 796, 864, 0, 576, 581, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 18 - 720x576@50Hz */
- { DRM_MODE("720x576", 27000, 720, 732,
- 796, 864, 0, 576, 581, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 19 - 1280x720@50Hz */
- { DRM_MODE("1280x720", 74250, 1280, 1720,
- 1760, 1980, 0, 720, 725, 730, 750, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 20 - 1920x1080i@50Hz */
- { DRM_MODE("1920x1080i", 74250, 1920, 2448,
- 2492, 2640, 0, 1080, 1084, 1094, 1125, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
- DRM_MODE_FLAG_INTERLACE),
- },
- /* 21 - 720(1440)x576i@50Hz */
- { DRM_MODE("720x576i", 13500, 720, 732,
- 795, 864, 0, 576, 580, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK),
- },
- /* 22 - 720(1440)x576i@50Hz */
- { DRM_MODE("720x576i", 13500, 720, 732,
- 795, 864, 0, 576, 580, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK),
- },
- /* 23 - 720(1440)x288@50Hz */
- { DRM_MODE("720x288", 13500, 720, 732,
- 795, 864, 0, 288, 290, 293, 312, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_DBLCLK),
- },
- /* 24 - 720(1440)x288@50Hz */
- { DRM_MODE("720x288", 13500, 720, 732,
- 795, 864, 0, 288, 290, 293, 312, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_DBLCLK),
- },
- /* 25 - 2880x576i@50Hz */
- { DRM_MODE("2880x576i", 54000, 2880, 2928,
- 3180, 3456, 0, 576, 580, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE),
- },
- /* 26 - 2880x576i@50Hz */
- { DRM_MODE("2880x576i", 54000, 2880, 2928,
- 3180, 3456, 0, 576, 580, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE),
- },
- /* 27 - 2880x288@50Hz */
- { DRM_MODE("2880x288", 54000, 2880, 2928,
- 3180, 3456, 0, 288, 290, 293, 312, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 28 - 2880x288@50Hz */
- { DRM_MODE("2880x288", 54000, 2880, 2928,
- 3180, 3456, 0, 288, 290, 293, 312, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 29 - 1440x576@50Hz */
- { DRM_MODE("1440x576", 54000, 1440, 1464,
- 1592, 1728, 0, 576, 581, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 30 - 1440x576@50Hz */
- { DRM_MODE("1440x576", 54000, 1440, 1464,
- 1592, 1728, 0, 576, 581, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 31 - 1920x1080@50Hz */
- { DRM_MODE("1920x1080", 148500, 1920, 2448,
- 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 32 - 1920x1080@24Hz */
- { DRM_MODE("1920x1080", 74250, 1920, 2558,
- 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 33 - 1920x1080@25Hz */
- { DRM_MODE("1920x1080", 74250, 1920, 2448,
- 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 34 - 1920x1080@30Hz */
- { DRM_MODE("1920x1080", 74250, 1920, 2008,
- 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 35 - 2880x480@60Hz */
- { DRM_MODE("2880x480", 108000, 2880, 2944,
- 3192, 3432, 0, 480, 489, 495, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 36 - 2880x480@60Hz */
- { DRM_MODE("2880x480", 108000, 2880, 2944,
- 3192, 3432, 0, 480, 489, 495, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 37 - 2880x576@50Hz */
- { DRM_MODE("2880x576", 108000, 2880, 2928,
- 3184, 3456, 0, 576, 581, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 38 - 2880x576@50Hz */
- { DRM_MODE("2880x576", 108000, 2880, 2928,
- 3184, 3456, 0, 576, 581, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 39 - 1920x1080i@50Hz */
- { DRM_MODE("1920x1080i", 72000, 1920, 1952,
- 2120, 2304, 0, 1080, 1126, 1136, 1250, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE),
- },
- /* 40 - 1920x1080i@100Hz */
- { DRM_MODE("1920x1080i", 148500, 1920, 2448,
- 2492, 2640, 0, 1080, 1084, 1094, 1125, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
- DRM_MODE_FLAG_INTERLACE),
- },
- /* 41 - 1280x720@100Hz */
- { DRM_MODE("1280x720", 148500, 1280, 1720,
- 1760, 1980, 0, 720, 725, 730, 750, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 42 - 720x576@100Hz */
- { DRM_MODE("720x576", 54000, 720, 732,
- 796, 864, 0, 576, 581, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 43 - 720x576@100Hz */
- { DRM_MODE("720x576", 54000, 720, 732,
- 796, 864, 0, 576, 581, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 44 - 720(1440)x576i@100Hz */
- { DRM_MODE("720x576i", 27000, 720, 732,
- 795, 864, 0, 576, 580, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK),
- },
- /* 45 - 720(1440)x576i@100Hz */
- { DRM_MODE("720x576i", 27000, 720, 732,
- 795, 864, 0, 576, 580, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK),
- },
- /* 46 - 1920x1080i@120Hz */
- { DRM_MODE("1920x1080i", 148500, 1920, 2008,
- 2052, 2200, 0, 1080, 1084, 1094, 1125, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
- DRM_MODE_FLAG_INTERLACE),
- },
- /* 47 - 1280x720@120Hz */
- { DRM_MODE("1280x720", 148500, 1280, 1390,
- 1430, 1650, 0, 720, 725, 730, 750, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 48 - 720x480@120Hz */
- { DRM_MODE("720x480", 54000, 720, 736,
- 798, 858, 0, 480, 489, 495, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 49 - 720x480@120Hz */
- { DRM_MODE("720x480", 54000, 720, 736,
- 798, 858, 0, 480, 489, 495, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 50 - 720(1440)x480i@120Hz */
- { DRM_MODE("720x480i", 27000, 720, 739,
- 801, 858, 0, 480, 488, 494, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK),
- },
- /* 51 - 720(1440)x480i@120Hz */
- { DRM_MODE("720x480i", 27000, 720, 739,
- 801, 858, 0, 480, 488, 494, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK),
- },
- /* 52 - 720x576@200Hz */
- { DRM_MODE("720x576", 108000, 720, 732,
- 796, 864, 0, 576, 581, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 53 - 720x576@200Hz */
- { DRM_MODE("720x576", 108000, 720, 732,
- 796, 864, 0, 576, 581, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 54 - 720(1440)x576i@200Hz */
- { DRM_MODE("720x576i", 54000, 720, 732,
- 795, 864, 0, 576, 580, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK),
- },
- /* 55 - 720(1440)x576i@200Hz */
- { DRM_MODE("720x576i", 54000, 720, 732,
- 795, 864, 0, 576, 580, 586, 625, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK),
- },
- /* 56 - 720x480@240Hz */
- { DRM_MODE("720x480", 108000, 720, 736,
- 798, 858, 0, 480, 489, 495, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 57 - 720x480@240Hz */
- { DRM_MODE("720x480", 108000, 720, 736,
- 798, 858, 0, 480, 489, 495, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
- },
- /* 58 - 720(1440)x480i@240 */
- { DRM_MODE("720x480i", 54000, 720, 739,
- 801, 858, 0, 480, 488, 494, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK),
- },
- /* 59 - 720(1440)x480i@240 */
- { DRM_MODE("720x480i", 54000, 720, 739,
- 801, 858, 0, 480, 488, 494, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
- DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK),
- },
- /* 60 - 1280x720@24Hz */
- { DRM_MODE("1280x720", 59400, 1280, 3040,
- 3080, 3300, 0, 720, 725, 730, 750, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 61 - 1280x720@25Hz */
- { DRM_MODE("1280x720", 74250, 1280, 3700,
- 3740, 3960, 0, 720, 725, 730, 750, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 62 - 1280x720@30Hz */
- { DRM_MODE("1280x720", 74250, 1280, 3040,
- 3080, 3300, 0, 720, 725, 730, 750, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 63 - 1920x1080@120Hz */
- { DRM_MODE("1920x1080", 297000, 1920, 2008,
- 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* 64 - 1920x1080@100Hz */
- { DRM_MODE("1920x1080", 297000, 1920, 2448,
- 2492, 2640, 0, 1080, 1084, 1094, 1125, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
- },
- /* TERMINATOR */
- { },
-};
-
-}
diff --git a/libkms++/modedb_dmt.cpp b/libkms++/modedb_dmt.cpp
deleted file mode 100644
index 6c74c5e..0000000
--- a/libkms++/modedb_dmt.cpp
+++ /dev/null
@@ -1,410 +0,0 @@
-/* From Linux kernel: drm_edid.c */
-/*
- * Copyright (c) 2006 Luc Verhaegen (quirks list)
- * Copyright (c) 2007-2008 Intel Corporation
- * Jesse Barnes <jesse.barnes@intel.com>
- * Copyright 2010 Red Hat, Inc.
- *
- * DDC probing routines (drm_ddc_read & drm_do_probe_ddc_edid) originally from
- * FB layer.
- * Copyright (C) 2006 Dennis Munsie <dmunsie@cecropia.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include "modedb.h"
-
-#include <xf86drm.h>
-
-namespace kms
-{
-
-#define DIV_ROUND(n, d) (((n) + (d) / 2) / (d))
-
-#define DRM_MODE(nm, c, hd, hss, hse, ht, hsk, vd, vss, vse, vt, vs, f) \
- .name = nm, .clock = (c), \
- .hdisplay = (hd), .hsync_start = (hss), .hsync_end = (hse), .htotal = (ht), .hskew = (hsk), \
- .vdisplay = (vd), .vsync_start = (vss), .vsync_end = (vse), .vtotal = (vt), .vscan = (vs), \
- .vrefresh = DIV_ROUND(c * 1000, ht * vt), .flags = (f), .type = 0
-
-
-/*
- * Autogenerated from the DMT spec.
- * This table is copied from xfree86/modes/xf86EdidModes.c.
- */
-const Videomode dmt_modes[] = {
- /* 0x01 - 640x350@85Hz */
- { DRM_MODE("640x350", 31500, 640, 672,
- 736, 832, 0, 350, 382, 385, 445, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x02 - 640x400@85Hz */
- { DRM_MODE("640x400", 31500, 640, 672,
- 736, 832, 0, 400, 401, 404, 445, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x03 - 720x400@85Hz */
- { DRM_MODE("720x400", 35500, 720, 756,
- 828, 936, 0, 400, 401, 404, 446, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x04 - 640x480@60Hz */
- { DRM_MODE("640x480", 25175, 640, 656,
- 752, 800, 0, 480, 490, 492, 525, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x05 - 640x480@72Hz */
- { DRM_MODE("640x480", 31500, 640, 664,
- 704, 832, 0, 480, 489, 492, 520, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x06 - 640x480@75Hz */
- { DRM_MODE("640x480", 31500, 640, 656,
- 720, 840, 0, 480, 481, 484, 500, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x07 - 640x480@85Hz */
- { DRM_MODE("640x480", 36000, 640, 696,
- 752, 832, 0, 480, 481, 484, 509, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x08 - 800x600@56Hz */
- { DRM_MODE("800x600", 36000, 800, 824,
- 896, 1024, 0, 600, 601, 603, 625, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x09 - 800x600@60Hz */
- { DRM_MODE("800x600", 40000, 800, 840,
- 968, 1056, 0, 600, 601, 605, 628, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x0a - 800x600@72Hz */
- { DRM_MODE("800x600", 50000, 800, 856,
- 976, 1040, 0, 600, 637, 643, 666, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x0b - 800x600@75Hz */
- { DRM_MODE("800x600", 49500, 800, 816,
- 896, 1056, 0, 600, 601, 604, 625, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x0c - 800x600@85Hz */
- { DRM_MODE("800x600", 56250, 800, 832,
- 896, 1048, 0, 600, 601, 604, 631, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x0d - 800x600@120Hz RB */
- { DRM_MODE("800x600", 73250, 800, 848,
- 880, 960, 0, 600, 603, 607, 636, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x0e - 848x480@60Hz */
- { DRM_MODE("848x480", 33750, 848, 864,
- 976, 1088, 0, 480, 486, 494, 517, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x0f - 1024x768@43Hz, interlace */
- { DRM_MODE("1024x768i", 44900, 1024, 1032,
- 1208, 1264, 0, 768, 768, 772, 817, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
- DRM_MODE_FLAG_INTERLACE) },
- /* 0x10 - 1024x768@60Hz */
- { DRM_MODE("1024x768", 65000, 1024, 1048,
- 1184, 1344, 0, 768, 771, 777, 806, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x11 - 1024x768@70Hz */
- { DRM_MODE("1024x768", 75000, 1024, 1048,
- 1184, 1328, 0, 768, 771, 777, 806, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x12 - 1024x768@75Hz */
- { DRM_MODE("1024x768", 78750, 1024, 1040,
- 1136, 1312, 0, 768, 769, 772, 800, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x13 - 1024x768@85Hz */
- { DRM_MODE("1024x768", 94500, 1024, 1072,
- 1168, 1376, 0, 768, 769, 772, 808, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x14 - 1024x768@120Hz RB */
- { DRM_MODE("1024x768", 115500, 1024, 1072,
- 1104, 1184, 0, 768, 771, 775, 813, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x15 - 1152x864@75Hz */
- { DRM_MODE("1152x864", 108000, 1152, 1216,
- 1344, 1600, 0, 864, 865, 868, 900, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x55 - 1280x720@60Hz */
- { DRM_MODE("1280x720", 74250, 1280, 1390,
- 1430, 1650, 0, 720, 725, 730, 750, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x16 - 1280x768@60Hz RB */
- { DRM_MODE("1280x768", 68250, 1280, 1328,
- 1360, 1440, 0, 768, 771, 778, 790, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x17 - 1280x768@60Hz */
- { DRM_MODE("1280x768", 79500, 1280, 1344,
- 1472, 1664, 0, 768, 771, 778, 798, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x18 - 1280x768@75Hz */
- { DRM_MODE("1280x768", 102250, 1280, 1360,
- 1488, 1696, 0, 768, 771, 778, 805, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x19 - 1280x768@85Hz */
- { DRM_MODE("1280x768", 117500, 1280, 1360,
- 1496, 1712, 0, 768, 771, 778, 809, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x1a - 1280x768@120Hz RB */
- { DRM_MODE("1280x768", 140250, 1280, 1328,
- 1360, 1440, 0, 768, 771, 778, 813, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x1b - 1280x800@60Hz RB */
- { DRM_MODE("1280x800", 71000, 1280, 1328,
- 1360, 1440, 0, 800, 803, 809, 823, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x1c - 1280x800@60Hz */
- { DRM_MODE("1280x800", 83500, 1280, 1352,
- 1480, 1680, 0, 800, 803, 809, 831, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x1d - 1280x800@75Hz */
- { DRM_MODE("1280x800", 106500, 1280, 1360,
- 1488, 1696, 0, 800, 803, 809, 838, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x1e - 1280x800@85Hz */
- { DRM_MODE("1280x800", 122500, 1280, 1360,
- 1496, 1712, 0, 800, 803, 809, 843, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x1f - 1280x800@120Hz RB */
- { DRM_MODE("1280x800", 146250, 1280, 1328,
- 1360, 1440, 0, 800, 803, 809, 847, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x20 - 1280x960@60Hz */
- { DRM_MODE("1280x960", 108000, 1280, 1376,
- 1488, 1800, 0, 960, 961, 964, 1000, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x21 - 1280x960@85Hz */
- { DRM_MODE("1280x960", 148500, 1280, 1344,
- 1504, 1728, 0, 960, 961, 964, 1011, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x22 - 1280x960@120Hz RB */
- { DRM_MODE("1280x960", 175500, 1280, 1328,
- 1360, 1440, 0, 960, 963, 967, 1017, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x23 - 1280x1024@60Hz */
- { DRM_MODE("1280x1024", 108000, 1280, 1328,
- 1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x24 - 1280x1024@75Hz */
- { DRM_MODE("1280x1024", 135000, 1280, 1296,
- 1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x25 - 1280x1024@85Hz */
- { DRM_MODE("1280x1024", 157500, 1280, 1344,
- 1504, 1728, 0, 1024, 1025, 1028, 1072, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x26 - 1280x1024@120Hz RB */
- { DRM_MODE("1280x1024", 187250, 1280, 1328,
- 1360, 1440, 0, 1024, 1027, 1034, 1084, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x27 - 1360x768@60Hz */
- { DRM_MODE("1360x768", 85500, 1360, 1424,
- 1536, 1792, 0, 768, 771, 777, 795, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x28 - 1360x768@120Hz RB */
- { DRM_MODE("1360x768", 148250, 1360, 1408,
- 1440, 1520, 0, 768, 771, 776, 813, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x51 - 1366x768@60Hz */
- { DRM_MODE("1366x768", 85500, 1366, 1436,
- 1579, 1792, 0, 768, 771, 774, 798, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x56 - 1366x768@60Hz */
- { DRM_MODE("1366x768", 72000, 1366, 1380,
- 1436, 1500, 0, 768, 769, 772, 800, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x29 - 1400x1050@60Hz RB */
- { DRM_MODE("1400x1050", 101000, 1400, 1448,
- 1480, 1560, 0, 1050, 1053, 1057, 1080, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x2a - 1400x1050@60Hz */
- { DRM_MODE("1400x1050", 121750, 1400, 1488,
- 1632, 1864, 0, 1050, 1053, 1057, 1089, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x2b - 1400x1050@75Hz */
- { DRM_MODE("1400x1050", 156000, 1400, 1504,
- 1648, 1896, 0, 1050, 1053, 1057, 1099, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x2c - 1400x1050@85Hz */
- { DRM_MODE("1400x1050", 179500, 1400, 1504,
- 1656, 1912, 0, 1050, 1053, 1057, 1105, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x2d - 1400x1050@120Hz RB */
- { DRM_MODE("1400x1050", 208000, 1400, 1448,
- 1480, 1560, 0, 1050, 1053, 1057, 1112, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x2e - 1440x900@60Hz RB */
- { DRM_MODE("1440x900", 88750, 1440, 1488,
- 1520, 1600, 0, 900, 903, 909, 926, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x2f - 1440x900@60Hz */
- { DRM_MODE("1440x900", 106500, 1440, 1520,
- 1672, 1904, 0, 900, 903, 909, 934, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x30 - 1440x900@75Hz */
- { DRM_MODE("1440x900", 136750, 1440, 1536,
- 1688, 1936, 0, 900, 903, 909, 942, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x31 - 1440x900@85Hz */
- { DRM_MODE("1440x900", 157000, 1440, 1544,
- 1696, 1952, 0, 900, 903, 909, 948, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x32 - 1440x900@120Hz RB */
- { DRM_MODE("1440x900", 182750, 1440, 1488,
- 1520, 1600, 0, 900, 903, 909, 953, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x53 - 1600x900@60Hz */
- { DRM_MODE("1600x900", 108000, 1600, 1624,
- 1704, 1800, 0, 900, 901, 904, 1000, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x33 - 1600x1200@60Hz */
- { DRM_MODE("1600x1200", 162000, 1600, 1664,
- 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x34 - 1600x1200@65Hz */
- { DRM_MODE("1600x1200", 175500, 1600, 1664,
- 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x35 - 1600x1200@70Hz */
- { DRM_MODE("1600x1200", 189000, 1600, 1664,
- 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x36 - 1600x1200@75Hz */
- { DRM_MODE("1600x1200", 202500, 1600, 1664,
- 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x37 - 1600x1200@85Hz */
- { DRM_MODE("1600x1200", 229500, 1600, 1664,
- 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x38 - 1600x1200@120Hz RB */
- { DRM_MODE("1600x1200", 268250, 1600, 1648,
- 1680, 1760, 0, 1200, 1203, 1207, 1271, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x39 - 1680x1050@60Hz RB */
- { DRM_MODE("1680x1050", 119000, 1680, 1728,
- 1760, 1840, 0, 1050, 1053, 1059, 1080, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x3a - 1680x1050@60Hz */
- { DRM_MODE("1680x1050", 146250, 1680, 1784,
- 1960, 2240, 0, 1050, 1053, 1059, 1089, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x3b - 1680x1050@75Hz */
- { DRM_MODE("1680x1050", 187000, 1680, 1800,
- 1976, 2272, 0, 1050, 1053, 1059, 1099, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x3c - 1680x1050@85Hz */
- { DRM_MODE("1680x1050", 214750, 1680, 1808,
- 1984, 2288, 0, 1050, 1053, 1059, 1105, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x3d - 1680x1050@120Hz RB */
- { DRM_MODE("1680x1050", 245500, 1680, 1728,
- 1760, 1840, 0, 1050, 1053, 1059, 1112, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x3e - 1792x1344@60Hz */
- { DRM_MODE("1792x1344", 204750, 1792, 1920,
- 2120, 2448, 0, 1344, 1345, 1348, 1394, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x3f - 1792x1344@75Hz */
- { DRM_MODE("1792x1344", 261000, 1792, 1888,
- 2104, 2456, 0, 1344, 1345, 1348, 1417, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x40 - 1792x1344@120Hz RB */
- { DRM_MODE("1792x1344", 333250, 1792, 1840,
- 1872, 1952, 0, 1344, 1347, 1351, 1423, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x41 - 1856x1392@60Hz */
- { DRM_MODE("1856x1392", 218250, 1856, 1952,
- 2176, 2528, 0, 1392, 1393, 1396, 1439, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x42 - 1856x1392@75Hz */
- { DRM_MODE("1856x1392", 288000, 1856, 1984,
- 2208, 2560, 0, 1392, 1393, 1396, 1500, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x43 - 1856x1392@120Hz RB */
- { DRM_MODE("1856x1392", 356500, 1856, 1904,
- 1936, 2016, 0, 1392, 1395, 1399, 1474, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x52 - 1920x1080@60Hz */
- { DRM_MODE("1920x1080", 148500, 1920, 2008,
- 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x44 - 1920x1200@60Hz RB */
- { DRM_MODE("1920x1200", 154000, 1920, 1968,
- 2000, 2080, 0, 1200, 1203, 1209, 1235, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x45 - 1920x1200@60Hz */
- { DRM_MODE("1920x1200", 193250, 1920, 2056,
- 2256, 2592, 0, 1200, 1203, 1209, 1245, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x46 - 1920x1200@75Hz */
- { DRM_MODE("1920x1200", 245250, 1920, 2056,
- 2264, 2608, 0, 1200, 1203, 1209, 1255, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x47 - 1920x1200@85Hz */
- { DRM_MODE("1920x1200", 281250, 1920, 2064,
- 2272, 2624, 0, 1200, 1203, 1209, 1262, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x48 - 1920x1200@120Hz RB */
- { DRM_MODE("1920x1200", 317000, 1920, 1968,
- 2000, 2080, 0, 1200, 1203, 1209, 1271, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x49 - 1920x1440@60Hz */
- { DRM_MODE("1920x1440", 234000, 1920, 2048,
- 2256, 2600, 0, 1440, 1441, 1444, 1500, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x4a - 1920x1440@75Hz */
- { DRM_MODE("1920x1440", 297000, 1920, 2064,
- 2288, 2640, 0, 1440, 1441, 1444, 1500, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x4b - 1920x1440@120Hz RB */
- { DRM_MODE("1920x1440", 380500, 1920, 1968,
- 2000, 2080, 0, 1440, 1443, 1447, 1525, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x54 - 2048x1152@60Hz */
- { DRM_MODE("2048x1152", 162000, 2048, 2074,
- 2154, 2250, 0, 1152, 1153, 1156, 1200, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x4c - 2560x1600@60Hz RB */
- { DRM_MODE("2560x1600", 268500, 2560, 2608,
- 2640, 2720, 0, 1600, 1603, 1609, 1646, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x4d - 2560x1600@60Hz */
- { DRM_MODE("2560x1600", 348500, 2560, 2752,
- 3032, 3504, 0, 1600, 1603, 1609, 1658, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x4e - 2560x1600@75Hz */
- { DRM_MODE("2560x1600", 443250, 2560, 2768,
- 3048, 3536, 0, 1600, 1603, 1609, 1672, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x4f - 2560x1600@85Hz */
- { DRM_MODE("2560x1600", 505250, 2560, 2768,
- 3048, 3536, 0, 1600, 1603, 1609, 1682, 0,
- DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
- /* 0x50 - 2560x1600@120Hz RB */
- { DRM_MODE("2560x1600", 552750, 2560, 2608,
- 2640, 2720, 0, 1600, 1603, 1609, 1694, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x57 - 4096x2160@60Hz RB */
- { DRM_MODE("4096x2160", 556744, 4096, 4104,
- 4136, 4176, 0, 2160, 2208, 2216, 2222, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* 0x58 - 4096x2160@59.94Hz RB */
- { DRM_MODE("4096x2160", 556188, 4096, 4104,
- 4136, 4176, 0, 2160, 2208, 2216, 2222, 0,
- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
- /* TERMINATOR */
- { },
-};
-
-}
diff --git a/libkms++/pagefliphandler.h b/libkms++/pagefliphandler.h
deleted file mode 100644
index 79cda0d..0000000
--- a/libkms++/pagefliphandler.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-
-namespace kms {
-class PageFlipHandlerBase
-{
-public:
- PageFlipHandlerBase() { }
- virtual ~PageFlipHandlerBase() { }
- virtual void handle_page_flip(uint32_t frame, double time) = 0;
-};
-}
diff --git a/libkms++/pipeline.h b/libkms++/pipeline.h
deleted file mode 100644
index ef04ec1..0000000
--- a/libkms++/pipeline.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-
-#include "decls.h"
-
-namespace kms
-{
-struct Pipeline {
- Crtc* crtc;
- Connector* connector;
-};
-}
diff --git a/libkms++/pixelformats.cpp b/libkms++/pixelformats.cpp
deleted file mode 100644
index 594bd6d..0000000
--- a/libkms++/pixelformats.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <map>
-
-#include "pixelformats.h"
-
-using namespace std;
-
-namespace kms
-{
-static const map<PixelFormat, PixelFormatInfo> format_info_array = {
- /* YUV packed */
- { PixelFormat::UYVY, { 1, { { 16, 2, 1 } }, } },
- { PixelFormat::YUYV, { 1, { { 16, 2, 1 } }, } },
- { PixelFormat::YVYU, { 1, { { 16, 2, 1 } }, } },
- { PixelFormat::VYUY, { 1, { { 16, 2, 1 } }, } },
- /* YUV semi-planar */
- { PixelFormat::NV12, { 2, { { 8, 1, 1, }, { 8, 2, 2 } }, } },
- { PixelFormat::NV21, { 2, { { 8, 1, 1, }, { 8, 2, 2 } }, } },
- /* RGB16 */
- { PixelFormat::RGB565, { 1, { { 16, 1, 1 } }, } },
- /* RGB32 */
- { PixelFormat::XRGB8888, { 1, { { 32, 1, 1 } }, } },
- { PixelFormat::XBGR8888, { 1, { { 32, 1, 1 } }, } },
- { PixelFormat::ARGB8888, { 1, { { 32, 1, 1 } }, } },
- { PixelFormat::ABGR8888, { 1, { { 32, 1, 1 } }, } },
-};
-
-const struct PixelFormatInfo& get_pixel_format_info(PixelFormat format)
-{
- return format_info_array.at(format);
-}
-
-}
diff --git a/libkms++/pixelformats.h b/libkms++/pixelformats.h
deleted file mode 100644
index 813eaef..0000000
--- a/libkms++/pixelformats.h
+++ /dev/null
@@ -1,63 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include <string>
-
-namespace kms
-{
-constexpr uint32_t MakeFourCC(const char *fourcc)
-{
- return fourcc[0] | (fourcc[1] << 8) | (fourcc[2] << 16) | (fourcc[3] << 24);
-}
-
-enum class PixelFormat : uint32_t
-{
- Undefined = 0,
-
- NV12 = MakeFourCC("NV12"),
- NV21 = MakeFourCC("NV21"),
-
- UYVY = MakeFourCC("UYVY"),
- YUYV = MakeFourCC("YUYV"),
- YVYU = MakeFourCC("YVYU"),
- VYUY = MakeFourCC("VYUY"),
-
- XRGB8888 = MakeFourCC("XR24"),
- XBGR8888 = MakeFourCC("XB24"),
- ARGB8888 = MakeFourCC("AR24"),
- ABGR8888 = MakeFourCC("AB24"),
-
- RGB565 = MakeFourCC("RG16"),
-};
-
-static inline PixelFormat FourCCToPixelFormat(const std::string& fourcc)
-{
- return (PixelFormat)MakeFourCC(fourcc.c_str());
-}
-
-static inline std::string PixelFormatToFourCC(PixelFormat f)
-{
- char buf[5] = { (char)(((int)f >> 0) & 0xff),
- (char)(((int)f >> 8) & 0xff),
- (char)(((int)f >> 16) & 0xff),
- (char)(((int)f >> 24) & 0xff),
- 0 };
- return std::string(buf);
-}
-
-struct PixelFormatPlaneInfo
-{
- uint8_t bitspp;
- uint8_t xsub;
- uint8_t ysub;
-};
-
-struct PixelFormatInfo
-{
- uint8_t num_planes;
- struct PixelFormatPlaneInfo planes[4];
-};
-
-const struct PixelFormatInfo& get_pixel_format_info(PixelFormat format);
-
-}
diff --git a/libkms++/plane.cpp b/libkms++/plane.cpp
deleted file mode 100644
index 46cd3e6..0000000
--- a/libkms++/plane.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-#include <stdio.h>
-#include <iostream>
-#include <unistd.h>
-#include <fcntl.h>
-#include <cassert>
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "kms++.h"
-
-using namespace std;
-
-namespace kms
-{
-
-struct PlanePriv
-{
- drmModePlanePtr drm_plane;
-};
-
-Plane::Plane(Card &card, uint32_t id, uint32_t idx)
- :DrmPropObject(card, id, DRM_MODE_OBJECT_PLANE, idx)
-{
- m_priv = new PlanePriv();
- m_priv->drm_plane = drmModeGetPlane(this->card().fd(), this->id());
- assert(m_priv->drm_plane);
-}
-
-Plane::~Plane()
-{
- drmModeFreePlane(m_priv->drm_plane);
- delete m_priv;
-}
-
-bool Plane::supports_crtc(Crtc* crtc) const
-{
- return m_priv->drm_plane->possible_crtcs & (1 << crtc->idx());
-}
-
-bool Plane::supports_format(PixelFormat fmt) const
-{
- auto p = m_priv->drm_plane;
-
- for (unsigned i = 0; i < p->count_formats; ++i)
- if ((uint32_t)fmt == p->formats[i])
- return true;
-
- return false;
-}
-
-PlaneType Plane::plane_type() const
-{
- if (card().has_has_universal_planes())
- return (PlaneType)get_prop_value("type");
- else
- return PlaneType::Overlay;
-}
-
-vector<PixelFormat> Plane::get_formats() const
-{
- auto p = m_priv->drm_plane;
- vector<PixelFormat> r;
-
- for (unsigned i = 0; i < p->count_formats; ++i)
- r.push_back((PixelFormat) p->formats[i]);
-
- return r;
-}
-
-uint32_t Plane::crtc_id() const
-{
- return m_priv->drm_plane->crtc_id;
-}
-
-uint32_t Plane::fb_id() const
-{
- return m_priv->drm_plane->fb_id;
-}
-
-uint32_t Plane::crtc_x() const
-{
- return m_priv->drm_plane->crtc_x;
-}
-
-uint32_t Plane::crtc_y() const
-{
- return m_priv->drm_plane->crtc_y;
-}
-
-uint32_t Plane::x() const
-{
- return m_priv->drm_plane->x;
-}
-
-uint32_t Plane::y() const
-{
- return m_priv->drm_plane->y;
-}
-
-uint32_t Plane::gamma_size() const
-{
- return m_priv->drm_plane->gamma_size;
-}
-
-}
diff --git a/libkms++/plane.h b/libkms++/plane.h
deleted file mode 100644
index d50e539..0000000
--- a/libkms++/plane.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#pragma once
-
-#include "drmpropobject.h"
-
-namespace kms
-{
-
-enum class PlaneType
-{
- Overlay = 0,
- Primary = 1,
- Cursor = 2,
-};
-
-struct PlanePriv;
-
-class Plane : public DrmPropObject
-{
- friend class Card;
-public:
- bool supports_crtc(Crtc* crtc) const;
- bool supports_format(PixelFormat fmt) const;
-
- PlaneType plane_type() const;
-
- std::vector<PixelFormat> get_formats() const;
- uint32_t crtc_id() const;
- uint32_t fb_id() const;
-
- uint32_t crtc_x() const;
- uint32_t crtc_y() const;
- uint32_t x() const;
- uint32_t y() const;
- uint32_t gamma_size() const;
-private:
- Plane(Card& card, uint32_t id, uint32_t idx);
- ~Plane();
-
- PlanePriv* m_priv;
-};
-}
diff --git a/libkms++/property.cpp b/libkms++/property.cpp
deleted file mode 100644
index e4390ba..0000000
--- a/libkms++/property.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "kms++.h"
-
-using namespace std;
-
-namespace kms
-{
-
-struct PropertyPriv
-{
- drmModePropertyPtr drm_prop;
-};
-
-Property::Property(Card& card, uint32_t id)
- : DrmObject(card, id, DRM_MODE_OBJECT_PROPERTY)
-{
- m_priv = new PropertyPriv();
- m_priv->drm_prop = drmModeGetProperty(card.fd(), id);
- m_name = m_priv->drm_prop->name;
-
- PropertyType t;
- drmModePropertyPtr p = m_priv->drm_prop;
- if (drm_property_type_is(p, DRM_MODE_PROP_BITMASK))
- t = PropertyType::Bitmask;
- else if (drm_property_type_is(p, DRM_MODE_PROP_BLOB))
- t = PropertyType::Blob;
- else if (drm_property_type_is(p, DRM_MODE_PROP_ENUM))
- t = PropertyType::Enum;
- else if (drm_property_type_is(p, DRM_MODE_PROP_OBJECT))
- t = PropertyType::Object;
- else if (drm_property_type_is(p, DRM_MODE_PROP_RANGE))
- t = PropertyType::Range;
- else if (drm_property_type_is(p, DRM_MODE_PROP_SIGNED_RANGE))
- t = PropertyType::SignedRange;
- else
- throw invalid_argument("Invalid property type");
-
- m_type = t;
-}
-
-Property::~Property()
-{
- drmModeFreeProperty(m_priv->drm_prop);
- delete m_priv;
-}
-
-const string& Property::name() const
-{
- return m_name;
-}
-
-bool Property::is_immutable() const
-{
- return m_priv->drm_prop->flags & DRM_MODE_PROP_IMMUTABLE;
-}
-
-bool Property::is_pending() const
-{
- return m_priv->drm_prop->flags & DRM_MODE_PROP_PENDING;
-}
-
-vector<uint64_t> Property::get_values() const
-{
- drmModePropertyPtr p = m_priv->drm_prop;
- return vector<uint64_t>(p->values, p->values + p->count_values);
-}
-
-map<uint64_t, string> Property::get_enums() const
-{
- drmModePropertyPtr p = m_priv->drm_prop;
-
- map<uint64_t, string> map;
-
- for (int i = 0; i < p->count_enums; ++i)
- map[p->enums[i].value] = string(p->enums[i].name);
-
- return map;
-}
-
-vector<uint32_t> Property::get_blob_ids() const
-{
- drmModePropertyPtr p = m_priv->drm_prop;
- return vector<uint32_t>(p->blob_ids, p->blob_ids + p->count_blobs);
-}
-}
diff --git a/libkms++/property.h b/libkms++/property.h
deleted file mode 100644
index b9097ff..0000000
--- a/libkms++/property.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#pragma once
-
-#include "drmobject.h"
-#include <map>
-#include <vector>
-
-namespace kms
-{
-
-struct PropertyPriv;
-
-enum class PropertyType
-{
- Range,
- Enum,
- Blob,
- Bitmask,
- Object,
- SignedRange,
-};
-
-class Property : public DrmObject
-{
- friend class Card;
-public:
- const std::string& name() const;
-
- bool is_immutable() const;
- bool is_pending() const;
-
- PropertyType type() const { return m_type; }
- std::map<uint64_t, std::string> get_enums() const;
- std::vector<uint64_t> get_values() const;
- std::vector<uint32_t> get_blob_ids() const;
-private:
- Property(Card& card, uint32_t id);
- ~Property();
-
- PropertyType m_type;
-
- PropertyPriv* m_priv;
- std::string m_name;
-};
-}
diff --git a/libkms++/videomode.cpp b/libkms++/videomode.cpp
deleted file mode 100644
index 5c98c00..0000000
--- a/libkms++/videomode.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "videomode.h"
-#include "helpers.h"
-
-using namespace std;
-
-namespace kms
-{
-
-unique_ptr<Blob> Videomode::to_blob(Card& card) const
-{
- drmModeModeInfo drm_mode = video_mode_to_drm_mode(*this);
-
- return unique_ptr<Blob>(new Blob(card, &drm_mode, sizeof(drm_mode)));
-}
-
-}
diff --git a/libkms++/videomode.h b/libkms++/videomode.h
deleted file mode 100644
index f9abaf9..0000000
--- a/libkms++/videomode.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#pragma once
-
-#include <string>
-#include <cstdint>
-#include <memory>
-
-#include "blob.h"
-
-namespace kms
-{
-
-struct Videomode
-{
- std::string name;
-
- uint32_t clock;
- uint16_t hdisplay, hsync_start, hsync_end, htotal, hskew;
- uint16_t vdisplay, vsync_start, vsync_end, vtotal, vscan;
-
- uint32_t vrefresh;
-
- uint32_t flags; // DRM_MODE_FLAG_*
- uint32_t type; // DRM_MODE_TYPE_*
-
- std::unique_ptr<Blob> to_blob(Card& card) const;
-
- uint16_t hfp() const { return hsync_start - hdisplay; }
- uint16_t hsw() const { return hsync_end - hsync_start; }
- uint16_t hbp() const { return htotal - hsync_end; }
-
- uint16_t vfp() const { return vsync_start - vdisplay; }
- uint16_t vsw() const { return vsync_end - vsync_start; }
- uint16_t vbp() const { return vtotal - vsync_end; }
-};
-
-}