The Pedigree Project 0.1
linux-fb-abi.h
1/* Copyright (c) 2026, Pedigree Developers. */
2#ifndef LINUX_FB_ABI_H
3#define LINUX_FB_ABI_H
4
5#include <stdint.h>
6
7enum LinuxFramebufferCommand {
8 LinuxFbGetVariableInfo = 0x4600,
9 LinuxFbPutVariableInfo = 0x4601,
10 LinuxFbGetFixedInfo = 0x4602,
11 LinuxFbGetColorMap = 0x4604,
12 LinuxFbPutColorMap = 0x4605,
13 LinuxFbPanDisplay = 0x4606,
14 LinuxFbBlank = 0x4611,
15};
16
17enum LinuxFramebufferType {
18 LinuxFbPackedPixels = 0,
19};
20
21enum LinuxFramebufferVisual {
22 LinuxFbTrueColor = 2,
23 LinuxFbPseudoColor = 3,
24};
25
26enum LinuxFramebufferActivation {
27 LinuxFbActivateNow = 0,
28 LinuxFbActivateTest = 2,
29 LinuxFbActivateMask = 15,
30};
31
33 uint32_t offset;
34 uint32_t length;
35 uint32_t msbRight;
36};
37
39 char id[16];
40 uintptr_t memoryStart;
41 uint32_t memoryLength;
42 uint32_t type;
43 uint32_t typeAux;
44 uint32_t visual;
45 uint16_t xPanStep;
46 uint16_t yPanStep;
47 uint16_t yWrapStep;
48 uint32_t lineLength;
49 uintptr_t mmioStart;
50 uint32_t mmioLength;
51 uint32_t acceleration;
52 uint16_t capabilities;
53 uint16_t reserved[2];
54};
55
57 uint32_t xResolution;
58 uint32_t yResolution;
59 uint32_t virtualXResolution;
60 uint32_t virtualYResolution;
61 uint32_t xOffset;
62 uint32_t yOffset;
63 uint32_t bitsPerPixel;
64 uint32_t grayscale;
66 LinuxFbBitfield green;
67 LinuxFbBitfield blue;
68 LinuxFbBitfield transparency;
69 uint32_t nonstandard;
70 uint32_t activate;
71 uint32_t heightMillimeters;
72 uint32_t widthMillimeters;
73 uint32_t accelerationFlags;
74 uint32_t pixelClock;
75 uint32_t leftMargin;
76 uint32_t rightMargin;
77 uint32_t upperMargin;
78 uint32_t lowerMargin;
79 uint32_t horizontalSyncLength;
80 uint32_t verticalSyncLength;
81 uint32_t sync;
82 uint32_t mode;
83 uint32_t rotate;
84 uint32_t colorSpace;
85 uint32_t reserved[4];
86};
87
89 uint32_t start;
90 uint32_t length;
91 uint16_t* red;
92 uint16_t* green;
93 uint16_t* blue;
94 uint16_t* transparency;
95};
96
97static_assert(sizeof(LinuxFbVariableInfo) == 160,
98 "Linux framebuffer variable information ABI changed");
99#if UINTPTR_MAX == UINT64_MAX
100static_assert(sizeof(LinuxFbFixedInfo) == 80, "Linux framebuffer fixed information ABI changed");
101static_assert(sizeof(LinuxFbColorMap) == 40, "Linux framebuffer colour map ABI changed");
102#else
103static_assert(sizeof(LinuxFbFixedInfo) == 68, "Linux framebuffer fixed information ABI changed");
104static_assert(sizeof(LinuxFbColorMap) == 24, "Linux framebuffer colour map ABI changed");
105#endif
106
107#endif