1d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin/* 252af24f45972a8124cb33e97c740fa0bfc705df6Steve Pfetsch * Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. 3d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * 4d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * Redistribution and use in source and binary forms, with or without 5d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * modification, are permitted provided that the following conditions are 6d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * met: 7d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * * Redistributions of source code must retain the above copyright 8d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * notice, this list of conditions and the following disclaimer. 9d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * * Redistributions in binary form must reproduce the above 10d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * copyright notice, this list of conditions and the following 11d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * disclaimer in the documentation and/or other materials provided 12d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * with the distribution. 13d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * * Neither the name of The Linux Foundation nor the names of its 14d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * contributors may be used to endorse or promote products derived 15d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * from this software without specific prior written permission. 16d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * 17d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 18d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 20d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 21d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 24d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 26d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin */ 29d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 30d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#ifndef _QDMETADATA_H 31d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define _QDMETADATA_H 32d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 33d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#ifdef __cplusplus 34d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinextern "C" { 35d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#endif 36d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 37d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinenum ColorSpace_t{ 38d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin ITU_R_601, 39d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin ITU_R_601_FR, 40d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin ITU_R_709, 41d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin}; 42d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 43d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinenum IGC_t { 44d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin IGC_NotSpecified, 45d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin IGC_sRGB, 46d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin}; 47d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 48d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinstruct HSICData_t { 49d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin int32_t hue; 50d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin float saturation; 51d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin int32_t intensity; 52d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin float contrast; 53d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin}; 54d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 55d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinstruct BufferDim_t { 56d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin int32_t sliceWidth; 57d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin int32_t sliceHeight; 58d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin}; 59d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 60d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinstruct MetaData_t { 61d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin int32_t operation; 62d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin int32_t interlaced; 63d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin struct BufferDim_t bufferDim; 6452af24f45972a8124cb33e97c740fa0bfc705df6Steve Pfetsch float refreshrate; 65d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin enum ColorSpace_t colorSpace; 66d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin enum IGC_t igc; 67d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin /* Gralloc sets PRIV_SECURE_BUFFER flag to inform that the buffers are from 68d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * ION_SECURE. which should not be mapped. However, for GPU post proc 69d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * feature, GFX needs to map this buffer, in the client context and in SF 70d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * context, it should not. Hence to differentiate, add this metadata field 71d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * for clients to set, and GPU will to read and know when to map the 72d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * SECURE_BUFFER(ION) */ 73d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin int32_t mapSecureBuffer; 74d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin /* The supported formats are defined in gralloc_priv.h to 75d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * support legacy code*/ 76d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin uint32_t s3dFormat; 77d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin /* VENUS output buffer is linear for UBWC Interlaced video */ 78d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin uint32_t linearFormat; 79d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin /* Set by graphics to indicate that this buffer will be written to but not 80d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin * swapped out */ 81d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin uint32_t isSingleBufferMode; 82860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja /* Set by camera to program the VT Timestamp */ 83860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja uint64_t vtTimeStamp; 84d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin}; 85d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 86d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinenum DispParamType { 87860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja UNUSED0 = 0x0001, 88860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja UNUSED1 = 0x0002, 89860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja PP_PARAM_INTERLACED = 0x0004, 90860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja UNUSED2 = 0x0008, 91860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja UNUSED3 = 0x0010, 92860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja UNUSED4 = 0x0020, 93860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja UNUSED5 = 0x0040, 94d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin UPDATE_BUFFER_GEOMETRY = 0x0080, 95860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja UPDATE_REFRESH_RATE = 0x0100, 96860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja UPDATE_COLOR_SPACE = 0x0200, 97860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja MAP_SECURE_BUFFER = 0x0400, 98860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja S3D_FORMAT = 0x0800, 99860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja LINEAR_FORMAT = 0x1000, 100860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja SET_IGC = 0x2000, 101d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin SET_SINGLE_BUFFER_MODE = 0x4000, 102860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja SET_VT_TIMESTAMP = 0x8000, 103d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin}; 104d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 10552af24f45972a8124cb33e97c740fa0bfc705df6Steve Pfetschenum DispFetchParamType { 106860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja GET_PP_PARAM_INTERLACED = 0x0004, 107860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja GET_BUFFER_GEOMETRY = 0x0080, 108860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja GET_REFRESH_RATE = 0x0100, 109860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja GET_COLOR_SPACE = 0x0200, 110860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja GET_MAP_SECURE_BUFFER = 0x0400, 111860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja GET_S3D_FORMAT = 0x0800, 112860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja GET_LINEAR_FORMAT = 0x1000, 113860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja GET_IGC = 0x2000, 114860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja GET_SINGLE_BUFFER_MODE = 0x4000, 115860d7f049aea6fd9c7b16da78d6a44a59d33415eRoopesh Rajashekharaiah Nataraja GET_VT_TIMESTAMP = 0x8000, 11652af24f45972a8124cb33e97c740fa0bfc705df6Steve Pfetsch}; 11752af24f45972a8124cb33e97c740fa0bfc705df6Steve Pfetsch 118d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinstruct private_handle_t; 119d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinint setMetaData(struct private_handle_t *handle, enum DispParamType paramType, 120d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin void *param); 121d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 12252af24f45972a8124cb33e97c740fa0bfc705df6Steve Pfetschint getMetaData(struct private_handle_t *handle, enum DispFetchParamType paramType, 12352af24f45972a8124cb33e97c740fa0bfc705df6Steve Pfetsch void *param); 12452af24f45972a8124cb33e97c740fa0bfc705df6Steve Pfetsch 12552af24f45972a8124cb33e97c740fa0bfc705df6Steve Pfetschint copyMetaData(struct private_handle_t *src, struct private_handle_t *dst); 126d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#ifdef __cplusplus 127d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin} 128d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#endif 129d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 130d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#endif /* _QDMETADATA_H */ 131d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin 132