diff options
| -rw-r--r-- | src/shader_recompiler/frontend/maxwell/translate/impl/move_special_register.cpp | 3 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 13 | 
2 files changed, 15 insertions, 1 deletions
| diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/move_special_register.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/move_special_register.cpp index 753c62098..e593132e6 100644 --- a/src/shader_recompiler/frontend/maxwell/translate/impl/move_special_register.cpp +++ b/src/shader_recompiler/frontend/maxwell/translate/impl/move_special_register.cpp @@ -161,7 +161,8 @@ enum class SpecialRegister : u64 {          LOG_WARNING(Shader, "(STUBBED) SR_AFFINITY");          return ir.Imm32(0); // This is the default value hardware returns.      default: -        throw NotImplementedException("S2R special register {}", special_register); +        LOG_CRITICAL(Shader, "(STUBBED) Special register {}", special_register); +        return ir.Imm32(0); // This is the default value hardware returns.      }  }  } // Anonymous namespace diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index c1314ca99..b1730a170 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -664,6 +664,19 @@ std::unique_ptr<GraphicsPipeline> PipelineCache::CreateGraphicsPipeline(          std::move(modules), infos);  } catch (const Shader::Exception& exception) { +    auto hash = key.Hash(); +    size_t env_index{0}; +    for (size_t index = 0; index < Maxwell::MaxShaderProgram; ++index) { +        if (key.unique_hashes[index] == 0) { +            continue; +        } +        Shader::Environment& env{*envs[env_index]}; +        ++env_index; + +        const u32 cfg_offset{static_cast<u32>(env.StartAddress() + sizeof(Shader::ProgramHeader))}; +        Shader::Maxwell::Flow::CFG cfg(env, pools.flow_block, cfg_offset, index == 0); +        env.Dump(hash, key.unique_hashes[index]); +    }      LOG_ERROR(Render_Vulkan, "{}", exception.what());      return nullptr;  } | 
