1. 04 Jan, 2018 1 commit
    • Vulkan: Fix looped clears. · 47c8ea3f
      Jamie Madill authored
      These were broken by command re-ordering. The first problem was that
      the Framebuffer RenderNode was not correctly being flagged as dirty.
      This is fixed by keeping a serial instead of a bool to track the
      RenderNode's cleanliness. The second issue was that an image layout
      transition was being set with incorrect bits. Fix this by using the
      correct access mask.
      
      This fixes angle_perftests's Vulkan render test.
      
      Bug: angleproject:2264
      Bug: chromium:798866
      Change-Id: I268b0f7aeb2c5e22892f6ef59dec62391b30bfb4
      Reviewed-on: https://chromium-review.googlesource.com/848539Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
  2. 03 Jan, 2018 7 commits
    • Move angle_enable_* inside declare_args(). · 6df487ef
      Frank Henigman authored
      This allows enabling and disabling parts of the build via gn args,
      similar to what gyp allowed.
      
      BUG=angleproject:1569
      
      Change-Id: Ia95c134f98f8941408df96b1d4e2563e713a9ef2
      Reviewed-on: https://chromium-review.googlesource.com/838260
      Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • HandleAllocator: Fix heap ordering using std::greater. · fc3463da
      Jamie Madill authored
      The default heap ordering is to return the greatest element in the
      heap. Since the handle allocator expects a minimal return value on
      a new allocation, this caused a bug. The bug is triggered by reserving
      handles, allocating new handles, then freeing the handles and
      allocating again with the same allocator. Fix the bug by using
      std::greater instead of std::less, which will make the heap
      return the smallest value instead of largest.
      
      Also adds some logging debugging code for the handle allocators.
      
      Bug: angleproject:1458
      Change-Id: Ibef5dcbed0a664ccad0e0335f081e2355162584b
      Reviewed-on: https://chromium-review.googlesource.com/848644
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarFrank Henigman <fjhenigman@chromium.org>
    • Revert "Enable depth buffer to workaround driver bug on Intel windows" · 36937a64
      Jamie Madill authored
      This reverts commit 63ba357c.
      
      Reason for revert: May be causing Windows GPU.FYI bot failures.
      
      https://ci.chromium.org/buildbot/chromium.gpu.fyi/Win10%20Release%20%28Intel%20HD%20630%29/1443
      
      maps_pixel_test on Intel GPU:
      Unexpected Failures:
      * gpu_tests.maps_integration_test.MapsIntegrationTest.Maps_maps
      
      webgl2_conformance_tests on Intel GPU:
      Unexpected Failures:
      * gpu_tests.webgl_conformance_integration_test.WebGLConformanceIntegrationTest.WebglConformance_deqp_functional_gles3_fboinvalidate_default
      * gpu_tests.webgl_conformance_integration_test.WebGLConformanceIntegrationTest.WebglConformance_deqp_functional_gles3_fboinvalidate_sub
      
      Bug: chromium:798757
      
      Original change's description:
      > Enable depth buffer to workaround driver bug on Intel windows
      >
      > Rendering with depth buffer disabled and stencil buffer enabled
      > leads to memory leak if we set viewport a large size on Intel
      > windows platforms. So we enable depth buffer if stencil buffer
      > is enabled to workaround this issue.
      >
      > TEST=gl_test.exe --gtest_filter=GLClearFramebufferTestWithParam/GLClearFramebufferTest.ClearDepthStencil/0
      > TEST=conformance/rendering/rendering-stencil-large-viewport.html
      > TEST=RenderStencilBufferTest.DrawWithLargeViewport/ES3_D3D11
      >
      > BUG=782317
      >
      > Change-Id: Idb185db296f13e3fa897534514e198651a56439f
      > Reviewed-on: https://chromium-review.googlesource.com/809574
      > Commit-Queue: Jamie Madill <jmadill@chromium.org>
      > Reviewed-by: Jamie Madill <jmadill@chromium.org>
      
      TBR=zmo@chromium.org,geofflang@chromium.org,jmadill@chromium.org,kbr@chromium.org,cwallez@chromium.org,yunchao.he@intel.com,jiajia.qin@intel.com,xinghua.cao@intel.com,bryan.bernhart@intel.com,yizhou.jiang@intel.com,yang.gu@intel.com
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: 782317
      Change-Id: I7e29da683b22fd4640c230598c7b220cfae6a177
      Reviewed-on: https://chromium-review.googlesource.com/848133
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Replace remaining usage of TName with TSymbol · 8b5e8fdb
      Olli Etuaho authored
      TName used to contain just a subset of the information stored in
      TSymbol. It makes more sense to use TSymbol directly instead of
      converting it to TName.
      
      This also improves type safety a bit by making some functions only
      take in TVariable or TFunction instead of the more generic TName.
      
      BUG=angleproject:2267
      TEST=angle_unittests
      
      Change-Id: Icb46923c25d33ebbbbc06ddc487da25957dda771
      Reviewed-on: https://chromium-review.googlesource.com/829143
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • 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>
  3. 02 Jan, 2018 9 commits
  4. 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>
  5. 28 Dec, 2017 4 commits
  6. 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>
  7. 21 Dec, 2017 7 commits
  8. 20 Dec, 2017 6 commits