[Bf-blender-cvs] [37182c369aa] blender-v2.83-release: GPU: Set Default Buffer Size Immediate Mode

Jeroen Bakker noreply at git.blender.org
Mon May 4 16:03:18 CEST 2020


Commit: 37182c369aa64eda8cb287a1e7dc857c8f58906f
Author: Jeroen Bakker
Date:   Mon May 4 16:00:47 2020 +0200
Branches: blender-v2.83-release
https://developer.blender.org/rB37182c369aa64eda8cb287a1e7dc857c8f58906f

GPU: Set Default Buffer Size Immediate Mode

We set the default buffer size for strict buffers to 0. This increased
the performance on intel but reduced the performance on old AMD cards.
This patch sets back the default buffer size for strict buffers. After
testing I didn't detect a slow-down anymore.

Note that today new firmwares were pushed to the device what might fix
some issues.

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

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 2d093dacdce..7bcb0a7a552 100644
--- a/source/blender/gpu/intern/gpu_immediate.c
+++ b/source/blender/gpu/intern/gpu_immediate.c
@@ -48,7 +48,6 @@ typedef struct ImmediateDrawBuffer {
   GLubyte *buffer_data;
   uint buffer_offset;
   uint buffer_size;
-  uint default_size;
 } ImmediateDrawBuffer;
 
 typedef struct {
@@ -96,12 +95,10 @@ void immInit(void)
 
   imm.draw_buffer.vbo_id = GPU_buf_alloc();
   imm.draw_buffer.buffer_size = DEFAULT_INTERNAL_BUFFER_SIZE;
-  imm.draw_buffer.default_size = DEFAULT_INTERNAL_BUFFER_SIZE;
   glBindBuffer(GL_ARRAY_BUFFER, imm.draw_buffer.vbo_id);
   glBufferData(GL_ARRAY_BUFFER, imm.draw_buffer.buffer_size, NULL, GL_DYNAMIC_DRAW);
   imm.draw_buffer_strict.vbo_id = GPU_buf_alloc();
-  imm.draw_buffer_strict.buffer_size = 0;
-  imm.draw_buffer_strict.default_size = 0;
+  imm.draw_buffer_strict.buffer_size = DEFAULT_INTERNAL_BUFFER_SIZE;
   glBindBuffer(GL_ARRAY_BUFFER, imm.draw_buffer_strict.vbo_id);
   glBufferData(GL_ARRAY_BUFFER, imm.draw_buffer_strict.buffer_size, NULL, GL_DYNAMIC_DRAW);
 
@@ -251,10 +248,10 @@ void immBegin(GPUPrimType prim_type, uint vertex_len)
     active_buffer->buffer_size = bytes_needed;
     recreate_buffer = true;
   }
-  else if (bytes_needed < active_buffer->default_size &&
-           active_buffer->buffer_size > active_buffer->default_size) {
+  else if (bytes_needed < DEFAULT_INTERNAL_BUFFER_SIZE &&
+           active_buffer->buffer_size > DEFAULT_INTERNAL_BUFFER_SIZE) {
     /* shrink the internal buffer */
-    active_buffer->buffer_size = active_buffer->default_size;
+    active_buffer->buffer_size = DEFAULT_INTERNAL_BUFFER_SIZE;
     recreate_buffer = true;
   }



More information about the Bf-blender-cvs mailing list