SDL_shaders_gles2.c (39164B)
1/* 2 Simple DirectMedia Layer 3 Copyright (C) 1997-2014 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_internal.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 34static 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 55static 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 65static 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 */ 79static 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 */ 96static 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 */ 114static 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/* YUV to ABGR conversion */ 130static const Uint8 GLES2_FragmentSrc_TextureYUVSrc_[] = " \ 131 precision mediump float; \ 132 uniform sampler2D u_texture; \ 133 uniform sampler2D u_texture_u; \ 134 uniform sampler2D u_texture_v; \ 135 uniform vec4 u_modulation; \ 136 varying vec2 v_texCoord; \ 137 \ 138 void main() \ 139 { \ 140 mediump vec3 yuv; \ 141 lowp vec3 rgb; \ 142 yuv.x = texture2D(u_texture, v_texCoord).r; \ 143 yuv.y = texture2D(u_texture_u, v_texCoord).r - 0.5; \ 144 yuv.z = texture2D(u_texture_v, v_texCoord).r - 0.5; \ 145 rgb = mat3( 1, 1, 1, \ 146 0, -0.39465, 2.03211, \ 147 1.13983, -0.58060, 0) * yuv; \ 148 gl_FragColor = vec4(rgb, 1); \ 149 gl_FragColor *= u_modulation; \ 150 } \ 151"; 152 153/* NV12 to ABGR conversion */ 154static const Uint8 GLES2_FragmentSrc_TextureNV12Src_[] = " \ 155 precision mediump float; \ 156 uniform sampler2D u_texture; \ 157 uniform sampler2D u_texture_u; \ 158 uniform vec4 u_modulation; \ 159 varying vec2 v_texCoord; \ 160 \ 161 void main() \ 162 { \ 163 mediump vec3 yuv; \ 164 lowp vec3 rgb; \ 165 yuv.x = texture2D(u_texture, v_texCoord).r; \ 166 yuv.yz = texture2D(u_texture_u, v_texCoord).ra - 0.5; \ 167 rgb = mat3( 1, 1, 1, \ 168 0, -0.39465, 2.03211, \ 169 1.13983, -0.58060, 0) * yuv; \ 170 gl_FragColor = vec4(rgb, 1); \ 171 gl_FragColor *= u_modulation; \ 172 } \ 173"; 174 175/* NV21 to ABGR conversion */ 176static const Uint8 GLES2_FragmentSrc_TextureNV21Src_[] = " \ 177 precision mediump float; \ 178 uniform sampler2D u_texture; \ 179 uniform sampler2D u_texture_u; \ 180 uniform vec4 u_modulation; \ 181 varying vec2 v_texCoord; \ 182 \ 183 void main() \ 184 { \ 185 mediump vec3 yuv; \ 186 lowp vec3 rgb; \ 187 yuv.x = texture2D(u_texture, v_texCoord).r; \ 188 yuv.yz = texture2D(u_texture_u, v_texCoord).ar - 0.5; \ 189 rgb = mat3( 1, 1, 1, \ 190 0, -0.39465, 2.03211, \ 191 1.13983, -0.58060, 0) * yuv; \ 192 gl_FragColor = vec4(rgb, 1); \ 193 gl_FragColor *= u_modulation; \ 194 } \ 195"; 196 197static const GLES2_ShaderInstance GLES2_VertexSrc_Default = { 198 GL_VERTEX_SHADER, 199 GLES2_SOURCE_SHADER, 200 sizeof(GLES2_VertexSrc_Default_), 201 GLES2_VertexSrc_Default_ 202}; 203 204static const GLES2_ShaderInstance GLES2_FragmentSrc_SolidSrc = { 205 GL_FRAGMENT_SHADER, 206 GLES2_SOURCE_SHADER, 207 sizeof(GLES2_FragmentSrc_SolidSrc_), 208 GLES2_FragmentSrc_SolidSrc_ 209}; 210 211static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureABGRSrc = { 212 GL_FRAGMENT_SHADER, 213 GLES2_SOURCE_SHADER, 214 sizeof(GLES2_FragmentSrc_TextureABGRSrc_), 215 GLES2_FragmentSrc_TextureABGRSrc_ 216}; 217 218static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureARGBSrc = { 219 GL_FRAGMENT_SHADER, 220 GLES2_SOURCE_SHADER, 221 sizeof(GLES2_FragmentSrc_TextureARGBSrc_), 222 GLES2_FragmentSrc_TextureARGBSrc_ 223}; 224 225static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureRGBSrc = { 226 GL_FRAGMENT_SHADER, 227 GLES2_SOURCE_SHADER, 228 sizeof(GLES2_FragmentSrc_TextureRGBSrc_), 229 GLES2_FragmentSrc_TextureRGBSrc_ 230}; 231 232static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureBGRSrc = { 233 GL_FRAGMENT_SHADER, 234 GLES2_SOURCE_SHADER, 235 sizeof(GLES2_FragmentSrc_TextureBGRSrc_), 236 GLES2_FragmentSrc_TextureBGRSrc_ 237}; 238 239static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureYUVSrc = { 240 GL_FRAGMENT_SHADER, 241 GLES2_SOURCE_SHADER, 242 sizeof(GLES2_FragmentSrc_TextureYUVSrc_), 243 GLES2_FragmentSrc_TextureYUVSrc_ 244}; 245 246static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureNV12Src = { 247 GL_FRAGMENT_SHADER, 248 GLES2_SOURCE_SHADER, 249 sizeof(GLES2_FragmentSrc_TextureNV12Src_), 250 GLES2_FragmentSrc_TextureNV12Src_ 251}; 252 253static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureNV21Src = { 254 GL_FRAGMENT_SHADER, 255 GLES2_SOURCE_SHADER, 256 sizeof(GLES2_FragmentSrc_TextureNV21Src_), 257 GLES2_FragmentSrc_TextureNV21Src_ 258}; 259 260 261/************************************************************************************************* 262 * Vertex/fragment shader binaries (NVIDIA Tegra 1/2) * 263 *************************************************************************************************/ 264 265#if GLES2_INCLUDE_NVIDIA_SHADERS 266 267#define GL_NVIDIA_PLATFORM_BINARY_NV 0x890B 268 269static const Uint8 GLES2_VertexTegra_Default_[] = { 270 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, 271 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, 272 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, 273 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, 274 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, 275 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, 276 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, 277 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, 278 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, 279 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, 280 95, 112, 111, 115, 105, 116, 105, 111, 110, 0, 97, 95, 116, 101, 120, 67, 111, 111, 114, 100, 281 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 112, 114, 111, 106, 101, 99, 282 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, 283 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, 284 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, 285 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, 286 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, 287 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, 288 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, 289 0, 0, 42, 16, 128, 0, 195, 192, 6, 129, 252, 255, 65, 96, 108, 28, 0, 0, 0, 0, 0, 1, 195, 192, 290 6, 1, 252, 255, 33, 96, 108, 156, 31, 64, 8, 1, 64, 0, 131, 192, 6, 1, 156, 159, 65, 96, 108, 291 28, 0, 0, 85, 32, 0, 1, 195, 192, 6, 1, 252, 255, 33, 96, 108, 156, 31, 64, 0, 64, 64, 0, 131, 292 192, 134, 1, 152, 31, 65, 96, 108, 156, 31, 64, 127, 48, 0, 1, 195, 192, 6, 129, 129, 255, 33, 293 96 294}; 295 296static const Uint8 GLES2_FragmentTegra_None_SolidSrc_[] = { 297 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, 298 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, 299 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, 300 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, 301 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, 302 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, 303 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, 304 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, 305 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, 306 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, 307 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, 308 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, 309 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, 310 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, 311 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, 312 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, 313 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, 314 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, 315 192, 200, 0, 0, 0, 242, 65, 63, 128, 168, 0, 0, 0, 242, 65, 63, 64, 72, 0, 0, 0, 242, 65, 63, 316 1, 0, 6, 40, 0, 0, 0, 0, 1, 0, 1, 41, 5, 0, 2, 0 317}; 318 319static const Uint8 GLES2_FragmentTegra_Alpha_SolidSrc_[] = { 320 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, 321 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, 322 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, 323 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, 324 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, 325 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, 326 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, 327 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, 328 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, 329 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, 330 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, 331 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, 332 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, 333 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, 334 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, 335 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, 336 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, 337 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, 338 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, 339 0, 0, 242, 65, 62, 194, 72, 1, 0, 0, 250, 65, 63, 194, 40, 1, 0, 0, 250, 65, 63, 192, 168, 1, 340 0, 0, 242, 1, 64, 192, 168, 1, 0, 0, 242, 1, 68, 168, 32, 0, 0, 0, 50, 64, 0, 192, 168, 15, 341 0, 0, 242, 1, 66, 168, 64, 0, 16, 0, 242, 65, 1, 232, 231, 15, 0, 0, 242, 65, 62, 168, 160, 342 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, 343 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 344}; 345 346static const Uint8 GLES2_FragmentTegra_Additive_SolidSrc_[] = { 347 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, 348 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, 349 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, 350 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, 351 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, 352 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, 353 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, 354 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, 355 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, 356 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, 357 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, 358 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, 359 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, 360 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, 361 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, 362 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, 363 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, 364 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, 365 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, 366 1, 0, 6, 40, 0, 0, 0, 0, 1, 0, 1, 41, 5, 0, 2, 0 367}; 368 369static const Uint8 GLES2_FragmentTegra_Modulated_SolidSrc_[] = { 370 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, 371 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, 372 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, 373 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, 374 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, 375 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, 376 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, 377 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, 378 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, 379 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, 380 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, 381 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, 382 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, 383 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, 384 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, 385 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, 386 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, 387 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, 388 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, 389 1, 0, 6, 40, 0, 0, 0, 0, 1, 0, 1, 41, 5, 0, 2, 0 390}; 391 392static const Uint8 GLES2_FragmentTegra_None_TextureSrc_[] = { 393 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, 394 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, 395 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, 396 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, 397 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, 398 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, 399 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, 400 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, 401 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, 402 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, 403 0, 0, 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 109, 111, 100, 117, 108, 404 97, 116, 105, 111, 110, 0, 117, 95, 116, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0, 405 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, 406 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, 407 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, 408 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, 409 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, 410 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, 411 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, 412 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, 413 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, 414 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, 415 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, 416 0, 0, 0, 0, 1, 0, 1, 41, 5, 0, 2, 0 417}; 418 419static const Uint8 GLES2_FragmentTegra_Alpha_TextureSrc_[] = { 420 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, 421 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, 422 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, 423 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, 424 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, 425 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, 426 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, 427 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, 428 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, 429 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, 430 0, 0, 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 109, 111, 100, 117, 108, 431 97, 116, 105, 111, 110, 0, 117, 95, 116, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0, 432 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, 433 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, 434 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, 435 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, 436 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, 437 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, 438 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, 439 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, 440 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, 441 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, 442 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, 443 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, 444 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, 445 0, 0, 0, 0, 2, 0, 1, 41, 0, 0, 0, 0, 5, 0, 2, 0 446}; 447 448static const Uint8 GLES2_FragmentTegra_Additive_TextureSrc_[] = { 449 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, 450 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, 451 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, 452 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, 453 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, 454 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, 455 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, 456 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, 457 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, 458 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, 459 0, 0, 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 109, 111, 100, 117, 108, 460 97, 116, 105, 111, 110, 0, 117, 95, 116, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0, 461 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, 462 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, 463 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, 464 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, 465 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, 466 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, 467 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, 468 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, 469 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, 470 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, 471 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, 472 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, 473 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, 474 0, 2, 0, 1, 41, 0, 0, 0, 0, 5, 0, 2, 0 475}; 476 477static const Uint8 GLES2_FragmentTegra_Modulated_TextureSrc_[] = { 478 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, 479 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, 480 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, 481 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, 482 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, 483 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, 484 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, 485 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, 486 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, 487 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, 488 0, 0, 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 109, 111, 100, 117, 108, 489 97, 116, 105, 111, 110, 0, 117, 95, 116, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0, 490 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, 491 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, 492 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, 493 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, 494 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, 495 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, 496 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, 497 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, 498 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, 499 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, 500 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, 501 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, 502 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, 503 0, 0, 2, 0, 1, 41, 0, 0, 0, 0, 5, 0, 2, 0 504}; 505 506static const GLES2_ShaderInstance GLES2_VertexTegra_Default = { 507 GL_VERTEX_SHADER, 508 GL_NVIDIA_PLATFORM_BINARY_NV, 509 sizeof(GLES2_VertexTegra_Default_), 510 GLES2_VertexTegra_Default_ 511}; 512 513static const GLES2_ShaderInstance GLES2_FragmentTegra_None_SolidSrc = { 514 GL_FRAGMENT_SHADER, 515 GL_NVIDIA_PLATFORM_BINARY_NV, 516 sizeof(GLES2_FragmentTegra_None_SolidSrc_), 517 GLES2_FragmentTegra_None_SolidSrc_ 518}; 519 520static const GLES2_ShaderInstance GLES2_FragmentTegra_Alpha_SolidSrc = { 521 GL_FRAGMENT_SHADER, 522 GL_NVIDIA_PLATFORM_BINARY_NV, 523 sizeof(GLES2_FragmentTegra_Alpha_SolidSrc_), 524 GLES2_FragmentTegra_Alpha_SolidSrc_ 525}; 526 527static const GLES2_ShaderInstance GLES2_FragmentTegra_Additive_SolidSrc = { 528 GL_FRAGMENT_SHADER, 529 GL_NVIDIA_PLATFORM_BINARY_NV, 530 sizeof(GLES2_FragmentTegra_Additive_SolidSrc_), 531 GLES2_FragmentTegra_Additive_SolidSrc_ 532}; 533 534static const GLES2_ShaderInstance GLES2_FragmentTegra_Modulated_SolidSrc = { 535 GL_FRAGMENT_SHADER, 536 GL_NVIDIA_PLATFORM_BINARY_NV, 537 sizeof(GLES2_FragmentTegra_Modulated_SolidSrc_), 538 GLES2_FragmentTegra_Modulated_SolidSrc_ 539}; 540 541static const GLES2_ShaderInstance GLES2_FragmentTegra_None_TextureSrc = { 542 GL_FRAGMENT_SHADER, 543 GL_NVIDIA_PLATFORM_BINARY_NV, 544 sizeof(GLES2_FragmentTegra_None_TextureSrc_), 545 GLES2_FragmentTegra_None_TextureSrc_ 546}; 547 548static const GLES2_ShaderInstance GLES2_FragmentTegra_Alpha_TextureSrc = { 549 GL_FRAGMENT_SHADER, 550 GL_NVIDIA_PLATFORM_BINARY_NV, 551 sizeof(GLES2_FragmentTegra_Alpha_TextureSrc_), 552 GLES2_FragmentTegra_Alpha_TextureSrc_ 553}; 554 555static const GLES2_ShaderInstance GLES2_FragmentTegra_Additive_TextureSrc = { 556 GL_FRAGMENT_SHADER, 557 GL_NVIDIA_PLATFORM_BINARY_NV, 558 sizeof(GLES2_FragmentTegra_Additive_TextureSrc_), 559 GLES2_FragmentTegra_Additive_TextureSrc_ 560}; 561 562static const GLES2_ShaderInstance GLES2_FragmentTegra_Modulated_TextureSrc = { 563 GL_FRAGMENT_SHADER, 564 GL_NVIDIA_PLATFORM_BINARY_NV, 565 sizeof(GLES2_FragmentTegra_Modulated_TextureSrc_), 566 GLES2_FragmentTegra_Modulated_TextureSrc_ 567}; 568 569#endif /* GLES2_INCLUDE_NVIDIA_SHADERS */ 570 571/************************************************************************************************* 572 * Vertex/fragment shader definitions * 573 *************************************************************************************************/ 574 575static GLES2_Shader GLES2_VertexShader_Default = { 576#if GLES2_INCLUDE_NVIDIA_SHADERS 577 2, 578#else 579 1, 580#endif 581 { 582#if GLES2_INCLUDE_NVIDIA_SHADERS 583 &GLES2_VertexTegra_Default, 584#endif 585 &GLES2_VertexSrc_Default 586 } 587}; 588 589static GLES2_Shader GLES2_FragmentShader_None_SolidSrc = { 590#if GLES2_INCLUDE_NVIDIA_SHADERS 591 2, 592#else 593 1, 594#endif 595 { 596#if GLES2_INCLUDE_NVIDIA_SHADERS 597 &GLES2_FragmentTegra_None_SolidSrc, 598#endif 599 &GLES2_FragmentSrc_SolidSrc 600 } 601}; 602 603static GLES2_Shader GLES2_FragmentShader_Alpha_SolidSrc = { 604#if GLES2_INCLUDE_NVIDIA_SHADERS 605 2, 606#else 607 1, 608#endif 609 { 610#if GLES2_INCLUDE_NVIDIA_SHADERS 611 &GLES2_FragmentTegra_Alpha_SolidSrc, 612#endif 613 &GLES2_FragmentSrc_SolidSrc 614 } 615}; 616 617static GLES2_Shader GLES2_FragmentShader_Additive_SolidSrc = { 618#if GLES2_INCLUDE_NVIDIA_SHADERS 619 2, 620#else 621 1, 622#endif 623 { 624#if GLES2_INCLUDE_NVIDIA_SHADERS 625 &GLES2_FragmentTegra_Additive_SolidSrc, 626#endif 627 &GLES2_FragmentSrc_SolidSrc 628 } 629}; 630 631static GLES2_Shader GLES2_FragmentShader_Modulated_SolidSrc = { 632#if GLES2_INCLUDE_NVIDIA_SHADERS 633 2, 634#else 635 1, 636#endif 637 { 638#if GLES2_INCLUDE_NVIDIA_SHADERS 639 &GLES2_FragmentTegra_Modulated_SolidSrc, 640#endif 641 &GLES2_FragmentSrc_SolidSrc 642 } 643}; 644 645static GLES2_Shader GLES2_FragmentShader_None_TextureABGRSrc = { 646#if GLES2_INCLUDE_NVIDIA_SHADERS 647 2, 648#else 649 1, 650#endif 651 { 652#if GLES2_INCLUDE_NVIDIA_SHADERS 653 &GLES2_FragmentTegra_None_TextureSrc, 654#endif 655 &GLES2_FragmentSrc_TextureABGRSrc 656 } 657}; 658 659static GLES2_Shader GLES2_FragmentShader_Alpha_TextureABGRSrc = { 660#if GLES2_INCLUDE_NVIDIA_SHADERS 661 2, 662#else 663 1, 664#endif 665 { 666#if GLES2_INCLUDE_NVIDIA_SHADERS 667 &GLES2_FragmentTegra_Alpha_TextureSrc, 668#endif 669 &GLES2_FragmentSrc_TextureABGRSrc 670 } 671}; 672 673static GLES2_Shader GLES2_FragmentShader_Additive_TextureABGRSrc = { 674#if GLES2_INCLUDE_NVIDIA_SHADERS 675 2, 676#else 677 1, 678#endif 679 { 680#if GLES2_INCLUDE_NVIDIA_SHADERS 681 &GLES2_FragmentTegra_Additive_TextureSrc, 682#endif 683 &GLES2_FragmentSrc_TextureABGRSrc 684 } 685}; 686 687static GLES2_Shader GLES2_FragmentShader_Modulated_TextureABGRSrc = { 688#if GLES2_INCLUDE_NVIDIA_SHADERS 689 2, 690#else 691 1, 692#endif 693 { 694#if GLES2_INCLUDE_NVIDIA_SHADERS 695 &GLES2_FragmentTegra_Modulated_TextureSrc, 696#endif 697 &GLES2_FragmentSrc_TextureABGRSrc 698 } 699}; 700 701static GLES2_Shader GLES2_FragmentShader_None_TextureARGBSrc = { 702 1, 703 { 704 &GLES2_FragmentSrc_TextureARGBSrc 705 } 706}; 707 708static GLES2_Shader GLES2_FragmentShader_Alpha_TextureARGBSrc = { 709 1, 710 { 711 &GLES2_FragmentSrc_TextureARGBSrc 712 } 713}; 714 715static GLES2_Shader GLES2_FragmentShader_Additive_TextureARGBSrc = { 716 1, 717 { 718 &GLES2_FragmentSrc_TextureARGBSrc 719 } 720}; 721 722static GLES2_Shader GLES2_FragmentShader_Modulated_TextureARGBSrc = { 723 1, 724 { 725 &GLES2_FragmentSrc_TextureARGBSrc 726 } 727}; 728 729static GLES2_Shader GLES2_FragmentShader_None_TextureRGBSrc = { 730 1, 731 { 732 &GLES2_FragmentSrc_TextureRGBSrc 733 } 734}; 735 736static GLES2_Shader GLES2_FragmentShader_Alpha_TextureRGBSrc = { 737 1, 738 { 739 &GLES2_FragmentSrc_TextureRGBSrc 740 } 741}; 742 743static GLES2_Shader GLES2_FragmentShader_Additive_TextureRGBSrc = { 744 1, 745 { 746 &GLES2_FragmentSrc_TextureRGBSrc 747 } 748}; 749 750static GLES2_Shader GLES2_FragmentShader_Modulated_TextureRGBSrc = { 751 1, 752 { 753 &GLES2_FragmentSrc_TextureRGBSrc 754 } 755}; 756 757static GLES2_Shader GLES2_FragmentShader_None_TextureBGRSrc = { 758 1, 759 { 760 &GLES2_FragmentSrc_TextureBGRSrc 761 } 762}; 763 764static GLES2_Shader GLES2_FragmentShader_Alpha_TextureBGRSrc = { 765 1, 766 { 767 &GLES2_FragmentSrc_TextureBGRSrc 768 } 769}; 770 771static GLES2_Shader GLES2_FragmentShader_Additive_TextureBGRSrc = { 772 1, 773 { 774 &GLES2_FragmentSrc_TextureBGRSrc 775 } 776}; 777 778static GLES2_Shader GLES2_FragmentShader_Modulated_TextureBGRSrc = { 779 1, 780 { 781 &GLES2_FragmentSrc_TextureBGRSrc 782 } 783}; 784 785static GLES2_Shader GLES2_FragmentShader_TextureYUVSrc = { 786 1, 787 { 788 &GLES2_FragmentSrc_TextureYUVSrc 789 } 790}; 791 792static GLES2_Shader GLES2_FragmentShader_TextureNV12Src = { 793 1, 794 { 795 &GLES2_FragmentSrc_TextureNV12Src 796 } 797}; 798 799static GLES2_Shader GLES2_FragmentShader_TextureNV21Src = { 800 1, 801 { 802 &GLES2_FragmentSrc_TextureNV21Src 803 } 804}; 805 806 807/************************************************************************************************* 808 * Shader selector * 809 *************************************************************************************************/ 810 811const GLES2_Shader *GLES2_GetShader(GLES2_ShaderType type, SDL_BlendMode blendMode) 812{ 813 switch (type) 814 { 815 case GLES2_SHADER_VERTEX_DEFAULT: 816 return &GLES2_VertexShader_Default; 817 case GLES2_SHADER_FRAGMENT_SOLID_SRC: 818 switch (blendMode) 819 { 820 case SDL_BLENDMODE_NONE: 821 return &GLES2_FragmentShader_None_SolidSrc; 822 case SDL_BLENDMODE_BLEND: 823 return &GLES2_FragmentShader_Alpha_SolidSrc; 824 case SDL_BLENDMODE_ADD: 825 return &GLES2_FragmentShader_Additive_SolidSrc; 826 case SDL_BLENDMODE_MOD: 827 return &GLES2_FragmentShader_Modulated_SolidSrc; 828 default: 829 return NULL; 830 } 831 case GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_SRC: 832 switch (blendMode) 833 { 834 case SDL_BLENDMODE_NONE: 835 return &GLES2_FragmentShader_None_TextureABGRSrc; 836 case SDL_BLENDMODE_BLEND: 837 return &GLES2_FragmentShader_Alpha_TextureABGRSrc; 838 case SDL_BLENDMODE_ADD: 839 return &GLES2_FragmentShader_Additive_TextureABGRSrc; 840 case SDL_BLENDMODE_MOD: 841 return &GLES2_FragmentShader_Modulated_TextureABGRSrc; 842 default: 843 return NULL; 844 } 845 case GLES2_SHADER_FRAGMENT_TEXTURE_ARGB_SRC: 846 switch (blendMode) 847 { 848 case SDL_BLENDMODE_NONE: 849 return &GLES2_FragmentShader_None_TextureARGBSrc; 850 case SDL_BLENDMODE_BLEND: 851 return &GLES2_FragmentShader_Alpha_TextureARGBSrc; 852 case SDL_BLENDMODE_ADD: 853 return &GLES2_FragmentShader_Additive_TextureARGBSrc; 854 case SDL_BLENDMODE_MOD: 855 return &GLES2_FragmentShader_Modulated_TextureARGBSrc; 856 default: 857 return NULL; 858 } 859 860 case GLES2_SHADER_FRAGMENT_TEXTURE_RGB_SRC: 861 switch (blendMode) 862 { 863 case SDL_BLENDMODE_NONE: 864 return &GLES2_FragmentShader_None_TextureRGBSrc; 865 case SDL_BLENDMODE_BLEND: 866 return &GLES2_FragmentShader_Alpha_TextureRGBSrc; 867 case SDL_BLENDMODE_ADD: 868 return &GLES2_FragmentShader_Additive_TextureRGBSrc; 869 case SDL_BLENDMODE_MOD: 870 return &GLES2_FragmentShader_Modulated_TextureRGBSrc; 871 default: 872 return NULL; 873 } 874 875 case GLES2_SHADER_FRAGMENT_TEXTURE_BGR_SRC: 876 switch (blendMode) 877 { 878 case SDL_BLENDMODE_NONE: 879 return &GLES2_FragmentShader_None_TextureBGRSrc; 880 case SDL_BLENDMODE_BLEND: 881 return &GLES2_FragmentShader_Alpha_TextureBGRSrc; 882 case SDL_BLENDMODE_ADD: 883 return &GLES2_FragmentShader_Additive_TextureBGRSrc; 884 case SDL_BLENDMODE_MOD: 885 return &GLES2_FragmentShader_Modulated_TextureBGRSrc; 886 default: 887 return NULL; 888 } 889 890 case GLES2_SHADER_FRAGMENT_TEXTURE_YUV_SRC: 891 { 892 return &GLES2_FragmentShader_TextureYUVSrc; 893 } 894 895 case GLES2_SHADER_FRAGMENT_TEXTURE_NV12_SRC: 896 { 897 return &GLES2_FragmentShader_TextureNV12Src; 898 } 899 900 case GLES2_SHADER_FRAGMENT_TEXTURE_NV21_SRC: 901 { 902 return &GLES2_FragmentShader_TextureNV21Src; 903 } 904 905 default: 906 return NULL; 907 } 908} 909 910#endif /* SDL_VIDEO_RENDER_OGL_ES2 && !SDL_RENDER_DISABLED */ 911 912/* vi: set ts=4 sw=4 expandtab: */