1. 03 Jan, 2018 3 commits
    • Index symbols by id in OutputHLSL · 93b059db
      Olli Etuaho authored
      This is cleaner than indexing them by their name string.
      
      BUG=angleproject:2267
      TEST=angle_unittests
      
      Change-Id: I0d0ef5e3f6a3f26c94f096b086cdf3da40d495e4
      Reviewed-on: https://chromium-review.googlesource.com/845559
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
    • Start D3D constant register allocations from 1 on NVIDIA · d8724a94
      Olli Etuaho authored
      Recent NVIDIA drivers have a bug where a specific optimized path
      inside the driver doesn't handle constant register 0 correctly. Work
      around this by starting constant register allocations from 1. This
      should make sure that the bug doesn't trigger if the ordering of
      uniforms is changed on the D3D backend.
      
      The repro case seems to require some specific driver state to be set
      that's used inside Chromium. Because of this we have not been able to
      develop a standalone test case so far.
      
      The maximum number of available uniform slots is reduced accordingly.
      This should not take them below required minimums in the spec.
      
      BUG=angleproject:2294
      TEST=WebGL tests on passthrough command buffer,
           angle_end2end_tests --gtest_filter=*GLSLTest*Uniform*
      
      Change-Id: I92fff71efe5432ea7f15a7e90d497492514c65dc
      Reviewed-on: https://chromium-review.googlesource.com/847481
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • ES31 program query: support TRANSFORM_FEEDBACK_VARYING · 910a3daf
      jchen10 authored
      TRANSFORM_FEEDBACK_VARYING corresponds to the set of output variables
      in the last non-fragment stage of program that would be captured when
      transform feedback is active. The resources enumerated by this query
      are listed as specified by the most recent call to
      TransformFeedbackVaryings before the last call to LinkProgram.
      This mainly collects these resources for query.
      
      BUG=angleproject:1920
      TEST=angle_end2end_tests:ProgramInterfaceTest*
           dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.*
      
      Change-Id: I0655b12c6d82cef1b44d4ca57ea55bb60d1f78fb
      Reviewed-on: https://chromium-review.googlesource.com/770450
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
  2. 02 Jan, 2018 9 commits
  3. 29 Dec, 2017 4 commits
    • Vulkan: Use one pipeline layout for all Programs. · 8c3988c5
      Jamie Madill authored
      This simplifies the pipeline state object caching. We will not need
      to use any extra bits to cache based on program properties - instead
      all programs will be compatible. The pipeline layout strucutre is
      described in the design docs. It currently only has two bind groups:
      the first for default uniforms, and the second for Textures. In the
      future we might re-organize this to handle driver uniforms, dynamic
      push constants, and/or program uniform buffers with ES 3.0.
      
      Instead of storing only the Textures that are required by a Program,
      we reserve space for the maximum possible Texture units. We might have
      to revisit this very simple design in the future to support texture
      arrays, which are handled specially in Vulkan.
      
      Bug: angleproject:2163
      Change-Id: I3e1656c2c73045aed56838a5f1267b246a623362
      Reviewed-on: https://chromium-review.googlesource.com/837943Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • Don't query names of empty symbols · bed35d76
      Olli Etuaho authored
      This makes it possible to return a reference from TSymbol::name()
      instead of a pointer. This is safer since it completely avoids the
      possibility of a nullptr dereference. An assert is making sure that
      the function is not being called for empty symbols.
      
      BUG=angleproject:2267
      TEST=angle_unittests
      
      Change-Id: I44279f65989dbb828322843fc0216ba84d91dedf
      Reviewed-on: https://chromium-review.googlesource.com/836894Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
    • Vulkan: Implement command re-ordering. · 49ac74bd
      Jamie Madill authored
      This introduces a new CommandBufferNode class. Nodes are linked
      together to form a graph based on their dependencies. When the app
      triggers a readback or swap, the graph is flushed entirely. This
      sends the queued ANGLE Vulkan work to the Vulkan queue which is
      then processed on the GPU with the right dependencies.
      
      This design allows us to save on some unnecessary RenderPass creation
      and also allows us to know what load/store ops to use. It also allows
      us to take advantage of the Vulkan automatic RenderPass transitions
      for performance. Load/Store ops and automatic transitions will be
      implemented in later patches.
      
      Bug: angleproject:2264
      Change-Id: I0e729c719e38254202c6fedcede4e63125eb4810
      Reviewed-on: https://chromium-review.googlesource.com/780849Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarFrank Henigman <fjhenigman@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • Fix tracking variables in folded ternary operators · b8cb939f
      Olli Etuaho authored
      The result of folding a ternary operator may be a TIntermSymbol node
      where the qualifier doesn't match the qualifier of the variable that
      the node is referring to.
      
      Get the qualifier from the variable instead of directly from
      TIntermSymbol when collecting variables in CollectVariables or when
      tracking referenced variables in OutputHLSL.
      
      BUG=angleproject:2288
      TEST=angle_unittests, angle_end2end_tests
      
      Change-Id: If294a7fe9dca50f2ebcea3feff887e72a521d395
      Reviewed-on: https://chromium-review.googlesource.com/836893Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
  4. 28 Dec, 2017 4 commits
  5. 22 Dec, 2017 2 commits
    • Revert "Re-land "Vulkan: Roll loader/validation layers SDK. (2/2)"" · 06f86377
      Zhenyao Mo authored
      This reverts commit 755a9317.
      
      Reason for revert: Broke local win build. crbug.com/797253
      
      Original change's description:
      > Re-land "Vulkan: Roll loader/validation layers SDK. (2/2)"
      > 
      > Re-landing with upstream fixes to the layers so they no longer
      > need to copy the parameter validation errors to the current
      > working directory of the layer generation. Also includes fixes
      > for the GCC build.
      > 
      > This hasn't been updated in a while, so there are many changes.
      > It should also include better validation for memory barriers.
      > 
      > Also includes updated builds for SPIRV Tools and glslang.
      > A few pull requests need to land before landing this in ANGLE.
      > 
      > This second step re-enables Vulkan and includes the updated build.
      > 
      > Includes a workaround for parameter_validation.h no longer being
      > auto-generated, and the stale file clobbering the build.
      > 
      > Also includes a fix for an incorrect memory barrier.
      > 
      > Bug: angleproject:2237
      > Change-Id: I1ed87ecfa84f51ee1edf6a8581d9b3c8f9a6f26e
      > Reviewed-on: https://chromium-review.googlesource.com/834429
      > Commit-Queue: Jamie Madill <jmadill@chromium.org>
      > Reviewed-by: Jamie Madill <jmadill@chromium.org>
      
      TBR=fjhenigman@chromium.org,jmadill@chromium.org
      
      Change-Id: I605d72207d64c7d0853678595e255b74ad69d887
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: angleproject:2237
      Reviewed-on: https://chromium-review.googlesource.com/842918Reviewed-by: 's avatarZhenyao Mo <zmo@chromium.org>
      Commit-Queue: Zhenyao Mo <zmo@chromium.org>
    • Entry Points: Refactor Extensions Part 1. · 2b7bbc28
      Jamie Madill authored
      This moves the validation and entry point files to use a
      consistent syntax. This will facilitate auto-generation.
      
      Bug: angleproject:2263
      Change-Id: Ica2dbffff3898103c6827ae7f6b1154a45d14a85
      Reviewed-on: https://chromium-review.googlesource.com/841345Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
  6. 21 Dec, 2017 7 commits
  7. 20 Dec, 2017 6 commits
  8. 19 Dec, 2017 4 commits
  9. 18 Dec, 2017 1 commit