[Bf-blender-cvs] [b350e51] temp_viewport_fx_merge: More API changes, get rid of indexBufferDataGLSL (we can reuse vertex streams effectively here)

Antony Riakiotakis noreply at git.blender.org
Wed Apr 1 14:24:14 CEST 2015


Commit: b350e51f532bf002bd80307a4d3aad645445a46c
Author: Antony Riakiotakis
Date:   Wed Apr 1 14:24:07 2015 +0200
Branches: temp_viewport_fx_merge
https://developer.blender.org/rBb350e51f532bf002bd80307a4d3aad645445a46c

More API changes, get rid of indexBufferDataGLSL (we can reuse vertex
streams effectively here)

===================================================================

M	source/blender/gpu/intern/gpu_immediate.c

===================================================================

diff --git a/source/blender/gpu/intern/gpu_immediate.c b/source/blender/gpu/intern/gpu_immediate.c
index 019d87e..b32ee01 100644
--- a/source/blender/gpu/intern/gpu_immediate.c
+++ b/source/blender/gpu/intern/gpu_immediate.c
@@ -458,16 +458,6 @@ static void unsetup(void)
 			glDisableVertexAttribArray(GPU_IMMEDIATE->format.attribIndexMap_ub[i]);
 }
 
-
-
-typedef struct indexBufferDataGLSL {
-	GLuint   vbo;
-	GLintptr unalignedPtr;
-	GLubyte *unmappedBuffer;
-	GLubyte *mappedBuffer;
-	size_t   size;
-} indexBufferDataGLSL;
-
 static void allocateIndex(void)
 {
 	if (GPU_IMMEDIATE->index) {
@@ -696,8 +686,10 @@ void gpu_end_buffer_gl(void)
 				printf("Too big GL_QUAD object to draw. Vertices: %i", GPU_IMMEDIATE->count);
 			}
 
-			if (vqeoc_buf != 0 || vqeos_buf != 0)
-				glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ((indexBufferDataGLSL*)(GPU_IMMEDIATE->index->element_stream))->vbo);
+			if (vqeoc_buf != 0 || vqeos_buf != 0) {
+				GPUVertexStream *element_stream = (GPUVertexStream*)(GPU_IMMEDIATE->index->element_stream);
+				element_stream->bind(element_stream);
+			}
 
 			GPU_ASSERT_NO_GL_ERRORS("gpu_end_buffer_gl end");
 		}
@@ -777,7 +769,8 @@ void gpu_index_end_buffer_gl(void)
 void gpu_draw_elements_gl(void)
 {
 	GPUindex *index = GPU_IMMEDIATE->index;
-	indexBufferDataGLSL *bufferData = (indexBufferDataGLSL*)(index->element_stream);
+	GPUVertexStream *element_stream = (GPUVertexStream*)index->element_stream;
+	void *base = element_stream->bind(element_stream);
 
 	GPU_ASSERT_NO_GL_ERRORS("gpu_draw_elements_gl start");;
 
@@ -793,9 +786,10 @@ void gpu_draw_elements_gl(void)
 		GPU_IMMEDIATE->mode,
 		index->count,
 		index->type,
-		bufferData->vbo != 0 ? NULL : bufferData->unmappedBuffer);
+		base);
 
 	unsetup();
+	element_stream->unbind(element_stream);
 
 	GPU_ASSERT_NO_GL_ERRORS("gpu_draw_elements_gl end");
 }
@@ -803,7 +797,8 @@ void gpu_draw_elements_gl(void)
 void gpu_draw_range_elements_gl(void)
 {
 	GPUindex *index = GPU_IMMEDIATE->index;
-	indexBufferDataGLSL *bufferData = (indexBufferDataGLSL*)(index->element_stream);
+	GPUVertexStream *element_stream = (GPUVertexStream*)index->element_stream;
+	void *base = element_stream->bind(element_stream);
 
 	GPU_ASSERT_NO_GL_ERRORS("gpu_draw_range_elements_gl start");;
 
@@ -822,7 +817,7 @@ void gpu_draw_range_elements_gl(void)
 		index->indexMax,
 		index->count,
 		index->type,
-		bufferData->vbo != 0 ? NULL : bufferData->unmappedBuffer);
+		base);
 #else
 	glDrawElements(
 		GPU_IMMEDIATE->mode,
@@ -832,6 +827,7 @@ void gpu_draw_range_elements_gl(void)
 #endif
 
 	unsetup();
+	element_stream->unbind(element_stream);
 
 	GPU_ASSERT_NO_GL_ERRORS("gpu_draw_range_elements_gl end");;
 }




More information about the Bf-blender-cvs mailing list