/* * Copyright (c) 2011 Intel Corporation. All Rights Reserved. * Copyright (c) Imagination Technologies Limited, UK * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sub license, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice (including the * next paragraph) shall be included in all copies or substantial portions * of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * Authors: * Binglin Chen * Zhaohan Ren * Shengquan Yuan * */ #ifndef PSB_TEXTURE_H_ # define PSB_TEXTURE_H_ #include "mrst/pvr2d.h" #include #define DRI2_BACK_BUFFER_EXPORT_TYPE_BUFFERS 1 #define DRI2_BACK_BUFFER_EXPORT_TYPE_SWAPCHAIN 2 #define DRI2_FLIP_BUFFERS_NUM 2 #define DRI2_BLIT_BUFFERS_NUM 2 #define DRI2_MAX_BUFFERS_NUM MAX( DRI2_FLIP_BUFFERS_NUM, DRI2_BLIT_BUFFERS_NUM ) #define VIDEO_BUFFER_NUM 20 typedef struct _psb_coeffs_ { signed char rY; signed char rU; signed char rV; signed char gY; signed char gU; signed char gV; signed char bY; signed char bU; signed char bV; unsigned char rShift; unsigned char gShift; unsigned char bShift; signed short rConst; signed short gConst; signed short bConst; } psb_coeffs_s, *psb_coeffs_p; typedef struct _sgx_psb_fixed32 { union { struct { unsigned short Fraction; short Value; }; long ll; }; } sgx_psb_fixed32; typedef struct _PVRDRI2BackBuffersExport_ { IMG_UINT32 ui32Type; //pixmap handles PVR2D_HANDLE hBuffers[3]; IMG_UINT32 ui32BuffersCount; IMG_UINT32 ui32SwapChainID; } PVRDRI2BackBuffersExport; struct psb_texture_s { struct _WsbmBufferObject *vaSrf; unsigned int video_transfermatrix; unsigned int src_nominalrange; unsigned int dst_nominalrange; uint32_t gamma0; uint32_t gamma1; uint32_t gamma2; uint32_t gamma3; uint32_t gamma4; uint32_t gamma5; sgx_psb_fixed32 brightness; sgx_psb_fixed32 contrast; sgx_psb_fixed32 saturation; sgx_psb_fixed32 hue; psb_coeffs_s coeffs; uint32_t update_coeffs; PVRDRI2BackBuffersExport dri2_bb_export; PVRDRI2BackBuffersExport extend_dri2_bb_export; /* struct dri_drawable *extend_dri_drawable; */ /* struct dri_drawable *dri_drawable; */ unsigned char *extend_dri_drawable; unsigned char *dri_drawable; uint32_t dri_init_flag; uint32_t extend_dri_init_flag; uint32_t adjust_window_flag; uint32_t current_blt_buffer; uint32_t extend_current_blt_buffer; uint32_t destw_save; uint32_t desth_save; uint32_t drawable_update_flag; /* drawable resize or switch between window <==> pixmap */ uint32_t local_rotation_save; uint32_t extend_rotation_save; PVR2DMEMINFO *pal_meminfo[6]; PVR2DMEMINFO *blt_meminfo_pixmap; PVR2DMEMINFO *blt_meminfo[DRI2_BLIT_BUFFERS_NUM]; PVR2DMEMINFO *flip_meminfo[DRI2_FLIP_BUFFERS_NUM]; PVR2DMEMINFO *extend_blt_meminfo[DRI2_BLIT_BUFFERS_NUM]; }; int psb_ctexture_init(VADriverContextP ctx); void psb_ctexture_deinit(VADriverContextP ctx); void blit_texture_to_buf(VADriverContextP ctx, unsigned char * data, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int width, int height, int src_pitch, struct _WsbmBufferObject * src_buf, unsigned int placement); void psb_putsurface_textureblit( VADriverContextP ctx, unsigned char *dst, VASurfaceID surface, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, unsigned int subtitle, int width, int height, int src_pitch, struct _WsbmBufferObject * src_buf, unsigned int placement, int wrap_dst); #endif /* !PSB_TEXTURE_H_ */