Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-06-15 16:58:48 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-06-15 17:28:09 +0300
commit2e25a48b05004112344b04cd56760709eebfc1a4 (patch)
tree53d9bd7e2a411d05ef40c82bce58b9021afb0311 /intern
parentb84fad2ba3920f3e337dc9084a30f1ea38f39fc2 (diff)
Fix more Cycles CUDA errors after recent changes.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/kernel/kernel_color.h10
-rw-r--r--intern/cycles/kernel/kernel_types.h10
-rw-r--r--intern/cycles/render/shader.cpp8
3 files changed, 15 insertions, 13 deletions
diff --git a/intern/cycles/kernel/kernel_color.h b/intern/cycles/kernel/kernel_color.h
index d1c3dac824d..990e798543a 100644
--- a/intern/cycles/kernel/kernel_color.h
+++ b/intern/cycles/kernel/kernel_color.h
@@ -23,16 +23,16 @@ CCL_NAMESPACE_BEGIN
ccl_device float3 xyz_to_rgb(KernelGlobals *kg, float3 xyz)
{
- return make_float3(dot(kernel_data.film.xyz_to_r, xyz),
- dot(kernel_data.film.xyz_to_g, xyz),
- dot(kernel_data.film.xyz_to_b, xyz));
+ return make_float3(dot(float4_to_float3(kernel_data.film.xyz_to_r), xyz),
+ dot(float4_to_float3(kernel_data.film.xyz_to_g), xyz),
+ dot(float4_to_float3(kernel_data.film.xyz_to_b), xyz));
}
ccl_device float linear_rgb_to_gray(KernelGlobals *kg, float3 c)
{
- return dot(c, kernel_data.film.rgb_to_y);
+ return dot(c, float4_to_float3(kernel_data.film.rgb_to_y));
}
CCL_NAMESPACE_END
-#endif /* __KERNEL_COLOR_H__ */ \ No newline at end of file
+#endif /* __KERNEL_COLOR_H__ */
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h
index e8cbd330184..8df7c369799 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -1274,10 +1274,12 @@ typedef struct KernelFilm {
int pad1, pad2, pad3;
- float3 xyz_to_r;
- float3 xyz_to_g;
- float3 xyz_to_b;
- float3 rgb_to_y;
+ /* XYZ to rendering color space transform. float4 instead of float3 to
+ * ensure consistent padding/alignment across devices. */
+ float4 xyz_to_r;
+ float4 xyz_to_g;
+ float4 xyz_to_b;
+ float4 rgb_to_y;
#ifdef __KERNEL_DEBUG__
int pass_bvh_traversed_nodes;
diff --git a/intern/cycles/render/shader.cpp b/intern/cycles/render/shader.cpp
index e34f272d9b6..46e7d1b1d7b 100644
--- a/intern/cycles/render/shader.cpp
+++ b/intern/cycles/render/shader.cpp
@@ -561,10 +561,10 @@ void ShaderManager::device_update_common(Device *device,
/* film */
KernelFilm *kfilm = &dscene->data.film;
/* color space, needs to be here because e.g. displacement shaders could depend on it */
- kfilm->xyz_to_r = xyz_to_r;
- kfilm->xyz_to_g = xyz_to_g;
- kfilm->xyz_to_b = xyz_to_b;
- kfilm->rgb_to_y = rgb_to_y;
+ kfilm->xyz_to_r = float3_to_float4(xyz_to_r);
+ kfilm->xyz_to_g = float3_to_float4(xyz_to_g);
+ kfilm->xyz_to_b = float3_to_float4(xyz_to_b);
+ kfilm->rgb_to_y = float3_to_float4(rgb_to_y);
}
void ShaderManager::device_free_common(Device *, DeviceScene *dscene, Scene *scene)