Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
A
angle
  • Project
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Chen Yisong
  • angle
  • Repository

Switch branch/tag
  • angle
  • src
  • libANGLE
  • SizedMRUCache.h
Find file
BlameHistoryPermalink
  • Rafael Cintron's avatar
    Resolve Bad Binary Link Failures · 5d01d538
    Rafael Cintron authored May 12, 2020
    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>
    5d01d538
SizedMRUCache.h 3.97 KB
EditWeb IDE
×

Replace SizedMRUCache.h

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.