diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-05-19 10:31:37 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-05-19 10:42:07 +0300 |
commit | da34136de1093e7da9bc10881d11e2f553f4d8d0 (patch) | |
tree | 55baa34238e4c34a00852d798541cd06d530b792 | |
parent | f868be62950c06ad348d8326f9cbd6d6c285bfcb (diff) |
Cycles: Check for validity of the tiles arrays in progressive refine
In certain configurations (for example when start resolution is set to small
value for background render and progressive refine enabled) number of tiles
might change in the tile manager. This situation will confuse progressive
refine feature and likely cause crash.
We might also add some settings verification in the session constructor, but
having an assert with brief explanation about what's wrong should already be
much better than nothing.
-rw-r--r-- | intern/cycles/render/session.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp index 275de4d15d8..b880a62f4de 100644 --- a/intern/cycles/render/session.cpp +++ b/intern/cycles/render/session.cpp @@ -409,6 +409,11 @@ bool Session::acquire_tile(Device *tile_device, RenderTile& rtile) if(tile_buffers.size() == 0) tile_buffers.resize(tile_manager.state.num_tiles, NULL); + /* In certain circumstances number of tiles in the tile manager could + * be changed. This is not supported by the progressive refine feature. + */ + assert(tile_buffers.size() == tile_manager.state.num_tiles); + tilebuffers = tile_buffers[tile.index]; if(tilebuffers == NULL) { tilebuffers = new RenderBuffers(tile_device); |