path: root/src/modules/evas/engines/gl_common/evas_gl_context.c (unfollow)
AgeCommit message (Collapse)Author
2012-11-03evas - clean the unused code.ChunEon Park
SVN revision: 78882
2012-10-13evas/gl_context - --whitespaces;ChunEon Park
SVN revision: 77953
2012-10-13evas/gl_common - lines wouldn't use any textures.ChunEon Park
SVN revision: 77952
2012-09-26partial swaps++ to evas gl engine.Carsten Haitzler
SVN revision: 77069
2012-09-24and simplify gles suport to #ifdef GL_GLES :) we dont need sgx+6410Carsten Haitzler
stuff anymore. SVN revision: 77028
2012-09-14this is an improvement of kakaroto's map buffer stuff - it's notCarsten Haitzler
runtime detected and enabled, not compile-time, and env var can turn it off forcibly if detected. SVN revision: 76643
2012-09-13and formattingCarsten Haitzler
SVN revision: 76605
2012-09-13warn--Carsten Haitzler
SVN revision: 76604
2012-09-12Evas_Gl: Use glMapBufferOES in egl/gles2.Christopher Michael
SVN revision: 76556
2012-09-12Evas_GL: Fix kakaroto's breakage in evas_gl. GL_WRITE_ONLY is onlyChristopher Michael
defined in GL/glext.h (which is not included if we are building for SGX). A build for SGX uses EGL which defines GL_WRITE_ONLY_OES instead. NB: I am not entirely sure that this is the 'proper' fix, but it allows evas to build again. SVN revision: 76540
2012-09-12Evas : Use server based buffers for vertices instead of client buffersYouness Alaoui
Implement a auto-free system of the allocated buffers to avoid using resources that we may not need anymore. SVN revision: 76490
2012-08-14fix font glyph issue when gl enignes shut down leaving font glyph dataCarsten Haitzler
for textures in the font core. SVN revision: 75243
2012-08-08Evas: Use proper variable (gc->shared is set later on)Youness Alaoui
SVN revision: 75022
2012-07-05evas/gl - fixed Evas_Map NightMare.ChunEon Park
Trvial mistake but I wasted much time to find out it. SVN revision: 73331
2012-07-05evas/gl - indentation fixChunEon Park
SVN revision: 73330
2012-04-21i don't believe that we forgot that desktopgl has an unload for shaderCarsten Haitzler
compiler... use it. minor minor minor. SVN revision: 70374
2012-04-12formatting fixup.Carsten Haitzler
SVN revision: 70124
2011-12-18sorry sungwoo - going to have to back this dlopen/dlsym styuff out.Carsten Haitzler
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 :( SVN revision: 66308
2011-12-05remove warnings!Carsten Haitzler
SVN revision: 65896
2011-12-05I'm attaching a patch for the initial version of the GL FastpathCarsten Haitzler
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) SVN revision: 65891
2011-10-15Evas: Check for dlsym and disable gl engines if not foundYouness Alaoui
SVN revision: 64091
2011-10-15Evas: Remove a useless ifdef that was causing dead code.Youness Alaoui
You can't compile a gl_common .c file based on whether or not the SDL header was included. The .c file will result in only one .o and since the Evas_Engine_Sdl.h is not included by evas_gl_context.c itself, then that ifdef will never be true. gl_common should request a callback function pointer from the evas engine for doing symbol resolution. This needs a refactor. SVN revision: 64086
2011-10-12fix use of invalid program id IF viewport changed - also disableCarsten Haitzler
GLERR. this can really hurt performance. SVN revision: 64027
2011-10-12fix gl pipeline problem with textures and map and the wrong program idCarsten Haitzler
being set/restored. SVN revision: 64014
2011-10-10adapt to SEC direct texture access changes for the last time.Carsten Haitzler
SVN revision: 63959
2011-10-08Commit Neil's patch reported here:Carsten Haitzler SVN revision: 63920
2011-09-30bad cedric! broke gl engine!Carsten Haitzler
SVN revision: 63729
2011-09-30evas: zero swizzeling code for Samsung platform.Cedric BAIL
SVN revision: 63727
2011-09-19warning--Carsten Haitzler
SVN revision: 63477
2011-09-04evas: and now MT12 gain Open GL support.Cedric BAIL
SVN revision: 63174
2011-08-29evas: add NV12 and MT12 colorspace.Cedric BAIL
MT12 is has documented in Linux videodev documentation a 64 * 32 macro block tiled colorspace format used on Samsung hardware. SVN revision: 62967
2011-08-25evas: refactorise code.Cedric BAIL
SVN revision: 62788
2011-08-24evas: refactorize OpenGL engine.Cedric BAIL
SVN revision: 62752
2011-08-23evas: add YUY2 shader to GL engine.Cedric BAIL
TODO: add NV12 and NV12T to evas. SVN revision: 62721
2011-06-17whitespaces--------Vincent Torri
SVN revision: 60426
2011-05-30evas: fix misspellingsLucas De Marchi
Misspellings found by codespell SVN revision: 59822
2011-05-24fix glpipe optimization that stops the pipes from being used with manyCarsten Haitzler
maps SVN revision: 59638
2011-05-04make get program binary able to be disabled via env var and display ifCarsten Haitzler
wee find the extn too. tested on gles now too. SVN revision: 59178
2011-05-04From: Jiyoun Park <>Jiyoun Park
Subject: [E-devel] [Patch] Evas gl shader use binary shader I make patch related with evas gl binary shader. The concept of binary shader is compile shader only once. Some people want to use binary shader because of performance issue. In current evas gl engine, every application have to compile shader each time. But I modify code , so only first running application need compile shader. Other application use already compiled shader(binary shader) The binary shader is made under HOME/.evas/gl_common_shaders directory. Binary shader is created according to GL vendor,GL renderer, GL version and Module_arch. The basic flow is 1. First running application which use gl engine check binary shader directory, but it can't find binary shader. 2. After compiling shader, It saves compiled shaders.. 3. Other application checks shader directory, it can use binary shaders. In mobile target, using binary shader, I can save 150ms. (that time, there is 11 shaders). If there is more shaders and more applications, this flow maybe save more total time. (the above is now in, changelog coming, with change to using ~/.cache, some formatting fixes, make ity do the desktop gl one right with the retrievable hint parameter ont he program etc. - doesn't break desktop gl at least. yay. a,so fixes to mke it compile at all). SVN revision: 59167
2011-05-02From: "Sung W. Park" <>Sung W. Park
Subject: evas_gl_api_get patch. Here's a patch that simply overrides the GL functions for Evas_GL except for two functions that I provide on my own. It may have some symbol resolving warnings but that'll all go away eventually when we do everything via dlsym or getProcAddress. You can apply the patch to the latest revision of evas. (I've just updated them) I'm also attaching a sample GLES program that uses evas_gl_api_get. You don't need to link it to -lGL. SVN revision: 59092
2011-04-19Evas: Filters:Brett Nash
More work, proudly supported by Samsung. Filters! So now you can apply a whole host of cheesy visual effects to objects at runtime. This is the first commit, there are a couple of more to come as I tweak the filters, and fix blur with GL[1]. Please direct bugs to me [1] You'd think shaders would be good at this.. but no, generic blur and GL are like trying to get an apple product to work with Linux. SVN revision: 58726
2011-04-12no need to get this.Carsten Haitzler
SVN revision: 58574
2011-04-06and now REALLY fix that viewport bug...Carsten Haitzler
SVN revision: 58386
2011-04-06fix scossor clip on 90 degree rots.Carsten Haitzler
SVN revision: 58381
2011-04-06fixme notice, fix make current context to force if it was changed.Carsten Haitzler
SVN revision: 58375
2011-04-06Masking: Push a bit more arbitrary clippingBrett Nash
This seems to have got lost in my big messup before. This pushes enough of mask/arbitrary clip to be somewhat useful. I need to push a little more soon for it to be 100% happy, but this is useful level. SVN revision: 58373
2011-04-04API add: From <> - sungwooCarsten Haitzler
start of evas gl api (with compile warning fixes). SVN revision: 58318
2011-03-29wer can release compiler data if we want when done with glsl compiling.Carsten Haitzler
SVN revision: 58172
2011-03-16evas: rename Evas_GL_Context to Evas_Engine_GL_ContextCedric BAIL
patch by Sung W. Park <> SVN revision: 57803
2011-03-10From: "Sung W. Park" <>Sung W. Park
Subject: [E-devel] Evas - OpenGL and Image Object - evas_object_image_native_surface_set() Fix bug with yinvert handling of native surfaces. SVN revision: 57658