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 ...@@ -2448,27 +2448,22 @@ gl::Error Renderer11::applyShaders(const gl::ContextState &data, GLenum drawMode
(geometryExe ? GetAs<ShaderExecutable11>(geometryExe)->getGeometryShader() : nullptr); (geometryExe ? GetAs<ShaderExecutable11>(geometryExe)->getGeometryShader() : nullptr);
} }
bool dirtyUniforms = false;
if (reinterpret_cast<uintptr_t>(vertexShader) != mAppliedVertexShader) if (reinterpret_cast<uintptr_t>(vertexShader) != mAppliedVertexShader)
{ {
mDeviceContext->VSSetShader(vertexShader, nullptr, 0); mDeviceContext->VSSetShader(vertexShader, nullptr, 0);
mAppliedVertexShader = reinterpret_cast<uintptr_t>(vertexShader); mAppliedVertexShader = reinterpret_cast<uintptr_t>(vertexShader);
dirtyUniforms = true;
} }
if (reinterpret_cast<uintptr_t>(geometryShader) != mAppliedGeometryShader) if (reinterpret_cast<uintptr_t>(geometryShader) != mAppliedGeometryShader)
{ {
mDeviceContext->GSSetShader(geometryShader, nullptr, 0); mDeviceContext->GSSetShader(geometryShader, nullptr, 0);
mAppliedGeometryShader = reinterpret_cast<uintptr_t>(geometryShader); mAppliedGeometryShader = reinterpret_cast<uintptr_t>(geometryShader);
dirtyUniforms = true;
} }
if (reinterpret_cast<uintptr_t>(pixelShader) != mAppliedPixelShader) if (reinterpret_cast<uintptr_t>(pixelShader) != mAppliedPixelShader)
{ {
mDeviceContext->PSSetShader(pixelShader, nullptr, 0); mDeviceContext->PSSetShader(pixelShader, nullptr, 0);
mAppliedPixelShader = reinterpret_cast<uintptr_t>(pixelShader); mAppliedPixelShader = reinterpret_cast<uintptr_t>(pixelShader);
dirtyUniforms = true;
} }
return programD3D->applyUniforms(drawMode); return programD3D->applyUniforms(drawMode);
...@@ -4774,18 +4769,10 @@ gl::Error Renderer11::applyComputeShader(const gl::ContextState &data) ...@@ -4774,18 +4769,10 @@ gl::Error Renderer11::applyComputeShader(const gl::ContextState &data)
ASSERT(computeExe != nullptr); ASSERT(computeExe != nullptr);
ID3D11ComputeShader *computeShader = GetAs<ShaderExecutable11>(computeExe)->getComputeShader(); ID3D11ComputeShader *computeShader = GetAs<ShaderExecutable11>(computeExe)->getComputeShader();
bool dirtyUniforms = false;
if (reinterpret_cast<uintptr_t>(computeShader) != mAppliedComputeShader) if (reinterpret_cast<uintptr_t>(computeShader) != mAppliedComputeShader)
{ {
mDeviceContext->CSSetShader(computeShader, nullptr, 0); mDeviceContext->CSSetShader(computeShader, nullptr, 0);
mAppliedComputeShader = reinterpret_cast<uintptr_t>(computeShader); mAppliedComputeShader = reinterpret_cast<uintptr_t>(computeShader);
dirtyUniforms = true;
}
if (dirtyUniforms)
{
programD3D->dirtyAllUniforms();
} }
return programD3D->applyComputeUniforms(); 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