Revert "Merge the ProgramBinary class into Program."
Issues appeared on the FYI waterfall, content_gl_tests hangs.
This reverts commit 2195a6d6032883ed05468d5ecd019e7cb9a27bce.
Change-Id: I9fe1a53cf40887ae5a98fd77b4872f41085fcea7
Reviewed-on: https://chromium-review.googlesource.com/232386
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/renderer/d3d/ProgramD3D.cpp b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
index e7317e6..05707a8 100644
--- a/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -11,6 +11,7 @@
#include "libANGLE/Framebuffer.h"
#include "libANGLE/FramebufferAttachment.h"
#include "libANGLE/Program.h"
+#include "libANGLE/ProgramBinary.h"
#include "libANGLE/renderer/ShaderExecutable.h"
#include "libANGLE/renderer/d3d/DynamicHLSL.h"
#include "libANGLE/renderer/d3d/RendererD3D.h"
@@ -147,8 +148,6 @@
{
}
-unsigned int ProgramD3D::mCurrentSerial = 1;
-
ProgramD3D::ProgramD3D(RendererD3D *renderer)
: ProgramImpl(),
mRenderer(renderer),
@@ -162,8 +161,7 @@
mUsedVertexSamplerRange(0),
mUsedPixelSamplerRange(0),
mDirtySamplerMapping(true),
- mShaderVersion(100),
- mSerial(issueSerial())
+ mShaderVersion(100)
{
mDynamicHLSL = new DynamicHLSL(renderer);
}
@@ -400,7 +398,7 @@
return true;
}
-LinkResult ProgramD3D::load(gl::InfoLog &infoLog, gl::BinaryInputStream *stream)
+gl::LinkResult ProgramD3D::load(gl::InfoLog &infoLog, gl::BinaryInputStream *stream)
{
stream->readInt(&mShaderVersion);
@@ -430,7 +428,7 @@
if (stream->error())
{
infoLog.append("Invalid program binary.");
- return LinkResult(false, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(false, gl::Error(GL_NO_ERROR));
}
mUniforms.resize(uniformCount);
@@ -463,7 +461,7 @@
if (stream->error())
{
infoLog.append("Invalid program binary.");
- return LinkResult(false, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(false, gl::Error(GL_NO_ERROR));
}
mUniformIndex.resize(uniformIndexCount);
@@ -478,7 +476,7 @@
if (stream->error())
{
infoLog.append("Invalid program binary.");
- return LinkResult(false, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(false, gl::Error(GL_NO_ERROR));
}
mUniformBlocks.resize(uniformBlockCount);
@@ -562,13 +560,13 @@
&shaderExecutable);
if (error.isError())
{
- return LinkResult(false, error);
+ return gl::LinkResult(false, error);
}
if (!shaderExecutable)
{
infoLog.append("Could not create vertex shader.");
- return LinkResult(false, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(false, gl::Error(GL_NO_ERROR));
}
// generated converted input layout
@@ -600,13 +598,13 @@
&shaderExecutable);
if (error.isError())
{
- return LinkResult(false, error);
+ return gl::LinkResult(false, error);
}
if (!shaderExecutable)
{
infoLog.append("Could not create pixel shader.");
- return LinkResult(false, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(false, gl::Error(GL_NO_ERROR));
}
// add new binary
@@ -626,13 +624,13 @@
&mGeometryExecutable);
if (error.isError())
{
- return LinkResult(false, error);
+ return gl::LinkResult(false, error);
}
if (!mGeometryExecutable)
{
infoLog.append("Could not create geometry shader.");
- return LinkResult(false, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(false, gl::Error(GL_NO_ERROR));
}
stream->skip(geometryShaderSize);
}
@@ -644,12 +642,12 @@
if (memcmp(&identifier, &binaryIdentifier, sizeof(GUID)) != 0)
{
infoLog.append("Invalid program binary.");
- return LinkResult(false, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(false, gl::Error(GL_NO_ERROR));
}
initializeUniformStorage();
- return LinkResult(true, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(true, gl::Error(GL_NO_ERROR));
}
gl::Error ProgramD3D::save(gl::BinaryOutputStream *stream)
@@ -919,8 +917,8 @@
return gl::Error(GL_NO_ERROR);
}
-LinkResult ProgramD3D::compileProgramExecutables(gl::InfoLog &infoLog, gl::Shader *fragmentShader, gl::Shader *vertexShader,
- int registers)
+gl::LinkResult ProgramD3D::compileProgramExecutables(gl::InfoLog &infoLog, gl::Shader *fragmentShader, gl::Shader *vertexShader,
+ int registers)
{
ShaderD3D *vertexShaderD3D = ShaderD3D::makeShaderD3D(vertexShader->getImplementation());
ShaderD3D *fragmentShaderD3D = ShaderD3D::makeShaderD3D(fragmentShader->getImplementation());
@@ -931,7 +929,7 @@
gl::Error error = getVertexExecutableForInputLayout(defaultInputLayout, &defaultVertexExecutable);
if (error.isError())
{
- return LinkResult(false, error);
+ return gl::LinkResult(false, error);
}
std::vector<GLenum> defaultPixelOutput = GetDefaultOutputLayoutFromShader(getPixelShaderKey());
@@ -939,7 +937,7 @@
error = getPixelExecutableForOutputLayout(defaultPixelOutput, &defaultPixelExecutable);
if (error.isError())
{
- return LinkResult(false, error);
+ return gl::LinkResult(false, error);
}
if (usesGeometryShader())
@@ -952,7 +950,7 @@
ANGLE_D3D_WORKAROUND_NONE, &mGeometryExecutable);
if (error.isError())
{
- return LinkResult(false, error);
+ return gl::LinkResult(false, error);
}
}
@@ -978,15 +976,15 @@
#endif
bool linkSuccess = (defaultVertexExecutable && defaultPixelExecutable && (!usesGeometryShader() || mGeometryExecutable));
- return LinkResult(linkSuccess, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(linkSuccess, gl::Error(GL_NO_ERROR));
}
-LinkResult ProgramD3D::link(const gl::Data &data, gl::InfoLog &infoLog,
- gl::Shader *fragmentShader, gl::Shader *vertexShader,
- const std::vector<std::string> &transformFeedbackVaryings,
- GLenum transformFeedbackBufferMode,
- int *registers, std::vector<gl::LinkedVarying> *linkedVaryings,
- std::map<int, gl::VariableLocation> *outputVariables)
+gl::LinkResult ProgramD3D::link(const gl::Data &data, gl::InfoLog &infoLog,
+ gl::Shader *fragmentShader, gl::Shader *vertexShader,
+ const std::vector<std::string> &transformFeedbackVaryings,
+ GLenum transformFeedbackBufferMode,
+ int *registers, std::vector<gl::LinkedVarying> *linkedVaryings,
+ std::map<int, gl::VariableLocation> *outputVariables)
{
ShaderD3D *vertexShaderD3D = ShaderD3D::makeShaderD3D(vertexShader->getImplementation());
ShaderD3D *fragmentShaderD3D = ShaderD3D::makeShaderD3D(fragmentShader->getImplementation());
@@ -1009,24 +1007,24 @@
if (*registers < 0)
{
- return LinkResult(false, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(false, gl::Error(GL_NO_ERROR));
}
- if (!gl::Program::linkVaryings(infoLog, fragmentShader, vertexShader))
+ if (!gl::ProgramBinary::linkVaryings(infoLog, fragmentShader, vertexShader))
{
- return LinkResult(false, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(false, gl::Error(GL_NO_ERROR));
}
if (!mDynamicHLSL->generateShaderLinkHLSL(data, infoLog, *registers, packing, mPixelHLSL, mVertexHLSL,
fragmentShaderD3D, vertexShaderD3D, transformFeedbackVaryings,
linkedVaryings, outputVariables, &mPixelShaderKey, &mUsesFragDepth))
{
- return LinkResult(false, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(false, gl::Error(GL_NO_ERROR));
}
mUsesPointSize = vertexShaderD3D->usesPointSize();
- return LinkResult(true, gl::Error(GL_NO_ERROR));
+ return gl::LinkResult(true, gl::Error(GL_NO_ERROR));
}
void ProgramD3D::getInputLayoutSignature(const gl::VertexFormat inputLayout[], GLenum signature[]) const
@@ -1309,7 +1307,7 @@
{
const sh::Uniform &vertexUniform = *entry->second;
const std::string &uniformName = "uniform '" + vertexUniform.name + "'";
- if (!gl::Program::linkValidateUniforms(infoLog, uniformName, vertexUniform, fragmentUniform))
+ if (!gl::ProgramBinary::linkValidateUniforms(infoLog, uniformName, vertexUniform, fragmentUniform))
{
return false;
}
@@ -1923,14 +1921,4 @@
mDirtySamplerMapping = true;
}
-unsigned int ProgramD3D::getSerial() const
-{
- return mSerial;
-}
-
-unsigned int ProgramD3D::issueSerial()
-{
- return mCurrentSerial++;
-}
-
}