zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SDL_shaders_gles2.c
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
4 
5  This software is provided 'as-is', without any express or implied
6  warranty. In no event will the authors be held liable for any damages
7  arising from the use of this software.
8 
9  Permission is granted to anyone to use this software for any purpose,
10  including commercial applications, and to alter it and redistribute it
11  freely, subject to the following restrictions:
12 
13  1. The origin of this software must not be misrepresented; you must not
14  claim that you wrote the original software. If you use this software
15  in a product, an acknowledgment in the product documentation would be
16  appreciated but is not required.
17  2. Altered source versions must be plainly marked as such, and must not be
18  misrepresented as being the original software.
19  3. This notice may not be removed or altered from any source distribution.
20 */
21 #include "SDL_config.h"
22 
23 #if SDL_VIDEO_RENDER_OGL_ES2 && !SDL_RENDER_DISABLED
24 
25 #include "SDL_video.h"
26 #include "SDL_opengles2.h"
27 #include "SDL_shaders_gles2.h"
28 #include "SDL_stdinc.h"
29 
30 /*************************************************************************************************
31  * Vertex/fragment shader source *
32  *************************************************************************************************/
33 
34 static const Uint8 GLES2_VertexSrc_Default_[] = " \
35  uniform mat4 u_projection; \
36  attribute vec2 a_position; \
37  attribute vec2 a_texCoord; \
38  attribute float a_angle; \
39  attribute vec2 a_center; \
40  varying vec2 v_texCoord; \
41  \
42  void main() \
43  { \
44  float angle = radians(a_angle); \
45  float c = cos(angle); \
46  float s = sin(angle); \
47  mat2 rotationMatrix = mat2(c, -s, s, c); \
48  vec2 position = rotationMatrix * (a_position - a_center) + a_center; \
49  v_texCoord = a_texCoord; \
50  gl_Position = u_projection * vec4(position, 0.0, 1.0);\
51  gl_PointSize = 1.0; \
52  } \
53 ";
54 
55 static const Uint8 GLES2_FragmentSrc_SolidSrc_[] = " \
56  precision mediump float; \
57  uniform vec4 u_color; \
58  \
59  void main() \
60  { \
61  gl_FragColor = u_color; \
62  } \
63 ";
64 
65 static const Uint8 GLES2_FragmentSrc_TextureABGRSrc_[] = " \
66  precision mediump float; \
67  uniform sampler2D u_texture; \
68  uniform vec4 u_modulation; \
69  varying vec2 v_texCoord; \
70  \
71  void main() \
72  { \
73  gl_FragColor = texture2D(u_texture, v_texCoord); \
74  gl_FragColor *= u_modulation; \
75  } \
76 ";
77 
78 /* ARGB to ABGR conversion */
79 static const Uint8 GLES2_FragmentSrc_TextureARGBSrc_[] = " \
80  precision mediump float; \
81  uniform sampler2D u_texture; \
82  uniform vec4 u_modulation; \
83  varying vec2 v_texCoord; \
84  \
85  void main() \
86  { \
87  vec4 abgr = texture2D(u_texture, v_texCoord); \
88  gl_FragColor = abgr; \
89  gl_FragColor.r = abgr.b; \
90  gl_FragColor.b = abgr.r; \
91  gl_FragColor *= u_modulation; \
92  } \
93 ";
94 
95 /* RGB to ABGR conversion */
96 static const Uint8 GLES2_FragmentSrc_TextureRGBSrc_[] = " \
97  precision mediump float; \
98  uniform sampler2D u_texture; \
99  uniform vec4 u_modulation; \
100  varying vec2 v_texCoord; \
101  \
102  void main() \
103  { \
104  vec4 abgr = texture2D(u_texture, v_texCoord); \
105  gl_FragColor = abgr; \
106  gl_FragColor.r = abgr.b; \
107  gl_FragColor.b = abgr.r; \
108  gl_FragColor.a = 1.0; \
109  gl_FragColor *= u_modulation; \
110  } \
111 ";
112 
113 /* BGR to ABGR conversion */
114 static const Uint8 GLES2_FragmentSrc_TextureBGRSrc_[] = " \
115  precision mediump float; \
116  uniform sampler2D u_texture; \
117  uniform vec4 u_modulation; \
118  varying vec2 v_texCoord; \
119  \
120  void main() \
121  { \
122  vec4 abgr = texture2D(u_texture, v_texCoord); \
123  gl_FragColor = abgr; \
124  gl_FragColor.a = 1.0; \
125  gl_FragColor *= u_modulation; \
126  } \
127 ";
128 
129 static const GLES2_ShaderInstance GLES2_VertexSrc_Default = {
131  GLES2_SOURCE_SHADER,
132  sizeof(GLES2_VertexSrc_Default_),
133  GLES2_VertexSrc_Default_
134 };
135 
136 static const GLES2_ShaderInstance GLES2_FragmentSrc_SolidSrc = {
138  GLES2_SOURCE_SHADER,
139  sizeof(GLES2_FragmentSrc_SolidSrc_),
140  GLES2_FragmentSrc_SolidSrc_
141 };
142 
143 static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureABGRSrc = {
145  GLES2_SOURCE_SHADER,
146  sizeof(GLES2_FragmentSrc_TextureABGRSrc_),
147  GLES2_FragmentSrc_TextureABGRSrc_
148 };
149 
150 static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureARGBSrc = {
152  GLES2_SOURCE_SHADER,
153  sizeof(GLES2_FragmentSrc_TextureARGBSrc_),
154  GLES2_FragmentSrc_TextureARGBSrc_
155 };
156 
157 static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureRGBSrc = {
159  GLES2_SOURCE_SHADER,
160  sizeof(GLES2_FragmentSrc_TextureRGBSrc_),
161  GLES2_FragmentSrc_TextureRGBSrc_
162 };
163 
164 static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureBGRSrc = {
166  GLES2_SOURCE_SHADER,
167  sizeof(GLES2_FragmentSrc_TextureBGRSrc_),
168  GLES2_FragmentSrc_TextureBGRSrc_
169 };
170 
171 /*************************************************************************************************
172  * Vertex/fragment shader binaries (NVIDIA Tegra 1/2) *
173  *************************************************************************************************/
174 
175 #if GLES2_INCLUDE_NVIDIA_SHADERS
176 
177 #define GL_NVIDIA_PLATFORM_BINARY_NV 0x890B
178 
179 static const Uint8 GLES2_VertexTegra_Default_[] = {
180  243, 193, 1, 142, 31, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
181  0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 2, 0, 0, 0, 85, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 3, 0, 0, 0,
182  91, 0, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0, 5, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
183  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 95, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0,
184  13, 0, 0, 0, 102, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
185  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
186  0, 0, 0, 16, 0, 0, 0, 104, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 17, 0, 0, 0, 112, 0, 0, 0, 0, 0,
187  0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 112, 0, 0, 0, 80, 0, 0, 0, 80, 0, 0, 0, 19, 0, 0, 0, 132, 0,
188  0, 0, 104, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
189  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97,
190  95, 112, 111, 115, 105, 116, 105, 111, 110, 0, 97, 95, 116, 101, 120, 67, 111, 111, 114, 100,
191  0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 112, 114, 111, 106, 101, 99,
192  116, 105, 111, 110, 0, 0, 0, 0, 0, 0, 0, 82, 139, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 80, 139, 0,
193  0, 1, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 33, 0, 0, 0, 92, 139, 0, 0,
194  1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 240, 0, 0, 0, 0, 0, 0, 1, 0,
195  0, 0, 64, 0, 0, 0, 80, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 193, 0, 0, 0,
196  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
197  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
198  0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 66, 24, 0, 6, 34, 108, 28,
199  0, 0, 42, 16, 128, 0, 195, 192, 6, 129, 252, 255, 65, 96, 108, 28, 0, 0, 0, 0, 0, 1, 195, 192,
200  6, 1, 252, 255, 33, 96, 108, 156, 31, 64, 8, 1, 64, 0, 131, 192, 6, 1, 156, 159, 65, 96, 108,
201  28, 0, 0, 85, 32, 0, 1, 195, 192, 6, 1, 252, 255, 33, 96, 108, 156, 31, 64, 0, 64, 64, 0, 131,
202  192, 134, 1, 152, 31, 65, 96, 108, 156, 31, 64, 127, 48, 0, 1, 195, 192, 6, 129, 129, 255, 33,
203  96
204 };
205 
206 static const Uint8 GLES2_FragmentTegra_None_SolidSrc_[] = {
207  155, 191, 159, 1, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
208  0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 75,
209  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
210  75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 75, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 13, 0,
211  0, 0, 82, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
212  22, 0, 0, 0, 84, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 4,
213  0, 0, 0, 15, 0, 0, 0, 93, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 113, 0, 0, 0, 0, 0,
214  0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 113, 0, 0,
215  0, 108, 0, 0, 0, 108, 0, 0, 0, 20, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
216  0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
217  0, 117, 95, 99, 111, 108, 111, 114, 0, 0, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
218  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 240, 0, 0,
219  0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0, 0,
220  0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 21, 32, 0, 0, 0, 0, 0,
221  0, 0, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
222  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, 48, 45, 66, 73, 78, 1,
223  0, 0, 0, 1, 0, 0, 0, 1, 0, 65, 37, 0, 0, 0, 0, 1, 0, 0, 21, 0, 0, 0, 0, 1, 0, 1, 38, 0, 0, 0,
224  0, 1, 0, 1, 39, 0, 0, 0, 0, 1, 0, 1, 40, 1, 0, 0, 0, 8, 0, 4, 40, 0, 40, 0, 0, 0, 242, 65, 63,
225  192, 200, 0, 0, 0, 242, 65, 63, 128, 168, 0, 0, 0, 242, 65, 63, 64, 72, 0, 0, 0, 242, 65, 63,
226  1, 0, 6, 40, 0, 0, 0, 0, 1, 0, 1, 41, 5, 0, 2, 0
227 };
228 
229 static const Uint8 GLES2_FragmentTegra_Alpha_SolidSrc_[] = {
230  169, 153, 195, 28, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
231  0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 75,
232  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
233  75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 75, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 13, 0,
234  0, 0, 82, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
235  22, 0, 0, 0, 84, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 4,
236  0, 0, 0, 15, 0, 0, 0, 93, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 113, 0, 0, 0, 0, 0,
237  0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 113, 0, 0,
238  0, 220, 0, 0, 0, 220, 0, 0, 0, 20, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
239  0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
240  0, 117, 95, 99, 111, 108, 111, 114, 0, 0, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
241  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 118, 118, 17, 241, 0, 0, 0, 240, 0,
242  0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0,
243  0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 21, 32, 0, 0, 0, 0,
244  0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
245  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, 48, 45, 66, 73, 78,
246  1, 0, 0, 0, 3, 0, 0, 0, 3, 0, 65, 37, 8, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 21, 0,
247  0, 0, 0, 3, 0, 1, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 39, 0, 0, 0, 0, 0, 0, 0,
248  0, 0, 0, 0, 0, 3, 0, 1, 40, 1, 0, 0, 0, 5, 0, 0, 0, 9, 0, 0, 0, 24, 0, 4, 40, 232, 231, 15,
249  0, 0, 242, 65, 62, 194, 72, 1, 0, 0, 250, 65, 63, 194, 40, 1, 0, 0, 250, 65, 63, 192, 168, 1,
250  0, 0, 242, 1, 64, 192, 168, 1, 0, 0, 242, 1, 68, 168, 32, 0, 0, 0, 50, 64, 0, 192, 168, 15,
251  0, 0, 242, 1, 66, 168, 64, 0, 16, 0, 242, 65, 1, 232, 231, 15, 0, 0, 242, 65, 62, 168, 160,
252  0, 0, 0, 50, 64, 2, 104, 192, 0, 0, 36, 48, 66, 4, 232, 231, 15, 0, 0, 242, 65, 62, 3, 0, 6,
253  40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 41, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 2, 0
254 };
255 
256 static const Uint8 GLES2_FragmentTegra_Additive_SolidSrc_[] = {
257  59, 71, 42, 17, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0, 0,
258  0, 8, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 75,
259  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
260  75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 75, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 13, 0,
261  0, 0, 82, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
262  22, 0, 0, 0, 84, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 4,
263  0, 0, 0, 15, 0, 0, 0, 93, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 113, 0, 0, 0, 0, 0,
264  0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 113, 0, 0,
265  0, 108, 0, 0, 0, 108, 0, 0, 0, 20, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
266  0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
267  0, 117, 95, 99, 111, 108, 111, 114, 0, 0, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
268  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 22, 22, 17, 241, 0, 0, 0, 240, 0,
269  0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0,
270  0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 21, 32, 0, 0, 0, 0,
271  0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
272  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, 48, 45, 66, 73, 78,
273  1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 65, 37, 8, 0, 129, 0, 1, 0, 0, 21, 0, 0, 0, 0, 1, 0, 1, 38, 0,
274  0, 0, 0, 1, 0, 1, 39, 0, 0, 0, 0, 1, 0, 1, 40, 1, 0, 0, 0, 8, 0, 4, 40, 192, 200, 0, 0, 0, 26,
275  0, 70, 192, 40, 0, 0, 0, 2, 0, 64, 192, 72, 0, 0, 0, 10, 0, 66, 192, 168, 0, 0, 0, 18, 0, 68,
276  1, 0, 6, 40, 0, 0, 0, 0, 1, 0, 1, 41, 5, 0, 2, 0
277 };
278 
279 static const Uint8 GLES2_FragmentTegra_Modulated_SolidSrc_[] = {
280  37, 191, 49, 17, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0, 0,
281  0, 8, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 75,
282  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
283  75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 75, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 13, 0,
284  0, 0, 82, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
285  22, 0, 0, 0, 84, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 4,
286  0, 0, 0, 15, 0, 0, 0, 93, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 113, 0, 0, 0, 0, 0,
287  0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 113, 0, 0,
288  0, 108, 0, 0, 0, 108, 0, 0, 0, 20, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
289  0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
290  0, 117, 95, 99, 111, 108, 111, 114, 0, 0, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
291  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 32, 32, 17, 241, 0, 0, 0, 240, 0,
292  0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0,
293  0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 21, 32, 0, 0, 0, 0,
294  0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
295  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, 48, 45, 66, 73, 78,
296  1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 65, 37, 8, 0, 129, 0, 1, 0, 0, 21, 0, 0, 0, 0, 1, 0, 1, 38, 0,
297  0, 0, 0, 1, 0, 1, 39, 0, 0, 0, 0, 1, 0, 1, 40, 1, 0, 0, 0, 8, 0, 4, 40, 104, 192, 0, 0, 0, 242,
298  1, 70, 8, 32, 0, 0, 0, 242, 1, 64, 40, 64, 0, 0, 0, 242, 1, 66, 72, 160, 0, 0, 0, 242, 1, 68,
299  1, 0, 6, 40, 0, 0, 0, 0, 1, 0, 1, 41, 5, 0, 2, 0
300 };
301 
302 static const Uint8 GLES2_FragmentTegra_None_TextureSrc_[] = {
303  220, 217, 41, 211, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
304  0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
305  82, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
306  0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 87, 0, 0, 0, 2, 0, 0, 0, 56, 0, 0, 0,
307  13, 0, 0, 0, 101, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 105, 0, 0, 0, 1, 0, 0, 0, 4,
308  0, 0, 0, 22, 0, 0, 0, 106, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 114, 0, 0, 0, 1, 0,
309  0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 115, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 135, 0, 0,
310  0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 135,
311  0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 20, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
312  0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0,
313  0, 0, 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 109, 111, 100, 117, 108,
314  97, 116, 105, 111, 110, 0, 117, 95, 116, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0,
315  2, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1,
316  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 94, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0,
317  0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
318  0, 0, 1, 0, 0, 0, 241, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240,
319  0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1, 0,
320  0, 0, 1, 0, 0, 0, 21, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
321  0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
322  0, 0, 65, 82, 50, 48, 45, 66, 73, 78, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 65, 37, 0, 0, 0, 0, 1, 0,
323  0, 21, 0, 0, 0, 0, 1, 0, 1, 38, 1, 0, 0, 0, 2, 0, 4, 38, 186, 81, 78, 16, 2, 1, 0, 0, 1, 0,
324  1, 39, 0, 4, 0, 0, 1, 0, 1, 40, 1, 0, 0, 0, 8, 0, 4, 40, 104, 192, 0, 0, 0, 242, 1, 70, 8, 32,
325  0, 0, 0, 242, 1, 64, 40, 64, 0, 0, 0, 242, 1, 66, 72, 160, 0, 0, 0, 242, 1, 68, 1, 0, 6, 40,
326  0, 0, 0, 0, 1, 0, 1, 41, 5, 0, 2, 0
327 };
328 
329 static const Uint8 GLES2_FragmentTegra_Alpha_TextureSrc_[] = {
330  71, 202, 114, 229, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
331  0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
332  82, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
333  0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 87, 0, 0, 0, 2, 0, 0, 0, 56, 0, 0, 0,
334  13, 0, 0, 0, 101, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 105, 0, 0, 0, 1, 0, 0, 0, 4,
335  0, 0, 0, 22, 0, 0, 0, 106, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 114, 0, 0, 0, 1, 0,
336  0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 115, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 135, 0, 0,
337  0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 135,
338  0, 0, 0, 176, 0, 0, 0, 176, 0, 0, 0, 20, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
339  0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0,
340  0, 0, 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 109, 111, 100, 117, 108,
341  97, 116, 105, 111, 110, 0, 117, 95, 116, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0,
342  2, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1,
343  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 94, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0,
344  0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
345  0, 0, 1, 118, 118, 17, 241, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0,
346  240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0,
347  1, 0, 0, 0, 2, 0, 0, 0, 21, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 16,
348  0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
349  0, 0, 0, 0, 65, 82, 50, 48, 45, 66, 73, 78, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 65, 37, 0, 0, 0, 0,
350  8, 0, 129, 0, 1, 0, 0, 21, 0, 0, 0, 0, 2, 0, 1, 38, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 38, 186,
351  81, 78, 16, 2, 1, 0, 0, 2, 0, 1, 39, 0, 4, 0, 0, 0, 0, 0, 0, 2, 0, 1, 40, 1, 0, 0, 0, 5, 0,
352  0, 0, 16, 0, 4, 40, 40, 160, 1, 0, 0, 242, 1, 66, 8, 192, 1, 0, 0, 242, 1, 64, 104, 32, 1, 0,
353  0, 242, 1, 70, 72, 64, 1, 0, 0, 242, 1, 68, 154, 192, 0, 0, 37, 34, 64, 3, 8, 32, 0, 0, 5, 58,
354  208, 4, 40, 64, 0, 0, 5, 50, 208, 4, 72, 160, 0, 0, 37, 42, 208, 4, 2, 0, 6, 40, 0, 0, 0, 0,
355  0, 0, 0, 0, 2, 0, 1, 41, 0, 0, 0, 0, 5, 0, 2, 0
356 };
357 
358 static const Uint8 GLES2_FragmentTegra_Additive_TextureSrc_[] = {
359  161, 234, 193, 234, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
360  0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
361  82, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
362  0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 87, 0, 0, 0, 2, 0, 0, 0, 56, 0, 0, 0,
363  13, 0, 0, 0, 101, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 105, 0, 0, 0, 1, 0, 0, 0, 4,
364  0, 0, 0, 22, 0, 0, 0, 106, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 114, 0, 0, 0, 1, 0,
365  0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 115, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 135, 0, 0,
366  0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 135,
367  0, 0, 0, 176, 0, 0, 0, 176, 0, 0, 0, 20, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
368  0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0,
369  0, 0, 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 109, 111, 100, 117, 108,
370  97, 116, 105, 111, 110, 0, 117, 95, 116, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0,
371  2, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1,
372  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 94, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0,
373  0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
374  0, 0, 1, 22, 22, 17, 241, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240,
375  0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 1, 0,
376  0, 0, 2, 0, 0, 0, 21, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
377  0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
378  0, 0, 65, 82, 50, 48, 45, 66, 73, 78, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 65, 37, 0, 0, 0, 0, 8, 0,
379  129, 0, 1, 0, 0, 21, 0, 0, 0, 0, 2, 0, 1, 38, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 38, 186, 81,
380  78, 16, 2, 1, 0, 0, 2, 0, 1, 39, 0, 4, 0, 0, 0, 0, 0, 0, 2, 0, 1, 40, 1, 0, 0, 0, 5, 0, 0, 0,
381  16, 0, 4, 40, 40, 160, 1, 0, 0, 242, 1, 66, 104, 32, 1, 0, 0, 242, 1, 70, 8, 192, 1, 0, 0, 242,
382  1, 64, 72, 64, 1, 0, 0, 242, 1, 68, 136, 192, 0, 0, 0, 26, 64, 4, 136, 32, 0, 0, 0, 2, 64, 7,
383  136, 64, 0, 0, 0, 10, 64, 6, 136, 160, 0, 0, 0, 18, 64, 5, 2, 0, 6, 40, 0, 0, 0, 0, 0, 0, 0,
384  0, 2, 0, 1, 41, 0, 0, 0, 0, 5, 0, 2, 0
385 };
386 
387 static const Uint8 GLES2_FragmentTegra_Modulated_TextureSrc_[] = {
388  75, 132, 201, 227, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
389  0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
390  82, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
391  0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 87, 0, 0, 0, 2, 0, 0, 0, 56, 0, 0, 0,
392  13, 0, 0, 0, 101, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 105, 0, 0, 0, 1, 0, 0, 0, 4,
393  0, 0, 0, 22, 0, 0, 0, 106, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 114, 0, 0, 0, 1, 0,
394  0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 115, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 135, 0, 0,
395  0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 135,
396  0, 0, 0, 176, 0, 0, 0, 176, 0, 0, 0, 20, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
397  0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0,
398  0, 0, 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 109, 111, 100, 117, 108,
399  97, 116, 105, 111, 110, 0, 117, 95, 116, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0,
400  2, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1,
401  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 94, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0,
402  0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
403  0, 0, 1, 32, 32, 17, 241, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240,
404  0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 1, 0,
405  0, 0, 2, 0, 0, 0, 21, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
406  0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
407  0, 0, 65, 82, 50, 48, 45, 66, 73, 78, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 65, 37, 0, 0, 0, 0, 8, 0,
408  129, 0, 1, 0, 0, 21, 0, 0, 0, 0, 2, 0, 1, 38, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 38, 186, 81,
409  78, 16, 2, 1, 0, 0, 2, 0, 1, 39, 0, 4, 0, 0, 0, 0, 0, 0, 2, 0, 1, 40, 1, 0, 0, 0, 5, 0, 0, 0,
410  16, 0, 4, 40, 40, 160, 1, 0, 0, 242, 1, 66, 8, 192, 1, 0, 0, 242, 1, 64, 104, 32, 1, 0, 0, 242,
411  1, 70, 72, 64, 1, 0, 0, 242, 1, 68, 104, 192, 0, 0, 0, 242, 65, 4, 232, 32, 0, 0, 0, 242, 65,
412  0, 40, 64, 0, 0, 0, 242, 65, 6, 72, 160, 0, 0, 0, 242, 65, 5, 2, 0, 6, 40, 0, 0, 0, 0, 0, 0,
413  0, 0, 2, 0, 1, 41, 0, 0, 0, 0, 5, 0, 2, 0
414 };
415 
416 static const GLES2_ShaderInstance GLES2_VertexTegra_Default = {
418  GL_NVIDIA_PLATFORM_BINARY_NV,
419  sizeof(GLES2_VertexTegra_Default_),
420  GLES2_VertexTegra_Default_
421 };
422 
423 static const GLES2_ShaderInstance GLES2_FragmentTegra_None_SolidSrc = {
425  GL_NVIDIA_PLATFORM_BINARY_NV,
426  sizeof(GLES2_FragmentTegra_None_SolidSrc_),
427  GLES2_FragmentTegra_None_SolidSrc_
428 };
429 
430 static const GLES2_ShaderInstance GLES2_FragmentTegra_Alpha_SolidSrc = {
432  GL_NVIDIA_PLATFORM_BINARY_NV,
433  sizeof(GLES2_FragmentTegra_Alpha_SolidSrc_),
434  GLES2_FragmentTegra_Alpha_SolidSrc_
435 };
436 
437 static const GLES2_ShaderInstance GLES2_FragmentTegra_Additive_SolidSrc = {
439  GL_NVIDIA_PLATFORM_BINARY_NV,
440  sizeof(GLES2_FragmentTegra_Additive_SolidSrc_),
441  GLES2_FragmentTegra_Additive_SolidSrc_
442 };
443 
444 static const GLES2_ShaderInstance GLES2_FragmentTegra_Modulated_SolidSrc = {
446  GL_NVIDIA_PLATFORM_BINARY_NV,
447  sizeof(GLES2_FragmentTegra_Modulated_SolidSrc_),
448  GLES2_FragmentTegra_Modulated_SolidSrc_
449 };
450 
451 static const GLES2_ShaderInstance GLES2_FragmentTegra_None_TextureSrc = {
453  GL_NVIDIA_PLATFORM_BINARY_NV,
454  sizeof(GLES2_FragmentTegra_None_TextureSrc_),
455  GLES2_FragmentTegra_None_TextureSrc_
456 };
457 
458 static const GLES2_ShaderInstance GLES2_FragmentTegra_Alpha_TextureSrc = {
460  GL_NVIDIA_PLATFORM_BINARY_NV,
461  sizeof(GLES2_FragmentTegra_Alpha_TextureSrc_),
462  GLES2_FragmentTegra_Alpha_TextureSrc_
463 };
464 
465 static const GLES2_ShaderInstance GLES2_FragmentTegra_Additive_TextureSrc = {
467  GL_NVIDIA_PLATFORM_BINARY_NV,
468  sizeof(GLES2_FragmentTegra_Additive_TextureSrc_),
469  GLES2_FragmentTegra_Additive_TextureSrc_
470 };
471 
472 static const GLES2_ShaderInstance GLES2_FragmentTegra_Modulated_TextureSrc = {
474  GL_NVIDIA_PLATFORM_BINARY_NV,
475  sizeof(GLES2_FragmentTegra_Modulated_TextureSrc_),
476  GLES2_FragmentTegra_Modulated_TextureSrc_
477 };
478 
479 #endif /* GLES2_INCLUDE_NVIDIA_SHADERS */
480 
481 /*************************************************************************************************
482  * Vertex/fragment shader definitions *
483  *************************************************************************************************/
484 
485 static GLES2_Shader GLES2_VertexShader_Default = {
486 #if GLES2_INCLUDE_NVIDIA_SHADERS
487  2,
488 #else
489  1,
490 #endif
491  {
492 #if GLES2_INCLUDE_NVIDIA_SHADERS
493  &GLES2_VertexTegra_Default,
494 #endif
495  &GLES2_VertexSrc_Default
496  }
497 };
498 
499 static GLES2_Shader GLES2_FragmentShader_None_SolidSrc = {
500 #if GLES2_INCLUDE_NVIDIA_SHADERS
501  2,
502 #else
503  1,
504 #endif
505  {
506 #if GLES2_INCLUDE_NVIDIA_SHADERS
507  &GLES2_FragmentTegra_None_SolidSrc,
508 #endif
509  &GLES2_FragmentSrc_SolidSrc
510  }
511 };
512 
513 static GLES2_Shader GLES2_FragmentShader_Alpha_SolidSrc = {
514 #if GLES2_INCLUDE_NVIDIA_SHADERS
515  2,
516 #else
517  1,
518 #endif
519  {
520 #if GLES2_INCLUDE_NVIDIA_SHADERS
521  &GLES2_FragmentTegra_Alpha_SolidSrc,
522 #endif
523  &GLES2_FragmentSrc_SolidSrc
524  }
525 };
526 
527 static GLES2_Shader GLES2_FragmentShader_Additive_SolidSrc = {
528 #if GLES2_INCLUDE_NVIDIA_SHADERS
529  2,
530 #else
531  1,
532 #endif
533  {
534 #if GLES2_INCLUDE_NVIDIA_SHADERS
535  &GLES2_FragmentTegra_Additive_SolidSrc,
536 #endif
537  &GLES2_FragmentSrc_SolidSrc
538  }
539 };
540 
541 static GLES2_Shader GLES2_FragmentShader_Modulated_SolidSrc = {
542 #if GLES2_INCLUDE_NVIDIA_SHADERS
543  2,
544 #else
545  1,
546 #endif
547  {
548 #if GLES2_INCLUDE_NVIDIA_SHADERS
549  &GLES2_FragmentTegra_Modulated_SolidSrc,
550 #endif
551  &GLES2_FragmentSrc_SolidSrc
552  }
553 };
554 
555 static GLES2_Shader GLES2_FragmentShader_None_TextureABGRSrc = {
556 #if GLES2_INCLUDE_NVIDIA_SHADERS
557  2,
558 #else
559  1,
560 #endif
561  {
562 #if GLES2_INCLUDE_NVIDIA_SHADERS
563  &GLES2_FragmentTegra_None_TextureSrc,
564 #endif
565  &GLES2_FragmentSrc_TextureABGRSrc
566  }
567 };
568 
569 static GLES2_Shader GLES2_FragmentShader_Alpha_TextureABGRSrc = {
570 #if GLES2_INCLUDE_NVIDIA_SHADERS
571  2,
572 #else
573  1,
574 #endif
575  {
576 #if GLES2_INCLUDE_NVIDIA_SHADERS
577  &GLES2_FragmentTegra_Alpha_TextureSrc,
578 #endif
579  &GLES2_FragmentSrc_TextureABGRSrc
580  }
581 };
582 
583 static GLES2_Shader GLES2_FragmentShader_Additive_TextureABGRSrc = {
584 #if GLES2_INCLUDE_NVIDIA_SHADERS
585  2,
586 #else
587  1,
588 #endif
589  {
590 #if GLES2_INCLUDE_NVIDIA_SHADERS
591  &GLES2_FragmentTegra_Additive_TextureSrc,
592 #endif
593  &GLES2_FragmentSrc_TextureABGRSrc
594  }
595 };
596 
597 static GLES2_Shader GLES2_FragmentShader_Modulated_TextureABGRSrc = {
598 #if GLES2_INCLUDE_NVIDIA_SHADERS
599  2,
600 #else
601  1,
602 #endif
603  {
604 #if GLES2_INCLUDE_NVIDIA_SHADERS
605  &GLES2_FragmentTegra_Modulated_TextureSrc,
606 #endif
607  &GLES2_FragmentSrc_TextureABGRSrc
608  }
609 };
610 
611 static GLES2_Shader GLES2_FragmentShader_None_TextureARGBSrc = {
612  1,
613  {
614  &GLES2_FragmentSrc_TextureARGBSrc
615  }
616 };
617 
618 static GLES2_Shader GLES2_FragmentShader_Alpha_TextureARGBSrc = {
619  1,
620  {
621  &GLES2_FragmentSrc_TextureARGBSrc
622  }
623 };
624 
625 static GLES2_Shader GLES2_FragmentShader_Additive_TextureARGBSrc = {
626  1,
627  {
628  &GLES2_FragmentSrc_TextureARGBSrc
629  }
630 };
631 
632 static GLES2_Shader GLES2_FragmentShader_Modulated_TextureARGBSrc = {
633  1,
634  {
635  &GLES2_FragmentSrc_TextureARGBSrc
636  }
637 };
638 
639 static GLES2_Shader GLES2_FragmentShader_None_TextureRGBSrc = {
640  1,
641  {
642  &GLES2_FragmentSrc_TextureRGBSrc
643  }
644 };
645 
646 static GLES2_Shader GLES2_FragmentShader_Alpha_TextureRGBSrc = {
647  1,
648  {
649  &GLES2_FragmentSrc_TextureRGBSrc
650  }
651 };
652 
653 static GLES2_Shader GLES2_FragmentShader_Additive_TextureRGBSrc = {
654  1,
655  {
656  &GLES2_FragmentSrc_TextureRGBSrc
657  }
658 };
659 
660 static GLES2_Shader GLES2_FragmentShader_Modulated_TextureRGBSrc = {
661  1,
662  {
663  &GLES2_FragmentSrc_TextureRGBSrc
664  }
665 };
666 
667 static GLES2_Shader GLES2_FragmentShader_None_TextureBGRSrc = {
668  1,
669  {
670  &GLES2_FragmentSrc_TextureBGRSrc
671  }
672 };
673 
674 static GLES2_Shader GLES2_FragmentShader_Alpha_TextureBGRSrc = {
675  1,
676  {
677  &GLES2_FragmentSrc_TextureBGRSrc
678  }
679 };
680 
681 static GLES2_Shader GLES2_FragmentShader_Additive_TextureBGRSrc = {
682  1,
683  {
684  &GLES2_FragmentSrc_TextureBGRSrc
685  }
686 };
687 
688 static GLES2_Shader GLES2_FragmentShader_Modulated_TextureBGRSrc = {
689  1,
690  {
691  &GLES2_FragmentSrc_TextureBGRSrc
692  }
693 };
694 
695 /*************************************************************************************************
696  * Shader selector *
697  *************************************************************************************************/
698 
699 const GLES2_Shader *GLES2_GetShader(GLES2_ShaderType type, SDL_BlendMode blendMode)
700 {
701  switch (type)
702  {
703  case GLES2_SHADER_VERTEX_DEFAULT:
704  return &GLES2_VertexShader_Default;
705  case GLES2_SHADER_FRAGMENT_SOLID_SRC:
706  switch (blendMode)
707  {
708  case SDL_BLENDMODE_NONE:
709  return &GLES2_FragmentShader_None_SolidSrc;
710  case SDL_BLENDMODE_BLEND:
711  return &GLES2_FragmentShader_Alpha_SolidSrc;
712  case SDL_BLENDMODE_ADD:
713  return &GLES2_FragmentShader_Additive_SolidSrc;
714  case SDL_BLENDMODE_MOD:
715  return &GLES2_FragmentShader_Modulated_SolidSrc;
716  default:
717  return NULL;
718  }
719  case GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_SRC:
720  switch (blendMode)
721  {
722  case SDL_BLENDMODE_NONE:
723  return &GLES2_FragmentShader_None_TextureABGRSrc;
724  case SDL_BLENDMODE_BLEND:
725  return &GLES2_FragmentShader_Alpha_TextureABGRSrc;
726  case SDL_BLENDMODE_ADD:
727  return &GLES2_FragmentShader_Additive_TextureABGRSrc;
728  case SDL_BLENDMODE_MOD:
729  return &GLES2_FragmentShader_Modulated_TextureABGRSrc;
730  default:
731  return NULL;
732  }
733  case GLES2_SHADER_FRAGMENT_TEXTURE_ARGB_SRC:
734  switch (blendMode)
735  {
736  case SDL_BLENDMODE_NONE:
737  return &GLES2_FragmentShader_None_TextureARGBSrc;
738  case SDL_BLENDMODE_BLEND:
739  return &GLES2_FragmentShader_Alpha_TextureARGBSrc;
740  case SDL_BLENDMODE_ADD:
741  return &GLES2_FragmentShader_Additive_TextureARGBSrc;
742  case SDL_BLENDMODE_MOD:
743  return &GLES2_FragmentShader_Modulated_TextureARGBSrc;
744  default:
745  return NULL;
746  }
747 
748  case GLES2_SHADER_FRAGMENT_TEXTURE_RGB_SRC:
749  switch (blendMode)
750  {
751  case SDL_BLENDMODE_NONE:
752  return &GLES2_FragmentShader_None_TextureRGBSrc;
753  case SDL_BLENDMODE_BLEND:
754  return &GLES2_FragmentShader_Alpha_TextureRGBSrc;
755  case SDL_BLENDMODE_ADD:
756  return &GLES2_FragmentShader_Additive_TextureRGBSrc;
757  case SDL_BLENDMODE_MOD:
758  return &GLES2_FragmentShader_Modulated_TextureRGBSrc;
759  default:
760  return NULL;
761  }
762 
763  case GLES2_SHADER_FRAGMENT_TEXTURE_BGR_SRC:
764  switch (blendMode)
765  {
766  case SDL_BLENDMODE_NONE:
767  return &GLES2_FragmentShader_None_TextureBGRSrc;
768  case SDL_BLENDMODE_BLEND:
769  return &GLES2_FragmentShader_Alpha_TextureBGRSrc;
770  case SDL_BLENDMODE_ADD:
771  return &GLES2_FragmentShader_Additive_TextureBGRSrc;
772  case SDL_BLENDMODE_MOD:
773  return &GLES2_FragmentShader_Modulated_TextureBGRSrc;
774  default:
775  return NULL;
776  }
777 
778  default:
779  return NULL;
780  }
781 }
782 
783 #endif /* SDL_VIDEO_RENDER_OGL_ES2 && !SDL_RENDER_DISABLED */
784 
785 /* vi: set ts=4 sw=4 expandtab: */
#define GL_FRAGMENT_SHADER
Definition: gl2.h:259
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
Definition: gl2ext.h:845
SDL_BlendMode
The blend mode used in SDL_RenderCopy() and drawing operations.
Definition: SDL_blendmode.h:40
#define NULL
Definition: ftobjs.h:61
#define GL_VERTEX_SHADER
Definition: gl2.h:260
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:129