Skip to content
  • Francisco Jerez's avatar
    iris: Annotate all BO uses with domain and sequence number information. · eb5d1c27
    Francisco Jerez authored
    
    
    Probably the most annoying patch to review from the whole series --
    Mark every buffer object use as accessed through some caching domain
    with the sequence number of the current synchronization section of the
    batch.  The additional argument of iris_use_pinned_bo() makes sure I'd
    have gotten a compile error if I had missed any buffer added to the
    batch validation list.
    
    There are only a few exceptions where a buffer is left untracked while
    adding it to the validation list, justified below:
    
     - Batch buffers: These are strictly read-only for the moment.
    
     - BLORP buffer objects: Their seqnos are bumped manually at the end
       of iris_blorp_exec() instead, in order to avoid plumbing domain
       information through BLORP address combining.
    
     - Scratch buffers: The contents of these are strictly thread-local.
    
     - Shader images and SSBOs: Accesses of these buffers are explicitly
       synchronized at the API level.
    
    v2: Opt out of tracking more aggressively (Ken): In addition to the
        above, surface states, binding tables, instructions and most
        dynamic states are now left untracked, which means a *lot* more BO
        uses marked IRIS_DOMAIN_NONE which need to be reviewed extremely
        carefully, since the cache tracker won't be able to provide any
        coherency guarantees for them.
    
    Reviewed-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
    Part-of: <!3875>
    eb5d1c27