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