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

        For Gerrit Dashboard: QTBUG-96302
        # Subject Branch Project Status CR V

        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