New issue
Advanced search Search tips

Issue 849576 link

Starred by 18 users

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Feature


Sign in to add a comment

Expose KHR_parallel_shader_compile extension to WebGL

Project Member Reported by kbr@chromium.org, Jun 5 2018

Issue description

There have been longstanding requests from WebGL developers to expose the semantics of the KHR_parallel_shader_compile extension to WebGL.

If this were exposed, then applications could easily opt-in to background shader compilation and program linking.

See https://github.com/KhronosGroup/WebGL/issues/2638 for a bit more background. There have also been multiple requests for this on the public_webgl and webgl-dev-list mailing lists.

 
Owner: jie.a.c...@intel.com
Status: Assigned (was: Available)
Cc: geoffl...@chromium.org jmad...@chromium.org
Jamie&Goeff, I checked the latest ANGLE source code, but didn't find this extension. Could you clarify the status of this extension in ANGLE? If we need to add it to ANGLE newly, It would be nice that you can give me some thoughts in advance to minimize the chance for me falling into any potential pitfalls.
We haven't implemented this extension in ANGLE's source yet but we do thread the compilation of shaders in our D3D backend.

My throughts on the implementation:

Currently program linking is split into two parts, the validation steps in gl::Program::link and the final platform-specific linking in rx::ProgramImpl::link.  Unless there are bugs, there should not be errors from the backend linking.

We can use this to change the return value from rx::ProgramImpl::link to just a regular gl::Error and add new getLinkCompletionStatus and getLinkStatus functions.  getLinkStatus will block until the link is completed.

In the frontend, gl::Program will need to change link status to an enum of { unlinked, pending, linked }.
If the user makes any queries that depend on the program being linked and the link is still pending, getLinkStatus will need to be called, forcing the link to finish.

Currently, our D3D backend uses multiple threads to compile shaders in ProgramD3D::compileProgramExecutables but it joins all the threads right away.  This will need to be updated to leave the threads running until getLinkStatus has been called and then perform any logic that needs the executables afterwards.

The GL backend is fairly easy, do all the current code up until the glLinkProgram call and then perform the rest after getLinkStatus has been called.
Jie - maybe sketching this into a one page design doc would be a good idea.

Comment 5 by kbr@chromium.org, Jun 7 2018

Blockedon: 727071
Blocking: 697758
A few real-world examples where asynchronous shader compilation would help:

1) Issue 697758 - the shaders from PlayCanvas' After the Flood still take about 5 seconds to compile in total, and it would be better if this didn't block the browser's UI.

2) https://bugs.chromium.org/p/angleproject/issues/detail?id=426 - I can confirm that this shader still takes a long time to compile on Windows. See https://www.shadertoy.com/view/MsX3WH .

3)  Issue 727071  - revisiting this example it seems that the shaders have been restructured to not take very long to compile.

Will be in touch offline regarding these in more depth.

Comment 6 by kbr@chromium.org, Jun 7 2018

Blockedon: angleproject:426
Geoff -- Thanks much for your ideas. They are very informative and insightful having saved me a lot time in figuring it out from massive source code. I still need to read more code to make sure I fully understand your proposal, and then sketch a design doc. Besides the rx::ProgramImpl::link parallel as you mentioned, probably we may need to make translating parallel as well. Some comments in Ken's issues mentioned yyparser was quite time consuming too. So I am going to profile these real-world examples by adding a few trace events at first.

Comment 8 by kbr@chromium.org, Jun 8 2018

We'll want to move both the shader compilation and program linking steps to a background thread when this extension is enabled. Please take that into account in the design. Thanks.

Just did a profiling on 3 real-world examples regarding the translating(WebGL->HLSL) time and compiling(HLSL->binary) time. Overall the compiling time took the biggest share. For the 'shadertoy-mona-lisa' case, roughly the compiling time was 10,000ms, while the translating time was 100ms only. For the 'playcanvas-after-the flood' case, translating time increased considerably, about 1/3 of compiling time. For the 'raysupreme' case, it was a mixed situation of previous 2 cases. See the attached trace files for more information(translating time is captured by a newly added event Shader::resolveCompile, and compiling time uses the existing D3DCompile event).

trace_playcanvas-after-the-flood.shaders.json.gz
15.2 KB Download
trace_raysupreme-shaders.json.gz
9.8 KB Download
trace_shadertoy-mona-lisa.json.gz
6.9 KB Download
Thanks for profiling Jie. If the D3DCompile time is 100x that of the ANGLE translation then it isn't as critical to do background translation. If there is substantial added complexity it might be easier to just background the D3DCompile/link step.
Cc: cwallez@chromium.org
A brief design doc: https://docs.google.com/document/d/1ODlLUO10vC04KD0SoMKPlswo83TvjIOaFua8w1lro8U/edit# .

Project Member

Comment 12 by bugdroid1@chromium.org, Jun 20 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/angle/angle/+/e5c614fbaf799e53d85a9042b4f1f3e9193960c8

commit e5c614fbaf799e53d85a9042b4f1f3e9193960c8
Author: jchen10 <jie.a.chen@intel.com>
Date: Wed Jun 20 14:38:44 2018

ParallelCompile: Update gl2ext.h

Updated from http://khronos.org/registry/OpenGL/api/GLES2/gl2ext.h

BUG=chromium:849576

Change-Id: I80e07fad80899b96b037a978855b70ff25bb5bd9
Reviewed-on: https://chromium-review.googlesource.com/1107494
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>

[modify] https://crrev.com/e5c614fbaf799e53d85a9042b4f1f3e9193960c8/include/GLES2/gl2ext.h

Project Member

Comment 13 by bugdroid1@chromium.org, Jun 20 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/13fd80e37df31b131e9a1b69329ecb2daa60da60

commit 13fd80e37df31b131e9a1b69329ecb2daa60da60
Author: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Date: Wed Jun 20 17:37:12 2018

Roll src/third_party/angle 66c2f4afe3c2..e5c614fbaf79 (2 commits)

https://chromium.googlesource.com/angle/angle.git/+log/66c2f4afe3c2..e5c614fbaf79


git log 66c2f4afe3c2..e5c614fbaf79 --date=short --no-merges --format='%ad %ae %s'
2018-06-20 jie.a.chen@intel.com ParallelCompile: Update gl2ext.h
2018-06-20 oetuaho@nvidia.com Refactor debug output of types


Created with:
  gclient setdep -r src/third_party/angle@e5c614fbaf79

The AutoRoll server is located here: https://angle-chromium-roll.skia.org

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel

BUG=chromium:849576
TBR=cwallez@chromium.org

Change-Id: Ibba3190644cc9ee2b92170ba6ba19620e685dc67
Reviewed-on: https://chromium-review.googlesource.com/1108218
Reviewed-by: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Commit-Queue: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#568904}
[modify] https://crrev.com/13fd80e37df31b131e9a1b69329ecb2daa60da60/DEPS

Project Member

Comment 15 by bugdroid1@chromium.org, Jun 22 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3290ad81fd300bdddc50b68289672bd7592eb133

commit 3290ad81fd300bdddc50b68289672bd7592eb133
Author: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Date: Fri Jun 22 17:25:04 2018

Roll src/third_party/angle 8a4c49fb794e..fec92a6f89f1 (5 commits)

https://chromium.googlesource.com/angle/angle.git/+log/8a4c49fb794e..fec92a6f89f1


git log 8a4c49fb794e..fec92a6f89f1 --date=short --no-merges --format='%ad %ae %s'
2018-06-22 geofflang@chromium.org Temporarily skip MakeCurrentMultiContext test on Windows AMD OpenGL.
2018-06-22 jmadill@chromium.org Vulkan: Add RenderTargetVk::getImageForRead.
2018-06-22 jie.a.chen@intel.com ParallelCompile: Update gl.xml
2018-06-22 jmadill@chromium.org Vulkan: Fix mixed descriptor pool updates.
2018-06-22 jmadill@chromium.org Vulkan: Fix releasing Programs that are in use.


Created with:
  gclient setdep -r src/third_party/angle@fec92a6f89f1

The AutoRoll server is located here: https://angle-chromium-roll.skia.org

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel

BUG=chromium:849576
TBR=cwallez@chromium.org

Change-Id: I6da5c85a59eec62213a0c8be714f27daf855666d
Reviewed-on: https://chromium-review.googlesource.com/1112217
Reviewed-by: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Commit-Queue: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#569678}
[modify] https://crrev.com/3290ad81fd300bdddc50b68289672bd7592eb133/DEPS

Comment 16 by kbr@chromium.org, Jun 25 2018

Blockedon: 855006
Project Member

Comment 17 by bugdroid1@chromium.org, Jun 27 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/angle/angle/+/82af620e0559aba006a924cf56e4870204df2536

commit 82af620e0559aba006a924cf56e4870204df2536
Author: jchen10 <jie.a.chen@intel.com>
Date: Wed Jun 27 02:07:17 2018

ParallelCompile: Add entry points.

Add the extension text, entry points and validations.

BUG=chromium:849576
TEST=angle_end2end_tests

Change-Id: I4c06ee30e4f4fe9bb1c1fecada747b9c78fed0ea
Reviewed-on: https://chromium-review.googlesource.com/1103789
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>

[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libANGLE/entry_points_enum_autogen.h
[add] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/extensions/KHR_parallel_shader_compile.txt
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libGLESv2/entry_points_gles_ext_autogen.cpp
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libANGLE/validationES2.h
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libANGLE/State.cpp
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libGLESv2/proc_table_data.json
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/scripts/generate_entry_points.py
[add] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/tests/gl_tests/ParallelShaderCompileTest.cpp
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libANGLE/State.h
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libGLESv2/libGLESv2_autogen.cpp
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libANGLE/Caps.h
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libGLESv2/entry_points_gles_ext_autogen.h
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libGLESv2/libGLESv2_autogen.def
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libANGLE/Caps.cpp
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/tests/angle_end2end_tests.gypi
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/include/GLES2/gl2ext_explicit_context_autogen.inc
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libANGLE/validationES2.cpp
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libANGLE/Context.cpp
[modify] https://crrev.com/82af620e0559aba006a924cf56e4870204df2536/src/libANGLE/Context.h

Project Member

Comment 18 by bugdroid1@chromium.org, Jun 27 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3193df36b5101ad21d2564b10bf4a409afbaa1a5

commit 3193df36b5101ad21d2564b10bf4a409afbaa1a5
Author: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Date: Wed Jun 27 05:24:11 2018

Roll src/third_party/angle 1ff0ee751d95..82af620e0559 (3 commits)

https://chromium.googlesource.com/angle/angle.git/+log/1ff0ee751d95..82af620e0559


git log 1ff0ee751d95..82af620e0559 --date=short --no-merges --format='%ad %ae %s'
2018-06-27 jie.a.chen@intel.com ParallelCompile: Add entry points.
2018-06-26 ynovikov@chromium.org Skip ClearTest.ChangeFramebufferAttachmentFromRGBAtoRGB on Mac
2018-06-26 geofflang@chromium.org GL: Don't print driver performance warnings.


Created with:
  gclient setdep -r src/third_party/angle@82af620e0559

The AutoRoll server is located here: https://angle-chromium-roll.skia.org

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel

BUG=chromium:849576, chromium:768943 
TBR=ynovikov@chromium.org

Change-Id: Icacd1c10488eb3135f5161aac00efd8da3cf4720
Reviewed-on: https://chromium-review.googlesource.com/1116083
Reviewed-by: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Commit-Queue: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#570666}
[modify] https://crrev.com/3193df36b5101ad21d2564b10bf4a409afbaa1a5/DEPS

Just wanted to voice my support for this issue. My apps Material-Z.com, PaintSupreme3D.com and RaySupreme.com suffer heavily from the main thread being blocked by accessing shaders which are still compiling (which results in freezing applications).

In my apps, the user is building more and more complex shaders which lead to increasingly longer compile times. As I do not know when the shader is finished compiling I have no way of preventing freezes in the apps.
Thanks for support!
I am still working on this. It will be firstly available on Windows. By the way, what's the priority regarding platforms like Windows, Linux, Android etc. in your view?
Well, for me Mac and Windows are the most important just because I earn most of my money inside their App Stores (I use Electron for packaging).

Linux is nice to have. 

I am not targeting my apps at iOS and Android right now as imho the platform support for WebGL makes it very difficult to publish a commercial application on these platforms (this may be different for games).
Windows then Android for us

The Huge priority for us is Windows with severals seconds of freeze due to compilation. It's so bad that we have to prevent any compilation once page is loaded. (No Shader LOD for instance)

Other Desktop OS are nice, but their compilation time are not that long in comparison.

On mobile, android would definitely helps load times as load times are the slowest there (ios load time are better). Hoping there will be enough MAX_SHADER_COMPILER_THREADS_KHR to get gains. 
But even there, just removing the freeze would be a huge gain.

If it helps, here's some sample models:

https://sketchfab.com/models/f31b2477e50f4fe284d80ea136c94d8e (  6 shader are taking >400ms each)

https://sketchfab.com/models/36ff87d402654c08ba4e9c525ccfe22b (> 20 shaders taking > 200ms each)

Just to clarify, the shaders in my apps don't use geometry but procedurally create PBR materials or scenes via signed distance functions.

Compilation time easily gets into the 2-3 second range very fast. I do not see a major difference between Mac / Windows compilation times for my use case.
 Issue 873077  has been merged into this issue.
Project Member

Comment 25 by bugdroid1@chromium.org, Aug 11

The following revision refers to this bug:
  https://chromium.googlesource.com/angle/angle/+/7ae70d8fb360a3defe4d6734687748a786d565ae

commit 7ae70d8fb360a3defe4d6734687748a786d565ae
Author: jchen10 <jie.a.chen@intel.com>
Date: Sat Aug 11 10:48:43 2018

ParallelCompile: Parallelize D3D linking

This adds a new linking state to Program. If a Program is in linking
state, on the one hand the foreground thread may continue issuing more
GL calls, and on the other hand the background linking threads may be
accessing Program internally too. Without a proper constraint there
must be conflicts between them. For this purpose, we block any further
GL calls to Program until it's actually linked. In addition, we
prohibit parallel linking an active program, so that ProgramD3D does
not have to worry about such similar conflicts.

Also changes the WorkerThread to support limiting the number of
concurrently running worker threads.

BUG=chromium:849576

Change-Id: I52618647539323f8bf27201320bdf7301c4982e6
Reviewed-on: https://chromium-review.googlesource.com/1127495
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>

[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/queryutils.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/renderer/null/ProgramNULL.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/renderer/gl/ProgramGL.h
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/validationES.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/renderer/gl/ProgramGL.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/renderer/vulkan/ProgramVk.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/renderer/null/ProgramNULL.h
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/util/shader_utils.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/Program.h
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/Program.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/renderer/vulkan/ProgramVk.h
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/renderer/d3d/ProgramD3D.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/renderer/d3d/RendererD3D.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/renderer/d3d/RendererD3D.h
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/WorkerThread.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/renderer/ProgramImpl.h
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/WorkerThread.h
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/Context.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/renderer/d3d/ProgramD3D.h
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/tests/gl_tests/ParallelShaderCompileTest.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/util/shader_utils.h
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/ContextState.h
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/WorkerThread_unittest.cpp
[modify] https://crrev.com/7ae70d8fb360a3defe4d6734687748a786d565ae/src/libANGLE/Context.h

Blockedon: angleproject:2771
Project Member

Comment 27 by bugdroid1@chromium.org, Aug 16

The following revision refers to this bug:
  https://chromium.googlesource.com/angle/angle/+/3fd614d06e50fb98d1434fabf31e8583516ad5c1

commit 3fd614d06e50fb98d1434fabf31e8583516ad5c1
Author: jchen10 <jie.a.chen@intel.com>
Date: Thu Aug 16 02:29:46 2018

Refactor Context dependency for resolveCompile

The context parameter of Shader::resolveCompile method causes a bad
impact that many methods in Shader, Program etc. have to have a same
context parameter. By removing it, these methods can be decoupled
from Context.

BUG=chromium:849576

Change-Id: Ia5545ee9dce45794550f6086bc0e6c4707e1276e
Reviewed-on: https://chromium-review.googlesource.com/1172202
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>

[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/ProgramLinkedResources.h
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/queryutils.h
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/Shader.h
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/gl/ShaderGL.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/d3d/ShaderD3D.h
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/queryutils.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/Shader.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/d3d/ShaderD3D.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/Program.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/gl/ProgramGL.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/vulkan/ProgramVk.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/vulkan/GlslangWrapper.h
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/gl/ShaderGL.h
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/null/ShaderNULL.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/ProgramLinkedResources.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/null/ShaderNULL.h
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/Program.h
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/d3d/ProgramD3D.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/ShaderImpl.h
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/d3d/DynamicHLSL.h
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/vulkan/GlslangWrapper.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/d3d/DynamicHLSL.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/gl/ContextGL.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/Context.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/d3d/ProgramD3D.h
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/vulkan/ShaderVk.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/renderer/vulkan/ShaderVk.h
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/validationES2.cpp
[modify] https://crrev.com/3fd614d06e50fb98d1434fabf31e8583516ad5c1/src/libANGLE/GLES1Renderer.cpp

Project Member

Comment 28 by bugdroid1@chromium.org, Aug 24

The following revision refers to this bug:
  https://chromium.googlesource.com/angle/angle/+/d6781dce3d251dfdbaa8d2e3f54be2740c4202b1

commit d6781dce3d251dfdbaa8d2e3f54be2740c4202b1
Author: jchen10 <jie.a.chen@intel.com>
Date: Fri Aug 24 06:09:39 2018

Extend LinkProgramPerfTest to support compile only

Add an option for "compie_only" and "compile_and_link".

Bug: chromium:849576

Change-Id: Id796ebb85ad5aff1a5272173f11ce2ff42685dce
Reviewed-on: https://chromium-review.googlesource.com/1186159
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>

[modify] https://crrev.com/d6781dce3d251dfdbaa8d2e3f54be2740c4202b1/src/tests/perf_tests/LinkProgramPerfTest.cpp

Project Member

Comment 29 by bugdroid1@chromium.org, Aug 24

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0168a1726a20338479362bb6dfa821856e95f9d4

commit 0168a1726a20338479362bb6dfa821856e95f9d4
Author: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Date: Fri Aug 24 07:39:50 2018

Roll src/third_party/angle c40974417610..d6781dce3d25 (5 commits)

https://chromium.googlesource.com/angle/angle.git/+log/c40974417610..d6781dce3d25


git log c40974417610..d6781dce3d25 --date=short --no-merges --format='%ad %ae %s'
2018-08-24 jie.a.chen@intel.com Extend LinkProgramPerfTest to support compile only
2018-08-23 syoussefi@google.com Re-enable BlitFramebuffer tests
2018-08-23 fjhenigman@chromium.org Roll chromium DEPS.
2018-08-23 jmadill@chromium.org Optimize ValidateDrawStates.
2018-08-23 jmadill@chromium.org Add validation state change test for draw framebuffer.


Created with:
  gclient setdep -r src/third_party/angle@d6781dce3d25

The AutoRoll server is located here: https://angle-chromium-roll.skia.org

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel

BUG=chromium:849576
TBR=cwallez@chromium.org

Change-Id: Idd1d828d80820efcdc78d6c57c0f51898365b770
Reviewed-on: https://chromium-review.googlesource.com/1188102
Reviewed-by: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Commit-Queue: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#585745}
[modify] https://crrev.com/0168a1726a20338479362bb6dfa821856e95f9d4/DEPS

Project Member

Comment 30 by bugdroid1@chromium.org, Sep 13

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6725bad11873b4bcf1a2d5ca654c502830e4b81c

commit 6725bad11873b4bcf1a2d5ca654c502830e4b81c
Author: jchen10 <jie.a.chen@intel.com>
Date: Thu Sep 13 02:32:37 2018

Enable KHR_parallel_shader_compile extension

This updates the khronos GL headers to incorporate the missing
API declarations for the extension.
This also regenerates the ui/gl binding accordingly.

BUG=849576

Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I2ce5b91e7459f518593924b55621896ed4825510
Reviewed-on: https://chromium-review.googlesource.com/1201353
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Cr-Commit-Position: refs/heads/master@{#590900}
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/GLES2/gl2chromium_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/build_cmd_buffer_lib.py
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/build_gles2_cmd_buffer.py
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/client/gles2_c_lib_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/client/gles2_implementation_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/client/gles2_interface_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/client/gles2_interface_stub_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/common/gles2_cmd_format_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/gles2_cmd_buffer_functions.txt
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/service/feature_info.cc
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/service/feature_info.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/service/gles2_cmd_validation_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/third_party/khronos/GLES2/gl2.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/third_party/khronos/GLES2/gl2ext.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/third_party/khronos/GLES3/gl3.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/third_party/khronos/README.chromium
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/ui/gl/generate_bindings.py
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/ui/gl/gl_bindings.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/ui/gl/gl_bindings_api_autogen_gl.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/ui/gl/gl_bindings_autogen_gl.cc
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/ui/gl/gl_bindings_autogen_gl.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/ui/gl/gl_bindings_autogen_mock.cc
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/ui/gl/gl_bindings_autogen_mock.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/ui/gl/gl_enums_implementation_autogen.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/ui/gl/gl_mock_autogen_gl.h
[modify] https://crrev.com/6725bad11873b4bcf1a2d5ca654c502830e4b81c/ui/gl/gl_stub_autogen_gl.h

Project Member

Comment 31 by bugdroid1@chromium.org, Sep 14

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5ec934e8bc4037d70c87149f23a8cfeb074b4b14

commit 5ec934e8bc4037d70c87149f23a8cfeb074b4b14
Author: jchen10 <jie.a.chen@intel.com>
Date: Fri Sep 14 11:12:16 2018

Expose KHR_parallel_shader_compile to WebGL

This exposes KHR_parallel_shader_compile extension to WebGL. With this
extension, applications may benefit from background shader compilation
and program linking, avoiding main thread long blocking for complex
shaders.

BUG=849576

Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I6b62142d28dc14f85d50a820e6a87409d5a371c8
Reviewed-on: https://chromium-review.googlesource.com/1161747
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Cr-Commit-Position: refs/heads/master@{#591321}
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/modules_idl_files.gni
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/webgl/BUILD.gn
[add] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/webgl/khr_parallel_shader_compile.cc
[add] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/webgl/khr_parallel_shader_compile.h
[add] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/webgl/khr_parallel_shader_compile.idl
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/webgl/webgl_extension_name.h
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/webgl/webgl_program.cc
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/webgl/webgl_program.h
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/webgl/webgl_rendering_context.cc
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/webgl/webgl_rendering_context.h
[modify] https://crrev.com/5ec934e8bc4037d70c87149f23a8cfeb074b4b14/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc

Blockedon: 884210
Project Member

Comment 33 by bugdroid1@chromium.org, Sep 19

The following revision refers to this bug:
  https://chromium.googlesource.com/angle/angle/+/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62

commit a155bacf99fb6cb21a3963bbffa8fc7a9a756f62
Author: jchen10 <jie.a.chen@intel.com>
Date: Wed Sep 19 00:49:23 2018

ParallelCompile: Parallelize shader translation

This changes to construct a new ShHandle of compiler for each Shader,
and use it to translate the shader source in a background thread.

Bug: chromium:849576

Change-Id: Ib49952c7292321ee6aa1c5996f8f7927f40d8f04
Reviewed-on: https://chromium-review.googlesource.com/1177195
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>

[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/Shader.cpp
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/util/shader_utils.cpp
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/renderer/vulkan/ShaderVk.cpp
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/renderer/gl/ShaderGL.h
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/Shader.h
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/tests/gl_tests/ParallelShaderCompileTest.cpp
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/renderer/gl/ShaderGL.cpp
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/renderer/d3d/ShaderD3D.h
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/queryutils.cpp
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/renderer/null/ShaderNULL.h
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/renderer/ShaderImpl.h
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/renderer/vulkan/ShaderVk.h
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/Compiler.h
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/util/shader_utils.h
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/renderer/d3d/ShaderD3D.cpp
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/Compiler.cpp
[modify] https://crrev.com/a155bacf99fb6cb21a3963bbffa8fc7a9a756f62/src/libANGLE/renderer/null/ShaderNULL.cpp

Project Member

Comment 34 by bugdroid1@chromium.org, Sep 19

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/60fc61f3ca8be482046948f1895d83551e169395

commit 60fc61f3ca8be482046948f1895d83551e169395
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Wed Sep 19 04:37:04 2018

Roll src/third_party/angle fcfd3382d4ab..dc8fb9374e0a (5 commits)

https://chromium.googlesource.com/angle/angle.git/+log/fcfd3382d4ab..dc8fb9374e0a


git log fcfd3382d4ab..dc8fb9374e0a --date=short --no-merges --format='%ad %ae %s'
2018-09-19 ynovikov@chromium.org Revert "Add FastVector for simple dynamic vector cases."
2018-09-19 jie.a.chen@intel.com Improve dirtybits for compute
2018-09-19 jie.a.chen@intel.com ParallelCompile: Parallelize shader translation
2018-09-18 jmadill@chromium.org Add FastVector for simple dynamic vector cases.
2018-09-18 jmadill@chromium.org Log Renderer string on Android displays.


Created with:
  gclient setdep -r src/third_party/angle@dc8fb9374e0a

The AutoRoll server is located here: https://autoroll.skia.org/r/angle-chromium-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel

BUG=chromium:849576
TBR=ynovikov@chromium.org

Change-Id: If9f4a3294d663f7a0baa496cb82f21e533dc08cd
Reviewed-on: https://chromium-review.googlesource.com/1232626
Reviewed-by: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#592319}
[modify] https://crrev.com/60fc61f3ca8be482046948f1895d83551e169395/DEPS

Project Member

Comment 35 by bugdroid1@chromium.org, Sep 20

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cdb0c9006460b2385c1f96b81e7564afa3cfa964

commit cdb0c9006460b2385c1f96b81e7564afa3cfa964
Author: jchen10 <jie.a.chen@intel.com>
Date: Thu Sep 20 00:18:21 2018

ParallelCompile: fix theads maximum

Use std::min instead.

BUG=849576

Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I7e6e76dd6c66e0b52d5c13bf87b1ca1785154654
Reviewed-on: https://chromium-review.googlesource.com/1233185
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#592624}
[modify] https://crrev.com/cdb0c9006460b2385c1f96b81e7564afa3cfa964/third_party/blink/renderer/modules/webgl/khr_parallel_shader_compile.cc

Blockedon: angleproject:2851
Blockedon: 873724
Blocking: angleproject:2857
Project Member

Comment 39 by bugdroid1@chromium.org, Oct 24

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/319faa6f9fc6bb050759c111202dbb61ba99086d

commit 319faa6f9fc6bb050759c111202dbb61ba99086d
Author: Kenneth Russell <kbr@chromium.org>
Date: Wed Oct 24 17:21:44 2018

Roll WebGL 6d2f3f4..0d55c88

https://chromium.googlesource.com/external/khronosgroup/webgl.git/+log/6d2f3f4..0d55c88

Includes suppressions for the following failures:

  conformance/rendering/rendering-sampling-feedback-loop.html
  conformance2/textures/misc/tex-mipmap-levels.html
  conformance2/textures/image_bitmap_from_video/
    tex-2d-rgb565-rgb-unsigned_short_5_6_5.html
  deqp/functional/gles3/lifetime.html
  deqp/functional/gles3/shaderoperator/common_functions_*.html

Bug: 660844,  739604 , 766918, 849576, 886970,  890002 , 890539,  898350 ,  898351 ,  angleproject:2832 
Cq-Include-Trybots: luci.chromium.try:win_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_angle_rel_ng;luci.chromium.try:win_angle_rel_ng
Change-Id: I85be441fa86090e5ed056a9366452248985693e3
Reviewed-on: https://chromium-review.googlesource.com/c/1297570
Reviewed-by: James Darpinian <jdarpinian@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#602377}
[modify] https://crrev.com/319faa6f9fc6bb050759c111202dbb61ba99086d/DEPS
[modify] https://crrev.com/319faa6f9fc6bb050759c111202dbb61ba99086d/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
[modify] https://crrev.com/319faa6f9fc6bb050759c111202dbb61ba99086d/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
[modify] https://crrev.com/319faa6f9fc6bb050759c111202dbb61ba99086d/content/test/gpu/gpu_tests/webgl_conformance_revision.txt

Ken, we collected a few more benchmark shaders and measured the performance gain with the extension. You can view the result in this sheet -- https://docs.google.com/spreadsheets/d/1IIWCr3m4iVgFZT9NTXyHziVnuEz9QcbVx-abD3YVIFs/edit#gid=1754808222 .

Status: Started (was: Assigned)
Super work Jie! In case people can't see the spreadsheet, the performance improvements from using this extension range from 138% to 183%, with an average improvement of 154.32%.

What are the next steps for the implementation? On ANGLE's OpenGL backend, does it have the same parallelism properties as on the D3D backend?

Blockedon: -angleproject:2771
Labels: -Pri-2 Pri-3
As the ANGLE's OpenGL backend is still behind a flag, or not used by Chrome for Linux, Mac, and Android, we currently take it for low priority to implement it in ANGLE.
kbr@, we also put some efforts to develop benchmarks. Do you think if we need to find some place to host them?
Great results, thanks a lot for the hard work, cannot wait to work with this.
( would love to see benchmarks detailed code/results )
Labels: -Pri-3 Pri-2
yang.gu@: yes, it would be great if you would put up your benchmarks. What about sdk/tests/extra, or creating a new directory like sdk/tests/performance/parallel_shader_compile?

jie.a.chen@: we're actively working on switching to ANGLE's OpenGL backend on Chrome's other platforms so we would greatly appreciate it if you would invest time in making this extension work on that configuration. Thank you!

Project Member

Comment 46 by bugdroid1@chromium.org, Dec 19

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4d1557e84992428767937e98808d3bbad915e53f

commit 4d1557e84992428767937e98808d3bbad915e53f
Author: James Darpinian <jdarpinian@chromium.org>
Date: Wed Dec 19 07:17:47 2018

Roll WebGL 5b6cbd7..a2b3563

https://chromium.googlesource.com/external/khronosgroup/webgl.git/+log/5b6cbd7..a2b3563

Bug: 849576,  809237 ,  911918 ,  angleproject:3012 
Bug: 913301,  912842 ,  913033 ,  563816 , 788439
Bug: angleproject:3033
Change-Id: I9b257afd69d26e75d1635633f556249583fdaa52
Cq-Include-Trybots: luci.chromium.try:win_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_angle_rel_ng;luci.chromium.try:win_angle_rel_ng
Reviewed-on: https://chromium-review.googlesource.com/c/1383329
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#617754}
[modify] https://crrev.com/4d1557e84992428767937e98808d3bbad915e53f/DEPS
[modify] https://crrev.com/4d1557e84992428767937e98808d3bbad915e53f/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
[modify] https://crrev.com/4d1557e84992428767937e98808d3bbad915e53f/content/test/gpu/gpu_tests/webgl_conformance_revision.txt

Blocking: 917028
This extension is a great addition, and will allow creating more dynamic scenes which have shader recompilation while application is running smoothly.
And is speeds up even sync shader compilation approach, which is great.

Hopefully all vendors will implement it timely once it is out from a Draft.

All WebGL engines will benefit from that, especially those who push the limits with their content.
Project Member

Comment 50 by bugdroid1@chromium.org, Jan 17 (6 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/angle/angle/+/a100d8f471f79b9f88d387164992cc5bd9c6ee9f

commit a100d8f471f79b9f88d387164992cc5bd9c6ee9f
Author: jchen10 <jie.a.chen@intel.com>
Date: Thu Jan 17 02:50:21 2019

ParallelCompile: add GL backend support

For GL backend, at first each worker thread must have a naitve context
for its own to work in. These worker contexts have to be shared from
the main context, so that all shader and program objects are seen in
any context. This extends backend displays to create and destroy the
worker contexts. RendererGL manages and allocates them to the worker
threads. ShaderImpl has a new compile method added to do the actual
glCompile work in worker thread. The ProgramGL's link method is broken
down by introducing the LinkEventGL class.

Bug: chromium:849576

Change-Id: Idc2c51b4b6c978781ae77810e62c480acc67ebb5
Reviewed-on: https://chromium-review.googlesource.com/c/1373015
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>

[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/Shader.cpp
[add] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/glx/RendererGLX.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/ShaderGL.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/egl/RendererEGL.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libGLESv2.gni
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/ProgramGL.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/Program.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/ProgramGL.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/egl/DisplayEGL.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/features.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/ShaderGL.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/egl/RendererEGL.h
[add] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/cgl/RendererCGL.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/wgl/RendererWGL.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp
[add] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/glx/RendererGLX.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/ShaderImpl.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/egl/android/DisplayAndroid.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/egl/android/DisplayAndroid.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/tests/perf_tests/LinkProgramPerfTest.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/RendererGL.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/renderergl_utils.cpp
[add] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/cgl/RendererCGL.mm
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/wgl/DisplayWGL.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/glx/DisplayGLX.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/ContextGL.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/WorkerThread.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/ContextGL.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/WorkerThread.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/tests/gl_tests/GLSLTest.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/cgl/DisplayCGL.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/RendererGL.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/wgl/RendererWGL.cpp
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/WorkaroundsGL.h
[modify] https://crrev.com/a100d8f471f79b9f88d387164992cc5bd9c6ee9f/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp

Project Member

Comment 51 by bugdroid1@chromium.org, Jan 17 (6 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d098d477924cf1d7d421cc3de4d033663a737ab2

commit d098d477924cf1d7d421cc3de4d033663a737ab2
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Thu Jan 17 05:31:04 2019

Roll src/third_party/angle bb4be1ad1034..94d8a9a445be (2 commits)

https://chromium.googlesource.com/angle/angle.git/+log/bb4be1ad1034..94d8a9a445be


git log bb4be1ad1034..94d8a9a445be --date=short --no-merges --format='%ad %ae %s'
2019-01-17 jiawei.shao@intel.com ES31: Enable several SSBO end2end tests on D3D11
2019-01-17 jie.a.chen@intel.com ParallelCompile: add GL backend support


Created with:
  gclient setdep -r src/third_party/angle@94d8a9a445be

The AutoRoll server is located here: https://autoroll.skia.org/r/angle-chromium-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel

BUG=chromium:849576
TBR=cwallez@chromium.org

Change-Id: I35e75f60158c707b538cd7907436d91eee43ff22
Reviewed-on: https://chromium-review.googlesource.com/c/1417274
Reviewed-by: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#623597}
[modify] https://crrev.com/d098d477924cf1d7d421cc3de4d033663a737ab2/DEPS

Project Member

Comment 52 by bugdroid1@chromium.org, Jan 17 (5 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/angle/angle/+/c66cd693c167dfadef16a6d5086a85c735900119

commit c66cd693c167dfadef16a6d5086a85c735900119
Author: Geoff Lang <geofflang@chromium.org>
Date: Thu Jan 17 16:41:24 2019

GL: Temporarily disable parallel shader compile.

The Skia bots have been unable to roll ANGLE since parallel compile landed in
ANGLE.  Speculatively disable parallel compile using a workaround.
Failed roll: https://skia-review.googlesource.com/c/skia/+/184705

Also seen instability on Linux, Mac and Windows in 922936.

BUG=922936
BUG=849576

Change-Id: I7116b3f6541425135984c52a8077bdb98d961784
Reviewed-on: https://chromium-review.googlesource.com/c/1415729
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>

[modify] https://crrev.com/c66cd693c167dfadef16a6d5086a85c735900119/src/libANGLE/renderer/gl/RendererGL.cpp
[modify] https://crrev.com/c66cd693c167dfadef16a6d5086a85c735900119/src/libANGLE/renderer/gl/WorkaroundsGL.h
[modify] https://crrev.com/c66cd693c167dfadef16a6d5086a85c735900119/src/libANGLE/renderer/gl/renderergl_utils.cpp

Comment 53 by cwallez@chromium.org, Jan 18 (5 days ago)

Blockedon: angleproject:3087
Project Member

Comment 54 by bugdroid1@chromium.org, Jan 18 (5 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/74ee536827fa1558a29601be3959c1f109da5fd0

commit 74ee536827fa1558a29601be3959c1f109da5fd0
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Fri Jan 18 00:39:32 2019

Roll src/third_party/angle b3bdd2acc4f0..5fe7c5b92642 (3 commits)

https://chromium.googlesource.com/angle/angle.git/+log/b3bdd2acc4f0..5fe7c5b92642


git log b3bdd2acc4f0..5fe7c5b92642 --date=short --no-merges --format='%ad %ae %s'
2019-01-17 ynovikov@chromium.org Include common/platform.h where used
2019-01-17 geofflang@chromium.org Reland "Don't call Texture::onDestroy twice for the zero textures."
2019-01-17 geofflang@chromium.org GL: Temporarily disable parallel shader compile.


Created with:
  gclient setdep -r src/third_party/angle@5fe7c5b92642

The AutoRoll server is located here: https://autoroll.skia.org/r/angle-chromium-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel

BUG= chromium:922443 , chromium:922296 ,chromium:922936,chromium:849576
TBR=cwallez@chromium.org

Change-Id: I970bdb5c71c8dd228901354565301076ca794675
Reviewed-on: https://chromium-review.googlesource.com/c/1418126
Reviewed-by: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#623929}
[modify] https://crrev.com/74ee536827fa1558a29601be3959c1f109da5fd0/DEPS

Sign in to add a comment