1. 18 Jan, 2021 3 commits
    • Reland "Vulkan: Generate xfb support code in SPIR-V for extension path" · 6c5b766b
      Shahbaz Youssefi authored
      This reverts commit d0906276.
      
      Reason for revert: Fixed parent CL
      
      Original change's description:
      > Revert "Vulkan: Generate xfb support code in SPIR-V for extension path"
      >
      > This reverts commit d06feeac.
      >
      > Reason for revert:
      > Earlier CL breaks pre-rotation:
      > https://chromium-review.googlesource.com/c/angle/angle/+/2598584
      >
      > Original change's description:
      > > Vulkan: Generate xfb support code in SPIR-V for extension path
      > >
      > > The only piece of code that's needed to be generated for the extension
      > > path is the following, at the right spot (right before depth correction
      > > and pre-rotation):
      > >
      > >     ANGLEXfbPosition = gl_Position;
      > >
      > > The SPIR-V transformer already has gl_Position loaded for depth
      > > correction and pre-rotation, so this change simply adds an OpStore to
      > > ANGLEXfbPosition.
      > >
      > > As a result of this change, @@ XFB-OUT @@ is no longer emitted if
      > > the transform feedback extension is supported.  With the above code now
      > > placed correctly for geometry shaders, transform feedback tests for
      > > geometry shaders are enabled.
      > >
      > > Bug: angleproject:3606
      > > Change-Id: I13a7956ab62a1a6b4196ff999442b99b50226c0f
      > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617659
      > > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      > > Reviewed-by: Charlie Lao <cclao@google.com>
      > > Reviewed-by: Jamie Madill <jmadill@chromium.org>
      >
      > TBR=syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
      >
      > Change-Id: I74fa9fafe3c922cdb7cd09ee6351534e38528da9
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: angleproject:3606
      > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2634048
      > Reviewed-by: Tim Van Patten <timvp@google.com>
      > Commit-Queue: Tim Van Patten <timvp@google.com>
      
      TBR=timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
      
      # Not skipping CQ checks because this is a reland.
      
      Bug: angleproject:3606
      Change-Id: Ic49a0be10cdb58e2b47896554f272093e24f93b4
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2633711
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
    • Reland "Vulkan: Move xfb position decl to translator in extension path" · 68635b43
      Shahbaz Youssefi authored
      This reverts commit b4b59726.
      
      Reason for revert: This was in a chain of reverts, but is unrelated to the issue.
      
      Original change's description:
      > Revert "Vulkan: Move xfb position decl to translator in extension path"
      >
      > This reverts commit 8f5ca266.
      >
      > Reason for revert:
      > Earlier CL breaks pre-rotation:
      > https://chromium-review.googlesource.com/c/angle/angle/+/2598584
      >
      > Original change's description:
      > > Vulkan: Move xfb position decl to translator in extension path
      > >
      > > This change removes the @@ XFB-DECL @@ marker.  The ANGLEXfbPosition
      > > output is unconditionally emitted in VS, TES and GS by the translator,
      > > and is appropriately decorated or removed by the SPIR-V transformer.
      > >
      > > Bug: angleproject:3606
      > > Change-Id: Ia76224f5a6d147362eeb2d288f05e333aaf75481
      > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617658
      > > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      > > Reviewed-by: Jamie Madill <jmadill@chromium.org>
      > > Reviewed-by: Charlie Lao <cclao@google.com>
      >
      > TBR=syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
      >
      > Change-Id: Ia03988b9c17639513576e82e8f11cd4c7b52640b
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: angleproject:3606
      > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2634202
      > Reviewed-by: Tim Van Patten <timvp@google.com>
      > Commit-Queue: Tim Van Patten <timvp@google.com>
      
      TBR=timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
      
      # Not skipping CQ checks because this is a reland.
      
      Bug: angleproject:3606
      Change-Id: Ib5b5925528a5c8698390b81f71ee788f5b332a1f
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2633708
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
    • Reland "Vulkan: Generate gl_Position.z correction in SPIR-V" · beea4050
      Shahbaz Youssefi authored
      This reverts commit e3c35736.
      
      Reason for revert: Fixed parent CL
      
      Original change's description:
      > Revert "Vulkan: Generate gl_Position.z correction in SPIR-V"
      >
      > This reverts commit 1e4f8b02.
      >
      > Reason for revert:
      > Earlier CL breaks pre-rotation:
      > https://chromium-review.googlesource.com/c/angle/angle/+/2598584
      >
      > Original change's description:
      > > Vulkan: Generate gl_Position.z correction in SPIR-V
      > >
      > > Instead of having the translator output code to transform gl_Position.z
      > > to Vulkan clip space in the vertex stage, this change makes the SPIR-V
      > > transformer perform this operation on the last geometry stage.
      > >
      > > An alternative solution would be to generate this transformation in the
      > > translator in every geometry stage, each controlled by a separate
      > > specialization constant.  This change avoids unnecessary modifications
      > > to earlier stages.  Additionally, the transformer is already modifying
      > > gl_Position.xy for pre-rotation, so the addition of a small
      > > transformation of gl_Position.z in the same spot is rather trivial.
      > >
      > > Bug: angleproject:5479
      > > Change-Id: Id971179ba47b206204bfdaf3b2b295ef97dd5117
      > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2598585
      > > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      > > Reviewed-by: Charlie Lao <cclao@google.com>
      > > Reviewed-by: Jamie Madill <jmadill@chromium.org>
      >
      > TBR=syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
      >
      > Change-Id: I3bdf3d6f743125eaf552608f2664b715bd6935c5
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: angleproject:5479
      > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2634203
      > Reviewed-by: Tim Van Patten <timvp@google.com>
      > Commit-Queue: Tim Van Patten <timvp@google.com>
      
      TBR=timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
      
      # Not skipping CQ checks because this is a reland.
      
      Bug: angleproject:5479
      Change-Id: Id23052b8fc6bffa5bab20cb93eb21ea49a0f80d7
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2633710
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
  2. 17 Jan, 2021 1 commit
    • Reland "Vulkan: Generate gl_Position pre-rotation in SPIR-V" · dfd9bdfd
      Shahbaz Youssefi authored
      This reverts commit 3d39b7c5.
      
      Reason for revert: Fixed interaction with the
      `forceDriverUniformOverSpecConst` workaround.
      
      Original change's description:
      > Revert "Vulkan: Generate gl_Position pre-rotation in SPIR-V"
      >
      > This reverts commit 0f86b196.
      >
      > Reason for revert:
      > Breaks pre-rotation for all apps, so they are displayed in portrait instead of landscape.
      >
      > Original change's description:
      > > Vulkan: Generate gl_Position pre-rotation in SPIR-V
      > >
      > > Instead of having the translator output pre-rotation code in the vertex
      > > stage based on a specialization constant, this change makes the SPIR-V
      > > transformer perform pre-rotation of gl_Position on the last geometry
      > > stage.
      > >
      > > An alternative solution would be to generate pre-rotation code in the
      > > translator in every geometry stage, each controlled by a separate
      > > specialization constant.  This change avoids unnecessary modifications
      > > to earlier stages.  The generated shaders are also smaller, as they
      > > don't contain a mat2[8] pre-rotation constant matrix.  The SPIR-V
      > > transformer knows the pre-rotation at transformation time, so it can
      > > simply use swizzles to achieve the same results.
      > >
      > > This also ties in with upcoming changes which move gl_Position.z
      > > correction to the last geometry shader stage, which is trivially done
      > > piggy-backing on the infrastructure in this change.
      > >
      > > Bug: angleproject:5478
      > > Change-Id: I9d5d9d19f3ccda665f5504368ce5ddfa5f383faf
      > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2598584
      > > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      > > Reviewed-by: Charlie Lao <cclao@google.com>
      > > Reviewed-by: Jamie Madill <jmadill@chromium.org>
      >
      > TBR=syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
      >
      > Change-Id: I81f237fa6b10c7d59831363bee8999e7ad2f09be
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: angleproject:5478
      > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2633694
      > Reviewed-by: Tim Van Patten <timvp@google.com>
      > Commit-Queue: Tim Van Patten <timvp@google.com>
      
      TBR=timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com
      
      Bug: angleproject:5478
      Change-Id: I7c5eaeef03d9520abd36a1c4a766b6abbf4fdb45
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2633709Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
  3. 16 Jan, 2021 9 commits
  4. 15 Jan, 2021 12 commits
  5. 14 Jan, 2021 10 commits
  6. 13 Jan, 2021 5 commits
    • Support importing NV12/P010/P016 D3D textures as EGLImage · 198dc345
      Sunny Sachanandani authored
      Allow importing individual planes of NV12/P010/P016 D3D textures with
      supported SRV/RTV formats.  Restrict these to GL_TEXTURE_EXTERNAL_OES to
      limit to using as shader inputs or render targets and prevent
      unsupported operations like ReadPixels.
      
      Test: D3DTextureYUVTest*
      Bug: angleproject:5538, chromium:1116101
      Change-Id: If5bf54f4f75bb2c703890ce3f5fbd67e4461c98f
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2338827
      Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
    • Don't build angle_end2end_tests_mac_sources on iOS · 124cdcb5
      Yuly Novikov authored
      Getting a compile error for them:
      
      ../../third_party/angle/src/tests/egl_tests/
      EGLIOSurfaceClientBufferTest.cpp:16:10:
      fatal error: 'IOSurface/IOSurface.h' file not found
      
      include <IOSurface/IOSurface.h>
              ^~~~~~~~~~~~~~~~~~~~~~~
      
      ../../third_party/angle/src/tests/egl_tests/
      EGLIOSurfaceClientBufferTest.cpp:16:10:
      note: did not find header 'IOSurface.h' in framework 'IOSurface'
      (loaded from '/opt/s/w/ir/cache/xcode_ios_12a7209.app/Contents/
      Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
      iPhoneOS14.0.sdk/System/Library/Frameworks')
      
      Bug: angleproject:5417
      Change-Id: I60198bbacc0726a9842fe37fad5b10b9afff37a4
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2628129Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
    • Allow attributes and uniforms to have the same name · 6c79df68
      Mohan Maiya authored
      It is valid for an attribute and a uniform to have the same name
      as long as they are declared in different stages.
      
      Prior to this patch, if any shader stage declares a uniform we
      disallowed reusing that name for an attribute.
      
      From GLSL ES Spec 3.00.6, section 4.3.5:
          If a uniform variable name is declared in one stage (e.g., a vertex
          shader) but not in another (e.g., a fragment shader), then that name
          is still available in the other stage for a different use.
      
      This change allows Egginc game to work with ANGLE
      
      Bug: angleproject:5497
      Tests: angle_end2end_tests -
                 *UniformVariableNameReuseAcrossStages*
                 *GlobalNamesConflict*
      Change-Id: I8f5657d40a213600d6fb48f63e37e4cdbae120b2
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2608865Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
      Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
    • infra: Fix win-trace-rel bot typo. · 70d8561d
      Jamie Madill authored
      Was accidentally specified as "linux-win-rel".
      
      Bug: angleproject:5530
      Change-Id: Ica5ac1dd685704835049d8f222196f3eb5f7e8c4
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2626514Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • Program: Support multiple varying packings. · d654ac9b
      Jamie Madill authored
      Instead of using a single varying packing for all program stages,
      we switch to using a varying register packing for each pair of
      input/output shaders. This allows several valid use cases that use
      many varying to succeed. For instance Geometry Shaders have both
      an input and output varying packing. With tessellation shaders the
      upper bound of valid varying packings in one Program goes up even
      more.
      
      We keep multiple varying packings at once inside a new
      "ProgramVaryingPacking" class. Internally the class keeps a unique
      varying mapping for each input/output interface in the program.
      Separable programs with "open" interfaces are handled specially.
      
      Fixes a bug where varying counting was artificially limited for
      programs with more than two shaders.
      
      This CL also disables GS support when we're emulating line raster
      so we don't have to figure out the details on how to place the
      special position varying.
      
      Bug: angleproject:5496
      Change-Id: I1f9a327c4750caef570c608d86953e9d0cc5eea3
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2606532
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarTim Van Patten <timvp@google.com>