New issue
Advanced search Search tips

Issue 890539 link

Starred by 4 users

Issue metadata

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

Blocking:
issue 891861
issue 905894



Sign in to add a comment

Investigate/implement EXT_multi_draw_arrays

Project Member Reported by kainino@chromium.org, Sep 29

Issue description

EXT_multi_draw_arrays was proposed here:
https://github.com/KhronosGroup/WebGL/pull/2717

We should experiment with this extension, trying out proposed modifications and figuring out what will give us a useful API for improving application performance. In particular, we should look at:
- instancing support (maybe a separate extension for webgl2 only)
- gl_DrawID support (only possible with ARB_shader_draw_parameters, GL 4.6, or multidraw emulation)
- gl_CumulativeInstanceID (βˆ‘previous instance counts in this multidraw + gl_InstanceID, probably only possible via multidraw emulation)

Austin, I'm assigning this to you and marking it started since you've already started looking at this.
When you make a CL, link it with this bug.
 
Blocking: 891861
Project Member

Comment 2 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

Project Member

Comment 3 by bugdroid1@chromium.org, Oct 26

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

commit 7cf9cd2423b8891953377df41b56505c17b65f02
Author: Austin Eng <enga@chromium.org>
Date: Fri Oct 26 19:41:23 2018

Add flags to shader translator to emulate gl_DrawID

Adds support for translating gl_DrawID for implementation of
GL_ANGLE_multi_draw.

Currently the change only supports and allows emulation of the
draw id using a uniform variable named `gl_DrawID`. This uniform is
mapped in the translated shader to a hashed name that does not
use the gl_ namespace

Bug: chromium:890539

Change-Id: I08a246ca911e88e733ccdf22f1ed69dcae948e05
Reviewed-on: https://chromium-review.googlesource.com/c/1271957
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>

[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/ExtensionBehavior.h
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/Compiler.cpp
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/TranslatorESSL.cpp
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/tree_util/BuiltIn_autogen.h
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/libANGLE/Caps.cpp
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/ExtensionBehavior.cpp
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/tests/angle_unittests.gni
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/builtin_symbols_hash_autogen.txt
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/BaseTypes.h
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/CollectVariables.cpp
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/TranslatorVulkan.cpp
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/builtin_variables.json
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/ShaderLang.cpp
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler.gni
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/Initialize.cpp
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/include/GLSLANG/ShaderLang.h
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/SymbolTable_autogen.cpp
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/libANGLE/Context.cpp
[add] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/tree_ops/EmulateGLDrawID.h
[add] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/tests/compiler_tests/EmulateGLDrawID_test.cpp
[add] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/compiler/translator/tree_ops/EmulateGLDrawID.cpp
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/libANGLE/Caps.h
[modify] https://crrev.com/7cf9cd2423b8891953377df41b56505c17b65f02/src/libANGLE/Compiler.cpp

Project Member

Comment 5 by bugdroid1@chromium.org, Oct 27

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

commit 8aaa3e603fbd4c88e610b5c118b80f13094c63a7
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Sat Oct 27 01:18:47 2018

Roll src/third_party/angle 3ce69ba3eb60..7cf9cd2423b8 (6 commits)

https://chromium.googlesource.com/angle/angle.git/+log/3ce69ba3eb60..7cf9cd2423b8


git log 3ce69ba3eb60..7cf9cd2423b8 --date=short --no-merges --format='%ad %ae %s'
2018-10-26 enga@chromium.org Add flags to shader translator to emulate gl_DrawID
2018-10-26 jmadill@chromium.org Fix entry points.
2018-10-26 till.rathmann@gmx.de Support GL_OES_texture_border_clamp
2018-10-26 jmadill@chromium.org Vulkan: Make layers not depend on libvulkan.
2018-10-26 syoussefi@chromium.org Add compiler printf attribute to relevant functions
2018-10-26 geofflang@chromium.org Don't set native blob cache callbacks if the driver doesn't support it.


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

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:890539
TBR=jmadill@chromium.org

Change-Id: I94ca225e80293430596f5469c2f714e575b65b62
Reviewed-on: https://chromium-review.googlesource.com/c/1302705
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@{#603284}
[modify] https://crrev.com/8aaa3e603fbd4c88e610b5c118b80f13094c63a7/DEPS

Project Member

Comment 6 by bugdroid1@chromium.org, Oct 27

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

commit 0c5f8d40c049d0ad41c3f7f25c457150041a1082
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Sat Oct 27 04:22:18 2018

Roll src/third_party/angle 7cf9cd2423b8..fefaba5bfd6a (1 commits)

https://chromium.googlesource.com/angle/angle.git/+log/7cf9cd2423b8..fefaba5bfd6a


git log 7cf9cd2423b8..fefaba5bfd6a --date=short --no-merges --format='%ad %ae %s'
2018-10-27 geofflang@chromium.org Regenerate hashes for the builtin symbol table.


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

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:890539
TBR=jmadill@chromium.org

Change-Id: I925068ac790f627e36282f9a196af699479c64c0
Reviewed-on: https://chromium-review.googlesource.com/c/1303418
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@{#603309}
[modify] https://crrev.com/0c5f8d40c049d0ad41c3f7f25c457150041a1082/DEPS

Project Member

Comment 7 by bugdroid1@chromium.org, Nov 6

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

commit 1bf18ce9e2caca7067b4439373f4fb04a5cd7d21
Author: Austin Eng <enga@chromium.org>
Date: Tue Nov 06 18:04:07 2018

Implement GL_ANGLE_multi_draw

This patch adds entrypoints glMultiDrawArraysANGLE,
glMultiDrawElementsANGLE, glMultiDrawArraysInstancedANGLE,
annd glMultiDrawElementsInstancedANGLE

Bug: chromium:890539

Change-Id: Ic9c374c53892460f44ca6e73a253b78473ac2dff
Reviewed-on: https://chromium-review.googlesource.com/c/1282268
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>

[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libANGLE/validationES3.h
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/scripts/entry_point_packed_gl_enums.json
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/include/GLES2/gl2ext_angle.h
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/scripts/generate_entry_points.py
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libGLESv2/entry_points_enum_autogen.h
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/scripts/gl_angle_ext.xml
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/scripts/run_code_generation_hashes.json
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libANGLE/Shader.cpp
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libANGLE/Program.cpp
[add] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/extensions/ANGLE_multi_draw.txt
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libANGLE/Program.h
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libANGLE/validationES3.cpp
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libANGLE/ProgramLinkedResources.cpp
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/include/GLES2/gl2ext_explicit_context_autogen.inc
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libANGLE/renderer/d3d/ProgramD3D.cpp
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/compiler/translator/ResourcesHLSL.cpp
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libANGLE/validationES2.h
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/tests/angle_end2end_tests.gni
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libGLESv2/entry_points_gles_ext_autogen.h
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libGLESv2/libGLESv2_autogen.def
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libGLESv2/entry_points_gles_ext_autogen.cpp
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/include/GLSLANG/ShaderVars.h
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/compiler/translator/ShaderVars.cpp
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libANGLE/validationES.h
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libANGLE/Context.cpp
[add] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/tests/gl_tests/MultiDrawTest.cpp
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libGLESv2/libGLESv2_autogen.cpp
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libANGLE/validationES2.cpp
[modify] https://crrev.com/1bf18ce9e2caca7067b4439373f4fb04a5cd7d21/src/libANGLE/Context.h

Project Member

Comment 8 by bugdroid1@chromium.org, Nov 6

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

commit 4074cb88026d5d76383d8dc7e94971bf05d143f7
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Tue Nov 06 20:26:37 2018

Roll src/third_party/angle 77b2436e28f4..1bf18ce9e2ca (2 commits)

https://chromium.googlesource.com/angle/angle.git/+log/77b2436e28f4..1bf18ce9e2ca


git log 77b2436e28f4..1bf18ce9e2ca --date=short --no-merges --format='%ad %ae %s'
2018-11-06 enga@chromium.org Implement GL_ANGLE_multi_draw
2018-11-06 jmadill@chromium.org Vulkan: Use dynamic state for Viewport and Scissor.


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

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:890539
TBR=syoussefi@chromium.org

Change-Id: I77b4b457b5709f4d3e4992ec85f71ab5f108f937
Reviewed-on: https://chromium-review.googlesource.com/c/1320155
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@{#605803}
[modify] https://crrev.com/4074cb88026d5d76383d8dc7e94971bf05d143f7/DEPS

Project Member

Comment 9 by bugdroid1@chromium.org, Nov 9

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

commit 6994b656977da0e4058d8a52c16ed1761393bb2b
Author: Austin Eng <enga@chromium.org>
Date: Fri Nov 09 02:24:31 2018

Update build_cmd_buffer_lib to support multiple size-specifying arguments

Update build_cmd_buffer_lib.py to support multiple size-specifying args.
The existing code gen which assumes a single "data" argument with a final
argument specifying the number of bytes does not work for functions that
require multiple arrays of data.
This change is necesary for the GL_ANGLE_multi_draw extension
which adds entrypoints with multiple array arguments.

Bug: chromium:890539
Change-Id: I54c208e5592a1a06c90707536d90742e745eb7b7
Reviewed-on: https://chromium-review.googlesource.com/c/1297716
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606703}
[modify] https://crrev.com/6994b656977da0e4058d8a52c16ed1761393bb2b/gpu/command_buffer/build_cmd_buffer_lib.py
[modify] https://crrev.com/6994b656977da0e4058d8a52c16ed1761393bb2b/gpu/command_buffer/build_gles2_cmd_buffer.py
[modify] https://crrev.com/6994b656977da0e4058d8a52c16ed1761393bb2b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
[modify] https://crrev.com/6994b656977da0e4058d8a52c16ed1761393bb2b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc

Blocking: 905894
Project Member

Comment 11 by bugdroid1@chromium.org, Nov 16

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

commit 70eeb1f3fb681c599efcb3083138f21b9311ed80
Author: Kenneth Russell <kbr@chromium.org>
Date: Fri Nov 16 00:56:34 2018

Rerun build_raster_cmd_buffer.py.

Needed to be rerun after recent changes.

Bug: 890539, 905459,  905889 
Change-Id: I6258f331d0d2be44d000e792c5e2a571342bec26
Reviewed-on: https://chromium-review.googlesource.com/c/1338724
Reviewed-by: James Darpinian <jdarpinian@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608607}
[modify] https://crrev.com/70eeb1f3fb681c599efcb3083138f21b9311ed80/gpu/command_buffer/service/raster_decoder_autogen.h

Project Member

Comment 12 by bugdroid1@chromium.org, Nov 28

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

commit 3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901
Author: Austin Eng <enga@chromium.org>
Date: Wed Nov 28 01:50:44 2018

Change offsets in MultiDrawElements* entrypoints to match glMultiDrawElements

This patch changes arguments for MultiDrawElements and
MultiDrawElementsInstanced from from GLsizei *offsets to
const* GLvoid* indices.

Bug: chromium:890539

Change-Id: I2124cf2daeaa6af0f889f3c46aa2b8c77be200a6
Reviewed-on: https://chromium-review.googlesource.com/c/1352591
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>

[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/include/GLES2/gl2ext_angle.h
[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/extensions/ANGLE_multi_draw.txt
[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/src/libANGLE/validationESEXT_autogen.h
[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/src/libANGLE/Context.cpp
[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/src/tests/gl_tests/MultiDrawTest.cpp
[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/scripts/gl_angle_ext.xml
[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/src/libGLESv2/libGLESv2_autogen.cpp
[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/src/libANGLE/validationES3.cpp
[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/src/libGLESv2/entry_points_gles_ext_autogen.h
[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/src/libGLESv2/entry_points_gles_ext_autogen.cpp
[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/include/GLES2/gl2ext_explicit_context_autogen.inc
[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/src/libANGLE/validationES2.cpp
[modify] https://crrev.com/3b7c9d099b0da0e70ebe9a0d73cfa644ee1c4901/src/libANGLE/Context.h

Project Member

Comment 13 by bugdroid1@chromium.org, Nov 28

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

commit 8883f086b75d4e998ffb6b5b9a0a1d7d7ecdc221
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Wed Nov 28 03:13:48 2018

Roll src/third_party/angle 752d220a5f31..3b7c9d099b0d (4 commits)

https://chromium.googlesource.com/angle/angle.git/+log/752d220a5f31..3b7c9d099b0d


git log 752d220a5f31..3b7c9d099b0d --date=short --no-merges --format='%ad %ae %s'
2018-11-28 enga@chromium.org Change offsets in MultiDrawElements* entrypoints to match glMultiDrawElements
2018-11-28 jmadill@chromium.org Remove gl::Error.
2018-11-27 timvp@google.com Enhance ANGLE for Android Developer Options
2018-11-27 jmadill@chromium.org Slight refactor to ErrorStrings.h.


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

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:890539
TBR=fjhenigman@chromium.org

Change-Id: I9745811bd3b3fcd37a1aff9bb1462953f0ad174c
Reviewed-on: https://chromium-review.googlesource.com/c/1352605
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@{#611541}
[modify] https://crrev.com/8883f086b75d4e998ffb6b5b9a0a1d7d7ecdc221/DEPS

Project Member

Comment 14 by bugdroid1@chromium.org, Nov 29

Project Member

Comment 15 by bugdroid1@chromium.org, Dec 4

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

commit 27c146ce4c63e5ca72e6533fdf68ae4312e1c059
Author: Austin Eng <enga@chromium.org>
Date: Tue Dec 04 18:20:52 2018

Implement GL_WEBGL_multi_draw and GL_WEBGL_multi_draw_instanced do-ers.

This patch implements do-ers for the GL_WEBGL_multi_draw and
GL_WEBGL_multi_draw_instanced extensions in the validating command
decoder. It changes DoDrawArrays and DoDrawElements into DoMulti*
functions and factors validation to work with arrays of data.

Bug: chromium:890539
Change-Id: Ieb646fd0334a82db4b302c44e517b1d3041d0ff9
Reviewed-on: https://chromium-review.googlesource.com/c/1343284
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#613608}
[modify] https://crrev.com/27c146ce4c63e5ca72e6533fdf68ae4312e1c059/gpu/command_buffer/service/feature_info.cc
[modify] https://crrev.com/27c146ce4c63e5ca72e6533fdf68ae4312e1c059/gpu/command_buffer/service/feature_info.h
[modify] https://crrev.com/27c146ce4c63e5ca72e6533fdf68ae4312e1c059/gpu/command_buffer/service/gles2_cmd_decoder.cc
[modify] https://crrev.com/27c146ce4c63e5ca72e6533fdf68ae4312e1c059/gpu/command_buffer/service/program_manager.cc
[modify] https://crrev.com/27c146ce4c63e5ca72e6533fdf68ae4312e1c059/gpu/command_buffer/service/program_manager.h
[modify] https://crrev.com/27c146ce4c63e5ca72e6533fdf68ae4312e1c059/gpu/command_buffer/service/shader_translator.cc
[modify] https://crrev.com/27c146ce4c63e5ca72e6533fdf68ae4312e1c059/gpu/command_buffer/service/transform_feedback_manager.cc
[modify] https://crrev.com/27c146ce4c63e5ca72e6533fdf68ae4312e1c059/gpu/command_buffer/service/transform_feedback_manager.h

Project Member

Comment 16 by bugdroid1@chromium.org, Dec 4

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

commit 80f1e31950c38663e3678b9ba1fb38314e878f54
Author: Austin Eng <enga@chromium.org>
Date: Tue Dec 04 20:08:36 2018

Add WEBGL_multi_draw and WEBGL_multi_draw_instanced to the command buffer

Add a helper to copy multiple parallel arrays via transfer buffer.
Transfer buffer used to transfer data is limited in size. Functions
such as BufferSubData that take large arrays of data are emulated by
doing multiple function calls on slices of the buffer.
The new commands provided by the extension require multiple buffers.
This patch adds a helper to copy data from multiple buffers when an
equal number of elements is needed for each slice.

Bug: chromium:890539
Change-Id: Ide3493c0dad3419a2c52db2c8462cfecf42fdb07
Reviewed-on: https://chromium-review.googlesource.com/c/1343359
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#613667}
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/BUILD.gn
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/GLES2/gl2chromium_autogen.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/build_gles2_cmd_buffer.py
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/BUILD.gn
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/gles2_c_lib_autogen.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/gles2_implementation.cc
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/gles2_implementation.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/gles2_implementation_autogen.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/gles2_interface_autogen.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/gles2_interface_stub_autogen.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
[add] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/transfer_buffer_cmd_copy_helpers.h
[add] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/client/transfer_buffer_cmd_copy_helpers_unittest.cc
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/common/gles2_cmd_format_autogen.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/gles2_cmd_buffer_functions.txt
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/service/gles2_cmd_decoder.cc
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers.cc
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3.cc
[modify] https://crrev.com/80f1e31950c38663e3678b9ba1fb38314e878f54/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h

Project Member

Comment 18 by bugdroid1@chromium.org, Dec 6

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

commit 11e903b61b49feff17e97ed5fe8060f23d16900e
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Thu Dec 06 09:38:09 2018

Roll src/third_party/angle 8f1b7a66a5e3..d300548fcc28 (1 commits)

https://chromium.googlesource.com/angle/angle.git/+log/8f1b7a66a5e3..d300548fcc28


git log 8f1b7a66a5e3..d300548fcc28 --date=short --no-merges --format='%ad %ae %s'
2018-12-06 enga@chromium.org Add ANGLE_multi_draw entrypoints to proc table


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

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:890539
TBR=ynovikov@chromium.org

Change-Id: Id92afc679acf0f0e00f46fba3d8806da8987f4d1
Reviewed-on: https://chromium-review.googlesource.com/c/1365175
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@{#614297}
[modify] https://crrev.com/11e903b61b49feff17e97ed5fe8060f23d16900e/DEPS

Project Member

Comment 19 by bugdroid1@chromium.org, Dec 7

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

commit b08782cb147280fccd812620c317ccae1d580277
Author: Austin Eng <enga@chromium.org>
Date: Thu Dec 06 19:50:04 2018

Add WebGL bindings for WEBGL_multi_draw and WEBGL_multi_draw_instanced

This patch provides the WEBGL_multi_draw extension object with
entrypoints ext.multiDrawArraysWEBGL and ext.multiDrawElementsWEBGL,
and it provides the WEBGL_multi_draw_instanced extension object with
entrypoints ext.multiDrawArraysInstancedWEBGL and
ext.multiDrawElementsInstancedWEBGL.
This extension will allow batching multiple draw calls which has
shown to significantly increase performance

Bug: chromium:890539
Change-Id: I3a5845a2b90ebf3458c35bdd3dc3b92a0460469b
Reviewed-on: https://chromium-review.googlesource.com/c/1343370
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
Cr-Commit-Position: refs/heads/master@{#614456}
[modify] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
[modify] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
[modify] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/bindings/modules/v8/generated.gni
[modify] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/modules_idl_files.gni
[modify] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/BUILD.gn
[modify] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc
[modify] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h
[modify] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl_extension_name.h
[add] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl_multi_draw.cc
[add] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl_multi_draw.h
[add] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl_multi_draw.idl
[add] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl_multi_draw_common.cc
[add] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl_multi_draw_common.h
[add] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl_multi_draw_instanced.cc
[add] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl_multi_draw_instanced.h
[add] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl_multi_draw_instanced.idl
[modify] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl_rendering_context.cc
[modify] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl_rendering_context.h
[modify] https://crrev.com/b08782cb147280fccd812620c317ccae1d580277/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h

Project Member

Comment 20 by bugdroid1@chromium.org, Dec 10

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

commit 153e0224da45beaaee596e434b0c81e349b2ab21
Author: Austin Eng <enga@chromium.org>
Date: Mon Dec 10 17:46:33 2018

Add gl_DrawID emulation for ESSL3 with ANGLE_multi_draw

Bug: chromium:890539
Change-Id: I3d9a9429608afb454f076013f3ed844e115c56cc
Reviewed-on: https://chromium-review.googlesource.com/c/1368784
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>

[modify] https://crrev.com/153e0224da45beaaee596e434b0c81e349b2ab21/src/compiler/translator/builtin_variables.json
[modify] https://crrev.com/153e0224da45beaaee596e434b0c81e349b2ab21/src/compiler/translator/SymbolTable_autogen.cpp
[modify] https://crrev.com/153e0224da45beaaee596e434b0c81e349b2ab21/scripts/run_code_generation_hashes.json
[modify] https://crrev.com/153e0224da45beaaee596e434b0c81e349b2ab21/src/compiler/translator/tree_util/BuiltIn_autogen.h
[modify] https://crrev.com/153e0224da45beaaee596e434b0c81e349b2ab21/src/compiler/translator/builtin_symbols_hash_autogen.txt
[modify] https://crrev.com/153e0224da45beaaee596e434b0c81e349b2ab21/src/tests/compiler_tests/EmulateGLDrawID_test.cpp
[modify] https://crrev.com/153e0224da45beaaee596e434b0c81e349b2ab21/src/compiler/translator/tree_ops/EmulateGLDrawID.cpp
[modify] https://crrev.com/153e0224da45beaaee596e434b0c81e349b2ab21/src/tests/compiler_tests/ImmutableString_test_autogen.cpp

Project Member

Comment 21 by bugdroid1@chromium.org, Dec 10

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

commit 082c8955b39ccc7e6f2fabefd0f893e33135fbd9
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Mon Dec 10 19:20:29 2018

Roll src/third_party/angle 19f2f9eb2503..153e0224da45 (1 commits)

https://chromium.googlesource.com/angle/angle.git/+log/19f2f9eb2503..153e0224da45


git log 19f2f9eb2503..153e0224da45 --date=short --no-merges --format='%ad %ae %s'
2018-12-10 enga@chromium.org Add gl_DrawID emulation for ESSL3 with ANGLE_multi_draw


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

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:890539
TBR=jmadill@chromium.org

Change-Id: I6fbce5f8b72ff794c1b944eafebb7d916410a6eb
Reviewed-on: https://chromium-review.googlesource.com/c/1370200
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@{#615197}
[modify] https://crrev.com/082c8955b39ccc7e6f2fabefd0f893e33135fbd9/DEPS

There's currently an issue where the gl_DrawID can be incorrect for large MultiDraw calls. MultiDraws that do not fit in the transfer buffer are chunked into multiple calls. Each of these will have the gl_DrawID reset to 0.

I'm working on fixing this here: https://chromium-review.googlesource.com/c/chromium/src/+/1372636 by adding Begin/End commands which will buffer the chunks until the service receives the End command.
Project Member

Comment 24 by bugdroid1@chromium.org, Jan 3

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

commit b9d80fe4ac4ba03542034078f527058043175200
Author: Austin Eng <enga@chromium.org>
Date: Thu Jan 03 22:25:24 2019

Add MultiDrawManager with MultiDrawBeginCHROMIUM and MultiDrawEndCHROMIUM commands to batch chunks of MultiDraw calls

MultiDraw commands that are larger than the transfer buffer are chunked
into multiple commands. This was incorrect because gl_DrawID would get
reset to 0 for each chunk. This change adds Begin and End commands which
allow MultiDraw chunks to be batched and submitted all together when
MultiDrawEndCHROMIUM is received.

This change includes tests which check the expected commands and that
the gl_DrawIDs for commands larger than the transfer buffer are correct.

Bug: chromium:890539
Change-Id: Ida64685be9779b6f6419d247126378a057cb627c
Reviewed-on: https://chromium-review.googlesource.com/c/1372636
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619784}
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/BUILD.gn
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/build_gles2_cmd_buffer.py
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/client/gles2_implementation.cc
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/client/gles2_implementation_unittest.cc
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/common/gles2_cmd_format_autogen.h
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/gles2_cmd_buffer_functions.txt
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/BUILD.gn
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/gles2_cmd_decoder.cc
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers.cc
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3.cc
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h
[add] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/multi_draw_manager.cc
[add] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/service/multi_draw_manager.h
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/tests/gl_manager.cc
[modify] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/tests/gl_manager.h
[add] https://crrev.com/b9d80fe4ac4ba03542034078f527058043175200/gpu/command_buffer/tests/gl_webgl_multi_draw_test.cc

Fantastic work Austin! When this is available in Canary on Win/Mac, could you draft a post to public_webgl announcing this extension's availability behind a flag, and asking people to test it out?

Project Member

Comment 27 by bugdroid1@chromium.org, Jan 18 (4 days ago)

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

commit c3abb7f1a250abb03a169947395cf319c7324227
Author: Shahbaz Youssefi <syoussefi@chromium.org>
Date: Fri Jan 18 22:15:12 2019

Fix MultiDraw shaders when loaded from cache

State updates that need to be done after linking vs. deserializing can
get out of sync, as was the case for mDrawIDLocation (introduced in
1bf18ce9e2caca7067b4439373f4fb04a5cd7d21).  This commit introduces a
common function that's called from both paths to hopefully avoid such
issues in the future.

The serialize/deserialize functions are moved from MemoryProgramCache
to the Program itself.

Bug: 890539, angleproject:2516 
Change-Id: Idc5b87de53298aacbb1884e79e721b876281fb13
Reviewed-on: https://chromium-review.googlesource.com/c/1417970
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>

[modify] https://crrev.com/c3abb7f1a250abb03a169947395cf319c7324227/src/libANGLE/MemoryProgramCache.h
[modify] https://crrev.com/c3abb7f1a250abb03a169947395cf319c7324227/src/libANGLE/MemoryProgramCache.cpp
[modify] https://crrev.com/c3abb7f1a250abb03a169947395cf319c7324227/src/libANGLE/Program.h
[modify] https://crrev.com/c3abb7f1a250abb03a169947395cf319c7324227/src/libANGLE/Program.cpp

Project Member

Comment 28 by bugdroid1@chromium.org, Jan 19 (4 days ago)

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

commit b16ce663219653a98a1f4e9ecff89cb5ffcc8a3d
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Sat Jan 19 02:25:28 2019

Roll src/third_party/angle 6ae34889cd8a..c3abb7f1a250 (1 commits)

https://chromium.googlesource.com/angle/angle.git/+log/6ae34889cd8a..c3abb7f1a250


git log 6ae34889cd8a..c3abb7f1a250 --date=short --no-merges --format='%ad %ae %s'
2019-01-18 syoussefi@chromium.org Fix MultiDraw shaders when loaded from cache


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

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:890539
TBR=cwallez@chromium.org

Change-Id: I8fdaff7cebeb6e057eaf837fff4fab708d1ebd79
Reviewed-on: https://chromium-review.googlesource.com/c/1423468
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@{#624422}
[modify] https://crrev.com/b16ce663219653a98a1f4e9ecff89cb5ffcc8a3d/DEPS

Project Member

Comment 29 by 42576172...@developer.gserviceaccount.com, Jan 19 (4 days ago)

πŸ“ Pinpoint job started.
https://pinpoint-dot-chromeperf.appspot.com/job/1625a112540000
Project Member

Comment 30 by 42576172...@developer.gserviceaccount.com, Jan 19 (3 days ago)

πŸ“ Pinpoint job started.
https://pinpoint-dot-chromeperf.appspot.com/job/12b73f02540000
Project Member

Comment 31 by 42576172...@developer.gserviceaccount.com, Jan 19 (3 days ago)

πŸ“ Pinpoint job started.
https://pinpoint-dot-chromeperf.appspot.com/job/14caa86a540000
Project Member

Comment 32 by 42576172...@developer.gserviceaccount.com, Jan 19 (3 days ago)

πŸ“ Pinpoint job started.
https://pinpoint-dot-chromeperf.appspot.com/job/126b18bc540000
Project Member

Comment 33 by 42576172...@developer.gserviceaccount.com, Jan 19 (3 days ago)

πŸ“ Job complete. See results below.
https://pinpoint-dot-chromeperf.appspot.com/job/1625a112540000
Project Member

Comment 34 by 42576172...@developer.gserviceaccount.com, Jan 19 (3 days ago)

πŸ“ Job complete. See results below.
https://pinpoint-dot-chromeperf.appspot.com/job/14caa86a540000
Project Member

Comment 35 by 42576172...@developer.gserviceaccount.com, Jan 19 (3 days ago)

πŸ“ Job complete. See results below.
https://pinpoint-dot-chromeperf.appspot.com/job/126b18bc540000
Project Member

Comment 36 by 42576172...@developer.gserviceaccount.com, Jan 20 (3 days ago)

πŸ“ Job complete. See results below.
https://pinpoint-dot-chromeperf.appspot.com/job/12b73f02540000
Project Member

Comment 37 by 42576172...@developer.gserviceaccount.com, Today (12 hours ago)

πŸ“ Pinpoint job started.
https://pinpoint-dot-chromeperf.appspot.com/job/107546c9540000
Project Member

Comment 38 by 42576172...@developer.gserviceaccount.com, Today (11 hours ago)

πŸ“ Job complete. See results below.
https://pinpoint-dot-chromeperf.appspot.com/job/107546c9540000

Comment 39 by enga@chromium.org, Today (10 hours ago)

Here are preliminary graphs of perf tests showing significant improvements using the WEBGL_multi_draw extension:
https://chromeperf.appspot.com/report?sid=f8a693cf29ec08d62a160dd7972d46a37dd6d6f849c7e0aa1241f878c81799ab&start_rev=622822&end_rev=623670

Here are slides presented at the Khronos WebGL San Diego F2F:
https://docs.google.com/presentation/d/1iznxalgXLLSWVNHQ6le9Gzv_TYzsD5R_gg8yT5ckf2A/edit?usp=sharing

The conclusions from this data are that there is an extremely significant speedup on the renderer process when using the extension. About 3x on Mac and about 6x on Windows and Linux.

When using uniform data, the performance improvements are even more significant on both the renderer and GPU processes (30x and 3x, respectively). Because WEBGL_multi_draw allows the application to bind a UBO and index into it with the gl_DrawID, no per-draw uniforms are needed. We save time both in bindings and command buffer overhead for setting uniforms as well as time spent on the service side doing validation and talking to the GL driver.

There were concerns from the working group about distinguishing whether the performance improvements on the renderer processes are from a reduction in Javascript bindings overhead or from Chromium's command buffer.

This Pinpoint job (https://pinpoint-dot-chromeperf.appspot.com/job/107546c9540000) on Mac tests the performance of WEBGL_multi_draw when the for-loop is implemented on the client-side. This factors out performance improvements that may have occurred due to a reduction of command buffer overhead. For 20,000 triangles,
 - MultiDraw costs 1.20ms on the renderer process
 - Control group costs 2.47ms on the renderer process
The conclusion here is that changing absolutely nothing in the GPU service and simply reducing the Javascript bindings cost gives us a 2x performance improvement.

Sign in to add a comment