Skip to content
  • Kenneth Graunke's avatar
    iris: Fix zeroing of transform feedback offsets in strange cases. · 6bd4cb92
    Kenneth Graunke authored
    Some of the dEQP.functional.transform_feedback tests end up doing
    the following sequence of operations:
    
       1. BeginTransformFeedback
       2. PauseTransformFeedback
       3. Draw
       4. ResumeTransformFeedback
    
    At step 1, we'd pack 3DSTATE_SO_BUFFER commands saying to zero the
    SO_WRITE_OFFSET registers.  At step 2, we disable streamout, so step 3
    doesn't bother emitting those commands.  Then, step 4 re-packs new
    3DSTATE_SO_BUFFER commands with offset = 0xFFFFFFFF, saying to continue
    appending at the existing offset.  This loads the value from the BO as
    the offsets - but we never actually zeroed it.
    
    So, just maintain a flag saying "we actually emitted the commands",
    and stomp offset back to zero until we emit some.
    6bd4cb92