diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-04-20 15:42:04 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-04-20 15:42:19 +0300 |
commit | e50d2292733b8d50437a9848fc82ee0715f6dec0 (patch) | |
tree | 2d83881db9bad7c4005b7e9630142b6a5c23fab2 /intern/cycles/device/device_cuda.cpp | |
parent | b9d9d93ff9631a8a982822c24c8ab6898950dd1c (diff) |
Fix T47794: Point density sometime seems stretched when rendered on GPU
Diffstat (limited to 'intern/cycles/device/device_cuda.cpp')
-rw-r--r-- | intern/cycles/device/device_cuda.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/intern/cycles/device/device_cuda.cpp b/intern/cycles/device/device_cuda.cpp index 22365bbdbc3..f1a17d652da 100644 --- a/intern/cycles/device/device_cuda.cpp +++ b/intern/cycles/device/device_cuda.cpp @@ -606,22 +606,27 @@ public: cuda_assert(cuTexRefSetFlags(texref, CU_TRSF_READ_AS_INTEGER)); } + CUaddress_mode address_mode = CU_TR_ADDRESS_MODE_WRAP; switch(extension) { case EXTENSION_REPEAT: - cuda_assert(cuTexRefSetAddressMode(texref, 0, CU_TR_ADDRESS_MODE_WRAP)); - cuda_assert(cuTexRefSetAddressMode(texref, 1, CU_TR_ADDRESS_MODE_WRAP)); + address_mode = CU_TR_ADDRESS_MODE_WRAP; break; case EXTENSION_EXTEND: - cuda_assert(cuTexRefSetAddressMode(texref, 0, CU_TR_ADDRESS_MODE_CLAMP)); - cuda_assert(cuTexRefSetAddressMode(texref, 1, CU_TR_ADDRESS_MODE_CLAMP)); + address_mode = CU_TR_ADDRESS_MODE_CLAMP; break; case EXTENSION_CLIP: - cuda_assert(cuTexRefSetAddressMode(texref, 0, CU_TR_ADDRESS_MODE_BORDER)); - cuda_assert(cuTexRefSetAddressMode(texref, 1, CU_TR_ADDRESS_MODE_BORDER)); + address_mode = CU_TR_ADDRESS_MODE_BORDER; break; default: assert(0); + break; + } + cuda_assert(cuTexRefSetAddressMode(texref, 0, address_mode)); + cuda_assert(cuTexRefSetAddressMode(texref, 1, address_mode)); + if(mem.data_depth > 1) { + cuda_assert(cuTexRefSetAddressMode(texref, 2, address_mode)); } + cuda_assert(cuTexRefSetFormat(texref, format, mem.data_elements)); cuda_pop_context(); |