diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2012-02-28 09:00:28 +0400 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2012-02-28 09:00:28 +0400 |
commit | 87ddcab93346250c94cef9b9c6ec2811b596b552 (patch) | |
tree | 5257442ebdd3bfd3f8704cade363b112f3cbe864 /source/blender/gpu/intern | |
parent | 79fbd39aab6e945ba4a1c7b55b8e65f463538cf9 (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/intern')
-rw-r--r-- | source/blender/gpu/intern/gpu_buffers.c | 5 |
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); } } } |