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

Issue 843326 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner: ----
Closed: May 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug
Proj-VR
Proj-XR
Proj-XR-VR



Sign in to add a comment

Handle dirtiness of the UI scene elements

Project Member Reported by acondor@chromium.org, May 15 2018

Issue description

Some input events (such as scrolling) can have an effect on UiElement properties. If these properties are not animated, they get updated immediately and its dirtiness is not realized on UiElement::DoBeginFrame. As a result, the world transforms do not get updated.

Only the elements' transforms seem to be affected at the moment, but other properties could potentially be affected as well.

Here are some ideas to solve the problem:
- Add a wrapper around each property that affects the scene and let it announce the dirtiness of the element.
- Let the setters handle dirtiness.
- Always call UpdateWorldTransform and make it calculate the dirtiness of the elements.
 
It came to our realization that changes on layout might not be reflected in the dirtiness flag calculated by UiElement::SizeAndLayout. At the moment, we are not using appropriate use of that boolean, but when the time comes, we need to fix this issue.
Cc: vollick@chromium.org
Project Member

Comment 3 by bugdroid1@chromium.org, May 17 2018

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

commit 5cdcce079f424f6876bbbd9e4451d7acd26b06e7
Author: Aldo Culquicondor <acondor@chromium.org>
Date: Thu May 17 19:10:34 2018

VR: Always update world transforms

UpdateWorldTransform is already optimized to skip invisible subtrees and
to skip recalculating local transforms when they haven't changed. This is
not a final fix for dirtiness handling.

Bug:  843326 
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;master.tryserver.chromium.linux:linux_vr
Change-Id: I70a45d1d602474f8b8439f16f9680186b08f8679
Reviewed-on: https://chromium-review.googlesource.com/1064451
Reviewed-by: Christopher Grant <cjgrant@chromium.org>
Commit-Queue: Aldo Culquicondor <acondor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#559633}
[modify] https://crrev.com/5cdcce079f424f6876bbbd9e4451d7acd26b06e7/chrome/browser/vr/elements/scrollable_element.cc
[modify] https://crrev.com/5cdcce079f424f6876bbbd9e4451d7acd26b06e7/chrome/browser/vr/elements/scrollable_element.h
[modify] https://crrev.com/5cdcce079f424f6876bbbd9e4451d7acd26b06e7/chrome/browser/vr/ui_scene.cc

Owner: acondor@chromium.org
Status: Started (was: Untriaged)
Assigning to Aldo and marking started as work is landing.
Owner: ----
Status: Available (was: Started)
The change landed ensures that we always calculate the local transforms, so that the scene drawn is always up to date. At the moment, there is no need to calculate the appropriate dirtiness of the scene.
Status: Fixed (was: Available)
This change should ensure that the dirtiness value is correct: https://chromium-review.googlesource.com/c/chromium/src/+/1065528. I think we can mark this is as fixed for now.

Sign in to add a comment