1. 01 Apr, 2021 5 commits
  2. 31 Mar, 2021 1 commit
  3. 23 Mar, 2021 1 commit
  4. 15 Mar, 2021 2 commits
  5. 12 Mar, 2021 1 commit
    • Chia-I Wu's avatar
      vrend: fix fence polling without sync thread · 45d1e4fa
      Chia-I Wu authored
      This was regressed by commit 3a2a537c
      
       (vrend: hook up per-context
      fencing internally), bisected by Gert.
      
      When there is no sync thread, vrend_renderer_check_fences checks fences
      on vrend_state.fence_list for signaled ones and call ctx->fence_retire
      on them.  Because fences belonging to the same context are ordered, as
      an optimization, we ideally want to call ctx->fence_retire only on the
      last fence of those belonging to the same context. (Note we are close to
      that but not quite because we want to avoid complex changes until virgl
      starts using per-context fencing, if ever)
      
      The issue is in need_fence_retire_signal_locked.  It has this check
      
          if (fence->fences.next == &vrend_state.fence_list)
             return true;
      
      which says that, if the fence is the last one in vrend_state.fence_list,
      call ctx->fence_retire (because it must be the last fence of some
      context).  The check is incorrect because not all fences on the list
      have signaled when the sync thread is not used.  It will fail when there
      are also unsignaled fences on the list.
      
      To fix the issue, we contruct a list of signaled fences first before
      calling need_fence_retire_signal_locked.  We could merge the paths with
      and without sync thread further because the non-sync-thread path just
      needs this extra step to construct a list of signaled fences.  But we
      will save that for future and focus on fixing the performance
      regression.
      
      Signed-off-by: Chia-I Wu's avatarChia-I Wu <olvaffe@gmail.com>
      Reviewed-by: Gert Wollny's avatarGert Wollny <gert.wollny@collabora.com>
      45d1e4fa
  6. 11 Mar, 2021 1 commit
  7. 10 Mar, 2021 4 commits
  8. 09 Mar, 2021 5 commits
  9. 08 Mar, 2021 2 commits
  10. 05 Mar, 2021 5 commits
  11. 04 Mar, 2021 3 commits
  12. 03 Mar, 2021 10 commits