[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