RGB32F texture sampling fix A cl recently introduced the XRB32F internal format, but while it fixed some cases where this format is used as a rendertarget, it seems to have caused regressions in sampling. A new case has been added in the sampling code to handle this new format properly. Change-Id: I7aa537a410d7b68c47771a72dec487e4b4c4e8be Reviewed-on: https://swiftshader-review.googlesource.com/5147 Tested-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Shader/SamplerCore.cpp b/src/Shader/SamplerCore.cpp index 4f8943a..a6f0715 100644 --- a/src/Shader/SamplerCore.cpp +++ b/src/Shader/SamplerCore.cpp
@@ -1950,6 +1950,15 @@ c.w = *Pointer<Float4>(buffer[f3] + index[3] * 16, 16); transpose4x4(c.x, c.y, c.z, c.w); break; + case 3: + ASSERT(state.textureFormat == FORMAT_X32B32G32R32F); + c.x = *Pointer<Float4>(buffer[f0] + index[0] * 16, 16); + c.y = *Pointer<Float4>(buffer[f1] + index[1] * 16, 16); + c.z = *Pointer<Float4>(buffer[f2] + index[2] * 16, 16); + c.w = *Pointer<Float4>(buffer[f3] + index[3] * 16, 16); + transpose4x3(c.x, c.y, c.z, c.w); + c.w = Float4(1.0f); + break; case 2: // FIXME: Optimal shuffling? c.x.xy = *Pointer<Float4>(buffer[f0] + index[0] * 8);