1. 13 May, 2020 4 commits
  2. 12 May, 2020 12 commits
  3. 11 May, 2020 13 commits
  4. 08 May, 2020 7 commits
  5. 07 May, 2020 4 commits
    • Fix up screenshot saving for trace tests. · 5b35c7f6
      Jamie Madill authored
      Now works when run in a sequence. Also saves RGB images to avoid
      issues with the alpha being inconsistent and also flips images
      vertically to fix the rendering.
      
      Bug: angleproject:4615
      Change-Id: I8d3b38c5d914e0ca2227320ac42a0e28acd12c4d
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2187971
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com>
    • Vulkan: Wrap barrier data into PipelineBarrier class · 234ea5b1
      Charlie Lao authored
      This is preparation CL without introducing any functional change. This
      Cl wraps barrier data into its own class and put necessary data
      structures in place. It still uses one vkCmdPipelineBarrier call.
      
      Bug: b/155341891
      Change-Id: If9c70d24873bd9b89e598acfba2eeee364f0b6c1
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2185149
      Commit-Queue: Charlie Lao <cclao@google.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Fix validation errors & re-enable VulkanExternalImageTest clear tests · dae210e6
      Michael Spang authored
      These tests previously encountered errors attempting to transfer images
      from VK_QUEUE_FAMILY_EXTERNAL back to itself (this is not valid because
      one of the queues families in a memory barrier must be the family of the
      queue that executes the barrier). These invalid transfers were made
      because our ownership tracking started all resources in the "externally
      owned" state, with the expectation that the first operation on the
      resource would be a call to glWaitSemaphoreEXT to acquire ownership.
      
      It is far from clear that a call to glWaitSemaphoreEXT is always
      required to gain ownership of a resource. The EXT_external_objects
      extension inherits Vulkan's semantics, and what the Vulkan spec says is
      that the first entity to access a resource implicitly assumes ownership
      (see 11.7.1 "External Resource Sharing"). Binding a resource to memory
      does not constitute an access to that resource, or affect its ownership.
      Allocations should not be accesses, either; they happen at a lower level
      and the entire discussion about determining initial ownership from first
      access would serve no purpose if the mere allocation of the underlying
      memory was sufficient to assume ownership.
      
      This patch therefore adjusts the initial queue family ownership of
      resources created in memory objects to be the ANGLE renderer's queue
      family, just like a locally allocated image would be. Since this
      ownership state may not be correct (an external API may have already
      accessed the image, and assumed ownership) we must relax our assertions
      to allow a call to glWaitSemaphoreEXT while in this state. For images,
      this is only permitted while the layout is undefined.
      
      An alternative would be to set the initial queue family to a sentinel
      value that indicates that we don't know, but that would require checking
      for this value before making any accesses, and only then asserting local
      ownership. There's no real upside to this; the net effect of the first
      access rule is that we must effectively assume ownership until proven
      otherwise.
      
      Besides appearing to be the spec's intent, this change simplifies some
      usage scenarios because a queue submission is not required in the source
      Vulkan instance in order to allocate resources that will be initially
      accessed from GL. This seems especially important since there's no
      mechanism to allocate an external memory object from inside GL.
      
      The only downside is that the initial ambiguity in ownership prevents us
      from diagnosing certain errors, but this limitation is temporary;
      ownership becomes clear as soon as there is at least one access or at
      least one synchronization operation affecting the resource.
      
      Bug: angleproject:4229
      Change-Id: Ibca2bfe373810c55352b1d849d07733d5fcfe5f4
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2178946
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Perf tests: Add screenshot capture mode. · d08f1d8d
      Jamie Madill authored
      This adds a "--screenshot-dir" argument to capture screenshots.
      If we're running with screenshot capture then the test will
      early exit after the first capture. The screenshots use the same
      naming pattern as the test name:
      
      TracePerfTest.Run/vulkan_trex_200 -> angle_vulkan_trex_200.png
      
      Note the screenshot dir is relative to the test binary directory,
      not the CWD. Also adds a PNG saving utility function.
      
      Bug: angleproject:4615
      Change-Id: I1de8ae6a6e6892586bb0b743e7b9a842f90f98e5
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2184834
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com>