WebVR occasionally needs to show some popup UI on top of the submitted frame from the web contents. Windows devices don't currently support this as they don't go through VRShell. Support this on Windows.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0d580dc64fdba2a626b49c680a6e8fb8521d9633 commit 0d580dc64fdba2a626b49c680a6e8fb8521d9633 Author: Bill Orr <billorr@chromium.org> Date: Mon Sep 17 21:14:19 2018 Separate OpenVRRenderLoop into openvr-specific and shared code. This change starts to clean up OpenVRRenderLoop so it can share more code with OculusRenderLoop. BUG= 819448 Cq-Include-Trybots: luci.chromium.try:win_optional_gpu_tests_rel Change-Id: I279fbe89151257ceda86a6145f0d2166268a8132 Reviewed-on: https://chromium-review.googlesource.com/1227309 Commit-Queue: Bill Orr <billorr@chromium.org> Reviewed-by: Klaus Weidner <klausw@chromium.org> Cr-Commit-Position: refs/heads/master@{#591816} [modify] https://crrev.com/0d580dc64fdba2a626b49c680a6e8fb8521d9633/device/vr/BUILD.gn [modify] https://crrev.com/0d580dc64fdba2a626b49c680a6e8fb8521d9633/device/vr/openvr/openvr_device.cc [modify] https://crrev.com/0d580dc64fdba2a626b49c680a6e8fb8521d9633/device/vr/openvr/openvr_device.h [modify] https://crrev.com/0d580dc64fdba2a626b49c680a6e8fb8521d9633/device/vr/openvr/openvr_render_loop.cc [modify] https://crrev.com/0d580dc64fdba2a626b49c680a6e8fb8521d9633/device/vr/openvr/openvr_render_loop.h [add] https://crrev.com/0d580dc64fdba2a626b49c680a6e8fb8521d9633/device/vr/windows/compositor_base.cc [add] https://crrev.com/0d580dc64fdba2a626b49c680a6e8fb8521d9633/device/vr/windows/compositor_base.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a49a96f8104da8a48e92cfa46a9e056e2cd17d01 commit a49a96f8104da8a48e92cfa46a9e056e2cd17d01 Author: Bill Orr <billorr@chromium.org> Date: Mon Sep 17 22:44:51 2018 Share common code between OculusRenderLoop and OpenVRRenderLoop This change starts to clean up OculusRenderLoop so it can share a common base class with OpenVRRenderLoop. BUG= 819448 Cq-Include-Trybots: luci.chromium.try:win_optional_gpu_tests_rel Change-Id: Iac23f7325fa1af94f53cef6b3a0f42b3b58b1741 Reviewed-on: https://chromium-review.googlesource.com/1227367 Commit-Queue: Bill Orr <billorr@chromium.org> Reviewed-by: Klaus Weidner <klausw@chromium.org> Cr-Commit-Position: refs/heads/master@{#591855} [modify] https://crrev.com/a49a96f8104da8a48e92cfa46a9e056e2cd17d01/device/vr/oculus/oculus_device.cc [modify] https://crrev.com/a49a96f8104da8a48e92cfa46a9e056e2cd17d01/device/vr/oculus/oculus_device.h [modify] https://crrev.com/a49a96f8104da8a48e92cfa46a9e056e2cd17d01/device/vr/oculus/oculus_render_loop.cc [modify] https://crrev.com/a49a96f8104da8a48e92cfa46a9e056e2cd17d01/device/vr/oculus/oculus_render_loop.h [modify] https://crrev.com/a49a96f8104da8a48e92cfa46a9e056e2cd17d01/device/vr/openvr/openvr_render_loop.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cf3183c0bbb6009b09624d6bde1405113317d66f commit cf3183c0bbb6009b09624d6bde1405113317d66f Author: Bill Orr <billorr@chromium.org> Date: Wed Sep 19 22:20:42 2018 Create a compositor that can composite overlays and WebXR content This change adds support to OpenVR and Oculus rendering to show browser-generated overlays on top of WebXR content. The overlays are not yet exposed by this change. BUG= 819448 Cq-Include-Trybots: luci.chromium.try:win_optional_gpu_tests_rel Change-Id: Ic60f65607d03da48e1685d342aa6dd6c532efb29 Reviewed-on: https://chromium-review.googlesource.com/1232876 Commit-Queue: Bill Orr <billorr@chromium.org> Reviewed-by: Klaus Weidner <klausw@chromium.org> Cr-Commit-Position: refs/heads/master@{#592573} [modify] https://crrev.com/cf3183c0bbb6009b09624d6bde1405113317d66f/device/vr/oculus/oculus_render_loop.cc [modify] https://crrev.com/cf3183c0bbb6009b09624d6bde1405113317d66f/device/vr/oculus/oculus_render_loop.h [modify] https://crrev.com/cf3183c0bbb6009b09624d6bde1405113317d66f/device/vr/openvr/openvr_render_loop.cc [modify] https://crrev.com/cf3183c0bbb6009b09624d6bde1405113317d66f/device/vr/windows/compositor_base.cc [modify] https://crrev.com/cf3183c0bbb6009b09624d6bde1405113317d66f/device/vr/windows/compositor_base.h [modify] https://crrev.com/cf3183c0bbb6009b09624d6bde1405113317d66f/device/vr/windows/d3d11_texture_helper.cc [modify] https://crrev.com/cf3183c0bbb6009b09624d6bde1405113317d66f/device/vr/windows/d3d11_texture_helper.h [modify] https://crrev.com/cf3183c0bbb6009b09624d6bde1405113317d66f/device/vr/windows/flip_vertex_shader.h [modify] https://crrev.com/cf3183c0bbb6009b09624d6bde1405113317d66f/device/vr/windows/flip_vertex_shader.hlsl
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/763f8972ef5d9632607a26207e31c9d24173450b commit 763f8972ef5d9632607a26207e31c9d24173450b Author: Bill Orr <billorr@chromium.org> Date: Tue Oct 02 19:41:58 2018 Support basic overlay rendering from the browser process This change adds infrastructure for the browser process to submit overlays to the XR compositor on Windows, so notifications and prompts can be display in headset when necessary. This adds a concept of a runtime observer in the browser process, so Windows-specific code may hook in to know when a webpage is presenting to a headset, and when presentation has ended. This adds alpha blend support for compositing WebXR and overlays simultaneously. This change introduces VRBrowserRendererHostWin and VRBrowserRendererThreadWin, which are analogues to the Android VrShell and VrGLThread. Finally, this change introduces SimpleOverlayRendererWin, which is throwaway code to demonstrate rendering overlays and submitting them to the XR compositor. In a followup, this will be replaced with rendering through a CommandBuffer so the actual rendering happens in the GPU process. The code is not currently enabled. BUG= 819448 Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:linux_vr;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel Change-Id: I3c790efef66346cb36b8401237efb6ce29fa6e5e Reviewed-on: https://chromium-review.googlesource.com/1237398 Commit-Queue: Bill Orr <billorr@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Klaus Weidner <klausw@chromium.org> Cr-Commit-Position: refs/heads/master@{#595948} [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/BUILD.gn [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/OWNERS [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/service/browser_xr_runtime.cc [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/service/browser_xr_runtime.h [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/service/isolated_device_provider.cc [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/service/isolated_device_provider.h [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/service/xr_device_impl.cc [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/service/xr_device_impl.h [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/service/xr_runtime_manager.cc [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/service/xr_runtime_manager.h [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/service/xr_runtime_manager_unittest.cc [add] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/win/simple_overlay_renderer_win.cc [add] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/win/simple_overlay_renderer_win.h [add] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/win/vr_browser_renderer_thread_win.cc [add] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/win/vr_browser_renderer_thread_win.h [add] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/win/vr_renderloop_host_win.cc [add] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/browser/vr/win/vr_renderloop_host_win.h [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/chrome/services/isolated_xr_device/xr_runtime_provider.cc [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/device/vr/oculus/oculus_device.cc [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/device/vr/oculus/oculus_device.h [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/device/vr/openvr/openvr_device.cc [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/device/vr/openvr/openvr_device.h [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/device/vr/public/mojom/isolated_xr_service.mojom [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/device/vr/windows/compositor_base.cc [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/device/vr/windows/compositor_base.h [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/device/vr/windows/d3d11_texture_helper.cc [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/device/vr/windows/d3d11_texture_helper.h [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/device/vr/windows/flip_pixel_shader.h [modify] https://crrev.com/763f8972ef5d9632607a26207e31c9d24173450b/device/vr/windows/flip_pixel_shader.hlsl
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/85159441ba2e0997b6ef89d7f1f3f1a1cfabcee3 commit 85159441ba2e0997b6ef89d7f1f3f1a1cfabcee3 Author: Bill Orr <billorr@chromium.org> Date: Wed Oct 10 19:07:03 2018 User commandbuffer to render simple overlays for WebXR This change switches SimpleOverlayRenderer to use command buffer instead of native D3D11 to render overlays. Note that SimpleOverlayRenderer is still not enabled by default - only used for dev testing with code changes to enable it. BUG= 819448 Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:linux_vr;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel Change-Id: I4833f5773a838326457c56890bd177f3ad7a5ad5 Reviewed-on: https://chromium-review.googlesource.com/c/1259424 Commit-Queue: Bill Orr <billorr@chromium.org> Reviewed-by: Antoine Labour <piman@chromium.org> Reviewed-by: Steven Holte <holte@chromium.org> Reviewed-by: Klaus Weidner <klausw@chromium.org> Cr-Commit-Position: refs/heads/master@{#598432} [modify] https://crrev.com/85159441ba2e0997b6ef89d7f1f3f1a1cfabcee3/chrome/browser/vr/BUILD.gn [modify] https://crrev.com/85159441ba2e0997b6ef89d7f1f3f1a1cfabcee3/chrome/browser/vr/DEPS [modify] https://crrev.com/85159441ba2e0997b6ef89d7f1f3f1a1cfabcee3/chrome/browser/vr/win/simple_overlay_renderer_win.cc [modify] https://crrev.com/85159441ba2e0997b6ef89d7f1f3f1a1cfabcee3/chrome/browser/vr/win/simple_overlay_renderer_win.h [modify] https://crrev.com/85159441ba2e0997b6ef89d7f1f3f1a1cfabcee3/chrome/browser/vr/win/vr_browser_renderer_thread_win.cc [modify] https://crrev.com/85159441ba2e0997b6ef89d7f1f3f1a1cfabcee3/chrome/browser/vr/win/vr_browser_renderer_thread_win.h [modify] https://crrev.com/85159441ba2e0997b6ef89d7f1f3f1a1cfabcee3/services/ws/public/cpp/gpu/command_buffer_metrics.cc [modify] https://crrev.com/85159441ba2e0997b6ef89d7f1f3f1a1cfabcee3/services/ws/public/cpp/gpu/command_buffer_metrics.h [modify] https://crrev.com/85159441ba2e0997b6ef89d7f1f3f1a1cfabcee3/tools/metrics/histograms/histograms.xml
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cee3abc6988dfe4e6c99756198d2f58eccd62873 commit cee3abc6988dfe4e6c99756198d2f58eccd62873 Author: Bill Orr <billorr@chromium.org> Date: Wed Nov 07 01:00:22 2018 Implement stub BrowserRenderer delegates and start up BrowserRenderer This change defines Graphics, Input, and Scheduler delegates that can interact with BrowerRenderer to render in-headset VR UI. With this change, the delegates are mostly defined and parts necessary to render are implemented, but VR UI doesn't yet actually render any UI on desktop. BUG= 819448 Change-Id: I8d50e200e2380ae2113454eaf77cd1c53f369554 Reviewed-on: https://chromium-review.googlesource.com/c/1306402 Commit-Queue: Bill Orr <billorr@chromium.org> Reviewed-by: Klaus Weidner <klausw@chromium.org> Cr-Commit-Position: refs/heads/master@{#605897} [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/android/vr/gvr_graphics_delegate.cc [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/android/vr/gvr_graphics_delegate.h [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/BUILD.gn [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/browser_renderer.cc [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/browser_renderer.h [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/graphics_delegate.h [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/service/browser_xr_runtime.cc [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/service/browser_xr_runtime.h [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/testapp/gl_renderer.cc [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/testapp/gl_renderer.h [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/ui.cc [add] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/win/graphics_delegate_win.cc [add] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/win/graphics_delegate_win.h [add] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/win/input_delegate_win.cc [add] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/win/input_delegate_win.h [add] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/win/scheduler_delegate_win.cc [add] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/win/scheduler_delegate_win.h [delete] https://crrev.com/1e05484358740f0608387f1213029f263d2b16a5/chrome/browser/vr/win/simple_overlay_renderer_win.cc [delete] https://crrev.com/1e05484358740f0608387f1213029f263d2b16a5/chrome/browser/vr/win/simple_overlay_renderer_win.h [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/win/vr_browser_renderer_thread_win.cc [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/win/vr_browser_renderer_thread_win.h [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/win/vr_renderloop_host_win.cc [modify] https://crrev.com/cee3abc6988dfe4e6c99756198d2f58eccd62873/chrome/browser/vr/win/vr_renderloop_host_win.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/41b6d981966380723d833696be498cf647c20c0a commit 41b6d981966380723d833696be498cf647c20c0a Author: Bill Orr <billorr@chromium.org> Date: Tue Nov 27 21:58:52 2018 Add a permission prompt notification to show in headset for desktop VR When a page requests permissions, a prompt will show on the desktop display. This change allows a notification to show in-headset so the user knows to look at the prompt on the desktop display. BUG= 819448 Change-Id: I55801326c41b1b152da5ee80ed7ef62107184de8 Reviewed-on: https://chromium-review.googlesource.com/c/1332690 Commit-Queue: Bill Orr <billorr@chromium.org> Reviewed-by: David Dorwin <ddorwin@chromium.org> Reviewed-by: Klaus Weidner <klausw@chromium.org> Reviewed-by: Christopher Grant <cjgrant@chromium.org> Cr-Commit-Position: refs/heads/master@{#611353} [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/app/vr_strings.grdp [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/android/vr/vr_gl_thread.cc [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/android/vr/vr_gl_thread.h [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/ui/BUILD.gn [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/vr/BUILD.gn [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/vr/browser_ui_interface.h [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/vr/model/web_vr_model.h [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/vr/test/mock_browser_ui_interface.h [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/vr/ui.cc [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/vr/ui.h [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/vr/ui_scene_creator.cc [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/vr/ui_scene_creator.h [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/vr/win/scheduler_delegate_win.cc [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/vr/win/scheduler_delegate_win.h [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/vr/win/vr_browser_renderer_thread_win.cc [modify] https://crrev.com/41b6d981966380723d833696be498cf647c20c0a/chrome/browser/vr/win/vr_browser_renderer_thread_win.h
We have basic VR-UI integration. Resolving this as fixed. blocked bugs will be re-parented under browsing-specific bugs.
Comment 1 by billorr@chromium.org
, Mar 7 2018