diff options
author | Rodolfo Bogado <rodolfoosvaldobogado@gmail.com> | 2018-12-12 23:02:37 +0100 |
---|---|---|
committer | Rodolfo Bogado <rodolfoosvaldobogado@gmail.com> | 2018-12-26 22:16:31 +0100 |
commit | 33056dd8336b4e61d839408f71ba5a92f849dd77 (patch) | |
tree | 886508be69eaac4d5070f8a0d9132a07e04f80ee /src/video_core/renderer_opengl/gl_shader_decompiler.cpp | |
parent | Includde saturation in the evaluation of the control code (diff) | |
download | yuzu-33056dd8336b4e61d839408f71ba5a92f849dd77.tar yuzu-33056dd8336b4e61d839408f71ba5a92f849dd77.tar.gz yuzu-33056dd8336b4e61d839408f71ba5a92f849dd77.tar.bz2 yuzu-33056dd8336b4e61d839408f71ba5a92f849dd77.tar.lz yuzu-33056dd8336b4e61d839408f71ba5a92f849dd77.tar.xz yuzu-33056dd8336b4e61d839408f71ba5a92f849dd77.tar.zst yuzu-33056dd8336b4e61d839408f71ba5a92f849dd77.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index c7812d377..3640d2b89 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp @@ -410,16 +410,17 @@ public: * @param dest_num_components Number of components in the destination. * @param value_num_components Number of components in the value. * @param is_saturated Optional, when True, saturates the provided value. + * @param sets_cc Optional, when True, sets the corresponding values to the implemented + * condition flags. * @param dest_elem Optional, the destination element to use for the operation. */ void SetRegisterToFloat(const Register& reg, u64 elem, const std::string& value, u64 dest_num_components, u64 value_num_components, bool is_saturated = false, bool sets_cc = false, u64 dest_elem = 0, bool precise = false) { - const const std::string clamped_value = - is_saturated ? "clamp(" + value + ", 0.0, 1.0)" : value; - SetRegister(reg, elem, clamped_value, - dest_num_components, value_num_components, dest_elem, precise); + const std::string clamped_value = is_saturated ? "clamp(" + value + ", 0.0, 1.0)" : value; + SetRegister(reg, elem, clamped_value, dest_num_components, value_num_components, dest_elem, + precise); if (sets_cc) { if (reg == Register::ZeroIndex) { SetConditionalCodesFromExpression(clamped_value); @@ -437,6 +438,8 @@ public: * @param dest_num_components Number of components in the destination. * @param value_num_components Number of components in the value. * @param is_saturated Optional, when True, saturates the provided value. + * @param sets_cc Optional, when True, sets the corresponding values to the implemented + * condition flags. * @param dest_elem Optional, the destination element to use for the operation. * @param size Register size to use for conversion instructions. */ @@ -446,15 +449,15 @@ public: bool sets_cc = false, u64 dest_elem = 0, Register::Size size = Register::Size::Word) { UNIMPLEMENTED_IF(is_saturated); - + const std::string final_value = ConvertIntegerSize(value, size); const std::string func{is_signed ? "intBitsToFloat" : "uintBitsToFloat"}; - SetRegister(reg, elem, func + '(' + ConvertIntegerSize(value, size) + ')', - dest_num_components, value_num_components, dest_elem, false); + SetRegister(reg, elem, func + '(' + final_value + ')', dest_num_components, + value_num_components, dest_elem, false); if (sets_cc) { if (reg == Register::ZeroIndex) { - SetConditionalCodesFromExpression(value); + SetConditionalCodesFromExpression(final_value); } else { SetConditionalCodesFromRegister(reg, dest_elem); } @@ -1629,7 +1632,7 @@ private: if (process_mode != Tegra::Shader::TextureProcessMode::None && gl_lod_supported) { if (process_mode == Tegra::Shader::TextureProcessMode::LZ) { texture += ", 0.0"; - } else { + } else { // If present, lod or bias are always stored in the register indexed by the // gpr20 // field with an offset depending on the usage of the other registers |