1437b3eda28a4bf098efa80598cab67f190275266Fei Jiang/*
2f91c8768670386683a281cc39141e21bdda9c97fKun Wang * Copyright (c) 2011 Intel Corporation. All Rights Reserved.
33f3d1e8746d2b793c982ac19a73061e006b1b178Kun Wang * Copyright (c) Imagination Technologies Limited, UK
42befccec034c13d34746a9e87149889d59ac767bFei Jiang *
5f91c8768670386683a281cc39141e21bdda9c97fKun Wang * Permission is hereby granted, free of charge, to any person obtaining a
6f91c8768670386683a281cc39141e21bdda9c97fKun Wang * copy of this software and associated documentation files (the
7f91c8768670386683a281cc39141e21bdda9c97fKun Wang * "Software"), to deal in the Software without restriction, including
8f91c8768670386683a281cc39141e21bdda9c97fKun Wang * without limitation the rights to use, copy, modify, merge, publish,
9f91c8768670386683a281cc39141e21bdda9c97fKun Wang * distribute, sub license, and/or sell copies of the Software, and to
10f91c8768670386683a281cc39141e21bdda9c97fKun Wang * permit persons to whom the Software is furnished to do so, subject to
11f91c8768670386683a281cc39141e21bdda9c97fKun Wang * the following conditions:
123f3d1e8746d2b793c982ac19a73061e006b1b178Kun Wang *
13f91c8768670386683a281cc39141e21bdda9c97fKun Wang * The above copyright notice and this permission notice (including the
14f91c8768670386683a281cc39141e21bdda9c97fKun Wang * next paragraph) shall be included in all copies or substantial portions
15f91c8768670386683a281cc39141e21bdda9c97fKun Wang * of the Software.
163f3d1e8746d2b793c982ac19a73061e006b1b178Kun Wang *
17f91c8768670386683a281cc39141e21bdda9c97fKun Wang * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18f91c8768670386683a281cc39141e21bdda9c97fKun Wang * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19f91c8768670386683a281cc39141e21bdda9c97fKun Wang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
20f91c8768670386683a281cc39141e21bdda9c97fKun Wang * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
21f91c8768670386683a281cc39141e21bdda9c97fKun Wang * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22f91c8768670386683a281cc39141e21bdda9c97fKun Wang * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23f91c8768670386683a281cc39141e21bdda9c97fKun Wang * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun *
25bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang * Authors:
26bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang *    Binglin Chen <binglin.chen@intel.com>
27bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang *    Zhaohan Ren  <zhaohan.ren@intel.com>
28bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang *    Shengquan Yuan  <shengquan.yuan@intel.com>
29bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang *
30bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang */
31bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang
32bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang#ifndef         PSB_TEXTURE_H_
33bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang# define        PSB_TEXTURE_H_
34437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
3596b0e013cefb77a845b6533d4c2ecf6f0aa429fcedward lin#include "mrst/pvr2d.h"
362befccec034c13d34746a9e87149889d59ac767bFei Jiang#include <img_types.h>
372befccec034c13d34746a9e87149889d59ac767bFei Jiang
382befccec034c13d34746a9e87149889d59ac767bFei Jiang#define DRI2_BACK_BUFFER_EXPORT_TYPE_BUFFERS 1
392befccec034c13d34746a9e87149889d59ac767bFei Jiang#define DRI2_BACK_BUFFER_EXPORT_TYPE_SWAPCHAIN 2
402befccec034c13d34746a9e87149889d59ac767bFei Jiang
41dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun#define DRI2_FLIP_BUFFERS_NUM           2
422befccec034c13d34746a9e87149889d59ac767bFei Jiang#define DRI2_BLIT_BUFFERS_NUM           2
432befccec034c13d34746a9e87149889d59ac767bFei Jiang#define DRI2_MAX_BUFFERS_NUM            MAX( DRI2_FLIP_BUFFERS_NUM, DRI2_BLIT_BUFFERS_NUM )
44bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang#define VIDEO_BUFFER_NUM                20
45bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang
462befccec034c13d34746a9e87149889d59ac767bFei Jiang
47dc1209519284865899ca8d990b3a2c7dbca8ae08wangkuntypedef struct _psb_coeffs_ {
482befccec034c13d34746a9e87149889d59ac767bFei Jiang    signed char rY;
492befccec034c13d34746a9e87149889d59ac767bFei Jiang    signed char rU;
502befccec034c13d34746a9e87149889d59ac767bFei Jiang    signed char rV;
512befccec034c13d34746a9e87149889d59ac767bFei Jiang    signed char gY;
522befccec034c13d34746a9e87149889d59ac767bFei Jiang    signed char gU;
532befccec034c13d34746a9e87149889d59ac767bFei Jiang    signed char gV;
542befccec034c13d34746a9e87149889d59ac767bFei Jiang    signed char bY;
552befccec034c13d34746a9e87149889d59ac767bFei Jiang    signed char bU;
562befccec034c13d34746a9e87149889d59ac767bFei Jiang    signed char bV;
572befccec034c13d34746a9e87149889d59ac767bFei Jiang    unsigned char rShift;
582befccec034c13d34746a9e87149889d59ac767bFei Jiang    unsigned char gShift;
592befccec034c13d34746a9e87149889d59ac767bFei Jiang    unsigned char bShift;
602befccec034c13d34746a9e87149889d59ac767bFei Jiang    signed short rConst;
612befccec034c13d34746a9e87149889d59ac767bFei Jiang    signed short gConst;
622befccec034c13d34746a9e87149889d59ac767bFei Jiang    signed short bConst;
632befccec034c13d34746a9e87149889d59ac767bFei Jiang} psb_coeffs_s, *psb_coeffs_p;
642befccec034c13d34746a9e87149889d59ac767bFei Jiang
652befccec034c13d34746a9e87149889d59ac767bFei Jiangtypedef struct _sgx_psb_fixed32 {
662befccec034c13d34746a9e87149889d59ac767bFei Jiang    union {
672befccec034c13d34746a9e87149889d59ac767bFei Jiang        struct {
682befccec034c13d34746a9e87149889d59ac767bFei Jiang            unsigned short Fraction;
692befccec034c13d34746a9e87149889d59ac767bFei Jiang            short Value;
702befccec034c13d34746a9e87149889d59ac767bFei Jiang        };
712befccec034c13d34746a9e87149889d59ac767bFei Jiang        long ll;
722befccec034c13d34746a9e87149889d59ac767bFei Jiang    };
732befccec034c13d34746a9e87149889d59ac767bFei Jiang} sgx_psb_fixed32;
742befccec034c13d34746a9e87149889d59ac767bFei Jiang
75dc1209519284865899ca8d990b3a2c7dbca8ae08wangkuntypedef struct _PVRDRI2BackBuffersExport_ {
762befccec034c13d34746a9e87149889d59ac767bFei Jiang    IMG_UINT32 ui32Type;
772befccec034c13d34746a9e87149889d59ac767bFei Jiang    //pixmap handles
782befccec034c13d34746a9e87149889d59ac767bFei Jiang    PVR2D_HANDLE hBuffers[3];
792befccec034c13d34746a9e87149889d59ac767bFei Jiang
802befccec034c13d34746a9e87149889d59ac767bFei Jiang    IMG_UINT32 ui32BuffersCount;
812befccec034c13d34746a9e87149889d59ac767bFei Jiang    IMG_UINT32 ui32SwapChainID;
822befccec034c13d34746a9e87149889d59ac767bFei Jiang} PVRDRI2BackBuffersExport;
832befccec034c13d34746a9e87149889d59ac767bFei Jiang
842befccec034c13d34746a9e87149889d59ac767bFei Jiangstruct psb_texture_s {
852befccec034c13d34746a9e87149889d59ac767bFei Jiang    struct _WsbmBufferObject *vaSrf;
862befccec034c13d34746a9e87149889d59ac767bFei Jiang
872befccec034c13d34746a9e87149889d59ac767bFei Jiang    unsigned int video_transfermatrix;
882befccec034c13d34746a9e87149889d59ac767bFei Jiang    unsigned int src_nominalrange;
892befccec034c13d34746a9e87149889d59ac767bFei Jiang    unsigned int dst_nominalrange;
902befccec034c13d34746a9e87149889d59ac767bFei Jiang
912befccec034c13d34746a9e87149889d59ac767bFei Jiang    uint32_t gamma0;
922befccec034c13d34746a9e87149889d59ac767bFei Jiang    uint32_t gamma1;
932befccec034c13d34746a9e87149889d59ac767bFei Jiang    uint32_t gamma2;
942befccec034c13d34746a9e87149889d59ac767bFei Jiang    uint32_t gamma3;
952befccec034c13d34746a9e87149889d59ac767bFei Jiang    uint32_t gamma4;
962befccec034c13d34746a9e87149889d59ac767bFei Jiang    uint32_t gamma5;
972befccec034c13d34746a9e87149889d59ac767bFei Jiang
982befccec034c13d34746a9e87149889d59ac767bFei Jiang    sgx_psb_fixed32 brightness;
992befccec034c13d34746a9e87149889d59ac767bFei Jiang    sgx_psb_fixed32 contrast;
1002befccec034c13d34746a9e87149889d59ac767bFei Jiang    sgx_psb_fixed32 saturation;
1012befccec034c13d34746a9e87149889d59ac767bFei Jiang    sgx_psb_fixed32 hue;
1022befccec034c13d34746a9e87149889d59ac767bFei Jiang
1032befccec034c13d34746a9e87149889d59ac767bFei Jiang    psb_coeffs_s coeffs;
104bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang
105dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    uint32_t update_coeffs;
1062f768e2db3e4074a6e9a3d5f0f6e321233d96e4cFei Jiang    PVRDRI2BackBuffersExport dri2_bb_export;
1072f768e2db3e4074a6e9a3d5f0f6e321233d96e4cFei Jiang    PVRDRI2BackBuffersExport extend_dri2_bb_export;
108bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang
109bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang    /* struct dri_drawable *extend_dri_drawable; */
110bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang    /* struct dri_drawable *dri_drawable; */
111e9f11f100c212e9aeb194337ae43bbfea6a130dbKun Wang    unsigned char *extend_dri_drawable;
112e9f11f100c212e9aeb194337ae43bbfea6a130dbKun Wang    unsigned char *dri_drawable;
113bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang
1142befccec034c13d34746a9e87149889d59ac767bFei Jiang    uint32_t dri_init_flag;
1154b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    uint32_t extend_dri_init_flag;
1164b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    uint32_t adjust_window_flag;
1172befccec034c13d34746a9e87149889d59ac767bFei Jiang    uint32_t current_blt_buffer;
1182befccec034c13d34746a9e87149889d59ac767bFei Jiang
1192f768e2db3e4074a6e9a3d5f0f6e321233d96e4cFei Jiang    uint32_t extend_current_blt_buffer;
1204b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    uint32_t destw_save;
1214b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    uint32_t desth_save;
1224b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    uint32_t drawable_update_flag; /* drawable resize or switch between window <==> pixmap */
123dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    uint32_t local_rotation_save;
124dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    uint32_t extend_rotation_save;
1252f768e2db3e4074a6e9a3d5f0f6e321233d96e4cFei Jiang
1263f3d1e8746d2b793c982ac19a73061e006b1b178Kun Wang    PVR2DMEMINFO *pal_meminfo[6];
1274b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    PVR2DMEMINFO *blt_meminfo_pixmap;
1282befccec034c13d34746a9e87149889d59ac767bFei Jiang    PVR2DMEMINFO *blt_meminfo[DRI2_BLIT_BUFFERS_NUM];
1292befccec034c13d34746a9e87149889d59ac767bFei Jiang    PVR2DMEMINFO *flip_meminfo[DRI2_FLIP_BUFFERS_NUM];
1302f768e2db3e4074a6e9a3d5f0f6e321233d96e4cFei Jiang    PVR2DMEMINFO *extend_blt_meminfo[DRI2_BLIT_BUFFERS_NUM];
1312befccec034c13d34746a9e87149889d59ac767bFei Jiang};
132437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1338803df709aec9d485d757c681791d708f9a88fe6Austin Yuanint psb_ctexture_init(VADriverContextP ctx);
134437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1352befccec034c13d34746a9e87149889d59ac767bFei Jiangvoid psb_ctexture_deinit(VADriverContextP ctx);
136437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
137437b3eda28a4bf098efa80598cab67f190275266Fei Jiangvoid blit_texture_to_buf(VADriverContextP ctx, unsigned char * data, int src_x, int src_y, int src_w,
138dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                         int src_h, int dst_x, int dst_y, int dst_w, int dst_h,
139dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                         int width, int height, int src_pitch, struct _WsbmBufferObject * src_buf,
140dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                         unsigned int placement);
141bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang
1422f768e2db3e4074a6e9a3d5f0f6e321233d96e4cFei Jiangvoid psb_putsurface_textureblit(
143bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang    VADriverContextP ctx, unsigned char *dst, VASurfaceID surface, int src_x, int src_y, int src_w,
1444b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    int src_h, int dst_x, int dst_y, int dst_w, int dst_h, unsigned int subtitle,
1452f768e2db3e4074a6e9a3d5f0f6e321233d96e4cFei Jiang    int width, int height,
1462f768e2db3e4074a6e9a3d5f0f6e321233d96e4cFei Jiang    int src_pitch, struct _WsbmBufferObject * src_buf,
147bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang    unsigned int placement, int wrap_dst);
148437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
149bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang#endif      /* !PSB_TEXTURE_H_ */
150