1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-03-13 19:29:14 +01:00

[d3d11] Added shader module creation log

This commit is contained in:
Philip Rebohle 2018-01-12 00:06:54 +01:00
parent a0fafe3043
commit 3fc064f434
2 changed files with 14 additions and 23 deletions

View File

@ -12,51 +12,42 @@ namespace dxvk {
D3D11Device* pDevice,
const void* pShaderBytecode,
size_t BytecodeLength) {
DxbcReader reader(
reinterpret_cast<const char*>(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) {

View File

@ -37,6 +37,7 @@ namespace dxvk {
private:
std::string m_name;
Rc<DxvkShader> m_shader;
Sha1Hash ComputeShaderHash(