Mercurial > mplayer.hg
annotate libvo/gl_common.h @ 25068:4b14d188ed34
Add all passed to VID_SET_FORMAT formats to the end of
available format list (but report call as failed, to
continue checking formats).
This gives small chance to build graph even if device
does not report about particular format as supported.
This makes mplayer be able to work with PVR-150 card
(card's driver does not report about yuy2 format, but
accepts connection and works with it).
author | voroshil |
---|---|
date | Sun, 18 Nov 2007 13:17:00 +0000 |
parents | e6e8bf060dae |
children | 3baf6a2283da |
rev | line source |
---|---|
23689
3f0d00abc073
Do not use leading underscores in multiple inclusion guards, they are reserved.
diego
parents:
22491
diff
changeset
|
1 #ifndef GL_COMMON_H |
3f0d00abc073
Do not use leading underscores in multiple inclusion guards, they are reserved.
diego
parents:
22491
diff
changeset
|
2 #define GL_COMMON_H |
13653
799f81d3cb19
added gl_common for code used by both vo_gl.c and vo_gl2.c.
reimar
parents:
diff
changeset
|
3 |
13843 | 4 #include "mp_msg.h" |
5 #include "config.h" | |
6 | |
13653
799f81d3cb19
added gl_common for code used by both vo_gl.c and vo_gl2.c.
reimar
parents:
diff
changeset
|
7 #include <GL/gl.h> |
13843 | 8 #include "video_out.h" |
9 | |
14142
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
14078
diff
changeset
|
10 #ifdef GL_WIN32 |
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
14078
diff
changeset
|
11 #include <windows.h> |
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
14078
diff
changeset
|
12 #include <GL/glext.h> |
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
14078
diff
changeset
|
13 #include "w32_common.h" |
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
14078
diff
changeset
|
14 #else |
13843 | 15 #include <X11/Xlib.h> |
16 #include <GL/glx.h> | |
17 #include "x11_common.h" | |
18 #endif | |
13653
799f81d3cb19
added gl_common for code used by both vo_gl.c and vo_gl2.c.
reimar
parents:
diff
changeset
|
19 |
17668
b822575a1140
workaround for gl.h variants that do not define APIENTRY
reimar
parents:
17566
diff
changeset
|
20 // workaround for some gl.h headers |
b822575a1140
workaround for gl.h variants that do not define APIENTRY
reimar
parents:
17566
diff
changeset
|
21 #ifndef APIENTRY |
b822575a1140
workaround for gl.h variants that do not define APIENTRY
reimar
parents:
17566
diff
changeset
|
22 #ifdef GLAPIENTRY |
b822575a1140
workaround for gl.h variants that do not define APIENTRY
reimar
parents:
17566
diff
changeset
|
23 #define APIENTRY GLAPIENTRY |
17688
e8dca2bbd796
Better fallback for APIENTRY when compiling for Windows
reimar
parents:
17668
diff
changeset
|
24 #elif defined(GL_WIN32) |
e8dca2bbd796
Better fallback for APIENTRY when compiling for Windows
reimar
parents:
17668
diff
changeset
|
25 #define APIENTRY __stdcall |
17668
b822575a1140
workaround for gl.h variants that do not define APIENTRY
reimar
parents:
17566
diff
changeset
|
26 #else |
b822575a1140
workaround for gl.h variants that do not define APIENTRY
reimar
parents:
17566
diff
changeset
|
27 #define APIENTRY |
b822575a1140
workaround for gl.h variants that do not define APIENTRY
reimar
parents:
17566
diff
changeset
|
28 #endif |
b822575a1140
workaround for gl.h variants that do not define APIENTRY
reimar
parents:
17566
diff
changeset
|
29 #endif |
b822575a1140
workaround for gl.h variants that do not define APIENTRY
reimar
parents:
17566
diff
changeset
|
30 |
16595
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
31 /** |
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
32 * \defgroup glextdefines OpenGL extension defines |
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
33 * |
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
34 * conditionally define all extension defines used. |
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
35 * vendor specific extensions should be marked as such |
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
36 * (e.g. _NV), _ARB is not used to ease readability. |
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
37 * \{ |
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
38 */ |
16608 | 39 #ifndef GL_REGISTER_COMBINERS_NV |
40 #define GL_REGISTER_COMBINERS_NV 0x8522 | |
41 #endif | |
16488
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
42 #ifndef GL_MAX_GENERAL_COMBINERS_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
43 #define GL_MAX_GENERAL_COMBINERS_NV 0x854D |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
44 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
45 #ifndef GL_NUM_GENERAL_COMBINERS_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
46 #define GL_NUM_GENERAL_COMBINERS_NV 0x854E |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
47 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
48 #ifndef GL_CONSTANT_COLOR0_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
49 #define GL_CONSTANT_COLOR0_NV 0x852A |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
50 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
51 #ifndef GL_CONSTANT_COLOR1_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
52 #define GL_CONSTANT_COLOR1_NV 0x852B |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
53 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
54 #ifndef GL_COMBINER0_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
55 #define GL_COMBINER0_NV 0x8550 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
56 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
57 #ifndef GL_COMBINER1_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
58 #define GL_COMBINER1_NV 0x8551 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
59 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
60 #ifndef GL_VARIABLE_A_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
61 #define GL_VARIABLE_A_NV 0x8523 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
62 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
63 #ifndef GL_VARIABLE_B_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
64 #define GL_VARIABLE_B_NV 0x8524 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
65 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
66 #ifndef GL_VARIABLE_C_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
67 #define GL_VARIABLE_C_NV 0x8525 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
68 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
69 #ifndef GL_VARIABLE_D_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
70 #define GL_VARIABLE_D_NV 0x8526 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
71 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
72 #ifndef GL_UNSIGNED_INVERT_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
73 #define GL_UNSIGNED_INVERT_NV 0x8537 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
74 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
75 #ifndef GL_HALF_BIAS_NORMAL_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
76 #define GL_HALF_BIAS_NORMAL_NV 0x853A |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
77 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
78 #ifndef GL_SIGNED_IDENTITY_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
79 #define GL_SIGNED_IDENTITY_NV 0x853C |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
80 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
81 #ifndef GL_SCALE_BY_FOUR_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
82 #define GL_SCALE_BY_FOUR_NV 0x853F |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
83 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
84 #ifndef GL_DISCARD_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
85 #define GL_DISCARD_NV 0x8530 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
86 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
87 #ifndef GL_SPARE0_NV |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
88 #define GL_SPARE0_NV 0x852E |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
89 #endif |
16625 | 90 #ifndef GL_FRAGMENT_SHADER_ATI |
91 #define GL_FRAGMENT_SHADER_ATI 0x8920 | |
92 #endif | |
93 #ifndef GL_NUM_FRAGMENT_REGISTERS_ATI | |
94 #define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E | |
95 #endif | |
96 #ifndef GL_REG_0_ATI | |
97 #define GL_REG_0_ATI 0x8921 | |
98 #endif | |
99 #ifndef GL_REG_1_ATI | |
100 #define GL_REG_1_ATI 0x8922 | |
101 #endif | |
102 #ifndef GL_REG_2_ATI | |
103 #define GL_REG_2_ATI 0x8923 | |
104 #endif | |
105 #ifndef GL_CON_0_ATI | |
106 #define GL_CON_0_ATI 0x8941 | |
107 #endif | |
108 #ifndef GL_CON_1_ATI | |
109 #define GL_CON_1_ATI 0x8942 | |
110 #endif | |
111 #ifndef GL_ADD_ATI | |
112 #define GL_ADD_ATI 0x8963 | |
113 #endif | |
114 #ifndef GL_MUL_ATI | |
115 #define GL_MUL_ATI 0x8964 | |
116 #endif | |
117 #ifndef GL_MAD_ATI | |
118 #define GL_MAD_ATI 0x8968 | |
119 #endif | |
120 #ifndef GL_SWIZZLE_STR_ATI | |
121 #define GL_SWIZZLE_STR_ATI 0x8976 | |
122 #endif | |
123 #ifndef GL_4X_BIT_ATI | |
124 #define GL_4X_BIT_ATI 2 | |
125 #endif | |
126 #ifndef GL_BIAS_BIT_ATI | |
127 #define GL_BIAS_BIT_ATI 8 | |
128 #endif | |
16488
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
129 #ifndef GL_MAX_TEXTURE_UNITS |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
130 #define GL_MAX_TEXTURE_UNITS 0x84E2 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
131 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
132 #ifndef GL_TEXTURE0 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
133 #define GL_TEXTURE0 0x84C0 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
134 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
135 #ifndef GL_TEXTURE1 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
136 #define GL_TEXTURE1 0x84C1 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
137 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
138 #ifndef GL_TEXTURE2 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
139 #define GL_TEXTURE2 0x84C2 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
140 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
141 #ifndef GL_TEXTURE3 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
142 #define GL_TEXTURE3 0x84C3 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
143 #endif |
16099 | 144 #ifndef GL_TEXTURE_RECTANGLE |
145 #define GL_TEXTURE_RECTANGLE 0x84F5 | |
146 #endif | |
147 #ifndef GL_PIXEL_UNPACK_BUFFER | |
148 #define GL_PIXEL_UNPACK_BUFFER 0x88EC | |
149 #endif | |
150 #ifndef GL_STREAM_DRAW | |
151 #define GL_STREAM_DRAW 0x88E0 | |
152 #endif | |
16237
b951a75d4f83
Our buffer usage actually fits better to GL_DYNAMIC_DRAW than GL_STREAM_DRAW.
reimar
parents:
16233
diff
changeset
|
153 #ifndef GL_DYNAMIC_DRAW |
b951a75d4f83
Our buffer usage actually fits better to GL_DYNAMIC_DRAW than GL_STREAM_DRAW.
reimar
parents:
16233
diff
changeset
|
154 #define GL_DYNAMIC_DRAW 0x88E8 |
b951a75d4f83
Our buffer usage actually fits better to GL_DYNAMIC_DRAW than GL_STREAM_DRAW.
reimar
parents:
16233
diff
changeset
|
155 #endif |
16099 | 156 #ifndef GL_WRITE_ONLY |
157 #define GL_WRITE_ONLY 0x88B9 | |
158 #endif | |
16117 | 159 #ifndef GL_BGR |
160 #define GL_BGR 0x80E0 | |
161 #endif | |
162 #ifndef GL_BGRA | |
163 #define GL_BGRA 0x80E1 | |
164 #endif | |
165 #ifndef GL_UNSIGNED_BYTE_3_3_2 | |
166 #define GL_UNSIGNED_BYTE_3_3_2 0x8032 | |
167 #endif | |
168 #ifndef GL_UNSIGNED_BYTE_2_3_3_REV | |
169 #define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 | |
170 #endif | |
171 #ifndef GL_UNSIGNED_SHORT_5_6_5 | |
172 #define GL_UNSIGNED_SHORT_5_6_5 0x8363 | |
173 #endif | |
174 #ifndef GL_UNSIGNED_SHORT_5_6_5_REV | |
175 #define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 | |
176 #endif | |
177 #ifndef GL_UNSIGNED_SHORT_5_5_5_1 | |
178 #define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 | |
179 #endif | |
180 #ifndef GL_UNSIGNED_SHORT_1_5_5_5_REV | |
181 #define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 | |
182 #endif | |
18961 | 183 #ifndef GL_RGB32F |
184 #define GL_RGB32F 0x8815 | |
185 #endif | |
186 #ifndef GL_FLOAT_RGB32_NV | |
187 #define GL_FLOAT_RGB32_NV 0x8889 | |
188 #endif | |
16488
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
189 #ifndef GL_FRAGMENT_PROGRAM |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
190 #define GL_FRAGMENT_PROGRAM 0x8804 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
191 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
192 #ifndef GL_PROGRAM_FORMAT_ASCII |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
193 #define GL_PROGRAM_FORMAT_ASCII 0x8875 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
194 #endif |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
195 #ifndef GL_PROGRAM_ERROR_POSITION |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
196 #define GL_PROGRAM_ERROR_POSITION 0x864B |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
197 #endif |
18653
5af43a16abc3
loadGPUProgram function to load fragment program with error checking and statistics
reimar
parents:
18622
diff
changeset
|
198 #ifndef GL_PROGRAM_ERROR_STRING |
5af43a16abc3
loadGPUProgram function to load fragment program with error checking and statistics
reimar
parents:
18622
diff
changeset
|
199 #define GL_PROGRAM_ERROR_STRING 0x8874 |
5af43a16abc3
loadGPUProgram function to load fragment program with error checking and statistics
reimar
parents:
18622
diff
changeset
|
200 #endif |
16595
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
201 /** \} */ // end of glextdefines group |
16099 | 202 |
13653
799f81d3cb19
added gl_common for code used by both vo_gl.c and vo_gl2.c.
reimar
parents:
diff
changeset
|
203 void glAdjustAlignment(int stride); |
799f81d3cb19
added gl_common for code used by both vo_gl.c and vo_gl2.c.
reimar
parents:
diff
changeset
|
204 |
14078
c4033dcb986f
More similar code from gl and gl2 moved to gl_common
reimar
parents:
13921
diff
changeset
|
205 const char *glValName(GLint value); |
c4033dcb986f
More similar code from gl and gl2 moved to gl_common
reimar
parents:
13921
diff
changeset
|
206 |
16879
6ea220b10e8e
More consistent and sane types. Also avoids some gcc 4 warnings.
reimar
parents:
16625
diff
changeset
|
207 int glFindFormat(uint32_t format, int *bpp, GLint *gl_texfmt, |
14078
c4033dcb986f
More similar code from gl and gl2 moved to gl_common
reimar
parents:
13921
diff
changeset
|
208 GLenum *gl_format, GLenum *gl_type); |
16117 | 209 int glFmt2bpp(GLenum format, GLenum type); |
210 void glCreateClearTex(GLenum target, GLenum fmt, GLint filter, | |
16460 | 211 int w, int h, unsigned char val); |
16592 | 212 int glCreatePPMTex(GLenum target, GLenum fmt, GLint filter, |
213 FILE *f, int *width, int *height, int *maxval); | |
16117 | 214 void glUploadTex(GLenum target, GLenum format, GLenum type, |
21201 | 215 const void *dataptr, int stride, |
16117 | 216 int x, int y, int w, int h, int slice); |
16214
ede5b4afd262
Helper function for drawing texture and general cleanup of vo_gl2.c
reimar
parents:
16117
diff
changeset
|
217 void glDrawTex(GLfloat x, GLfloat y, GLfloat w, GLfloat h, |
ede5b4afd262
Helper function for drawing texture and general cleanup of vo_gl2.c
reimar
parents:
16117
diff
changeset
|
218 GLfloat tx, GLfloat ty, GLfloat tw, GLfloat th, |
17220 | 219 int sx, int sy, int rect_tex, int is_yv12, int flip); |
18653
5af43a16abc3
loadGPUProgram function to load fragment program with error checking and statistics
reimar
parents:
18622
diff
changeset
|
220 int loadGPUProgram(GLenum target, char *prog); |
16488
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
221 |
16595
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
222 /** \addtogroup glconversion |
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
223 * \{ */ |
16488
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
224 //! do not use YUV conversion, this should always stay 0 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
225 #define YUV_CONVERSION_NONE 0 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
226 //! use nVidia specific register combiners for YUV conversion |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
227 #define YUV_CONVERSION_COMBINERS 1 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
228 //! use a fragment program for YUV conversion |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
229 #define YUV_CONVERSION_FRAGMENT 2 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
230 //! use a fragment program for YUV conversion with gamma using POW |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
231 #define YUV_CONVERSION_FRAGMENT_POW 3 |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
232 //! use a fragment program with additional table lookup for YUV conversion |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
233 #define YUV_CONVERSION_FRAGMENT_LOOKUP 4 |
16625 | 234 //! use ATI specific register combiners ("fragment program") |
235 #define YUV_CONVERSION_COMBINERS_ATI 5 | |
18655
6aa0b26d584b
Add yuv to rgb conversion using a 3D lookup texture
reimar
parents:
18653
diff
changeset
|
236 //! use a fragment program with 3D table lookup for YUV conversion |
6aa0b26d584b
Add yuv to rgb conversion using a 3D lookup texture
reimar
parents:
18653
diff
changeset
|
237 #define YUV_CONVERSION_FRAGMENT_LOOKUP3D 6 |
18619
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
238 //! use normal bilinear scaling for textures |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
239 #define YUV_SCALER_BILIN 0 |
18622 | 240 //! use higher quality bicubic scaling for textures |
241 #define YUV_SCALER_BICUB 1 | |
22491 | 242 //! use cubic scaling in X and normal linear scaling in Y direction |
243 #define YUV_SCALER_BICUB_X 2 | |
24318
e6e8bf060dae
Add a bicubic scaler that needs a lot more instruction but no
reimar
parents:
23689
diff
changeset
|
244 //! use cubic scaling without additional lookup texture |
e6e8bf060dae
Add a bicubic scaler that needs a lot more instruction but no
reimar
parents:
23689
diff
changeset
|
245 #define YUV_SCALER_BICUB_NOTEX 3 |
18619
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
246 //! mask for conversion type |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
247 #define YUV_CONVERSION_MASK 0xF |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
248 //! mask for scaler type |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
249 #define YUV_SCALER_MASK 0xF |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
250 //! shift value for luminance scaler type |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
251 #define YUV_LUM_SCALER_SHIFT 8 |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
252 //! shift value for chrominance scaler type |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
253 #define YUV_CHROM_SCALER_SHIFT 12 |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
254 //! extract conversion out of type |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
255 #define YUV_CONVERSION(t) (t & YUV_CONVERSION_MASK) |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
256 //! extract luminance scaler out of type |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
257 #define YUV_LUM_SCALER(t) ((t >> YUV_LUM_SCALER_SHIFT) & YUV_SCALER_MASK) |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
258 //! extract chrominance scaler out of type |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
259 #define YUV_CHROM_SCALER(t) ((t >> YUV_CHROM_SCALER_SHIFT) & YUV_SCALER_MASK) |
16595
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
260 /** \} */ |
16586 | 261 void glSetupYUVConversion(GLenum target, int type, |
262 float brightness, float contrast, | |
16488
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
263 float hue, float saturation, |
18619
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
264 float rgamma, float ggamma, float bgamma, |
106a0c366002
Reworked YUV2RGB fragment program setup in preparation for upcoming patches
reimar
parents:
18578
diff
changeset
|
265 int texw, int texh); |
18175
01ca8a5fb8a6
minor fixes: get rid of pointless inline attributes and some additional checks
reimar
parents:
17688
diff
changeset
|
266 void glEnableYUVConversion(GLenum target, int type); |
01ca8a5fb8a6
minor fixes: get rid of pointless inline attributes and some additional checks
reimar
parents:
17688
diff
changeset
|
267 void glDisableYUVConversion(GLenum target, int type); |
14078
c4033dcb986f
More similar code from gl and gl2 moved to gl_common
reimar
parents:
13921
diff
changeset
|
268 |
16595
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
269 /** \addtogroup glcontext |
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
270 * \{ */ |
13843 | 271 //! could not set new window, will continue drawing into the old one. |
272 #define SET_WINDOW_FAILED -1 | |
273 //! new window is set, could even transfer the OpenGL context. | |
274 #define SET_WINDOW_OK 0 | |
275 //! new window is set, but the OpenGL context needs to be reinitialized. | |
276 #define SET_WINDOW_REINIT 1 | |
16595
b3a9fb41f475
fix/improve code doxumentation. Also group gl_common functions in several
reimar
parents:
16592
diff
changeset
|
277 /** \} */ |
13843 | 278 |
14142
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
14078
diff
changeset
|
279 #ifdef GL_WIN32 |
17116 | 280 #define vo_check_events() vo_w32_check_events() |
281 #define vo_fullscreen() vo_w32_fullscreen() | |
282 #define vo_ontop() vo_w32_ontop() | |
283 #define vo_uninit() vo_w32_uninit() | |
14142
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
14078
diff
changeset
|
284 int setGlWindow(int *vinfo, HGLRC *context, HWND win); |
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
14078
diff
changeset
|
285 void releaseGlContext(int *vinfo, HGLRC *context); |
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
14078
diff
changeset
|
286 #else |
17116 | 287 #define vo_check_events() vo_x11_check_events(mDisplay) |
288 #define vo_fullscreen() vo_x11_fullscreen() | |
289 #define vo_ontop() vo_x11_ontop() | |
290 #define vo_uninit() vo_x11_uninit() | |
13843 | 291 int setGlWindow(XVisualInfo **vinfo, GLXContext *context, Window win); |
13921 | 292 void releaseGlContext(XVisualInfo **vinfo, GLXContext *context); |
13653
799f81d3cb19
added gl_common for code used by both vo_gl.c and vo_gl2.c.
reimar
parents:
diff
changeset
|
293 #endif |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
17220
diff
changeset
|
294 void swapGlBuffers(void); |
13843 | 295 |
16233
f00a2826ee11
use GenBuffers to get a buffer number instead of hardcoding 1.
reimar
parents:
16214
diff
changeset
|
296 extern void (APIENTRY *GenBuffers)(GLsizei, GLuint *); |
f00a2826ee11
use GenBuffers to get a buffer number instead of hardcoding 1.
reimar
parents:
16214
diff
changeset
|
297 extern void (APIENTRY *DeleteBuffers)(GLsizei, const GLuint *); |
16099 | 298 extern void (APIENTRY *BindBuffer)(GLenum, GLuint); |
299 extern GLvoid* (APIENTRY *MapBuffer)(GLenum, GLenum); | |
300 extern GLboolean (APIENTRY *UnmapBuffer)(GLenum); | |
16109
519a307e3ccf
OpenGL fixes for windows and vo_gl.c ported to windows.
reimar
parents:
16099
diff
changeset
|
301 extern void (APIENTRY *BufferData)(GLenum, intptr_t, const GLvoid *, GLenum); |
16099 | 302 extern void (APIENTRY *CombinerParameterfv)(GLenum, const GLfloat *); |
303 extern void (APIENTRY *CombinerParameteri)(GLenum, GLint); | |
304 extern void (APIENTRY *CombinerInput)(GLenum, GLenum, GLenum, GLenum, GLenum, | |
305 GLenum); | |
306 extern void (APIENTRY *CombinerOutput)(GLenum, GLenum, GLenum, GLenum, GLenum, | |
307 GLenum, GLenum, GLboolean, GLboolean, | |
308 GLboolean); | |
16625 | 309 extern void (APIENTRY *BeginFragmentShader)(void); |
310 extern void (APIENTRY *EndFragmentShader)(void); | |
311 extern void (APIENTRY *SampleMap)(GLuint, GLuint, GLenum); | |
312 extern void (APIENTRY *ColorFragmentOp2)(GLenum, GLuint, GLuint, GLuint, GLuint, | |
313 GLuint, GLuint, GLuint, GLuint, GLuint); | |
314 extern void (APIENTRY *ColorFragmentOp3)(GLenum, GLuint, GLuint, GLuint, GLuint, | |
315 GLuint, GLuint, GLuint, GLuint, GLuint, | |
316 GLuint, GLuint, GLuint); | |
317 extern void (APIENTRY *SetFragmentShaderConstant)(GLuint, const GLfloat *); | |
16099 | 318 extern void (APIENTRY *ActiveTexture)(GLenum); |
319 extern void (APIENTRY *BindTexture)(GLenum, GLuint); | |
320 extern void (APIENTRY *MultiTexCoord2f)(GLenum, GLfloat, GLfloat); | |
16488
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
321 extern void (APIENTRY *GenPrograms)(GLsizei, GLuint *); |
3191dcb27a12
hardware color-space conversion for vo_gl and vo_gl2
reimar
parents:
16460
diff
changeset
|
322 extern void (APIENTRY *DeletePrograms)(GLsizei, const GLuint *); |
16099 | 323 extern void (APIENTRY *BindProgram)(GLenum, GLuint); |
324 extern void (APIENTRY *ProgramString)(GLenum, GLenum, GLsizei, const GLvoid *); | |
325 extern void (APIENTRY *ProgramEnvParameter4f)(GLenum, GLuint, GLfloat, GLfloat, | |
326 GLfloat, GLfloat); | |
16270 | 327 extern int (APIENTRY *SwapInterval)(int); |
18578 | 328 extern void (APIENTRY *TexImage3D)(GLenum, GLint, GLenum, GLsizei, GLsizei, |
329 GLsizei, GLint, GLenum, GLenum, const GLvoid *); | |
16099 | 330 |
13843 | 331 #endif |