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)
363 /////////////////////////////////////////////
364 #if defined (GLES_VARIETY_S3C6410)
365 const unsigned int img_bgra_nomul_frag_bin[] =
367 # include "shader/img_bgra_nomul_frag_bin_s3c6410.h"
371 const char img_bgra_nomul_frag_glsl[] =
372 #include "shader/img_bgra_nomul_frag.h"
374 Evas_GL_Program_Source shader_img_bgra_nomul_frag_src =
376 img_bgra_nomul_frag_glsl,
377 #if defined (GLES_VARIETY_S3C6410)
378 img_bgra_nomul_frag_bin, sizeof(img_bgra_nomul_frag_bin)
384 #if defined (GLES_VARIETY_S3C6410)
385 const unsigned int img_bgra_nomul_vert_bin[] =
387 # include "shader/img_bgra_nomul_vert_bin_s3c6410.h"
390 const char img_bgra_nomul_vert_glsl[] =
391 #include "shader/img_bgra_nomul_vert.h"
393 Evas_GL_Program_Source shader_img_bgra_nomul_vert_src =
395 img_bgra_nomul_vert_glsl,
396 #if defined (GLES_VARIETY_S3C6410)
397 img_bgra_nomul_vert_bin, sizeof(img_bgra_nomul_vert_bin)
403 /////////////////////////////////////////////
405 gl_compile_link_error(GLuint target, const char *action)
407 int loglen = 0, chars = 0;
410 /* Shader info log */
411 glGetShaderiv(target, GL_INFO_LOG_LENGTH, &loglen);
414 logtxt = calloc(loglen, sizeof(char));
417 glGetShaderInfoLog(target, loglen, &chars, logtxt);
418 ERR("Failed to %s: %s", action, logtxt);
423 /* Program info log */
424 glGetProgramiv(target, GL_INFO_LOG_LENGTH, &loglen);
427 logtxt = calloc(loglen, sizeof(char));
430 glGetProgramInfoLog(target, loglen, &chars, logtxt);
431 ERR("Failed to %s: %s", action, logtxt);
438 evas_gl_common_shader_program_init(Evas_GL_Program *p,
439 Evas_GL_Program_Source *vert,
440 Evas_GL_Program_Source *frag,
445 p->vert = glCreateShader(GL_VERTEX_SHADER);
446 p->frag = glCreateShader(GL_FRAGMENT_SHADER);
447 #if defined (GLES_VARIETY_S3C6410)
448 glShaderBinary(1, &(p->vert), 0, vert->bin, vert->bin_size);
449 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
450 glShaderBinary(1, &(p->frag), 0, frag->bin, frag->bin_size);
451 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
453 glShaderSource(p->vert, 1,
454 (const char **)&(vert->src), NULL);
455 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
456 glCompileShader(p->vert);
457 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
459 glGetShaderiv(p->vert, GL_COMPILE_STATUS, &ok);
460 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
463 gl_compile_link_error(p->vert, "compile vertex shader");
464 ERR("Abort compile of shader vert (%s): %s", name, vert->src);
467 glShaderSource(p->frag, 1,
468 (const char **)&(frag->src), NULL);
469 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
470 glCompileShader(p->frag);
471 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
473 glGetShaderiv(p->frag, GL_COMPILE_STATUS, &ok);
474 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
477 gl_compile_link_error(p->frag, "compile fragment shader");
478 ERR("Abort compile of shader frag (%s): %s", name, frag->src);
482 p->prog = glCreateProgram();
483 glAttachShader(p->prog, p->vert);
484 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
485 glAttachShader(p->prog, p->frag);
486 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
488 glBindAttribLocation(p->prog, SHAD_VERTEX, "vertex");
489 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
490 glBindAttribLocation(p->prog, SHAD_COLOR, "color");
491 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
492 glBindAttribLocation(p->prog, SHAD_TEXUV, "tex_coord");
493 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
494 glBindAttribLocation(p->prog, SHAD_TEXUV2, "tex_coord2");
495 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
496 glBindAttribLocation(p->prog, SHAD_TEXUV3, "tex_coord3");
497 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
499 glLinkProgram(p->prog);
500 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
502 glGetProgramiv(p->prog, GL_LINK_STATUS, &ok);
503 GLERR(__FUNCTION__, __FILE__, __LINE__, "");
506 gl_compile_link_error(p->prog, "link fragment and vertex shaders");
507 ERR("Abort compile of shader frag (%s): %s", name, frag->src);
508 ERR("Abort compile of shader vert (%s): %s", name, vert->src);
515 evas_gl_common_shader_program_shutdown(Evas_GL_Program *p)
517 glDeleteShader(p->vert);
518 glDeleteShader(p->frag);
519 glDeleteProgram(p->prog);