diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-10-25 16:03:36 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-10-25 16:03:36 +0400 |
commit | 2505984b52862a4aa74af37e41d6ebdccc3c266f (patch) | |
tree | 627455fb175b67070c7684e6161c13f59b22e817 /intern/cycles/render/tile.cpp | |
parent | 4f812f6b21fa033bf0f56519b0e1ea5a42fb1362 (diff) |
Cycles: use simplier strategy in next_tile for viewport rendering
No need to find tile closest to rendered center in this case, just
return first possible tile. Saves some computation power.
Diffstat (limited to 'intern/cycles/render/tile.cpp')
-rw-r--r-- | intern/cycles/render/tile.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/intern/cycles/render/tile.cpp b/intern/cycles/render/tile.cpp index 9928186a12f..c294239bac0 100644 --- a/intern/cycles/render/tile.cpp +++ b/intern/cycles/render/tile.cpp @@ -214,11 +214,28 @@ list<Tile>::iterator TileManager::next_center_tile(int device) return best; } +list<Tile>::iterator TileManager::next_simple_tile(int device) +{ + list<Tile>::iterator iter; + + int logical_device = preserve_tile_device? device: 0; + + for(iter = state.tiles.begin(); iter != state.tiles.end(); iter++) { + if(iter->device == logical_device && iter->rendering == false) + return iter; + } + + return state.tiles.end(); +} + bool TileManager::next_tile(Tile& tile, int device) { list<Tile>::iterator tile_it; - tile_it = next_center_tile(device); + if(background) + tile_it = next_center_tile(device); + else + tile_it = next_simple_tile(device); if(tile_it != state.tiles.end()) { tile_it->rendering = true; |