Commit 966cb898 by Jamie Madill

D3D11: Don't dirty all uniforms on program change. (2/2)

Second patch for addressing missed comments. BUG=angleproject:2053 Change-Id: I1268d571913f8ce7efa7b94a5d4e47cf9a80c3c0 Reviewed-on: https://chromium-review.googlesource.com/526275Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent dcc9b51d
......@@ -2448,27 +2448,22 @@ gl::Error Renderer11::applyShaders(const gl::ContextState &data, GLenum drawMode
(geometryExe ? GetAs<ShaderExecutable11>(geometryExe)->getGeometryShader() : nullptr);
}
bool dirtyUniforms = false;
if (reinterpret_cast<uintptr_t>(vertexShader) != mAppliedVertexShader)
{
mDeviceContext->VSSetShader(vertexShader, nullptr, 0);
mAppliedVertexShader = reinterpret_cast<uintptr_t>(vertexShader);
dirtyUniforms = true;
}
if (reinterpret_cast<uintptr_t>(geometryShader) != mAppliedGeometryShader)
{
mDeviceContext->GSSetShader(geometryShader, nullptr, 0);
mAppliedGeometryShader = reinterpret_cast<uintptr_t>(geometryShader);
dirtyUniforms = true;
}
if (reinterpret_cast<uintptr_t>(pixelShader) != mAppliedPixelShader)
{
mDeviceContext->PSSetShader(pixelShader, nullptr, 0);
mAppliedPixelShader = reinterpret_cast<uintptr_t>(pixelShader);
dirtyUniforms = true;
}
return programD3D->applyUniforms(drawMode);
......@@ -4774,18 +4769,10 @@ gl::Error Renderer11::applyComputeShader(const gl::ContextState &data)
ASSERT(computeExe != nullptr);
ID3D11ComputeShader *computeShader = GetAs<ShaderExecutable11>(computeExe)->getComputeShader();
bool dirtyUniforms = false;
if (reinterpret_cast<uintptr_t>(computeShader) != mAppliedComputeShader)
{
mDeviceContext->CSSetShader(computeShader, nullptr, 0);
mAppliedComputeShader = reinterpret_cast<uintptr_t>(computeShader);
dirtyUniforms = true;
}
if (dirtyUniforms)
{
programD3D->dirtyAllUniforms();
}
return programD3D->applyComputeUniforms();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment