1. 16 May, 2020 1 commit
    • Resolve Bad Binary Link Failures · 5d01d538
      Rafael Cintron authored
      When ANGLE_PROGRAM_BINARY_LOAD is enabled, Program::loadBinary
      unconditionally returns angle::Result::Continue to the caller. The
      caller, gl::Program::link, postpones the resolution of the link
      until resolveLinkImpl.
      
      Unfortunately, resolveLinkImpl is not able to tell whether the link
      failed because the shader from the developer is bad or because the
      loaded binary is not compatible with the backend. The former case
      should fail link. In the latter case, we should fallback to linking
      the program from the original shader sources. The loaded binary could
      be read from the on-disk shader cache and be corrupted or serialized
      with different revision and subsystem id than the currently loaded
      ANGLE backend.
      
      This fix adjusts Program::loadBinary and ProgramD3D::load so that
      angle::Result::Incomplete is returned to gl::Program::link when the
      binary is incompatible with the backend.  gl::Program:link falls back
      to compilation from original shader sources.
      
      Since no code checks the return value of SizedMRUCache::eraseByKey,
      modified it to now return void.
      
      Bug: chromium:1079497
      Change-Id: Id5271d7badad8627563e87859d1c9fdb81de5785
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197944Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarTim Van Patten <timvp@google.com>
      Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
  2. 15 May, 2020 13 commits
  3. 14 May, 2020 12 commits
  4. 13 May, 2020 10 commits
  5. 12 May, 2020 4 commits