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:
authorNicholas Bishop <nicholasbishop@gmail.com>2012-02-28 09:00:28 +0400
committerNicholas Bishop <nicholasbishop@gmail.com>2012-02-28 09:00:28 +0400
commit87ddcab93346250c94cef9b9c6ec2811b596b552 (patch)
tree5257442ebdd3bfd3f8704cade363b112f3cbe864 /source/blender/gpu
parent79fbd39aab6e945ba4a1c7b55b8e65f463538cf9 (diff)
Bugfix: avoid reading from an OpenGL buffer mapped write-only.
When set to solid-shading, GPU_update_grid_buffers was calling normal_quad_v3 to output into a mapped buffer, but normal_quad_v3 reads as well as writes. This fix actually makes a huge performance difference with my drivers (Gallium/Radeon).
Diffstat (limited to 'source/blender/gpu')
-rw-r--r--source/blender/gpu/intern/gpu_buffers.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c
index ff269e2050f..00e34b41faf 100644
--- a/source/blender/gpu/intern/gpu_buffers.c
+++ b/source/blender/gpu/intern/gpu_buffers.c
@@ -1427,11 +1427,14 @@ void GPU_update_grid_buffers(GPU_Buffers *buffers, DMGridData **grids,
that is what opengl will use */
for(j = 0; j < gridsize-1; ++j) {
for(k = 0; k < gridsize-1; ++k) {
- normal_quad_v3(vert_data[(j+1)*gridsize + (k+1)].no,
+ float fno[3];
+ normal_quad_v3(fno,
grid[(j+1)*gridsize + k].co,
grid[(j+1)*gridsize + k+1].co,
grid[j*gridsize + k+1].co,
grid[j*gridsize + k].co);
+
+ copy_v3_v3(vert_data[(j+1)*gridsize + (k+1)].no, fno);
}
}
}