From 74d950ed714ce79bb71e81f72465db8605009ee9 Mon Sep 17 00:00:00 2001 From: John Whigham Date: Wed, 21 Nov 2018 14:33:55 +0000 Subject: [PATCH] Replaced use of rcp() and rsqrt() functions with non-approximating reciprocal and reciprocal-sqrt as the approximating versions produce subtly different results on different CPU architectures causing non-deterministic output (Intel Xeon vs. AMD Ryzen was observed to differ) --- ISPC Texture Compressor/ispc_texcomp/kernel.ispc | 10 +++++----- ISPC Texture Compressor/ispc_texcomp/kernel_astc.ispc | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ISPC Texture Compressor/ispc_texcomp/kernel.ispc b/ISPC Texture Compressor/ispc_texcomp/kernel.ispc index 2385dfb..904f72a 100644 --- a/ISPC Texture Compressor/ispc_texcomp/kernel.ispc +++ b/ISPC Texture Compressor/ispc_texcomp/kernel.ispc @@ -195,7 +195,7 @@ inline void compute_axis3(float axis[3], float covar[6], uniform const int power for (uniform int p=0; p<3; p++) norm_sq += axis[p]*axis[p]; - float rnorm = rsqrt(norm_sq); + float rnorm = 1.0f / sqrt(norm_sq); // Note: Replaced the original rsqrt() function as it produces subtly different results on different architectures causing non-deterministic output (Intel vs. AMD Ryzen was observed to differ) for (uniform int p=0; p<3; p++) vec[p] *= rnorm; } } @@ -219,7 +219,7 @@ inline void compute_axis(float axis[4], float covar[10], uniform const int power for (uniform int p=0; p