summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/glsl/reg_alloc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend/glsl/reg_alloc.cpp')
-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) {
25} 25}
26 26
27std::string FormatFloat(std::string_view value, IR::Type type) { 27std::string FormatFloat(std::string_view value, IR::Type type) {
28 // TODO: Confirm FP64 nan/inf
29 if (type == IR::Type::F32) {
30 if (value == "nan") {
31 return "uintBitsToFloat(0x7fc00000)";
32 }
33 if (value == "inf") {
34 return "uintBitsToFloat(0x7f800000)";
35 }
36 if (value == "-inf") {
37 return "uintBitsToFloat(0xff800000)";
38 }
39 }
28 const bool needs_dot = value.find_first_of('.') == std::string_view::npos; 40 const bool needs_dot = value.find_first_of('.') == std::string_view::npos;
29 const bool needs_suffix = !value.ends_with('f'); 41 const bool needs_suffix = !value.ends_with('f');
30 const auto suffix = type == IR::Type::F32 ? "f" : "lf"; 42 const auto suffix = type == IR::Type::F32 ? "f" : "lf";