diff options
author | Sv. Lockal <lockalsash@gmail.com> | 2014-01-06 19:53:38 +0400 |
---|---|---|
committer | Sv. Lockal <lockalsash@gmail.com> | 2014-01-06 20:03:30 +0400 |
commit | 96903508bc3faec99bac8007e344016698630aae (patch) | |
tree | 1f7faea7cf8735ecc55d7049b939233fcbb0e8e0 /intern/cycles/kernel/svm/svm_image.h | |
parent | e0a4a4afc31e101bac6238ac4e0785935610a862 (diff) |
Cycles: SSE optimization for sRGB conversion (gives 7% speedup on CPU for pavillon_barcelone scene)
Thanks brecht/dingto/juicyfruit et al. for testing and reviewing this patch in T38034.
Diffstat (limited to 'intern/cycles/kernel/svm/svm_image.h')
-rw-r--r-- | intern/cycles/kernel/svm/svm_image.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/intern/cycles/kernel/svm/svm_image.h b/intern/cycles/kernel/svm/svm_image.h index 58e5775265a..45a2a8b802c 100644 --- a/intern/cycles/kernel/svm/svm_image.h +++ b/intern/cycles/kernel/svm/svm_image.h @@ -247,9 +247,16 @@ ccl_device float4 svm_image_texture(KernelGlobals *kg, int id, float x, float y, } if(srgb) { +#ifdef __KERNEL_SSE2__ + float alpha = r.w; + __m128 *rv = (__m128 *)&r; + *rv = color_srgb_to_scene_linear(*rv); + r.w = alpha; +#else r.x = color_srgb_to_scene_linear(r.x); r.y = color_srgb_to_scene_linear(r.y); r.z = color_srgb_to_scene_linear(r.z); +#endif } return r; |