ashum
(Aleksandr Shumarov)
April 22, 2025, 4:43pm
1
Hey,
I’ve found an issue that causes the unnecessary calls for UpdateForTime and Get in adapters when the purpose visibility of the prim is set to be off.
Here is the bug report:
opened 04:18PM - 21 Apr 25 UTC
Hi,
In https://github.com/PixarAnimationStudios/OpenUSD/blob/dev/pxr/imaging/hd/… dirtyList.cpp#L141 the render display tags stay even when they are not needed.
To reproduce the issue:
Open usdView with no display purpose tags selected in View/"Display Purpose". Then toggle the render display purpose tag. Then toggle it again to turn it off. Observe the render display purpose tag still present.
This causes the following issue to happen:
When the render tag is present UpdateForTime and Get functions are called on the frame change. This is not needed and causes computations from procedural adapters that do computations to provide the data.
To observe the redundant calls:
Open usdView with no display purpose tags selected in View/"Display Purpose". Toggle the frame and observe the UpdateForTime NOT being called for the mesh prim adapter. Then toggle the render display purpose tag. Toggle the frame and observe the UpdateForTime being called for the mesh prim adapter. Then toggle it again to turn it off. Toggle the frame and observe the UpdateForTime being called for the mesh prim adapter.
Does anyone know why we need to have a union in OpenUSD/pxr/imaging/hd/dirtyList.cpp at dev · PixarAnimationStudios/OpenUSD · GitHub ? It looks like it leads to dirty purpose tags all the time after their visibility turned on once.