libhwjpeg: resolve compilation errors
[GitHub/LineageOS/android_hardware_samsung_slsi_exynos.git] / libvppdisplay_tiny / ExynosDisplay.h
1 #ifndef EXYNOS_DISPLAY_H
2 #define EXYNOS_DISPLAY_H
3
4 #include <utils/Mutex.h>
5 #include <utils/Vector.h>
6 #include <utils/String8.h>
7 #include "ExynosHWC.h"
8
9 inline int WIDTH(const hwc_rect &rect) { return rect.right - rect.left; }
10 inline int HEIGHT(const hwc_rect &rect) { return rect.bottom - rect.top; }
11 inline int WIDTH(const hwc_frect_t &rect) { return (int)(rect.right - rect.left); }
12 inline int HEIGHT(const hwc_frect_t &rect) { return (int)(rect.bottom - rect.top); }
13
14
15 #define HWC_SKIP_RENDERING 0x80000000
16
17 const struct deconFormat {
18 uint32_t format;
19 const char *desc;
20 } deconFormat[] = {
21 {DECON_PIXEL_FORMAT_ARGB_8888, "ARGB8888"},
22 {DECON_PIXEL_FORMAT_ABGR_8888, "ABGR8888"},
23 {DECON_PIXEL_FORMAT_RGBA_8888, "RGBA8888"},
24 {DECON_PIXEL_FORMAT_BGRA_8888, "BGRA8888"},
25 {DECON_PIXEL_FORMAT_XRGB_8888, "XRGB8888"},
26 {DECON_PIXEL_FORMAT_XBGR_8888, "XBGR8888"},
27 {DECON_PIXEL_FORMAT_RGBX_8888, "RGBX8888"},
28 {DECON_PIXEL_FORMAT_BGRX_8888, "BGRX8888"},
29 {DECON_PIXEL_FORMAT_RGBA_5551, "RGBA5551"},
30 {DECON_PIXEL_FORMAT_RGB_565, "RGB565"},
31 {DECON_PIXEL_FORMAT_NV16, "FORMATNV16"},
32 {DECON_PIXEL_FORMAT_NV61, "FORMATNV61"},
33 {DECON_PIXEL_FORMAT_YVU422_3P, "YVU4223P"},
34 {DECON_PIXEL_FORMAT_NV12, "FORMATNV12"},
35 {DECON_PIXEL_FORMAT_NV21, "FORMATNV21"},
36 {DECON_PIXEL_FORMAT_NV12M, "FORMATNV12M"},
37 {DECON_PIXEL_FORMAT_NV21M, "FORMATNV21M"},
38 {DECON_PIXEL_FORMAT_YUV420, "FORMATYUV420"},
39 {DECON_PIXEL_FORMAT_YVU420, "FORMATYVU420"},
40 {DECON_PIXEL_FORMAT_YUV420M, "FORMATYUV420M"},
41 {DECON_PIXEL_FORMAT_YVU420M, "FORMATYVU420M"},
42 };
43
44 enum {
45 EXYNOS_PRIMARY_DISPLAY = 0,
46 #if defined(USES_DUAL_DISPLAY)
47 EXYNOS_SECONDARY_DISPLAY,
48 #endif
49 EXYNOS_EXTERNAL_DISPLAY,
50 EXYNOS_VIRTUAL_DISPLAY
51 };
52
53 class ExynosLayerInfo {
54 public:
55 int32_t compositionType;
56 uint32_t mCheckOverlayFlag;
57 uint32_t mCheckMPPFlag;
58 int32_t mWindowIndex;
59 uint32_t mDmaType;
60 };
61
62
63 enum decon_pixel_format halFormatToS3CFormat(int format);
64 bool isFormatSupported(int format);
65 enum decon_blending halBlendingToS3CBlending(int32_t blending);
66 bool isBlendingSupported(int32_t blending);
67 const char *deconFormat2str(uint32_t format);
68 bool winConfigChanged(decon_win_config *c1, decon_win_config *c2);
69 bool frameChanged(decon_frame *f1, decon_frame *f2);
70
71 class ExynosDisplay {
72 public:
73 /* Methods */
74 ExynosDisplay(int numMPPs);
75 ExynosDisplay(uint32_t type, struct exynos5_hwc_composer_device_1_t *pdev);
76 virtual ~ExynosDisplay();
77
78 virtual int prepare(hwc_display_contents_1_t *contents);
79 virtual int set(hwc_display_contents_1_t *contents);
80 virtual void dump(android::String8& result);
81 virtual void dumpLayerInfo(android::String8& result);
82
83 virtual int clearDisplay();
84 virtual int32_t getDisplayAttributes(const uint32_t attribute);
85 void dumpConfig(decon_win_config &c);
86
87 /* Fields */
88 int mDisplayFd;
89 uint32_t mType;
90 int32_t mXres;
91 int32_t mYres;
92 int32_t mXdpi;
93 int32_t mYdpi;
94 int32_t mVsyncPeriod;
95 bool mBlanked;
96 struct exynos5_hwc_composer_device_1_t *mHwc;
97
98
99
100 bool mFbNeeded;
101
102 android::String8 mDisplayName;
103
104
105
106 protected:
107 /* Methods */
108 virtual void configureHandle(private_handle_t *handle, size_t index, hwc_layer_1_t &layer, int fence_fd, decon_win_config &cfg);
109 virtual void configureOverlay(hwc_layer_1_t *layer, size_t index, decon_win_config &cfg);
110
111 virtual int postFrame(hwc_display_contents_1_t *contents);
112 virtual int winconfigIoctl(decon_win_config_data *win_data);
113 };
114 #endif