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:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-11-05 12:05:24 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-11-05 12:05:24 +0400
commit540c9d420853668ab6c3a3d402108d2f43abd2c5 (patch)
tree4a4f924934e692ce7e98670d11973dd9d8a45245 /intern
parent759ea4078782ace683a3e835166b7f324c8e3224 (diff)
Cycles: fix crash rendering textured objects in OpenCL
Issue was caused by changed order of texture slots -- float textures have got lower slots indices than byte textures. OpenCL was still assuming byte textures goes before float.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/kernel/kernel_types.h2
-rw-r--r--intern/cycles/kernel/svm/svm_image.h6
-rw-r--r--intern/cycles/render/image.h3
3 files changed, 10 insertions, 1 deletions
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h
index 930fffa3f40..98d998351a7 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -36,6 +36,8 @@ CCL_NAMESPACE_BEGIN
#define PARTICLE_SIZE 5
#define TIME_INVALID FLT_MAX
+#define TEX_NUM_FLOAT_IMAGES 5
+
/* device capabilities */
#ifdef __KERNEL_CPU__
#define __KERNEL_SHADING__
diff --git a/intern/cycles/kernel/svm/svm_image.h b/intern/cycles/kernel/svm/svm_image.h
index 9877856fec2..0894c9c8290 100644
--- a/intern/cycles/kernel/svm/svm_image.h
+++ b/intern/cycles/kernel/svm/svm_image.h
@@ -52,6 +52,12 @@ __device_inline float svm_image_texture_frac(float x, int *ix)
__device float4 svm_image_texture(KernelGlobals *kg, int id, float x, float y, uint srgb)
{
+ /* first slots are used by float textures, which are not supported here */
+ if(id < TEX_NUM_FLOAT_IMAGES)
+ return make_float4(1.0f, 0.0f, 1.0f, 1.0f);
+
+ id -= TEX_NUM_FLOAT_IMAGES;
+
uint4 info = kernel_tex_fetch(__tex_image_packed_info, id);
uint width = info.x;
uint height = info.y;
diff --git a/intern/cycles/render/image.h b/intern/cycles/render/image.h
index 8fb229282dc..485bfc5cbf5 100644
--- a/intern/cycles/render/image.h
+++ b/intern/cycles/render/image.h
@@ -25,9 +25,10 @@
#include "util_thread.h"
#include "util_vector.h"
+#include "kernel_types.h" /* for TEX_NUM_FLOAT_IMAGES */
+
CCL_NAMESPACE_BEGIN
-#define TEX_NUM_FLOAT_IMAGES 5
#define TEX_NUM_IMAGES 95
#define TEX_IMAGE_BYTE_START TEX_NUM_FLOAT_IMAGES