1 #ifndef EXYNOS_DISPLAY_H
2 #define EXYNOS_DISPLAY_H
4 #include <utils/Mutex.h>
5 #include <utils/Vector.h>
6 #include <utils/String8.h>
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
); }
15 #define HWC_SKIP_RENDERING 0x80000000
17 const struct 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"},
45 EXYNOS_PRIMARY_DISPLAY
= 0,
46 #if defined(USES_DUAL_DISPLAY)
47 EXYNOS_SECONDARY_DISPLAY
,
49 EXYNOS_EXTERNAL_DISPLAY
,
50 EXYNOS_VIRTUAL_DISPLAY
53 class ExynosLayerInfo
{
55 int32_t compositionType
;
56 uint32_t mCheckOverlayFlag
;
57 uint32_t mCheckMPPFlag
;
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
);
74 ExynosDisplay(int numMPPs
);
75 ExynosDisplay(uint32_t type
, struct exynos5_hwc_composer_device_1_t
*pdev
);
76 virtual ~ExynosDisplay();
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
);
83 virtual int clearDisplay();
84 virtual int32_t getDisplayAttributes(const uint32_t attribute
);
85 void dumpConfig(decon_win_config
&c
);
96 struct exynos5_hwc_composer_device_1_t
*mHwc
;
102 android::String8 mDisplayName
;
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
);
111 virtual int postFrame(hwc_display_contents_1_t
*contents
);
112 virtual int winconfigIoctl(decon_win_config_data
*win_data
);