Skip to content

[Impeller] vkDestroyPipeline gets called too early sometimes on Vulkan #141490

@dnfield

Description

@dnfield

Error looks like this:

E/flutter (21891): [ERROR:flutter/impeller/base/validation.cc(49)] Break on 'ImpellerValidationBreak' to inspect point of failure: 
E/flutter (21891): --- Vulkan Debug Report  ----------------------------------------
E/flutter (21891): |                Severity: Error
E/flutter (21891): |                    Type: { Validation }
E/flutter (21891): |                 ID Name: VUID-vkDestroyPipeline-pipeline-00765
E/flutter (21891): |               ID Number: 1809638909
E/flutter (21891): |       Queue Breadcrumbs: [NONE]
E/flutter (21891): |  CMD Buffer Breadcrumbs: [NONE]
E/flutter (21891): |         Related Objects: Device [12970367433631101008] [ImpellerDevice]
E/flutter (21891): |                 Trigger: Validation Error: [ VUID-vkDestroyPipeline-pipeline-00765 ] Object 0: handle = 0xb4000075ffe07050, name = ImpellerDevice, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x6bdce5fd | Cannot call vkDestroyPipeline on VkPipeline 0x1500000000150[Pipeline Runtime Stage] that is currently in use by a command buffer. The Vulkan spec states: All submitted commands that refer to pipeline must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyPipeline-pipeline-00765)
E/flutter (21891): -----------------------------------------------------------------

It doesn't seem to negatively impact rendering. I can trigger it pretty easily with https://github.com/dnfield/flutter_shader_demo - run the app with --enable-impeller (and make sure Vulkan gets used), then tap back and forth on the galaxy demo.

Adding the pipeline to the resource tracker would probably help this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work liste: impellerImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.platform-androidAndroid applications specificallyteam-engineOwned by Engine teamtriaged-engineTriaged by Engine team

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions