Răsfoiți Sursa

shader_decode: SULD.D -> SINT actually same as UNORM.

namkazy 6 ani în urmă
părinte
comite
9f6ebccf06
1 a modificat fișierele cu 4 adăugiri și 5 ștergeri
  1. 4 5
      src/video_core/shader/decode/image.cpp

+ 4 - 5
src/video_core/shader/decode/image.cpp

@@ -352,11 +352,13 @@ u32 ShaderIR::DecodeImage(NodeBlock& bb, u32 pc) {
                         case ComponentType::SNORM: {
                             is_signed = true;
                             // range [-1.0, 1.0]
-                            auto cnv_value = Operation(OperationCode::FMul, original_value, Immediate(127.f));
+                            auto cnv_value =
+                                Operation(OperationCode::FMul, original_value, Immediate(127.f));
                             cnv_value = SignedOperation(OperationCode::ICastFloat, is_signed,
-                                                      std::move(cnv_value));
+                                                        std::move(cnv_value));
                             return BitfieldExtract(std::move(cnv_value), 0, 8);
                         }
+                        case ComponentType::SINT:
                         case ComponentType::UNORM: {
                             is_signed = false;
                             // range [0.0, 1.0]
@@ -365,9 +367,6 @@ u32 ShaderIR::DecodeImage(NodeBlock& bb, u32 pc) {
                             return SignedOperation(OperationCode::ICastFloat, is_signed,
                                                    std::move(cnv_value));
                         }
-                        case ComponentType::SINT: // range [-128,127]
-                            is_signed = true;
-                            return original_value;
                         case ComponentType::UINT: // range [0, 255]
                             is_signed = false;
                             return original_value;