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

Pica/VertexShader: Fix a bug in the call stack handling.

Tony Wasserka 12 лет назад
Родитель
Сommit
697b50c3ff
1 измененных файлов с 3 добавлено и 2 удалено
  1. 3 2
      src/video_core/vertex_shader.cpp

+ 3 - 2
src/video_core/vertex_shader.cpp

@@ -191,8 +191,9 @@ static void ProcessShaderCode(VertexShaderState& state) {
                 if (*state.call_stack_pointer == VertexShaderState::INVALID_ADDRESS) {
                 if (*state.call_stack_pointer == VertexShaderState::INVALID_ADDRESS) {
                     exit_loop = true;
                     exit_loop = true;
                 } else {
                 } else {
-                    state.program_counter = &shader_memory[*state.call_stack_pointer--];
-                    *state.call_stack_pointer = VertexShaderState::INVALID_ADDRESS;
+                    // Jump back to call stack position, invalidate call stack entry, move up call stack pointer
+                    state.program_counter = &shader_memory[*state.call_stack_pointer];
+                    *state.call_stack_pointer-- = VertexShaderState::INVALID_ADDRESS;
                 }
                 }
 
 
                 break;
                 break;