[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    Re: RFR: 8322619 Parts of SG no longer update during rendering - overlapping - culling - dirty [v2]
From:       Florian Kirmaier <fkirmaier () openjdk ! org>
Date:       2023-12-22 12:56:50
Message-ID: naXwTVaYl4dy3fU0JER9bwN-9afee_EjH2CM2mn10wk=.93d0ab26-dbe1-48d8-b556-c36ad200f712 () github ! com
[Download RAW message or body]

On Thu, 21 Dec 2023 12:57:01 GMT, Florian Kirmaier <fkirmaier@openjdk.org> wrote:

> > In some situations, a part of the SG is no longer rendered.
> > I created a test program that showcases this problem.
> > 
> > Explanation:
> > 
> > This can happen, when a part of the SG, is covered by another Node.
> > In this part, one node is totally covered, and the other node is visible.
> > 
> > When the totally covered Node is changed, then it is marked dirty and it's \
> > parent, recursively until an already dirty node is found. Due to the Culling, \
> > this totally covered Node is not rendered - with the effect that the tree is \
> > never marked as Clean. 
> > In this state, a Node is Dirty but not It's parent. Based on my CodeReview, this \
> > is an invalid state which should never happen. 
> > In this invalid state, when the other Node is changed, which is visible, then the \
> > dirty state is no longer propagated upwards - because the recursive \
> > "NGNode.markTreeDirty" algorithm encounters a dirty node early. 
> > This has the effect, that any SG changes in the visible Node are no longer \
> > rendered. Sometimes the situation repairs itself. 
> > Useful parameters for further investigations:
> > -Djavafx.pulseLogger=true
> > -Dprism.printrendergraph=true
> > -Djavafx.pulseLogger.threshold=0
> > 
> > PR:
> > This PR ensures the dirty flag is set to false of the tree when the culling is \
> > used. It doesn't seem to break any existing tests - but I'm not sure whether this \
> > is the right way to fix it. It would be great to have some feedback on this \
> > solution - maybe guiding me to a better solution. 
> > I could write a test, that just does the same thing as the test application, but \
> > checks every frame that these nodes are not dirty - but maybe there is a better \
> > way to test this.
> 
> Florian Kirmaier has refreshed the contents of this pull request, and previous \
> commits have been removed. The incremental views will show differences compared to \
> the previous content of the PR. The pull request contains one new commit since the \
> last revision: 
> JDK-8322619 Fix for rendering bug, related to overlap - culling - dirtynodes

It is worth noting that the idea of cleaning the dirty tree, for the culled node, is \
also done at line `NGNode:1414`, but for some reason, it doesn't catch the case from \
this bug.

-------------

PR Comment: https://git.openjdk.org/jfx/pull/1310#issuecomment-1867654647


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic