Просмотр исходного кода

Merge pull request #3646 from ReinUsesLisp/fix-glsl-turing

gl_shader_decompiler: Improve generated code in HMergeH*
Mat M 6 лет назад
Родитель
Сommit
d37d899431
1 измененных файлов с 6 добавлено и 6 удалено
  1. 6 6
      src/video_core/renderer_opengl/gl_shader_decompiler.cpp

+ 6 - 6
src/video_core/renderer_opengl/gl_shader_decompiler.cpp

@@ -1819,15 +1819,15 @@ private:
     }
 
     Expression HMergeH0(Operation operation) {
-        std::string dest = VisitOperand(operation, 0).AsUint();
-        std::string src = VisitOperand(operation, 1).AsUint();
-        return {fmt::format("(({} & 0x0000FFFFU) | ({} & 0xFFFF0000U))", src, dest), Type::Uint};
+        const std::string dest = VisitOperand(operation, 0).AsUint();
+        const std::string src = VisitOperand(operation, 1).AsUint();
+        return {fmt::format("bitfieldInsert({}, {}, 0, 16)", dest, src), Type::Uint};
     }
 
     Expression HMergeH1(Operation operation) {
-        std::string dest = VisitOperand(operation, 0).AsUint();
-        std::string src = VisitOperand(operation, 1).AsUint();
-        return {fmt::format("(({} & 0x0000FFFFU) | ({} & 0xFFFF0000U))", dest, src), Type::Uint};
+        const std::string dest = VisitOperand(operation, 0).AsUint();
+        const std::string src = VisitOperand(operation, 1).AsUint();
+        return {fmt::format("bitfieldInsert({}, {}, 16, 16)", dest, src), Type::Uint};
     }
 
     Expression HPack2(Operation operation) {