blob: 4ba4c4fede040d2493964ef470ceb43941cbd650 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#include "Format.hpp"
#include <vector>
#include "../includes.hpp"
#include "debug/log/Logger.hpp"
#include "../macros.hpp"
#include <xf86drm.h>
#include <drm_fourcc.h>
SHMFormat NFormatUtils::drmToShm(DRMFormat drm) {
switch (drm) {
case DRM_FORMAT_XRGB8888: return WL_SHM_FORMAT_XRGB8888;
case DRM_FORMAT_ARGB8888: return WL_SHM_FORMAT_ARGB8888;
default: return drm;
}
return drm;
}
DRMFormat NFormatUtils::shmToDRM(SHMFormat shm) {
switch (shm) {
case WL_SHM_FORMAT_XRGB8888: return DRM_FORMAT_XRGB8888;
case WL_SHM_FORMAT_ARGB8888: return DRM_FORMAT_ARGB8888;
default: return shm;
}
return shm;
}
bool NFormatUtils::isFormatYUV(uint32_t drmFormat) {
switch (drmFormat) {
case DRM_FORMAT_YUYV:
case DRM_FORMAT_YVYU:
case DRM_FORMAT_UYVY:
case DRM_FORMAT_VYUY:
case DRM_FORMAT_AYUV:
case DRM_FORMAT_NV12:
case DRM_FORMAT_NV21:
case DRM_FORMAT_NV16:
case DRM_FORMAT_NV61:
case DRM_FORMAT_YUV410:
case DRM_FORMAT_YUV411:
case DRM_FORMAT_YUV420:
case DRM_FORMAT_YUV422:
case DRM_FORMAT_YUV444: return true;
default: return false;
}
}
std::string NFormatUtils::drmFormatName(DRMFormat drm) {
auto n = drmGetFormatName(drm);
if (!n)
return "unknown";
std::string name = n;
free(n); // NOLINT(cppcoreguidelines-no-malloc,-warnings-as-errors)
return name;
}
std::string NFormatUtils::drmModifierName(uint64_t mod) {
auto n = drmGetFormatModifierName(mod);
if (!n)
return "unknown";
std::string name = n;
free(n); // NOLINT(cppcoreguidelines-no-malloc,-warnings-as-errors)
return name;
}
DRMFormat NFormatUtils::alphaFormat(DRMFormat prevFormat) {
switch (prevFormat) {
case DRM_FORMAT_XRGB8888: return DRM_FORMAT_ARGB8888;
case DRM_FORMAT_XBGR8888: return DRM_FORMAT_ABGR8888;
case DRM_FORMAT_BGRX8888: return DRM_FORMAT_BGRA8888;
case DRM_FORMAT_RGBX8888: return DRM_FORMAT_RGBA8888;
case DRM_FORMAT_XRGB2101010: return DRM_FORMAT_ARGB2101010;
case DRM_FORMAT_XBGR2101010: return DRM_FORMAT_ABGR2101010;
case DRM_FORMAT_RGBX1010102: return DRM_FORMAT_RGBA1010102;
case DRM_FORMAT_BGRX1010102: return DRM_FORMAT_BGRA1010102;
default: return 0;
}
}
|