From: Enlightenment S. <no-...@en...> - 2010-08-26 09:40:57
|
Log: be able to free and alloc gl surface when asked to dump Author: raster Date: 2010-08-26 02:40:48 -0700 (Thu, 26 Aug 2010) New Revision: 51654 Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_image.c trunk/evas/src/modules/engines/gl_x11/evas_engine.c trunk/evas/src/modules/engines/gl_x11/evas_engine.h trunk/evas/src/modules/engines/gl_x11/evas_x_main.c Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_image.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_image.c 2010-08-26 09:22:31 UTC (rev 51653) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_image.c 2010-08-26 09:40:48 UTC (rev 51654) @@ -9,8 +9,14 @@ EINA_LIST_FOREACH(gc->shared->images, l, im) { if (im->im) evas_cache_image_unload_data(&im->im->cache_entry); - if (im->tex) evas_gl_common_texture_free(im->tex); - im->tex = NULL; + if (im->tex) + { + if (!im->tex->pt->dyn.img) + { + evas_gl_common_texture_free(im->tex); + im->tex = NULL; + } + } } } Modified: trunk/evas/src/modules/engines/gl_x11/evas_engine.c =================================================================== --- trunk/evas/src/modules/engines/gl_x11/evas_engine.c 2010-08-26 09:22:31 UTC (rev 51653) +++ trunk/evas/src/modules/engines/gl_x11/evas_engine.c 2010-08-26 09:40:48 UTC (rev 51654) @@ -25,6 +25,8 @@ struct { // xres - dpi int dpi; // xres - dpi } xr; // xres - dpi + + int w, h; }; static int initted = 0; @@ -204,6 +206,25 @@ } static int +_re_wincheck(Render_Engine *re) +{ + if (re->win->surf) return 1; + eng_window_resurf(re->win); + if (!re->win->surf) + { + fprintf(stderr, "ERROR: GL engine can't re-create window surface!\n"); + } + return 0; +} + +static void +_re_winfree(Render_Engine *re) +{ + if (!re->win->surf) return; + eng_window_unsurf(re->win); +} + +static int eng_setup(Evas *e, void *in) { Render_Engine *re; @@ -223,17 +244,19 @@ re->info = info; re->evas = e; e->engine.data.output = re; - re->win = eng_window_new(info->info.display, - info->info.drawable, - info->info.screen, - info->info.visual, - info->info.colormap, - info->info.depth, - e->output.w, - e->output.h, - info->indirect, - info->info.destination_alpha, - info->info.rotation); + re->w = e->output.w; + re->h = e->output.h; + re->win = eng_window_new(re->info->info.display, + re->info->info.drawable, + re->info->info.screen, + re->info->info.visual, + re->info->info.colormap, + re->info->info.depth, + re->w, + re->h, + re->info->indirect, + re->info->info.destination_alpha, + re->info->info.rotation); if (!re->win) { free(re); @@ -252,7 +275,7 @@ status = xrdb_user_query("Xft.dpi", "Xft.Dpi", &type, &val); if ((!status) || (!type)) { - if (!re->xrdb) re->xrdb = XrmGetDatabase(info->info.display); + if (!re->xrdb) re->xrdb = XrmGetDatabase(re->info->info.display); if (re->xrdb) status = XrmGetResource(re->xrdb, "Xft.dpi", "Xft.Dpi", &type, &val); @@ -316,48 +339,54 @@ else { re = e->engine.data.output; - if ((info->info.display != re->win->disp) || - (info->info.drawable != re->win->win) || - (info->info.screen != re->win->screen) || - (info->info.visual != re->win->visual) || - (info->info.colormap != re->win->colormap) || - (info->info.depth != re->win->depth) || - (info->info.destination_alpha != re->win->alpha) || - (info->info.rotation != re->win->rot)) + if (_re_wincheck(re)) { - int inc = 0; - - if (re->win) + if ((re->info->info.display != re->win->disp) || + (re->info->info.drawable != re->win->win) || + (re->info->info.screen != re->win->screen) || + (re->info->info.visual != re->win->visual) || + (re->info->info.colormap != re->win->colormap) || + (re->info->info.depth != re->win->depth) || + (re->info->info.destination_alpha != re->win->alpha) || + (re->info->info.rotation != re->win->rot)) { - re->win->gl_context->references++; - eng_window_free(re->win); - inc = 1; - gl_wins--; + int inc = 0; + + if (re->win) + { + re->win->gl_context->references++; + eng_window_free(re->win); + inc = 1; + gl_wins--; + } + re->w = e->output.w; + re->h = e->output.h; + re->win = eng_window_new(re->info->info.display, + re->info->info.drawable, + re->info->info.screen, + re->info->info.visual, + re->info->info.colormap, + re->info->info.depth, + re->w, + re->h, + re->info->indirect, + re->info->info.destination_alpha, + re->info->info.rotation); + if (re->win) gl_wins++; + if ((re->win) && (inc)) + re->win->gl_context->references--; } - re->win = eng_window_new(info->info.display, - info->info.drawable, - info->info.screen, - info->info.visual, - info->info.colormap, - info->info.depth, - e->output.w, - e->output.h, - info->indirect, - info->info.destination_alpha, - info->info.rotation); - if (re->win) gl_wins++; - if ((re->win) && (inc)) - re->win->gl_context->references--; + else if ((re->win->w != e->output.w) || + (re->win->h != e->output.h)) + { + re->w = e->output.w; + re->h = e->output.h; + re->win->w = e->output.w; + re->win->h = e->output.h; + eng_window_use(re->win); + evas_gl_common_context_resize(re->win->gl_context, re->win->w, re->win->h, re->win->rot); + } } - else if ((re->win->w != e->output.w) || - (re->win->h != e->output.h)) - { - re->win->w = e->output.w; - re->win->h = e->output.h; - eng_window_use(re->win); - evas_gl_common_context_resize(re->win->gl_context, re->win->w, re->win->h, re->win->rot); - } - } if (!re->win) { @@ -501,6 +530,7 @@ re = (Render_Engine *)data; /* get the upate rect surface - return engine data as dummy */ if (!re->win->draw.redraw) return NULL; + if (!_re_wincheck(re)) return NULL; evas_gl_common_context_flush(re->win->gl_context); eng_window_use(re->win); evas_gl_common_context_newframe(re->win->gl_context); @@ -539,6 +569,7 @@ re = (Render_Engine *)data; /* put back update surface.. in this case just unflag redraw */ + if (!_re_wincheck(re)) return; re->win->draw.redraw = 0; re->win->draw.drew = 1; evas_gl_common_context_flush(re->win->gl_context); @@ -572,6 +603,7 @@ Render_Engine *re; re = (Render_Engine *)data; + if (!_re_wincheck(re)) return; if (!re->win->draw.drew) return; //x// printf("frame -> flush\n"); re->win->draw.drew = 0; @@ -674,6 +706,7 @@ evas_common_image_image_all_unload(); evas_common_font_font_all_unload(); evas_gl_common_image_all_unload(re->win->gl_context); + _re_winfree(re); } static void @@ -1062,6 +1095,7 @@ uint32_t pmid; if (!im) return NULL; + if (ns) { vis = ns->data.x11.visual; @@ -1337,9 +1371,6 @@ static void eng_image_size_get(void *data, void *image, int *w, int *h) { -// Render_Engine *re; -// -// re = (Render_Engine *)data; if (!image) { *w = 0; Modified: trunk/evas/src/modules/engines/gl_x11/evas_engine.h =================================================================== --- trunk/evas/src/modules/engines/gl_x11/evas_engine.h 2010-08-26 09:22:31 UTC (rev 51653) +++ trunk/evas/src/modules/engines/gl_x11/evas_engine.h 2010-08-26 09:40:48 UTC (rev 51654) @@ -108,7 +108,7 @@ unsigned int loose_binding : 1; } detected; #endif - + int surf : 1; }; Evas_GL_X11_Window *eng_window_new(Display *disp, Window win, int screen, @@ -117,6 +117,9 @@ int alpha, int rot); void eng_window_free(Evas_GL_X11_Window *gw); void eng_window_use(Evas_GL_X11_Window *gw); +void eng_window_unsurf(Evas_GL_X11_Window *gw); +void eng_window_resurf(Evas_GL_X11_Window *gw); + Visual *eng_best_visual_get(Evas_Engine_Info_GL_X11 *einfo); Colormap eng_best_colormap_get(Evas_Engine_Info_GL_X11 *einfo); int eng_best_depth_get(Evas_Engine_Info_GL_X11 *einfo); Modified: trunk/evas/src/modules/engines/gl_x11/evas_x_main.c =================================================================== --- trunk/evas/src/modules/engines/gl_x11/evas_x_main.c 2010-08-26 09:22:31 UTC (rev 51653) +++ trunk/evas/src/modules/engines/gl_x11/evas_x_main.c 2010-08-26 09:40:48 UTC (rev 51654) @@ -59,7 +59,7 @@ gw->rot = rot; vi_use = _evas_gl_x11_vi; - if (alpha) + if (gw->alpha) { #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) if (_evas_gl_x11_rgba_vi) @@ -135,7 +135,7 @@ config_attrs[n++] = 1; // FIXME: end n900 breakage #endif - if (alpha) + if (gw->alpha) { config_attrs[n++] = EGL_ALPHA_SIZE; config_attrs[n++] = 1; @@ -222,38 +222,38 @@ { #ifdef NEWGL if (indirect) - context = glXCreateNewContext(disp, fbconf, + context = glXCreateNewContext(gw->disp, fbconf, GLX_RGBA_TYPE, NULL, GL_TRUE); else - context = glXCreateNewContext(disp, fbconf, + context = glXCreateNewContext(gw->disp, fbconf, GLX_RGBA_TYPE, NULL, GL_FALSE); #else if (indirect) - context = glXCreateContext(disp, gw->visualinfo, NULL, GL_FALSE); + context = glXCreateContext(gw->disp, gw->visualinfo, NULL, GL_FALSE); else - context = glXCreateContext(disp, gw->visualinfo, NULL, GL_TRUE); + context = glXCreateContext(gw->disp, gw->visualinfo, NULL, GL_TRUE); #endif } #ifdef NEWGL - if ((alpha) && (!rgba_context)) + if ((gw->alpha) && (!rgba_context)) { if (indirect) - rgba_context = glXCreateNewContext(disp, rgba_fbconf, + rgba_context = glXCreateNewContext(gw->disp, rgba_fbconf, GLX_RGBA_TYPE, context, GL_TRUE); else - rgba_context = glXCreateNewContext(disp, rgba_fbconf, + rgba_context = glXCreateNewContext(gw->disp, rgba_fbconf, GLX_RGBA_TYPE, context, GL_FALSE); } - if (alpha) - gw->glxwin = glXCreateWindow(disp, rgba_fbconf, gw->win, NULL); + if (gw->alpha) + gw->glxwin = glXCreateWindow(gw->disp, rgba_fbconf, gw->win, NULL); else - gw->glxwin = glXCreateWindow(disp, fbconf, gw->win, NULL); + gw->glxwin = glXCreateWindow(gw->disp, fbconf, gw->win, NULL); - if (alpha) gw->context = rgba_context; + if (gw->alpha) gw->context = rgba_context; else gw->context = context; #else gw->context = context; @@ -311,7 +311,7 @@ // noothing yet. add more cases and options over time } - fbc = glXGetFBConfigs(disp, screen, &num); + fbc = glXGetFBConfigs(gw->disp, screen, &num); if (!fbc) { printf("Error: glXGetFBConfigs() returned no fb configs\n"); @@ -322,27 +322,27 @@ { XVisualInfo *vi; int vd; - int alpha, val, dbuf, stencil, depth; + int alph, val, dbuf, stencil, depth; int rgba; - vi = glXGetVisualFromFBConfig(disp, fbc[j]); + vi = glXGetVisualFromFBConfig(gw->disp, fbc[j]); if (!vi) continue; vd = vi->depth; XFree(vi); if (vd != i) continue; - glXGetFBConfigAttrib(disp, fbc[j], GLX_ALPHA_SIZE, &alpha); - glXGetFBConfigAttrib(disp, fbc[j], GLX_BUFFER_SIZE, &val); + glXGetFBConfigAttrib(gw->disp, fbc[j], GLX_ALPHA_SIZE, &alph); + glXGetFBConfigAttrib(gw->disp, fbc[j], GLX_BUFFER_SIZE, &val); - if ((val != i) && ((val - alpha) != i)) continue; + if ((val != i) && ((val - alph) != i)) continue; val = 0; rgba = 0; if (i == 32) { - glXGetFBConfigAttrib(disp, fbc[j], GLX_BIND_TO_TEXTURE_RGBA_EXT, &val); + glXGetFBConfigAttrib(gw->disp, fbc[j], GLX_BIND_TO_TEXTURE_RGBA_EXT, &val); if (val) { rgba = 1; @@ -352,41 +352,41 @@ if (!val) { if (rgba) continue; - glXGetFBConfigAttrib(disp, fbc[j], GLX_BIND_TO_TEXTURE_RGB_EXT, &val); + glXGetFBConfigAttrib(gw->disp, fbc[j], GLX_BIND_TO_TEXTURE_RGB_EXT, &val); if (!val) continue; gw->depth_cfg[i].tex_format = GLX_TEXTURE_FORMAT_RGB_EXT; } dbuf = 0x7fff; - glXGetFBConfigAttrib(disp, fbc[j], GLX_DOUBLEBUFFER, &val); + glXGetFBConfigAttrib(gw->disp, fbc[j], GLX_DOUBLEBUFFER, &val); if (val > dbuf) continue; dbuf = val; stencil = 0x7fff; - glXGetFBConfigAttrib(disp, fbc[j], GLX_STENCIL_SIZE, &val); + glXGetFBConfigAttrib(gw->disp, fbc[j], GLX_STENCIL_SIZE, &val); if (val > stencil) continue; stencil = val; depth = 0x7fff; - glXGetFBConfigAttrib(disp, fbc[j], GLX_DEPTH_SIZE, &val); + glXGetFBConfigAttrib(gw->disp, fbc[j], GLX_DEPTH_SIZE, &val); if (val > depth) continue; depth = val; - glXGetFBConfigAttrib(disp, fbc[j], GLX_BIND_TO_MIPMAP_TEXTURE_EXT, &val); + glXGetFBConfigAttrib(gw->disp, fbc[j], GLX_BIND_TO_MIPMAP_TEXTURE_EXT, &val); if (val < 0) continue; gw->depth_cfg[i].mipmap = val; - glXGetFBConfigAttrib(disp, fbc[j], GLX_Y_INVERTED_EXT, &val); + glXGetFBConfigAttrib(gw->disp, fbc[j], GLX_Y_INVERTED_EXT, &val); gw->depth_cfg[i].yinvert = val; - glXGetFBConfigAttrib(disp, fbc[j], GLX_BIND_TO_TEXTURE_TARGETS_EXT, &val); + glXGetFBConfigAttrib(gw->disp, fbc[j], GLX_BIND_TO_TEXTURE_TARGETS_EXT, &val); gw->depth_cfg[i].tex_target = val; gw->depth_cfg[i].fbc = fbc[j]; } } XFree(fbc); - if (!gw->depth_cfg[DefaultDepth(disp, screen)].fbc) + if (!gw->depth_cfg[DefaultDepth(gw->disp, screen)].fbc) { printf("texture from pixmap not going to work\n"); } @@ -406,6 +406,7 @@ evas_gl_common_context_use(gw->gl_context); evas_gl_common_context_resize(gw->gl_context, w, h, rot); win_count++; + gw->surf = 1; return gw; } @@ -485,6 +486,50 @@ evas_gl_common_context_use(gw->gl_context); } +void +eng_window_unsurf(Evas_GL_X11_Window *gw) +{ + if (!gw->surf) return; + if (getenv("EVAS_GL_INFO")) + printf("unsurf %p\n", gw); +#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) + if (gw->egl_surface[0] != EGL_NO_SURFACE) + eglDestroySurface(gw->egl_disp, gw->egl_surface[0]); + gw->egl_surface[0] = EGL_NO_SURFACE; + eglMakeCurrent(gw->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); +#else + if (gw->glxwin) glXDestroyWindow(gw->disp, gw->glxwin); +#endif + gw->surf = 0; +} + +void +eng_window_resurf(Evas_GL_X11_Window *gw) +{ + if (gw->surf) return; + if (getenv("EVAS_GL_INFO")) + printf("resurf %p\n", gw); +#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) + gw->egl_surface[0] = eglCreateWindowSurface(gw->egl_disp, gw->egl_config, + (EGLNativeWindowType)gw->win, + NULL); + if (gw->egl_surface[0] == EGL_NO_SURFACE) + { + printf("Error: eglCreateWindowSurface() fail for 0x%x.\n", (unsigned int)gw->win); + printf("Error: error # was: 0x%x\n", eglGetError()); + return; + } +#else +#ifdef NEWGL + if (gw->alpha) + gw->glxwin = glXCreateWindow(gw->disp, rgba_fbconf, gw->win, NULL); + else + gw->glxwin = glXCreateWindow(gw->disp, fbconf, gw->win, NULL); +#endif +#endif + gw->surf = 1; +} + Visual * eng_best_visual_get(Evas_Engine_Info_GL_X11 *einfo) { |
From: Enlightenment S. <no-...@en...> - 2011-02-11 06:23:17
|
Log: fix up gl side image cache to cleanly ref/deref and shadow image cache. yes - changelog - this is just fixing up whats already changelogged. Author: raster Date: 2011-02-10 22:23:10 -0800 (Thu, 10 Feb 2011) New Revision: 56949 Trac: http://trac.enlightenment.org/e/changeset/56949 Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_common.h trunk/evas/src/modules/engines/gl_common/evas_gl_image.c trunk/evas/src/modules/engines/gl_x11/evas_engine.c Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_common.h =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_common.h 2011-02-11 06:16:23 UTC (rev 56948) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_common.h 2011-02-11 06:23:10 UTC (rev 56949) @@ -352,6 +352,7 @@ } native; int scale_hint, content_hint; + int csize; unsigned char dirty : 1; unsigned char cached : 1; @@ -465,6 +466,8 @@ void evas_gl_common_image_all_unload(Evas_GL_Context *gc); +void evas_gl_common_image_ref(Evas_GL_Image *im); +void evas_gl_common_image_unref(Evas_GL_Image *im); Evas_GL_Image *evas_gl_common_image_load(Evas_GL_Context *gc, const char *file, const char *key, Evas_Image_Load_Opts *lo, int *error); Evas_GL_Image *evas_gl_common_image_new_from_data(Evas_GL_Context *gc, unsigned int w, unsigned int h, DATA32 *data, int alpha, int cspace); Evas_GL_Image *evas_gl_common_image_new_from_copied_data(Evas_GL_Context *gc, unsigned int w, unsigned int h, DATA32 *data, int alpha, int cspace); Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_image.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_image.c 2011-02-11 06:16:23 UTC (rev 56948) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_image.c 2011-02-11 06:23:10 UTC (rev 56949) @@ -20,6 +20,82 @@ } } +static void +_evas_gl_image_cache_trim(Evas_GL_Context *gc) +{ + int size = evas_common_image_get_cache(); + + while (gc->shared->images_size > size) + { + Evas_GL_Image *im2; + Eina_List *l = NULL; + + EINA_LIST_REVERSE_FOREACH(gc->shared->images, l, im2) + { + if (im2->references == 0) + { + im2->cached = 0; + im2->gc->shared->images = + eina_list_remove_list(im2->gc->shared->images, l); + im2->gc->shared->images_size -= (im2->csize); + evas_gl_common_image_free(im2); + l = NULL; + break; + } + } + if ((gc->shared->images_size > size) && (l)) + { + printf("EEK %i > %i, no 0 ref imgs\n", + gc->shared->images_size, size); + break; + } + if (!gc->shared->images) + { + printf("EEK %i > %i, no imgs\n", + gc->shared->images_size, size); + break; + } + } +} + +static Eina_Bool +_evas_gl_image_cache_add(Evas_GL_Image *im) +{ + if (im->references == 0) + { + im->csize = im->w * im->h * 4; + im->gc->shared->images_size += im->csize; + _evas_gl_image_cache_trim(im->gc); + return EINA_TRUE; + } + else + { + im->gc->shared->images = eina_list_remove(im->gc->shared->images, im); + im->cached = 0; + } + return EINA_FALSE; +} + +void +evas_gl_common_image_ref(Evas_GL_Image *im) +{ + if (im->references == 0) + { + im->gc->shared->images_size -= (im->csize); + } + im->references++; +} + +void +evas_gl_common_image_unref(Evas_GL_Image *im) +{ + im->references--; + if (im->references == 0) + { + _evas_gl_image_cache_add(im); + } +} + Evas_GL_Image * evas_gl_common_image_load(Evas_GL_Context *gc, const char *file, const char *key, Evas_Image_Load_Opts *lo, int *error) { @@ -40,7 +116,7 @@ // evas_cache_image_drop(&im_im->cache_entry); gc->shared->images = eina_list_remove_list(gc->shared->images, l); gc->shared->images = eina_list_prepend(gc->shared->images, im); - im->references++; + evas_gl_common_image_ref(im); *error = EVAS_LOAD_ERROR_NONE; return im; } @@ -55,7 +131,6 @@ im->references = 1; im->im = im_im; im->gc = gc; - im->references = 1; im->cached = 1; im->cs.space = EVAS_COLORSPACE_ARGB8888; im->alpha = im->im->cache_entry.flags.alpha; @@ -82,7 +157,7 @@ { gc->shared->images = eina_list_remove_list(gc->shared->images, l); gc->shared->images = eina_list_prepend(gc->shared->images, im); - im->references++; + evas_gl_common_image_ref(im); return im; } } @@ -234,7 +309,7 @@ if (im->cached) { if (im->references == 0) - im->gc->shared->images_size -= (im->w * im->h); + im->gc->shared->images_size -= (im->csize); im->gc->shared->images = eina_list_remove(im->gc->shared->images, im); im->cached = 0; } @@ -308,7 +383,7 @@ if (im->cached) { if (im->references == 0) - im->gc->shared->images_size -= (im->w * im->h); + im->gc->shared->images_size -= im->csize; im->gc->shared->images = eina_list_remove(im->gc->shared->images, im); im->cached = 0; } @@ -349,53 +424,6 @@ } } -static void -_evas_gl_image_cache_trim(Evas_GL_Context *gc) -{ - int size = evas_common_image_get_cache(); - - while (gc->shared->images_size > size) - { - Evas_GL_Image *im2; - Eina_List *l; - - EINA_LIST_REVERSE_FOREACH(gc->shared->images, l, im2) - { - if (im2->references == 0) - { - im2->cached = 0; - im2->gc->shared->images = - eina_list_remove_list(im2->gc->shared->images, l); - im2->gc->shared->images_size -= (im2->w * im2->h); - evas_gl_common_image_free(im2); - break; - } - } - if (!l) - { - printf("EEEK images_size > 0 but no 0 ref images in cache\n"); - break; // something went wrong - } - } -} - -static Eina_Bool -_evas_gl_image_cache_add(Evas_GL_Image *im) -{ - if (im->references == 0) - { - im->gc->shared->images_size += (im->w * im->h); - _evas_gl_image_cache_trim(im->gc); - return EINA_TRUE; - } - else - { - im->gc->shared->images = eina_list_remove(im->gc->shared->images, im); - im->cached = 0; - } - return EINA_FALSE; -} - void evas_gl_common_image_cache_flush(Evas_GL_Context *gc) { Modified: trunk/evas/src/modules/engines/gl_x11/evas_engine.c =================================================================== --- trunk/evas/src/modules/engines/gl_x11/evas_engine.c 2011-02-11 06:16:23 UTC (rev 56948) +++ trunk/evas/src/modules/engines/gl_x11/evas_engine.c 2011-02-11 06:23:10 UTC (rev 56949) @@ -1211,13 +1211,13 @@ if (im2 == im) return im; if (im2) { - n = im2->native.data; - if (n) - { - im2->references++; - evas_gl_common_image_free(im); - return im2; - } + n = im2->native.data; + if (n) + { + evas_gl_common_image_ref(im2); + evas_gl_common_image_free(im); + return im2; + } } } else if (ns->type == EVAS_NATIVE_SURFACE_OPENGL) |
From: Enlightenment S. <no-...@en...> - 2011-04-06 05:56:59
|
Log: fixme notice, fix make current context to force if it was changed. Author: raster Date: 2011-04-05 22:56:53 -0700 (Tue, 05 Apr 2011) New Revision: 58375 Trac: http://trac.enlightenment.org/e/changeset/58375 Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_context.c trunk/evas/src/modules/engines/gl_x11/evas_x_main.c Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_context.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_context.c 2011-04-06 05:55:21 UTC (rev 58374) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_context.c 2011-04-06 05:56:53 UTC (rev 58375) @@ -2741,6 +2741,7 @@ cy = gh - gc->pipe[i].shader.cy - gc->pipe[i].shader.ch; if (fbo) cy = gc->pipe[i].shader.cy; glEnable(GL_SCISSOR_TEST); + // FIXME: handle gc->rot IF gc->pipe[0].shader.surface == gc->def_surface glScissor(gc->pipe[i].shader.cx, cy, gc->pipe[i].shader.cw, gc->pipe[i].shader.ch); setclip = 1; @@ -2760,6 +2761,7 @@ { cy = gh - gc->pipe[i].shader.cy - gc->pipe[i].shader.ch; if (fbo) cy = gc->pipe[i].shader.cy; + // FIXME: handle gc->rot IF gc->pipe[0].shader.surface == gc->def_surface glScissor(gc->pipe[i].shader.cx, cy, gc->pipe[i].shader.cw, gc->pipe[i].shader.ch); } Modified: trunk/evas/src/modules/engines/gl_x11/evas_x_main.c =================================================================== --- trunk/evas/src/modules/engines/gl_x11/evas_x_main.c 2011-04-06 05:55:21 UTC (rev 58374) +++ trunk/evas/src/modules/engines/gl_x11/evas_x_main.c 2011-04-06 05:56:53 UTC (rev 58375) @@ -570,7 +570,12 @@ _evas_gl_x11_window->egl_surface[0])) force_use = EINA_TRUE; } -#else +#else + if (_evas_gl_x11_window) + { + if (glXGetCurrentContext() != _evas_gl_x11_window->context) + force_use = EINA_TRUE; + } #endif if ((_evas_gl_x11_window != gw) || (force_use)) { |
From: Enlightenment S. <no-...@en...> - 2011-04-06 10:11:07
|
Log: and now REALLY fix that viewport bug... Author: raster Date: 2011-04-06 03:11:01 -0700 (Wed, 06 Apr 2011) New Revision: 58386 Trac: http://trac.enlightenment.org/e/changeset/58386 Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_context.c trunk/evas/src/modules/engines/gl_x11/evas_engine.c trunk/evas/src/modules/engines/gl_x11/evas_x_main.c Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_context.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_context.c 2011-04-06 09:40:13 UTC (rev 58385) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_context.c 2011-04-06 10:11:01 UTC (rev 58386) @@ -848,7 +848,7 @@ { if (_evas_gl_common_context == gc) return; _evas_gl_common_context = gc; - _evas_gl_common_viewport_set(gc); + if (gc) _evas_gl_common_viewport_set(gc); } void Modified: trunk/evas/src/modules/engines/gl_x11/evas_engine.c =================================================================== --- trunk/evas/src/modules/engines/gl_x11/evas_engine.c 2011-04-06 09:40:13 UTC (rev 58385) +++ trunk/evas/src/modules/engines/gl_x11/evas_engine.c 2011-04-06 10:11:01 UTC (rev 58386) @@ -423,6 +423,7 @@ re->info->indirect, re->info->info.destination_alpha, re->info->info.rotation); + eng_window_use(re->win); if (re->win) gl_wins++; if ((re->win) && (inc)) re->win->gl_context->references--; Modified: trunk/evas/src/modules/engines/gl_x11/evas_x_main.c =================================================================== --- trunk/evas/src/modules/engines/gl_x11/evas_x_main.c 2011-04-06 09:40:13 UTC (rev 58385) +++ trunk/evas/src/modules/engines/gl_x11/evas_x_main.c 2011-04-06 10:11:01 UTC (rev 58386) @@ -214,7 +214,6 @@ eng_window_free(gw); return NULL; } - _evas_gl_x11_window = gw; vendor = glGetString(GL_VENDOR); renderer = glGetString(GL_RENDERER); @@ -500,7 +499,6 @@ } } #endif - _evas_gl_x11_window = gw; gw->gl_context = evas_gl_common_context_new(); if (!gw->gl_context) @@ -511,7 +509,7 @@ #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) gw->gl_context->egldisp = gw->egl_disp; #endif - evas_gl_common_context_use(gw->gl_context); + eng_window_use(gw); evas_gl_common_context_resize(gw->gl_context, w, h, rot); gw->surf = 1; return gw; @@ -525,13 +523,13 @@ eng_window_use(gw); if (gw == _evas_gl_x11_window) _evas_gl_x11_window = NULL; if (gw->gl_context) - { - ref = gw->gl_context->references - 1; - evas_gl_common_context_free(gw->gl_context); - } + { + ref = gw->gl_context->references - 1; + evas_gl_common_context_free(gw->gl_context); + } #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) if (gw->egl_surface[0] != EGL_NO_SURFACE) - eglDestroySurface(gw->egl_disp, gw->egl_surface[0]); + eglDestroySurface(gw->egl_disp, gw->egl_surface[0]); if (ref == 0) { if (context) eglDestroyContext(gw->egl_disp, context); @@ -539,7 +537,6 @@ context = EGL_NO_CONTEXT; } eglMakeCurrent(gw->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - evas_gl_common_context_use(NULL); #else if (gw->glxwin) glXDestroyWindow(gw->disp, gw->glxwin); if (ref == 0) @@ -581,7 +578,10 @@ if ((_evas_gl_x11_window != gw) || (force_use)) { if (_evas_gl_x11_window) - evas_gl_common_context_flush(_evas_gl_x11_window->gl_context); + { + evas_gl_common_context_use(_evas_gl_x11_window->gl_context); + evas_gl_common_context_flush(_evas_gl_x11_window->gl_context); + } _evas_gl_x11_window = gw; if (gw) { @@ -637,7 +637,6 @@ eglDestroySurface(gw->egl_disp, gw->egl_surface[0]); gw->egl_surface[0] = EGL_NO_SURFACE; _evas_gl_x11_window = NULL; - evas_gl_common_context_use(NULL); } #else if (gw->glxwin) |
From: Enlightenment S. <no-...@en...> - 2011-04-09 04:13:28
|
Log: gles warning-- Author: raster Date: 2011-04-08 21:13:21 -0700 (Fri, 08 Apr 2011) New Revision: 58514 Trac: http://trac.enlightenment.org/e/changeset/58514 Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c trunk/evas/src/modules/engines/gl_x11/evas_engine.c trunk/evas/src/modules/engines/gl_x11/evas_x_main.c Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c 2011-04-09 03:21:49 UTC (rev 58513) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c 2011-04-09 04:13:21 UTC (rev 58514) @@ -647,8 +647,6 @@ #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) if (pt->dyn.img) { - void *egldisplay = pt->gc->egldisp; - secsym_eglDestroyImage(pt->gc->egldisp, pt->dyn.img); pt->dyn.img = NULL; pt->dyn.data = NULL; @@ -1052,13 +1050,13 @@ GLERR(__FUNCTION__, __FILE__, __LINE__, ""); _tex_sub_2d(0, 0, w / 2, h / 2, tex->ptv->format, tex->ptv->dataformat, rows[h + (h / 2)]); #else - int y; + unsigned int y; glPixelStorei(GL_UNPACK_ALIGNMENT, 1); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); glBindTexture(GL_TEXTURE_2D, tex->pt->texture); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - if ((rows[1] - rows[0]) == w) + if ((rows[1] - rows[0]) == (int)w) _tex_sub_2d(0, 0, w, h, tex->pt->format, tex->pt->dataformat, rows[0]); else { @@ -1068,7 +1066,7 @@ glBindTexture(GL_TEXTURE_2D, tex->ptu->texture); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - if ((rows[h + 1] - rows[h]) == (w / 2)) + if ((rows[h + 1] - rows[h]) == (int)(w / 2)) _tex_sub_2d(0, 0, w / 2, h / 2, tex->ptu->format, tex->ptu->dataformat, rows[h]); else { @@ -1078,7 +1076,7 @@ glBindTexture(GL_TEXTURE_2D, tex->ptv->texture); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - if ((rows[h + (h / 2) + 1] - rows[h + (h / 2)]) == (w / 2)) + if ((rows[h + (h / 2) + 1] - rows[h + (h / 2)]) == (int)(w / 2)) _tex_sub_2d(0, 0, w / 2, h / 2, tex->ptv->format, tex->ptv->dataformat, rows[h + (h / 2)]); else { Modified: trunk/evas/src/modules/engines/gl_x11/evas_engine.c =================================================================== --- trunk/evas/src/modules/engines/gl_x11/evas_engine.c 2011-04-09 03:21:49 UTC (rev 58513) +++ trunk/evas/src/modules/engines/gl_x11/evas_engine.c 2011-04-09 04:13:21 UTC (rev 58514) @@ -1122,6 +1122,8 @@ glBindTexture(GL_TEXTURE_2D, n->ns.data.opengl.texture_id); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } + return; + data = NULL; } static void @@ -1154,6 +1156,8 @@ glBindTexture(GL_TEXTURE_2D, 0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } + return; + data = NULL; } static void Modified: trunk/evas/src/modules/engines/gl_x11/evas_x_main.c =================================================================== --- trunk/evas/src/modules/engines/gl_x11/evas_x_main.c 2011-04-09 03:21:49 UTC (rev 58513) +++ trunk/evas/src/modules/engines/gl_x11/evas_x_main.c 2011-04-09 04:13:21 UTC (rev 58514) @@ -218,9 +218,9 @@ vendor = glGetString(GL_VENDOR); renderer = glGetString(GL_RENDERER); version = glGetString(GL_VERSION); - if (!vendor) vendor = "-UNKNOWN-"; - if (!renderer) renderer = "-UNKNOWN-"; - if (!version) version = "-UNKNOWN-"; + if (!vendor) vendor = (unsigned char *)"-UNKNOWN-"; + if (!renderer) renderer = (unsigned char *)"-UNKNOWN-"; + if (!version) version = (unsigned char *)"-UNKNOWN-"; if (getenv("EVAS_GL_INFO")) { fprintf(stderr, "vendor: %s\n", vendor); @@ -513,6 +513,7 @@ evas_gl_common_context_resize(gw->gl_context, w, h, rot); gw->surf = 1; return gw; + indirect = 0; } void |
From: Enlightenment S. <no-...@en...> - 2011-04-20 08:05:30
|
Log: more bad code - why pass in void * image and data? sero point.. and it totally is out of step with the rest of the api for gl_common.. that alone would tell you "dont so that". ugh. more filter fixes. Author: raster Date: 2011-04-20 01:05:23 -0700 (Wed, 20 Apr 2011) New Revision: 58746 Trac: http://trac.enlightenment.org/e/changeset/58746 Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_common.h trunk/evas/src/modules/engines/gl_common/evas_gl_filter.c trunk/evas/src/modules/engines/gl_x11/evas_engine.c Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_common.h =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_common.h 2011-04-20 08:01:04 UTC (rev 58745) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_common.h 2011-04-20 08:05:23 UTC (rev 58746) @@ -549,7 +549,7 @@ void evas_gl_common_line_draw(Evas_Engine_GL_Context *gc, int x1, int y1, int x2, int y2); -void evas_gl_common_filter_draw(void *data, Evas_Engine_GL_Context *context, void *image, Evas_Filter_Info *filter); +void evas_gl_common_filter_draw(Evas_Engine_GL_Context *context, Evas_GL_Image *im, Evas_Filter_Info *filter); Filtered_Image *evas_gl_common_image_filtered_get(Evas_GL_Image *im, uint8_t *key, size_t keylen); Filtered_Image *evas_gl_common_image_filtered_save(Evas_GL_Image *im, Evas_GL_Image *fimage, uint8_t *key, size_t keylen); void evas_gl_common_image_filtered_free(Evas_GL_Image *im, Filtered_Image *); Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_filter.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_filter.c 2011-04-20 08:01:04 UTC (rev 58745) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_filter.c 2011-04-20 08:05:23 UTC (rev 58746) @@ -1,11 +1,8 @@ #include "evas_gl_private.h" -// FIXME: wtf. why pass in data? void -evas_gl_common_filter_draw(void *data __UNUSED__, Evas_Engine_GL_Context *gc, - void *image, Evas_Filter_Info *filter) +evas_gl_common_filter_draw(Evas_Engine_GL_Context *gc, Evas_GL_Image *im, Evas_Filter_Info *filter) { - Evas_GL_Image *im = image; RGBA_Draw_Context *dc; GLuint prog; int r,g,b,a; Modified: trunk/evas/src/modules/engines/gl_x11/evas_engine.c =================================================================== --- trunk/evas/src/modules/engines/gl_x11/evas_engine.c 2011-04-20 08:01:04 UTC (rev 58745) +++ trunk/evas/src/modules/engines/gl_x11/evas_engine.c 2011-04-20 08:05:23 UTC (rev 58746) @@ -1559,7 +1559,7 @@ static void eng_image_draw_filtered(void *data, void *context, void *surface, - void *image, Evas_Filter_Info *filter) + void *image, Evas_Filter_Info *filter) { Render_Engine *re = data; @@ -1568,7 +1568,7 @@ evas_gl_common_context_target_surface_set(re->win->gl_context, surface); re->win->gl_context->dc = context; - evas_gl_common_filter_draw(data, re->win->gl_context, image, filter); + evas_gl_common_filter_draw(re->win->gl_context, image, filter); } static Filtered_Image * |
From: Enlightenment S. <no-...@en...> - 2011-08-16 07:06:45
|
Log: From: ?\236?\154?\176?\236?\138?\185?\236?\136?\152 <om1...@sa...> Subject: [E-devel] [Patch] Map/Unmap image for zero-copy texture this modifies the zero copy texture feature to map and unmap on get and put data to allow the put to "flush gpu caches". Author: raster Date: 2011-08-16 00:06:36 -0700 (Tue, 16 Aug 2011) New Revision: 62493 Trac: http://trac.enlightenment.org/e/changeset/62493 Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c trunk/evas/src/modules/engines/gl_x11/evas_engine.c Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c 2011-08-15 20:57:40 UTC (rev 62492) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c 2011-08-16 07:06:36 UTC (rev 62493) @@ -520,15 +520,6 @@ GLERR(__FUNCTION__, __FILE__, __LINE__, ""); return pt; } - pt->dyn.data = secsym_eglMapImageSEC(egldisplay, - pt->dyn.img); - if (!pt->dyn.data) - { - secsym_eglDestroyImage(egldisplay, pt->dyn.img); - pt->dyn.img = NULL; - GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - return pt; - } if (secsym_eglGetImageAttribSEC(egldisplay, pt->dyn.img, EGL_MAP_GL_TEXTURE_WIDTH_SEC, Modified: trunk/evas/src/modules/engines/gl_x11/evas_engine.c =================================================================== --- trunk/evas/src/modules/engines/gl_x11/evas_engine.c 2011-08-15 20:57:40 UTC (rev 62492) +++ trunk/evas/src/modules/engines/gl_x11/evas_engine.c 2011-08-16 07:06:36 UTC (rev 62493) @@ -80,6 +80,7 @@ typedef _eng_fn (*glsym_func_eng_fn) (); typedef void (*glsym_func_void) (); typedef void *(*glsym_func_void_ptr) (); +typedef unsigned int (*glsym_func_uint) (); _eng_fn (*glsym_eglGetProcAddress) (const char *a) = NULL; void (*glsym_eglBindTexImage) (EGLDisplay a, EGLSurface b, int c) = NULL; @@ -87,6 +88,8 @@ void *(*glsym_eglCreateImage) (EGLDisplay a, EGLContext b, EGLenum c, EGLClientBuffer d, const int *e) = NULL; void (*glsym_eglDestroyImage) (EGLDisplay a, void *b) = NULL; void (*glsym_glEGLImageTargetTexture2DOES) (int a, void *b) = NULL; +void *(*glsym_eglMapImageSEC) (void *a, void *b) = NULL; +unsigned int (*glsym_eglUnmapImageSEC) (void *a, void *b) = NULL; #else typedef void (*_eng_fn) (void); @@ -148,6 +151,9 @@ FINDSYM(glsym_eglDestroyImage, "eglDestroyImageKHR", glsym_func_void); FINDSYM(glsym_glEGLImageTargetTexture2DOES, "glEGLImageTargetTexture2DOES", glsym_func_void); + + FINDSYM(glsym_eglMapImageSEC, "eglMapImageSEC", glsym_func_void_ptr); + FINDSYM(glsym_eglUnmapImageSEC, "eglUnmapImageSEC", glsym_func_uint); #else #define FINDSYM(dst, sym, typ) \ if ((!dst) && (glsym_glXGetProcAddress)) dst = (typ)glsym_glXGetProcAddress(sym); \ @@ -1760,13 +1766,35 @@ if (err) *err = EVAS_LOAD_ERROR_NONE; return im; } + +#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) + eng_window_use(re->win); + + if ((im->tex) && (im->tex->pt) && (im->tex->pt->dyn.img)) + { + *image_data = im->tex->pt->dyn.data = glsym_eglMapImageSEC(re->win->egl_disp, im->tex->pt->dyn.img); + + if (!im->tex->pt->dyn.data) + { + glsym_eglDestroyImage(re->win->egl_disp, im->tex->pt->dyn.img); + im->tex->pt->dyn.img = NULL; + GLERR(__FUNCTION__, __FILE__, __LINE__, ""); + } + + if (err) *err = EVAS_LOAD_ERROR_NONE; + return im; + } +#else if ((im->tex) && (im->tex->pt) && (im->tex->pt->dyn.data)) { *image_data = im->tex->pt->dyn.data; if (err) *err = EVAS_LOAD_ERROR_NONE; return im; } + eng_window_use(re->win); +#endif + error = evas_cache_image_load_data(&im->im->cache_entry); switch (im->cs.space) { @@ -1821,6 +1849,9 @@ eng_window_use(re->win); if ((im->tex) && (im->tex->pt) && (im->tex->pt->dyn.data)) { +#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) + glsym_eglUnmapImageSEC(re->win->egl_disp, im->tex->pt->dyn.img); +#endif if (im->tex->pt->dyn.data == image_data) { return image; |
From: Enlightenment S. <no-...@en...> - 2011-12-05 08:54:25
|
Log: I'm attaching a patch for the initial version of the GL Fastpath addition to evas gl backend. Working on different mobile devices, we've noticed that the cost of context switch (MakeCurrent) in GL can be very expensive depending on the driver implementation. To minimize the poorly written driver's context switch overhead, I've implemented a state tracking layer on top of the driver implemented GL. Essentially, this layer wraps all the GL/Glue(GLX/EGL) APIs and manages its own state changes. Internally, only one real GL context is created and logical contexts are created every time a user requests context creation. The logical contexts keep track of its states and sets only the necessary states (the ones that are different than the current ones) when there is a MakeCurrent request. The real MakeCurrent gets called when there is a Surface/Window change request. The GL library is dlopened and all the APIs are dlsym'ed and wrapped accordingly. All the GL functions are in evas_gl_core.{h,c}. Here's a very simply flow of the code. - all the APIs are exported as function pointers (*glsym_glBegin), (*glsm_eglCreatContext), and etc. - all the native GL/Glue(GLX/EGL) APIs are dlsym'ed as _sym_glBegin, _sym_eglCreateContext, and etc. - all the fastpath APIs are implmemnted as fpgl_glBegin, fpgl_eglCreateContext, and etc. - if faspath is seletected, the exported APIs are set accordingly ie. glsym_glBegin = fpgl_glBegin; - default mode is the regular gl symbols are directly set. ie. glsym_glBegin = _sym_glBegin; I have an Environment variable where you can set it to three different Modes EVAS_GL_FASTPATH = 0 // Default mode. Regular GL symbols are directly loaded EVAS_GL_FASTPATH = 1 // Fastpath mode. Takes the path described above. EVAS_GL_FASTPATH = 2 // Wrapped mode. All the regular GL functions are wrapped once. This can be used for various purposes Since all the GL symbols are now loaded in this library, I took out all the gl symbol loading parts in the evas gl backend as you'll see in the patch. The changes to the engine and the backend itself is pretty minor. There are still some known issues to hammer out but I thought we're at a good place for an initial version so that my source doesn't diverge too much. Known Issues and To Do's * Current GL Fastpath version doesn't support multiple threads. Instead of having one global real context, I would need to do it for each thread. I'll get on this soon. * Issues running Evas GL on certain conditions. When running the elementary test (with gl engine), if you run ELMGLview test that runs in ON_DEMAND mode, everything works fine. BUT, when you run the ELMGLView test in ALWAYS mode, the subsequent elm tests shows blank screen. When you destroy the GLView window, everything else comes on fine. * Resource protection code. This actually applies to Evas GL code in general as well. Since all the resources are shared among all the contexts that get created, I would like to eventually have a resource protecting mechanism that prevents access to resources outside of its context unless specifically specified. I'm attaching three files - evas_gl_core.h, evas_gl_core.c, fastpath.patch To get the code running... - copy evas_gl_core.{c,h} to src/modules/engine/gl_common/ - apply the fastpath.patch - compile/install evas - to run with fastpath GL (ie. % EVAS_GL_FASTPATH=1 ./evasgl_sample1) Author: raster Date: 2011-12-05 00:54:14 -0800 (Mon, 05 Dec 2011) New Revision: 65891 Trac: http://trac.enlightenment.org/e/changeset/65891 Added: trunk/evas/src/modules/engines/gl_common/evas_gl_core.c trunk/evas/src/modules/engines/gl_common/evas_gl_core.h Modified: trunk/evas/src/modules/engines/gl_common/Makefile.am trunk/evas/src/modules/engines/gl_common/evas_gl_common.h trunk/evas/src/modules/engines/gl_common/evas_gl_context.c trunk/evas/src/modules/engines/gl_common/evas_gl_line.c trunk/evas/src/modules/engines/gl_common/evas_gl_shader.c trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c trunk/evas/src/modules/engines/gl_x11/evas_engine.c trunk/evas/src/modules/engines/gl_x11/evas_engine.h trunk/evas/src/modules/engines/gl_x11/evas_x_main.c Modified: trunk/evas/src/modules/engines/gl_common/Makefile.am =================================================================== --- trunk/evas/src/modules/engines/gl_common/Makefile.am 2011-12-05 07:30:31 UTC (rev 65890) +++ trunk/evas/src/modules/engines/gl_common/Makefile.am 2011-12-05 08:54:14 UTC (rev 65891) @@ -14,6 +14,8 @@ noinst_LTLIBRARIES = libevas_engine_gl_common.la libevas_engine_gl_common_la_SOURCES = \ +evas_gl_core.h \ +evas_gl_core.c \ evas_gl_private.h \ evas_gl_common.h \ evas_gl_context.c \ Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_common.h =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_common.h 2011-12-05 07:30:31 UTC (rev 65890) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_common.h 2011-12-05 08:54:14 UTC (rev 65891) @@ -12,6 +12,7 @@ #include <sys/time.h> #include <unistd.h> #include <Eet.h> +#include "evas_gl_core.h" #define GL_GLEXT_PROTOTYPES @@ -28,14 +29,14 @@ # else # if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) # if defined(GLES_VARIETY_S3C6410) -# include <GLES2/gl2.h> +//# include <GLES2/gl2.h> # elif defined(GLES_VARIETY_SGX) -# include <GLES2/gl2.h> -# include <GLES2/gl2ext.h> +//# include <GLES2/gl2.h> +//# include <GLES2/gl2ext.h> # endif # else -# include <GL/gl.h> -# include <GL/glext.h> +//# include <GL/gl.h> +//# include <GL/glext.h> # endif # endif #endif @@ -624,29 +625,12 @@ void evas_gl_common_image_filtered_free(Evas_GL_Image *im, Filtered_Image *); #endif -extern void (*glsym_glGenFramebuffers) (GLsizei a, GLuint *b); -extern void (*glsym_glBindFramebuffer) (GLenum a, GLuint b); -extern void (*glsym_glFramebufferTexture2D) (GLenum a, GLenum b, GLenum c, GLuint d, GLint e); -extern void (*glsym_glDeleteFramebuffers) (GLsizei a, const GLuint *b); -extern void (*glsym_glGetProgramBinary) (GLuint a, GLsizei b, GLsizei *c, GLenum *d, void *e); -extern void (*glsym_glProgramBinary) (GLuint a, GLenum b, const void *c, GLint d); -extern void (*glsym_glProgramParameteri) (GLuint a, GLuint b, GLint d); - -#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) -extern void *(*secsym_eglCreateImage) (void *a, void *b, GLenum c, void *d, const int *e); -extern unsigned int (*secsym_eglDestroyImage) (void *a, void *b); -extern void (*secsym_glEGLImageTargetTexture2DOES) (int a, void *b); -extern void *(*secsym_eglMapImageSEC) (void *a, void *b); -extern unsigned int (*secsym_eglUnmapImageSEC) (void *a, void *b); -extern unsigned int (*secsym_eglGetImageAttribSEC) (void *a, void *b, int c, int *d); -#endif - //#define GL_ERRORS 1 #ifdef GL_ERRORS # define GLERR(fn, fl, ln, op) \ { \ - int __gl_err = glGetError(); \ + int __gl_err = glsym_glGetError(); \ if (__gl_err != GL_NO_ERROR) glerr(__gl_err, fl, fn, ln, op); \ } #else Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_context.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_context.c 2011-12-05 07:30:31 UTC (rev 65890) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_context.c 2011-12-05 08:54:14 UTC (rev 65891) @@ -12,142 +12,8 @@ static int sym_done = 0; int _evas_engine_GL_common_log_dom = -1; -typedef void (*glsym_func_void) (); - -void (*glsym_glGenFramebuffers) (GLsizei a, GLuint *b) = NULL; -void (*glsym_glBindFramebuffer) (GLenum a, GLuint b) = NULL; -void (*glsym_glFramebufferTexture2D) (GLenum a, GLenum b, GLenum c, GLuint d, GLint e) = NULL; -void (*glsym_glDeleteFramebuffers) (GLsizei a, const GLuint *b) = NULL; -void (*glsym_glGetProgramBinary) (GLuint a, GLsizei b, GLsizei *c, GLenum *d, void *e) = NULL; -void (*glsym_glProgramBinary) (GLuint a, GLenum b, const void *c, GLint d) = NULL; -void (*glsym_glProgramParameteri) (GLuint a, GLuint b, GLint d) = NULL; - -#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) -// just used for finding symbols :) -typedef void (*_eng_fn) (void); - -typedef _eng_fn (*secsym_func_eng_fn) (); -typedef unsigned int (*secsym_func_uint) (); -typedef void *(*secsym_func_void_ptr) (); - -static _eng_fn (*secsym_eglGetProcAddress) (const char *a) = NULL; - -void *(*secsym_eglCreateImage) (void *a, void *b, GLenum c, void *d, const int *e) = NULL; -unsigned int (*secsym_eglDestroyImage) (void *a, void *b) = NULL; -void (*secsym_glEGLImageTargetTexture2DOES) (int a, void *b) = NULL; -void *(*secsym_eglMapImageSEC) (void *a, void *b) = NULL; -unsigned int (*secsym_eglUnmapImageSEC) (void *a, void *b) = NULL; -unsigned int (*secsym_eglGetImageAttribSEC) (void *a, void *b, int c, int *d) = NULL; -#endif - static int dbgflushnum = -1; -static void -sym_missing(void) -{ - ERR("GL symbols missing!"); -} - -static void -gl_symbols(void) -{ - if (sym_done) return; - sym_done = 1; - - /* FIXME: If using the SDL engine, we should use SDL_GL_GetProcAddress - * instead of dlsym - * if (!dst) dst = (typ)SDL_GL_GetProcAddress(sym) - */ -#define FINDSYM(dst, sym, typ) if (!dst) dst = (typ)dlsym(RTLD_DEFAULT, sym) -#define FALLBAK(dst, typ) if (!dst) dst = (typ)sym_missing; - - FINDSYM(glsym_glGenFramebuffers, "glGenFramebuffers", glsym_func_void); - FINDSYM(glsym_glGenFramebuffers, "glGenFramebuffersEXT", glsym_func_void); - FINDSYM(glsym_glGenFramebuffers, "glGenFramebuffersARB", glsym_func_void); - FALLBAK(glsym_glGenFramebuffers, glsym_func_void); - - FINDSYM(glsym_glBindFramebuffer, "glBindFramebuffer", glsym_func_void); - FINDSYM(glsym_glBindFramebuffer, "glBindFramebufferEXT", glsym_func_void); - FINDSYM(glsym_glBindFramebuffer, "glBindFramebufferARB", glsym_func_void); - FALLBAK(glsym_glBindFramebuffer, glsym_func_void); - - FINDSYM(glsym_glFramebufferTexture2D, "glFramebufferTexture2D", glsym_func_void); - FINDSYM(glsym_glFramebufferTexture2D, "glFramebufferTexture2DEXT", glsym_func_void); - FINDSYM(glsym_glFramebufferTexture2D, "glFramebufferTexture2DARB", glsym_func_void); - FALLBAK(glsym_glFramebufferTexture2D, glsym_func_void); - - FINDSYM(glsym_glDeleteFramebuffers, "glDeleteFramebuffers", glsym_func_void); - FINDSYM(glsym_glDeleteFramebuffers, "glDeleteFramebuffersEXT", glsym_func_void); - FINDSYM(glsym_glDeleteFramebuffers, "glDeleteFramebuffersARB", glsym_func_void); - FALLBAK(glsym_glDeleteFramebuffers, glsym_func_void); - - FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinary", glsym_func_void); - FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryEXT", glsym_func_void); - FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryARB", glsym_func_void); - FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryOES", glsym_func_void); - - FINDSYM(glsym_glProgramBinary, "glProgramBinary", glsym_func_void); - FINDSYM(glsym_glProgramBinary, "glProgramBinaryEXT", glsym_func_void); - FINDSYM(glsym_glProgramBinary, "glProgramBinaryARB", glsym_func_void); - - FINDSYM(glsym_glProgramParameteri, "glProgramParameteri", glsym_func_void); - FINDSYM(glsym_glProgramParameteri, "glProgramParameteriEXT", glsym_func_void); - FINDSYM(glsym_glProgramParameteri, "glProgramParameteriARB", glsym_func_void); - -#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) -#undef FINDSYM -#define FINDSYM(dst, sym, typ) \ - if ((!dst) && (secsym_eglGetProcAddress)) dst = (typ)secsym_eglGetProcAddress(sym); \ - if (!dst) dst = (typ)dlsym(RTLD_DEFAULT, sym) -// yes - gl core looking for egl stuff. i know it's odd. a reverse-layer thing -// but it will work as the egl/glx layer calls gl core common stuff and thus -// these symbols will work. making the glx/egl + x11 layer do this kind-of is -// wrong as this is not x11 (output) layer specific like the native surface -// stuff. this is generic zero-copy textures for gl - - FINDSYM(secsym_eglGetProcAddress, "eglGetProcAddress", secsym_func_eng_fn); - FINDSYM(secsym_eglGetProcAddress, "eglGetProcAddressEXT", secsym_func_eng_fn); - FINDSYM(secsym_eglGetProcAddress, "eglGetProcAddressARB", secsym_func_eng_fn); - FINDSYM(secsym_eglGetProcAddress, "eglGetProcAddressKHR", secsym_func_eng_fn); - - FINDSYM(secsym_eglCreateImage, "eglCreateImage", secsym_func_void_ptr); - FINDSYM(secsym_eglCreateImage, "eglCreateImageEXT", secsym_func_void_ptr); - FINDSYM(secsym_eglCreateImage, "eglCreateImageARB", secsym_func_void_ptr); - FINDSYM(secsym_eglCreateImage, "eglCreateImageKHR", secsym_func_void_ptr); - - FINDSYM(secsym_eglDestroyImage, "eglDestroyImage", secsym_func_uint); - FINDSYM(secsym_eglDestroyImage, "eglDestroyImageEXT", secsym_func_uint); - FINDSYM(secsym_eglDestroyImage, "eglDestroyImageARB", secsym_func_uint); - FINDSYM(secsym_eglDestroyImage, "eglDestroyImageKHR", secsym_func_uint); - - FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinary", glsym_func_void); - FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryEXT", glsym_func_void); - FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryARB", glsym_func_void); - FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryOES", glsym_func_void); - FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryKHR", glsym_func_void); - - FINDSYM(glsym_glProgramBinary, "glProgramBinary", glsym_func_void); - FINDSYM(glsym_glProgramBinary, "glProgramBinaryEXT", glsym_func_void); - FINDSYM(glsym_glProgramBinary, "glProgramBinaryARB", glsym_func_void); - FINDSYM(glsym_glProgramBinary, "glProgramBinaryOES", glsym_func_void); - FINDSYM(glsym_glProgramBinary, "glProgramBinaryKHR", glsym_func_void); - - FINDSYM(glsym_glProgramParameteri, "glProgramParameteri", glsym_func_void); - FINDSYM(glsym_glProgramParameteri, "glProgramParameteriEXT", glsym_func_void); - FINDSYM(glsym_glProgramParameteri, "glProgramParameteriARB", glsym_func_void); - FINDSYM(glsym_glProgramParameteri, "glProgramParameteriOES", glsym_func_void); - FINDSYM(glsym_glProgramParameteri, "glProgramParameteriKHR", glsym_func_void); - - FINDSYM(secsym_glEGLImageTargetTexture2DOES, "glEGLImageTargetTexture2DOES", glsym_func_void); - - FINDSYM(secsym_eglMapImageSEC, "eglMapImageSEC", secsym_func_void_ptr); - - FINDSYM(secsym_eglUnmapImageSEC, "eglUnmapImageSEC", secsym_func_uint); - - FINDSYM(secsym_eglGetImageAttribSEC, "eglGetImageAttribSEC", secsym_func_uint); -#endif -} - static void shader_array_flush(Evas_Engine_GL_Context *gc); static Evas_Engine_GL_Context *_evas_gl_common_context = NULL; @@ -249,11 +115,11 @@ int minor; /* - * glGetString returns a string describing the current GL connection. + * glsym_glGetString returns a string describing the current GL connection. * GL_VERSION is used to get the version of the connection */ - version = (char *)glGetString(GL_VERSION); + version = (char *)glsym_glGetString(GL_VERSION); /* * OpengL ES @@ -300,7 +166,7 @@ * version number and the vendor-specific information. */ - /* glGetString() returns a static string, and we are going to */ + /* glsym_glGetString() returns a static string, and we are going to */ /* modify it, so we get a copy first */ version = strdup(version); if (!version) @@ -371,9 +237,9 @@ if (foc == 0) { if ((rot == 0) || (rot == 180)) - glViewport(0, 0, w, h); + glsym_glViewport(0, 0, w, h); else - glViewport(0, 0, h, w); + glsym_glViewport(0, 0, h, w); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); // std matrix if (m == 1) @@ -436,9 +302,9 @@ if (m == -1) ay = vy * 2; if ((rot == 0) || (rot == 180)) - glViewport(-2 * vx, -2 * vy, vw, vh); + glsym_glViewport(-2 * vx, -2 * vy, vw, vh); else - glViewport(-2 * vy, -2 * vx, vh, vw); + glsym_glViewport(-2 * vy, -2 * vx, vh, vw); if (m == 1) matrix_ortho(proj, 0, vw, 0, vh, -1000000.0, 1000000.0, @@ -455,15 +321,15 @@ for (i = 0; i < SHADER_LAST; ++i) { - glUseProgram(gc->shared->shader[i].prog); + glsym_glUseProgram(gc->shared->shader[i].prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glUniformMatrix4fv(glGetUniformLocation(gc->shared->shader[i].prog, "mvp"), 1, GL_FALSE, proj); + glsym_glUniformMatrix4fv(glsym_glGetUniformLocation(gc->shared->shader[i].prog, "mvp"), 1, GL_FALSE, proj); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } if (gc->state.current.cur_prog == PRG_INVALID) - glUseProgram(gc->shared->shader[0].prog); - else glUseProgram(gc->state.current.cur_prog); + glsym_glUseProgram(gc->shared->shader[0].prog); + else glsym_glUseProgram(gc->state.current.cur_prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } @@ -486,8 +352,6 @@ gc = calloc(1, sizeof(Evas_Engine_GL_Context)); if (!gc) return NULL; - gl_symbols(); - gc->references = 1; _evas_gl_common_context = gc; @@ -500,7 +364,7 @@ const GLubyte *ext; shared = calloc(1, sizeof(Evas_GL_Shared)); - ext = glGetString(GL_EXTENSIONS); + ext = glsym_glGetString(GL_EXTENSIONS); if (ext) { if (getenv("EVAS_GL_INFO")) @@ -518,7 +382,7 @@ shared->info.bin_program = 1; #ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT if ((strstr((char *)ext, "GL_EXT_texture_filter_anisotropic"))) - glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, + glsym_glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &(shared->info.anisotropic)); #endif #ifdef GL_BGRA @@ -536,24 +400,24 @@ { // test for all needed symbols - be "conservative" and // need all of it - if ((secsym_eglCreateImage) && - (secsym_eglDestroyImage) && - (secsym_glEGLImageTargetTexture2DOES) && - (secsym_eglMapImageSEC) && - (secsym_eglUnmapImageSEC) && - (secsym_eglGetImageAttribSEC)) + if ((glsym_eglCreateImage) && + (glsym_eglDestroyImage) && + (glsym_glEGLImageTargetTexture2DOES) && + (glsym_eglMapImageSEC) && + (glsym_eglUnmapImageSEC) && + (glsym_eglGetImageAttribSEC)) shared->info.sec_image_map = 1; } #endif } - glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, + glsym_glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &(shared->info.max_texture_units)); - glGetIntegerv(GL_MAX_TEXTURE_SIZE, + glsym_glGetIntegerv(GL_MAX_TEXTURE_SIZE, &(shared->info.max_texture_size)); shared->info.max_vertex_elements = 6 * 100000; #ifdef GL_MAX_ELEMENTS_VERTICES -/* only applies to glDrawRangeElements. don't really need to get it. - glGetIntegerv(GL_MAX_ELEMENTS_VERTICES, +/* only applies to glsym_glDrawRangeElements. don't really need to get it. + glsym_glGetIntegerv(GL_MAX_ELEMENTS_VERTICES, &(shared->info.max_vertex_elements)); */ #endif @@ -573,7 +437,7 @@ shared->info.tune.atlas.slot_size = DEF_ATLAS_SLOT; // per gpu hacks. based on impirical measurement of some known gpu's - s = (const char *)glGetString(GL_RENDERER); + s = (const char *)glsym_glGetString(GL_RENDERER); if (s) { if (strstr(s, "PowerVR SGX 540")) @@ -646,47 +510,47 @@ (int)shared->info.tune.atlas.slot_size ); - glDisable(GL_DEPTH_TEST); + glsym_glDisable(GL_DEPTH_TEST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glEnable(GL_DITHER); + glsym_glEnable(GL_DITHER); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glDisable(GL_BLEND); + glsym_glDisable(GL_BLEND); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + glsym_glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); // no dest alpha -// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // dest alpha -// glBlendFunc(GL_SRC_ALPHA, GL_ONE); // ??? - glDepthMask(GL_FALSE); +// glsym_glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // dest alpha +// glsym_glBlendFunc(GL_SRC_ALPHA, GL_ONE); // ??? + glsym_glDepthMask(GL_FALSE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT if (shared->info.anisotropic > 0.0) { - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); + glsym_glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } #endif - glEnableVertexAttribArray(SHAD_VERTEX); + glsym_glEnableVertexAttribArray(SHAD_VERTEX); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glEnableVertexAttribArray(SHAD_COLOR); + glsym_glEnableVertexAttribArray(SHAD_COLOR); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (!evas_gl_common_shader_program_init(shared)) goto error; #define SHADER_TEXTURE_ADD(Shared, Shader, Name) \ - glUseProgram(Shared->shader[SHADER_##Shader].prog); \ + glsym_glUseProgram(Shared->shader[SHADER_##Shader].prog); \ GLERR(__FUNCTION__, __FILE__, __LINE__, ""); \ - glUniform1i(glGetUniformLocation(Shared->shader[SHADER_##Shader].prog, #Name), Shared->shader[SHADER_##Shader].tex_count++); \ + glsym_glUniform1i(glsym_glGetUniformLocation(Shared->shader[SHADER_##Shader].prog, #Name), Shared->shader[SHADER_##Shader].tex_count++); \ GLERR(__FUNCTION__, __FILE__, __LINE__, ""); SHADER_TEXTURE_ADD(shared, YUV, tex); @@ -713,8 +577,8 @@ SHADER_TEXTURE_ADD(shared, IMG_MASK, texm); if (gc->state.current.cur_prog == PRG_INVALID) - glUseProgram(gc->shared->shader[0].prog); - else glUseProgram(gc->state.current.cur_prog); + glsym_glUseProgram(gc->shared->shader[0].prog); + else glsym_glUseProgram(gc->state.current.cur_prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); evas_gl_common_shader_program_init_done(); @@ -723,8 +587,8 @@ // // in code: // GLuint texes[8]; - // GLint loc = glGetUniformLocation(prog, "tex"); - // glUniform1iv(loc, 8, texes); + // GLint loc = glsym_glGetUniformLocation(prog, "tex"); + // glsym_glUniform1iv(loc, 8, texes); shared->native_pm_hash = eina_hash_int32_new(NULL); shared->native_tex_hash = eina_hash_int32_new(NULL); @@ -863,53 +727,53 @@ } gc->change.size = 1; - glDisable(GL_SCISSOR_TEST); + glsym_glDisable(GL_SCISSOR_TEST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glScissor(0, 0, 0, 0); + glsym_glScissor(0, 0, 0, 0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glDisable(GL_DEPTH_TEST); + glsym_glDisable(GL_DEPTH_TEST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glEnable(GL_DITHER); + glsym_glEnable(GL_DITHER); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glDisable(GL_BLEND); + glsym_glDisable(GL_BLEND); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + glsym_glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); // no dest alpha -// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // dest alpha -// glBlendFunc(GL_SRC_ALPHA, GL_ONE); // ??? - glDepthMask(GL_FALSE); +// glsym_glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // dest alpha +// glsym_glBlendFunc(GL_SRC_ALPHA, GL_ONE); // ??? + glsym_glDepthMask(GL_FALSE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT if (shared->info.anisotropic > 0.0) { - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); + glsym_glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } #endif - glEnableVertexAttribArray(SHAD_VERTEX); + glsym_glEnableVertexAttribArray(SHAD_VERTEX); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glEnableVertexAttribArray(SHAD_COLOR); + glsym_glEnableVertexAttribArray(SHAD_COLOR); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (gc->state.current.cur_prog == PRG_INVALID) - glUseProgram(gc->shared->shader[0].prog); - else glUseProgram(gc->state.current.cur_prog); + glsym_glUseProgram(gc->shared->shader[0].prog); + else glsym_glUseProgram(gc->state.current.cur_prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glActiveTexture(GL_TEXTURE0); + glsym_glActiveTexture(GL_TEXTURE0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); + glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); _evas_gl_common_viewport_set(gc); @@ -2314,19 +2178,19 @@ switch (rot) { case 0: // UP this way: ^ - glScissor(cx, cy, cw, ch); + glsym_glScissor(cx, cy, cw, ch); break; case 90: // UP this way: < - glScissor(gh - (cy + ch), cx, ch, cw); + glsym_glScissor(gh - (cy + ch), cx, ch, cw); break; case 180: // UP this way: v - glScissor(gw - (cx + cw), gh - (cy + ch), cw, ch); + glsym_glScissor(gw - (cx + cw), gh - (cy + ch), cw, ch); break; case 270: // UP this way: > - glScissor(cy, gw - (cx + cw), ch, cw); + glsym_glScissor(cy, gw - (cx + cw), ch, cw); break; default: // assume up is up - glScissor(cx, cy, cw, ch); + glsym_glScissor(cx, cy, cw, ch); break; } } @@ -2355,7 +2219,7 @@ GLERR(__FUNCTION__, __FILE__, __LINE__, "<flush err>"); if (gc->pipe[i].shader.cur_prog != gc->state.current.cur_prog) { - glUseProgram(gc->pipe[i].shader.cur_prog); + glsym_glUseProgram(gc->pipe[i].shader.cur_prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } @@ -2364,18 +2228,18 @@ #if 0 if (gc->pipe[i].shader.cur_tex) { - glEnable(GL_TEXTURE_2D); + glsym_glEnable(GL_TEXTURE_2D); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else { - glDisable(GL_TEXTURE_2D); + glsym_glDisable(GL_TEXTURE_2D); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } #endif - glActiveTexture(GL_TEXTURE0); + glsym_glActiveTexture(GL_TEXTURE0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_tex); + glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_tex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } if (gc->pipe[i].array.im) @@ -2383,7 +2247,7 @@ #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) if (gc->pipe[i].array.im->tex->pt->dyn.img) { - secsym_glEGLImageTargetTexture2DOES + glsym_glEGLImageTargetTexture2DOES (GL_TEXTURE_2D, gc->pipe[i].array.im->tex->pt->dyn.img); } else @@ -2402,12 +2266,12 @@ switch (gc->pipe[i].shader.render_op) { case EVAS_RENDER_BLEND: /**< default op: d = d*(1-sa) + s */ - glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + glsym_glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); break; case EVAS_RENDER_COPY: /**< d = s */ gc->pipe[i].shader.blend = 0; - glBlendFunc(GL_ONE, GL_ONE); + glsym_glBlendFunc(GL_ONE, GL_ONE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); break; // FIXME: fix blend funcs below! @@ -2422,7 +2286,7 @@ case EVAS_RENDER_MASK: /**< d = d*sa */ case EVAS_RENDER_MUL: /**< d = d*s */ default: - glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + glsym_glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); break; } @@ -2431,12 +2295,12 @@ { if (gc->pipe[i].shader.blend) { - glEnable(GL_BLEND); + glsym_glEnable(GL_BLEND); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else { - glDisable(GL_BLEND); + glsym_glDisable(GL_BLEND); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } } @@ -2448,17 +2312,17 @@ #ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT if (shared->info.anisotropic > 0.0) { - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, shared->info.anisotropic); + glsym_glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, shared->info.anisotropic); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } #endif - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else @@ -2466,17 +2330,17 @@ #ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT if (shared->info.anisotropic > 0.0) { - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); + glsym_glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } #endif - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } } @@ -2487,7 +2351,7 @@ { cy = gh - gc->pipe[i].shader.cy - gc->pipe[i].shader.ch; if (fbo) cy = gc->pipe[i].shader.cy; - glEnable(GL_SCISSOR_TEST); + glsym_glEnable(GL_SCISSOR_TEST); if (!fbo) scissor_rot(gc, gc->rot, gw, gh, gc->pipe[i].shader.cx, @@ -2495,14 +2359,14 @@ gc->pipe[i].shader.cw, gc->pipe[i].shader.ch); else - glScissor(gc->pipe[i].shader.cx, cy, + glsym_glScissor(gc->pipe[i].shader.cx, cy, gc->pipe[i].shader.cw, gc->pipe[i].shader.ch); setclip = 1; } else { - glDisable(GL_SCISSOR_TEST); - glScissor(0, 0, 0, 0); + glsym_glDisable(GL_SCISSOR_TEST); + glsym_glScissor(0, 0, 0, 0); } } if ((gc->pipe[i].shader.clip) && (!setclip)) @@ -2521,112 +2385,112 @@ gc->pipe[i].shader.cw, gc->pipe[i].shader.ch); else - glScissor(gc->pipe[i].shader.cx, cy, + glsym_glScissor(gc->pipe[i].shader.cx, cy, gc->pipe[i].shader.cw, gc->pipe[i].shader.ch); } } - glVertexAttribPointer(SHAD_VERTEX, 3, GL_SHORT, GL_FALSE, 0, gc->pipe[i].array.vertex); + glsym_glVertexAttribPointer(SHAD_VERTEX, 3, GL_SHORT, GL_FALSE, 0, gc->pipe[i].array.vertex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glVertexAttribPointer(SHAD_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, gc->pipe[i].array.color); + glsym_glVertexAttribPointer(SHAD_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, gc->pipe[i].array.color); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (gc->pipe[i].array.use_texuv) { - glEnableVertexAttribArray(SHAD_TEXUV); + glsym_glEnableVertexAttribArray(SHAD_TEXUV); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glVertexAttribPointer(SHAD_TEXUV, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv); + glsym_glVertexAttribPointer(SHAD_TEXUV, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else { - glDisableVertexAttribArray(SHAD_TEXUV); + glsym_glDisableVertexAttribArray(SHAD_TEXUV); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } if (gc->pipe[i].array.line) { - glDisableVertexAttribArray(SHAD_TEXUV); + glsym_glDisableVertexAttribArray(SHAD_TEXUV); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glDisableVertexAttribArray(SHAD_TEXUV2); + glsym_glDisableVertexAttribArray(SHAD_TEXUV2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glDisableVertexAttribArray(SHAD_TEXUV3); + glsym_glDisableVertexAttribArray(SHAD_TEXUV3); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glDrawArrays(GL_LINES, 0, gc->pipe[i].array.num); + glsym_glDrawArrays(GL_LINES, 0, gc->pipe[i].array.num); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else { if (gc->pipe[i].array.use_texm) { - glEnableVertexAttribArray(SHAD_TEXM); + glsym_glEnableVertexAttribArray(SHAD_TEXM); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glVertexAttribPointer(SHAD_TEXM, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texm); + glsym_glVertexAttribPointer(SHAD_TEXM, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texm); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glActiveTexture(GL_TEXTURE1); + glsym_glActiveTexture(GL_TEXTURE1); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texm); + glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texm); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glActiveTexture(GL_TEXTURE0); + glsym_glActiveTexture(GL_TEXTURE0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else { - glDisableVertexAttribArray(SHAD_TEXM); + glsym_glDisableVertexAttribArray(SHAD_TEXM); } if ((gc->pipe[i].array.use_texuv2) && (gc->pipe[i].array.use_texuv3)) { - glEnableVertexAttribArray(SHAD_TEXUV2); + glsym_glEnableVertexAttribArray(SHAD_TEXUV2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glEnableVertexAttribArray(SHAD_TEXUV3); + glsym_glEnableVertexAttribArray(SHAD_TEXUV3); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glVertexAttribPointer(SHAD_TEXUV2, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv2); + glsym_glVertexAttribPointer(SHAD_TEXUV2, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glVertexAttribPointer(SHAD_TEXUV3, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv3); + glsym_glVertexAttribPointer(SHAD_TEXUV3, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv3); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glActiveTexture(GL_TEXTURE1); + glsym_glActiveTexture(GL_TEXTURE1); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu); + glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) if (gc->pipe[i].shader.cur_texu_dyn) - secsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu_dyn); + glsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu_dyn); #endif - glActiveTexture(GL_TEXTURE2); + glsym_glActiveTexture(GL_TEXTURE2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texv); + glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texv); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) if (gc->pipe[i].shader.cur_texv_dyn) - secsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texv_dyn); + glsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texv_dyn); #endif - glActiveTexture(GL_TEXTURE0); + glsym_glActiveTexture(GL_TEXTURE0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else if (gc->pipe[i].array.use_texuv2) { - glEnableVertexAttribArray(SHAD_TEXUV2); + glsym_glEnableVertexAttribArray(SHAD_TEXUV2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glVertexAttribPointer(SHAD_TEXUV2, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv2); + glsym_glVertexAttribPointer(SHAD_TEXUV2, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glActiveTexture(GL_TEXTURE1); + glsym_glActiveTexture(GL_TEXTURE1); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu); + glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) if (gc->pipe[i].shader.cur_texu_dyn) - secsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu_dyn); + glsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu_dyn); #endif - glActiveTexture(GL_TEXTURE0); + glsym_glActiveTexture(GL_TEXTURE0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else { - glDisableVertexAttribArray(SHAD_TEXUV2); + glsym_glDisableVertexAttribArray(SHAD_TEXUV2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glDisableVertexAttribArray(SHAD_TEXUV3); + glsym_glDisableVertexAttribArray(SHAD_TEXUV3); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } if (dbgflushnum) @@ -2644,7 +2508,7 @@ types[gc->pipe[i].region.type] ); } - glDrawArrays(GL_TRIANGLES, 0, gc->pipe[i].array.num); + glsym_glDrawArrays(GL_TRIANGLES, 0, gc->pipe[i].array.num); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } if (gc->pipe[i].array.im) @@ -2703,6 +2567,8 @@ Eina_Bool evas_gl_common_module_open(void) { + if (!init_gl()) return EINA_FALSE; + if (_evas_engine_GL_common_log_dom < 0) _evas_engine_GL_common_log_dom = eina_log_domain_register ("evas-gl_common", EVAS_DEFAULT_LOG_COLOR); @@ -2717,6 +2583,8 @@ void evas_gl_common_module_close(void) { + free_gl(); + if (_evas_engine_GL_common_log_dom < 0) return; eina_log_domain_unregister(_evas_engine_GL_common_log_dom); _evas_engine_GL_common_log_dom = -1; Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_line.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_line.c 2011-12-05 07:30:31 UTC (rev 65890) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_line.c 2011-12-05 08:54:14 UTC (rev 65891) @@ -20,7 +20,7 @@ r = g = b = a = 255; } - glFlush(); + glsym_glFlush(); c = gc->dc->clip.use; cx = gc->dc->clip.x; cy = gc->dc->clip.y; Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_shader.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_shader.c 2011-12-05 07:30:31 UTC (rev 65890) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_shader.c 2011-12-05 08:54:14 UTC (rev 65891) @@ -770,26 +770,26 @@ char *logtxt; /* Shader info log */ - glGetShaderiv(target, GL_INFO_LOG_LENGTH, &loglen); + glsym_glGetShaderiv(target, GL_INFO_LOG_LENGTH, &loglen); if (loglen > 0) { logtxt = calloc(loglen, sizeof(char)); if (logtxt) { - glGetShaderInfoLog(target, loglen, &chars, logtxt); + glsym_glGetShaderInfoLog(target, loglen, &chars, logtxt); ERR("Failed to %s: %s", action, logtxt); free(logtxt); } } /* Program info log */ - glGetProgramiv(target, GL_INFO_LOG_LENGTH, &loglen); + glsym_glGetProgramiv(target, GL_INFO_LOG_LENGTH, &loglen); if (loglen > 0) { logtxt = calloc(loglen, sizeof(char)); if (logtxt) { - glGetProgramInfoLog(target, loglen, &chars, logtxt); + glsym_glGetProgramInfoLog(target, loglen, &chars, logtxt); ERR("Failed to %s: %s", action, logtxt); free(logtxt); } @@ -885,9 +885,9 @@ char *driver = NULL; char *version = NULL; - vendor = (char *)glGetString(GL_VENDOR); - driver = (char *)glGetString(GL_RENDERER); - version = (char *)glGetString(GL_VERSION); + vendor = (char *)glsym_glGetString(GL_VENDOR); + driver = (char *)glsym_glGetString(GL_RENDERER); + version = (char *)glsym_glGetString(GL_VERSION); new_path_len = snprintf(before_name, sizeof(before_name), "%s::%s::%s::%s::binary_shader.eet", vendor, version, driver, MODULE_ARCH); @@ -922,27 +922,27 @@ data = eet_read(ef, pname, &length); if ((!data) || (length <= 0)) goto finish; - glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &num); + glsym_glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &num); if (num <= 0) goto finish; formats = calloc(num, sizeof(int)); if (!formats) goto finish; - glGetIntegerv(GL_PROGRAM_BINARY_FORMATS, formats); + glsym_glGetIntegerv(GL_PROGRAM_BINARY_FORMATS, formats); if (!formats[0]) goto finish; - p->prog = glCreateProgram(); + p->prog = glsym_glCreateProgram(); glsym_glProgramBinary(p->prog, formats[0], data, length); - glBindAttribLocation(p->prog, SHAD_VERTEX, "vertex"); - glBindAttribLocation(p->prog, SHAD_COLOR, "color"); - glBindAttribLocation(p->prog, SHAD_TEXUV, "tex_coord"); - glBindAttribLocation(p->prog, SHAD_TEXUV2, "tex_coord2"); - glBindAttribLocation(p->prog, SHAD_TEXUV3, "tex_coord3"); - glBindAttribLocation(p->prog, SHAD_TEXM, "tex_coordm"); + glsym_glBindAttribLocation(p->prog, SHAD_VERTEX, "vertex"); + glsym_glBindAttribLocation(p->prog, SHAD_COLOR, "color"); + glsym_glBindAttribLocation(p->prog, SHAD_TEXUV, "tex_coord"); + glsym_glBindAttribLocation(p->prog, SHAD_TEXUV2, "tex_coord2"); + glsym_glBindAttribLocation(p->prog, SHAD_TEXUV3, "tex_coord3"); + glsym_glBindAttribLocation(p->prog, SHAD_TEXM, "tex_coordm"); - glGetProgramiv(p->prog, GL_LINK_STATUS, &ok); + glsym_glGetProgramiv(p->prog, GL_LINK_STATUS, &ok); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (!ok) { @@ -958,7 +958,7 @@ if (data) free(data); if ((!res) && (p->prog)) { - glDeleteProgram(p->prog); + glsym_glDeleteProgram(p->prog); p->prog = 0; } return res; @@ -975,7 +975,7 @@ if (!glsym_glGetProgramBinary) return 0; - glGetProgramiv(p->prog, GL_PROGRAM_BINARY_LENGTH, &length); + glsym_glGetProgramiv(p->prog, GL_PROGRAM_BINARY_LENGTH, &length); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (length <= 0) return 0; @@ -1008,21 +1008,21 @@ { GLint ok; - p->vert = glCreateShader(GL_VERTEX_SHADER); - p->frag = glCreateShader(GL_FRAGMENT_SHADER); + p->vert = glsym_glCreateShader(GL_VERTEX_SHADER); + p->frag = glsym_glCreateShader(GL_FRAGMENT_SHADER); #if defined (GLES_VARIETY_S3C6410) - glShaderBinary(1, &(p->vert), 0, vert->bin, vert->bin_size); + glsym_glShaderBinary(1, &(p->vert), 0, vert->bin, vert->bin_size); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glShaderBinary(1, &(p->frag), 0, frag->bin, frag->bin_size); + glsym_glShaderBinary(1, &(p->frag), 0, frag->bin, frag->bin_size); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #else - glShaderSource(p->vert, 1, + glsym_glShaderSource(p->vert, 1, (const char **)&(vert->src), NULL); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glCompileShader(p->vert); + glsym_glCompileShader(p->vert); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); ok = 0; - glGetShaderiv(p->vert, GL_COMPILE_STATUS, &ok); + glsym_glGetShaderiv(p->vert, GL_COMPILE_STATUS, &ok); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (!ok) { @@ -1030,13 +1030,13 @@ ERR("Abort compile of shader vert (%s): %s", name, vert->src); return 0; } - glShaderSource(p->frag, 1, + glsym_glShaderSource(p->frag, 1, (const char **)&(frag->src), NULL); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glCompileShader(p->frag); + glsym_glCompileShader(p->frag); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); ok = 0; - glGetShaderiv(p->frag, GL_COMPILE_STATUS, &ok); + glsym_glGetShaderiv(p->frag, GL_COMPILE_STATUS, &ok); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (!ok) { @@ -1045,35 +1045,35 @@ return 0; } #endif - p->prog = glCreateProgram(); + p->prog = glsym_glCreateProgram(); #if defined(GLES_VARIETY_S3C6410) || defined(GLES_VARIETY_SGX) #else if ((glsym_glGetProgramBinary) && (glsym_glProgramParameteri)) glsym_glProgramParameteri(p->prog, GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE); #endif - glAttachShader(p->prog, p->vert); + glsym_glAttachShader(p->prog, p->vert); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glAttachShader(p->prog, p->frag); + glsym_glAttachShader(p->prog, p->frag); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindAttribLocation(p->prog, SHAD_VERTEX, "vertex"); + glsym_glBindAttribLocation(p->prog, SHAD_VERTEX, "vertex"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindAttribLocation(p->prog, SHAD_COLOR, "color"); + glsym_glBindAttribLocation(p->prog, SHAD_COLOR, "color"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindAttribLocation(p->prog, SHAD_TEXUV, "tex_coord"); + glsym_glBindAttribLocation(p->prog, SHAD_TEXUV, "tex_coord"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindAttribLocation(p->prog, SHAD_TEXUV2, "tex_coord2"); + glsym_glBindAttribLocation(p->prog, SHAD_TEXUV2, "tex_coord2"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindAttribLocation(p->prog, SHAD_TEXUV3, "tex_coord3"); + glsym_glBindAttribLocation(p->prog, SHAD_TEXUV3, "tex_coord3"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindAttribLocation(p->prog, SHAD_TEXM, "tex_coordm"); + glsym_glBindAttribLocation(p->prog, SHAD_TEXM, "tex_coordm"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glLinkProgram(p->prog); + glsym_glLinkProgram(p->prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); ok = 0; - glGetProgramiv(p->prog, GL_LINK_STATUS, &ok); + glsym_glGetProgramiv(p->prog, GL_LINK_STATUS, &ok); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (!ok) { @@ -1249,14 +1249,14 @@ evas_gl_common_shader_program_init_done(void) { #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) - glReleaseShaderCompiler(); + glsym_glReleaseShaderCompiler(); #endif } void evas_gl_common_shader_program_shutdown(Evas_GL_Program *p) { - if (p->vert) glDeleteShader(p->vert); - if (p->frag) glDeleteShader(p->frag); - if (p->prog) glDeleteProgram(p->prog); + if (p->vert) glsym_glDeleteShader(p->vert); + if (p->frag) glsym_glDeleteShader(p->frag); + if (p->prog) glsym_glDeleteProgram(p->prog); } Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c 2011-12-05 07:30:31 UTC (rev 65890) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c 2011-12-05 08:54:14 UTC (rev 65891) @@ -110,7 +110,7 @@ _tex_2d(int intfmt, int w, int h, int fmt, int type) { int intfmtret = -1; - glTexImage2D(GL_TEXTURE_2D, 0, intfmt, w, h, 0, fmt, type, NULL); + glsym_glTexImage2D(GL_TEXTURE_2D, 0, intfmt, w, h, 0, fmt, type, NULL); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #ifdef GL_TEXTURE_INTERNAL_FORMAT // this is not in opengles!!! hrrrm @@ -127,7 +127,7 @@ static void _tex_sub_2d(int x, int y, int w, int h, int fmt, int type, const void *pix) { - glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, w, h, fmt, type, pix); + glsym_glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, w, h, fmt, type, pix); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } @@ -166,20 +166,20 @@ _print_tex_count(); - glGenTextures(1, &(pt->texture)); + glsym_glGenTextures(1, &(pt->texture)); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(GL_TEXTURE_2D, pt->texture); + glsym_glBindTexture(GL_TEXTURE_2D, pt->texture); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); _tex_2d(pt->intformat, w, h, pt->format, pt->dataformat); - glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); + glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); return pt; } @@ -382,17 +382,17 @@ _print_tex_count(); - glGenTextures(1, &(pt->texture)); + glsym_glGenTextures(1, &(pt->texture)); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(GL_TEXTURE_2D, pt->texture); + glsym_glBindTexture(GL_TEXTURE_2D, pt->texture); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); _tex_2d(pt->intformat, w, h, pt->format, pt->dataformat); @@ -405,7 +405,7 @@ glsym_glBindFramebuffer(GL_FRAMEBUFFER, 0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); + glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); return pt; } @@ -442,9 +442,9 @@ _print_tex_count(); - glGenTextures(1, &(pt->texture)); + glsym_glGenTextures(1, &(pt->texture)); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(im->native.target, pt->texture); + glsym_glBindTexture(im->native.target, pt->texture); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) @@ -456,17 +456,17 @@ } #endif - glTexParameteri(im->native.target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glsym_glTexParameteri(im->native.target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(im->native.target, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glsym_glTexParameteri(im->native.target, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(im->native.target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(im->native.target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(im->native.target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(im->native.target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(im->native.target, 0); + glsym_glBindTexture(im->native.target, 0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(im->native.target, gc->pipe[0].shader.cur_tex); + glsym_glBindTexture(im->native.target, gc->pipe[0].shader.cur_tex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); return pt; } @@ -522,17 +522,17 @@ _print_tex_count(); - glGenTextures(1, &(pt->texture)); + glsym_glGenTextures(1, &(pt->texture)); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glBindTexture(GL_TEXTURE_2D, pt->texture); + glsym_glBindTexture(GL_TEXTURE_2D, pt->texture); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); egldisplay = pt->gc->egldisp; @@ -542,45 +542,45 @@ // FIXME: seems a bit slower than i'd like - maybe too many flushes? // FIXME: YCbCr no support as yet - pt->dyn.img = secsym_eglCreateImage(egldisplay, + ... [truncated message content] |
From: Enlightenment S. <no-...@en...> - 2011-12-18 05:03:36
|
Log: sorry sungwoo - going to have to back this dlopen/dlsym styuff out. intel drivers don;'t like it for some odd reason - i'm trying to track it down but i can't sanely try middlegrounds right now (eg dont dlopen/dlsym but actually directly assign symbols etc.), so back out and let's figure this out before it goes back in :( Author: raster Date: 2011-12-17 21:03:24 -0800 (Sat, 17 Dec 2011) New Revision: 66308 Trac: http://trac.enlightenment.org/e/changeset/66308 Removed: trunk/evas/src/modules/engines/gl_common/evas_gl_core.c trunk/evas/src/modules/engines/gl_common/evas_gl_core.h Modified: trunk/evas/src/modules/engines/gl_common/Makefile.am trunk/evas/src/modules/engines/gl_common/evas_gl_common.h trunk/evas/src/modules/engines/gl_common/evas_gl_context.c trunk/evas/src/modules/engines/gl_common/evas_gl_line.c trunk/evas/src/modules/engines/gl_common/evas_gl_shader.c trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c trunk/evas/src/modules/engines/gl_x11/evas_engine.c trunk/evas/src/modules/engines/gl_x11/evas_engine.h trunk/evas/src/modules/engines/gl_x11/evas_x_main.c Modified: trunk/evas/src/modules/engines/gl_common/Makefile.am =================================================================== --- trunk/evas/src/modules/engines/gl_common/Makefile.am 2011-12-17 20:45:00 UTC (rev 66307) +++ trunk/evas/src/modules/engines/gl_common/Makefile.am 2011-12-18 05:03:24 UTC (rev 66308) @@ -14,8 +14,6 @@ noinst_LTLIBRARIES = libevas_engine_gl_common.la libevas_engine_gl_common_la_SOURCES = \ -evas_gl_core.h \ -evas_gl_core.c \ evas_gl_private.h \ evas_gl_common.h \ evas_gl_context.c \ Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_common.h =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_common.h 2011-12-17 20:45:00 UTC (rev 66307) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_common.h 2011-12-18 05:03:24 UTC (rev 66308) @@ -12,7 +12,6 @@ #include <sys/time.h> #include <unistd.h> #include <Eet.h> -#include "evas_gl_core.h" #define GL_GLEXT_PROTOTYPES @@ -29,14 +28,14 @@ # else # if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) # if defined(GLES_VARIETY_S3C6410) -//# include <GLES2/gl2.h> +# include <GLES2/gl2.h> # elif defined(GLES_VARIETY_SGX) -//# include <GLES2/gl2.h> -//# include <GLES2/gl2ext.h> +# include <GLES2/gl2.h> +# include <GLES2/gl2ext.h> # endif # else -//# include <GL/gl.h> -//# include <GL/glext.h> +# include <GL/gl.h> +# include <GL/glext.h> # endif # endif #endif @@ -625,12 +624,29 @@ void evas_gl_common_image_filtered_free(Evas_GL_Image *im, Filtered_Image *); #endif +extern void (*glsym_glGenFramebuffers) (GLsizei a, GLuint *b); +extern void (*glsym_glBindFramebuffer) (GLenum a, GLuint b); +extern void (*glsym_glFramebufferTexture2D) (GLenum a, GLenum b, GLenum c, GLuint d, GLint e); +extern void (*glsym_glDeleteFramebuffers) (GLsizei a, const GLuint *b); +extern void (*glsym_glGetProgramBinary) (GLuint a, GLsizei b, GLsizei *c, GLenum *d, void *e); +extern void (*glsym_glProgramBinary) (GLuint a, GLenum b, const void *c, GLint d); +extern void (*glsym_glProgramParameteri) (GLuint a, GLuint b, GLint d); + +#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) +extern void *(*secsym_eglCreateImage) (void *a, void *b, GLenum c, void *d, const int *e); +extern unsigned int (*secsym_eglDestroyImage) (void *a, void *b); +extern void (*secsym_glEGLImageTargetTexture2DOES) (int a, void *b); +extern void *(*secsym_eglMapImageSEC) (void *a, void *b); +extern unsigned int (*secsym_eglUnmapImageSEC) (void *a, void *b); +extern unsigned int (*secsym_eglGetImageAttribSEC) (void *a, void *b, int c, int *d); +#endif + //#define GL_ERRORS 1 #ifdef GL_ERRORS # define GLERR(fn, fl, ln, op) \ { \ - int __gl_err = glsym_glGetError(); \ + int __gl_err = glGetError(); \ if (__gl_err != GL_NO_ERROR) glerr(__gl_err, fl, fn, ln, op); \ } #else Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_context.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_context.c 2011-12-17 20:45:00 UTC (rev 66307) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_context.c 2011-12-18 05:03:24 UTC (rev 66308) @@ -9,10 +9,145 @@ #define PRG_INVALID 0xffffffff #define GLPIPES 1 +static int sym_done = 0; int _evas_engine_GL_common_log_dom = -1; +typedef void (*glsym_func_void) (); + +void (*glsym_glGenFramebuffers) (GLsizei a, GLuint *b) = NULL; +void (*glsym_glBindFramebuffer) (GLenum a, GLuint b) = NULL; +void (*glsym_glFramebufferTexture2D) (GLenum a, GLenum b, GLenum c, GLuint d, GLint e) = NULL; +void (*glsym_glDeleteFramebuffers) (GLsizei a, const GLuint *b) = NULL; +void (*glsym_glGetProgramBinary) (GLuint a, GLsizei b, GLsizei *c, GLenum *d, void *e) = NULL; +void (*glsym_glProgramBinary) (GLuint a, GLenum b, const void *c, GLint d) = NULL; +void (*glsym_glProgramParameteri) (GLuint a, GLuint b, GLint d) = NULL; + +#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) +// just used for finding symbols :) +typedef void (*_eng_fn) (void); + +typedef _eng_fn (*secsym_func_eng_fn) (); +typedef unsigned int (*secsym_func_uint) (); +typedef void *(*secsym_func_void_ptr) (); + +static _eng_fn (*secsym_eglGetProcAddress) (const char *a) = NULL; + +void *(*secsym_eglCreateImage) (void *a, void *b, GLenum c, void *d, const int *e) = NULL; +unsigned int (*secsym_eglDestroyImage) (void *a, void *b) = NULL; +void (*secsym_glEGLImageTargetTexture2DOES) (int a, void *b) = NULL; +void *(*secsym_eglMapImageSEC) (void *a, void *b) = NULL; +unsigned int (*secsym_eglUnmapImageSEC) (void *a, void *b) = NULL; +unsigned int (*secsym_eglGetImageAttribSEC) (void *a, void *b, int c, int *d) = NULL; +#endif + static int dbgflushnum = -1; +static void +sym_missing(void) +{ + ERR("GL symbols missing!"); +} + +static void +gl_symbols(void) +{ + if (sym_done) return; + sym_done = 1; + + /* FIXME: If using the SDL engine, we should use SDL_GL_GetProcAddress + * instead of dlsym + * if (!dst) dst = (typ)SDL_GL_GetProcAddress(sym) + */ +#define FINDSYM(dst, sym, typ) if (!dst) dst = (typ)dlsym(RTLD_DEFAULT, sym) +#define FALLBAK(dst, typ) if (!dst) dst = (typ)sym_missing; + + FINDSYM(glsym_glGenFramebuffers, "glGenFramebuffers", glsym_func_void); + FINDSYM(glsym_glGenFramebuffers, "glGenFramebuffersEXT", glsym_func_void); + FINDSYM(glsym_glGenFramebuffers, "glGenFramebuffersARB", glsym_func_void); + FALLBAK(glsym_glGenFramebuffers, glsym_func_void); + + FINDSYM(glsym_glBindFramebuffer, "glBindFramebuffer", glsym_func_void); + FINDSYM(glsym_glBindFramebuffer, "glBindFramebufferEXT", glsym_func_void); + FINDSYM(glsym_glBindFramebuffer, "glBindFramebufferARB", glsym_func_void); + FALLBAK(glsym_glBindFramebuffer, glsym_func_void); + + FINDSYM(glsym_glFramebufferTexture2D, "glFramebufferTexture2D", glsym_func_void); + FINDSYM(glsym_glFramebufferTexture2D, "glFramebufferTexture2DEXT", glsym_func_void); + FINDSYM(glsym_glFramebufferTexture2D, "glFramebufferTexture2DARB", glsym_func_void); + FALLBAK(glsym_glFramebufferTexture2D, glsym_func_void); + + FINDSYM(glsym_glDeleteFramebuffers, "glDeleteFramebuffers", glsym_func_void); + FINDSYM(glsym_glDeleteFramebuffers, "glDeleteFramebuffersEXT", glsym_func_void); + FINDSYM(glsym_glDeleteFramebuffers, "glDeleteFramebuffersARB", glsym_func_void); + FALLBAK(glsym_glDeleteFramebuffers, glsym_func_void); + + FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinary", glsym_func_void); + FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryEXT", glsym_func_void); + FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryARB", glsym_func_void); + FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryOES", glsym_func_void); + + FINDSYM(glsym_glProgramBinary, "glProgramBinary", glsym_func_void); + FINDSYM(glsym_glProgramBinary, "glProgramBinaryEXT", glsym_func_void); + FINDSYM(glsym_glProgramBinary, "glProgramBinaryARB", glsym_func_void); + + FINDSYM(glsym_glProgramParameteri, "glProgramParameteri", glsym_func_void); + FINDSYM(glsym_glProgramParameteri, "glProgramParameteriEXT", glsym_func_void); + FINDSYM(glsym_glProgramParameteri, "glProgramParameteriARB", glsym_func_void); + +#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) +#undef FINDSYM +#define FINDSYM(dst, sym, typ) \ + if ((!dst) && (secsym_eglGetProcAddress)) dst = (typ)secsym_eglGetProcAddress(sym); \ + if (!dst) dst = (typ)dlsym(RTLD_DEFAULT, sym) +// yes - gl core looking for egl stuff. i know it's odd. a reverse-layer thing +// but it will work as the egl/glx layer calls gl core common stuff and thus +// these symbols will work. making the glx/egl + x11 layer do this kind-of is +// wrong as this is not x11 (output) layer specific like the native surface +// stuff. this is generic zero-copy textures for gl + + FINDSYM(secsym_eglGetProcAddress, "eglGetProcAddress", secsym_func_eng_fn); + FINDSYM(secsym_eglGetProcAddress, "eglGetProcAddressEXT", secsym_func_eng_fn); + FINDSYM(secsym_eglGetProcAddress, "eglGetProcAddressARB", secsym_func_eng_fn); + FINDSYM(secsym_eglGetProcAddress, "eglGetProcAddressKHR", secsym_func_eng_fn); + + FINDSYM(secsym_eglCreateImage, "eglCreateImage", secsym_func_void_ptr); + FINDSYM(secsym_eglCreateImage, "eglCreateImageEXT", secsym_func_void_ptr); + FINDSYM(secsym_eglCreateImage, "eglCreateImageARB", secsym_func_void_ptr); + FINDSYM(secsym_eglCreateImage, "eglCreateImageKHR", secsym_func_void_ptr); + + FINDSYM(secsym_eglDestroyImage, "eglDestroyImage", secsym_func_uint); + FINDSYM(secsym_eglDestroyImage, "eglDestroyImageEXT", secsym_func_uint); + FINDSYM(secsym_eglDestroyImage, "eglDestroyImageARB", secsym_func_uint); + FINDSYM(secsym_eglDestroyImage, "eglDestroyImageKHR", secsym_func_uint); + + FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinary", glsym_func_void); + FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryEXT", glsym_func_void); + FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryARB", glsym_func_void); + FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryOES", glsym_func_void); + FINDSYM(glsym_glGetProgramBinary, "glGetProgramBinaryKHR", glsym_func_void); + + FINDSYM(glsym_glProgramBinary, "glProgramBinary", glsym_func_void); + FINDSYM(glsym_glProgramBinary, "glProgramBinaryEXT", glsym_func_void); + FINDSYM(glsym_glProgramBinary, "glProgramBinaryARB", glsym_func_void); + FINDSYM(glsym_glProgramBinary, "glProgramBinaryOES", glsym_func_void); + FINDSYM(glsym_glProgramBinary, "glProgramBinaryKHR", glsym_func_void); + + FINDSYM(glsym_glProgramParameteri, "glProgramParameteri", glsym_func_void); + FINDSYM(glsym_glProgramParameteri, "glProgramParameteriEXT", glsym_func_void); + FINDSYM(glsym_glProgramParameteri, "glProgramParameteriARB", glsym_func_void); + FINDSYM(glsym_glProgramParameteri, "glProgramParameteriOES", glsym_func_void); + FINDSYM(glsym_glProgramParameteri, "glProgramParameteriKHR", glsym_func_void); + + FINDSYM(secsym_glEGLImageTargetTexture2DOES, "glEGLImageTargetTexture2DOES", glsym_func_void); + + FINDSYM(secsym_eglMapImageSEC, "eglMapImageSEC", secsym_func_void_ptr); + + FINDSYM(secsym_eglUnmapImageSEC, "eglUnmapImageSEC", secsym_func_uint); + + FINDSYM(secsym_eglGetImageAttribSEC, "eglGetImageAttribSEC", secsym_func_uint); +#endif +} + static void shader_array_flush(Evas_Engine_GL_Context *gc); static Evas_Engine_GL_Context *_evas_gl_common_context = NULL; @@ -114,11 +249,11 @@ int minor; /* - * glsym_glGetString returns a string describing the current GL connection. + * glGetString returns a string describing the current GL connection. * GL_VERSION is used to get the version of the connection */ - version = (char *)glsym_glGetString(GL_VERSION); + version = (char *)glGetString(GL_VERSION); /* * OpengL ES @@ -165,7 +300,7 @@ * version number and the vendor-specific information. */ - /* glsym_glGetString() returns a static string, and we are going to */ + /* glGetString() returns a static string, and we are going to */ /* modify it, so we get a copy first */ version = strdup(version); if (!version) @@ -236,9 +371,9 @@ if (foc == 0) { if ((rot == 0) || (rot == 180)) - glsym_glViewport(0, 0, w, h); + glViewport(0, 0, w, h); else - glsym_glViewport(0, 0, h, w); + glViewport(0, 0, h, w); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); // std matrix if (m == 1) @@ -301,9 +436,9 @@ if (m == -1) ay = vy * 2; if ((rot == 0) || (rot == 180)) - glsym_glViewport(-2 * vx, -2 * vy, vw, vh); + glViewport(-2 * vx, -2 * vy, vw, vh); else - glsym_glViewport(-2 * vy, -2 * vx, vh, vw); + glViewport(-2 * vy, -2 * vx, vh, vw); if (m == 1) matrix_ortho(proj, 0, vw, 0, vh, -1000000.0, 1000000.0, @@ -320,15 +455,15 @@ for (i = 0; i < SHADER_LAST; ++i) { - glsym_glUseProgram(gc->shared->shader[i].prog); + glUseProgram(gc->shared->shader[i].prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glUniformMatrix4fv(glsym_glGetUniformLocation(gc->shared->shader[i].prog, "mvp"), 1, GL_FALSE, proj); + glUniformMatrix4fv(glGetUniformLocation(gc->shared->shader[i].prog, "mvp"), 1, GL_FALSE, proj); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } if (gc->state.current.cur_prog == PRG_INVALID) - glsym_glUseProgram(gc->shared->shader[0].prog); - else glsym_glUseProgram(gc->state.current.cur_prog); + glUseProgram(gc->shared->shader[0].prog); + else glUseProgram(gc->state.current.cur_prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } @@ -351,6 +486,8 @@ gc = calloc(1, sizeof(Evas_Engine_GL_Context)); if (!gc) return NULL; + gl_symbols(); + gc->references = 1; _evas_gl_common_context = gc; @@ -363,7 +500,7 @@ const GLubyte *ext; shared = calloc(1, sizeof(Evas_GL_Shared)); - ext = glsym_glGetString(GL_EXTENSIONS); + ext = glGetString(GL_EXTENSIONS); if (ext) { if (getenv("EVAS_GL_INFO")) @@ -381,7 +518,7 @@ shared->info.bin_program = 1; #ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT if ((strstr((char *)ext, "GL_EXT_texture_filter_anisotropic"))) - glsym_glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, + glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &(shared->info.anisotropic)); #endif #ifdef GL_BGRA @@ -399,24 +536,24 @@ { // test for all needed symbols - be "conservative" and // need all of it - if ((glsym_eglCreateImage) && - (glsym_eglDestroyImage) && - (glsym_glEGLImageTargetTexture2DOES) && - (glsym_eglMapImageSEC) && - (glsym_eglUnmapImageSEC) && - (glsym_eglGetImageAttribSEC)) + if ((secsym_eglCreateImage) && + (secsym_eglDestroyImage) && + (secsym_glEGLImageTargetTexture2DOES) && + (secsym_eglMapImageSEC) && + (secsym_eglUnmapImageSEC) && + (secsym_eglGetImageAttribSEC)) shared->info.sec_image_map = 1; } #endif } - glsym_glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, + glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &(shared->info.max_texture_units)); - glsym_glGetIntegerv(GL_MAX_TEXTURE_SIZE, + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &(shared->info.max_texture_size)); shared->info.max_vertex_elements = 6 * 100000; #ifdef GL_MAX_ELEMENTS_VERTICES -/* only applies to glsym_glDrawRangeElements. don't really need to get it. - glsym_glGetIntegerv(GL_MAX_ELEMENTS_VERTICES, +/* only applies to glDrawRangeElements. don't really need to get it. + glGetIntegerv(GL_MAX_ELEMENTS_VERTICES, &(shared->info.max_vertex_elements)); */ #endif @@ -436,7 +573,7 @@ shared->info.tune.atlas.slot_size = DEF_ATLAS_SLOT; // per gpu hacks. based on impirical measurement of some known gpu's - s = (const char *)glsym_glGetString(GL_RENDERER); + s = (const char *)glGetString(GL_RENDERER); if (s) { if (strstr(s, "PowerVR SGX 540")) @@ -509,47 +646,47 @@ (int)shared->info.tune.atlas.slot_size ); - glsym_glDisable(GL_DEPTH_TEST); + glDisable(GL_DEPTH_TEST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glEnable(GL_DITHER); + glEnable(GL_DITHER); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glDisable(GL_BLEND); + glDisable(GL_BLEND); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); // no dest alpha -// glsym_glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // dest alpha -// glsym_glBlendFunc(GL_SRC_ALPHA, GL_ONE); // ??? - glsym_glDepthMask(GL_FALSE); +// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // dest alpha +// glBlendFunc(GL_SRC_ALPHA, GL_ONE); // ??? + glDepthMask(GL_FALSE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT if (shared->info.anisotropic > 0.0) { - glsym_glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } #endif - glsym_glEnableVertexAttribArray(SHAD_VERTEX); + glEnableVertexAttribArray(SHAD_VERTEX); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glEnableVertexAttribArray(SHAD_COLOR); + glEnableVertexAttribArray(SHAD_COLOR); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (!evas_gl_common_shader_program_init(shared)) goto error; #define SHADER_TEXTURE_ADD(Shared, Shader, Name) \ - glsym_glUseProgram(Shared->shader[SHADER_##Shader].prog); \ + glUseProgram(Shared->shader[SHADER_##Shader].prog); \ GLERR(__FUNCTION__, __FILE__, __LINE__, ""); \ - glsym_glUniform1i(glsym_glGetUniformLocation(Shared->shader[SHADER_##Shader].prog, #Name), Shared->shader[SHADER_##Shader].tex_count++); \ + glUniform1i(glGetUniformLocation(Shared->shader[SHADER_##Shader].prog, #Name), Shared->shader[SHADER_##Shader].tex_count++); \ GLERR(__FUNCTION__, __FILE__, __LINE__, ""); SHADER_TEXTURE_ADD(shared, YUV, tex); @@ -576,8 +713,8 @@ SHADER_TEXTURE_ADD(shared, IMG_MASK, texm); if (gc->state.current.cur_prog == PRG_INVALID) - glsym_glUseProgram(gc->shared->shader[0].prog); - else glsym_glUseProgram(gc->state.current.cur_prog); + glUseProgram(gc->shared->shader[0].prog); + else glUseProgram(gc->state.current.cur_prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); evas_gl_common_shader_program_init_done(); @@ -586,8 +723,8 @@ // // in code: // GLuint texes[8]; - // GLint loc = glsym_glGetUniformLocation(prog, "tex"); - // glsym_glUniform1iv(loc, 8, texes); + // GLint loc = glGetUniformLocation(prog, "tex"); + // glUniform1iv(loc, 8, texes); shared->native_pm_hash = eina_hash_int32_new(NULL); shared->native_tex_hash = eina_hash_int32_new(NULL); @@ -726,53 +863,53 @@ } gc->change.size = 1; - glsym_glDisable(GL_SCISSOR_TEST); + glDisable(GL_SCISSOR_TEST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glScissor(0, 0, 0, 0); + glScissor(0, 0, 0, 0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glDisable(GL_DEPTH_TEST); + glDisable(GL_DEPTH_TEST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glEnable(GL_DITHER); + glEnable(GL_DITHER); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glDisable(GL_BLEND); + glDisable(GL_BLEND); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); // no dest alpha -// glsym_glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // dest alpha -// glsym_glBlendFunc(GL_SRC_ALPHA, GL_ONE); // ??? - glsym_glDepthMask(GL_FALSE); +// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // dest alpha +// glBlendFunc(GL_SRC_ALPHA, GL_ONE); // ??? + glDepthMask(GL_FALSE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT if (shared->info.anisotropic > 0.0) { - glsym_glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } #endif - glsym_glEnableVertexAttribArray(SHAD_VERTEX); + glEnableVertexAttribArray(SHAD_VERTEX); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glEnableVertexAttribArray(SHAD_COLOR); + glEnableVertexAttribArray(SHAD_COLOR); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (gc->state.current.cur_prog == PRG_INVALID) - glsym_glUseProgram(gc->shared->shader[0].prog); - else glsym_glUseProgram(gc->state.current.cur_prog); + glUseProgram(gc->shared->shader[0].prog); + else glUseProgram(gc->state.current.cur_prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glActiveTexture(GL_TEXTURE0); + glActiveTexture(GL_TEXTURE0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); + glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); _evas_gl_common_viewport_set(gc); @@ -2177,19 +2314,19 @@ switch (rot) { case 0: // UP this way: ^ - glsym_glScissor(cx, cy, cw, ch); + glScissor(cx, cy, cw, ch); break; case 90: // UP this way: < - glsym_glScissor(gh - (cy + ch), cx, ch, cw); + glScissor(gh - (cy + ch), cx, ch, cw); break; case 180: // UP this way: v - glsym_glScissor(gw - (cx + cw), gh - (cy + ch), cw, ch); + glScissor(gw - (cx + cw), gh - (cy + ch), cw, ch); break; case 270: // UP this way: > - glsym_glScissor(cy, gw - (cx + cw), ch, cw); + glScissor(cy, gw - (cx + cw), ch, cw); break; default: // assume up is up - glsym_glScissor(cx, cy, cw, ch); + glScissor(cx, cy, cw, ch); break; } } @@ -2218,7 +2355,7 @@ GLERR(__FUNCTION__, __FILE__, __LINE__, "<flush err>"); if (gc->pipe[i].shader.cur_prog != gc->state.current.cur_prog) { - glsym_glUseProgram(gc->pipe[i].shader.cur_prog); + glUseProgram(gc->pipe[i].shader.cur_prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } @@ -2227,18 +2364,18 @@ #if 0 if (gc->pipe[i].shader.cur_tex) { - glsym_glEnable(GL_TEXTURE_2D); + glEnable(GL_TEXTURE_2D); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else { - glsym_glDisable(GL_TEXTURE_2D); + glDisable(GL_TEXTURE_2D); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } #endif - glsym_glActiveTexture(GL_TEXTURE0); + glActiveTexture(GL_TEXTURE0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_tex); + glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_tex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } if (gc->pipe[i].array.im) @@ -2246,7 +2383,7 @@ #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) if (gc->pipe[i].array.im->tex->pt->dyn.img) { - glsym_glEGLImageTargetTexture2DOES + secsym_glEGLImageTargetTexture2DOES (GL_TEXTURE_2D, gc->pipe[i].array.im->tex->pt->dyn.img); } else @@ -2265,12 +2402,12 @@ switch (gc->pipe[i].shader.render_op) { case EVAS_RENDER_BLEND: /**< default op: d = d*(1-sa) + s */ - glsym_glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); break; case EVAS_RENDER_COPY: /**< d = s */ gc->pipe[i].shader.blend = 0; - glsym_glBlendFunc(GL_ONE, GL_ONE); + glBlendFunc(GL_ONE, GL_ONE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); break; // FIXME: fix blend funcs below! @@ -2285,7 +2422,7 @@ case EVAS_RENDER_MASK: /**< d = d*sa */ case EVAS_RENDER_MUL: /**< d = d*s */ default: - glsym_glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); break; } @@ -2294,12 +2431,12 @@ { if (gc->pipe[i].shader.blend) { - glsym_glEnable(GL_BLEND); + glEnable(GL_BLEND); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else { - glsym_glDisable(GL_BLEND); + glDisable(GL_BLEND); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } } @@ -2311,17 +2448,17 @@ #ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT if (shared->info.anisotropic > 0.0) { - glsym_glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, shared->info.anisotropic); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, shared->info.anisotropic); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } #endif - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else @@ -2329,17 +2466,17 @@ #ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT if (shared->info.anisotropic > 0.0) { - glsym_glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } #endif - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } } @@ -2350,7 +2487,7 @@ { cy = gh - gc->pipe[i].shader.cy - gc->pipe[i].shader.ch; if (fbo) cy = gc->pipe[i].shader.cy; - glsym_glEnable(GL_SCISSOR_TEST); + glEnable(GL_SCISSOR_TEST); if (!fbo) scissor_rot(gc, gc->rot, gw, gh, gc->pipe[i].shader.cx, @@ -2358,14 +2495,14 @@ gc->pipe[i].shader.cw, gc->pipe[i].shader.ch); else - glsym_glScissor(gc->pipe[i].shader.cx, cy, + glScissor(gc->pipe[i].shader.cx, cy, gc->pipe[i].shader.cw, gc->pipe[i].shader.ch); setclip = 1; } else { - glsym_glDisable(GL_SCISSOR_TEST); - glsym_glScissor(0, 0, 0, 0); + glDisable(GL_SCISSOR_TEST); + glScissor(0, 0, 0, 0); } } if ((gc->pipe[i].shader.clip) && (!setclip)) @@ -2384,112 +2521,112 @@ gc->pipe[i].shader.cw, gc->pipe[i].shader.ch); else - glsym_glScissor(gc->pipe[i].shader.cx, cy, + glScissor(gc->pipe[i].shader.cx, cy, gc->pipe[i].shader.cw, gc->pipe[i].shader.ch); } } - glsym_glVertexAttribPointer(SHAD_VERTEX, 3, GL_SHORT, GL_FALSE, 0, gc->pipe[i].array.vertex); + glVertexAttribPointer(SHAD_VERTEX, 3, GL_SHORT, GL_FALSE, 0, gc->pipe[i].array.vertex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glVertexAttribPointer(SHAD_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, gc->pipe[i].array.color); + glVertexAttribPointer(SHAD_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, gc->pipe[i].array.color); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (gc->pipe[i].array.use_texuv) { - glsym_glEnableVertexAttribArray(SHAD_TEXUV); + glEnableVertexAttribArray(SHAD_TEXUV); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glVertexAttribPointer(SHAD_TEXUV, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv); + glVertexAttribPointer(SHAD_TEXUV, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else { - glsym_glDisableVertexAttribArray(SHAD_TEXUV); + glDisableVertexAttribArray(SHAD_TEXUV); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } if (gc->pipe[i].array.line) { - glsym_glDisableVertexAttribArray(SHAD_TEXUV); + glDisableVertexAttribArray(SHAD_TEXUV); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glDisableVertexAttribArray(SHAD_TEXUV2); + glDisableVertexAttribArray(SHAD_TEXUV2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glDisableVertexAttribArray(SHAD_TEXUV3); + glDisableVertexAttribArray(SHAD_TEXUV3); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glDrawArrays(GL_LINES, 0, gc->pipe[i].array.num); + glDrawArrays(GL_LINES, 0, gc->pipe[i].array.num); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else { if (gc->pipe[i].array.use_texm) { - glsym_glEnableVertexAttribArray(SHAD_TEXM); + glEnableVertexAttribArray(SHAD_TEXM); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glVertexAttribPointer(SHAD_TEXM, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texm); + glVertexAttribPointer(SHAD_TEXM, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texm); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glActiveTexture(GL_TEXTURE1); + glActiveTexture(GL_TEXTURE1); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texm); + glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texm); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glActiveTexture(GL_TEXTURE0); + glActiveTexture(GL_TEXTURE0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else { - glsym_glDisableVertexAttribArray(SHAD_TEXM); + glDisableVertexAttribArray(SHAD_TEXM); } if ((gc->pipe[i].array.use_texuv2) && (gc->pipe[i].array.use_texuv3)) { - glsym_glEnableVertexAttribArray(SHAD_TEXUV2); + glEnableVertexAttribArray(SHAD_TEXUV2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glEnableVertexAttribArray(SHAD_TEXUV3); + glEnableVertexAttribArray(SHAD_TEXUV3); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glVertexAttribPointer(SHAD_TEXUV2, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv2); + glVertexAttribPointer(SHAD_TEXUV2, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glVertexAttribPointer(SHAD_TEXUV3, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv3); + glVertexAttribPointer(SHAD_TEXUV3, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv3); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glActiveTexture(GL_TEXTURE1); + glActiveTexture(GL_TEXTURE1); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu); + glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) if (gc->pipe[i].shader.cur_texu_dyn) - glsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu_dyn); + secsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu_dyn); #endif - glsym_glActiveTexture(GL_TEXTURE2); + glActiveTexture(GL_TEXTURE2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texv); + glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texv); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) if (gc->pipe[i].shader.cur_texv_dyn) - glsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texv_dyn); + secsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texv_dyn); #endif - glsym_glActiveTexture(GL_TEXTURE0); + glActiveTexture(GL_TEXTURE0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else if (gc->pipe[i].array.use_texuv2) { - glsym_glEnableVertexAttribArray(SHAD_TEXUV2); + glEnableVertexAttribArray(SHAD_TEXUV2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glVertexAttribPointer(SHAD_TEXUV2, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv2); + glVertexAttribPointer(SHAD_TEXUV2, 2, GL_FLOAT, GL_FALSE, 0, gc->pipe[i].array.texuv2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glActiveTexture(GL_TEXTURE1); + glActiveTexture(GL_TEXTURE1); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu); + glBindTexture(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) if (gc->pipe[i].shader.cur_texu_dyn) - glsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu_dyn); + secsym_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, gc->pipe[i].shader.cur_texu_dyn); #endif - glsym_glActiveTexture(GL_TEXTURE0); + glActiveTexture(GL_TEXTURE0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } else { - glsym_glDisableVertexAttribArray(SHAD_TEXUV2); + glDisableVertexAttribArray(SHAD_TEXUV2); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glDisableVertexAttribArray(SHAD_TEXUV3); + glDisableVertexAttribArray(SHAD_TEXUV3); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } if (dbgflushnum) @@ -2507,7 +2644,7 @@ types[gc->pipe[i].region.type] ); } - glsym_glDrawArrays(GL_TRIANGLES, 0, gc->pipe[i].array.num); + glDrawArrays(GL_TRIANGLES, 0, gc->pipe[i].array.num); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } if (gc->pipe[i].array.im) @@ -2566,8 +2703,6 @@ Eina_Bool evas_gl_common_module_open(void) { - if (!init_gl()) return EINA_FALSE; - if (_evas_engine_GL_common_log_dom < 0) _evas_engine_GL_common_log_dom = eina_log_domain_register ("evas-gl_common", EVAS_DEFAULT_LOG_COLOR); @@ -2582,8 +2717,6 @@ void evas_gl_common_module_close(void) { - free_gl(); - if (_evas_engine_GL_common_log_dom < 0) return; eina_log_domain_unregister(_evas_engine_GL_common_log_dom); _evas_engine_GL_common_log_dom = -1; Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_line.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_line.c 2011-12-17 20:45:00 UTC (rev 66307) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_line.c 2011-12-18 05:03:24 UTC (rev 66308) @@ -20,7 +20,7 @@ r = g = b = a = 255; } - glsym_glFlush(); + glFlush(); c = gc->dc->clip.use; cx = gc->dc->clip.x; cy = gc->dc->clip.y; Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_shader.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_shader.c 2011-12-17 20:45:00 UTC (rev 66307) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_shader.c 2011-12-18 05:03:24 UTC (rev 66308) @@ -770,26 +770,26 @@ char *logtxt; /* Shader info log */ - glsym_glGetShaderiv(target, GL_INFO_LOG_LENGTH, &loglen); + glGetShaderiv(target, GL_INFO_LOG_LENGTH, &loglen); if (loglen > 0) { logtxt = calloc(loglen, sizeof(char)); if (logtxt) { - glsym_glGetShaderInfoLog(target, loglen, &chars, logtxt); + glGetShaderInfoLog(target, loglen, &chars, logtxt); ERR("Failed to %s: %s", action, logtxt); free(logtxt); } } /* Program info log */ - glsym_glGetProgramiv(target, GL_INFO_LOG_LENGTH, &loglen); + glGetProgramiv(target, GL_INFO_LOG_LENGTH, &loglen); if (loglen > 0) { logtxt = calloc(loglen, sizeof(char)); if (logtxt) { - glsym_glGetProgramInfoLog(target, loglen, &chars, logtxt); + glGetProgramInfoLog(target, loglen, &chars, logtxt); ERR("Failed to %s: %s", action, logtxt); free(logtxt); } @@ -885,9 +885,9 @@ char *driver = NULL; char *version = NULL; - vendor = (char *)glsym_glGetString(GL_VENDOR); - driver = (char *)glsym_glGetString(GL_RENDERER); - version = (char *)glsym_glGetString(GL_VERSION); + vendor = (char *)glGetString(GL_VENDOR); + driver = (char *)glGetString(GL_RENDERER); + version = (char *)glGetString(GL_VERSION); new_path_len = snprintf(before_name, sizeof(before_name), "%s::%s::%s::%s::binary_shader.eet", vendor, version, driver, MODULE_ARCH); @@ -922,27 +922,27 @@ data = eet_read(ef, pname, &length); if ((!data) || (length <= 0)) goto finish; - glsym_glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &num); + glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &num); if (num <= 0) goto finish; formats = calloc(num, sizeof(int)); if (!formats) goto finish; - glsym_glGetIntegerv(GL_PROGRAM_BINARY_FORMATS, formats); + glGetIntegerv(GL_PROGRAM_BINARY_FORMATS, formats); if (!formats[0]) goto finish; - p->prog = glsym_glCreateProgram(); + p->prog = glCreateProgram(); glsym_glProgramBinary(p->prog, formats[0], data, length); - glsym_glBindAttribLocation(p->prog, SHAD_VERTEX, "vertex"); - glsym_glBindAttribLocation(p->prog, SHAD_COLOR, "color"); - glsym_glBindAttribLocation(p->prog, SHAD_TEXUV, "tex_coord"); - glsym_glBindAttribLocation(p->prog, SHAD_TEXUV2, "tex_coord2"); - glsym_glBindAttribLocation(p->prog, SHAD_TEXUV3, "tex_coord3"); - glsym_glBindAttribLocation(p->prog, SHAD_TEXM, "tex_coordm"); + glBindAttribLocation(p->prog, SHAD_VERTEX, "vertex"); + glBindAttribLocation(p->prog, SHAD_COLOR, "color"); + glBindAttribLocation(p->prog, SHAD_TEXUV, "tex_coord"); + glBindAttribLocation(p->prog, SHAD_TEXUV2, "tex_coord2"); + glBindAttribLocation(p->prog, SHAD_TEXUV3, "tex_coord3"); + glBindAttribLocation(p->prog, SHAD_TEXM, "tex_coordm"); - glsym_glGetProgramiv(p->prog, GL_LINK_STATUS, &ok); + glGetProgramiv(p->prog, GL_LINK_STATUS, &ok); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (!ok) { @@ -958,7 +958,7 @@ if (data) free(data); if ((!res) && (p->prog)) { - glsym_glDeleteProgram(p->prog); + glDeleteProgram(p->prog); p->prog = 0; } return res; @@ -975,7 +975,7 @@ if (!glsym_glGetProgramBinary) return 0; - glsym_glGetProgramiv(p->prog, GL_PROGRAM_BINARY_LENGTH, &length); + glGetProgramiv(p->prog, GL_PROGRAM_BINARY_LENGTH, &length); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (length <= 0) return 0; @@ -1008,21 +1008,21 @@ { GLint ok; - p->vert = glsym_glCreateShader(GL_VERTEX_SHADER); - p->frag = glsym_glCreateShader(GL_FRAGMENT_SHADER); + p->vert = glCreateShader(GL_VERTEX_SHADER); + p->frag = glCreateShader(GL_FRAGMENT_SHADER); #if defined (GLES_VARIETY_S3C6410) - glsym_glShaderBinary(1, &(p->vert), 0, vert->bin, vert->bin_size); + glShaderBinary(1, &(p->vert), 0, vert->bin, vert->bin_size); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glShaderBinary(1, &(p->frag), 0, frag->bin, frag->bin_size); + glShaderBinary(1, &(p->frag), 0, frag->bin, frag->bin_size); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #else - glsym_glShaderSource(p->vert, 1, + glShaderSource(p->vert, 1, (const char **)&(vert->src), NULL); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glCompileShader(p->vert); + glCompileShader(p->vert); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); ok = 0; - glsym_glGetShaderiv(p->vert, GL_COMPILE_STATUS, &ok); + glGetShaderiv(p->vert, GL_COMPILE_STATUS, &ok); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (!ok) { @@ -1030,13 +1030,13 @@ ERR("Abort compile of shader vert (%s): %s", name, vert->src); return 0; } - glsym_glShaderSource(p->frag, 1, + glShaderSource(p->frag, 1, (const char **)&(frag->src), NULL); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glCompileShader(p->frag); + glCompileShader(p->frag); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); ok = 0; - glsym_glGetShaderiv(p->frag, GL_COMPILE_STATUS, &ok); + glGetShaderiv(p->frag, GL_COMPILE_STATUS, &ok); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (!ok) { @@ -1045,35 +1045,35 @@ return 0; } #endif - p->prog = glsym_glCreateProgram(); + p->prog = glCreateProgram(); #if defined(GLES_VARIETY_S3C6410) || defined(GLES_VARIETY_SGX) #else if ((glsym_glGetProgramBinary) && (glsym_glProgramParameteri)) glsym_glProgramParameteri(p->prog, GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE); #endif - glsym_glAttachShader(p->prog, p->vert); + glAttachShader(p->prog, p->vert); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glAttachShader(p->prog, p->frag); + glAttachShader(p->prog, p->frag); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindAttribLocation(p->prog, SHAD_VERTEX, "vertex"); + glBindAttribLocation(p->prog, SHAD_VERTEX, "vertex"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindAttribLocation(p->prog, SHAD_COLOR, "color"); + glBindAttribLocation(p->prog, SHAD_COLOR, "color"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindAttribLocation(p->prog, SHAD_TEXUV, "tex_coord"); + glBindAttribLocation(p->prog, SHAD_TEXUV, "tex_coord"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindAttribLocation(p->prog, SHAD_TEXUV2, "tex_coord2"); + glBindAttribLocation(p->prog, SHAD_TEXUV2, "tex_coord2"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindAttribLocation(p->prog, SHAD_TEXUV3, "tex_coord3"); + glBindAttribLocation(p->prog, SHAD_TEXUV3, "tex_coord3"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindAttribLocation(p->prog, SHAD_TEXM, "tex_coordm"); + glBindAttribLocation(p->prog, SHAD_TEXM, "tex_coordm"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glLinkProgram(p->prog); + glLinkProgram(p->prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); ok = 0; - glsym_glGetProgramiv(p->prog, GL_LINK_STATUS, &ok); + glGetProgramiv(p->prog, GL_LINK_STATUS, &ok); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (!ok) { @@ -1249,14 +1249,14 @@ evas_gl_common_shader_program_init_done(void) { #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) - glsym_glReleaseShaderCompiler(); + glReleaseShaderCompiler(); #endif } void evas_gl_common_shader_program_shutdown(Evas_GL_Program *p) { - if (p->vert) glsym_glDeleteShader(p->vert); - if (p->frag) glsym_glDeleteShader(p->frag); - if (p->prog) glsym_glDeleteProgram(p->prog); + if (p->vert) glDeleteShader(p->vert); + if (p->frag) glDeleteShader(p->frag); + if (p->prog) glDeleteProgram(p->prog); } Modified: trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c =================================================================== --- trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c 2011-12-17 20:45:00 UTC (rev 66307) +++ trunk/evas/src/modules/engines/gl_common/evas_gl_texture.c 2011-12-18 05:03:24 UTC (rev 66308) @@ -112,7 +112,7 @@ #ifdef GL_TEXTURE_INTERNAL_FORMAT int intfmtret = -1; #endif - glsym_glTexImage2D(GL_TEXTURE_2D, 0, intfmt, w, h, 0, fmt, type, NULL); + glTexImage2D(GL_TEXTURE_2D, 0, intfmt, w, h, 0, fmt, type, NULL); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #ifdef GL_TEXTURE_INTERNAL_FORMAT // this is not in opengles!!! hrrrm @@ -129,7 +129,7 @@ static void _tex_sub_2d(int x, int y, int w, int h, int fmt, int type, const void *pix) { - glsym_glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, w, h, fmt, type, pix); + glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, w, h, fmt, type, pix); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } @@ -168,20 +168,20 @@ _print_tex_count(); - glsym_glGenTextures(1, &(pt->texture)); + glGenTextures(1, &(pt->texture)); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(GL_TEXTURE_2D, pt->texture); + glBindTexture(GL_TEXTURE_2D, pt->texture); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); _tex_2d(pt->intformat, w, h, pt->format, pt->dataformat); - glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); + glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); return pt; } @@ -384,17 +384,17 @@ _print_tex_count(); - glsym_glGenTextures(1, &(pt->texture)); + glGenTextures(1, &(pt->texture)); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(GL_TEXTURE_2D, pt->texture); + glBindTexture(GL_TEXTURE_2D, pt->texture); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); _tex_2d(pt->intformat, w, h, pt->format, pt->dataformat); @@ -407,7 +407,7 @@ glsym_glBindFramebuffer(GL_FRAMEBUFFER, 0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); + glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); return pt; } @@ -444,9 +444,9 @@ _print_tex_count(); - glsym_glGenTextures(1, &(pt->texture)); + glGenTextures(1, &(pt->texture)); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(im->native.target, pt->texture); + glBindTexture(im->native.target, pt->texture); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) @@ -458,17 +458,17 @@ } #endif - glsym_glTexParameteri(im->native.target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(im->native.target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(im->native.target, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(im->native.target, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(im->native.target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(im->native.target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(im->native.target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(im->native.target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(im->native.target, 0); + glBindTexture(im->native.target, 0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(im->native.target, gc->pipe[0].shader.cur_tex); + glBindTexture(im->native.target, gc->pipe[0].shader.cur_tex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); return pt; } @@ -524,17 +524,17 @@ _print_tex_count(); - glsym_glGenTextures(1, &(pt->texture)); + glGenTextures(1, &(pt->texture)); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glBindTexture(GL_TEXTURE_2D, pt->texture); + glBindTexture(GL_TEXTURE_2D, pt->texture); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); egldisplay = pt->gc->egldisp; @@ -544,45 +544,45 @@ // FIXME: seems a bit slower than i'd like - maybe too many flushes? // FIXME: YCbCr no support as yet - pt->dyn.img = glsym_eglCreateImage(egldisplay, + pt->dyn.img = secsym_eglCreateImage(egldisplay, EGL_NO_CONTEXT, EGL_MAP_GL_TEXTURE_2D_SEC, 0, attr); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); if (!pt->dyn.img) { - glsym_glBindTexture(GL_TEXTURE_2D, 0); + glBindTexture(GL_TEXTURE_2D, 0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glDeleteTextures(1, &(pt->texture)); + glDeleteTextures(1, &(pt->texture)); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); free(pt); return NULL; } - if (glsym_eglGetImageAttribSEC(egldisplay, + if (secsym_eglGetImageAttribSEC(egldisplay, pt->dyn.img, EGL_MAP_GL_TEXTURE_WIDTH_SEC, &(pt->dyn.w)) != EGL_TRUE) goto error; - if (glsym_eglGetImageAttribSEC(egldisplay, + if (secsym_eglGetImageAttribSEC(egldisplay, pt->dyn.img, EGL_MAP_GL_TEXTURE_HEIGHT_SEC, &(pt->dyn.h)) != EGL_TRUE) goto error; - if (glsym_eglGetImageAttribSEC(egldisplay, + if (secsym_eglGetImageAttribSEC(egldisplay, pt->dyn.img, EGL_MAP_GL_TEXTURE_STRIDE_IN_BYTES_SEC, &(pt->dyn.stride)) != EGL_TRUE) goto error; - if (glsym_eglGetImageAttribSEC(egldisplay, + if (secsym_eglGetImageAttribSEC(egldisplay, pt->dyn.img, EGL_MAP_GL_TEXTURE_FORMAT_SEC, &(fmt)) != EGL_TRUE) goto error; - if (glsym_eglGetImageAttribSEC(egldisplay, + if (secsym_eglGetImageAttribSEC(egldisplay, pt->dyn.img, EGL_MAP_GL_TEXTURE_PIXEL_TYPE_SEC, &(pixtype)) != EGL_TRUE) goto error; if (pixtype != EGL_MAP_GL_TEXTURE_UNSIGNED_BYTE_SEC) goto error; - glsym_glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); + glBindTexture(GL_TEXTURE_2D, gc->pipe[0].shader.cur_tex); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); #else gc = NULL; @@ -596,12 +596,12 @@ /* ERROR HANDLING */ #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) error: - glsym_eglDestroyImage(egldisplay, pt->dyn.img); + secsym_eglDestroyImage(egldisplay, pt->dyn.img); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); pt->dyn.img = NULL; - glsym_glBindTexture(GL_TEXTURE_2D, 0); + glBindTexture(GL_TEXTURE_2D, 0); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); - glsym_glDeleteTextures(1, &(pt->texture)); + glDeleteTextures(1, &(pt->texture)); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); free(pt); return NULL; @@ -650,8 +650,8 @@ if (pt->dyn.img) { if (pt->dyn.checked_out > 0) - glsym_eglUnmapImageSEC(pt->gc->egldisp, pt->dyn.img); - glsym_eglDestroyImage(pt->gc->egldisp, pt->dyn.img); + secsym_eglUnmapImageSEC(pt->gc->egldisp, pt->dyn.img); + secsym_eglDestroyImage(pt->gc->egldisp, pt->dyn.img); pt->dyn.img = NULL; ... [truncated message content] |