1. 04 Sep, 2019 1 commit
  2. 03 Sep, 2019 7 commits
  3. 02 Sep, 2019 9 commits
  4. 31 Aug, 2019 5 commits
    • Vulkan: Enable more GLES3.1 dEQP tests · 791ad7b8
      Shahbaz Youssefi authored
      Various features already implemented hadn't removed suppressions for
      GLES 3.1.
      
      Bug: angleproject:3205
      Bug: angleproject:3208
      Bug: angleproject:3561
      Bug: angleproject:3604
      Change-Id: I1cfc5d2150fae6b138fa21a37f8e95cb7d764770
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1771989
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarIan Elliott <ianelliott@google.com>
    • Vulkan: Storage image support · 912e52d8
      Shahbaz Youssefi authored
      Image bindings are placed after atomic counters in the "resources"
      descriptor set.
      
      There are two issues yet to be addressed:
      
      - GL can create a 2D (array) view of a 3D image, but this is not allowed
        in Vulkan.  If this cannot be made possible, emulation needs to be
        done.
      
        https://github.com/KhronosGroup/Vulkan-Docs/issues/1033
      
      - GL can create an image view of a texture with a different format and
        have the data reinterpreted.  This is not currently done.
      
      Bug: angleproject:3563
      Change-Id: I95c4d92c50bb033212a9a67f3f2d6f97c074c7bf
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1767366
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Fix build error · 93bb092f
      Shahbaz Youssefi authored
      Result of simultaneous submission of two CLs.
      
      Bug: angleproject:3757
      Change-Id: I0e11678633587421f83d337958a1df28a694cf2e
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1778967Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
    • Vulkan: Debug overlay · e54d0f90
      Shahbaz Youssefi authored
      A debug overlay system for the Vulkan backend designed with efficiency
      and runtime configurability in mind.  Overlay widgets are of two
      fundamental types:
      
      - Text widgets: A single line of text with small, medium or large font.
      - Graph widgets: A bar graph of data.
      
      Built on these, various overlay widget types are defined that gather
      statistics.  Five such types are defined with one widget per type as
      example:
      
      - Count: A widget that counts something.  VulkanValidationMessageCount
        is an overlay widget of this type that shows the number of validation
        messages received from the validation layers.
      - Text: A generic text.  VulkanLastValidationMessage is an overlay
        widget of this type that shows the last validation message.
      - PerSecond: A value that gets reset every second automatically.  FPS is
        an overlay widget of this type that simply gets incremented on every
        swap().
      - RunningGraph: A graph of last N values.  VulkanCommandGraphSize is an
        overlay of this type.  On every vkQueueSubmit, the number of nodes in
        the command graph is accumulated.  On every present(), the value is
        taken as the number of nodes for the whole duration of the frame.
      - RunningHistogram: A histogram of last N values.  Input values are in
        the [0, 1] range and they are ranked to N buckets for histogram
        calculation.  VulkanSecondaryCommandBufferPoolWaste is an overlay
        widget of this type.  On vkQueueSubmit, the memory waste from command
        buffer pool allocations is recorded in the histogram.
      
      Overlay font is placed in libANGLE/overlay/ which gen_overlay_fonts.py
      processes to create an array of bits, which is processed at runtime to
      create the actual font image (an image with 3 layers).
      
      The overlay widget layout is defined in overlay_widgets.json which
      gen_overlay_widgets.py processes to generate an array of widgetss, each
      of its respective type, and sets their properties, such as color and
      bounding box.  The json file allows widgets to align against other
      widgets as well as against the framebuffer edges.
      
      Two compute shaders are implemented to efficiently render the UI:
      
      - OverlayCull: This shader creates a bitset of Text and Graph widgets
        whose bounding boxes intersect a corresponding subgroup processed by
        OverlayDraw.  This is done only when the enabled overlay widgets are
        changed (a feature that is not yet implemented) or the surface is
        resized.
      - OverlayDraw: Using the bitsets generated by OverlayCull, values that
        are uniform for each workgroup (set to be equal to hardware subgroup
        size), this shader loops over enabled widgets that can possibly
        intersect the pixel being processed and renders and blends in texts
        and graphs.  This is done once per frame on present().
      
      Currently, to enable overlay widgets an environment variable is used.
      For example:
      
          $ export ANGLE_OVERLAY=FPS:VulkanSecondaryCommandBufferPoolWaste
          $ ./hello_triangle --use-angle=vulkan
      
      Possible future work:
      
      - On Android, add settings in developer options and enable widgets based
        on those.
      - Spawn a small server in ANGLE and write an application that sends
        enable/disable commands remotely.
      - Implement overlay for other backends.
      
      Bug: angleproject:3757
      Change-Id: If9c6974d1935c18f460ec569e79b41188bd7afcc
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1729440
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Vulkan: revamp present semaphore management · c3f57231
      Shahbaz Youssefi authored
      See doc/PresentSemaphores.md for details.
      
      Bug: angleproject:3450
      Bug: angleproject:3670
      Change-Id: I52d5bd13a4af25f224d386c9584525c182af6f17
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776880Reviewed-by: 's avatarTim Van Patten <timvp@google.com>
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
  5. 30 Aug, 2019 10 commits
  6. 29 Aug, 2019 8 commits