Cycles: Fix possible race condition when generating Beckmann table
authorSergey Sharybin <sergey.vfx@gmail.com>
Fri, 6 Oct 2017 16:06:15 +0000 (21:06 +0500)
committerSergey Sharybin <sergey.vfx@gmail.com>
Fri, 6 Oct 2017 16:06:15 +0000 (21:06 +0500)
commit83ce02879f7c6733adc098d00a01963fc4212abd
tree8c8323120eb8ece9d06cffa66b0fdf0f3c5c0c3c
parent837383ac78da601a8e6bd909987169993e44f75a
Cycles: Fix possible race condition when generating Beckmann table

Two issues here:

- Checking table size to be non-zero is not a proper way to go here. This is
  because we first resize the table and then fill it in. So it was possible that
  non-initialized table was used.

  Trickery with using temporary memory and then doing table.swap() might work,
  but we can not guarantee that table size will be set after the data pointer.

- Mutex guard was useless, because every thread was using own mutex. Need to
  make mutex guard static so all threads are using same mutex.
intern/cycles/render/shader.cpp
intern/cycles/render/shader.h