New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 864524 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Email to this user bounced
Closed: Oct 3
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows
Pri: 2
Type: Feature
Proj-VR
Proj-XR
Proj-XR-VR

Blocked on:
issue angleproject:1669

Blocking:
issue 891953



Sign in to add a comment

Implement WEBGL_multiview WebGL extension

Reported by oetu...@nvidia.com, Jul 17

Issue description

Chrome Version: 69.0.3491.0
OS: Windows, Linux

What steps will reproduce the problem?
(1) Launch Chromium with --enable-webgl-draft-extensions
(2) Run test in https://github.com/KhronosGroup/WebGL/pull/2669

What is the expected result?
Test reports WEBGL_multiview as available.

What happens instead?
WEBGL_multiview is not implemented.

WEBGL_multiview should be implemented on top of ANGLE_multiview that's available on desktop platforms. In the future an implementation leveraging OVR_multiview could also be possible.

 
Cc: bajones@chromium.org
Labels: -Type-Bug Type-Feature
Blockedon: angleproject:1669
Components: Blink>WebXR>VR
Labels: -Pri-3 Pri-2
This extension is important for optimizing the rendering of WebXR content. There are significant performance gains to be had. Raising to P2 and linking to associated ANGLE bug.

Project Member

Comment 4 by bugdroid1@chromium.org, Jul 26

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

commit ad806a38015518e7361ab70adc4696b2e45c449d
Author: Olli Etuaho <oetuaho@nvidia.com>
Date: Thu Jul 26 20:37:11 2018

Integrate WEBGL_multiview extension

This adds working WEBGL_multiview extension integration to the
passthrough command buffer. It's not implemented in the validating
command buffer. The implementation is built completely on top of
ANGLE_multiview, and doesn't support native OVR_multiview as a
backend.

This doesn't yet include support for opaque framebuffers either. That
is intended to be done as a follow-up.

The extension is set as a draft extension so it is not enabled by
default. It can be enabled with the --enable-webgl-draft-extensions
flag.

BUG= 864524 
TEST=WebGL conformance tests

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: I3153bfa3e5fcb6a9e044c8b0762a8a400b728c7a
Reviewed-on: https://chromium-review.googlesource.com/1140299
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578425}
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/content/test/data/gpu/webgl_extension_test.html
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/GLES2/gl2chromium_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/build_gles2_cmd_buffer.py
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/client/gles2_c_lib_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/client/gles2_implementation_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/client/gles2_interface_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/client/gles2_interface_stub_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/common/gles2_cmd_format_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/gles2_cmd_buffer_functions.txt
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/service/feature_info.cc
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/service/feature_info.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/service/gles2_cmd_decoder.cc
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/modules_idl_files.gni
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/webgl/BUILD.gn
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.cc
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/webgl/webgl_extension_name.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/webgl/webgl_framebuffer.cc
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/webgl/webgl_framebuffer.h
[add] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/webgl/webgl_multiview.cc
[add] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/webgl/webgl_multiview.h
[add] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/webgl/webgl_multiview.idl
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/ui/gl/generate_bindings.py
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/ui/gl/gl_bindings.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/ui/gl/gl_bindings_api_autogen_gl.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/ui/gl/gl_bindings_autogen_gl.cc
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/ui/gl/gl_bindings_autogen_gl.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/ui/gl/gl_bindings_autogen_mock.cc
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/ui/gl/gl_bindings_autogen_mock.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/ui/gl/gl_mock_autogen_gl.h
[modify] https://crrev.com/ad806a38015518e7361ab70adc4696b2e45c449d/ui/gl/gl_stub_autogen_gl.h

Project Member

Comment 5 by bugdroid1@chromium.org, Aug 2

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

commit c09f5e8372ea3ec3338c6b5e248f88f707d6d46b
Author: Olli Etuaho <oetuaho@nvidia.com>
Date: Thu Aug 02 08:08:10 2018

Only enable ANGLE_multiview extension on request

The ANGLE_multiview extension was erroneously enabled by default if
available in the GPU passthrough command buffer. This was visible as
the GL_OVR_multiview preprocessor macro being defined in shaders even
if the WEBGL_multiview extension was not enabled.

This is now fixed so that the extension is only enabled when
requested.

BUG= 864524 
TEST=WebGL conformance tests

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: Ie6e684fb91af4bb50aac7027ee9f85cd4420fe37
Reviewed-on: https://chromium-review.googlesource.com/1158569
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Cr-Commit-Position: refs/heads/master@{#580107}
[modify] https://crrev.com/c09f5e8372ea3ec3338c6b5e248f88f707d6d46b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc

Project Member

Comment 6 by bugdroid1@chromium.org, Aug 23

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

commit 548ac6ffdaac420fbc90a96f09104ef401bc2c38
Author: Corentin Wallez <cwallez@chromium.org>
Date: Thu Aug 23 13:42:45 2018

Suppress Win/Intel/Passthrough/OpenGL WebGL CTS failures

These are the initial suppressions because the
webgl[2]_gl_passthrough_conformance_tests just got added on Win/Intel.

TBR=kbr@chromium.org

BUG=angleproject:2760
BUG=chromium:602688
BUG= chromium:809594 
BUG= chromium:864524 
BUG= chromium:876777 

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: I88cc85a313ab09fafca5f44129a7f85cc99ddcb2
Reviewed-on: https://chromium-review.googlesource.com/1186462
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585470}
[modify] https://crrev.com/548ac6ffdaac420fbc90a96f09104ef401bc2c38/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py

Status: Fixed (was: Started)
This has been done for a while, further work like exposing the multiview extension by default or integrating multiview to WebXR can be tracked in a different bug.
Blocking: 891953

Sign in to add a comment