diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-06-15 16:58:48 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-06-15 17:28:09 +0300 |
commit | 2e25a48b05004112344b04cd56760709eebfc1a4 (patch) | |
tree | 53d9bd7e2a411d05ef40c82bce58b9021afb0311 /intern | |
parent | b84fad2ba3920f3e337dc9084a30f1ea38f39fc2 (diff) |
Fix more Cycles CUDA errors after recent changes.
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/kernel/kernel_color.h | 10 | ||||
-rw-r--r-- | intern/cycles/kernel/kernel_types.h | 10 | ||||
-rw-r--r-- | intern/cycles/render/shader.cpp | 8 |
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) |