1. 10 May, 2019 3 commits
    • Vulkan: Support flat and centroid qualifiers · 7ef73a52
      Shahbaz Youssefi authored
      Bug: angleproject:3219
      Change-Id: I2e0b60bda9c3af2b9eadf2efd3899250925897f4
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1600335
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Vulkan: fix qualifier erase for unused vertex attributes · 5517ce95
      Shahbaz Youssefi authored
      Bug: angleproject:3219
      Change-Id: I8f8f5572eed5126ab03702953883b313f022a264
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1598548
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Vulkan: Implement EXT_draw_buffers · 9fa248e1
      Shahbaz Youssefi authored
      In GLES, color attachments are referenced by their indices.  These
      indices match between the API and GLSL.  For example, if a shader has:
      
      layout(location=0) out color;
      layout(location=3) out roughness;
      
      Then GLES would bind and enable GL_COLOR_ATTACHMENT0 and
      GL_COLOR_ATTACHMENT3.
      
      In Vulkan, the framebuffer object and the corresponding renderpass
      define the color attachments, and they don't allow gaps in color
      attachments as GLES does.  A render subpass creates the mapping between
      the color attachments as defined in the framebuffer and the attachments
      used by the shader (with possible gaps).
      
      This change packs the enabled GL color attachments for the sake of the
      framebuffer, and sets the subpass up in such a way that the shaders
      continue to use the same color output indices as GLES.
      
      In the example above, we have the attachment indices as follows:
      
       Status  | GLES | GLSL | RenderPass | Subpass
      
      enabled     0      0         0           0
      disabled    1      -                 VK_ATTACHMENT_UNUSED
      disabled    2      -                 VK_ATTACHMENT_UNUSED
      enabled     3      3         1           1
      
      That is, the array of color attachments in the Vulkan
      framebuffer/renderpass is:
      
      [0] = GL color attachment 0
      [1] = GL color attachment 3
      
      And the array of color attachment references in the Vulkan render
      subpass is:
      
      [0] = 0 (index 0 of the renderpass attachment array)
      [1] = VK_ATTACHMENT_UNUSED
      [2] = VK_ATTACHMENT_UNUSED
      [3] = 1 (index 1 of the renderpass attachment array)
      
      Bug: angleproject:2394
      Change-Id: Ib6cd2b60882643ea152986eee453270d09cd4aed
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1595442
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
  2. 09 May, 2019 6 commits
  3. 08 May, 2019 12 commits
  4. 07 May, 2019 8 commits
  5. 06 May, 2019 8 commits
  6. 04 May, 2019 2 commits
    • D3D11: Fix potential invalid VAO access in dispatch. · 6f0c5b8d
      Jamie Madill authored
      In some instances running a dispatch call could lead to accessing an
      invalid VAO pointer. This seemed to be tied to switching Contexts.
      Fix the bug by invalidating the cache pointers on Context switch. Note
      that it seems this bug can only affect ES 3.1+ Contexts.
      
      Bug: angleproject:3349
      Change-Id: Ib712bcc29215b3fd1c8b7eb0cbd70dea649b3cfc
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1594289Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • Vulkan: Optimize shader source macro replacement · 62742f9e
      Shahbaz Youssefi authored
      @@ LAYOUT-xx @@ and @@ QUALIFIER-xx @@ macros are generated by the
      compiler when emitting Vulkan GLSL.  These macros are replaced at link
      time in the Vulkan backend.
      
      Previously, this replacement was done through calls to
      angle::ReplaceSubstring, reiterating over the whole source on every
      replacement.  This CL does a prepass on the input source and chunks it
      up in blocks.  Search is optimized as only blocks of a certain type are
      string-compared (skipping large chunks of shader text).  Replace is
      optimized as the whole shader is not shifted left or right on every
      replacement.
      
      Additionally, this CL modifies the layout macro to the following format:
      
      	@@ LAYOUT-xx(extra, args) @@
      
      This is used in a follow up CL to have the compiler provide additional
      layout qualifiers.
      
      Bug: angleproject:3220
      Change-Id: I6367e781c3304d5f2e0a406e4fb4e6feb4c45f1d
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1592070
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
  7. 03 May, 2019 1 commit