mesa/src/intel/vulkan
Lionel Landwerlin 829699ba63 anv: implement shareable timeline semaphores
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: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> (v8)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2901>
2020-09-01 16:40:11 +00:00
..
tests
anv_allocator.c
anv_android.c anv: Pass device to setup_gralloc0_usage for error reporting 2020-08-05 18:08:07 +00:00
anv_android.h
anv_android_stubs.c
anv_batch_chain.c anv: implement shareable timeline semaphores 2020-09-01 16:40:11 +00:00
anv_blorp.c
anv_cmd_buffer.c anv: simplify push constant emissions 2020-08-28 09:58:46 +03:00
anv_descriptor_set.c anv: simplify push constant emissions 2020-08-28 09:58:46 +03:00
anv_device.c anv: implement shareable timeline semaphores 2020-09-01 16:40:11 +00:00
anv_dump.c
anv_entrypoints_gen.py
anv_extensions.py anv: Implement VK_EXT_4444_formats 2020-08-03 17:50:03 +00:00
anv_extensions_gen.py
anv_formats.c anv: Implement VK_EXT_4444_formats 2020-08-03 17:50:03 +00:00
anv_gem.c anv: add new gem/drm helpers 2020-09-01 16:40:11 +00:00
anv_gem_stubs.c anv: add new gem/drm helpers 2020-09-01 16:40:11 +00:00
anv_genX.h anv: fix up dynamic clip emission 2020-08-11 10:07:08 +03:00
anv_icd.py
anv_image.c anv: take depth in to account in anv_GetImageSubresourceLayout 2020-08-21 05:57:12 +00:00
anv_intel.c
anv_nir.h
anv_nir_add_base_work_group_id.c
anv_nir_apply_pipeline_layout.c nir: Add a nir_foreach_uniform_variable helper 2020-07-29 17:38:58 +00:00
anv_nir_compute_push_layout.c anv: fix robust buffer access 2020-08-31 19:24:42 +00:00
anv_nir_lower_multiview.c nir: Add nir_foreach_shader_in/out_variable helpers 2020-07-29 17:38:57 +00:00
anv_nir_lower_ycbcr_textures.c
anv_pass.c
anv_perf.c anv: VK_INTEL_performance_query interaction with VK_EXT_private_data 2020-08-31 15:59:36 +00:00
anv_pipeline.c nir/lower_input_attachments: Support loading layer id as an input 2020-08-19 16:36:43 +00:00
anv_pipeline_cache.c vulkan/util: add struct vk_pipeline_cache_header 2020-07-30 11:44:21 +02:00
anv_private.h anv: implement shareable timeline semaphores 2020-09-01 16:40:11 +00:00
anv_queue.c anv: implement shareable timeline semaphores 2020-09-01 16:40:11 +00:00
anv_util.c
anv_wsi.c anv: implement shareable timeline semaphores 2020-09-01 16:40:11 +00:00
anv_wsi_display.c
anv_wsi_wayland.c
anv_wsi_x11.c
gen7_cmd_buffer.c anv: centralize vk to gen arrays 2020-08-11 10:07:08 +03:00
gen8_cmd_buffer.c anv: centralize vk to gen arrays 2020-08-11 10:07:08 +03:00
genX_blorp_exec.c
genX_cmd_buffer.c anv: fix robust buffer access 2020-08-31 19:24:42 +00:00
genX_gpu_memcpy.c
genX_pipeline.c anv: centralize vk to gen arrays 2020-08-11 10:07:08 +03:00
genX_query.c
genX_state.c anv: Make use of devinfo has_aux_map field 2020-06-22 22:32:03 +00:00
meson.build anv: Mark anv_dump_{start,finish} as PUBLIC 2020-08-14 06:35:11 +00:00
TODO
vk_format_info.h