1. 26 Aug, 2015 7 commits
    • Implement EGL_KHR_get_all_proc_addresses. · 5565936c
      Geoff Lang authored
      BUG=angleproject:1138
      
      Change-Id: I0dd4e1a092e889cdb9de4773162e5416ac9be65d
      Reviewed-on: https://chromium-review.googlesource.com/295242Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Tested-by: 's avatarGeoff Lang <geofflang@chromium.org>
    • Work around deprecated LUMA formats in the core profile. · 53b8aec0
      Geoff Lang authored
      Use R and RG textures with swizzle states to emulate them. A manual blit is
      required when calling CopyTex[Sub]Image from a RGB[A] framebuffer to an
      emulated L[A] texture so that the alpha channel ends up in the correct channel
      of the destination texture.
      
      Fixes the following tests when using the core profile:
       * conformance/extensions/oes-texture-float.html
       * conformance/extensions/oes-texture-half-float.html
       * conformance/textures/misc/tex-sub-image-2d.html
       * conformance/textures/misc/texture-formats-test.html
       * conformance/textures/misc/texture-npot.html
      
      BUG=angleproject:1113
      
      Change-Id: If5540e66d9017596bd83d95ec3ede043cbcfe0d2
      Reviewed-on: https://chromium-review.googlesource.com/293905Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Tested-by: 's avatarGeoff Lang <geofflang@chromium.org>
    • VertexArrayGL: fix an off by one error for indexRange for drawElements · 2c34a4b0
      Corentin Wallez authored
      DrawElements' range was of the form [start, end] while DrawArrays' was
      of the form [start, end), which caused an out of bound array access in
      the client vertex pointers.
      
      This issue was detected while running angle_end2end_tests with
      AddressSanitizer.
      
      BUG=angleproject:1137
      
      Change-Id: Id9abddf29eaf73bacfd08d1616a999be2fe616b8
      Reviewed-on: https://chromium-review.googlesource.com/295122Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Tested-by: 's avatarCorentin Wallez <cwallez@chromium.org>
    • Remove dynamic indexing of matrices and vectors in HLSL · 83f3411d
      Olli Etuaho authored
      HLSL doesn't support dynamic indexing of matrices and vectors, so replace
      that with helper functions that unroll dynamic indexing into switch/case
      and static indexing.
      
      Both the indexed vector/matrix expression and the index may have side
      effects, and these will be evaluated correctly. If necessary, index
      expressions that have side effects will be written to a temporary
      variable that will replace the index.
      
      Besides dEQP tests, this change is tested by a WebGL 2 conformance test.
      
      In the case that a dynamic index is out-of-range, the base ESSL 3.00 spec
      allows undefined behavior. KHR_robust_buffer_access_behavior adds the
      requirement that program termination should not occur and that
      out-of-range reads must return either a value from the active program's
      memory or zero, and out-of-range writes should only affect the active
      program's memory or do nothing. This patch clamps out-of-range indices so
      that either the first or last item of the matrix/vector is accessed.
      
      The code is not transformed in case the it fits within the limited subset
      of ESSL 1.00 given in Appendix A of the spec. If the code isn't within
      the restricted subset, even ESSL 1.00 shaders may require this
      workaround.
      
      BUG=angleproject:1116
      TEST=dEQP-GLES3.functional.shaders.indexing.* (all pass after change)
           WebGL 2 conformance tests (glsl3/vector-dynamic-indexing.html)
      
      Change-Id: I024722ef4ca1e14d5ad47fdc540397e18858bed6
      Reviewed-on: https://chromium-review.googlesource.com/290515Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Tested-by: 's avatarOlli Etuaho <oetuaho@nvidia.com>
    • Make PackedVarying a D3D-only type. · 4cff2477
      Jamie Madill authored
      The register assignment stuff only applies to the D3D back-end.
      Cleans up the GL back-ends use of PackedVarying, and will lead
      to future cleanups relating to packing varyings.
      
      BUG=angleproject:1123
      
      Change-Id: Iaaa5fc03577e5b61ea6ae76ee1e15ad608037f34
      Reviewed-on: https://chromium-review.googlesource.com/295190Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
      Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Fix debug build on Linux · 401d9fe6
      Olli Etuaho authored
      Compiling an assert in Program.cpp was failing at least on GCC 4.8
      because it compared unsigned size_t to zero, a comparison that was always
      true. The C standard defines size_t as unsigned, so the assert shouldn't
      be necessary on other platforms either.
      
      There was already a commit on top of the patch that added the bug, so it
      is simpler to fix the problem by changing the assert rather than
      reverting.
      
      TEST=standalone debug build on Linux
      
      Change-Id: Ifd910332a770f7360a15c31706beca740d0f289d
      Reviewed-on: https://chromium-review.googlesource.com/294971Reviewed-by: 's avatarOlli Etuaho <oetuaho@nvidia.com>
      Tested-by: 's avatarOlli Etuaho <oetuaho@nvidia.com>
    • Add deep copying support for typed AST nodes · d7a25243
      Olli Etuaho authored
      Resubmit with inconsistent override warnings fixed.
      
      Removing dynamic indexing of vectors and matrices will require copying
      the indexed nodes in case they are written. Any type of l-value node that
      doesn't have side effects may need to be copied. Add a copying function
      for all typed node classes so that this copying can be performed.
      
      Private copy constructors are used to implement the deepCopy function in
      order to make maintenance easier. With copy constructors, each subclass
      only needs to take care of copying its own members, and not the base
      class members, which reduces the possibility of errors. Copy constructors
      are disabled for all node classes that don't support deep copying by
      inheriting TIntermNode from angle::NonCopyable.
      
      Assignment operator is disabled for all node classes through inheriting
      angle::NonCopyable. This applies also to classes that now get the private
      copy constructor.
      
      Explicit copy constructor and assignment operator declarations are added
      to some classes which show up in node member variables to make code
      clearer.
      
      BUG=angleproject:1116
      TEST=angle_unittests
      
      Change-Id: I7964976f5dac7dfd745b8c6612ca06fb01d271c4
      Reviewed-on: https://chromium-review.googlesource.com/295080Tested-by: 's avatarOlli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarZhenyao Mo <zmo@chromium.org>
  2. 25 Aug, 2015 7 commits
  3. 24 Aug, 2015 9 commits
  4. 21 Aug, 2015 9 commits
  5. 20 Aug, 2015 8 commits