Mesa (master): lavapipe: move to the common casting interfaces

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sun Mar 14 20:14:06 UTC 2021


Module: Mesa
Branch: master
Commit: 8475ab7f92a18482f9e511c1163fda0973664d07
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8475ab7f92a18482f9e511c1163fda0973664d07

Author: Dave Airlie <airlied at redhat.com>
Date:   Fri Mar 12 17:03:07 2021 +1000

lavapipe: move to the common casting interfaces

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9550>

---

 src/gallium/frontends/lavapipe/lvp_private.h | 111 +++++++++++++--------------
 src/gallium/frontends/lavapipe/lvp_wsi.h     |   3 -
 2 files changed, 53 insertions(+), 61 deletions(-)

diff --git a/src/gallium/frontends/lavapipe/lvp_private.h b/src/gallium/frontends/lavapipe/lvp_private.h
index d4f941c8dd9..3e67950b706 100644
--- a/src/gallium/frontends/lavapipe/lvp_private.h
+++ b/src/gallium/frontends/lavapipe/lvp_private.h
@@ -86,70 +86,13 @@ bool lvp_device_entrypoint_is_enabled(int index, uint32_t core_version,
                                        const struct vk_instance_extension_table *instance,
                                        const struct vk_device_extension_table *device);
 
-#define LVP_DEFINE_HANDLE_CASTS(__lvp_type, __VkType)                      \
-                                                                           \
-   static inline struct __lvp_type *                                       \
-   __lvp_type ## _from_handle(__VkType _handle)                            \
-   {                                                                       \
-      return (struct __lvp_type *) _handle;                                \
-   }                                                                       \
-                                                                           \
-   static inline __VkType                                                  \
-   __lvp_type ## _to_handle(struct __lvp_type *_obj)                       \
-   {                                                                       \
-      return (__VkType) _obj;                                              \
-   }
-
-#define LVP_DEFINE_NONDISP_HANDLE_CASTS(__lvp_type, __VkType)              \
-                                                                           \
-   static inline struct __lvp_type *                                       \
-   __lvp_type ## _from_handle(__VkType _handle)                            \
-   {                                                                       \
-      return (struct __lvp_type *)(uintptr_t) _handle;                     \
-   }                                                                       \
-                                                                           \
-   static inline __VkType                                                  \
-   __lvp_type ## _to_handle(struct __lvp_type *_obj)                       \
-   {                                                                       \
-      return (__VkType)(uintptr_t) _obj;                                   \
-   }
-
-#define LVP_FROM_HANDLE(__lvp_type, __name, __handle) \
-   struct __lvp_type *__name = __lvp_type ## _from_handle(__handle)
-
-LVP_DEFINE_HANDLE_CASTS(lvp_cmd_buffer, VkCommandBuffer)
-LVP_DEFINE_HANDLE_CASTS(lvp_device, VkDevice)
-LVP_DEFINE_HANDLE_CASTS(lvp_instance, VkInstance)
-LVP_DEFINE_HANDLE_CASTS(lvp_physical_device, VkPhysicalDevice)
-LVP_DEFINE_HANDLE_CASTS(lvp_queue, VkQueue)
-
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_cmd_pool, VkCommandPool)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_buffer, VkBuffer)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_buffer_view, VkBufferView)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_descriptor_pool, VkDescriptorPool)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_descriptor_set, VkDescriptorSet)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_descriptor_set_layout, VkDescriptorSetLayout)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_descriptor_update_template, VkDescriptorUpdateTemplate)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_device_memory, VkDeviceMemory)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_event, VkEvent)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_framebuffer, VkFramebuffer)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_image, VkImage)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_image_view, VkImageView);
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_pipeline_cache, VkPipelineCache)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_pipeline, VkPipeline)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_pipeline_layout, VkPipelineLayout)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_query_pool, VkQueryPool)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_render_pass, VkRenderPass)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_sampler, VkSampler)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_shader_module, VkShaderModule)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_fence, VkFence);
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_semaphore, VkSemaphore);
 
 /* Whenever we generate an error, pass it through this function. Useful for
  * debugging, where we can break on it. Only call at error site, not when
  * propagating errors. Might be useful to plug in a stack trace here.
  */
 
+struct lvp_instance;
 VkResult __vk_errorf(struct lvp_instance *instance, VkResult error, const char *file, int line, const char *format, ...);
 
 #define LVP_DEBUG_ALL_ENTRYPOINTS (1 << 0)
@@ -626,6 +569,58 @@ struct lvp_cmd_buffer {
    uint8_t push_constants[MAX_PUSH_CONSTANTS_SIZE];
 };
 
+
+#define LVP_FROM_HANDLE(__lvp_type, __name, __handle) \
+   struct __lvp_type *__name = __lvp_type ## _from_handle(__handle)
+
+VK_DEFINE_HANDLE_CASTS(lvp_cmd_buffer, base, VkCommandBuffer,
+                       VK_OBJECT_TYPE_COMMAND_BUFFER)
+VK_DEFINE_HANDLE_CASTS(lvp_device, vk.base, VkDevice, VK_OBJECT_TYPE_DEVICE)
+VK_DEFINE_HANDLE_CASTS(lvp_instance, vk.base, VkInstance, VK_OBJECT_TYPE_INSTANCE)
+VK_DEFINE_HANDLE_CASTS(lvp_physical_device, vk.base, VkPhysicalDevice,
+                       VK_OBJECT_TYPE_PHYSICAL_DEVICE)
+VK_DEFINE_HANDLE_CASTS(lvp_queue, base, VkQueue, VK_OBJECT_TYPE_QUEUE)
+
+   VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_cmd_pool, base,VkCommandPool,
+                                  VK_OBJECT_TYPE_COMMAND_POOL)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_buffer, base, VkBuffer,
+                               VK_OBJECT_TYPE_BUFFER)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_buffer_view, base, VkBufferView,
+                               VK_OBJECT_TYPE_BUFFER_VIEW)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_descriptor_pool, base, VkDescriptorPool,
+                               VK_OBJECT_TYPE_DESCRIPTOR_POOL)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_descriptor_set, base, VkDescriptorSet,
+                               VK_OBJECT_TYPE_DESCRIPTOR_SET)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_descriptor_set_layout, base, VkDescriptorSetLayout,
+                               VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_descriptor_update_template, base, VkDescriptorUpdateTemplate,
+                               VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_device_memory, base, VkDeviceMemory,
+                               VK_OBJECT_TYPE_DEVICE_MEMORY)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_event, base, VkEvent, VK_OBJECT_TYPE_EVENT)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_framebuffer, base, VkFramebuffer,
+                               VK_OBJECT_TYPE_FRAMEBUFFER)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_image, base, VkImage, VK_OBJECT_TYPE_IMAGE)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_image_view, base, VkImageView,
+                               VK_OBJECT_TYPE_IMAGE_VIEW);
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_pipeline_cache, base, VkPipelineCache,
+                               VK_OBJECT_TYPE_PIPELINE_CACHE)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_pipeline, base, VkPipeline,
+                               VK_OBJECT_TYPE_PIPELINE)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_pipeline_layout, base, VkPipelineLayout,
+                               VK_OBJECT_TYPE_PIPELINE_LAYOUT)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_query_pool, base, VkQueryPool,
+                               VK_OBJECT_TYPE_QUERY_POOL)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_render_pass, base, VkRenderPass,
+                               VK_OBJECT_TYPE_RENDER_PASS)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_sampler, base, VkSampler,
+                               VK_OBJECT_TYPE_SAMPLER)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_shader_module, base, VkShaderModule,
+                               VK_OBJECT_TYPE_SHADER_MODULE)
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_fence, base, VkFence, VK_OBJECT_TYPE_FENCE);
+VK_DEFINE_NONDISP_HANDLE_CASTS(lvp_semaphore, base, VkSemaphore,
+                               VK_OBJECT_TYPE_SEMAPHORE);
+
 /* in same order and buffer building commands in spec. */
 enum lvp_cmds {
    LVP_CMD_BIND_PIPELINE,
diff --git a/src/gallium/frontends/lavapipe/lvp_wsi.h b/src/gallium/frontends/lavapipe/lvp_wsi.h
index b3530e4c179..2532739439a 100644
--- a/src/gallium/frontends/lavapipe/lvp_wsi.h
+++ b/src/gallium/frontends/lavapipe/lvp_wsi.h
@@ -65,9 +65,6 @@ struct lvp_swapchain {
                              uint32_t image_index);
 };
 
-LVP_DEFINE_NONDISP_HANDLE_CASTS(_VkIcdSurfaceBase, VkSurfaceKHR)
-LVP_DEFINE_NONDISP_HANDLE_CASTS(lvp_swapchain, VkSwapchainKHR)
-
 VkResult lvp_x11_init_wsi(struct lvp_instance *instance);
 void lvp_x11_finish_wsi(struct lvp_instance *instance);
 VkResult lvp_wl_init_wsi(struct lvp_instance *instance);



More information about the mesa-commit mailing list