Enable SharedBuffer mode rendering for Android OpenXR Adds support for Creating and sending SharedImages on OpenXr on Android, which then plugs into the existing infrastructure to properly send up and later consume the needed mailbox holders, etc. to render to the screen. Final rendering is done using the (former) ArRenderer, which worked as-is to blit from the SharedImage texture to the texture provided by OpenXR, so that class was renamed and moved to be easily accessible by the OpenXrGraphicsBindingOpenGLES. This also required specifying the appropriate required Swapchain format that matches with the shared buffer type that we are creating. (Note that a lot of this logic is basically the same as the logic done in XrImageTransportBase and the corresponding subclasses, but cannot be used at present since we use a SwapChainInfo struct and not the WebXrPresentationState and WebXrSharedBuffer classes that that class uses. Future work will investigate migrating onto those types). A number of refactors were done to make the code cleaner and hopefully easier to understand including: * Moving some shared logic out of `CompositorBase::SubmitFrameWithTextureHandle` so that the Android path can use that for rendering as well. * Moved a bunch of platform-specific logic into the respective graphics bindings. * Moved xr(Acquire/Release)SwapchainImages into the graphics bindings to ease usage-patterns when setting up or consuming shared images. * Moved logic from a couple of methods to live on the corresponding class rather than being computed on top/outside of that class. * A few minor renames (mainly SwapChainImages->SwapChainInfo in methods). Most future intended cleanups have been tagged with bugs in the appropriate places, but it's worth calling out that the code currently uses SwapChain and Swapchain (and thus swap_chain and swapchain) fairly interchangably. A future change will attempt to do a mass rename to consolidate on Swapchain/swapchain (with no underscore), to align with the OpenXr, `XrSwapchain` type/nomenclature. Fixed: 1441073 Change-Id: Ie03e4a7cff900ca4a33161af79184d505cbbdfee Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4605785 Commit-Queue: Alexander Cooper <alcooper@chromium.org> Reviewed-by: Kyle Charbonneau <kylechar@chromium.org> Reviewed-by: Will Harris <wfh@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Cr-Commit-Position: refs/heads/main@{#1158385}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.