summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/backend/glsl/reg_alloc.cpp
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2021-05-24 06:55:39 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:36 +0200
commitdf793fc0493a67ca2838ba816232da8409d03c8a (patch)
tree826775d0642001231c28c0233674ee2cc5ee817a /src/shader_recompiler/backend/glsl/reg_alloc.cpp
parentglsl: Add a more robust fp formatter (diff)
downloadyuzu-df793fc0493a67ca2838ba816232da8409d03c8a.tar
yuzu-df793fc0493a67ca2838ba816232da8409d03c8a.tar.gz
yuzu-df793fc0493a67ca2838ba816232da8409d03c8a.tar.bz2
yuzu-df793fc0493a67ca2838ba816232da8409d03c8a.tar.lz
yuzu-df793fc0493a67ca2838ba816232da8409d03c8a.tar.xz
yuzu-df793fc0493a67ca2838ba816232da8409d03c8a.tar.zst
yuzu-df793fc0493a67ca2838ba816232da8409d03c8a.zip
Diffstat (limited to '')
-rw-r--r--src/shader_recompiler/backend/glsl/reg_alloc.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/shader_recompiler/backend/glsl/reg_alloc.cpp b/src/shader_recompiler/backend/glsl/reg_alloc.cpp
index 007f8c89d..9f529c358 100644
--- a/src/shader_recompiler/backend/glsl/reg_alloc.cpp
+++ b/src/shader_recompiler/backend/glsl/reg_alloc.cpp
@@ -25,6 +25,18 @@ std::string Representation(Id id) {
}
std::string FormatFloat(std::string_view value, IR::Type type) {
+ // TODO: Confirm FP64 nan/inf
+ if (type == IR::Type::F32) {
+ if (value == "nan") {
+ return "uintBitsToFloat(0x7fc00000)";
+ }
+ if (value == "inf") {
+ return "uintBitsToFloat(0x7f800000)";
+ }
+ if (value == "-inf") {
+ return "uintBitsToFloat(0xff800000)";
+ }
+ }
const bool needs_dot = value.find_first_of('.') == std::string_view::npos;
const bool needs_suffix = !value.ends_with('f');
const auto suffix = type == IR::Type::F32 ? "f" : "lf";