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

gl_shader_decompiler: Check if SetRegister result is ZeroIndex.

bunnei 8 лет назад
Родитель
Сommit
81aa02424b
1 измененных файлов с 6 добавлено и 0 удалено
  1. 6 0
      src/video_core/renderer_opengl/gl_shader_decompiler.cpp

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

@@ -485,6 +485,12 @@ private:
      */
      */
     void SetRegister(const Register& reg, u64 elem, const std::string& value,
     void SetRegister(const Register& reg, u64 elem, const std::string& value,
                      u64 dest_num_components, u64 value_num_components, u64 dest_elem) {
                      u64 dest_num_components, u64 value_num_components, u64 dest_elem) {
+        if (reg == Register::ZeroIndex) {
+            LOG_CRITICAL(HW_GPU, "Cannot set Register::ZeroIndex");
+            UNREACHABLE();
+            return;
+        }
+
         std::string dest = GetRegister(reg, static_cast<u32>(dest_elem));
         std::string dest = GetRegister(reg, static_cast<u32>(dest_elem));
         if (dest_num_components > 1) {
         if (dest_num_components > 1) {
             dest += GetSwizzle(elem);
             dest += GetSwizzle(elem);