1. 15 Nov, 2017 6 commits
  2. 14 Nov, 2017 11 commits
  3. 13 Nov, 2017 8 commits
  4. 12 Nov, 2017 2 commits
    • Unify extension behavior checks · 703671e9
      Olli Etuaho authored
      Some supportsExtension and isExtensionEnabled checks are now turned
      into checkCanUseExtension checks. Using checkCanUseExtension is
      preferable so that warnings are generated correctly when an extension
      is used and a warn directive is present.
      
      isExtensionEnabled is still used in some places where an error message
      about the extension could be confusing, particularly when a core spec
      version adds support for something that is also present in an
      extension.
      
      Also make it possible to disable ARB_texture_rectangle extension using
      an extension directive. ARB_texture_rectangle extension functionality
      is enabled by default in GLSL when the extension is supported.
      
      BUG=angleproject:2238
      TEST=angle_unittests
      
      Change-Id: I7455293412ff469f54bc7da79df146e7bc127379
      Reviewed-on: https://chromium-review.googlesource.com/760737
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Add flag for turning off initializing variables with loops · bb0775da
      Olli Etuaho authored
      This flag is needed to toggle upcoming variable initialization mode
      which uses for loops to optimize the compilation process. Initializing
      variables using for loops will be turned on by default, but it needs
      to be turned off in Chromium in certain cases. Chromium will use the
      flag added in this patch and that code will need to go into Chromium
      before finishing the implementation in ANGLE.
      
      BUG=chromium:735497
      
      Change-Id: I3a0e7b7c6cebe60afa72964fbd0caf3b1eafccbc
      Reviewed-on: https://chromium-review.googlesource.com/763451
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
  5. 11 Nov, 2017 3 commits
  6. 10 Nov, 2017 7 commits
  7. 09 Nov, 2017 3 commits
    • Fix HALF_FLOAT/HALF_FLOAT_OES selection with the ES3 backend. · 9e888a46
      Jeff Gilbert authored
      Found via TextureUploadFormatTest.
      
      BUG=angleproject:2231
      Change-Id: I8f214c4cfe3d8fead9226db20e57f6e6039b5b44
      Reviewed-on: https://chromium-review.googlesource.com/756642
      Commit-Queue: Geoff Lang <geofflang@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Set TextureGL dirty bits when workaround usage of levels changes. · f5b8ba6b
      Jeff Gilbert authored
      Previously, we wouldn't update the dirty bits when switching from a
      workarounded alpha/alpha/uint8 (r8/red/uint8) to something else.
      
      Found via TextureUploadFormatTest.
      
      BUG=angleproject:2232
      Change-Id: Idba63282f8a65daec5675798d3516345ca941447
      Reviewed-on: https://chromium-review.googlesource.com/756641
      Commit-Queue: Geoff Lang <geofflang@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Work around NVIDIA GLSL vector-scalar op bug · 661fc487
      Olli Etuaho authored
      This adds a new AST transform VectorizeVectorScalarArithmetic. The AST
      transform works around incorrect handling of certain types of GLSL
      arithmetic operations by NVIDIA's GL driver. It works around only the
      most common cases where the bug reproduces, since detecting all the
      cases would take more sophisticated analysis of the code than what
      is currently easily implementable in ANGLE.
      
      When a float add operator has both vector and scalar operands, the AST
      transform turns the scalar operand into a vector operand. Example:
      
      vec4 f;
      f += 1.0;
      
      gets turned into:
      
      vec4 f;
      f += vec4(1.0);
      
      When a vector constructor contains a binary scalar float
      multiplication or division operation as its only argument, the AST
      transform turns both operands of the binary operation into vector
      operands. Example:
      
      float f, g;
      vec4(f * g);
      
      gets turned into:
      
      float f, g;
      vec4(vec4(f) * vec4(g));
      
      Another example with compound assignment:
      
      float f, g;
      vec4(f *= g);
      
      gets turned into:
      
      float f, g;
      vec4 s0 = vec4(f);
      (s0 *= g, f = s0.x), s0;
      
      This latter transformation only works in case the compound assignment
      left hand expression doesn't have side effects.
      
      BUG=chromium:772651
      TEST=angle_end2end_tests
      
      Change-Id: I84ec04287793c56a94845a725785439565debdaf
      Reviewed-on: https://chromium-review.googlesource.com/721321
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>