Make ProgramImpl::compileProgramExecutables D3D-only.
Finally we can isolate this method into the D3D-only code, and
remove the interface from ProgramImpl.
BUG=angleproject:1123
Change-Id: I253b15d44d4cf8bbb5dbeaa78bbcc431a5267bf7
Reviewed-on: https://chromium-review.googlesource.com/293765
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/d3d/ProgramD3D.cpp b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
index f4f9a99..ba5e0f6 100644
--- a/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -1100,7 +1100,6 @@
gl::InfoLog &infoLog,
gl::Shader *fragmentShader,
gl::Shader *vertexShader,
- int *registers,
std::map<int, gl::VariableLocation> *outputVariables)
{
ShaderD3D *vertexShaderD3D = GetImplAs<ShaderD3D>(vertexShader);
@@ -1127,10 +1126,10 @@
// Map the varyings to the register file
VaryingPacking packing = {};
- *registers = mDynamicHLSL->packVaryings(infoLog, packing, fragmentShaderD3D, vertexShaderD3D,
- mData.getTransformFeedbackVaryingNames());
+ int registers = mDynamicHLSL->packVaryings(infoLog, packing, fragmentShaderD3D, vertexShaderD3D,
+ mData.getTransformFeedbackVaryingNames());
- if (*registers < 0)
+ if (registers < 0)
{
return LinkResult(false, gl::Error(GL_NO_ERROR));
}
@@ -1139,7 +1138,7 @@
std::vector<gl::LinkedVarying> linkedVaryings;
if (!mDynamicHLSL->generateShaderLinkHLSL(
- data, infoLog, *registers, packing, mPixelHLSL, mVertexHLSL, fragmentShaderD3D,
+ data, infoLog, registers, packing, mPixelHLSL, mVertexHLSL, fragmentShaderD3D,
vertexShaderD3D, mData.getTransformFeedbackVaryingNames(), &linkedVaryings,
outputVariables, &mPixelShaderKey, &mUsesFragDepth))
{
@@ -1159,6 +1158,13 @@
gatherTransformFeedbackVaryings(linkedVaryings);
+ LinkResult result = compileProgramExecutables(infoLog, registers);
+ if (result.error.isError() || !result.linkSuccess)
+ {
+ infoLog << "Failed to create D3D shaders.";
+ return result;
+ }
+
return LinkResult(true, gl::Error(GL_NO_ERROR));
}