Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
A
angle
  • Project
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Chen Yisong
  • angle
  • Repository

Switch branch/tag
  • angle
  • src
  • libANGLE
  • renderer
  • vulkan
  • UtilsVk.cpp
Find file
BlameHistoryPermalink
  • Tim Van Patten's avatar
    Vulkan: Make DescriptorPoolHelper a Resource · fcd35965
    Tim Van Patten authored Sep 29, 2020
    Descriptor pools need to live as long as the descriptor sets that are
    allocated from them. Using Serials while building a command to judge a
    pool's lifetime is prone to errors, since a command's Serial value
    isn't known until the command is submitted, leading to deleting pools
    too early relative to when the descriptor set is actually used.
    
    This CL updates DescriptorPoolHelper to inherit from Resource, so the
    descriptor pools can be retain()'ed. This allows the Resource's counter
    to indicate that a pool is in use until the command's Serial is known
    and can be recorded to indicate when the command completes. This
    prevents descriptor pools from being destroyed before the command
    completes (while the descriptor sets are still in use), or even before
    the command has been submitted. Destroying a descriptor pool resets all
    of the descriptors that were allocated from it, which can trigger a
    variety of VVL errors depending on when it's erroneously performed.
    
    This CL also adds the necessary retain() calls for the descriptor pools.
    In particular, the pools need to be retained each time a cached
    descriptor set that was allocated from it is re-used. This is relatively
    simple with the current design, since we always clear the descriptor set
    caches whenever a new pool is allocated, so the descriptor pool binding
    is always accurate.
    
    Bug: angleproject:5030
    Test: VulkanMultithreadingTest::MultiContextDrawSmallDescriptorPools()
    Change-Id: Iac9e7efef338f169a6bf8ac3b2140e03dd326641
    Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2504457Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com>
    Commit-Queue: Tim Van Patten <timvp@google.com>
    fcd35965
UtilsVk.cpp 111 KB
EditWeb IDE
×

Replace UtilsVk.cpp

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.