[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56333] trunk/blender/intern/cycles/render : Fix #35102: crash with experimental cycles displacement feature due to
Brecht Van Lommel
brechtvanlommel at pandora.be
Sat Apr 27 04:54:27 CEST 2013
Revision: 56333
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56333
Author: blendix
Date: 2013-04-27 02:54:24 +0000 (Sat, 27 Apr 2013)
Log Message:
-----------
Fix #35102: crash with experimental cycles displacement feature due to
uninitialized memory usage.
Modified Paths:
--------------
trunk/blender/intern/cycles/render/mesh.cpp
trunk/blender/intern/cycles/render/mesh.h
trunk/blender/intern/cycles/render/mesh_displace.cpp
Modified: trunk/blender/intern/cycles/render/mesh.cpp
===================================================================
--- trunk/blender/intern/cycles/render/mesh.cpp 2013-04-27 01:16:38 UTC (rev 56332)
+++ trunk/blender/intern/cycles/render/mesh.cpp 2013-04-27 02:54:24 UTC (rev 56333)
@@ -889,7 +889,7 @@
bool displacement_done = false;
foreach(Mesh *mesh, scene->meshes)
- if(mesh->need_update && displace(device, scene, mesh, progress))
+ if(mesh->need_update && displace(device, dscene, scene, mesh, progress))
displacement_done = true;
/* todo: properly handle cancel halfway displacement */
Modified: trunk/blender/intern/cycles/render/mesh.h
===================================================================
--- trunk/blender/intern/cycles/render/mesh.h 2013-04-27 01:16:38 UTC (rev 56332)
+++ trunk/blender/intern/cycles/render/mesh.h 2013-04-27 02:54:24 UTC (rev 56333)
@@ -140,7 +140,7 @@
MeshManager();
~MeshManager();
- bool displace(Device *device, Scene *scene, Mesh *mesh, Progress& progress);
+ bool displace(Device *device, DeviceScene *dscene, Scene *scene, Mesh *mesh, Progress& progress);
/* attributes */
void update_osl_attributes(Device *device, Scene *scene, vector<AttributeRequestSet>& mesh_attributes);
Modified: trunk/blender/intern/cycles/render/mesh_displace.cpp
===================================================================
--- trunk/blender/intern/cycles/render/mesh_displace.cpp 2013-04-27 01:16:38 UTC (rev 56332)
+++ trunk/blender/intern/cycles/render/mesh_displace.cpp 2013-04-27 02:54:24 UTC (rev 56333)
@@ -28,7 +28,7 @@
CCL_NAMESPACE_BEGIN
-bool MeshManager::displace(Device *device, Scene *scene, Mesh *mesh, Progress& progress)
+bool MeshManager::displace(Device *device, DeviceScene *dscene, Scene *scene, Mesh *mesh, Progress& progress)
{
/* verify if we have a displacement shader */
bool has_displacement = false;
@@ -106,6 +106,9 @@
device_vector<float4> d_output;
d_output.resize(d_input_size);
+ /* needs to be up to data for attribute access */
+ device->const_copy_to("__data", &dscene->data, sizeof(dscene->data));
+
device->mem_alloc(d_input, MEM_READ_ONLY);
device->mem_copy_to(d_input);
device->mem_alloc(d_output, MEM_WRITE_ONLY);
More information about the Bf-blender-cvs
mailing list