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