Commit Graph

238 Commits

Author SHA1 Message Date
Sung Park d0b5d1e13e Fix evas_gl's internal resource surface bug. For optimzation evas_gl
was using evas' window surface to do its resource creation and it 
wans't properly updated when a window is destroyed and recreated.

Also, deleted some whitespaces. 


SVN revision: 74771
2012-08-02 01:15:38 +00:00
ChunEon Park 843255a175 evas/gl - +null & less code
This fixes the incorrect operations when evas gl is re-initialized in one same process



SVN revision: 74339
2012-07-24 03:57:27 +00:00
ChunEon Park 7674239482 evas/text - Let Draw Text with it's viewport size instead of window size.
When map is enabled then text should be rendered completely for it's surface.



SVN revision: 73514
2012-07-10 05:56:13 +00:00
Cedric BAIL 1d415b796b evas: add more infrastructure to the prepare stage of pipe rendering.
NOTE: this improve some test by 10 to 15% some other are down by 5%.
Their is still more tunning and improvement possible now (Particularly
with Map), but it will do for now.


SVN revision: 73264
2012-07-04 09:39:23 +00:00
Sung Park 06aa05c2c3 EvasGL: Adding MSAA for depth_24_stencil_8 format that was missing
from the previous commit. 


SVN revision: 72970
2012-06-28 03:37:13 +00:00
Sung Park 896d489db8 EvasGL: Fixed a few minor bugs.
- Added (w,h) <=0 dimension check for evas_gl_surface_create()
- Changed evas_gl_make_current to return error when either
  surface or context is NULL.  Semantically, this was allowed 
  before but it was changed to reflect eglMakeCurrent behavior.
- evas_gl_make_current - detached any previously attached
  buffers before attaching new ones to an FBO during a make_current.
- Used dynamic memory for extension string allocation for safety. 


SVN revision: 72926
2012-06-27 08:19:25 +00:00
Jiyoun Park 3b3c4d18e1 max_samples makes redeclaration
SVN revision: 72115
2012-06-14 09:27:41 +00:00
Sung Park 8d363e06fe EvasGL: some depth_stencil lines didn't get in there the
first time. Merging the rest of the code and submitting.
My fault. 



SVN revision: 72110
2012-06-14 08:05:30 +00:00
Sung Park 05b2490b78 EvasGL: Added proper depth-stencil internal surface format
handling in EGL environment.  Also fixed some minor issues 
regarding checking surface capabilities. Apparently, some
GL drivers do not allow FBO to only have depth or stencil 
buffers attached to the FBO without the color buffer attached 
to them.



SVN revision: 72108
2012-06-14 07:53:54 +00:00
Cedric BAIL b0d3526d89 evas: another improvement part of the previous lock less font rendering patch.
Now evas will in all case do the layout during the prepare stage. It will do that
once and as long as the text didn't change. This does improve by a factor of at
least 2.3 in all expedite test case except the text change that only get a 30%
increase (I expect a drop in performance on non pipe rendering for text change
expedite test only, but this case is not common in real life).

This also fix the issue that show random size glyph when using pipe rendering.


SVN revision: 71220
2012-05-18 02:16:54 +00:00
Christopher Michael 81e987e363 Evas (gl_x11): Unbreak build for gles_sgx & s3c6410. Someone removed a
variable that was actually being used :(



SVN revision: 71146
2012-05-16 08:03:31 +00:00
Jihoon Kim dc340bbd74 evas gl_x11 engine: remove unused variables
SVN revision: 71133
2012-05-16 01:01:55 +00:00
Christopher Michael a4cfab66ab Evas (gl_x11): Fix commit snafu so gl_x11 builds again.
SVN revision: 71115
2012-05-15 13:13:05 +00:00
Christopher Michael 726b718812 Evas (wayland_egl): Update wayland_egl engine to match recent gl_x11
changes.



SVN revision: 71109
2012-05-15 12:03:01 +00:00
Sung Park b0f7d91c32 Adding MSAA (Multisample Anti-Aliased) Surface Option to Evas GL.
Currently, this feature is only supported in EGL/GLESv2 environment
with GL_IMG_multisampled_render_to_texture extension supported.

_____________________

from:    (sanghee park) sh15.park@samsung.com

Dear all,

     I compose this mail to ask reviewal this patch about multisampling on the evasgl.
     I want to make multisampling capacity to enhance rendering quality of the evasgl.
     But if MSAA is applied always, this have possibility lowering rendering performance,
     I separated user's input level to high, mid, low, none.
     If you want to test this patch, try to examine rendering qulity on EGL circumstance with multisampling level.
     Plaese review it, and any suggestion will be appreciated.

     Best Regards,
     SangHee






SVN revision: 70992
2012-05-14 08:52:56 +00:00
Sung Park 2687e46077 Fixed a few minor bugs and cleaned up unnecessary code for evas_gl.
Mainly, glDeleteBuffers was being called instead of glDeleteRenderbuffers. 
Also, there was an error when checking if surface is valid.



SVN revision: 70870
2012-05-08 09:40:01 +00:00
Sung Park 9c4b7e003d For Evas_GL surface config, prefer to use GL_DEPTH24_STENCIL8
format internally when it's  available instead of using them 
separately.  



SVN revision: 70686
2012-05-03 06:42:37 +00:00
Sung Park ef0e4dcaec Cleaned up some evas_gl code and added surface cap feature.
(Trying it again since this commit broke evas build yesterday.)

Previously, evas_gl_surface_create() didn't actually do
the render buffer attach to the the FBO. It was performed when
the make_current was called for the first time.  The issue
was that even though the surface was successfully created with
the given configuration, there was a possibility of make_current
failing with the error message "FBO not complete" because of
the surface configuration.

So, I've added a piece of code that checks the FBO
capabilities beforehand to set up a available surface configurations
so that it doesn't have to fail during make_current for unsupported
surface format.

Also, I've changed the surface config in a way that once the
user calls evas_gl_surface_create(), evas gl sets the config
parameter with configuration that evas_gl is actually using.


SVN revision: 70680
2012-05-03 02:33:18 +00:00
Tom Hacohen 241bb1b7e5 Revert "Cleaned up some evas_gl code and added surface cap feature."
This reverts commit 70617.

According to stefan_schmidt, reverting this fixes compilation errors.

SVN revision: 70624
2012-05-02 11:07:29 +00:00
Sung Park d74e82f6d8 Cleaned up some evas_gl code and added surface cap feature.
Previously, evas_gl_surface_create() didn't actually do 
the render buffer attach to the the FBO. It was performed when 
the make_current was called for the first time.  The issue 
was that even though the surface was successfully created with 
the given configuration, there was a possibility of make_current 
failing with the error message "FBO not complete" because of 
the surface configuration.

So, I've added a piece of code that checks the FBO 
capabilities beforehand to set up a available surface configurations
so that it doesn't have to fail during make_current for unsupported 
surface format.

Also, I've changed the surface config in a way that once the 
user calls evas_gl_surface_create(), evas gl sets the config
parameter with configuration that evas_gl is actually using.




SVN revision: 70617
2012-05-02 08:31:15 +00:00
Cedric BAIL f046fa4c46 evas: remove unused parameter.
SVN revision: 70550
2012-04-30 09:42:42 +00:00
om101.woo cf569fb2bf From: <om101.woo@samsung.com>
Subject: image data get/set pairing issue

I found a bug about pairing
evas_object_image_data_get/set(eng_image_data_get/put).

It was added to count checked_out for paring
eglMapImageSEC/eglUnmapImageSEC.
 
In case of calling evas_object_image_data_set() twice after calling
evas_object_image_data_get(), dyn.checked_out has -1.

Then, if evas_object_image_data_get() and evas_object_image_data_set()
is call, it can't call eglUnmapImageSEC().
 
If dyn.checked_out has minus, it can make some problem.

So, I fixed this problem.
 
Please find enclosed patch file and let me know if I misunderstood.



SVN revision: 68504
2012-02-28 11:55:14 +00:00
Carsten Haitzler 45bd2a60cd warning--
SVN revision: 68467
2012-02-27 05:52:25 +00:00
Sung Park ac0d52f04d Fixed glBindFramebuffer(0) issue for Direct Rendering
optimization.  current_fbo wasn't being set to 0 
so the above case wasn't being handled properly. 



SVN revision: 68392
2012-02-24 08:13:48 +00:00
Sung Park 4f4a904816 Fixing my silly mistake before someone else catches it.
I was accessing a variable before it was NULL checked. 
Fixed now.



SVN revision: 67601
2012-01-30 11:21:38 +00:00
Sung Park 14a94f1a8f Fixed a logic error for Evas GL Direct rendering override
option.

It should have been OR instead of AND operator.

When the image object alpha is on "OR" the rotation angle 
is not "0", direct rendering isn't allowed.  However,  
allow direct rendering if EVAS_GL_DIRECT_OVERRIDE=1 is set. 




SVN revision: 67521
2012-01-25 05:08:23 +00:00
Sung Park 9afd5b3f3f Added Direct Rendering to Evas' window instead of an FBO in Evas_GL.
This optimization is significant for rendering to a large surface 
because it'l save an extra copy overhead as well as an extra rendering pass.

To enable it, you can give EVAS_GL_OPTIONS_DIRECT hint in the surface
config options_bits. The following conditions have to be met in order
for evas to render directly into the Evas' window. If they are not met, the 
engine will fallback to rendering to an FBO as it normally does. 

conditions: 
1.) All the GL calls have to be called using the pixel_get_callback function.
This is necessary for the evas object order to be maintained.
2.) Alpha must be disabled on the image ojbect that renders evas_gl.
3.) No rotation allowed.

One way to override above condition is to set EVAS_GL_DIRECT_OVERRIDE=1 but 
there is no guarantee in its behavior.

Currently, this optimization is added for gl_x11 engine only. 




SVN revision: 67388
2012-01-20 12:29:14 +00:00
Sung Park 20b3d52669 Added new Evas GL api called evas_gl_config_new/free()
to ensure backward compatibility.  Previously, the user
simply declared a Evas_GL_Config object but this can
cause problems if more config options are added.  So,
we have Evas allocate the config object for the user
so it can handle addition in the future.

Also, added some safety code around _extensions_init


SVN revision: 67141
2012-01-12 13:54:06 +00:00
Christopher Michael 4e103ad78c Evas (gl_x11): Fix no return value in function that is supposed to
have Something returned.



SVN revision: 67063
2012-01-11 10:34:03 +00:00
Christopher Michael 2e70a02465 Evas (gl_x11 engine): Fix compiler warning about get_time function.
SVN revision: 67058
2012-01-11 09:48:47 +00:00
Carsten Haitzler 3f915e1e3f oops dont enable copy path!
SVN revision: 66727
2012-01-02 03:32:57 +00:00
Carsten Haitzler 8e4391d38b make some more notes for partial swap (copy gabk to front) but still
doesnt work.. just sits there and does nothing. wtf.



SVN revision: 66726
2012-01-02 03:30:23 +00:00
Carsten Haitzler 4273f5846c found nvidia eat-cpu-bug. glXWaitGL() spins using all cpu it can find,
though nvidia fixed the spinning on glXSwapBuffers() long ago, they
didn't fix this one.



SVN revision: 66710
2012-01-01 06:47:16 +00:00
Michael BOUCHAUD aec13b5d41 evas: forget to overide this in gl, fix evas_object_image_region_support_get
SVN revision: 66480
2011-12-23 12:00: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
Christopher Michael cbbe439629 Evas: Gl_X11: Fix typo? for __UNUSED__ param.
SVN revision: 66224
2011-12-14 18:52:42 +00:00
Michael BOUCHAUD 33eb1e5e79 evas: Add api to know if an evas_object_image could support region
SVN revision: 66170
2011-12-13 16:58:20 +00:00
Christopher Michael 9935288eaa Evas (gl engine): Remove incorrect __UNUSED__ on paramaters that are
actually used.



SVN revision: 65928
2011-12-06 00:44:25 +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
Carsten Haitzler 27705ad95b fix dyn image data return due to change i made a little bit ago
SVN revision: 65159
2011-11-14 09:27:29 +00:00
Carsten Haitzler 34988a54e4 ooh aznd other part of dyn img patch goes in.
SVN revision: 65053
2011-11-11 07:47:25 +00:00
Jiyoun Park c049c0e12b remove white space and tab
SVN revision: 65009
2011-11-10 08:59:09 +00:00
Vincent Torri 346eba9259 declare the variables at the beginning of the block
SVN revision: 64516
2011-10-30 05:02:05 +00:00
Mike Blumenkrantz 80b018b790 add missing variable from r64139
direct all spankies to raster and Sung W. Park


SVN revision: 64514
2011-10-30 02:04:50 +00:00
Sung W. Park a3a5a85d92 From: "Sung W. Park" <sungwoo@gmail.com>
Subject: [E-devel] [E-Devel][Patch] Evas GL Color Format Enum change
(and ElmGLview changes accordingly)

I'm submitting a patch that changes the color format for Evas GL.

When I first wrote Evas_GL, I just had EVAS_GL_RGB_8 and EVAS_GL_RGBA_8 and etc
but it was misleading for some people.  It was more of a filler since I couldn't decide on
a name.  I'm finally changing it to make it more clear.



SVN revision: 64491
2011-10-28 11:08:23 +00:00
Carsten Haitzler 4483c0ef6f warning--
SVN revision: 64387
2011-10-25 12:07:56 +00:00
Carsten Haitzler bc10321643 disable getting of xft.dpi - always been an option but it just leads
to inconsistent rendering.



SVN revision: 64386
2011-10-25 12:01:44 +00:00
Cedric BAIL ce3a658ef7 evas: coorectly dirty YUV data.
SVN revision: 64254
2011-10-21 14:06:42 +00:00
Carsten Haitzler f95a1783a7 debug for future. for now found the problem.
SVN revision: 64248
2011-10-21 09:59:13 +00:00
Carsten Haitzler 11409eb48e have evas engine also to update rect math so we can exclude useless
updates when obscured objects change



SVN revision: 64246
2011-10-21 08:58:00 +00:00