diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2016-08-09 02:00:57 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2016-08-09 02:31:07 +0300 |
commit | 040fa75d7b9d796d2818d731934caf77e4288b7f (patch) | |
tree | d1389961025eb2a51081d3e7f4784d3efbd0fa30 /intern/cycles/kernel/kernel_types.h | |
parent | d1b9306cd5a04f149c748880e907c2375e01f4a5 (diff) |
Fix Cycles CUDA adaptive kernel not working correctly after recent closure changes.
Diffstat (limited to 'intern/cycles/kernel/kernel_types.h')
-rw-r--r-- | intern/cycles/kernel/kernel_types.h | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h index 3923804ec96..f3b10c21b9d 100644 --- a/intern/cycles/kernel/kernel_types.h +++ b/intern/cycles/kernel/kernel_types.h @@ -656,23 +656,18 @@ typedef struct AttributeDescriptor { * ShaderClosure has a fixed size, and any extra space must be allocated * with closure_alloc_extra(). * - * float3 is 12 bytes on CUDA and 16 bytes on CPU/OpenCL, we set the data - * size to ensure ShaderClosure is 80 bytes total everywhere. */ + * We pad the struct to 80 bytes and ensure it is aligned to 16 bytes, which + * we assume to be the maximum required alignment for any struct. */ #define SHADER_CLOSURE_BASE \ float3 weight; \ ClosureType type; \ float sample_weight \ -typedef ccl_addr_space struct ShaderClosure { +typedef ccl_addr_space struct ccl_align(16) ShaderClosure { SHADER_CLOSURE_BASE; - /* pad to 80 bytes, data types are aligned to own size */ -#ifdef __KERNEL_CUDA__ - float data[15]; -#else - float data[14]; -#endif + float data[14]; /* pad to 80 bytes */ } ShaderClosure; /* Shader Context |