Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <jeroen@blender.org>2020-05-04 17:00:47 +0300
committerJeroen Bakker <jeroen@blender.org>2020-05-04 17:00:47 +0300
commit37182c369aa64eda8cb287a1e7dc857c8f58906f (patch)
treef19c0c3fbd66b9273c6d58a4d71bd75595efe5db /source/blender/gpu
parent079fc65e0a306ff4bfc7d03a121d164ab67d0cb3 (diff)
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.
Diffstat (limited to 'source/blender/gpu')
-rw-r--r--source/blender/gpu/intern/gpu_immediate.c11
1 files changed, 4 insertions, 7 deletions
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;
}