1. 16 Jun, 2020 12 commits
  2. 15 Jun, 2020 11 commits
  3. 12 Jun, 2020 16 commits
  4. 11 Jun, 2020 1 commit
    • Vulkan: Better handling of texture level redefinition · 000a79f1
      Shahbaz Youssefi authored
      If a texture level is being redefined, there are two scenarios to
      consider:
      
      1. The level is outside the base/max level, for which the image was
        allocated.
      2. The level is within the base/max level, but it's being redefined to a
        different size or format.
      
      In the former case, we simply don't need to release the image.
      
      The latter case itself has two possibilities:
      
      2.1. There is only one level in the image.
      2.2. There are multiple levels in the image.
      
      In case 2.1, the whole image is being redefined (as it has only a single
      level), so the image can (and should) be released.  Prior to this
      change, this behavior was adopted for all cases.  This change retains
      this behavior for this case only.
      
      In case 2.2, the texture is becoming incomplete.  However, the image
      shouldn't yet be released because another one of its mips may be bound
      to a framebuffer.  In such cases as glCopyTexImage2D(), that framebuffer
      may in fact be the source of the copy operation (which would be
      destroyed if the image is released).  If the base/max level of the
      texture doesn't change, redefining the level and making the texture
      incomplete doesn't make the framebuffer incomplete; this is achieved at
      the same time by not releasing the image.
      
      This change ensures that updates to the redefined level are staged in
      cases 1 and 2.2.
      
      Bug: angleproject:4274
      Change-Id: I3fac3203c2fbbc16e8e4a35b1334b767120b2dcf
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2230853
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>