Enhance shader debug output
glGetTranslatedShaderSourceANGLE() returns the glsl code, the initial translated hlsl code,
the final translated hlsl code and the disassembly of the generated binary with the compiler configuration.
This enhancement is only available if the define ANGLE_GENERATE_SHADER_DEBUG_INFO exists.
This define is set in the debug configurations for the Windows platform.
BUG=angle:751
Change-Id: I8b15e8b25fbb0c0575a73cc876bf8f1fa7ed142a
Reviewed-on: https://chromium-review.googlesource.com/221059
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libGLESv2/renderer/d3d/ProgramD3D.cpp b/src/libGLESv2/renderer/d3d/ProgramD3D.cpp
index 7dd70ed..681c330 100644
--- a/src/libGLESv2/renderer/d3d/ProgramD3D.cpp
+++ b/src/libGLESv2/renderer/d3d/ProgramD3D.cpp
@@ -534,6 +534,27 @@
}
}
+#ifdef ANGLE_GENERATE_SHADER_DEBUG_INFO
+ if (usesGeometryShader() && mGeometryExecutable)
+ {
+ // Geometry shaders are currently only used internally, so there is no corresponding shader object at the interface level
+ // For now the geometry shader debug info is pre-pended to the vertex shader, this is a bit of a clutch
+ vertexShaderD3D->appendDebugInfo("// GEOMETRY SHADER BEGIN\n\n");
+ vertexShaderD3D->appendDebugInfo(mGeometryExecutable->getDebugInfo());
+ vertexShaderD3D->appendDebugInfo("\nGEOMETRY SHADER END\n\n\n");
+ }
+
+ if (defaultVertexExecutable)
+ {
+ vertexShaderD3D->appendDebugInfo(defaultVertexExecutable->getDebugInfo());
+ }
+
+ if (defaultPixelExecutable)
+ {
+ fragmentShaderD3D->appendDebugInfo(defaultPixelExecutable->getDebugInfo());
+ }
+#endif
+
bool linkSuccess = (defaultVertexExecutable && defaultPixelExecutable && (!usesGeometryShader() || mGeometryExecutable));
return gl::LinkResult(linkSuccess, gl::Error(GL_NO_ERROR));
}