107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani/* 207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. 307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * 407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * Redistribution and use in source and binary forms, with or without 507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * modification, are permitted provided that the following conditions are 607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * met: 707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * * Redistributions of source code must retain the above copyright 807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * notice, this list of conditions and the following disclaimer. 907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * * Redistributions in binary form must reproduce the above 1007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * copyright notice, this list of conditions and the following 1107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * disclaimer in the documentation and/or other materials provided 1207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * with the distribution. 1307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * * Neither the name of The Linux Foundation nor the names of its 1407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * contributors may be used to endorse or promote products derived 1507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * from this software without specific prior written permission. 1607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * 1707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 1807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 2007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 2107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 2407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 2507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 2607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 2707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani */ 2907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 3007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#ifndef _QDMETADATA_H 3107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#define _QDMETADATA_H 3207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 3307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#ifdef __cplusplus 3407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malaniextern "C" { 3507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#endif 3607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 3707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#define MAX_IGC_LUT_ENTRIES 256 3807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 3907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanienum ColorSpace_t{ 4007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ITU_R_601, 4107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ITU_R_601_FR, 4207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ITU_R_709, 4307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani}; 4407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 4507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistruct HSICData_t { 4607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int32_t hue; 4707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani float saturation; 4807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int32_t intensity; 4907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani float contrast; 5007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani}; 5107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 5207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistruct Sharp2Data_t { 5307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int32_t strength; 5407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani uint32_t edge_thr; 5507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani uint32_t smooth_thr; 5607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani uint32_t noise_thr; 5707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani}; 5807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 5907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistruct IGCData_t{ 6007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani uint16_t c0[MAX_IGC_LUT_ENTRIES]; 6107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani uint16_t c1[MAX_IGC_LUT_ENTRIES]; 6207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani uint16_t c2[MAX_IGC_LUT_ENTRIES]; 6307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani}; 6407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 6507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistruct BufferDim_t { 6607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int32_t sliceWidth; 6707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int32_t sliceHeight; 6807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani}; 6907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 7007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistruct MetaData_t { 7107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int32_t operation; 7207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int32_t interlaced; 7307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani struct BufferDim_t bufferDim; 7407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani struct HSICData_t hsicData; 7507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int32_t sharpness; 7607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int32_t video_interface; 7707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani struct IGCData_t igcData; 7807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani struct Sharp2Data_t Sharp2Data; 7907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int64_t timestamp; 8007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani uint32_t refreshrate; 8107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani enum ColorSpace_t colorSpace; 8207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani /* Gralloc sets PRIV_SECURE_BUFFER flag to inform that the buffers are from 8307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * ION_SECURE. which should not be mapped. However, for GPU post proc 8407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * feature, GFX needs to map this buffer, in the client context and in SF 8507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * context, it should not. Hence to differentiate, add this metadata field 8607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * for clients to set, and GPU will to read and know when to map the 8707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * SECURE_BUFFER(ION) */ 8807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int32_t mapSecureBuffer; 8907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani}; 9007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 9107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanienum DispParamType { 9207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani PP_PARAM_HSIC = 0x0001, 9307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani PP_PARAM_SHARPNESS = 0x0002, 9407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani PP_PARAM_INTERLACED = 0x0004, 9507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani PP_PARAM_VID_INTFC = 0x0008, 9607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani PP_PARAM_IGC = 0x0010, 9707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani PP_PARAM_SHARP2 = 0x0020, 9807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani PP_PARAM_TIMESTAMP = 0x0040, 9907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani UPDATE_BUFFER_GEOMETRY = 0x0080, 10007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani UPDATE_REFRESH_RATE = 0x0100, 10107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani UPDATE_COLOR_SPACE = 0x0200, 10207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani MAP_SECURE_BUFFER = 0x400, 10307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani}; 10407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 10507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistruct private_handle_t; 10607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malaniint setMetaData(struct private_handle_t *handle, enum DispParamType paramType, 10707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani void *param); 10807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 10907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#ifdef __cplusplus 11007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 11107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#endif 11207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 11307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#endif /* _QDMETADATA_H */ 11407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 115