diff --git a/intern/cycles/render/geometry.cpp b/intern/cycles/render/geometry.cpp index 39681ef3d66..0304f168187 100644 --- a/intern/cycles/render/geometry.cpp +++ b/intern/cycles/render/geometry.cpp @@ -1800,6 +1800,9 @@ void GeometryManager::device_update(Device *device, size_t num_bvh = 0; { + /* Copy constant data needed by shader evaluation. */ + device->const_copy_to("__data", &dscene->data, sizeof(dscene->data)); + scoped_callback_timer timer([scene](double time) { if (scene->update_stats) { scene->update_stats->geometry.times.add_entry({"device_update (displacement)", time}); diff --git a/intern/cycles/render/mesh_displace.cpp b/intern/cycles/render/mesh_displace.cpp index bf8a4585907..a08874e6fa8 100644 --- a/intern/cycles/render/mesh_displace.cpp +++ b/intern/cycles/render/mesh_displace.cpp @@ -191,9 +191,6 @@ bool GeometryManager::displace( } } - /* Needs to be up to data for attribute access. */ - device->const_copy_to("__data", &dscene->data, sizeof(dscene->data)); - /* Evaluate shader on device. */ ShaderEval shader_eval(device, progress); if (!shader_eval.eval(SHADER_EVAL_DISPLACE,