[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58732] branches/soc-2013-viewport_fx: workaround to get mali es emulator working properly, also, fixed a missing texture data format in my revised glaDrawPixelsSafe
Jason Wilkins
Jason.A.Wilkins at gmail.com
Tue Jul 30 01:31:47 CEST 2013
Revision: 58732
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58732
Author: jwilkins
Date: 2013-07-29 23:31:46 +0000 (Mon, 29 Jul 2013)
Log Message:
-----------
workaround to get mali es emulator working properly, also, fixed a missing texture data format in my revised glaDrawPixelsSafe
Modified Paths:
--------------
branches/soc-2013-viewport_fx/intern/ghost/intern/GHOST_ContextEGL.cpp
branches/soc-2013-viewport_fx/source/blender/editors/screen/glutil.c
Modified: branches/soc-2013-viewport_fx/intern/ghost/intern/GHOST_ContextEGL.cpp
===================================================================
--- branches/soc-2013-viewport_fx/intern/ghost/intern/GHOST_ContextEGL.cpp 2013-07-29 23:27:10 UTC (rev 58731)
+++ branches/soc-2013-viewport_fx/intern/ghost/intern/GHOST_ContextEGL.cpp 2013-07-29 23:31:46 UTC (rev 58732)
@@ -364,8 +364,18 @@
attrib_list.reserve(20);
- attrib_list.push_back(EGL_RENDERABLE_TYPE);
- attrib_list.push_back(EGL_OPENGL_ES2_BIT);
+ // The ARM mali ES emulator seems to need this to find a pixel fromat
+ // XXX jwilkins: mali also fails to initialize EGLEW because of a bug in eglGetCurrentDisplay(), so using major/minor instead of EGLEW_VERSION
+ if ((major == 1 && minor >= 2 || major > 1) && m_api == EGL_OPENGL_ES_API) {
+ if (m_contextClientVersion == 1) {
+ attrib_list.push_back(EGL_RENDERABLE_TYPE);
+ attrib_list.push_back(EGL_OPENGL_ES_BIT);
+ }
+ else if ((major == 1 && minor >= 3 || major > 1) && m_contextClientVersion == 2) {
+ attrib_list.push_back(EGL_RENDERABLE_TYPE);
+ attrib_list.push_back(EGL_OPENGL_ES2_BIT);
+ }
+ }
attrib_list.push_back(EGL_RED_SIZE);
attrib_list.push_back(8);
@@ -436,6 +446,9 @@
if (!EGL_CHK(::eglMakeCurrent(m_display, m_surface, m_surface, m_context)))
goto error;
+ // XXX jwilkins: do this again here for mali, since eglGetCurrentDisplay will now work
+ initContextEGLEW();
+
initContextGLEW();
return GHOST_kSuccess;
Modified: branches/soc-2013-viewport_fx/source/blender/editors/screen/glutil.c
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/editors/screen/glutil.c 2013-07-29 23:27:10 UTC (rev 58731)
+++ branches/soc-2013-viewport_fx/source/blender/editors/screen/glutil.c 2013-07-29 23:31:46 UTC (rev 58732)
@@ -608,12 +608,24 @@
// but if it still somehow gets passed in here, it should work fine.
index = (off_y * row_w + off_x) * components;
- if (type == GL_FLOAT) {
- data = (GLfloat*)rect + index;
+ switch (type) {
+ case GL_FLOAT:
+ data = (GLfloat*)rect + index;
+ break;
+
+ case GL_INT: case GL_UNSIGNED_INT:
+ data = (GLint*)rect + index;
+ break;
+
+ case GL_UNSIGNED_BYTE:
+ data = (GLubyte*)rect + index;
+ break;
+
+ default:
+ GPU_ABORT();
+ gpuPixelFormat(GL_UNPACK_ROW_LENGTH, 0);
+ return;
}
- else if (type == GL_INT || type == GL_UNSIGNED_INT) {
- data = (GLint*)rect + index;
- }
{
GPUpixels pixels = { draw_w, draw_h, format, type, data };
More information about the Bf-blender-cvs
mailing list