diff --git a/src/d3d11/d3d11_shader.cpp b/src/d3d11/d3d11_shader.cpp index 1c7f2aee..4e6a5901 100644 --- a/src/d3d11/d3d11_shader.cpp +++ b/src/d3d11/d3d11_shader.cpp @@ -12,51 +12,42 @@ namespace dxvk { D3D11Device* pDevice, const void* pShaderBytecode, size_t BytecodeLength) { - DxbcReader reader( reinterpret_cast(pShaderBytecode), BytecodeLength); DxbcModule module(reader); + // Construct the shader name that we'll use for + // debug messages and as the dump/read file name + m_name = ConstructFileName( + ComputeShaderHash(pShaderBytecode, BytecodeLength), + module.version().type()); + + Logger::debug(str::format("Compiling shader ", m_name)); + // If requested by the user, dump both the raw DXBC // shader and the compiled SPIR-V module to a file. - const std::string dumpPath - = env::getEnvVar(L"DXVK_SHADER_DUMP_PATH"); + const std::string dumpPath = env::getEnvVar(L"DXVK_SHADER_DUMP_PATH"); + const std::string readPath = env::getEnvVar(L"DXVK_SHADER_READ_PATH"); if (dumpPath.size() != 0) { - const std::string baseName = str::format(dumpPath, "/", - ConstructFileName(ComputeShaderHash(pShaderBytecode, BytecodeLength), - module.version().type())); - - reader.store(std::ofstream(str::format(baseName, ".dxbc"), + reader.store(std::ofstream(str::format(dumpPath, "/", m_name, ".dxbc"), std::ios_base::binary | std::ios_base::trunc)); } - m_shader = module.compile(*pDxbcOptions); if (dumpPath.size() != 0) { - const std::string baseName = str::format(dumpPath, "/", - ConstructFileName(ComputeShaderHash(pShaderBytecode, BytecodeLength), - module.version().type())); - - m_shader->dump(std::ofstream(str::format(baseName, ".spv"), + m_shader->dump(std::ofstream(str::format(dumpPath, "/", m_name, ".spv"), std::ios_base::binary | std::ios_base::trunc)); } // If requested by the user, replace // the shader with another file. - const std::string readPath - = env::getEnvVar(L"DXVK_SHADER_READ_PATH"); - if (readPath.size() != 0) { - const std::string baseName = str::format(readPath, "/", - ConstructFileName(ComputeShaderHash(pShaderBytecode, BytecodeLength), - module.version().type())); - m_shader->read(std::ifstream( - str::format(baseName, ".spv"), + str::format(readPath, "/", m_name, ".spv"), std::ios_base::binary)); } } @@ -74,7 +65,6 @@ namespace dxvk { std::string D3D11ShaderModule::ConstructFileName( const Sha1Hash& hash, const DxbcProgramType& type) const { - std::string typeStr; switch (type) { diff --git a/src/d3d11/d3d11_shader.h b/src/d3d11/d3d11_shader.h index 65ca3107..77701346 100644 --- a/src/d3d11/d3d11_shader.h +++ b/src/d3d11/d3d11_shader.h @@ -37,6 +37,7 @@ namespace dxvk { private: + std::string m_name; Rc m_shader; Sha1Hash ComputeShaderHash(