1. 02 Nov, 2015 1 commit
    • Revert "Remove dynamic indexing of matrices and vectors in HLSL" · 2e2f3b79
      Jamie Madill authored
      This reverts commit 3766a40d.
      
      This CL was causing crashes in UniformHLSL.cpp, where an internal
      uniform "base" was attempted to be declared in HLSL. Was crashing
      on an external WebGL 3D canvas page (http://www.taccgl.org/?dbg=t).
      
      BUG=546686
      
      Original commit message:
      
      Re-landing after fixing D3D9 specific issues.
      
      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: I1d4b2e3888e91af7d5eebf743d12778698b6b903
      Reviewed-on: https://chromium-review.googlesource.com/310270Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
  2. 02 Oct, 2015 10 commits
  3. 01 Oct, 2015 9 commits
  4. 30 Sep, 2015 4 commits
  5. 29 Sep, 2015 9 commits
  6. 28 Sep, 2015 7 commits