diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-04-09 23:41:41 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-04-16 02:16:10 +0200 |
commit | 64613db6052dfe0c056ce3d6ead21ae9a32f03ae (patch) | |
tree | 9fa4a632c8fc050b6176ebbca727c27757f95662 /src/video_core/shader/shader_ir.cpp | |
parent | shader_ir/decode: Reduce severity of unimplemented half-float FTZ (diff) | |
download | yuzu-64613db6052dfe0c056ce3d6ead21ae9a32f03ae.tar yuzu-64613db6052dfe0c056ce3d6ead21ae9a32f03ae.tar.gz yuzu-64613db6052dfe0c056ce3d6ead21ae9a32f03ae.tar.bz2 yuzu-64613db6052dfe0c056ce3d6ead21ae9a32f03ae.tar.lz yuzu-64613db6052dfe0c056ce3d6ead21ae9a32f03ae.tar.xz yuzu-64613db6052dfe0c056ce3d6ead21ae9a32f03ae.tar.zst yuzu-64613db6052dfe0c056ce3d6ead21ae9a32f03ae.zip |
Diffstat (limited to 'src/video_core/shader/shader_ir.cpp')
-rw-r--r-- | src/video_core/shader/shader_ir.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/video_core/shader/shader_ir.cpp b/src/video_core/shader/shader_ir.cpp index 5c1c591f8..d158b4bfd 100644 --- a/src/video_core/shader/shader_ir.cpp +++ b/src/video_core/shader/shader_ir.cpp @@ -218,6 +218,15 @@ Node ShaderIR::GetOperandAbsNegHalf(Node value, bool absolute, bool negate) { return value; } +Node ShaderIR::GetSaturatedHalfFloat(Node value, bool saturate) { + if (!saturate) { + return value; + } + const Node positive_zero = Immediate(std::copysignf(0, 1)); + const Node positive_one = Immediate(1.0f); + return Operation(OperationCode::HClamp, HALF_NO_PRECISE, value, positive_zero, positive_one); +} + Node ShaderIR::GetPredicateComparisonFloat(PredCondition condition, Node op_a, Node op_b) { const std::unordered_map<PredCondition, OperationCode> PredicateComparisonTable = { {PredCondition::LessThan, OperationCode::LogicalFLessThan}, |