Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-96302

3D scenes with 2D subtrees leak graphics resources upon destroying the scene

    XMLWordPrintable

Details

    • fba78e59e9 (qt/qtquick3d/dev) fba78e59e9 (qt/tqtc-qtquick3d/dev) 2c1d7714ba (qt/tqtc-qtquick3d/6.2) e979268dc3 (qt/qtquick3d/6.4) e979268dc3 (qt/tqtc-qtquick3d/6.4) 2c1d7714ba (qt/tqtc-qtquick3d/6.2.7)
    • 2022 Qt Quick 3D: Week 19-20, 2022 Qt Quick 3D: Week 21-22

    Description

      Running the quickitems example now gives this when exiting: (here was run with Vulkan + QSG_RHI_DEBUG_LAYER=1 + QT_RHI_LEAK_CHECK=1)

      [11464] vkDebug: Validation: 0: Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x230d5cebe48, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xd7fb100000000b4, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x230d5cebe48[], VkRenderPass 0xd7fb100000000b4[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.2.162.0/windows/1.2-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
      [11464] vkDebug: Validation: 0: Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x230d5cebe48, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xf6c3d10000000094, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x230d5cebe48[], VkRenderPass 0xf6c3d10000000094[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.2.162.0/windows/1.2-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
      [11464] vkDebug: Validation: 0: Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x230d5cebe48, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x3a495f000000005a, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x230d5cebe48[], VkRenderPass 0x3a495f000000005a[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.2.162.0/windows/1.2-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
      [11464] QRhi 0x230d3394d20 going down with 3 unreleased resources that own native graphics objects. This is not nice.
      [11464]   RenderPassDescriptor resource 0x230df7c5660 ()
      [11464]   RenderPassDescriptor resource 0x230df7f5d90 ()
      [11464]   RenderPassDescriptor resource 0x230db0fa9c0 ()
      

      Actually this is not new. It's because what https://codereview.qt-project.org/c/qt/qtquick3d/+/339852 tried to fix, but then was never revisited: some backend nodes, here the QSSGRenderItem2D, are not destroyed (the destructor never runs), hence the objects owned by it are leaked too.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qt.team.graphics.and.multimedia Qt Graphics Team
            lagocs Laszlo Agocs
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes