Skip to content
  • Francisco Jerez's avatar
    OPTIONAL: iris: Perform BLORP buffer barriers outside of iris_blorp_exec() hook. · 8252bb0e
    Francisco Jerez authored
    
    
    The iris_blorp_exec() hook needs to be executed under a single
    indivisible sync region, which means that in cases where we need to
    emit a PIPE_CONTROL for a buffer barrier we won't be able to track the
    subsequent commands separately from the previous commands, which will
    prevent us from optimizing out subsequent PIPE_CONTROLs if we
    encounter the same buffers again.  In particular I've encountered this
    situation in some SynMark test-cases which perform lots of BLORP
    operations with the same buffer bound as both source and destination
    (in order to generate mipmaps): In such a scenario if the source
    requires flushing we'd also end up flushing for the destination
    redundantly, even though a single PIPE_CONTROL would have been
    sufficient.
    
    This avoids a 4.5% FPS regression in SynMark OglHdrBloom and a 3.5%
    FPS regression in SynMark OglMultithread.
    
    Reviewed-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
    Part-of: <mesa!3875>
    8252bb0e