Commit Graph

101 Commits

Author SHA1 Message Date
Carsten Haitzler 15aa383ae8 deprecate 6410 support. this driver has never seen the light of day
and likely never will - so give up on support.



SVN revision: 77027
2012-09-24 03:06:26 +00:00
Carsten Haitzler 54650e7e56 fix font glyph issue when gl enignes shut down leaving font glyph data
for textures in the font core.



SVN revision: 75243
2012-08-14 08:31:59 +00:00
Christopher Michael d856a2f067 Evas (gl_common): Merge Tizen changes to upstream EFL.
SVN revision: 73201
2012-07-03 07:33:44 +00:00
Christopher Michael dec27dd7de Evas (gl_common): Remove unused variable.
SVN revision: 67064
2012-01-11 10:35:52 +00:00
Carsten Haitzler dbc5afdee2 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 :(



SVN revision: 66308
2011-12-18 05:03:24 +00:00
Carsten Haitzler c75637b6bf remove warnings!
SVN revision: 65896
2011-12-05 09:26:04 +00:00
Carsten Haitzler 5967841988 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)



SVN revision: 65891
2011-12-05 08:54:14 +00:00
Cedric BAIL e0df29b4f2 evas: upload the right texture size whatever rounding the hardware require.
SVN revision: 65138
2011-11-13 22:21:58 +00:00
Carsten Haitzler f6b826fde9 oops - typo in dyn image fix. fix!
SVN revision: 65052
2011-11-11 07:43:38 +00:00
Carsten Haitzler dcb34d789b handle refcounting of dyn img data to allow for get, get, set, set
pairs.



SVN revision: 65051
2011-11-11 07:36:15 +00:00
Carsten Haitzler fb447485e8 oh dear.. lewft and right pixle duplication for interpolation had the
WRONG PIXELS!!! amazing it never crashed! fix fix! (also handle
opengls that doesnt support unpack row length)



SVN revision: 64377
2011-10-25 09:27:54 +00:00
Carsten Haitzler a4bb9db2fa hmm gles doesnt have internal format fetching.
SVN revision: 64253
2011-10-21 12:03:41 +00:00
Carsten Haitzler f8f5ad72ef note on detecting texture alloc fail. need to percolate that back
SVN revision: 64250
2011-10-21 10:03:17 +00:00
Carsten Haitzler 7597814df2 adapt to SEC direct texture access changes for the last time.
SVN revision: 63959
2011-10-10 10:08:29 +00:00
Cedric BAIL cc71e34616 evas: zero swizzeling code for Samsung platform.
SVN revision: 63727
2011-09-30 15:51:32 +00:00
Cedric BAIL 120306f05f evas: add YUV double buffering for OpenGL backend.
SVN revision: 63225
2011-09-06 07:56:47 +00:00
Cedric BAIL ce8904076d evas: fix alignment issue.
SVN revision: 63202
2011-09-05 15:21:23 +00:00
Cedric BAIL 35da5ff856 evas: use a tricky NULL texture.
Note: this help the driver to know that we don't it
to swizzle back the pixel from GPU format, because we
are going to replace all pixels.


SVN revision: 63201
2011-09-05 14:58:18 +00:00
Cedric BAIL 20300dfedc evas: and now MT12 gain Open GL support.
SVN revision: 63174
2011-09-04 21:15:04 +00:00
Cedric BAIL 5a4163f5f2 evas: use simpler format as much as possible.
SVN revision: 62975
2011-08-29 21:52:00 +00:00
Cedric BAIL 26ee52dd61 evas: add NV12 and MT12 colorspace.
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-29 20:56:48 +00:00
Carsten Haitzler 5cc90f00d9 oh my bad! i broke desktop gl compilation! bad bad bad me. spank! fix.
SVN revision: 62777
2011-08-25 05:17:43 +00:00
Jiyoun Park 4b59fd460e From: Jiyoun Park <jy0703.park@samsung.com>
Subject: [E-devel] [Patch] evas gl engine's texture creation

Hello. 

1. _pool_tex_dynamic_new function, it didn’t set pt to NULL when secsym_eglCreateImage function failed.
In this case, it returns wrong pt pointer and it has possibility to make crash.
So I add free pt code and return NULL code into _pool_tex_dynamic_new function.

2. I modified eng_image_data_get of gl engine.

If Evas_GL_Image's texture creation failed and evas_gl_image's cache image was droped, 
Im->im can be NULL. So I add check code. 
Example: evas_gl_common_image_content_hint_set
     1) EVAS_IMAGE_CONTENT_HINT_DYNAMIC , it drop cache image
     2) if evas_gl_common_texture_dynamic_new failed
     3) then, im->im =NULL, im->tex=NULL
        In this situation, if application call's evas_object_image_data_get function, 
It make crash in evas_cache_image_load_data function.

3. I think function's related with evas_object's engine data have to be return NULL if it failed.
If function's returns null, evas object code can handle error more easily.  
But evas object's code was implemented differently each case. Does my suggestion right?
I add engine data null check code to evas_object_image based on upper consumtion.
If it is wrong , the patch code related with evas object image have to be removed.
If it is right , I will survey other evas object type also.  



SVN revision: 62775
2011-08-25 04:48:45 +00:00
Cedric BAIL 7ae4bd0f31 evas: add YUY2 shader to GL engine.
TODO: add NV12 and NV12T to evas.


SVN revision: 62721
2011-08-23 15:13:40 +00:00
우승수 f34ac1e24a From: 우승수 <om101.woo@samsung.com>
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".



SVN revision: 62493
2011-08-16 07:06:36 +00:00
Vincent Torri 18d1e68924 whitespaces--------
SVN revision: 60426
2011-06-17 07:47:28 +00:00
Carsten Haitzler 6b3e820f35 gles warning--
SVN revision: 58514
2011-04-09 04:13:21 +00:00
Cedric BAIL 76a0da7a1c evas: rename Evas_GL_Context to Evas_Engine_GL_Context
patch by Sung W. Park <sungwoo@gmail.com>


SVN revision: 57803
2011-03-16 17:32:49 +00:00
Carsten Haitzler 7881c0b849 improvement to gl engine wrt. caching.
SVN revision: 56801
2011-02-08 11:41:38 +00:00
Carsten Haitzler fdc17c8c84 oooh thank you valgrind! found some bad mem access stuff in the gl
engine on shutdown. was freeing the wring kind of thing in the first
place.. and even then it should be more robust, so fix gl texture
robustness and this bug. can cause on-exit crashes if not fixed.



SVN revision: 56068
2011-01-13 10:41:08 +00:00
Carsten Haitzler 3a568d6fd4 fmting.
SVN revision: 53887
2010-10-26 07:00:26 +00:00
Carsten Haitzler 21a7dde012 dynamic tex ref wrong. fix.
SVN revision: 53027
2010-10-04 11:17:11 +00:00
Carsten Haitzler 2f08e231e5 warning--
SVN revision: 52445
2010-09-19 02:10:09 +00:00
Gustavo Sverzut Barbieri d89ebf341b cleanup: internal image information is now unsigned.
There is no meaning in negative values for image loading, marking as
dirty or size, so image internals (cache, entry) were changed to
unsigned, reducing possible errors, particularly with overflow.

engines were converted to the new way, but any 3rd party modules will
still work as they should be using values >= 0 only anyway.

please review.

new cases introduced by "comparison between signed and unsigned" were
fixed in the modules that used cache_entry or Image_Entry dimensions.



SVN revision: 52428
2010-09-18 23:16:25 +00:00
Carsten Haitzler 4a5adf358d tracing/info to check texture allocation/usage. no leaks that i see.
dump works perfectly. yay!



SVN revision: 51669
2010-08-27 02:02:38 +00:00
Carsten Haitzler 7ccee2cfe9 aagh fix fix! works again.
SVN revision: 51652
2010-08-26 04:37:43 +00:00
Carsten Haitzler 9d7a3a2bfc silence gl enging output unless you set EVAS_GL_INFO in env. move some
fixed numbers into env vars for tuning purposes and debugging ... and
importantly - fix a smooth vs non-smooth texture mode thing.



SVN revision: 51651
2010-08-26 01:41:48 +00:00
Carsten Haitzler 86eb3374d4 remove segv in ghl engine with native surfaces if data is null!
SVN revision: 51635
2010-08-25 09:29:56 +00:00
Carsten Haitzler 83b73046ed fix 2 unimplemented bits in dynamic texture stuff.
SVN revision: 51378
2010-08-19 03:30:47 +00:00
Christopher Michael b2b23358f4 Comment out some unused variables.
Fix some 'may be used uninitialized' warnings.



SVN revision: 51288
2010-08-18 16:08:30 +00:00
Carsten Haitzler 5a35d48384 fix direct egl img rgba ordering.
SVN revision: 51273
2010-08-18 09:53:14 +00:00
Carsten Haitzler f7fab4ea6b more comments
SVN revision: 51074
2010-08-13 11:23:07 +00:00
Carsten Haitzler 66795125ae comments.
SVN revision: 51073
2010-08-13 11:13:45 +00:00
Carsten Haitzler 12beaa9f19 and make it work... yes. first time sec egl image works.
SVN revision: 51072
2010-08-13 11:08:57 +00:00
Carsten Haitzler 2d3ea36109 more work on egl image direct access.
SVN revision: 51070
2010-08-13 10:34:51 +00:00
Carsten Haitzler ccfd7f27fc 1. slightly optimise a get opaque call. (some tests get a 5-10% speedup)
2. gl - be stricter on gl-es texture formats.



SVN revision: 50950
2010-08-10 02:35:07 +00:00
Carsten Haitzler 66cace4f44 some major re-jig to get multiple render pipes in gl at once... some
chunky speedups to be had in real-life cases by avoiding more array
flushes.



SVN revision: 50917
2010-08-09 03:27:59 +00:00
Carsten Haitzler 3b6c09d89b allow max cutout rects to be tunable. and change3 default for gl?
SVN revision: 50736
2010-08-02 06:46:38 +00:00
Carsten Haitzler 6559804d43 found booboo on non-bgra extended gl-es.
SVN revision: 46576
2010-02-27 10:31:17 +00:00
Carsten Haitzler c7695857f7 lots more shaders!
SVN revision: 46266
2010-02-18 07:10:28 +00:00