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
  • Framebuffer.cpp
Find file
BlameHistoryPermalink
  • Shahbaz Youssefi's avatar
    Vulkan: Fix render target's tracking of content defined · 248119b3
    Shahbaz Youssefi authored Jul 20, 2020
    Imagine the following scenario:
    
    1. Clear draw framebuffer
    2. Invalidate draw framebuffer
    3. Update texture attached to draw framebuffer
    4. Draw again into draw framebuffer
    
    Step 3 could be a number of things, such as glCopyTex[Sub]Image,
    glBlitFramebuffer, glTex[Sub]Image2D, glGenerateMipmap etc.
    
    In the above scenario, at step 2, the framebuffer's render target
    remembers it being invalidated (mContentDefined = false).  This is used
    to set the loadOp of the next render pass to DONT_CARE.
    
    However, mContentDefined was implemented for a very specific
    optimization regarding the swapchain's depth buffer.  The reuse of this
    variable for glInvalidateFramebuffer was erroneous as this variable
    didn't track whether the contents are defined for the general case.
    
    With this change, mContentDefined is set to true during
    FramebufferVk::syncState for each render target whose contents are
    marked dirty.
    
    This change additionally makes glBlitFramebuffer signal the contents of
    the blit targets as dirty, as well as textures that are used as storage
    images.
    
    Bug: angleproject:4859
    Change-Id: I68c829f75ff4a3d03bb293ec72c609384983026d
    Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2309110
    Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
    Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    Reviewed-by: 's avatarCharlie Lao <cclao@google.com>
    248119b3
Framebuffer.cpp 79.9 KB
EditWeb IDE
×

Replace Framebuffer.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.