1. 10 Oct, 2016 1 commit
    • Split TIntermBlock from TIntermAggregate · 6d40bbdd
      Olli Etuaho authored
      The new TIntermBlock node class replaces TIntermAggregate nodes with
      the EOpSequence op. It represents the root node of the tree which is
      a list of declarations and function definitions, and any code blocks
      that can be denoted by curly braces. These include function and loop
      bodies, and if-else branches.
      
      This change enables a bunch of more compile-time type checking, and
      makes the AST code easier to understand and less error-prone.
      
      The PostProcess step that used to be done to ensure that the root node
      is TIntermAggregate is removed in favor of making sure that the root
      node is a TIntermBlock in the glslang.y parsing code.
      
      Intermediate output formatting is improved to print the EOpNull error
      in a clearer way.
      
      After this patch, TIntermAggregate is still used for function
      definitions, function prototypes, function parameter lists, function
      calls, variable and invariant declarations and the comma (sequence)
      operator.
      
      BUG=angleproject:1490
      TEST=angle_unittests, angle_end2end_tests
      
      Change-Id: I04044affff979a11577bc1fe75d747e538b799c8
      Reviewed-on: https://chromium-review.googlesource.com/393726
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
  2. 09 Oct, 2016 2 commits
  3. 08 Oct, 2016 2 commits
  4. 07 Oct, 2016 11 commits
  5. 06 Oct, 2016 13 commits
  6. 05 Oct, 2016 5 commits
  7. 04 Oct, 2016 3 commits
    • Fix integer math overflows in the preprocessor · 7f9a55f7
      Olli Etuaho authored
      Evaluating integer expressions in the ESSL preprocessor may result in
      overflowing the signed integer range. Implement wrapping overflow for
      preprocessor expressions in a way that doesn't hit any undefined
      behavior.  In the ESSL spec, preprocessor expressions are defined to
      have mostly the same semantics as in C++. Since C++ doesn't define
      what happens on signed integer overflow, we choose to make most of the
      operators wrap on overflow for backward compatibility and consistency
      with the rest of the ESSL spec.
      
      We reuse the existing wrapping overflow helpers that are
      used for constant folding. To be able to do this, the type used in the
      preprocessor expression parser is changed from 64-bit to 32-bit.
      
      Shifting negative numbers is implemented as a logical shift. This
      cannot be disallowed since dEQP requires shaders shifting negative
      numbers to pass compilation.
      
      Undefined bitwise shifts where the offset is greater than 31 will now
      result in a compile-time error.
      
      A couple of test cases are now covered by the preprocessor tests
      rather than full compilation tests. This isolates the tests better and
      they run faster.
      
      BUG=chromium:652223
      TEST=angle_unittests
      
      Change-Id: I84be40d404c10ecd0846c5d477e626a94a2a8587
      Reviewed-on: https://chromium-review.googlesource.com/392146
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • D3D11: Fix unreferenced XFB vars getting dropped. · 4c655248
      Jamie Madill authored
      Our for-loop logic was confused so that some unreferenced
      transform feedback varyings might get dropped.
      
      BUG=chromium:651493
      
      Change-Id: Id283230da0a47fc647b2a3862da60be5538e439e
      Reviewed-on: https://chromium-review.googlesource.com/391945
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
    • formatutils: allow reusing rowPitch computation for depthPitch · 0e48719f
      Corentin Wallez authored
      This should fix a null D3D11 backend draw call performance regression.
      
      BUG=651101
      
      Change-Id: I2eb10cddd15f0e7b25b886c89eccd2906e988c72
      Reviewed-on: https://chromium-review.googlesource.com/392227Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Corentin Wallez <cwallez@chromium.org>
  8. 03 Oct, 2016 3 commits