blob: 725e0945c777e53ab2292ce195ade81c754f2458 [file] [log] [blame]
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -08001/*
feifanz9cc23032016-03-23 18:48:56 +08002 * Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -08003 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above
10 * copyright notice, this list of conditions and the following
11 * disclaimer in the documentation and/or other materials provided
12 * with the distribution.
13 * * Neither the name of The Linux Foundation nor the names of its
14 * contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30#ifndef _QDMETADATA_H
31#define _QDMETADATA_H
32
Shuzhen Wangf3529c32014-01-28 17:15:45 -080033#ifdef __cplusplus
34extern "C" {
35#endif
36
Shuzhen Wangf3529c32014-01-28 17:15:45 -080037enum ColorSpace_t{
Shuzhen Wang0d113482014-01-28 16:10:22 -080038 ITU_R_601,
39 ITU_R_601_FR,
40 ITU_R_709,
Shuzhen Wangf3529c32014-01-28 17:15:45 -080041};
Shuzhen Wang0d113482014-01-28 16:10:22 -080042
Dileep Marchya1a7e1f12015-09-25 19:11:57 -070043enum IGC_t {
44 IGC_NotSpecified,
45 IGC_sRGB,
46};
47
Saurabh Shah5daeee52013-01-23 16:52:26 +080048struct HSICData_t {
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -080049 int32_t hue;
50 float saturation;
51 int32_t intensity;
52 float contrast;
Saurabh Shah5daeee52013-01-23 16:52:26 +080053};
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -080054
Ramkumar Radhakrishnan92f3abe2013-06-05 13:52:40 -070055struct BufferDim_t {
56 int32_t sliceWidth;
57 int32_t sliceHeight;
58};
59
Ray Zhang8ace84d2016-08-08 19:36:03 +080060struct S3DGpuComp_t {
61 int32_t displayId; /* on which display S3D is composed by client */
62 uint32_t s3dMode; /* the S3D format of this layer to be accessed by client */
63};
64
Saurabh Shah5daeee52013-01-23 16:52:26 +080065struct MetaData_t {
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -080066 int32_t operation;
67 int32_t interlaced;
Shuzhen Wangf3529c32014-01-28 17:15:45 -080068 struct BufferDim_t bufferDim;
feifanz9cc23032016-03-23 18:48:56 +080069 float refreshrate;
Shuzhen Wangf3529c32014-01-28 17:15:45 -080070 enum ColorSpace_t colorSpace;
Dileep Marchya1a7e1f12015-09-25 19:11:57 -070071 enum IGC_t igc;
Arun Kumar K.Rda2f69b2014-09-30 15:45:37 -070072 /* Gralloc sets PRIV_SECURE_BUFFER flag to inform that the buffers are from
73 * ION_SECURE. which should not be mapped. However, for GPU post proc
74 * feature, GFX needs to map this buffer, in the client context and in SF
75 * context, it should not. Hence to differentiate, add this metadata field
76 * for clients to set, and GPU will to read and know when to map the
77 * SECURE_BUFFER(ION) */
78 int32_t mapSecureBuffer;
Naseer Ahmed3324ff72015-01-21 17:14:44 -050079 /* The supported formats are defined in gralloc_priv.h to
80 * support legacy code*/
81 uint32_t s3dFormat;
Sushil Chauhane7acc3c2015-06-23 16:22:30 -070082 /* VENUS output buffer is linear for UBWC Interlaced video */
83 uint32_t linearFormat;
Saurabh Shah95f83682015-10-16 10:30:04 -070084 /* Set by graphics to indicate that this buffer will be written to but not
85 * swapped out */
Saurabh Shahb8067a42015-11-06 16:52:02 -080086 uint32_t isSingleBufferMode;
Ray Zhang8ace84d2016-08-08 19:36:03 +080087 /* Indicate GPU to draw S3D layer on dedicate display device */
88 struct S3DGpuComp_t s3dComp;
Naseer Ahmede8f254d2016-08-02 20:06:40 -040089
90 /* Set by camera to program the VT Timestamp */
91 uint64_t vtTimeStamp;
Saurabh Shah5daeee52013-01-23 16:52:26 +080092};
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -080093
Shuzhen Wangf3529c32014-01-28 17:15:45 -080094enum DispParamType {
Naseer Ahmede8f254d2016-08-02 20:06:40 -040095 SET_VT_TIMESTAMP = 0x0001,
96 UNUSED1 = 0x0002,
97 PP_PARAM_INTERLACED = 0x0004,
98 UNUSED2 = 0x0008,
99 UNUSED3 = 0x0010,
100 UNUSED4 = 0x0020,
101 UNUSED5 = 0x0040,
102 UPDATE_BUFFER_GEOMETRY = 0x0080,
103 UPDATE_REFRESH_RATE = 0x0100,
104 UPDATE_COLOR_SPACE = 0x0200,
105 MAP_SECURE_BUFFER = 0x0400,
106 S3D_FORMAT = 0x0800,
107 LINEAR_FORMAT = 0x1000,
108 SET_IGC = 0x2000,
109 SET_SINGLE_BUFFER_MODE = 0x4000,
110 SET_S3D_COMP = 0x8000,
Shuzhen Wangf3529c32014-01-28 17:15:45 -0800111};
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -0800112
feifanz9cc23032016-03-23 18:48:56 +0800113enum DispFetchParamType {
Naseer Ahmede8f254d2016-08-02 20:06:40 -0400114 GET_VT_TIMESTAMP = 0x0001,
115 GET_PP_PARAM_INTERLACED = 0x0004,
116 GET_BUFFER_GEOMETRY = 0x0080,
117 GET_REFRESH_RATE = 0x0100,
118 GET_COLOR_SPACE = 0x0200,
119 GET_MAP_SECURE_BUFFER = 0x0400,
120 GET_S3D_FORMAT = 0x0800,
121 GET_LINEAR_FORMAT = 0x1000,
122 GET_IGC = 0x2000,
123 GET_SINGLE_BUFFER_MODE = 0x4000,
124 GET_S3D_COMP = 0x8000,
feifanz9cc23032016-03-23 18:48:56 +0800125};
126
Shuzhen Wangf3529c32014-01-28 17:15:45 -0800127struct private_handle_t;
128int setMetaData(struct private_handle_t *handle, enum DispParamType paramType,
129 void *param);
130
feifanz9cc23032016-03-23 18:48:56 +0800131int getMetaData(struct private_handle_t *handle, enum DispFetchParamType paramType,
132 void *param);
133
134int copyMetaData(struct private_handle_t *src, struct private_handle_t *dst);
Ray Zhang8ace84d2016-08-08 19:36:03 +0800135
136int clearMetaData(struct private_handle_t *handle, enum DispParamType paramType);
137
Shuzhen Wangf3529c32014-01-28 17:15:45 -0800138#ifdef __cplusplus
139}
140#endif
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -0800141
142#endif /* _QDMETADATA_H */
143