1. 22 Jun, 2017 4 commits
  2. 21 Jun, 2017 7 commits
  3. 20 Jun, 2017 6 commits
    • Proliferate gl::Context everywhere. · 4928b7ca
      Jamie Madill authored
      This gives the D3D back-end access to the GL state almost anywhere.
      This uses the onDestroy hook for Textures to push errors up from
      destructors, although they still don't quite make it to the Context.
      
      There are places, such as in EGL object (Context/Surface) destruction,
      where we end up calling through to GL implementation internals without
      having access to a gl::Context. We handle this via a proxy Context
      to a Display, basically a null context, that has access to impl-side
      state like the Renderer pointer if necessary. It does not have access
      to the normal GL state.
      
      Also Pass gl::Context to RefCountObject::release(). Since we're using
      destroy() methods now, we should not ever call the destructor directly.
      
      BUG=angleproject:1156
      
      Change-Id: Ie4c32ad6bf6caaff0289901f30b5c6bafa2ce259
      Reviewed-on: https://chromium-review.googlesource.com/529707
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
    • Optimize builtin function emulator class. · 35bcad42
      Jamie Madill authored
      This refactor uses a generator to produce static arrays instead of
      using a bunch of std::map inserting statements. It speeds up shader
      translation because every shader compile would create and tear down
      this table.
      
      Currently it is implemented as a flat array, but in the future we
      could use compile-time hashing to implement faster lookup.
      
      BUG=chromium:697758
      
      Change-Id: I689f7de4d9b2c8c76095bb313f4c040116fc61d2
      Reviewed-on: https://chromium-review.googlesource.com/521226
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Reviewed-by: 's avatarOlli Etuaho <oetuaho@nvidia.com>
    • Allow '\' characters in shader source for WebGL2. · a71a98ee
      Geoff Lang authored
      TEST=deqp/data/gles3/shaders/preprocessor.html
      
      BUG=angleproject:2016
      
      Change-Id: Ia5240a1ff65ebadc15604a5c3eb63042953c43a5
      Reviewed-on: https://chromium-review.googlesource.com/540198
      Commit-Queue: Geoff Lang <geofflang@chromium.org>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
    • WebGL Compat: forbid client side arrays, even unused · 672f7f3f
      Corentin Wallez authored
      BUG=angleproject:2064
      
      Change-Id: I9a9c2df9a158799dbdc490446352cdf30fb87ca6
      Reviewed-on: https://chromium-review.googlesource.com/537812
      Commit-Queue: Corentin Wallez <cwallez@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Fix kResourceTypeNames initialization · 6260b7aa
      Bruce Dawson authored
      Due to a missing comma the kResourceTypeNames array contained a single
      long (concatenated) string instead of NumResourceTypes independent
      strings.
      
      This incorrect initialization caused a crash in out-of-memory
      situations, but this was only noticed on VC++ 2017 for some reason.
      
      This fix adds the missing comma and uses a static_assert to ensure that
      the array is initialized correctly.
      
      BUG=chromium:727671,728226,731089
      
      Change-Id: I9f0f3d3725b9f773505506513afb6c349db3a7fb
      Reviewed-on: https://chromium-review.googlesource.com/539536Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Don't expose non-conformant multisampling modes on GL · 3cd0dd37
      Olli Etuaho authored
      Some NVIDIA GL drivers expose non-conformant multisampling modes. The
      conformance of multisampling modes can be queried using the extension
      NV_internalformat_sample_query. Use it to filter out the
      non-conformant modes from the modes that are exposed by ANGLE.
      
      The MAX_SAMPLES value and other similar values stored in caps also
      need to be lowered to match the maximum number of samples exposed
      for required formats.
      
      There seems to be an NVIDIA driver bug related to querying
      STENCIL_INDEX8 multisample format. Work around this by querying
      DEPTH24_STENCIL8 instead.
      
      There's also some confusion around whether RGB9_E5 should be
      renderable. Once the floating point texture extensions got rolled
      into the core GL spec, it was eventually made clear that RGB9_E5
      is intended not to be renderable. The extension specs that predate
      float textures in the core spec do suggest that it would be
      renderable, but in practice drivers that advertise the extension
      strings don't reliably implement RGB9_E5 as renderable. Solve this
      by disabling it as a renderable format and adding an explanatory
      comment.
      
      BUG=chromium:682815
      TEST=angle_end2end_tests,
           dEQP-GLES31.functional.state_query.internal_format.renderbuffer.*
      
      Change-Id: I2218e3a23ea7b48a0615fea77a91897dc7d5fe9e
      Reviewed-on: https://chromium-review.googlesource.com/525515Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
  4. 19 Jun, 2017 5 commits
    • D3D11: Fix mingw64 build. · 30ca54f4
      Jamie Madill authored
      Two small build errors were breaking ming64.
      
      BUG=angleproject:2071
      
      Change-Id: Ia5c8e629e77c09f151b888364e92475b4c3f1709
      Reviewed-on: https://chromium-review.googlesource.com/539796Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Track LevelInfoGL per cube map face. · 125e220e
      Geoff Lang authored
      When transitioning between formats in cube maps, tracking of luma
      workaround information would become incorrect because it was only tracked
      per-level.
      
      There are no failing tests due to this because once the cube map is
      complete again, the tracking is correct.
      
      TEST=conformance/more/conformance/quickCheckAPI-S_V.html
      
      BUG=angleproject:2074
      
      Change-Id: If4e1e94061208f0cf3668b2bd6be59a9a21e42b6
      Reviewed-on: https://chromium-review.googlesource.com/539956
      Commit-Queue: Geoff Lang <geofflang@chromium.org>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
    • Proliferate gl::Context. · fe54834f
      Jamie Madill authored
      This enables a few small things: it will enable making the platform
      a property of the Display rather than a global. The same goes for the
      global logging annotator. Also it ensures all back-end implementations
      have access to the GL / EGL state when available.
      
      Also introduces a smart pointer helper class to angleutils for objects
      that prefer to be destroyed with a context (gl::Context/egl::Display)
      parameter. We were using std::unique_ptr in a few places that would
      not work well with these objects.
      
      BUG=angleproject:1156
      
      Change-Id: I59e288a3d6f766ff8a0f4b48ff3a1fbf7489daba
      Reviewed-on: https://chromium-review.googlesource.com/529706
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
    • Context: Bind current display/surface. · 61e16b44
      Jamie Madill authored
      Looking at the EGL spec, it says for eglGetCurrentDisplay:
      
      "The display for the current context in the calling thread, for the
      current rendering API, is returned."
      
      This implies that MakeCurrent binds a display to a Context. There's
      also pretty clear language for the read/draw Surface as well, that
      they can only be bound to one Context/thread at a time. Hence we
      don't need to duplicate this storage in the egl::Thread structure,
      merely storing a pointer to the current Context, which has access
      to the read/draw Surface and current Display.
      
      BUG=angleproject:1156
      
      Change-Id: Ia3b99d50b3591012c43e851834c1af02ff62a33f
      Reviewed-on: https://chromium-review.googlesource.com/538865Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • Clean up ValidateOutputs · 12b0b399
      Olli Etuaho authored
      Remove the validateOutputs method from Compiler and replace it with a
      static method alongside the traverser. This encapsulates the
      ValidateOutputs implementation better.
      
      TEST=angle_unittests
      BUG=angleproject:2068
      
      Change-Id: I1788cb9726db41ca35fd0e746f8d48ced7fee74f
      Reviewed-on: https://chromium-review.googlesource.com/535477
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
  5. 16 Jun, 2017 3 commits
  6. 15 Jun, 2017 3 commits
  7. 14 Jun, 2017 1 commit
  8. 13 Jun, 2017 11 commits