From 22cb100ea0a26ca8083c3e30bab4268750ffba4d Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Fri, 30 Jul 2021 11:07:55 -0700 Subject: [PATCH] venus: break up vn_device.h Break it up into vn_{device,instance,physical_device}.h. Suggested by Ryan Neph. Signed-off-by: Chia-I Wu Reviewed-by: Yiwei Zhang Reviewed-by: Ryan Neph Part-of: --- .../venus-protocol/vn_protocol_driver.h | 2 +- .../vn_protocol_driver_buffer.h | 2 +- .../vn_protocol_driver_buffer_view.h | 2 +- .../vn_protocol_driver_command_buffer.h | 2 +- .../vn_protocol_driver_command_pool.h | 2 +- .../vn_protocol_driver_descriptor_pool.h | 2 +- .../vn_protocol_driver_descriptor_set.h | 2 +- ...vn_protocol_driver_descriptor_set_layout.h | 2 +- ...otocol_driver_descriptor_update_template.h | 2 +- .../vn_protocol_driver_device.h | 2 +- .../vn_protocol_driver_device_memory.h | 2 +- .../venus-protocol/vn_protocol_driver_event.h | 2 +- .../venus-protocol/vn_protocol_driver_fence.h | 2 +- .../vn_protocol_driver_framebuffer.h | 2 +- .../venus-protocol/vn_protocol_driver_image.h | 2 +- .../vn_protocol_driver_image_view.h | 2 +- .../vn_protocol_driver_instance.h | 2 +- .../vn_protocol_driver_pipeline.h | 2 +- .../vn_protocol_driver_pipeline_cache.h | 2 +- .../vn_protocol_driver_pipeline_layout.h | 2 +- .../vn_protocol_driver_query_pool.h | 2 +- .../venus-protocol/vn_protocol_driver_queue.h | 2 +- .../vn_protocol_driver_render_pass.h | 2 +- .../vn_protocol_driver_sampler.h | 2 +- ...protocol_driver_sampler_ycbcr_conversion.h | 2 +- .../vn_protocol_driver_semaphore.h | 2 +- .../vn_protocol_driver_shader_module.h | 2 +- .../vn_protocol_driver_transport.h | 2 +- src/virtio/vulkan/vn_android.c | 6 +- src/virtio/vulkan/vn_cs.c | 2 +- src/virtio/vulkan/vn_device.c | 2 + src/virtio/vulkan/vn_device.h | 182 ------------------ src/virtio/vulkan/vn_device_memory.c | 1 + src/virtio/vulkan/vn_icd.c | 2 +- src/virtio/vulkan/vn_image.c | 1 + src/virtio/vulkan/vn_instance.h | 144 ++++++++++++++ src/virtio/vulkan/vn_physical_device.h | 72 +++++++ src/virtio/vulkan/vn_pipeline.c | 1 + src/virtio/vulkan/vn_queue.c | 1 + src/virtio/vulkan/vn_wsi.c | 2 + src/virtio/vulkan/vn_wsi_wayland.c | 3 +- src/virtio/vulkan/vn_wsi_x11.c | 3 +- 42 files changed, 262 insertions(+), 216 deletions(-) create mode 100644 src/virtio/vulkan/vn_instance.h create mode 100644 src/virtio/vulkan/vn_physical_device.h diff --git a/src/virtio/venus-protocol/vn_protocol_driver.h b/src/virtio/venus-protocol/vn_protocol_driver.h index 0ee2996cd7b..535f067c1a8 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver.h +++ b/src/virtio/venus-protocol/vn_protocol_driver.h @@ -1,4 +1,4 @@ -/* This file is generated by venus-protocol git-f59e7aad. */ +/* This file is generated by venus-protocol git-0d51970a. */ /* * Copyright 2020 Google LLC diff --git a/src/virtio/venus-protocol/vn_protocol_driver_buffer.h b/src/virtio/venus-protocol/vn_protocol_driver_buffer.h index 7b9b7ef3cfb..7f80b40da09 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_buffer.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_buffer.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_BUFFER_H #define VN_PROTOCOL_DRIVER_BUFFER_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkExternalMemoryBufferCreateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_buffer_view.h b/src/virtio/venus-protocol/vn_protocol_driver_buffer_view.h index 952bb6237f7..a5d649d32b9 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_buffer_view.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_buffer_view.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_BUFFER_VIEW_H #define VN_PROTOCOL_DRIVER_BUFFER_VIEW_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkBufferViewCreateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h b/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h index 18d155f9101..7aeaf7343a9 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_COMMAND_BUFFER_H #define VN_PROTOCOL_DRIVER_COMMAND_BUFFER_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkCommandBufferAllocateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_command_pool.h b/src/virtio/venus-protocol/vn_protocol_driver_command_pool.h index c71701079b4..a2a5bf864ff 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_command_pool.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_command_pool.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_COMMAND_POOL_H #define VN_PROTOCOL_DRIVER_COMMAND_POOL_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkCommandPoolCreateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_descriptor_pool.h b/src/virtio/venus-protocol/vn_protocol_driver_descriptor_pool.h index a80f9aa3a1f..b01cef37a14 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_descriptor_pool.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_descriptor_pool.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_DESCRIPTOR_POOL_H #define VN_PROTOCOL_DRIVER_DESCRIPTOR_POOL_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkDescriptorPoolSize */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set.h b/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set.h index ded739f38f1..9c55d8f1362 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_DESCRIPTOR_SET_H #define VN_PROTOCOL_DRIVER_DESCRIPTOR_SET_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* diff --git a/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set_layout.h b/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set_layout.h index e02186752cb..cde1126feb0 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set_layout.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set_layout.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_DESCRIPTOR_SET_LAYOUT_H #define VN_PROTOCOL_DRIVER_DESCRIPTOR_SET_LAYOUT_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkDescriptorSetLayoutBinding */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_descriptor_update_template.h b/src/virtio/venus-protocol/vn_protocol_driver_descriptor_update_template.h index 82c4da9b76b..a62db72882c 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_descriptor_update_template.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_descriptor_update_template.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_DESCRIPTOR_UPDATE_TEMPLATE_H #define VN_PROTOCOL_DRIVER_DESCRIPTOR_UPDATE_TEMPLATE_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkDescriptorUpdateTemplateEntry */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_device.h b/src/virtio/venus-protocol/vn_protocol_driver_device.h index 96e72003764..1ee0ac273ea 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_device.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_device.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_DEVICE_H #define VN_PROTOCOL_DRIVER_DEVICE_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* diff --git a/src/virtio/venus-protocol/vn_protocol_driver_device_memory.h b/src/virtio/venus-protocol/vn_protocol_driver_device_memory.h index ecbcff59799..47cd33f7ee0 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_device_memory.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_device_memory.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_DEVICE_MEMORY_H #define VN_PROTOCOL_DRIVER_DEVICE_MEMORY_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* diff --git a/src/virtio/venus-protocol/vn_protocol_driver_event.h b/src/virtio/venus-protocol/vn_protocol_driver_event.h index ac69e3ce439..b2027e9b0f0 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_event.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_event.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_EVENT_H #define VN_PROTOCOL_DRIVER_EVENT_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkEventCreateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_fence.h b/src/virtio/venus-protocol/vn_protocol_driver_fence.h index e7cf67524a6..31cc83a0121 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_fence.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_fence.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_FENCE_H #define VN_PROTOCOL_DRIVER_FENCE_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkExportFenceCreateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_framebuffer.h b/src/virtio/venus-protocol/vn_protocol_driver_framebuffer.h index 7262c6251cd..434c3d98b0f 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_framebuffer.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_framebuffer.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_FRAMEBUFFER_H #define VN_PROTOCOL_DRIVER_FRAMEBUFFER_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkFramebufferAttachmentImageInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_image.h b/src/virtio/venus-protocol/vn_protocol_driver_image.h index cdb4659dc89..5f324fa99a4 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_image.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_image.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_IMAGE_H #define VN_PROTOCOL_DRIVER_IMAGE_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkSparseImageMemoryRequirements */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_image_view.h b/src/virtio/venus-protocol/vn_protocol_driver_image_view.h index 150a473583d..7dd322b4807 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_image_view.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_image_view.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_IMAGE_VIEW_H #define VN_PROTOCOL_DRIVER_IMAGE_VIEW_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkImageViewUsageCreateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_instance.h b/src/virtio/venus-protocol/vn_protocol_driver_instance.h index a6c910be790..fa52e810cd4 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_instance.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_instance.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_INSTANCE_H #define VN_PROTOCOL_DRIVER_INSTANCE_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* diff --git a/src/virtio/venus-protocol/vn_protocol_driver_pipeline.h b/src/virtio/venus-protocol/vn_protocol_driver_pipeline.h index ab299bc5e17..8df0f569770 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_pipeline.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_pipeline.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_PIPELINE_H #define VN_PROTOCOL_DRIVER_PIPELINE_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkSpecializationMapEntry */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_pipeline_cache.h b/src/virtio/venus-protocol/vn_protocol_driver_pipeline_cache.h index ce08acce13c..c68b49eb6c5 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_pipeline_cache.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_pipeline_cache.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_PIPELINE_CACHE_H #define VN_PROTOCOL_DRIVER_PIPELINE_CACHE_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkPipelineCacheCreateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_pipeline_layout.h b/src/virtio/venus-protocol/vn_protocol_driver_pipeline_layout.h index 4e123125f90..0c33d7225e6 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_pipeline_layout.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_pipeline_layout.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_PIPELINE_LAYOUT_H #define VN_PROTOCOL_DRIVER_PIPELINE_LAYOUT_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkPushConstantRange */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_query_pool.h b/src/virtio/venus-protocol/vn_protocol_driver_query_pool.h index f08f938013a..416cb395234 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_query_pool.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_query_pool.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_QUERY_POOL_H #define VN_PROTOCOL_DRIVER_QUERY_POOL_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkQueryPoolCreateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_queue.h b/src/virtio/venus-protocol/vn_protocol_driver_queue.h index 2a0fd3d0c27..9c723996b1f 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_queue.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_queue.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_QUEUE_H #define VN_PROTOCOL_DRIVER_QUEUE_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkDeviceGroupSubmitInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_render_pass.h b/src/virtio/venus-protocol/vn_protocol_driver_render_pass.h index 22e4df43e3d..bc5ba424822 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_render_pass.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_render_pass.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_RENDER_PASS_H #define VN_PROTOCOL_DRIVER_RENDER_PASS_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkAttachmentDescription */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_sampler.h b/src/virtio/venus-protocol/vn_protocol_driver_sampler.h index 72aa53573cd..5c96997c948 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_sampler.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_sampler.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_SAMPLER_H #define VN_PROTOCOL_DRIVER_SAMPLER_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkSamplerReductionModeCreateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_sampler_ycbcr_conversion.h b/src/virtio/venus-protocol/vn_protocol_driver_sampler_ycbcr_conversion.h index 564b30a87cc..3640b8e9834 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_sampler_ycbcr_conversion.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_sampler_ycbcr_conversion.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_SAMPLER_YCBCR_CONVERSION_H #define VN_PROTOCOL_DRIVER_SAMPLER_YCBCR_CONVERSION_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkSamplerYcbcrConversionCreateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_semaphore.h b/src/virtio/venus-protocol/vn_protocol_driver_semaphore.h index a459356d451..d8007587124 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_semaphore.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_semaphore.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_SEMAPHORE_H #define VN_PROTOCOL_DRIVER_SEMAPHORE_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkExportSemaphoreCreateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_shader_module.h b/src/virtio/venus-protocol/vn_protocol_driver_shader_module.h index 1ad368019d2..e8de716f6a4 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_shader_module.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_shader_module.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_SHADER_MODULE_H #define VN_PROTOCOL_DRIVER_SHADER_MODULE_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* struct VkShaderModuleCreateInfo chain */ diff --git a/src/virtio/venus-protocol/vn_protocol_driver_transport.h b/src/virtio/venus-protocol/vn_protocol_driver_transport.h index 0a3f05e59df..c9c12fc1666 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_transport.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_transport.h @@ -8,7 +8,7 @@ #ifndef VN_PROTOCOL_DRIVER_TRANSPORT_H #define VN_PROTOCOL_DRIVER_TRANSPORT_H -#include "vn_device.h" +#include "vn_instance.h" #include "vn_protocol_driver_structs.h" /* diff --git a/src/virtio/vulkan/vn_android.c b/src/virtio/vulkan/vn_android.c index 0dbcbc5f036..121f124853f 100644 --- a/src/virtio/vulkan/vn_android.c +++ b/src/virtio/vulkan/vn_android.c @@ -24,6 +24,8 @@ #include "vn_device.h" #include "vn_device_memory.h" #include "vn_image.h" +#include "vn_instance.h" +#include "vn_physical_device.h" #include "vn_queue.h" static int @@ -208,8 +210,8 @@ vn_GetSwapchainGrallocUsage2ANDROID( struct cros_gralloc0_buffer_info { uint32_t drm_fourcc; - int num_fds; /* ignored */ - int fds[4]; /* ignored */ + int num_fds; /* ignored */ + int fds[4]; /* ignored */ uint64_t modifier; uint32_t offset[4]; uint32_t stride[4]; diff --git a/src/virtio/vulkan/vn_cs.c b/src/virtio/vulkan/vn_cs.c index 0a07e86d7fe..abb3517aa1a 100644 --- a/src/virtio/vulkan/vn_cs.c +++ b/src/virtio/vulkan/vn_cs.c @@ -5,7 +5,7 @@ #include "vn_cs.h" -#include "vn_device.h" +#include "vn_instance.h" #include "vn_renderer.h" static void diff --git a/src/virtio/vulkan/vn_device.c b/src/virtio/vulkan/vn_device.c index 7e890b42323..cabe79f1dd9 100644 --- a/src/virtio/vulkan/vn_device.c +++ b/src/virtio/vulkan/vn_device.c @@ -23,6 +23,8 @@ #include "vn_android.h" #include "vn_device_memory.h" #include "vn_icd.h" +#include "vn_instance.h" +#include "vn_physical_device.h" #include "vn_queue.h" #include "vn_renderer.h" diff --git a/src/virtio/vulkan/vn_device.h b/src/virtio/vulkan/vn_device.h index b0fc465814a..0efd0b26023 100644 --- a/src/virtio/vulkan/vn_device.h +++ b/src/virtio/vulkan/vn_device.h @@ -13,120 +13,7 @@ #include "vn_common.h" -#include "venus-protocol/vn_protocol_driver_defines.h" - -#include "vn_cs.h" #include "vn_device_memory.h" -#include "vn_renderer.h" -#include "vn_ring.h" -#include "vn_wsi.h" - -struct vn_instance { - struct vn_instance_base base; - - struct driOptionCache dri_options; - struct driOptionCache available_dri_options; - - struct vn_renderer *renderer; - struct vn_renderer_info renderer_info; - - /* Between the driver and the app, VN_MAX_API_VERSION is what we advertise - * and base.base.app_info.api_version is what the app requests. - * - * Between the driver and the renderer, renderer_api_version is the api - * version we request internally, which can be higher than - * base.base.app_info.api_version. renderer_version is the instance - * version we can use internally. - */ - uint32_t renderer_api_version; - uint32_t renderer_version; - - /* to synchronize renderer/ring */ - mtx_t roundtrip_mutex; - uint32_t roundtrip_next; - - struct { - mtx_t mutex; - struct vn_renderer_shmem *shmem; - struct vn_ring ring; - uint64_t id; - - struct vn_cs_encoder upload; - uint32_t command_dropped; - } ring; - - struct { - struct vn_renderer_shmem *shmem; - size_t size; - size_t used; - void *ptr; - } reply; - - mtx_t physical_device_mutex; - struct vn_physical_device *physical_devices; - uint32_t physical_device_count; - - /* XXX staged features to be merged to core venus protocol */ - VkVenusExperimentalFeatures100000MESA experimental; -}; -VK_DEFINE_HANDLE_CASTS(vn_instance, - base.base.base, - VkInstance, - VK_OBJECT_TYPE_INSTANCE) - -struct vn_physical_device { - struct vn_physical_device_base base; - - struct vn_instance *instance; - - /* Between the driver and the app, properties.properties.apiVersion is what - * we advertise and is capped by VN_MAX_API_VERSION and others. - * - * Between the driver and the renderer, renderer_version is the device - * version we can use internally. - */ - uint32_t renderer_version; - - /* Between the driver and the app, base.base.supported_extensions is what - * we advertise. - * - * Between the driver and the renderer, renderer_extensions is what we can - * use internally (after enabling). - */ - struct vk_device_extension_table renderer_extensions; - uint32_t *extension_spec_versions; - - VkPhysicalDeviceFeatures2 features; - VkPhysicalDeviceVulkan11Features vulkan_1_1_features; - VkPhysicalDeviceVulkan12Features vulkan_1_2_features; - VkPhysicalDeviceTransformFeedbackFeaturesEXT transform_feedback_features; - - VkPhysicalDeviceProperties2 properties; - VkPhysicalDeviceVulkan11Properties vulkan_1_1_properties; - VkPhysicalDeviceVulkan12Properties vulkan_1_2_properties; - VkPhysicalDeviceTransformFeedbackPropertiesEXT - transform_feedback_properties; - - VkQueueFamilyProperties2 *queue_family_properties; - uint32_t queue_family_count; - - VkPhysicalDeviceMemoryProperties2 memory_properties; - - struct { - VkExternalMemoryHandleTypeFlagBits renderer_handle_type; - VkExternalMemoryHandleTypeFlags supported_handle_types; - } external_memory; - - VkExternalFenceHandleTypeFlags external_fence_handles; - VkExternalSemaphoreHandleTypeFlags external_binary_semaphore_handles; - VkExternalSemaphoreHandleTypeFlags external_timeline_semaphore_handles; - - struct wsi_device wsi_device; -}; -VK_DEFINE_HANDLE_CASTS(vn_physical_device, - base.base.base, - VkPhysicalDevice, - VK_OBJECT_TYPE_PHYSICAL_DEVICE) struct vn_device { struct vn_device_base base; @@ -148,73 +35,4 @@ VK_DEFINE_HANDLE_CASTS(vn_device, VkDevice, VK_OBJECT_TYPE_DEVICE) -VkResult -vn_instance_submit_roundtrip(struct vn_instance *instance, - uint32_t *roundtrip_seqno); - -void -vn_instance_wait_roundtrip(struct vn_instance *instance, - uint32_t roundtrip_seqno); - -static inline void -vn_instance_roundtrip(struct vn_instance *instance) -{ - uint32_t roundtrip_seqno; - if (vn_instance_submit_roundtrip(instance, &roundtrip_seqno) == VK_SUCCESS) - vn_instance_wait_roundtrip(instance, roundtrip_seqno); -} - -VkResult -vn_instance_ring_submit(struct vn_instance *instance, - const struct vn_cs_encoder *cs); - -struct vn_instance_submit_command { - /* empty command implies errors */ - struct vn_cs_encoder command; - struct vn_cs_encoder_buffer buffer; - /* non-zero implies waiting */ - size_t reply_size; - - /* when reply_size is non-zero, NULL can be returned on errors */ - struct vn_renderer_shmem *reply_shmem; - struct vn_cs_decoder reply; -}; - -static inline struct vn_cs_encoder * -vn_instance_submit_command_init(struct vn_instance *instance, - struct vn_instance_submit_command *submit, - void *cmd_data, - size_t cmd_size, - size_t reply_size) -{ - submit->command = VN_CS_ENCODER_INITIALIZER_LOCAL(cmd_data, cmd_size); - /* fix submit->command.buffers to not point to a local variable */ - submit->buffer = submit->command.buffers[0]; - submit->command.buffers = &submit->buffer; - - submit->reply_size = reply_size; - submit->reply_shmem = NULL; - - return &submit->command; -} - -void -vn_instance_submit_command(struct vn_instance *instance, - struct vn_instance_submit_command *submit); - -static inline struct vn_cs_decoder * -vn_instance_get_command_reply(struct vn_instance *instance, - struct vn_instance_submit_command *submit) -{ - return submit->reply_shmem ? &submit->reply : NULL; -} - -static inline void -vn_instance_free_command_reply(struct vn_instance *instance, - struct vn_instance_submit_command *submit) -{ - assert(submit->reply_shmem); - vn_renderer_shmem_unref(instance->renderer, submit->reply_shmem); -} - #endif /* VN_DEVICE_H */ diff --git a/src/virtio/vulkan/vn_device_memory.c b/src/virtio/vulkan/vn_device_memory.c index 27e758ad515..d244f109e39 100644 --- a/src/virtio/vulkan/vn_device_memory.c +++ b/src/virtio/vulkan/vn_device_memory.c @@ -17,6 +17,7 @@ #include "vn_buffer.h" #include "vn_device.h" #include "vn_image.h" +#include "vn_physical_device.h" /* device memory commands */ diff --git a/src/virtio/vulkan/vn_icd.c b/src/virtio/vulkan/vn_icd.c index 2cbc1337e23..a4784250d3e 100644 --- a/src/virtio/vulkan/vn_icd.c +++ b/src/virtio/vulkan/vn_icd.c @@ -10,7 +10,7 @@ #include "vn_icd.h" -#include "vn_device.h" +#include "vn_instance.h" /* we support all versions from version 1 up to version 5 */ static uint32_t vn_icd_version = 5; diff --git a/src/virtio/vulkan/vn_image.c b/src/virtio/vulkan/vn_image.c index 8665f3f18a9..76fbd3fb05b 100644 --- a/src/virtio/vulkan/vn_image.c +++ b/src/virtio/vulkan/vn_image.c @@ -18,6 +18,7 @@ #include "vn_android.h" #include "vn_device.h" #include "vn_device_memory.h" +#include "vn_wsi.h" static void vn_image_init_memory_requirements(struct vn_image *img, diff --git a/src/virtio/vulkan/vn_instance.h b/src/virtio/vulkan/vn_instance.h new file mode 100644 index 00000000000..8312f49ad85 --- /dev/null +++ b/src/virtio/vulkan/vn_instance.h @@ -0,0 +1,144 @@ +/* + * Copyright 2019 Google LLC + * SPDX-License-Identifier: MIT + * + * based in part on anv and radv which are: + * Copyright © 2015 Intel Corporation + * Copyright © 2016 Red Hat. + * Copyright © 2016 Bas Nieuwenhuizen + */ + +#ifndef VN_INSTANCE_H +#define VN_INSTANCE_H + +#include "vn_common.h" + +#include "venus-protocol/vn_protocol_driver_defines.h" + +#include "vn_cs.h" +#include "vn_renderer.h" +#include "vn_ring.h" + +struct vn_instance { + struct vn_instance_base base; + + struct driOptionCache dri_options; + struct driOptionCache available_dri_options; + + struct vn_renderer *renderer; + struct vn_renderer_info renderer_info; + + /* Between the driver and the app, VN_MAX_API_VERSION is what we advertise + * and base.base.app_info.api_version is what the app requests. + * + * Between the driver and the renderer, renderer_api_version is the api + * version we request internally, which can be higher than + * base.base.app_info.api_version. renderer_version is the instance + * version we can use internally. + */ + uint32_t renderer_api_version; + uint32_t renderer_version; + + /* to synchronize renderer/ring */ + mtx_t roundtrip_mutex; + uint32_t roundtrip_next; + + struct { + mtx_t mutex; + struct vn_renderer_shmem *shmem; + struct vn_ring ring; + uint64_t id; + + struct vn_cs_encoder upload; + uint32_t command_dropped; + } ring; + + struct { + struct vn_renderer_shmem *shmem; + size_t size; + size_t used; + void *ptr; + } reply; + + mtx_t physical_device_mutex; + struct vn_physical_device *physical_devices; + uint32_t physical_device_count; + + /* XXX staged features to be merged to core venus protocol */ + VkVenusExperimentalFeatures100000MESA experimental; +}; +VK_DEFINE_HANDLE_CASTS(vn_instance, + base.base.base, + VkInstance, + VK_OBJECT_TYPE_INSTANCE) + +VkResult +vn_instance_submit_roundtrip(struct vn_instance *instance, + uint32_t *roundtrip_seqno); + +void +vn_instance_wait_roundtrip(struct vn_instance *instance, + uint32_t roundtrip_seqno); + +static inline void +vn_instance_roundtrip(struct vn_instance *instance) +{ + uint32_t roundtrip_seqno; + if (vn_instance_submit_roundtrip(instance, &roundtrip_seqno) == VK_SUCCESS) + vn_instance_wait_roundtrip(instance, roundtrip_seqno); +} + +VkResult +vn_instance_ring_submit(struct vn_instance *instance, + const struct vn_cs_encoder *cs); + +struct vn_instance_submit_command { + /* empty command implies errors */ + struct vn_cs_encoder command; + struct vn_cs_encoder_buffer buffer; + /* non-zero implies waiting */ + size_t reply_size; + + /* when reply_size is non-zero, NULL can be returned on errors */ + struct vn_renderer_shmem *reply_shmem; + struct vn_cs_decoder reply; +}; + +static inline struct vn_cs_encoder * +vn_instance_submit_command_init(struct vn_instance *instance, + struct vn_instance_submit_command *submit, + void *cmd_data, + size_t cmd_size, + size_t reply_size) +{ + submit->command = VN_CS_ENCODER_INITIALIZER_LOCAL(cmd_data, cmd_size); + /* fix submit->command.buffers to not point to a local variable */ + submit->buffer = submit->command.buffers[0]; + submit->command.buffers = &submit->buffer; + + submit->reply_size = reply_size; + submit->reply_shmem = NULL; + + return &submit->command; +} + +void +vn_instance_submit_command(struct vn_instance *instance, + struct vn_instance_submit_command *submit); + +static inline struct vn_cs_decoder * +vn_instance_get_command_reply(struct vn_instance *instance, + struct vn_instance_submit_command *submit) +{ + return submit->reply_shmem ? &submit->reply : NULL; +} + +static inline void +vn_instance_free_command_reply(struct vn_instance *instance, + struct vn_instance_submit_command *submit) +{ + assert(submit->reply_shmem); + vn_renderer_shmem_unref(instance->renderer, submit->reply_shmem); +} + +#endif /* VN_INSTANCE_H */ diff --git a/src/virtio/vulkan/vn_physical_device.h b/src/virtio/vulkan/vn_physical_device.h new file mode 100644 index 00000000000..d282d534b1a --- /dev/null +++ b/src/virtio/vulkan/vn_physical_device.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 Google LLC + * SPDX-License-Identifier: MIT + * + * based in part on anv and radv which are: + * Copyright © 2015 Intel Corporation + * Copyright © 2016 Red Hat. + * Copyright © 2016 Bas Nieuwenhuizen + */ + +#ifndef VN_PHYSICAL_DEVICE_H +#define VN_PHYSICAL_DEVICE_H + +#include "vn_common.h" + +#include "vn_wsi.h" + +struct vn_physical_device { + struct vn_physical_device_base base; + + struct vn_instance *instance; + + /* Between the driver and the app, properties.properties.apiVersion is what + * we advertise and is capped by VN_MAX_API_VERSION and others. + * + * Between the driver and the renderer, renderer_version is the device + * version we can use internally. + */ + uint32_t renderer_version; + + /* Between the driver and the app, base.base.supported_extensions is what + * we advertise. + * + * Between the driver and the renderer, renderer_extensions is what we can + * use internally (after enabling). + */ + struct vk_device_extension_table renderer_extensions; + uint32_t *extension_spec_versions; + + VkPhysicalDeviceFeatures2 features; + VkPhysicalDeviceVulkan11Features vulkan_1_1_features; + VkPhysicalDeviceVulkan12Features vulkan_1_2_features; + VkPhysicalDeviceTransformFeedbackFeaturesEXT transform_feedback_features; + + VkPhysicalDeviceProperties2 properties; + VkPhysicalDeviceVulkan11Properties vulkan_1_1_properties; + VkPhysicalDeviceVulkan12Properties vulkan_1_2_properties; + VkPhysicalDeviceTransformFeedbackPropertiesEXT + transform_feedback_properties; + + VkQueueFamilyProperties2 *queue_family_properties; + uint32_t queue_family_count; + + VkPhysicalDeviceMemoryProperties2 memory_properties; + + struct { + VkExternalMemoryHandleTypeFlagBits renderer_handle_type; + VkExternalMemoryHandleTypeFlags supported_handle_types; + } external_memory; + + VkExternalFenceHandleTypeFlags external_fence_handles; + VkExternalSemaphoreHandleTypeFlags external_binary_semaphore_handles; + VkExternalSemaphoreHandleTypeFlags external_timeline_semaphore_handles; + + struct wsi_device wsi_device; +}; +VK_DEFINE_HANDLE_CASTS(vn_physical_device, + base.base.base, + VkPhysicalDevice, + VK_OBJECT_TYPE_PHYSICAL_DEVICE) + +#endif /* VN_PHYSICAL_DEVICE_H */ diff --git a/src/virtio/vulkan/vn_pipeline.c b/src/virtio/vulkan/vn_pipeline.c index 8413975070f..c7c5a3cef6e 100644 --- a/src/virtio/vulkan/vn_pipeline.c +++ b/src/virtio/vulkan/vn_pipeline.c @@ -16,6 +16,7 @@ #include "venus-protocol/vn_protocol_driver_shader_module.h" #include "vn_device.h" +#include "vn_physical_device.h" /* shader module commands */ diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c index 26ccc9be09c..2f067f1f581 100644 --- a/src/virtio/vulkan/vn_queue.c +++ b/src/virtio/vulkan/vn_queue.c @@ -19,6 +19,7 @@ #include "vn_device.h" #include "vn_device_memory.h" #include "vn_renderer.h" +#include "vn_wsi.h" /* queue commands */ diff --git a/src/virtio/vulkan/vn_wsi.c b/src/virtio/vulkan/vn_wsi.c index a4ac5018004..9dd28f356a2 100644 --- a/src/virtio/vulkan/vn_wsi.c +++ b/src/virtio/vulkan/vn_wsi.c @@ -14,6 +14,8 @@ #include "vn_device.h" #include "vn_image.h" +#include "vn_instance.h" +#include "vn_physical_device.h" #include "vn_queue.h" /* The common WSI support makes some assumptions about the driver. diff --git a/src/virtio/vulkan/vn_wsi_wayland.c b/src/virtio/vulkan/vn_wsi_wayland.c index 84d0a1800a8..74cec7fb20c 100644 --- a/src/virtio/vulkan/vn_wsi_wayland.c +++ b/src/virtio/vulkan/vn_wsi_wayland.c @@ -10,7 +10,8 @@ #include "wsi_common_wayland.h" -#include "vn_device.h" +#include "vn_instance.h" +#include "vn_physical_device.h" #include "vn_wsi.h" VkResult diff --git a/src/virtio/vulkan/vn_wsi_x11.c b/src/virtio/vulkan/vn_wsi_x11.c index e169d193464..df79e46cfdb 100644 --- a/src/virtio/vulkan/vn_wsi_x11.c +++ b/src/virtio/vulkan/vn_wsi_x11.c @@ -12,7 +12,8 @@ #include "wsi_common_x11.h" -#include "vn_device.h" +#include "vn_instance.h" +#include "vn_physical_device.h" #include "vn_wsi.h" /* XCB surface commands */