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

vertex_shader: Use address offset on src2 in inverted mode.

bunnei 11 лет назад
Родитель
Сommit
1574c44586
1 измененных файлов с 3 добавлено и 3 удалено
  1. 3 3
      src/video_core/vertex_shader.cpp

+ 3 - 3
src/video_core/vertex_shader.cpp

@@ -119,13 +119,13 @@ static void ProcessShaderCode(VertexShaderState& state) {
         switch (instr.opcode.Value().GetInfo().type) {
         switch (instr.opcode.Value().GetInfo().type) {
         case OpCode::Type::Arithmetic:
         case OpCode::Type::Arithmetic:
         {
         {
-            bool is_inverted = 0 != (instr.opcode.Value().GetInfo().subtype & OpCode::Info::SrcInversed);
+            const bool is_inverted = (0 != (instr.opcode.Value().GetInfo().subtype & OpCode::Info::SrcInversed));
 
 
             const int address_offset = (instr.common.address_register_index == 0)
             const int address_offset = (instr.common.address_register_index == 0)
                                        ? 0 : state.address_registers[instr.common.address_register_index - 1];
                                        ? 0 : state.address_registers[instr.common.address_register_index - 1];
 
 
-            const float24* src1_ = LookupSourceRegister(instr.common.GetSrc1(is_inverted) + address_offset);
-            const float24* src2_ = LookupSourceRegister(instr.common.GetSrc2(is_inverted));
+            const float24* src1_ = LookupSourceRegister(instr.common.GetSrc1(is_inverted) + (!is_inverted * address_offset));
+            const float24* src2_ = LookupSourceRegister(instr.common.GetSrc2(is_inverted) + ( is_inverted * address_offset));
 
 
             const bool negate_src1 = ((bool)swizzle.negate_src1 != false);
             const bool negate_src1 = ((bool)swizzle.negate_src1 != false);
             const bool negate_src2 = ((bool)swizzle.negate_src2 != false);
             const bool negate_src2 = ((bool)swizzle.negate_src2 != false);