Details
-
Bug
-
Resolution: Unresolved
-
P1: Critical
-
None
-
6.7.2
Description
In QtQuick3D, if there are multiple View3Ds that reference a scene, and those have an environment that uses ProceduralSkyTextureData, the overhead from creating the procedural sky can cause a GPU timeout, leading to the Vulkan device being lost and eventually a crash.
On a Windows laptop with Intel UHD graphics, this will happen every time in a debugger, most of the time in RenderDoc, and never when running a release build.
It seems there are two problems here:
- A slow operation in the main event loop should not cause the graphics device to be lost or the program to crash.
- ProceduralSkyTextureData is very inefficient internally – setting any property calls scheduleTextureUpdate(), but rather than doing the expensive texture generation as a background task as the function call suggests, it happens immediately. This also means that the texture gets generated once at startup for every property set plus once in the constructor.
In the attached example project, a texture provider deliberately sleeps and regenerates its data.