Hello All
It’s been more than 6 month, and the issue is still open. The main reason is that few users see this happening, and nobody at Nvidia has ever been able to produce it.
Also some other compression issues might look like the same issue.
I’ll summarize what we know:
*Happens on both Quest II & Focus 3, never reported on Windows (internally we have not tested)
*Only happens with CloudXR 3.2, not older version
*Switching to AIImageReaderDecoder makes the issue disappear, but it cannot be a long term solution, as it makes the Focus 3 fan run at full throttle and produces instabilities on Quest II
*And the strangest thing is that when recording the decoded stream on files, the issue is never visible, even if the person who did the recording saw the issue while recording !!!
The general line of thought is that the issue is related to video decompression issues, as it happens on squares and video compression/decompression is assumed to work on tiles. And as CloudXR is what it is, a video compression solution, in case of bad bandwidth, tiles will appear of course.
I’d like to orient the analysis on another direction, a GPU synchronization issue.
When looking more into the error, it looks like the screen is divided in squares, and 50% of the squares display the current frame and 50% the previous frame.
Therefore, and hypothesis would be that the texture copying between the thread that does the decompression and the thread that copy it to the framebuffer, or to the screen has an synchronization issue and start to do the copying while the source has not been yet ready.
I’d like to add two more things we can see, that I do not know if they are related.
(1) Android logcat constantly shows the OpenGL error: “[SurfaceTexture-16-20287-1] bindTextureImage: clearing GL error: 0x502”
(2) A basic OpenGL ES tracing (with Graphics API debugger) of a complete session, including the CloudXR work, shows an interesting error:
2836: Draw 9
├── 2862: eglDupNativeFenceFDANDROID(dpy:12970367409584359472, sync:480609952560)->434
└── 2863: eglDestroySyncKHR(dpy:12970367409584359472, sync:480609952560)->472446402561
2836: Draw 9
└── 2864: glGetError()->1282
But the tracing was done while the issue was not visible and the FPS very bad, so maybe it has nothing to do with the issue.
We’ll try next week to have a trace while the issue is happening see if it can tell more.
A issue with the GPU driver might be another direction.
I hope it rings a bell to anybody and help resolve the issue.
Best regards,
Alexis Vartanian