1. 30 Dec, 2018 1 commit
  2. 29 Dec, 2018 7 commits
    • Revert "Load entry points dynamically in tests and samples." · 9f088621
      Yuly Novikov authored
      This reverts commit 03923558.
      
      Reason for revert: fails compilation on Android, ChromeOS and Fuchsia during roll https://chromium-review.googlesource.com/c/chromium/src/+/1392624
      
      Original change's description:
      > Load entry points dynamically in tests and samples.
      > 
      > This CL adds a dynamic loader generator based on XML files. It also
      > refactors the entry point generation script to move the XML parsing
      > into a helper class.
      > 
      > Additionally this includes a new GLES 1.0 base header. The new
      > header allows for function pointer types and hiding prototypes.
      > 
      > All tests and samples now load ANGLE dynamically. In the future this
      > will be extended to load entry points from the driver directly when
      > possible. This will allow us to perform more accurate A/B testing.
      > 
      > The new build configuration leads to some tests having more warnings
      > applied. The CL includes fixes for the new warnings.
      > 
      > Bug: angleproject:2995
      > Change-Id: I6726d4163f7a6e54d2482f094c0a952f59702a05
      > Reviewed-on: https://chromium-review.googlesource.com/c/1359516
      > Commit-Queue: Jamie Madill <jmadill@chromium.org>
      > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
      
      TBR=ynovikov@chromium.org,jmadill@chromium.org,syoussefi@chromium.org
      
      Change-Id: I902bec2d733c2b879be29c02ab52a0b7d4eaa077
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: angleproject:2995
      Reviewed-on: https://chromium-review.googlesource.com/c/1392381Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
      Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
    • Load entry points dynamically in tests and samples. · 03923558
      Jamie Madill authored
      This CL adds a dynamic loader generator based on XML files. It also
      refactors the entry point generation script to move the XML parsing
      into a helper class.
      
      Additionally this includes a new GLES 1.0 base header. The new
      header allows for function pointer types and hiding prototypes.
      
      All tests and samples now load ANGLE dynamically. In the future this
      will be extended to load entry points from the driver directly when
      possible. This will allow us to perform more accurate A/B testing.
      
      The new build configuration leads to some tests having more warnings
      applied. The CL includes fixes for the new warnings.
      
      Bug: angleproject:2995
      Change-Id: I6726d4163f7a6e54d2482f094c0a952f59702a05
      Reviewed-on: https://chromium-review.googlesource.com/c/1359516
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
    • Use visitor pattern for Shader Variable APIs. · 8c78ce4b
      Jamie Madill authored
      In many places in ANGLE we need to traverse a ShaderVariable tree. We
      do this to store uniform offset and other information, to flatten the
      tree of uniforms for the front-end, or to produce active variable lists
      for uniform and shader storage blocks. In each case, we would write
      separate tree traversal code.
      
      This patch introduces a shared visitor pattern for all of the shader
      variable tree traversal instances. With that get more common code. Also
      it is easier to write new variable traversals. ProgramD3D and
      ProgramLinkedResources in particular get nice simplificiations.
      
      The visitor object recieves callbacks from the traversal when entering
      structs, array elements, and new variables. The visitor can treat these
      differently depending on the use case. A common visitor that constructs
      full variable names is used as a base class in several places.
      
      Also moves the 'isRowMajorLayout' from sh::InterfaceBlockField to
      sh::ShaderVariable. This allows us to forgo using templates in several
      call sites.
      
      Bug: angleproject:3024
      Change-Id: I472d81ec775e2eee92fb3d2eb0ca83860221ba2e
      Reviewed-on: https://chromium-review.googlesource.com/c/1358722
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
    • Vulkan: Move image clear functionality to UtilsVk · e321940c
      Shahbaz Youssefi authored
      DispatchUtilsVk is renamed to UtilsVk and the functionality in
      framebuffer's clearWithDraw() is moved to that class.  Eventually, more
      fragment-shader-based internal algorithms will be added to this class as
      well.
      
      Bug: angleproject:2958
      Change-Id: I4753c9cb3288b59cd1ed60fe7a57b9f189704322
      Reviewed-on: https://chromium-review.googlesource.com/c/1369284
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Improve CopyTexImageTest · af4cef51
      Shahbaz Youssefi authored
      The test is enhanced to perform the copy multiple times.  Initially, the
      copy creates a new texture from a 16x16 framebuffer.  Then, a copy is
      made from another 16x16 framebuffer (which should not trigger the
      recreation of the texture).  Finally, a copy is made from a 32x32
      framebuffer (which should trigger the recreation of the texture).
      
      Bug: angleproject:2958
      Change-Id: Idc934d6f3d6312a2122d079309a4c2ae2608ba7f
      Reviewed-on: https://chromium-review.googlesource.com/c/1392388Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
    • Add test case for storage buffer · c5117571
      Xinghua Cao authored
      When storage buffer bound is unchanged and shader writes it,
      buffer content should also be updated. Currently, this case
      cannot work normally on D3D backend.
      
      Bug: angleproject:2814
      TEST=angle_end2end_tests.ComputeShaderTest.StorageBufferBoundUnchanged
      
      Change-Id: I6f25b7eac84c44392befaca61a33bdf2457f29f9
      Reviewed-on: https://chromium-review.googlesource.com/c/1391880
      Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • ES31: Add state change tests for image · 3f01f53c
      Qin Jiajia authored
      This change adds dirty bit state change tests for image textures.
      Meanwhile, syncImages related codes are removed since syncTextures will do
      all texture states sync.
      
      Bug: angleproject:3015
      
      Change-Id: I9b299c86af1d589e72c08c5d7c55ac74cc7833aa
      Reviewed-on: https://chromium-review.googlesource.com/c/1390596
      Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
  3. 28 Dec, 2018 1 commit
    • Optimize glDrawElements performance · cb9609fe
      Markus Tavenrath authored
      A call to glDrawElements results in a calling depth of up to 4
      * glDrawElements
      * gl::Context::DrawElements
      * rx::ContextGL::DrawElements
      * VertexArrayGL::syncDrawState.
      
      Each function call has to save/restore a lot of registers which
      results in a stall in the prologue of rx::ContextGL::DrawElements
      due to memory bandwidth limitations.
      
      The main change is the function gl::Context::DrawElements being
      inlined to reduce the calling depth by one. In addition the call
      to ContextGL::syncDrawElementsState is now protected so that it
      gets called only if it's required. Finally a few small getter
      functions have been inlined where the calling code was bigger
      than the actual function.
      
      In total this change improves performance of the
      DrawElementsPerfBenchmark.Run/gl benchmark by 16%.
      
      Bug: angleproject:2966
      
      Change-Id: I423d18452f2f5b520ab52850fda2054e1da86991
      Reviewed-on: https://chromium-review.googlesource.com/c/1389988Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Markus Tavenrath <matavenrath@nvidia.com>
  4. 25 Dec, 2018 1 commit
  5. 23 Dec, 2018 1 commit
  6. 22 Dec, 2018 2 commits
  7. 21 Dec, 2018 3 commits
  8. 20 Dec, 2018 3 commits
  9. 19 Dec, 2018 3 commits
  10. 18 Dec, 2018 4 commits
    • Re-land "Load correct libGLESv2 on Linux and Mac." · 4638dc9d
      Jamie Madill authored
      Re-land fixes build to ensure commit_id is built before libEGL.
      
      libEGL was implicitly loading libGLESv2 on startup. This is bad
      because on platforms like Linux and Mac we could sometimes use the
      incorrect rpath. This in turn meant we needed workarounds like using
      "_angle" extensions to our shared objects to get the correct loading
      behaviour.
      
      Fix this by loading libGLESv2 dynamically in libEGL. We build the
      loader automatically from egl.xml. The loader itself is lazily
      initialized on every EGL entry point call. This is necessary because
      on Linux, etc, there is no equivalent to Windows' DLLMain.
      
      We also use an EGL.h with different generation options so we have the
      proper function pointer types. A README is included for instructions
      on how to regenerate EGL.h.
      
      The entry point generation script is refactored into a helper class
      that is used in the loader generator. Also adds the libGLESv2 versions
      of the EGL entry points in the DEF file on Windows. This allows them to
      be imported properly in 32-bit configurations.
      
      Also fixes up some errors in ANGLE's entry point definitions. Also
      includes a clang-format disable rule for the Khronos headers.
      
      This CL will help us to run ANGLE tests against native drivers.
      
      Bug: angleproject:2871
      Bug: chromium:915731
      Change-Id: I4192a938d1f4117cea1bf1399c98bda7ac25ddab
      Reviewed-on: https://chromium-review.googlesource.com/c/1380511Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • Pass GN header visibility check. · 720ca449
      Jamie Madill authored
      This fixes a few things:
      
      * removes includes that weren't supposed to be present
      * scopes some compiler code into white_box_perftests
      * makes version.h/commit and angle_common id more visible
      * roll zlib to a version that passes check
      
      This should help prevent build problems from popping up in the
      downstream Chromium build. We could also potentially look at
      including gn check in our CQ recipe.
      
      Bug: chromium:915429
      Change-Id: I350f543e16de13c84eb2c43260f4966d47185114
      Reviewed-on: https://chromium-review.googlesource.com/c/1380771Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • Specify texture LOD in compute shader on D3D backend · 0d218da4
      Xinghua Cao authored
      D3D does not define LOD in compute shader, so Sample()
      is not supported, try to use SampleLevel().
      
      Bug: angleproject:2756
      TEST=angle_end2end_tests.ComputeShaderTest
           .TextureFunction/ES3_1_D3D11
           dEQP.GLES31/functional_image_load_store_2d_store*
      
      Change-Id: I63e707d2b56e807cfe766cc21bc6b0819982ce80
      Reviewed-on: https://chromium-review.googlesource.com/c/1379672
      Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Add UAV format for GL_RGBA8I · 2db5082b
      Xinghua Cao authored
      GL_RGBA8I is a supported image unit format, add
      its corresponding UAV format on D3D backend.
      
      Bug: angleproject:1987
      TEST=dEQP.GLES31/functional_image_load_store_2d_store_rgba8i
           dEQP.GLES31/functional_image_load_store_2d_load_store_rgba8i
      
      Change-Id: Ib759f873c8629a644f85784a57ce141d3018e0c1
      Reviewed-on: https://chromium-review.googlesource.com/c/1378888Reviewed-by: 's avatarJiajia Qin <jiajia.qin@intel.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
  11. 17 Dec, 2018 3 commits
  12. 16 Dec, 2018 2 commits
    • Revert "Load correct libGLESv2 on Linux and Mac." · 175d918a
      Yuly Novikov authored
      This reverts commit dd815b62.
      
      Reason for revert: Broke https://luci-milo.appspot.com/p/chromium/builders/luci.chromium.ci/win-rel/8006
      
      Original change's description:
      > Load correct libGLESv2 on Linux and Mac.
      > 
      > libEGL was implicitly loading libGLESv2 on startup. This is bad
      > because on platforms like Linux and Mac we could sometimes use the
      > incorrect rpath. This in turn meant we needed workarounds like using
      > "_angle" extensions to our shared objects to get the correct loading
      > behaviour.
      > 
      > Fix this by loading libGLESv2 dynamically in libEGL. We build the
      > loader automatically from egl.xml. The loader itself is lazily
      > initialized on every EGL entry point call. This is necessary because
      > on Linux, etc, there is no equivalent to Windows' DLLMain.
      > 
      > We also use an EGL.h with different generation options so we have the
      > proper function pointer types. A README is included for instructions
      > on how to regenerate EGL.h.
      > 
      > The entry point generation script is refactored into a helper class
      > that is used in the loader generator. Also adds the libGLESv2 versions
      > of the EGL entry points in the DEF file on Windows. This allows them to
      > be imported properly in 32-bit configurations.
      > 
      > Also fixes up some errors in ANGLE's entry point definitions. Also
      > includes a clang-format disable rule for the Khronos headers.
      > 
      > This CL will help us to run ANGLE tests against native drivers.
      > 
      > Bug: angleproject:2871
      > Change-Id: Id6ecf969308f17b1be4083538428c9c1a1836572
      > Reviewed-on: https://chromium-review.googlesource.com/c/1370725
      > Commit-Queue: Jamie Madill <jmadill@chromium.org>
      > Reviewed-by: Geoff Lang <geofflang@chromium.org>
      
      TBR=ynovikov@chromium.org,geofflang@chromium.org,jmadill@chromium.org
      
      Change-Id: I921b3c45435ab4f05cbc2d1c1172b4185d6257b0
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: angleproject:2871
      Reviewed-on: https://chromium-review.googlesource.com/c/1378887Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
      Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
    • Load correct libGLESv2 on Linux and Mac. · dd815b62
      Jamie Madill authored
      libEGL was implicitly loading libGLESv2 on startup. This is bad
      because on platforms like Linux and Mac we could sometimes use the
      incorrect rpath. This in turn meant we needed workarounds like using
      "_angle" extensions to our shared objects to get the correct loading
      behaviour.
      
      Fix this by loading libGLESv2 dynamically in libEGL. We build the
      loader automatically from egl.xml. The loader itself is lazily
      initialized on every EGL entry point call. This is necessary because
      on Linux, etc, there is no equivalent to Windows' DLLMain.
      
      We also use an EGL.h with different generation options so we have the
      proper function pointer types. A README is included for instructions
      on how to regenerate EGL.h.
      
      The entry point generation script is refactored into a helper class
      that is used in the loader generator. Also adds the libGLESv2 versions
      of the EGL entry points in the DEF file on Windows. This allows them to
      be imported properly in 32-bit configurations.
      
      Also fixes up some errors in ANGLE's entry point definitions. Also
      includes a clang-format disable rule for the Khronos headers.
      
      This CL will help us to run ANGLE tests against native drivers.
      
      Bug: angleproject:2871
      Change-Id: Id6ecf969308f17b1be4083538428c9c1a1836572
      Reviewed-on: https://chromium-review.googlesource.com/c/1370725
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
  13. 15 Dec, 2018 2 commits
  14. 14 Dec, 2018 7 commits