[gpu] Check for nv12 texture creation in D3DBacking::IsSupported Meet has a couples of issues where presentation on AMD GPUs with NV12 textures fails. This may be due to issues with AMD drivers where NV12 textures of large sizes/resolutions are not supported for creation and results in green or blank screen. Earlier before creating multiplanar shared images, NV12 buffer would have two R8 and RG88 shared images with each having R8/RG88 d3d texture which did not have any issues with sizes. Now, for NV12 buffer we create a single NV12 d3d texture. With current path, the client uses software video decode which goes through GpuMemoryBufferVideoFramePool and creates a Compound backing that contains shared memory and D3D image backing. The D3D backing is lazy created and later fails to create the NV12 texture on demand leading to green screen. If we know this when checking for support in IsSupported, we can fallback to pixel upload path in VideoResourceUpdater that creates a WrappedSkImageBacking and should work as there is no d3d texture involved. Assuming this is the issue, this change tries creating an NV12 d3d11 texture when checking for support and adds relevant crashes keys for d3d11 error code and size on texture creation failure. It also adds a crash dump which will trigger crash reports having valuable GPU information for further debugging and a proper GPU driver specific fix. Bug: b/357068614 b/346717134 Change-Id: I319ff1f0403aa5a84c08888baa5b1dad589a0a86 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5920224 Commit-Queue: Saifuddin Hitawala <hitawala@chromium.org> Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org> Cr-Commit-Position: refs/heads/main@{#1367177}
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.