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
diff options
context:
space:
mode:
authorSv. Lockal <lockalsash@gmail.com>2014-01-06 19:53:38 +0400
committerSv. Lockal <lockalsash@gmail.com>2014-01-06 20:03:30 +0400
commit96903508bc3faec99bac8007e344016698630aae (patch)
tree1f7faea7cf8735ecc55d7049b939233fcbb0e8e0 /intern/cycles/kernel/svm/svm_image.h
parente0a4a4afc31e101bac6238ac4e0785935610a862 (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.h7
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;