summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorse.osadchy <se.osadchy@samsung.com>2015-05-26 19:12:24 +0200
committerCedric BAIL <cedric@osg.samsung.com>2015-05-27 00:31:07 +0200
commit684c51360f1591de4b8aee1f52d4edf8e8353822 (patch)
tree571df123cc63fe08963bfc16d9a3a54a330d6641 /src
parent8915982562c438f7a2c2f517744d58efdbad503d (diff)
evas: fix color pick compatibility of Evas_3D with GLES.
Summary: Use fourth component texture. Update mechanism generation pixels, scene renderer to texture and geting color pixels from texture. Update shader for color pick. Reviewers: Hermet, raster, cedric Reviewed By: cedric Subscribers: Oleksander, cedric Differential Revision: https://phab.enlightenment.org/D2549
Diffstat (limited to 'src')
-rw-r--r--src/lib/evas/canvas/evas_3d_mesh.c7
-rw-r--r--src/lib/evas/canvas/evas_3d_node.c47
-rw-r--r--src/lib/evas/canvas/evas_3d_scene.c6
-rw-r--r--src/lib/evas/include/evas_private.h7
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_3d.c35
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_3d_common.h2
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_3d_private.h4
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_3d_shader.c7
-rw-r--r--src/modules/evas/engines/gl_common/shader_3d/color_pick_frag.shd14
-rw-r--r--src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x13
-rw-r--r--src/modules/evas/engines/gl_generic/evas_engine.c7
11 files changed, 120 insertions, 29 deletions
diff --git a/src/lib/evas/canvas/evas_3d_mesh.c b/src/lib/evas/canvas/evas_3d_mesh.c
index f15b42fc4f..385820fe56 100644
--- a/src/lib/evas/canvas/evas_3d_mesh.c
+++ b/src/lib/evas/canvas/evas_3d_mesh.c
@@ -124,8 +124,13 @@ _mesh_init(Evas_3D_Mesh_Data *pd)
124 pd->alpha_comparison = EVAS_3D_COMPARISON_ALWAYS; 124 pd->alpha_comparison = EVAS_3D_COMPARISON_ALWAYS;
125 pd->alpha_ref_value = 0.0f; 125 pd->alpha_ref_value = 0.0f;
126 pd->alpha_test_enabled = EINA_FALSE; 126 pd->alpha_test_enabled = EINA_FALSE;
127 127#ifndef GL_GLES
128 pd->color_pick_key = -1.0; 128 pd->color_pick_key = -1.0;
129#else
130 pd->color_pick_key.r = 0.0;
131 pd->color_pick_key.g = 0.0;
132 pd->color_pick_key.b = 0.0;
133#endif
129 pd->color_pick_enabled = EINA_FALSE; 134 pd->color_pick_enabled = EINA_FALSE;
130} 135}
131 136
diff --git a/src/lib/evas/canvas/evas_3d_node.c b/src/lib/evas/canvas/evas_3d_node.c
index ea54ca30c4..cce21f4001 100644
--- a/src/lib/evas/canvas/evas_3d_node.c
+++ b/src/lib/evas/canvas/evas_3d_node.c
@@ -14,6 +14,7 @@ static Eina_Stringshare *
14_generate_unic_color_key(Evas_Color *color, Evas_Color *bg_color, Evas_3D_Node *node, Evas_3D_Mesh *mesh, 14_generate_unic_color_key(Evas_Color *color, Evas_Color *bg_color, Evas_3D_Node *node, Evas_3D_Mesh *mesh,
15 Eina_Bool init) 15 Eina_Bool init)
16{ 16{
17#ifndef GL_GLES
17 static unsigned short red = USHRT_MAX; 18 static unsigned short red = USHRT_MAX;
18 19
19 if (init) red = USHRT_MAX; 20 if (init) red = USHRT_MAX;
@@ -26,8 +27,52 @@ _generate_unic_color_key(Evas_Color *color, Evas_Color *bg_color, Evas_3D_Node *
26 27
27 red--; 28 red--;
28 29
29 if (red < 1) red = USHRT_MAX; 30 if (red == 0)
31 {
32 ERR("Overfill number of color. %d %s", __LINE__, __FILE__);
33 red = USHRT_MAX;
34 }
35
36#else
37 static unsigned char red = 0;
38 static unsigned char green = 0;
39 static unsigned char blue = 0;
40 if (init) red = green = blue = 0;
41
42#define GET_NEXT_COLOR \
43 red++; \
44 if (red == 255) \
45 { \
46 red = 0; \
47 green++; \
48 if (green == 255) \
49 { \
50 green = 0; \
51 blue++; \
52 } \
53 }
54
55 GET_NEXT_COLOR
56 /*Get another color if color equal with background color*/
57 if ((bg_color->r == (double)red) &&
58 (bg_color->g == (double)green) &&
59 (bg_color->b == (double)blue))
60 {
61 GET_NEXT_COLOR
62 }
63
64 if ((red == 255) && (green == 255) && (blue == 255))
65 {
66 ERR("Overfill number of color. %d %s", __LINE__, __FILE__);
67 red = green = blue = 0;
68 }
69
70 color->r = (double)red / 255;
71 color->g = (double)green / 255;
72 color->b = (double)blue / 255;
30 73
74#undef GET_NEXT_COLOR
75#endif
31 return eina_stringshare_printf("%p %p", node, mesh); 76 return eina_stringshare_printf("%p %p", node, mesh);
32} 77}
33 78
diff --git a/src/lib/evas/canvas/evas_3d_scene.c b/src/lib/evas/canvas/evas_3d_scene.c
index 2b33c8a8f0..6784c990a1 100644
--- a/src/lib/evas/canvas/evas_3d_scene.c
+++ b/src/lib/evas/canvas/evas_3d_scene.c
@@ -635,7 +635,7 @@ _evas_3d_scene_pick(Eo *obj, Evas_3D_Scene_Data *pd, Evas_Real x, Evas_Real y,
635 Evas_3D_Object_Data *pd_parent; 635 Evas_3D_Object_Data *pd_parent;
636 Evas_Public_Data *e; 636 Evas_Public_Data *e;
637 int tex = 0, px, py;; 637 int tex = 0, px, py;;
638 double redcomponent; 638 Evas_Color color = {0.0, 0.0, 0.0};
639 Eina_Stringshare *tmp; 639 Eina_Stringshare *tmp;
640 Eina_Array *arr = NULL; 640 Eina_Array *arr = NULL;
641 Eina_Bool update_scene = EINA_FALSE; 641 Eina_Bool update_scene = EINA_FALSE;
@@ -694,8 +694,8 @@ _evas_3d_scene_pick(Eo *obj, Evas_3D_Scene_Data *pd, Evas_Real x, Evas_Real y,
694 tex = e->engine.func->drawable_texture_color_pick_id_get(pd->surface); 694 tex = e->engine.func->drawable_texture_color_pick_id_get(pd->surface);
695 if (e->engine.func->drawable_texture_pixel_color_get) 695 if (e->engine.func->drawable_texture_pixel_color_get)
696 { 696 {
697 redcomponent = e->engine.func->drawable_texture_pixel_color_get(tex, px, py, pd->surface); 697 e->engine.func->drawable_texture_pixel_color_get(tex, px, py, &color, pd->surface);
698 tmp = eina_stringshare_printf("%f %f %f", redcomponent, 0.0, 0.0); 698 tmp = eina_stringshare_printf("%f %f %f", color.r, color.g, color.b);
699 arr = (Eina_Array *)eina_hash_find(pd->colors_node_mesh, tmp); 699 arr = (Eina_Array *)eina_hash_find(pd->colors_node_mesh, tmp);
700 if (arr) 700 if (arr)
701 { 701 {
diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h
index e7c8d02a5d..4464a60acf 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -382,8 +382,11 @@ struct _Evas_3D_Mesh
382 382
383 Evas_Color fog_color; 383 Evas_Color fog_color;
384 Eina_Bool fog_enabled :1; 384 Eina_Bool fog_enabled :1;
385 385#ifndef GL_GLES
386 double color_pick_key; 386 double color_pick_key;
387#else
388 Evas_Color color_pick_key;
389#endif
387 Eina_Bool color_pick_enabled :1; 390 Eina_Bool color_pick_enabled :1;
388}; 391};
389 392
@@ -1398,7 +1401,7 @@ struct _Evas_Func
1398 Eina_Bool (*drawable_scene_render_to_texture) (void *data, void *drawable, void *scene_data); 1401 Eina_Bool (*drawable_scene_render_to_texture) (void *data, void *drawable, void *scene_data);
1399 1402
1400 int (*drawable_texture_color_pick_id_get) (void *drawable); 1403 int (*drawable_texture_color_pick_id_get) (void *drawable);
1401 double (*drawable_texture_pixel_color_get) (unsigned int tex EINA_UNUSED, int x, int y, void *drawable); 1404 void (*drawable_texture_pixel_color_get) (unsigned int tex EINA_UNUSED, int x, int y, Evas_Color *color, void *drawable);
1402 1405
1403 void *(*texture_new) (void *data, Eina_Bool use_atlas); 1406 void *(*texture_new) (void *data, Eina_Bool use_atlas);
1404 void (*texture_free) (void *data, void *texture); 1407 void (*texture_free) (void *data, void *texture);
diff --git a/src/modules/evas/engines/gl_common/evas_gl_3d.c b/src/modules/evas/engines/gl_common/evas_gl_3d.c
index 8caf9ae620..066261250d 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_3d.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_3d.c
@@ -316,6 +316,8 @@ e3d_drawable_new(int w, int h, int alpha, GLenum depth_format, GLenum stencil_fo
316 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 316 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
317#ifndef GL_GLES 317#ifndef GL_GLES
318 glTexImage2D(GL_TEXTURE_2D, 0, GL_R16, w, h, 0, GL_RED, GL_UNSIGNED_SHORT, 0); 318 glTexImage2D(GL_TEXTURE_2D, 0, GL_R16, w, h, 0, GL_RED, GL_UNSIGNED_SHORT, 0);
319#else
320 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
319#endif 321#endif
320 322
321 glGenFramebuffers(1, &fbo); 323 glGenFramebuffers(1, &fbo);
@@ -394,8 +396,6 @@ e3d_drawable_new(int w, int h, int alpha, GLenum depth_format, GLenum stencil_fo
394 drawable->tex = tex; 396 drawable->tex = tex;
395 drawable->fbo = fbo; 397 drawable->fbo = fbo;
396 drawable->depth_stencil_buf = depth_stencil_buf; 398 drawable->depth_stencil_buf = depth_stencil_buf;
397 drawable->texcolorpick = texcolorpick;
398 drawable->color_pick_fb_id = color_pick_fb_id;
399 drawable->depth_buf = depth_buf; 399 drawable->depth_buf = depth_buf;
400 drawable->stencil_buf = stencil_buf; 400 drawable->stencil_buf = stencil_buf;
401 drawable->texDepth = texDepth; 401 drawable->texDepth = texDepth;
@@ -1317,13 +1317,13 @@ e3d_drawable_scene_render_to_texture(E3D_Drawable *drawable, E3D_Renderer *rende
1317 Eina_Iterator *itmn; 1317 Eina_Iterator *itmn;
1318 void *ptrmn; 1318 void *ptrmn;
1319 Eina_List *repeat_node = NULL; 1319 Eina_List *repeat_node = NULL;
1320 Evas_Color c = {0, 0, 0, 0}, *unic_color = NULL; 1320 Evas_Color c = {0.0, 0.0, 0.0, 0.0}, *unic_color = NULL;
1321 1321
1322 glBindFramebuffer(GL_FRAMEBUFFER, drawable->color_pick_fb_id); 1322 glBindFramebuffer(GL_FRAMEBUFFER, drawable->color_pick_fb_id);
1323 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 1323 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
1324 GL_TEXTURE_2D, drawable->texcolorpick, 0); 1324 GL_TEXTURE_2D, drawable->texcolorpick, 0);
1325#ifdef GL_GLES 1325#ifdef GL_GLES
1326 glBindTexture(GL_TEXTURE_2D, drawable->depth_stencil_buf); 1326 glBindRenderbuffer(GL_RENDERBUFFER, drawable->depth_stencil_buf);
1327 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, 1327 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
1328 GL_TEXTURE_2D, drawable->depth_stencil_buf, 0); 1328 GL_TEXTURE_2D, drawable->depth_stencil_buf, 0);
1329#else 1329#else
@@ -1366,7 +1366,13 @@ e3d_drawable_scene_render_to_texture(E3D_Drawable *drawable, E3D_Renderer *rende
1366 unic_color = (Evas_Color *)eina_hash_find(data->node_mesh_colors, tmp); 1366 unic_color = (Evas_Color *)eina_hash_find(data->node_mesh_colors, tmp);
1367 if (unic_color) 1367 if (unic_color)
1368 { 1368 {
1369#ifndef GL_GLES
1369 pdmesh->color_pick_key = unic_color->r; 1370 pdmesh->color_pick_key = unic_color->r;
1371#else
1372 pdmesh->color_pick_key.r = unic_color->r;
1373 pdmesh->color_pick_key.g = unic_color->g;
1374 pdmesh->color_pick_key.b = unic_color->b;
1375#endif
1370 shade_mode = pdmesh->shade_mode; 1376 shade_mode = pdmesh->shade_mode;
1371 pdmesh->shade_mode = EVAS_3D_SHADE_MODE_COLOR_PICK; 1377 pdmesh->shade_mode = EVAS_3D_SHADE_MODE_COLOR_PICK;
1372 _mesh_draw(renderer, nm->mesh, nm->frame, NULL, matrix_eye, &matrix_mv, 1378 _mesh_draw(renderer, nm->mesh, nm->frame, NULL, matrix_eye, &matrix_mv,
@@ -1385,25 +1391,26 @@ e3d_drawable_scene_render_to_texture(E3D_Drawable *drawable, E3D_Renderer *rende
1385 return EINA_TRUE; 1391 return EINA_TRUE;
1386} 1392}
1387 1393
1388double 1394void
1389e3d_drawable_texture_pixel_color_get(GLuint tex EINA_UNUSED, int x, int y, 1395e3d_drawable_texture_pixel_color_get(GLuint tex EINA_UNUSED, int x, int y,
1390 void *drawable) 1396 Evas_Color *color, void *drawable)
1391{ 1397{
1392 E3D_Drawable *d = (E3D_Drawable *)drawable; 1398 E3D_Drawable *d = (E3D_Drawable *)drawable;
1393 GLuint pixel;
1394 1399
1395 glBindFramebuffer(GL_FRAMEBUFFER, d->color_pick_fb_id); 1400 glBindFramebuffer(GL_FRAMEBUFFER, d->color_pick_fb_id);
1396 /*TODO Bottle neck - get more effective getting pixels from openGL*/
1397#ifndef GL_GLES 1401#ifndef GL_GLES
1402 GLuint pixel = 0;
1398 glReadPixels(x, y, 1, 1, GL_RED, GL_UNSIGNED_SHORT, &pixel); 1403 glReadPixels(x, y, 1, 1, GL_RED, GL_UNSIGNED_SHORT, &pixel);
1399 glBindFramebuffer(GL_FRAMEBUFFER, d->fbo); 1404 color->r = (double)pixel / USHRT_MAX;
1400 return (double)pixel / USHRT_MAX;
1401#else 1405#else
1402 // FIXME: Verify this logic. UNTESTED! (build fix was required) 1406 GLubyte pixel[4] = {0, 0, 0, 0};
1403 glReadPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &pixel); 1407 glReadPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel);
1404 glBindFramebuffer(GL_FRAMEBUFFER, d->fbo); 1408 color->r = (double)pixel[0] / 255;
1405 return ((double)R_VAL(&pixel)) / 255.0; 1409 color->g = (double)pixel[1] / 255;
1410 color->b = (double)pixel[2] / 255;
1406#endif 1411#endif
1412
1413 glBindFramebuffer(GL_FRAMEBUFFER, d->fbo);
1407} 1414}
1408 1415
1409#undef RENDER_MESH_NODE_ITERATE_BEGIN 1416#undef RENDER_MESH_NODE_ITERATE_BEGIN
diff --git a/src/modules/evas/engines/gl_common/evas_gl_3d_common.h b/src/modules/evas/engines/gl_common/evas_gl_3d_common.h
index fdb47843a2..cda8548882 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_3d_common.h
+++ b/src/modules/evas/engines/gl_common/evas_gl_3d_common.h
@@ -31,7 +31,7 @@ Eina_Bool e3d_drawable_scene_render_to_texture(E3D_Drawable *drawable
31void e3d_drawable_size_get(E3D_Drawable *drawable, int *w, int *h); 31void e3d_drawable_size_get(E3D_Drawable *drawable, int *w, int *h);
32GLuint e3d_drawable_texture_id_get(E3D_Drawable *drawable); 32GLuint e3d_drawable_texture_id_get(E3D_Drawable *drawable);
33GLuint e3d_drawable_texture_color_pick_id_get(E3D_Drawable *drawable); 33GLuint e3d_drawable_texture_color_pick_id_get(E3D_Drawable *drawable);
34double e3d_drawable_texture_pixel_color_get(GLuint tex EINA_UNUSED, int x, int y, void *drawable); 34void e3d_drawable_texture_pixel_color_get(GLuint tex EINA_UNUSED, int x, int y, Evas_Color *color, void *drawable);
35GLenum e3d_drawable_format_get(E3D_Drawable *drawable); 35GLenum e3d_drawable_format_get(E3D_Drawable *drawable);
36 36
37/* Renderer */ 37/* Renderer */
diff --git a/src/modules/evas/engines/gl_common/evas_gl_3d_private.h b/src/modules/evas/engines/gl_common/evas_gl_3d_private.h
index ad8d992c8a..d1c467bb7d 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_3d_private.h
+++ b/src/modules/evas/engines/gl_common/evas_gl_3d_private.h
@@ -106,7 +106,11 @@ struct _E3D_Draw_Data
106 Evas_Color specular; 106 Evas_Color specular;
107 } light; 107 } light;
108 Evas_Color fog_color; 108 Evas_Color fog_color;
109#ifndef GL_GLES
109 double color_pick_key; 110 double color_pick_key;
111#else
112 Evas_Color color_pick_key;
113#endif
110}; 114};
111 115
112struct _E3D_Texture 116struct _E3D_Texture
diff --git a/src/modules/evas/engines/gl_common/evas_gl_3d_shader.c b/src/modules/evas/engines/gl_common/evas_gl_3d_shader.c
index 7c9b2fc8da..694ce8a7e2 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_3d_shader.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_3d_shader.c
@@ -580,9 +580,16 @@ _uniform_upload(E3D_Uniform u, GLint loc, const E3D_Draw_Data *data)
580 case E3D_UNIFORM_FOG_COLOR: 580 case E3D_UNIFORM_FOG_COLOR:
581 glUniform4f(loc, data->fog_color.r, data->fog_color.g, data->fog_color.b, 1); 581 glUniform4f(loc, data->fog_color.r, data->fog_color.g, data->fog_color.b, 1);
582 break; 582 break;
583#ifndef GL_GLES
583 case E3D_UNIFORM_COLOR_PICK: 584 case E3D_UNIFORM_COLOR_PICK:
584 glUniform1f(loc, data->color_pick_key); 585 glUniform1f(loc, data->color_pick_key);
585 break; 586 break;
587#else
588 case E3D_UNIFORM_COLOR_PICK:
589 glUniform4f(loc, data->color_pick_key.r, data->color_pick_key.g,
590 data->color_pick_key.b, 1.0);
591 break;
592#endif
586 case E3D_UNIFORM_ALPHATEST_COMPARISON: 593 case E3D_UNIFORM_ALPHATEST_COMPARISON:
587 glUniform1i(loc, 594 glUniform1i(loc,
588 (data->alpha_comparison ? data->alpha_comparison : EVAS_3D_COMPARISON_GREATER)); 595 (data->alpha_comparison ? data->alpha_comparison : EVAS_3D_COMPARISON_GREATER));
diff --git a/src/modules/evas/engines/gl_common/shader_3d/color_pick_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/color_pick_frag.shd
index 071f60e50b..5a526b976b 100644
--- a/src/modules/evas/engines/gl_common/shader_3d/color_pick_frag.shd
+++ b/src/modules/evas/engines/gl_common/shader_3d/color_pick_frag.shd
@@ -1,9 +1,19 @@
1uniform float uColorPick; 1#ifndef GL_ES
2 uniform float uColorPick;
3#else
4 uniform vec4 uColorPick;
5#endif
2FRAGMENT_SHADER_USE_ALPHA_TEST_GLES 6FRAGMENT_SHADER_USE_ALPHA_TEST_GLES
3 7
4void main() 8void main()
5{ 9{
6 vec4 color = vec4(uColorPick); 10 vec4 color;
11
12#ifndef GL_ES
13 color = vec4(uColorPick);
14#else
15 color = uColorPick;
16#endif
7 17
8#ifdef ALPHA_TEST_ENABLED 18#ifdef ALPHA_TEST_ENABLED
9 FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) 19 FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color)
diff --git a/src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x b/src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x
index 0505e412f9..1a282f6e79 100644
--- a/src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x
+++ b/src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x
@@ -1658,14 +1658,23 @@ static const char color_pick_frag_glsl[] =
1658 "precision mediump int;\n" 1658 "precision mediump int;\n"
1659 "precision lowp sampler2D;\n" 1659 "precision lowp sampler2D;\n"
1660 "#endif\n" 1660 "#endif\n"
1661 "uniform float uColorPick;\n" 1661 "#ifndef GL_ES\n"
1662 " uniform float uColorPick;\n"
1663 "#else\n"
1664 " uniform vec4 uColorPick;\n"
1665 "#endif\n"
1662 "#ifdef GL_ES\n" 1666 "#ifdef GL_ES\n"
1663 "uniform int uAlphaTestComparison;\n" 1667 "uniform int uAlphaTestComparison;\n"
1664 "uniform float uAlphaTestRefValue;\n" 1668 "uniform float uAlphaTestRefValue;\n"
1665 "#endif //GL_ES\n" 1669 "#endif //GL_ES\n"
1666 "void main()\n" 1670 "void main()\n"
1667 "{\n" 1671 "{\n"
1668 " vec4 color = vec4(uColorPick);\n" 1672 " vec4 color;\n"
1673 "#ifndef GL_ES\n"
1674 " color = vec4(uColorPick);\n"
1675 "#else\n"
1676 " color = uColorPick;\n"
1677 "#endif\n"
1669 "#ifdef ALPHA_TEST_ENABLED\n" 1678 "#ifdef ALPHA_TEST_ENABLED\n"
1670 " #ifdef GL_ES\n" 1679 " #ifdef GL_ES\n"
1671 "/*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" 1680 "/*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n"
diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c b/src/modules/evas/engines/gl_generic/evas_engine.c
index eed3e2cd69..34d3f454be 100644
--- a/src/modules/evas/engines/gl_generic/evas_engine.c
+++ b/src/modules/evas/engines/gl_generic/evas_engine.c
@@ -2182,10 +2182,11 @@ eng_drawable_texture_color_pick_id_get(void *drawable)
2182 return e3d_drawable_texture_color_pick_id_get((E3D_Drawable *)drawable); 2182 return e3d_drawable_texture_color_pick_id_get((E3D_Drawable *)drawable);
2183} 2183}
2184 2184
2185static double 2185static void
2186eng_drawable_texture_pixel_color_get(GLuint tex EINA_UNUSED, int x, int y, void *drawable) 2186eng_drawable_texture_pixel_color_get(GLuint tex EINA_UNUSED, int x, int y,
2187 Evas_Color *color, void *drawable)
2187{ 2188{
2188 return e3d_drawable_texture_pixel_color_get(tex, x, y, drawable); 2189 return e3d_drawable_texture_pixel_color_get(tex, x, y, color, drawable);
2189} 2190}
2190 2191
2191static Eina_Bool 2192static Eina_Bool