1 #pragma once
3 #include <string>
4 #include <cstdint>
5 #include <memory>
7 #include "blob.h"
9 namespace kms
10 {
12 struct Videomode
13 {
14 std::string name;
16 uint32_t clock;
17 uint16_t hdisplay, hsync_start, hsync_end, htotal, hskew;
18 uint16_t vdisplay, vsync_start, vsync_end, vtotal, vscan;
20 uint32_t vrefresh;
22 uint32_t flags; // DRM_MODE_FLAG_*
23 uint32_t type; // DRM_MODE_TYPE_*
25 std::unique_ptr<Blob> to_blob(Card& card) const;
27 uint16_t hfp() const { return hsync_start - hdisplay; }
28 uint16_t hsw() const { return hsync_end - hsync_start; }
29 uint16_t hbp() const { return htotal - hsync_end; }
31 uint16_t vfp() const { return vsync_start - vdisplay; }
32 uint16_t vsw() const { return vsync_end - vsync_start; }
33 uint16_t vbp() const { return vtotal - vsync_end; }
34 };
36 }