diff options
| author | Stenzek <stenzek@gmail.com> | 2016-03-06 18:31:46 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2016-05-08 12:08:25 +1000 |
| commit | 0c27aae7d3af2a5d5c60dae0f9dc70eb6ccfecbb (patch) | |
| tree | 8a2f00e8fdfea3d3a2026bbd96c12f7bb16e736d /Source/Core/VideoBackends | |
| parent | acfa93372ec58faac05f9ed7c8ac0d6ed5ad403e (diff) | |
D3D12: Improve output of shader compiler errors
These were completely broken due to lack of c_str(). We also output
warnings now as well (these can be useful).
Diffstat (limited to 'Source/Core/VideoBackends')
| -rw-r--r-- | Source/Core/VideoBackends/D3D12/D3DShader.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/Source/Core/VideoBackends/D3D12/D3DShader.cpp b/Source/Core/VideoBackends/D3D12/D3DShader.cpp index 1b0eae1681..d99a02c5ac 100644 --- a/Source/Core/VideoBackends/D3D12/D3DShader.cpp +++ b/Source/Core/VideoBackends/D3D12/D3DShader.cpp @@ -19,7 +19,7 @@ namespace DX12 namespace D3D { -bool CompileShader(const std::string& code, ID3DBlob** blob, const D3D_SHADER_MACRO* defines, std::string shader_version_string) +bool CompileShader(const std::string& code, ID3DBlob** blob, const D3D_SHADER_MACRO* defines, const std::string& shader_version_string) { ID3D10Blob* shader_buffer = nullptr; ID3D10Blob* error_buffer = nullptr; @@ -34,21 +34,26 @@ bool CompileShader(const std::string& code, ID3DBlob** blob, const D3D_SHADER_MA if (error_buffer) { - INFO_LOG(VIDEO, "Shader compiler messages:\n%s\n", + WARN_LOG(VIDEO, "Warning generated when compiling %s shader:\n%s\n", + shader_version_string.c_str(), static_cast<const char*>(error_buffer->GetBufferPointer())); } if (FAILED(hr)) { static int num_failures = 0; - std::string filename = StringFromFormat("%sbad_%s_%04i.txt", File::GetUserPath(D_DUMP_IDX).c_str(), shader_version_string, num_failures++); + std::string filename = StringFromFormat("%sbad_%s_%04i.txt", File::GetUserPath(D_DUMP_IDX).c_str(), shader_version_string.c_str(), num_failures++); std::ofstream file; OpenFStream(file, filename, std::ios_base::out); file << code; + file << std::endl << "Errors:" << std::endl; + file << static_cast<const char*>(error_buffer->GetBufferPointer()); file.close(); PanicAlert("Failed to compile shader: %s\nDebug info (%s):\n%s", - filename.c_str(), shader_version_string, static_cast<const char*>(error_buffer->GetBufferPointer())); + filename.c_str(), + shader_version_string.c_str(), + static_cast<const char*>(error_buffer->GetBufferPointer())); *blob = nullptr; error_buffer->Release(); |
