With this change, the ANGLE translator immediately compiles the
generated GLSL into SPIR-V with glslang and discards the source. This
is in preparation for generating SPIR-V directly, by making the frontend
and backend already able to digest it.
This change also allows the expensive glslang calls to be parallelized,
improving the following perf test by about 20%:
LinkProgramBenchmark.Run/vulkan_compile_and_link_multi_thread
Previously, the test was run as such in the Vulkan backend:
Main Thread 1 Thread 2
Compile1 --->
Compile2 --------------------->
Translator Translator
<---
<---------------------
Link
glslang
for
shader1
glslang
for
shader2
Done
With this change, it is run as such:
Main Thread 1 Thread 2
Compile1 --->
Compile2 --------------------->
Translator Translator
glslang glslang
<---
<---------------------
Link
Done
glslang_wrapper_utils no longer interacts with glslang! A rename will
follow.
Bug: angleproject:4889
Change-Id: If4303e8ba0ba43b1a2f47f8c0a9133d0bee1a19a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2721195
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by:
Tim Van Patten <timvp@google.com>
Reviewed-by:
Jamie Madill <jmadill@chromium.org>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| d3d | Loading commit data... | |
| gl | Loading commit data... | |
| vulkan | Loading commit data... | |
| ClampPointSize.cpp | Loading commit data... | |
| ClampPointSize.h | Loading commit data... | |
| DeclareAndInitBuiltinsForInstancedMultiview.cpp | Loading commit data... | |
| DeclareAndInitBuiltinsForInstancedMultiview.h | Loading commit data... | |
| DeferGlobalInitializers.cpp | Loading commit data... | |
| DeferGlobalInitializers.h | Loading commit data... | |
| EmulateGLFragColorBroadcast.cpp | Loading commit data... | |
| EmulateGLFragColorBroadcast.h | Loading commit data... | |
| EmulateMultiDrawShaderBuiltins.cpp | Loading commit data... | |
| EmulateMultiDrawShaderBuiltins.h | Loading commit data... | |
| EmulatePrecision.cpp | Loading commit data... | |
| EmulatePrecision.h | Loading commit data... | |
| FoldExpressions.cpp | Loading commit data... | |
| FoldExpressions.h | Loading commit data... | |
| ForcePrecisionQualifier.cpp | Loading commit data... | |
| ForcePrecisionQualifier.h | Loading commit data... | |
| InitializeVariables.cpp | Loading commit data... | |
| InitializeVariables.h | Loading commit data... | |
| PruneEmptyCases.cpp | Loading commit data... | |
| PruneEmptyCases.h | Loading commit data... | |
| PruneNoOps.cpp | Loading commit data... | |
| PruneNoOps.h | Loading commit data... | |
| RemoveArrayLengthMethod.cpp | Loading commit data... | |
| RemoveArrayLengthMethod.h | Loading commit data... | |
| RemoveDynamicIndexing.cpp | Loading commit data... | |
| RemoveDynamicIndexing.h | Loading commit data... | |
| RemoveInvariantDeclaration.cpp | Loading commit data... | |
| RemoveInvariantDeclaration.h | Loading commit data... | |
| RemovePow.cpp | Loading commit data... | |
| RemovePow.h | Loading commit data... | |
| RemoveUnreferencedVariables.cpp | Loading commit data... | |
| RemoveUnreferencedVariables.h | Loading commit data... | |
| RewriteTexelFetchOffset.cpp | Loading commit data... | |
| RewriteTexelFetchOffset.h | Loading commit data... | |
| ScalarizeVecAndMatConstructorArgs.cpp | Loading commit data... | |
| ScalarizeVecAndMatConstructorArgs.h | Loading commit data... | |
| SeparateDeclarations.cpp | Loading commit data... | |
| SeparateDeclarations.h | Loading commit data... | |
| SimplifyLoopConditions.cpp | Loading commit data... | |
| SimplifyLoopConditions.h | Loading commit data... | |
| SplitSequenceOperator.cpp | Loading commit data... | |
| SplitSequenceOperator.h | Loading commit data... |