Skip to content
  • Lionel Landwerlin's avatar
    anv: implement shareable timeline semaphores · 829699ba
    Lionel Landwerlin authored
    
    
    This implements timeline semaphores using a new type of dma-fence
    stored into drm-syncobjs. We use a thread to implement delayed
    submissions.
    
    v2: Drop cloning of temporary semaphores and just transfer their ownership (Jason)
        Drain queue when dealing with binary semaphore
        Ensure we don't submit to the thread as long as we don't need to
    
    v3: Use __u64 not uintptr_t for kernel pointers
        Fix commented code for INTEL_DEBUG=bat
        Set DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES in timeline fence execbuf extension
        Add new anv_queue_set_lost()
        Drop multi queue stuff meant for the fake multi queue patch
        Rework temporary syncobj handling
        Don't use syncobj when not available (DeviceWaitIdle/CreateDevice)
        Use ANV_MULTIALLOC
        And a few more tweaks...
    
    v4: Drop drained condition helper (Lionel)
        Fix missing EXEC_OBJECT_WRITE on BOs we want to wait on (Jason)
    
    v5: Add missing device->lost_reported in _anv_device_report_lost (Lionel)
        Fix missing free on submit->simple_bo (Lionel)
        Don't drop setting the device in lost state on QueueSubmit error (Jason)
        Store submit->fence_bos as an array of uintptr_t (Jason)
    
    v6: condition device->has_thread_submit to i915 & core DRM support (Jason)
    
    v7: Fix submit->in_fence leakage on error (Jason)
        Keep dummy semaphore with no thread submission (Jason)
    
    v8: Move ownership of submit->out_fence to submit (Jason)
    
    v9: Don't forget to read the VkFence's syncobj binary payload (Lionel)
    
    v10: Take the mutex lock on anv_gem_close() (Jason/Lionel)
    
    v11: Fix void* -> u64 cast on 32bit (Lionel)
    
    v12: Rebase after BO backed timeline semaphore (Lionel)
    
    v13: Fix missing snippets lost after rebase (Lionel)
    
    v14: Drop update_binary usage (Lionel)
    
    v15: Use ANV_MULTIALLOC (Lionel)
    
    v16: Fix some realloc issues (Ivan)
    
    Signed-off-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
    Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> (v8)
    Part-of: <mesa/mesa!2901>
    829699ba