1. 13 Sep, 2016 3 commits
    • Split ternary node class from TIntermSelection · d0bad2c7
      Olli Etuaho authored
      Ternary operator nodes are typed parts of expressions, they always
      have two children and the children are also guaranteed to be
      TIntermTyped. "If" selection nodes can't be a part of an expression,
      they can have either one or two children and the children are code
      blocks. Due to all of these differences it makes sense to store these
      using two different AST node classes.
      
      BUG=angleproject:1490
      TEST=angle_unittests
      
      Change-Id: I913ab1d806e3cdb5c21106f078cc9c0b6c72ac54
      Reviewed-on: https://chromium-review.googlesource.com/384512
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
    • Specialize GLTypeToGLEnum in headers · 95738972
      Corentin Wallez authored
      BUG=angleproject:1514
      
      Change-Id: I1f95e985471ea7a2ea0242d8b48ceccca68edf42
      Reviewed-on: https://chromium-review.googlesource.com/384891Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Corentin Wallez <cwallez@chromium.org>
    • Remove SH_TIMING_RESTRICTIONS compiler flag · 966456de
      Olli Etuaho authored
      The timing restrictions code is not in use and not updated for ESSL3,
      so it is better to remove it to make refactoring the AST easier.
      
      It can also be argued that perfect prevention of shader timing attacks
      is not feasible due to factors that are not under control of ANGLE,
      such as fixed function color compression in GPUs. Such color
      compression may make the use of texture bandwidth and thus performance
      dependent on the content of a texture regardless of whether a
      compressed format is chosen through the API.
      
      SH_DEPENDENCY_GRAPH flag that could only be active together with the
      timing restrictions flag is also removed, along with all the code that
      was supporting it. The newer CallDAG code is used for different
      purposes and is kept.
      
      BUG=angleproject:1490
      TEST=angle_unittests
      
      Change-Id: I2cd10e18df366e8e43f7c3af1ca12d2a4bfb2007
      Reviewed-on: https://chromium-review.googlesource.com/384511
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
  2. 12 Sep, 2016 4 commits
    • Add newlines to error messages. · e79c2d1f
      Yuly Novikov authored
      Looks like this breaks parsing tests list in gtest runner,
      which causes deqp_gles2 to fail on Nexus 5X swarmed bot.
      
      Driveby fix of HowToMakeChanges md format.
      
      BUG=angleproject:1471
      
      Change-Id: I6cfa2d9287385aabf2aee47521e5e55e309831c0
      Reviewed-on: https://chromium-review.googlesource.com/383813Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
    • Disallow multiple locations on output variables · 87d410c8
      Olli Etuaho authored
      GLSL ES specs from version 3.00 to 3.20 all mention that output layout
      location qualifier may appear at most once within a declaration.
      Enforce this rule when parsing shaders.
      
      Also set max draw buffers to 8 when compiling GLSL ES >= 3.00 in the
      qualification order tests and shader translator sample, so that
      parsing locations > 0 will succeed.
      
      BUG=angleproject:1505
      TEST=angle_unittests
      
      Change-Id: I50fe409041385f5e10e695f43dc3a572433e9772
      Reviewed-on: https://chromium-review.googlesource.com/381211Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
    • Promote unary nodes automatically · a223430c
      Olli Etuaho authored
      Unary nodes now get their type set automatically based on the
      operation and operand. The operand should only be changed to another
      of the same type after the node is constructed. The operation can't
      be changed on unary and binary nodes after they've been constructed.
      
      BUG=angleproject:1490
      TEST=angle_unittests
      
      Change-Id: Ib1ea3dcb1162261966c02d5f03d8091cf647fac1
      Reviewed-on: https://chromium-review.googlesource.com/378935Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
    • Promote and fold indexing nodes similarly to other binary ops · 3272a6d3
      Olli Etuaho authored
      Indexing nodes now get their type set in TIntermBinary::promote, same
      as math and logic ops. They are also constant folded through
      TIntermBinary::fold() instead of having special functions for constant
      folding them in ParseContext.
      
      Index nodes for struct and interface block member access now always
      have integer type, instead of sometimes having the type of the field
      they were used to access.
      
      Usage of TIntermBinary constructor is cleaned up so only the
      constructor that takes in left and right operands is used. The type
      of TIntermBinary nodes is always determined automatically.
      
      Together these changes make the code considerably cleaner.
      
      Note that the code for constant folding for array indexing is actually
      never hit because constant folding array constructors is still
      intentionally disabled in the code.
      
      BUG=angleproject:1490
      TEST=angle_unittests
      
      Change-Id: Ifcec45257476cdb0d495c7d72e3cf2f83388e8c5
      Reviewed-on: https://chromium-review.googlesource.com/377961Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
  3. 09 Sep, 2016 1 commit
  4. 08 Sep, 2016 7 commits
  5. 07 Sep, 2016 3 commits
  6. 06 Sep, 2016 11 commits
  7. 05 Sep, 2016 1 commit
  8. 02 Sep, 2016 3 commits
  9. 01 Sep, 2016 5 commits
  10. 31 Aug, 2016 2 commits