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");;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to