diff options
author | Huw Pascoe <huw.pascoe@gmail.com> | 2017-09-17 15:42:45 +0100 |
---|---|---|
committer | Huw Pascoe <huw.pascoe@gmail.com> | 2017-09-17 15:56:36 +0100 |
commit | a234e4c2009b08039d0698cbbcc8595a1f04a615 (patch) | |
tree | d36bdada9d659281efc206f26bfb03615e68c238 /src/video_core/shader/shader.cpp | |
parent | 255fd8768d48f12cbbb18601f54dbc5c344407fb (diff) |
Improved performance of FromAttributeBuffer
Ternary operator is optimized by the compiler
whereas std::min() is meant to return a value.
I've noticed a 5%-10% emulation speed increase.
Diffstat (limited to 'src/video_core/shader/shader.cpp')
-rw-r--r-- | src/video_core/shader/shader.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/video_core/shader/shader.cpp b/src/video_core/shader/shader.cpp index e9063e6164..2857d28297 100644 --- a/src/video_core/shader/shader.cpp +++ b/src/video_core/shader/shader.cpp @@ -52,7 +52,8 @@ OutputVertex OutputVertex::FromAttributeBuffer(const RasterizerRegs& regs, // The hardware takes the absolute and saturates vertex colors like this, *before* doing // interpolation for (unsigned i = 0; i < 4; ++i) { - ret.color[i] = float24::FromFloat32(std::fmin(std::fabs(ret.color[i].ToFloat32()), 1.0f)); + float c = std::fabs(ret.color[i].ToFloat32()); + ret.color[i] = float24::FromFloat32(c < 1.0f ? c : 1.0f); } LOG_TRACE(HW_GPU, "Output vertex: pos(%.2f, %.2f, %.2f, %.2f), quat(%.2f, %.2f, %.2f, %.2f), " |