SDL_shaders_gles2.c 38 KB

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