[Bf-blender-cvs] [2f61341] temp_viewport_fx_merge: Move element indices to vertex stream code.

Antony Riakiotakis noreply at git.blender.org
Wed Mar 18 20:16:20 CET 2015


Commit: 2f61341bfcf348ce187c78795f8fdf156b7e28f6
Author: Antony Riakiotakis
Date:   Wed Mar 18 20:16:06 2015 +0100
Branches: temp_viewport_fx_merge
https://developer.blender.org/rB2f61341bfcf348ce187c78795f8fdf156b7e28f6

Move element indices to vertex stream code.

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

M	source/blender/gpu/GPU_immediate.h
M	source/blender/gpu/intern/gpu_aspect.c
M	source/blender/gpu/intern/gpu_immediate.c

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

diff --git a/source/blender/gpu/GPU_immediate.h b/source/blender/gpu/GPU_immediate.h
index d335584..99abd43 100644
--- a/source/blender/gpu/GPU_immediate.h
+++ b/source/blender/gpu/GPU_immediate.h
@@ -306,7 +306,7 @@ extern const GPUarrays GPU_ARRAYS_C3F_N3F_V3F;
 typedef struct GPUindex {
 	struct GPUimmediate *immediate;
 
-	void   *bufferData;
+	void   *element_stream;
 	void   *mappedBuffer;
 	GLsizei maxIndexCount;
 	GLsizei count;
diff --git a/source/blender/gpu/intern/gpu_aspect.c b/source/blender/gpu/intern/gpu_aspect.c
index 9fb1d30..c049ff7 100644
--- a/source/blender/gpu/intern/gpu_aspect.c
+++ b/source/blender/gpu/intern/gpu_aspect.c
@@ -194,7 +194,7 @@ bool GPU_aspect_end(void)
 	void*          param;
 
 	BLI_assert(gpu_aspect_active());
-	BLI_assert(in_select_mode == gpu_is_select_mode()); /* not allowed to change select/render mode while an aspect is active */
+//	BLI_assert(in_select_mode == gpu_is_select_mode()); /* not allowed to change select/render mode while an aspect is active */
 
 	aspectImpl = GPU_ASPECT_FUNCS[current_aspect];
 
diff --git a/source/blender/gpu/intern/gpu_immediate.c b/source/blender/gpu/intern/gpu_immediate.c
index cc0415d..69c7fdb 100644
--- a/source/blender/gpu/intern/gpu_immediate.c
+++ b/source/blender/gpu/intern/gpu_immediate.c
@@ -447,8 +447,8 @@ static void allocateIndex(void)
 				return;
 		}
 
-		if (index->bufferData) {
-			indexBufferDataGLSL* bufferData = (indexBufferDataGLSL*)(index->bufferData);
+		if (index->element_stream) {
+			indexBufferDataGLSL* bufferData = (indexBufferDataGLSL*)(index->element_stream);
 
 			if (bufferData->vbo != 0)
 				glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, bufferData->vbo);
@@ -482,7 +482,7 @@ static void allocateIndex(void)
 
 			bufferData->size = newSize;
 
-			index->bufferData = bufferData;
+			index->element_stream = bufferData;
 		}
 
 		GPU_ASSERT_NO_GL_ERRORS("allocateIndex end");
@@ -674,7 +674,7 @@ void gpu_end_buffer_gl(void)
 			}
 
 			if (vqeoc_buf != 0 || vqeos_buf != 0)
-				glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ((indexBufferDataGLSL*)(GPU_IMMEDIATE->index->bufferData))->vbo);
+				glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ((indexBufferDataGLSL*)(GPU_IMMEDIATE->index->element_stream))->vbo);
 
 			GPU_ASSERT_NO_GL_ERRORS("gpu_end_buffer_gl end");
 		}
@@ -700,16 +700,10 @@ void gpu_unlock_buffer_gl(void)
 
 void gpu_index_shutdown_buffer_gl(GPUindex *index)
 {
-	if (index && index->bufferData) {
-		indexBufferDataGLSL* bufferData = (indexBufferDataGLSL*)(index->bufferData);
+	if (index && index->element_stream) {
+		GPUVertexStream* stream = (GPUVertexStream*)(index->element_stream);
 
-		if (bufferData->vbo != 0)
-			glDeleteBuffers(1, &(bufferData->vbo));
-
-		if (bufferData->unalignedPtr != 0)
-			MEM_freeN((GLubyte*)(bufferData->unalignedPtr));
-
-		MEM_freeN(index->bufferData);
+		stream->free(stream);
 	}
 }
 
@@ -733,12 +727,9 @@ void gpu_shutdown_buffer_gl(GPUimmediate *immediate)
 void gpu_index_begin_buffer_gl(void)
 {
 	GPUindex *  index      = GPU_IMMEDIATE->index;
-	indexBufferDataGLSL* bufferData = (indexBufferDataGLSL*)(index->bufferData);
+	GPUVertexStream* stream = (GPUVertexStream *)(index->element_stream);
 
-	bufferData->mappedBuffer =
-		(GLubyte*)gpu_buffer_start_update(GL_ELEMENT_ARRAY_BUFFER, bufferData->unmappedBuffer);
-
-	index->mappedBuffer = bufferData->mappedBuffer;
+	index->mappedBuffer = stream->map(stream);
 }
 
 
@@ -746,11 +737,10 @@ void gpu_index_begin_buffer_gl(void)
 void gpu_index_end_buffer_gl(void)
 {
 	GPUindex *index = GPU_IMMEDIATE->index;
-	indexBufferDataGLSL* bufferData = (indexBufferDataGLSL*)(index->bufferData);
+	GPUVertexStream* stream = (GPUVertexStream*)(index->element_stream);
 
-	gpu_buffer_finish_update(GL_ELEMENT_ARRAY_BUFFER, index->offset, bufferData->mappedBuffer);
+	stream->unmap(stream);
 
-	bufferData->mappedBuffer = NULL;
 	index->mappedBuffer = NULL;
 }
 
@@ -759,7 +749,7 @@ void gpu_index_end_buffer_gl(void)
 void gpu_draw_elements_gl(void)
 {
 	GPUindex* index = GPU_IMMEDIATE->index;
-	indexBufferDataGLSL* bufferData = (indexBufferDataGLSL*)(index->bufferData);
+	indexBufferDataGLSL* bufferData = (indexBufferDataGLSL*)(index->element_stream);
 
 	GPU_ASSERT_NO_GL_ERRORS("gpu_draw_elements_gl start");;
 
@@ -785,7 +775,7 @@ void gpu_draw_elements_gl(void)
 void gpu_draw_range_elements_gl(void)
 {
 	GPUindex* index = GPU_IMMEDIATE->index;
-	indexBufferDataGLSL* bufferData = (indexBufferDataGLSL*)(index->bufferData);
+	indexBufferDataGLSL* bufferData = (indexBufferDataGLSL*)(index->element_stream);
 
 	GPU_ASSERT_NO_GL_ERRORS("gpu_draw_range_elements_gl start");;




More information about the Bf-blender-cvs mailing list