Encapulate the ESSL compiler into a GL object that is per-context.
* Allows for multiple contexts have to have different client versions, caps
and extensions without causing shader compilation failures.
BUG=angle:823
Change-Id: I523679e90be031b0b7fa385d46d6839b1cf3029f
Reviewed-on: https://chromium-review.googlesource.com/227710
Reviewed-by: Jamie Madill <jmadill@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 2a7ead2..bbe5a97 100644
--- a/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -1352,7 +1352,7 @@
if (uniform.staticUse)
{
- defineUniformBase(GL_VERTEX_SHADER, uniform, vertexShaderD3D->getUniformRegister(uniform.name));
+ defineUniformBase(vertexShaderD3D, uniform, vertexShaderD3D->getUniformRegister(uniform.name));
}
}
@@ -1362,7 +1362,7 @@
if (uniform.staticUse)
{
- defineUniformBase(GL_FRAGMENT_SHADER, uniform, fragmentShaderD3D->getUniformRegister(uniform.name));
+ defineUniformBase(fragmentShaderD3D, uniform, fragmentShaderD3D->getUniformRegister(uniform.name));
}
}
@@ -1386,17 +1386,17 @@
return true;
}
-void ProgramD3D::defineUniformBase(GLenum shader, const sh::Uniform &uniform, unsigned int uniformRegister)
+void ProgramD3D::defineUniformBase(const ShaderD3D *shader, const sh::Uniform &uniform, unsigned int uniformRegister)
{
- ShShaderOutput outputType = ShaderD3D::getCompilerOutputType(shader);
+ ShShaderOutput outputType = shader->getCompilerOutputType();
sh::HLSLBlockEncoder encoder(sh::HLSLBlockEncoder::GetStrategyFor(outputType));
encoder.skipRegisters(uniformRegister);
defineUniform(shader, uniform, uniform.name, &encoder);
}
-void ProgramD3D::defineUniform(GLenum shader, const sh::ShaderVariable &uniform,
- const std::string &fullName, sh::HLSLBlockEncoder *encoder)
+void ProgramD3D::defineUniform(const ShaderD3D *shader, const sh::ShaderVariable &uniform,
+ const std::string &fullName, sh::HLSLBlockEncoder *encoder)
{
if (uniform.isStruct())
{
@@ -1438,11 +1438,11 @@
ASSERT(linkedUniform->registerElement == encoder->getCurrentElement());
- if (shader == GL_FRAGMENT_SHADER)
+ if (shader->getShaderType() == GL_FRAGMENT_SHADER)
{
linkedUniform->psRegisterIndex = encoder->getCurrentRegister();
}
- else if (shader == GL_VERTEX_SHADER)
+ else if (shader->getShaderType() == GL_VERTEX_SHADER)
{
linkedUniform->vsRegisterIndex = encoder->getCurrentRegister();
}