xref: /aosp_15_r20/external/libkmsxx/kms++/src/helpers.cpp (revision f0687c8a10b3e371dbe09214db6664e37c283cca)
1*f0687c8aSRaman Tenneti 
2*f0687c8aSRaman Tenneti #include <kms++/kms++.h>
3*f0687c8aSRaman Tenneti #include "helpers.h"
4*f0687c8aSRaman Tenneti #include <cstring>
5*f0687c8aSRaman Tenneti 
6*f0687c8aSRaman Tenneti #define CPY(field) dst.field = src.field
7*f0687c8aSRaman Tenneti 
8*f0687c8aSRaman Tenneti namespace kms
9*f0687c8aSRaman Tenneti {
drm_mode_to_video_mode(const drmModeModeInfo & drmmode)10*f0687c8aSRaman Tenneti Videomode drm_mode_to_video_mode(const drmModeModeInfo& drmmode)
11*f0687c8aSRaman Tenneti {
12*f0687c8aSRaman Tenneti 	Videomode mode = {};
13*f0687c8aSRaman Tenneti 
14*f0687c8aSRaman Tenneti 	auto& src = drmmode;
15*f0687c8aSRaman Tenneti 	auto& dst = mode;
16*f0687c8aSRaman Tenneti 
17*f0687c8aSRaman Tenneti 	CPY(clock);
18*f0687c8aSRaman Tenneti 
19*f0687c8aSRaman Tenneti 	CPY(hdisplay);
20*f0687c8aSRaman Tenneti 	CPY(hsync_start);
21*f0687c8aSRaman Tenneti 	CPY(hsync_end);
22*f0687c8aSRaman Tenneti 	CPY(htotal);
23*f0687c8aSRaman Tenneti 	CPY(hskew);
24*f0687c8aSRaman Tenneti 
25*f0687c8aSRaman Tenneti 	CPY(vdisplay);
26*f0687c8aSRaman Tenneti 	CPY(vsync_start);
27*f0687c8aSRaman Tenneti 	CPY(vsync_end);
28*f0687c8aSRaman Tenneti 	CPY(vtotal);
29*f0687c8aSRaman Tenneti 	CPY(vscan);
30*f0687c8aSRaman Tenneti 
31*f0687c8aSRaman Tenneti 	CPY(vrefresh);
32*f0687c8aSRaman Tenneti 
33*f0687c8aSRaman Tenneti 	CPY(flags);
34*f0687c8aSRaman Tenneti 	CPY(type);
35*f0687c8aSRaman Tenneti 
36*f0687c8aSRaman Tenneti 	mode.name = drmmode.name;
37*f0687c8aSRaman Tenneti 
38*f0687c8aSRaman Tenneti 	return mode;
39*f0687c8aSRaman Tenneti }
40*f0687c8aSRaman Tenneti 
video_mode_to_drm_mode(const Videomode & mode)41*f0687c8aSRaman Tenneti drmModeModeInfo video_mode_to_drm_mode(const Videomode& mode)
42*f0687c8aSRaman Tenneti {
43*f0687c8aSRaman Tenneti 	drmModeModeInfo drmmode = {};
44*f0687c8aSRaman Tenneti 
45*f0687c8aSRaman Tenneti 	auto& src = mode;
46*f0687c8aSRaman Tenneti 	auto& dst = drmmode;
47*f0687c8aSRaman Tenneti 
48*f0687c8aSRaman Tenneti 	CPY(clock);
49*f0687c8aSRaman Tenneti 
50*f0687c8aSRaman Tenneti 	CPY(hdisplay);
51*f0687c8aSRaman Tenneti 	CPY(hsync_start);
52*f0687c8aSRaman Tenneti 	CPY(hsync_end);
53*f0687c8aSRaman Tenneti 	CPY(htotal);
54*f0687c8aSRaman Tenneti 	CPY(hskew);
55*f0687c8aSRaman Tenneti 
56*f0687c8aSRaman Tenneti 	CPY(vdisplay);
57*f0687c8aSRaman Tenneti 	CPY(vsync_start);
58*f0687c8aSRaman Tenneti 	CPY(vsync_end);
59*f0687c8aSRaman Tenneti 	CPY(vtotal);
60*f0687c8aSRaman Tenneti 	CPY(vscan);
61*f0687c8aSRaman Tenneti 
62*f0687c8aSRaman Tenneti 	CPY(vrefresh);
63*f0687c8aSRaman Tenneti 
64*f0687c8aSRaman Tenneti 	CPY(flags);
65*f0687c8aSRaman Tenneti 	CPY(type);
66*f0687c8aSRaman Tenneti 
67*f0687c8aSRaman Tenneti 	strncpy(drmmode.name, mode.name.c_str(), sizeof(drmmode.name));
68*f0687c8aSRaman Tenneti 	drmmode.name[sizeof(drmmode.name) - 1] = 0;
69*f0687c8aSRaman Tenneti 
70*f0687c8aSRaman Tenneti 	return drmmode;
71*f0687c8aSRaman Tenneti }
72*f0687c8aSRaman Tenneti } // namespace kms
73