1. 22 Sep, 2020 1 commit
    • Vulkan: Use subpass to unresolve render-to-texture attachments · f39e0f01
      Shahbaz Youssefi authored
      GL_EXT_multisampled_render_to_texture allows singlesampled textures to
      be used with multisampled framebuffers in such a way that the final
      resolve operation is automatically done.  In Vulkan terminology, the
      render-to-texture GL attachment is used as a Vulkan subpass resolve
      attachment with an implicit (ideally-)lazy-memory multisampled image as
      the color attachment.
      
      This extension expects that if the texture is drawn to after the
      automatic resolve, the implicit multisampled image would take its
      fragment colors from the singlesampled image.  In other words, the
      opposite of a resolve operation should be automatically performed at the
      start of the render pass.  This change refers to this operation as
      "unresolve".
      
      The goal of this extension is to allow tiling GPUs to always keep
      multisampled data on tile memory and only ever load/store singlesampled
      data.  The latter is achieved by using a subpass resolve attachment and
      setting storeOp of the multisampled color attachment to DONT_CARE.  This
      change achieves the former by using an initial subpass that uses the
      resolve attachment as input attachment, draws into the multisampled
      color attachment and sets loadOp of said attachment to DONT_CARE.
      
      Bug: angleproject:4881
      Change-Id: I99f410530365963567c77a7d62fc9db1500e5e3e
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2397206
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarTim Van Patten <timvp@google.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
  2. 21 Sep, 2020 25 commits
  3. 20 Sep, 2020 1 commit
    • Vulkan: Implement a SharedResourceUse pool · de335c16
      Mohan Maiya authored
      When adding a Resource to the ResourceUseList of ContextVk
      we constructed a new SharedResourceUse object for tracking
      and update of the Resource's Serial. We would then delete
      it after releasing the resource. This incurs repeated
      memory operation costs.
      
      Instead we now allocate a pool of SharedResourceUse objects
      and acquire and release from this pool as needed.
      
      VTune profile of the Manhattan 30 offscreen benchmark
      shows the CPU occupancy of bufferRead decrease from an
      average of 0.9% -> 0.6% and imageRead decreases from
      an average of 0.4% -> 0.3%. The bottleneck for both
      these methods is the retain() method that leverages
      the new SharedResourceUse pool.
      
      Bug: angleproject:4950
      Change-Id: Ib4f67c6f101d4b2de118014546e6cc14ad108703
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2396597Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
  4. 19 Sep, 2020 5 commits
  5. 18 Sep, 2020 8 commits