1 #include "evas_gl_private.h"
3 /////////////////////////////////////////////
4 #if defined (GLES_VARIETY_S3C6410)
5 const unsigned int rect_frag_bin[] =
7 # include "shader/rect_frag_bin_s3c6410.h"
11 const char rect_frag_glsl[] =
12 #include "shader/rect_frag.h"
14 Evas_GL_Program_Source shader_rect_frag_src =
17 #if defined (GLES_VARIETY_S3C6410)
18 rect_frag_bin, sizeof(rect_frag_bin)
24 #if defined (GLES_VARIETY_S3C6410)
25 const unsigned int rect_vert_bin[] =
27 # include "shader/rect_vert_bin_s3c6410.h"
30 const char rect_vert_glsl[] =
31 #include "shader/rect_vert.h"
33 Evas_GL_Program_Source shader_rect_vert_src =
36 #if defined (GLES_VARIETY_S3C6410)
37 rect_vert_bin, sizeof(rect_vert_bin)
43 /////////////////////////////////////////////
44 #if defined (GLES_VARIETY_S3C6410)
45 const unsigned int font_frag_bin[] =
47 # include "shader/font_frag_bin_s3c6410.h"
51 const char font_frag_glsl[] =
52 #include "shader/font_frag.h"
54 Evas_GL_Program_Source shader_font_frag_src =
57 #if defined (GLES_VARIETY_S3C6410)
58 font_frag_bin, sizeof(font_frag_bin)
64 #if defined (GLES_VARIETY_S3C6410)
65 const unsigned int font_vert_bin[] =
67 # include "shader/font_vert_bin_s3c6410.h"
70 const char font_vert_glsl[] =
71 #include "shader/font_vert.h"
73 Evas_GL_Program_Source shader_font_vert_src =
76 #if defined (GLES_VARIETY_S3C6410)
77 font_vert_bin, sizeof(font_vert_bin)
83 /////////////////////////////////////////////
84 #if defined (GLES_VARIETY_S3C6410)
85 const unsigned int yuv_frag_bin[] =
87 # include "shader/yuv_frag_bin_s3c6410.h"
91 const char yuv_frag_glsl[] =
92 #include "shader/yuv_frag.h"
94 Evas_GL_Program_Source shader_yuv_frag_src =
97 #if defined (GLES_VARIETY_S3C6410)
98 yuv_frag_bin, sizeof(yuv_frag_bin)
104 #if defined (GLES_VARIETY_S3C6410)
105 const unsigned int yuv_vert_bin[] =
107 # include "shader/yuv_vert_bin_s3c6410.h"
110 const char yuv_vert_glsl[] =
111 #include "shader/yuv_vert.h"
113 Evas_GL_Program_Source shader_yuv_vert_src =
116 #if defined (GLES_VARIETY_S3C6410)
117 yuv_vert_bin, sizeof(yuv_vert_bin)
123 /////////////////////////////////////////////
124 #if defined (GLES_VARIETY_S3C6410)
125 const unsigned int yuv_nomul_frag_bin[] =
127 # include "shader/yuv_nomul_frag_bin_s3c6410.h"
131 const char yuv_nomul_frag_glsl[] =
132 #include "shader/yuv_nomul_frag.h"
134 Evas_GL_Program_Source shader_yuv_nomul_frag_src =
137 #if defined (GLES_VARIETY_S3C6410)
138 yuv_nomul_frag_bin, sizeof(yuv_nomul_frag_bin)
144 #if defined (GLES_VARIETY_S3C6410)
145 const unsigned int yuv_nomul_vert_bin[] =
147 # include "shader/yuv_nomul_vert_bin_s3c6410.h"
150 const char yuv_nomul_vert_glsl[] =
151 #include "shader/yuv_nomul_vert.h"
153 Evas_GL_Program_Source shader_yuv_nomul_vert_src =
156 #if defined (GLES_VARIETY_S3C6410)
157 yuv_nomul_vert_bin, sizeof(yuv_nomul_vert_bin)
163 /////////////////////////////////////////////
164 #if defined (GLES_VARIETY_S3C6410)
165 const unsigned int tex_frag_bin[] =
167 # include "shader/tex_frag_bin_s3c6410.h"
171 const char tex_frag_glsl[] =
172 #include "shader/tex_frag.h"
174 Evas_GL_Program_Source shader_tex_frag_src =
177 #if defined (GLES_VARIETY_S3C6410)
178 tex_frag_bin, sizeof(tex_frag_bin)
184 #if defined (GLES_VARIETY_S3C6410)
185 const unsigned int tex_vert_bin[] =
187 # include "shader/tex_vert_bin_s3c6410.h"
190 const char tex_vert_glsl[] =
191 #include "shader/tex_vert.h"
193 Evas_GL_Program_Source shader_tex_vert_src =
196 #if defined (GLES_VARIETY_S3C6410)
197 tex_vert_bin, sizeof(tex_vert_bin)
203 /////////////////////////////////////////////
204 #if defined (GLES_VARIETY_S3C6410)
205 const unsigned int tex_nomul_frag_bin[] =
207 # include "shader/tex_nomul_frag_bin_s3c6410.h"
211 const char tex_nomul_frag_glsl[] =
212 #include "shader/tex_nomul_frag.h"
214 Evas_GL_Program_Source shader_tex_nomul_frag_src =
217 #if defined (GLES_VARIETY_S3C6410)
218 tex_nomul_frag_bin, sizeof(tex_nomul_frag_bin)
224 #if defined (GLES_VARIETY_S3C6410)
225 const unsigned int tex_nomul_vert_bin[] =
227 # include "shader/tex_nomul_vert_bin_s3c6410.h"
230 const char tex_nomul_vert_glsl[] =
231 #include "shader/tex_nomul_vert.h"
233 Evas_GL_Program_Source shader_tex_nomul_vert_src =
236 #if defined (GLES_VARIETY_S3C6410)
237 tex_nomul_vert_bin, sizeof(tex_nomul_vert_bin)
243 /////////////////////////////////////////////
244 #if defined (GLES_VARIETY_S3C6410)
245 const unsigned int img_frag_bin[] =
247 # include "shader/img_frag_bin_s3c6410.h"
251 const char img_frag_glsl[] =
252 #include "shader/img_frag.h"
254 Evas_GL_Program_Source shader_img_frag_src =
257 #if defined (GLES_VARIETY_S3C6410)
258 img_frag_bin, sizeof(img_frag_bin)
264 #if defined (GLES_VARIETY_S3C6410)
265 const unsigned int img_vert_bin[] =
267 # include "shader/img_vert_bin_s3c6410.h"
270 const char img_vert_glsl[] =
271 #include "shader/img_vert.h"
273 Evas_GL_Program_Source shader_img_vert_src =
276 #if defined (GLES_VARIETY_S3C6410)
277 img_vert_bin, sizeof(img_vert_bin)
283 /////////////////////////////////////////////
284 #if defined (GLES_VARIETY_S3C6410)
285 const unsigned int img_nomul_frag_bin[] =
287 # include "shader/img_nomul_frag_bin_s3c6410.h"
291 const char img_nomul_frag_glsl[] =
292 #include "shader/img_nomul_frag.h"
294 Evas_GL_Program_Source shader_img_nomul_frag_src =
297 #if defined (GLES_VARIETY_S3C6410)
298 img_nomul_frag_bin, sizeof(img_nomul_frag_bin)
304 #if defined (GLES_VARIETY_S3C6410)
305 const unsigned int img_nomul_vert_bin[] =
307 # include "shader/img_nomul_vert_bin_s3c6410.h"
310 const char img_nomul_vert_glsl[] =
311 #include "shader/img_nomul_vert.h"
313 Evas_GL_Program_Source shader_img_nomul_vert_src =
316 #if defined (GLES_VARIETY_S3C6410)
317 img_nomul_vert_bin, sizeof(img_nomul_vert_bin)
323 /////////////////////////////////////////////
324 #if defined (GLES_VARIETY_S3C6410)
325 const unsigned int img_bgra_frag_bin[] =
327 # include "shader/img_bgra_frag_bin_s3c6410.h"
331 const char img_bgra_frag_glsl[] =
332 #include "shader/img_bgra_frag.h"
334 Evas_GL_Program_Source shader_img_bgra_frag_src =
337 #if defined (GLES_VARIETY_S3C6410)
338 img_bgra_frag_bin, sizeof(img_bgra_frag_bin)
344 #if defined (GLES_VARIETY_S3C6410)
345 const unsigned int img_bgra_vert_bin[] =
347 # include "shader/img_bgra_vert_bin_s3c6410.h"
350 const char img_bgra_vert_glsl[] =
351 #include "shader/img_bgra_vert.h"
353 Evas_GL_Program_Source shader_img_bgra_vert_src =
356 #if defined (GLES_VARIETY_S3C6410)
357 img_bgra_vert_bin, sizeof(img_bgra_vert_bin)
364 /////////////////////////////////////////////
365 #if defined (GLES_VARIETY_S3C6410)
366 const unsigned int img_mask_frag_bin[] =
368 # include "shader/img_mask_frag_bin_s3c6410.h"
372 const char img_mask_frag_glsl[] =
373 #include "shader/img_mask_frag.h"
375 Evas_GL_Program_Source shader_img_mask_frag_src =
378 #if defined (GLES_VARIETY_S3C6410)
379 img_mask_frag_bin, sizeof(img_mask_frag_bin)
385 #if defined (GLES_VARIETY_S3C6410)
386 const unsigned int img_mask_vert_bin[] =
388 # include "shader/img_mask_vert_bin_s3c6410.h"
391 const char img_mask_vert_glsl[] =
392 #include "shader/img_mask_vert.h"
394 Evas_GL_Program_Source shader_img_mask_vert_src =
397 #if defined (GLES_VARIETY_S3C6410)
398 img_mask_vert_bin, sizeof(img_mask_vert_bin)
405 /////////////////////////////////////////////
406 #if defined (GLES_VARIETY_S3C6410)
407 const unsigned int img_bgra_nomul_frag_bin[] =
409 # include "shader/img_bgra_nomul_frag_bin_s3c6410.h"
413 const char img_bgra_nomul_frag_glsl[] =
414 #include "shader/img_bgra_nomul_frag.h"
416 Evas_GL_Program_Source shader_img_bgra_nomul_frag_src =
418 img_bgra_nomul_frag_glsl,
419 #if defined (GLES_VARIETY_S3C6410)
420 img_bgra_nomul_frag_bin, sizeof(img_bgra_nomul_frag_bin)
426 #if defined (GLES_VARIETY_S3C6410)
427 const unsigned int img_bgra_nomul_vert_bin[] =
429 # include "shader/img_bgra_nomul_vert_bin_s3c6410.h"
432 const char img_bgra_nomul_vert_glsl[] =
433 #include "shader/img_bgra_nomul_vert.h"
435 Evas_GL_Program_Source shader_img_bgra_nomul_vert_src =
437 img_bgra_nomul_vert_glsl,
438 #if defined (GLES_VARIETY_S3C6410)
439 img_bgra_nomul_vert_bin, sizeof(img_bgra_nomul_vert_bin)
445 /////////////////////////////////////////////
447 gl_compile_link_error(GLuint target, const char *action)
449 int loglen = 0, chars = 0;
452 /* Shader info log */
453 glGetShaderiv(target, GL_INFO_LOG_LENGTH, &loglen);
456 logtxt = calloc(loglen, sizeof(char));
459 glGetShaderInfoLog(target, loglen, &chars, logtxt);
460 ERR("Failed to %s: %s", action, logtxt);
465 /* Program info log */
466 glGetProgramiv(target, GL_INFO_LOG_LENGTH, &loglen);
469 logtxt = calloc(loglen, sizeof(char));
472 glGetProgramInfoLog(target, loglen, &chars, logtxt);
473 ERR("Failed to %s: %s", action, logtxt);
480 evas_gl_common_shader_program_init(Evas_GL_Program *p,
481 Evas_GL_Program_Source *vert,
482 Evas_GL_Program_Source *frag,
487 p->vert = glCreateShader(GL_VERTEX_SHADER);
488 p->frag = glCreateShader(GL_FRAGMENT_SHADER);
489 #if defined (GLES_VARIETY_S3C6410)
490 glShaderBinary(1, &(p->vert), 0, vert->bin, vert->bin_size);
491 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
492 glShaderBinary(1, &(p->frag), 0, frag->bin, frag->bin_size);
493 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
495 glShaderSource(p->vert, 1,
496 (const char **)&(vert->src), NULL);
497 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
498 glCompileShader(p->vert);
499 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
501 glGetShaderiv(p->vert, GL_COMPILE_STATUS, &ok);
502 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
505 gl_compile_link_error(p->vert, "compile vertex shader");
506 ERR("Abort compile of shader vert (%s): %s", name, vert->src);
509 glShaderSource(p->frag, 1,
510 (const char **)&(frag->src), NULL);
511 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
512 glCompileShader(p->frag);
513 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
515 glGetShaderiv(p->frag, GL_COMPILE_STATUS, &ok);
516 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
519 gl_compile_link_error(p->frag, "compile fragment shader");
520 ERR("Abort compile of shader frag (%s): %s", name, frag->src);
524 p->prog = glCreateProgram();
525 glAttachShader(p->prog, p->vert);
526 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
527 glAttachShader(p->prog, p->frag);
528 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
530 glBindAttribLocation(p->prog, SHAD_VERTEX, "vertex");
531 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
532 glBindAttribLocation(p->prog, SHAD_COLOR, "color");
533 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
534 glBindAttribLocation(p->prog, SHAD_TEXUV, "tex_coord");
535 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
536 glBindAttribLocation(p->prog, SHAD_TEXUV2, "tex_coord2");
537 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
538 glBindAttribLocation(p->prog, SHAD_TEXUV3, "tex_coord3");
539 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
540 glBindAttribLocation(p->prog, SHAD_TEXM, "tex_coordm");
541 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
543 glLinkProgram(p->prog);
544 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
546 glGetProgramiv(p->prog, GL_LINK_STATUS, &ok);
547 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
550 gl_compile_link_error(p->prog, "link fragment and vertex shaders");
551 ERR("Abort compile of shader frag (%s): %s", name, frag->src);
552 ERR("Abort compile of shader vert (%s): %s", name, vert->src);
559 evas_gl_common_shader_program_shutdown(Evas_GL_Program *p)
561 glDeleteShader(p->vert);
562 glDeleteShader(p->frag);
563 glDeleteProgram(p->prog);