fail_on_software_thread_init:
eina_threads_shutdown();
fail_on_eina_thread_init:
- return --evas_threads_gl_init_count;
+ return --evas_threads_sw_init_count;
}
EAPI int
thread_data_ptr =
evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(eglGetError) *), &thcmd_ref);
*thread_data_ptr = thread_data;
- *thread_data_ptr = thread_data;
thread_data->orig_func = orig_func;
}
+
+typedef struct
+{
+ GL_TH_FNTYPE(wl_egl_window_set_buffer_transform) orig_func;
+ void *egl_window;
+ int wl_output_transform;
+} GL_TH_ST(wl_egl_window_set_buffer_transform);
+
+static void
+GL_TH_CB(wl_egl_window_set_buffer_transform)(void *data)
+{
+ GL_TH_ST(wl_egl_window_set_buffer_transform) *thread_data = *(void **)data;
+
+ thread_data->orig_func(thread_data->egl_window, thread_data->wl_output_transform);
+}
+
+void
+GL_TH_FN(wl_egl_window_set_buffer_transform)(GL_TH_DP, void *egl_window, int wl_output_transform)
+{
+
+ GL_TH_ST(wl_egl_window_set_buffer_transform) thread_data_local, *thread_data = &thread_data_local, **thread_data_ptr;
+ void *thcmd_ref;
+
+ if (!evas_gl_thread_enabled(thread_type))
+ return ((GL_TH_FNTYPE(wl_egl_window_set_buffer_transform))orig_func)(egl_window, wl_output_transform);
+
+ thread_data_ptr =
+ evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(wl_egl_window_set_buffer_transform) *), &thcmd_ref);
+ *thread_data_ptr = thread_data;
+
+ thread_data->egl_window = egl_window;
+ thread_data->wl_output_transform = wl_output_transform;
+ thread_data->orig_func = orig_func;
+
+ evas_gl_thread_cmd_enqueue(thcmd_ref,
+ GL_TH_CB(wl_egl_window_set_buffer_transform),
+ EVAS_GL_THREAD_MODE_FINISH);
+}
+
+typedef struct
+{
+ GL_TH_FNTYPE(wl_egl_window_set_window_transform) orig_func;
+ void *egl_window;
+ int wl_output_transform;
+} GL_TH_ST(wl_egl_window_set_window_transform);
+
+static void
+GL_TH_CB(wl_egl_window_set_window_transform)(void *data)
+{
+ GL_TH_ST(wl_egl_window_set_window_transform) *thread_data = *(void **)data;
+
+ thread_data->orig_func(thread_data->egl_window, thread_data->wl_output_transform);
+}
+
+void
+GL_TH_FN(wl_egl_window_set_window_transform)(GL_TH_DP, void *egl_window, int wl_output_transform)
+{
+
+ GL_TH_ST(wl_egl_window_set_window_transform) thread_data_local, *thread_data = &thread_data_local, **thread_data_ptr;
+ void *thcmd_ref;
+
+ if (!evas_gl_thread_enabled(thread_type))
+ return ((GL_TH_FNTYPE(wl_egl_window_set_window_transform))orig_func)(egl_window, wl_output_transform);
+
+ thread_data_ptr =
+ evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(wl_egl_window_set_window_transform) *), &thcmd_ref);
+ *thread_data_ptr = thread_data;
+
+ thread_data->egl_window = egl_window;
+ thread_data->wl_output_transform = wl_output_transform;
+ thread_data->orig_func = orig_func;
+
+ evas_gl_thread_cmd_enqueue(thcmd_ref,
+ GL_TH_CB(wl_egl_window_set_window_transform),
+ EVAS_GL_THREAD_MODE_FINISH);
+}
+
+
/*****************************************************************************/
EVAS_TH_EGL_FN (int , eglWaitSyncKHR, EGLDisplay dpy, void * sync, int flags) \
EVAS_TH_EGL_FN (EGLBoolean , eglBindWaylandDisplayWL, EGLDisplay dpy, void *wl_display) \
EVAS_TH_EGL_FN (EGLBoolean , eglUnbindWaylandDisplayWL, EGLDisplay dpy, void *wl_display) \
-EVAS_TH_EGL_FN (void * , eglGetProcAddress, char const * procname)
-
+EVAS_TH_EGL_FN (void * , eglGetProcAddress, char const * procname) \
+EVAS_TH_EGL_FN (void , wl_egl_window_set_buffer_transform, void *egl_window, int wl_output_transform) \
+EVAS_TH_EGL_FN (void , wl_egl_window_set_window_transform, void *egl_window, int wl_output_transform)
return;
}
thread_data_ptr =
- evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glBindFramebuffer) *) + sizeof(GL_TH_ST(glBindFramebuffer)), &thcmd_ref);
- *thread_data_ptr = (void *)((char *)thread_data_ptr + sizeof(GL_TH_ST(glBindFramebuffer) *));
- thread_data = *thread_data_ptr;
-
- if (!evas_gl_thread_force_finish())
- thread_mode = EVAS_GL_THREAD_MODE_FLUSH;
+ evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glBindFramebuffer) *), &thcmd_ref);
+ *thread_data_ptr = thread_data;
thread_data->target = target;
thread_data->framebuffer = framebuffer;
return;
}
thread_data_ptr =
- evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glFramebufferRenderbuffer) *) + sizeof(GL_TH_ST(glFramebufferRenderbuffer)), &thcmd_ref);
- *thread_data_ptr = (void *)((char *)thread_data_ptr + sizeof(GL_TH_ST(glFramebufferRenderbuffer) *));
- thread_data = *thread_data_ptr;
-
- if (!evas_gl_thread_force_finish())
- thread_mode = EVAS_GL_THREAD_MODE_FLUSH;
+ evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glFramebufferRenderbuffer) *), &thcmd_ref);
+ *thread_data_ptr = thread_data;
thread_data->target = target;
thread_data->attachment = attachment;
return;
}
thread_data_ptr =
- evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glFramebufferTexture2D) *) + sizeof(GL_TH_ST(glFramebufferTexture2D)), &thcmd_ref);
- *thread_data_ptr = (void *)((char *)thread_data_ptr + sizeof(GL_TH_ST(glFramebufferTexture2D) *));
- thread_data = *thread_data_ptr;
-
- if (!evas_gl_thread_force_finish())
- thread_mode = EVAS_GL_THREAD_MODE_FLUSH;
+ evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glFramebufferTexture2D) *), &thcmd_ref);
+ *thread_data_ptr = thread_data;
thread_data->target = target;
thread_data->attachment = attachment;
return;
}
thread_data_ptr =
- evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glBindFramebufferOES) *) + sizeof(GL_TH_ST(glBindFramebufferOES)), &thcmd_ref);
- *thread_data_ptr = (void *)((char *)thread_data_ptr + sizeof(GL_TH_ST(glBindFramebufferOES) *));
- thread_data = *thread_data_ptr;
-
- if (!evas_gl_thread_force_finish())
- thread_mode = EVAS_GL_THREAD_MODE_FLUSH;
+ evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glBindFramebufferOES) *), &thcmd_ref);
+ *thread_data_ptr = thread_data;
thread_data->target = target;
thread_data->framebuffer = framebuffer;
return;
}
thread_data_ptr =
- evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glFramebufferRenderbufferOES) *) + sizeof(GL_TH_ST(glFramebufferRenderbufferOES)), &thcmd_ref);
- *thread_data_ptr = (void *)((char *)thread_data_ptr + sizeof(GL_TH_ST(glFramebufferRenderbufferOES) *));
- thread_data = *thread_data_ptr;
-
- if (!evas_gl_thread_force_finish())
- thread_mode = EVAS_GL_THREAD_MODE_FLUSH;
+ evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glFramebufferRenderbufferOES) *), &thcmd_ref);
+ *thread_data_ptr = thread_data;
thread_data->target = target;
thread_data->attachment = attachment;
return;
}
thread_data_ptr =
- evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glFramebufferTexture2DOES) *) + sizeof(GL_TH_ST(glFramebufferTexture2DOES)), &thcmd_ref);
- *thread_data_ptr = (void *)((char *)thread_data_ptr + sizeof(GL_TH_ST(glFramebufferTexture2DOES) *));
- thread_data = *thread_data_ptr;
-
- if (!evas_gl_thread_force_finish())
- thread_mode = EVAS_GL_THREAD_MODE_FLUSH;
+ evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glFramebufferTexture2DOES) *), &thcmd_ref);
+ *thread_data_ptr = thread_data;
thread_data->target = target;
thread_data->attachment = attachment;
return;
}
thread_data_ptr =
- evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glFramebufferTexture2DMultisampleEXT) *) + sizeof(GL_TH_ST(glFramebufferTexture2DMultisampleEXT)), &thcmd_ref);
- *thread_data_ptr = (void *)((char *)thread_data_ptr + sizeof(GL_TH_ST(glFramebufferTexture2DMultisampleEXT) *));
- thread_data = *thread_data_ptr;
-
- if (!evas_gl_thread_force_finish())
- thread_mode = EVAS_GL_THREAD_MODE_FLUSH;
+ evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glFramebufferTexture2DMultisampleEXT) *), &thcmd_ref);
+ *thread_data_ptr = thread_data;
thread_data->a = a;
thread_data->b = b;
return;
}
thread_data_ptr =
- evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glFramebufferTexture2DMultisample) *) + sizeof(GL_TH_ST(glFramebufferTexture2DMultisample)), &thcmd_ref);
- *thread_data_ptr = (void *)((char *)thread_data_ptr + sizeof(GL_TH_ST(glFramebufferTexture2DMultisample) *));
- thread_data = *thread_data_ptr;
-
- if (!evas_gl_thread_force_finish())
- thread_mode = EVAS_GL_THREAD_MODE_FLUSH;
+ evas_gl_thread_cmd_create(thread_type, sizeof(GL_TH_ST(glFramebufferTexture2DMultisample) *), &thcmd_ref);
+ *thread_data_ptr = thread_data;
thread_data->a = a;
thread_data->b = b;
gw->surf = EINA_TRUE;
}
+
void
eng_outbuf_reconfigure(Outbuf *ob, int w, int h, int rot, Outbuf_Depth depth EINA_UNUSED)
{
* because the display server needs to calcuate the screen rotation value
* from buffer_transform value.
*/
- wl_egl_window_set_buffer_transform(ob->win, ob->info->info.rotation / 90);
- wl_egl_window_set_window_transform(ob->win, ob->info->window_rotation / 90);
+ GL_TH(wl_egl_window_set_buffer_transform, ob->win, ob->info->info.rotation / 90);
+ GL_TH(wl_egl_window_set_window_transform, ob->win, ob->info->window_rotation / 90);
if ((ob->info->info.rotation == 90) || (ob->info->info.rotation == 270))
wl_egl_window_resize(ob->win, h, w, dx, dy);
else
wl_egl_window_resize(ob->win, w, h, dx, dy);
}
+
}
void
| EVAS GL | void | glAttachShader | GLuint program, GLuint shader | flush | noext | | | | | | | | |
| EVAS GL | void | glBindAttribLocation | GLuint program, GLuint index, const char* name | finish | noext | _mp_default, strlen(name), name | | | | | | | |
| EVAS GL | void | glBindBuffer | GLenum target, GLuint buffer | finish | noext | | | | | | | | |
-| EVAS GL | void | glBindFramebuffer | GLenum target, GLuint framebuffer | flush | ext | | | | | | | | |
+| EVAS GL | void | glBindFramebuffer | GLenum target, GLuint framebuffer | finish | ext | | | | | | | | |
| EVAS GL | void | glBindRenderbuffer | GLenum target, GLuint renderbuffer | flush | noext | | | | | | | | |
| EVAS GL | void | glBindTexture | GLenum target, GLuint texture | flush | noext | | | | | | | | |
| EVAS GL | void | glBlendColor | GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha | flush | noext | | | | | | | | |
| EVAS GL | void | glEnableVertexAttribArray | GLuint index | finish | noext | | | | | | | | |
| EVAS GL | void | glFinish | void | finish | noext | | | | | | | | |
| EVAS GL | void | glFlush | void | finish | noext | | | | | | | | |
-| EVAS GL | void | glFramebufferRenderbuffer | GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer | flush | noext | | | | | | | | |
-| EVAS GL | void | glFramebufferTexture2D | GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level | flush | ext | | | | | | | | |
+| EVAS GL | void | glFramebufferRenderbuffer | GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer | finish | noext | | | | | | | | |
+| EVAS GL | void | glFramebufferTexture2D | GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level | finish | ext | | | | | | | | |
| EVAS GL | void | glFrontFace | GLenum mode | finish | noext | | | | | | | | |
| EVAS GL | void | glGenBuffers | GLsizei n, GLuint* buffers | finish | noext | | | | | | | | |
| EVAS GL | void | glGenerateMipmap | GLenum target | finish | noext | | | | | | | | |
| EVAS GL | void | glRenderbufferStorageOES | GLenum target, GLenum internalformat, GLsizei width, GLsizei height | flush | ext | | | | | | | | |
| EVAS GL | void | glGetRenderbufferParameterivOES | GLenum target, GLenum pname, GLint* params | finish | ext | | | | | | | | |
| EVAS GL | GLboolean | glIsFramebufferOES | GLuint framebuffer | finish | ext | | | | | | | | |
-| EVAS GL | void | glBindFramebufferOES | GLenum target, GLuint framebuffer | flush | ext | | | | | | | | |
+| EVAS GL | void | glBindFramebufferOES | GLenum target, GLuint framebuffer | finish | ext | | | | | | | | |
| EVAS GL | void | glDeleteFramebuffersOES | GLsizei n, const GLuint* framebuffers | flush | ext | _mp_delete_object, n * sizeof(GLuint), framebuffers | | | | | | | |
| EVAS GL | void | glGenFramebuffersOES | GLsizei n, GLuint* framebuffers | finish | ext | | | | | | | | |
| EVAS GL | GLenum | glCheckFramebufferStatusOES | GLenum target | finish | ext | | | | | | | | |
-| EVAS GL | void | glFramebufferRenderbufferOES | GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer | flush | ext | | | | | | | | |
-| EVAS GL | void | glFramebufferTexture2DOES | GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level | flush | ext | | | | | | | | |
+| EVAS GL | void | glFramebufferRenderbufferOES | GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer | finish | ext | | | | | | | | |
+| EVAS GL | void | glFramebufferTexture2DOES | GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level | finish | ext | | | | | | | | |
| EVAS GL | void | glGetFramebufferAttachmentParameterivOES | GLenum target, GLenum attachment, GLenum pname, GLint* params | finish | ext | | | | | | | | |
| EVAS GL | void | glGenerateMipmapOES | GLenum target | finish | ext | | | | | | | | |
/* GL_OES_matrix_palette */
| EVAS GL | void | glFlushMappedBufferRangeEXT | GLenum target, GLintptr offset, GLsizeiptr length | finish | ext | | | | | | | | |
/* GL_EXT_multisampled_render_to_texture */
| EVAS GL | void | glRenderbufferStorageMultisampleEXT | GLenum a, GLsizei b, GLenum c, GLsizei d, GLsizei e | finish | ext | | | | | | | | |
-| EVAS GL | void | glFramebufferTexture2DMultisampleEXT | GLenum a, GLenum b, GLenum c, GLuint d, GLint e, GLsizei f | flush | ext | | | | | | | | |
+| EVAS GL | void | glFramebufferTexture2DMultisampleEXT | GLenum a, GLenum b, GLenum c, GLuint d, GLint e, GLsizei f | finish | ext | | | | | | | | |
/* GL_EXT_robustness */
| EVAS GL | GLenum | glGetGraphicsResetStatusEXT | void | finish | ext | | | | | | | | |
| EVAS GL | void | glStartTilingQCOM | GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask | flush | ext | | | | | | | | |
| EVAS GL | void | glEndTilingQCOM | GLbitfield preserveMask | flush | ext | | | | | | | | |
-| EVAS GL | void | glFramebufferTexture2DMultisample | GLenum a, GLenum b, GLenum c, GLuint d, GLint e, GLsizei f | flush | ext | | | | | | | | |
+| EVAS GL | void | glFramebufferTexture2DMultisample | GLenum a, GLenum b, GLenum c, GLuint d, GLint e, GLsizei f | finish | ext | | | | | | | | |
# OpenGL-ES 3.0
| EVAS GL | void | glBeginQuery | GLenum target, GLuint id | finish | ext | | | | | | | | |