[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58766] branches/soc-2013-viewport_fx: got mapped vbo working in ES and Core

Jason Wilkins Jason.A.Wilkins at gmail.com
Wed Jul 31 15:56:46 CEST 2013


Revision: 58766
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58766
Author:   jwilkins
Date:     2013-07-31 13:56:46 +0000 (Wed, 31 Jul 2013)
Log Message:
-----------
got mapped vbo working in ES and Core

Modified Paths:
--------------
    branches/soc-2013-viewport_fx/extern/glew-es/include/GL/glesew.h
    branches/soc-2013-viewport_fx/extern/glew-es/src/glew.c
    branches/soc-2013-viewport_fx/intern/ghost/intern/GHOST_WindowWin32.cpp
    branches/soc-2013-viewport_fx/source/blender/blenfont/intern/blf_glyph.c
    branches/soc-2013-viewport_fx/source/blender/editors/space_view3d/drawarmature.c
    branches/soc-2013-viewport_fx/source/blender/gpu/GPU_object.h
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_extension_wrapper.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_extension_wrapper.h
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_glew.h
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_immediate.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_immediate.h
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_immediate_gl11.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_immediate_glsl.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_object_gles.c

Modified: branches/soc-2013-viewport_fx/extern/glew-es/include/GL/glesew.h
===================================================================
--- branches/soc-2013-viewport_fx/extern/glew-es/include/GL/glesew.h	2013-07-31 13:48:12 UTC (rev 58765)
+++ branches/soc-2013-viewport_fx/extern/glew-es/include/GL/glesew.h	2013-07-31 13:56:46 UTC (rev 58766)
@@ -1175,6 +1175,7 @@
 
 typedef void  (GLAPIENTRY * PFNGLBINDBUFFERPROC) (GLenum , GLuint ); // XXX jwilkins: missing function
 typedef void  (GLAPIENTRY * PFNGLBUFFERDATAPROC) (GLenum , GLsizeiptr, const GLvoid *, GLenum ); // XXX jwilkins: missing function
+typedef void  (GLAPIENTRY * PFNGLBUFFERSUBDATAPROC) (GLenum, GLintptr, GLsizeiptr, const GLvoid *); // XXX jwilkins: missing function
 typedef void  (GLAPIENTRY * PFNGLDELETEBUFFERSPROC) (GLsizei , const GLuint *); // XXX jwilkins: missing function
 typedef void  (GLAPIENTRY * PFNGLGENBUFFERSPROC) (GLsizei, GLuint *); // XXX jwilkins: missing function
 typedef void  (GLAPIENTRY * PFNGLTEXPARAMETERIPROC) (GLenum, GLenum, GLint); // XXX jwilkins: missing function
@@ -1271,6 +1272,7 @@
 
 #define glBindBuffer GLEW_GET_FUN(__glewBindBuffer) // XXX jwilkins: missing function
 #define glBufferData GLEW_GET_FUN(__glewBufferData) // XXX jwilkins: missing function
+#define glBufferSubData GLEW_GET_FUN(__glewBufferSubData) // XXX jwilkins: missing function
 #define glDeleteBuffers GLEW_GET_FUN(__glewDeleteBuffers) // XXX jwilkins: missing function
 #define glGenBuffers GLEW_GET_FUN(__glewGenBuffers) // XXX jwilkins: missing function
 #define glTexParameteri GLEW_GET_FUN(__glewTexParameteri) // XXX jwilkins: missing function
@@ -3902,6 +3904,7 @@
 #if !GL_ES_VERSION_CL_1_1 // XXX jwilkins
 GLEW_FUN_EXPORT PFNGLBINDBUFFERPROC __glewBindBuffer; // XXX jwilkins: missing function
 GLEW_FUN_EXPORT PFNGLBUFFERDATAPROC __glewBufferData; // XXX jwilkins: missing function
+GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAPROC __glewBufferSubData; // XXX jwilkins: missing function
 GLEW_FUN_EXPORT PFNGLDELETEBUFFERSPROC __glewDeleteBuffers; // XXX jwilkins: missing function
 GLEW_FUN_EXPORT PFNGLGENBUFFERSPROC __glewGenBuffers; // XXX jwilkins: missing function
 GLEW_FUN_EXPORT PFNGLTEXPARAMETERIPROC __glewTexParameteri; // XXX jwilkins: missing function

Modified: branches/soc-2013-viewport_fx/extern/glew-es/src/glew.c
===================================================================
--- branches/soc-2013-viewport_fx/extern/glew-es/src/glew.c	2013-07-31 13:48:12 UTC (rev 58765)
+++ branches/soc-2013-viewport_fx/extern/glew-es/src/glew.c	2013-07-31 13:56:46 UTC (rev 58766)
@@ -3428,6 +3428,7 @@
 #if !GL_ES_VERSION_CL_1_1 // XXX jwilkins: missing function
 PFNGLBINDBUFFERPROC __glewBindBuffer = NULL; // XXX
 PFNGLBUFFERDATAPROC __glewBufferData = NULL; // XXX
+PFNGLBUFFERSUBDATAPROC __glewBufferSubData = NULL; // XXX
 PFNGLGENBUFFERSPROC __glewGenBuffers = NULL; // XXX
 PFNGLDELETEBUFFERSPROC __glewDeleteBuffers = NULL; // XXX
 PFNGLTEXPARAMETERIPROC __glewTexParameteri = NULL; // XXX
@@ -10759,6 +10760,7 @@
 
   r = ((glBindBuffer = (PFNGLBINDBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBindBuffer")) == NULL) || r; // XXX jwilkins: missing function
   r = ((glBufferData = (PFNGLBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glBufferData")) == NULL) || r; // XXX jwilkins: missing function
+  r = ((glBufferSubData = (PFNGLBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glBufferSubData")) == NULL) || r; // XXX jwilkins: missing function
   r = ((glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteBuffers")) == NULL) || r; // XXX jwilkins: missing function
   r = ((glGenBuffers = (PFNGLGENBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glGenBuffers")) == NULL) || r; // XXX jwilkins: missing function
   r = ((glTexParameteri = (PFNGLTEXPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glTexParameteri")) == NULL) || r; // XXX jwilkins: missing function

Modified: branches/soc-2013-viewport_fx/intern/ghost/intern/GHOST_WindowWin32.cpp
===================================================================
--- branches/soc-2013-viewport_fx/intern/ghost/intern/GHOST_WindowWin32.cpp	2013-07-31 13:48:12 UTC (rev 58765)
+++ branches/soc-2013-viewport_fx/intern/ghost/intern/GHOST_WindowWin32.cpp	2013-07-31 13:56:46 UTC (rev 58766)
@@ -593,8 +593,13 @@
 
 #elif defined(WITH_GL_SYSTEM_EMBEDDED)
 
-#if defined(WITH_GL_PROFILE_ES20)
+#if defined(WITH_GL_PROFILE_CORE)
+		// XXX jwilkins: not sure yet how to request a core context from EGL
+		GHOST_Context* context = new GHOST_ContextEGL(m_hWnd, m_hDC, EGL_OPENGL_API);
+#elif defined(WITH_GL_PROFILE_ES20)
 		GHOST_Context* context = new GHOST_ContextEGL(m_hWnd, m_hDC, EGL_OPENGL_ES_API, 2);
+#elif defined(WITH_GL_PROFILE_COMPAT)
+		GHOST_Context* context = new GHOST_ContextEGL(m_hWnd, m_hDC, EGL_OPENGL_API);
 #else
 #error
 #endif

Modified: branches/soc-2013-viewport_fx/source/blender/blenfont/intern/blf_glyph.c
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/blenfont/intern/blf_glyph.c	2013-07-31 13:48:12 UTC (rev 58765)
+++ branches/soc-2013-viewport_fx/source/blender/blenfont/intern/blf_glyph.c	2013-07-31 13:56:46 UTC (rev 58766)
@@ -199,7 +199,7 @@
 
 #if defined(WITH_GL_PROFILE_CORE)
 	glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, gc->p2_width, gc->p2_height, 0, GL_RED, GL_UNSIGNED_BYTE, buf);
-#elif defined(WITH_GL_PROFILE_COMPAT || WITH_GL_PROFILE_ES20)
+#elif defined(WITH_GL_PROFILE_COMPAT) || defined(WITH_GL_PROFILE_ES20)
 	glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, gc->p2_width, gc->p2_height, 0, GL_ALPHA, GL_UNSIGNED_BYTE, buf);
 #endif
 

Modified: branches/soc-2013-viewport_fx/source/blender/editors/space_view3d/drawarmature.c
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/editors/space_view3d/drawarmature.c	2013-07-31 13:48:12 UTC (rev 58765)
+++ branches/soc-2013-viewport_fx/source/blender/editors/space_view3d/drawarmature.c	2013-07-31 13:56:46 UTC (rev 58766)
@@ -424,7 +424,7 @@
 
 		index = gpuNewIndex();
 		gpuImmediateIndex(index);
-		gpuImmediateMaxIndexCount(index_count, GL_UNSIGNED_SHORT);
+		gpuImmediateMaxIndexCount(index_count, GL_UNSIGNED_INT); // XXX jwilkins: telling the type here is too early
 
 		gpuSingleClientRangeElements_V3F(
 			GL_LINE_LOOP,
@@ -458,7 +458,7 @@
 
 		index = gpuNewIndex();
 		gpuImmediateIndex(index);
-		gpuImmediateMaxIndexCount(index_count, GL_UNSIGNED_SHORT);
+		gpuImmediateMaxIndexCount(index_count, GL_UNSIGNED_INT);// XXX jwilkins: telling the type here is too early
 
 		gpuSingleClientRangeElements_N3F_V3F(
 			GL_TRIANGLES,

Modified: branches/soc-2013-viewport_fx/source/blender/gpu/GPU_object.h
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/gpu/GPU_object.h	2013-07-31 13:48:12 UTC (rev 58765)
+++ branches/soc-2013-viewport_fx/source/blender/gpu/GPU_object.h	2013-07-31 13:56:46 UTC (rev 58766)
@@ -29,6 +29,10 @@
  *  \ingroup gpu
  */
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct GPU_object_func
 {
 	void (*gpuVertexPointer)  (int size, int type, int stride, const void *pointer);
@@ -47,10 +51,6 @@
 
 
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 extern GPU_object_func gpugameobj;
 
 void GPU_init_object_func(void);

Modified: branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_extension_wrapper.c
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_extension_wrapper.c	2013-07-31 13:48:12 UTC (rev 58765)
+++ branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_extension_wrapper.c	2013-07-31 13:56:46 UTC (rev 58766)
@@ -204,6 +204,7 @@
 	if (GLEW_VERSION_1_5 || GLEW_ES_VERSION_2_0) {
 		gpu_glBindBuffer    = glBindBuffer;
 		gpu_glBufferData    = glBufferData;
+		gpu_glBufferSubData = glBufferSubData;
 		gpu_glDeleteBuffers = glDeleteBuffers;
 		gpu_glGenBuffers    = glGenBuffers;
 
@@ -214,6 +215,7 @@
 	if (GLEW_ARB_vertex_buffer_object) {
 		gpu_glBindBuffer    = glBindBufferARB;
 		gpu_glBufferData    = glBufferDataARB;
+		gpu_glBufferSubData = glBufferSubDataARB;
 		gpu_glDeleteBuffers = glDeleteBuffersARB;
 		gpu_glGenBuffers    = glGenBuffersARB;
 
@@ -336,77 +338,79 @@
 	}
 }
 
-static void* GLAPIENTRY GPU_buffer_start_update_client(GLenum target, GLsizeiptr size, GLvoid* data, GLenum usage)
+static void* GPU_buffer_start_update_dummy(GLenum UNUSED(target), void* data)
 {
+	GPU_ASSERT(data != NULL);
 	return data;
 }
 
-static void* GLAPIENTRY GPU_buffer_start_update_buffer(GLenum target, GLsizeiptr size, GLvoid* data, GLenum usage)
+static void* GPU_buffer_start_update_copy(GLenum UNUSED(target), void* data)
 {
-GPU_CHECK_NO_ERROR();
-	gpu_glBufferData(target, 0, NULL, usage);
-GPU_CHECK_NO_ERROR();
+	GPU_ASSERT(data != NULL);
 	return data;
 }
 
-static void* GLAPIENTRY GPU_buffer_start_update_map(GLenum target, GLsizeiptr size, GLvoid* data, GLenum usage)
+static void* GPU_buffer_start_update_map(GLenum target, void* UNUSED(data))
 {
-	void* mapped;
-GPU_CHECK_NO_ERROR();
-	gpu_glBufferData(target, size, NULL, usage);
-GPU_CHECK_NO_ERROR();
-	mapped = gpu_glMapBuffer(target, GL_WRITE_ONLY);
-GPU_CHECK_NO_ERROR();
-GPU_ASSERT(mapped != NULL);
-	return mapped;
+	void* mappedData;
+	GPU_ASSERT(UNUSED_data == NULL);
+	mappedData = gpu_glMapBuffer(target, GL_WRITE_ONLY);
+	GPU_CHECK_NO_ERROR();
+	return mappedData;
 }
 
-static const void* GLAPIENTRY GPU_buffer_finish_update_client(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
+static void GPU_buffer_finish_update_dummy(GLenum UNUSED(target), GLsizeiptr UNUSED(dataSize), const GLvoid* UNUSED(data))
 {
-	return data;
+	GPU_ASSERT(UNUSED_data != NULL);
 }
 
-static const void* GLAPIENTRY GPU_buffer_finish_update_buffer(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
+static void GPU_buffer_finish_update_copy(GLenum target, GLsizeiptr dataSize, const GLvoid* data)
 {
-GPU_CHECK_NO_ERROR();
-	gpu_glBufferData(target, size, data, usage);
-GPU_CHECK_NO_ERROR();
-	return NULL;
+	GPU_ASSERT(data != NULL);
+	gpu_glBufferSubData(target, 0, dataSize, data);
+	GPU_CHECK_NO_ERROR();
 }
 
-static const void* GLAPIENTRY GPU_buffer_finish_update_map(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list