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
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
Subject: Re: [E-devel] [E-Devel][Review][Patch] Evas GL Extensions + a
bug fix
Here's an initial attempt at the GL extensions issue for Evas GL.
I have been in discussion with a few EFL developers regarding how we should
provide extensions. Essentially, there are two ways to go about doing this.
1. provide evas_gl_proc_address_get() function as it is done in other
glue layers
2. provide all the extension functions in the EVAS_GL_API struct.
#1 approach is how it's done in other glue layers and the driver implementor can
provide new extensions easily. It is however pretty annoying to get the
function prototypes right and use the function pointers and etc.
#2 approach provides all the extension functions in the struct so it's
definitely easier to use. Adding new extensions can be a pain as people may
have to wait for new version releases.
For now, we thought it was OK to just throw them in the struct as in
#2 and try it out. So, I've implemented this approach. As for the extensions,
I've basically included all the extensions in gl2ext.h as EvasGL currently
provides all the GLES 2.0 functions. In order to display the right
information, I had to override glGetString() with GL_EXTENSIONS as parameter to properly
display the supported extensions.
Also, I've added a few EGL extensions that have been
modified for EvasGL use. For example, eglCreateImage/eglDestroyImage has been
defined as folllows.
EvasGLImage (*evasglCreateImage) (int target, void* buffer, int*
attrib_list); void
(*evasglDestroyImage)
(EvasGLImage image);
const char *evas_gl_string_query() function was added to return a string of
supported EvasGL extensions. So essentially, a user can search this string to see
if the desired extension is supported. if it is, he can use the functions. He can
always check if the function pointers are NULL as well.
Take a look at the pach and let me know what you think.
______________
While I was adding the extension code, I've added a few fixes/ changes
to the EvasGL.
1. glDeletBuffers bug
- When I wad destroying evasgl context, I was deleting the context FBO with
glDeleteBuffers instead of glDeleteFramebuffers. This code in effect was
deleting BOs in other contexts and we had some funky behaviors as a
result. The
bug has been fixed.
2. make_current
- I've made some changes to the make current code and also added a resource
context to the engine data. the resource context is used for creating surface
texture/ fbos when surface/ context is created. Before, i was using evas'
context but thought it'd be a good idea to use a separate context.
SVN revision: 64139
Subject: [E-devel] [Review] [Patch] Evas_GL bug fixes/updates
I've fixed some minor issues that I've been pushing off for later.
The patch does the following:
1. Evas_GL and Evas had an issue where the viewport parameters were
being reset in the wrong context. Previously, this issue was temporarily
patched by flushing evas' pipeline and setting
evas_gl_common_context_use(NULL) in EvasGL's
make current. I know, it was pretty hacky. It turns out that in
evas_engine,
there was a code evas_gl_common_context_resize(NULL) without doing
eng_window_use() first. So i've added that part and problem went was
resolved properly. :-)
2. Naturally, I've taken out the temporary patch from 1.
3. I've added code that took care of glBindFramebuffer(..., fbo) where
the
fbo had to be saved and restored in case the user wanted to use his
own fbo.
Also, I've had to take care of the case when fbo is 0 since 0 need to
point
to evas_gl surface.
4. I've updated make_current a little as well.
SVN revision: 62780
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