summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2016-03-06 18:31:46 +1000
committerStenzek <stenzek@gmail.com>2016-05-08 12:08:25 +1000
commit0c27aae7d3af2a5d5c60dae0f9dc70eb6ccfecbb (patch)
tree8a2f00e8fdfea3d3a2026bbd96c12f7bb16e736d /Source/Core/VideoBackends
parentacfa93372ec58faac05f9ed7c8ac0d6ed5ad403e (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.cpp13
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();