Address Extra VPBlit Operations During Media Foundation fullscreen This change addresses an issue where the finalized rect for Media Foundation playback via the Direct Composition presentaiton path was not equal to the full screen size. In certain cases when watching 1080p content on a 1080p device we see the visual_transform have a half pixel offset on the y-axis. The result of this was a finalized onscreen rect of [1920, 1081] instead of The expected [1920, 1080]. As a result of this DWM does not consider this as a fullscreen scenario so we may see things like additional copies (e.g. NV12-to-NV12 or NV12-to-ARGB) as well as features like DMRRS or CABC not getting applied. I found a set of issues with the way we were doing our current calculation which are addressed here: * On screen rect passed to AdjustTargetToOptimalSizeIfNeeded was untransformed. * AdjustTargetToOptimalSizeIfNeeded operates assuming the clipping rect is applied but the rect set on the DComp Surface Proxy was not clipped. * AdjustTargetToFullScreenSizeIfNeeded would early exit if the clipped onscreen rect equaled monitor size, but this path didn't validate if there was any translation. That translation is still applied in the DComp case. * The way AdjustTargetToFullScreenSizeIfNeeded accounted for offset from origin would not work for a partial pixel offset which wouldn't modify the origin but would alter the finalized size. Bug: 1469519 Change-Id: I93d79598b5607197f5ebc794b37c0ceefe2cb9c7 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4893042 Commit-Queue: William Carr <wicarr@microsoft.com> Reviewed-by: Maggie Chen <magchen@chromium.org> Reviewed-by: Chunbo Hua <chunbo.hua@intel.com> Cr-Commit-Position: refs/heads/main@{#1244110}
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.