vulkan,anv: Move the DEFINE_HANDLE_CASTS macros to vk_object.h
We've already got these duplicated a bunch of places. They should really probably live in common code. The new versions take two more arguments: 1. The struct member which gets you from __driver_type to the vk_object_base. This requires drivers which use this to also use vk_object_base. 2. The VkObjectType enum which represents that object type. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Acked-by: Kristian H. Kristensen <hoegsberg@google.com> Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4690>
This commit is contained in:

committed by
Marge Bot

parent
682c81bdfb
commit
73fb7cdbe1
@@ -4230,65 +4230,61 @@ anv_get_subpass_id(const struct anv_cmd_state * const cmd_state)
|
|||||||
struct gen_perf_config *anv_get_perf(const struct gen_device_info *devinfo, int fd);
|
struct gen_perf_config *anv_get_perf(const struct gen_device_info *devinfo, int fd);
|
||||||
void anv_device_perf_init(struct anv_device *device);
|
void anv_device_perf_init(struct anv_device *device);
|
||||||
|
|
||||||
#define ANV_DEFINE_HANDLE_CASTS(__anv_type, __VkType) \
|
|
||||||
\
|
|
||||||
static inline struct __anv_type * \
|
|
||||||
__anv_type ## _from_handle(__VkType _handle) \
|
|
||||||
{ \
|
|
||||||
return (struct __anv_type *) _handle; \
|
|
||||||
} \
|
|
||||||
\
|
|
||||||
static inline __VkType \
|
|
||||||
__anv_type ## _to_handle(struct __anv_type *_obj) \
|
|
||||||
{ \
|
|
||||||
return (__VkType) _obj; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define ANV_DEFINE_NONDISP_HANDLE_CASTS(__anv_type, __VkType) \
|
|
||||||
\
|
|
||||||
static inline struct __anv_type * \
|
|
||||||
__anv_type ## _from_handle(__VkType _handle) \
|
|
||||||
{ \
|
|
||||||
return (struct __anv_type *)(uintptr_t) _handle; \
|
|
||||||
} \
|
|
||||||
\
|
|
||||||
static inline __VkType \
|
|
||||||
__anv_type ## _to_handle(struct __anv_type *_obj) \
|
|
||||||
{ \
|
|
||||||
return (__VkType)(uintptr_t) _obj; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define ANV_FROM_HANDLE(__anv_type, __name, __handle) \
|
#define ANV_FROM_HANDLE(__anv_type, __name, __handle) \
|
||||||
struct __anv_type *__name = __anv_type ## _from_handle(__handle)
|
VK_FROM_HANDLE(__anv_type, __name, __handle)
|
||||||
|
|
||||||
ANV_DEFINE_HANDLE_CASTS(anv_cmd_buffer, VkCommandBuffer)
|
VK_DEFINE_HANDLE_CASTS(anv_cmd_buffer, base, VkCommandBuffer,
|
||||||
ANV_DEFINE_HANDLE_CASTS(anv_device, VkDevice)
|
VK_OBJECT_TYPE_COMMAND_BUFFER)
|
||||||
ANV_DEFINE_HANDLE_CASTS(anv_instance, VkInstance)
|
VK_DEFINE_HANDLE_CASTS(anv_device, vk.base, VkDevice, VK_OBJECT_TYPE_DEVICE)
|
||||||
ANV_DEFINE_HANDLE_CASTS(anv_physical_device, VkPhysicalDevice)
|
VK_DEFINE_HANDLE_CASTS(anv_instance, base, VkInstance, VK_OBJECT_TYPE_INSTANCE)
|
||||||
ANV_DEFINE_HANDLE_CASTS(anv_queue, VkQueue)
|
VK_DEFINE_HANDLE_CASTS(anv_physical_device, base, VkPhysicalDevice,
|
||||||
|
VK_OBJECT_TYPE_PHYSICAL_DEVICE)
|
||||||
|
VK_DEFINE_HANDLE_CASTS(anv_queue, base, VkQueue, VK_OBJECT_TYPE_QUEUE)
|
||||||
|
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_cmd_pool, VkCommandPool)
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_cmd_pool, base, VkCommandPool,
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_buffer, VkBuffer)
|
VK_OBJECT_TYPE_COMMAND_POOL)
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_buffer_view, VkBufferView)
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_buffer, base, VkBuffer,
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_descriptor_pool, VkDescriptorPool)
|
VK_OBJECT_TYPE_BUFFER)
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_descriptor_set, VkDescriptorSet)
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_buffer_view, base, VkBufferView,
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_descriptor_set_layout, VkDescriptorSetLayout)
|
VK_OBJECT_TYPE_BUFFER_VIEW)
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_descriptor_update_template, VkDescriptorUpdateTemplate)
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_descriptor_pool, base, VkDescriptorPool,
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_device_memory, VkDeviceMemory)
|
VK_OBJECT_TYPE_DESCRIPTOR_POOL)
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_fence, VkFence)
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_descriptor_set, base, VkDescriptorSet,
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_event, VkEvent)
|
VK_OBJECT_TYPE_DESCRIPTOR_SET)
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_framebuffer, VkFramebuffer)
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_descriptor_set_layout, base,
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_image, VkImage)
|
VkDescriptorSetLayout,
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_image_view, VkImageView);
|
VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT)
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_pipeline_cache, VkPipelineCache)
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_descriptor_update_template, base,
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_pipeline, VkPipeline)
|
VkDescriptorUpdateTemplate,
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_pipeline_layout, VkPipelineLayout)
|
VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE)
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_query_pool, VkQueryPool)
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_device_memory, base, VkDeviceMemory,
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_render_pass, VkRenderPass)
|
VK_OBJECT_TYPE_DEVICE_MEMORY)
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_sampler, VkSampler)
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_fence, base, VkFence, VK_OBJECT_TYPE_FENCE)
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_semaphore, VkSemaphore)
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_event, base, VkEvent, VK_OBJECT_TYPE_EVENT)
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_shader_module, VkShaderModule)
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_framebuffer, base, VkFramebuffer,
|
||||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_ycbcr_conversion, VkSamplerYcbcrConversion)
|
VK_OBJECT_TYPE_FRAMEBUFFER)
|
||||||
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_image, base, VkImage, VK_OBJECT_TYPE_IMAGE)
|
||||||
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_image_view, base, VkImageView,
|
||||||
|
VK_OBJECT_TYPE_IMAGE_VIEW);
|
||||||
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_pipeline_cache, base, VkPipelineCache,
|
||||||
|
VK_OBJECT_TYPE_PIPELINE_CACHE)
|
||||||
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_pipeline, base, VkPipeline,
|
||||||
|
VK_OBJECT_TYPE_PIPELINE)
|
||||||
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_pipeline_layout, base, VkPipelineLayout,
|
||||||
|
VK_OBJECT_TYPE_PIPELINE_LAYOUT)
|
||||||
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_query_pool, base, VkQueryPool,
|
||||||
|
VK_OBJECT_TYPE_QUERY_POOL)
|
||||||
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_render_pass, base, VkRenderPass,
|
||||||
|
VK_OBJECT_TYPE_RENDER_PASS)
|
||||||
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_sampler, base, VkSampler,
|
||||||
|
VK_OBJECT_TYPE_SAMPLER)
|
||||||
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_semaphore, base, VkSemaphore,
|
||||||
|
VK_OBJECT_TYPE_SEMAPHORE)
|
||||||
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_shader_module, base, VkShaderModule,
|
||||||
|
VK_OBJECT_TYPE_SHADER_MODULE)
|
||||||
|
VK_DEFINE_NONDISP_HANDLE_CASTS(anv_ycbcr_conversion, base,
|
||||||
|
VkSamplerYcbcrConversion,
|
||||||
|
VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION)
|
||||||
|
|
||||||
/* Gen-specific function declarations */
|
/* Gen-specific function declarations */
|
||||||
#ifdef genX
|
#ifdef genX
|
||||||
|
@@ -55,6 +55,37 @@ void vk_device_init(struct vk_device *device,
|
|||||||
const VkAllocationCallbacks *device_alloc);
|
const VkAllocationCallbacks *device_alloc);
|
||||||
void vk_device_finish(struct vk_device *device);
|
void vk_device_finish(struct vk_device *device);
|
||||||
|
|
||||||
|
#define VK_DEFINE_HANDLE_CASTS(__driver_type, __base, __VkType, __VK_TYPE) \
|
||||||
|
static inline struct __driver_type * \
|
||||||
|
__driver_type ## _from_handle(__VkType _handle) \
|
||||||
|
{ \
|
||||||
|
STATIC_ASSERT(offsetof(struct __driver_type, __base) == 0); \
|
||||||
|
return (struct __driver_type *) _handle; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
static inline __VkType \
|
||||||
|
__driver_type ## _to_handle(struct __driver_type *_obj) \
|
||||||
|
{ \
|
||||||
|
return (__VkType) _obj; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define VK_DEFINE_NONDISP_HANDLE_CASTS(__driver_type, __base, __VkType, __VK_TYPE) \
|
||||||
|
static inline struct __driver_type * \
|
||||||
|
__driver_type ## _from_handle(__VkType _handle) \
|
||||||
|
{ \
|
||||||
|
STATIC_ASSERT(offsetof(struct __driver_type, __base) == 0); \
|
||||||
|
return (struct __driver_type *)(uintptr_t) _handle; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
static inline __VkType \
|
||||||
|
__driver_type ## _to_handle(struct __driver_type *_obj) \
|
||||||
|
{ \
|
||||||
|
return (__VkType)(uintptr_t) _obj; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define VK_FROM_HANDLE(__driver_type, __name, __handle) \
|
||||||
|
struct __driver_type *__name = __driver_type ## _from_handle(__handle)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user