1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
/*
* 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 <binglin.chen@intel.com>
* Zhaohan Ren <zhaohan.ren@intel.com>
* Shengquan Yuan <shengquan.yuan@intel.com>
*
*/
#ifndef PSB_TEXTURE_H_
# define PSB_TEXTURE_H_
#include "pvr2d.h"
#include <img_types.h>
#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_ */
|