Module: Mesa Branch: main Commit: 978a5ec5d287edcf345131bef5de7b81051696cc URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=978a5ec5d287edcf345131bef5de7b81051696cc
Author: Danylo Piliaiev <[email protected]> Date: Tue Sep 21 14:36:32 2021 +0300 turnip: Move to common DEFINE_HANDLE_CASTS casting macro We create some VK objects internally, so we have to set type for them. Signed-off-by: Danylo Piliaiev <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12957> --- src/freedreno/vulkan/tu_clear_blit.c | 3 +- src/freedreno/vulkan/tu_cmd_buffer.c | 1 + src/freedreno/vulkan/tu_descriptor_set.c | 3 +- src/freedreno/vulkan/tu_private.h | 102 +++++++++++++++---------------- 4 files changed, 53 insertions(+), 56 deletions(-) diff --git a/src/freedreno/vulkan/tu_clear_blit.c b/src/freedreno/vulkan/tu_clear_blit.c index 38d591de6b7..3cc69f31e48 100644 --- a/src/freedreno/vulkan/tu_clear_blit.c +++ b/src/freedreno/vulkan/tu_clear_blit.c @@ -1754,11 +1754,12 @@ tu_copy_image_to_image(struct tu_cmd_buffer *cmd, tu_image_view_copy(&src, src_image, src_format, &info->srcSubresource, src_offset.z, false); struct tu_image staging_image = { + .base.type = VK_OBJECT_TYPE_IMAGE, .vk_format = src_format, .level_count = 1, .layer_count = info->srcSubresource.layerCount, .bo_offset = 0, - }; + }; VkImageSubresourceLayers staging_subresource = { .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index aa12587025f..a605420c95b 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -1458,6 +1458,7 @@ tu_reset_cmd_buffer(struct tu_cmd_buffer *cmd_buffer) for (unsigned i = 0; i < MAX_BIND_POINTS; i++) { memset(&cmd_buffer->descriptors[i].sets, 0, sizeof(cmd_buffer->descriptors[i].sets)); memset(&cmd_buffer->descriptors[i].push_set, 0, sizeof(cmd_buffer->descriptors[i].push_set)); + cmd_buffer->descriptors[i].push_set.base.type = VK_OBJECT_TYPE_DESCRIPTOR_SET; } u_trace_fini(&cmd_buffer->trace); diff --git a/src/freedreno/vulkan/tu_descriptor_set.c b/src/freedreno/vulkan/tu_descriptor_set.c index 5d085d13198..51ab29ee921 100644 --- a/src/freedreno/vulkan/tu_descriptor_set.c +++ b/src/freedreno/vulkan/tu_descriptor_set.c @@ -887,11 +887,10 @@ write_combined_image_sampler_descriptor(uint32_t *dst, const VkDescriptorImageInfo *image_info, bool has_sampler) { - TU_FROM_HANDLE(tu_sampler, sampler, image_info->sampler); - write_image_descriptor(dst, descriptor_type, image_info); /* copy over sampler state */ if (has_sampler) { + TU_FROM_HANDLE(tu_sampler, sampler, image_info->sampler); memcpy(dst + A6XX_TEX_CONST_DWORDS, sampler->descriptor, sizeof(sampler->descriptor)); } } diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h index cd261b5e745..2a6719f4ce9 100644 --- a/src/freedreno/vulkan/tu_private.h +++ b/src/freedreno/vulkan/tu_private.h @@ -1761,60 +1761,56 @@ struct tu_u_trace_flush_data struct tu_u_trace_cmd_data *cmd_trace_data; }; -#define TU_DEFINE_HANDLE_CASTS(__tu_type, __VkType) \ - \ - static inline struct __tu_type *__tu_type##_from_handle(__VkType _handle) \ - { \ - return (struct __tu_type *) _handle; \ - } \ - \ - static inline __VkType __tu_type##_to_handle(struct __tu_type *_obj) \ - { \ - return (__VkType) _obj; \ - } - -#define TU_DEFINE_NONDISP_HANDLE_CASTS(__tu_type, __VkType) \ - \ - static inline struct __tu_type *__tu_type##_from_handle(__VkType _handle) \ - { \ - return (struct __tu_type *) (uintptr_t) _handle; \ - } \ - \ - static inline __VkType __tu_type##_to_handle(struct __tu_type *_obj) \ - { \ - return (__VkType)(uintptr_t) _obj; \ - } - #define TU_FROM_HANDLE(__tu_type, __name, __handle) \ - struct __tu_type *__name = __tu_type##_from_handle(__handle) - -TU_DEFINE_HANDLE_CASTS(tu_cmd_buffer, VkCommandBuffer) -TU_DEFINE_HANDLE_CASTS(tu_device, VkDevice) -TU_DEFINE_HANDLE_CASTS(tu_instance, VkInstance) -TU_DEFINE_HANDLE_CASTS(tu_physical_device, VkPhysicalDevice) -TU_DEFINE_HANDLE_CASTS(tu_queue, VkQueue) - -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_cmd_pool, VkCommandPool) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_buffer, VkBuffer) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_buffer_view, VkBufferView) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_descriptor_pool, VkDescriptorPool) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_descriptor_set, VkDescriptorSet) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_descriptor_set_layout, - VkDescriptorSetLayout) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_descriptor_update_template, - VkDescriptorUpdateTemplate) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_device_memory, VkDeviceMemory) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_event, VkEvent) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_framebuffer, VkFramebuffer) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_image, VkImage) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_image_view, VkImageView); -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_pipeline_cache, VkPipelineCache) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_pipeline, VkPipeline) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_pipeline_layout, VkPipelineLayout) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_query_pool, VkQueryPool) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_render_pass, VkRenderPass) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_sampler, VkSampler) -TU_DEFINE_NONDISP_HANDLE_CASTS(tu_sampler_ycbcr_conversion, VkSamplerYcbcrConversion) + VK_FROM_HANDLE(__tu_type, __name, __handle) + +VK_DEFINE_HANDLE_CASTS(tu_cmd_buffer, base, VkCommandBuffer, + VK_OBJECT_TYPE_COMMAND_BUFFER) +VK_DEFINE_HANDLE_CASTS(tu_device, vk.base, VkDevice, VK_OBJECT_TYPE_DEVICE) +VK_DEFINE_HANDLE_CASTS(tu_instance, vk.base, VkInstance, + VK_OBJECT_TYPE_INSTANCE) +VK_DEFINE_HANDLE_CASTS(tu_physical_device, vk.base, VkPhysicalDevice, + VK_OBJECT_TYPE_PHYSICAL_DEVICE) +VK_DEFINE_HANDLE_CASTS(tu_queue, base, VkQueue, VK_OBJECT_TYPE_QUEUE) + +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_cmd_pool, base, VkCommandPool, + VK_OBJECT_TYPE_COMMAND_POOL) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_buffer, base, VkBuffer, + VK_OBJECT_TYPE_BUFFER) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_buffer_view, base, VkBufferView, + VK_OBJECT_TYPE_BUFFER_VIEW) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_descriptor_pool, base, VkDescriptorPool, + VK_OBJECT_TYPE_DESCRIPTOR_POOL) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_descriptor_set, base, VkDescriptorSet, + VK_OBJECT_TYPE_DESCRIPTOR_SET) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_descriptor_set_layout, base, + VkDescriptorSetLayout, + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_descriptor_update_template, base, + VkDescriptorUpdateTemplate, + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_device_memory, base, VkDeviceMemory, + VK_OBJECT_TYPE_DEVICE_MEMORY) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_event, base, VkEvent, VK_OBJECT_TYPE_EVENT) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_framebuffer, base, VkFramebuffer, + VK_OBJECT_TYPE_FRAMEBUFFER) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_image, base, VkImage, VK_OBJECT_TYPE_IMAGE) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_image_view, base, VkImageView, + VK_OBJECT_TYPE_IMAGE_VIEW); +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_pipeline_cache, base, VkPipelineCache, + VK_OBJECT_TYPE_PIPELINE_CACHE) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_pipeline, base, VkPipeline, + VK_OBJECT_TYPE_PIPELINE) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_pipeline_layout, base, VkPipelineLayout, + VK_OBJECT_TYPE_PIPELINE_LAYOUT) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_query_pool, base, VkQueryPool, + VK_OBJECT_TYPE_QUERY_POOL) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_render_pass, base, VkRenderPass, + VK_OBJECT_TYPE_RENDER_PASS) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_sampler, base, VkSampler, + VK_OBJECT_TYPE_SAMPLER) +VK_DEFINE_NONDISP_HANDLE_CASTS(tu_sampler_ycbcr_conversion, base, VkSamplerYcbcrConversion, + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION) /* for TU_FROM_HANDLE with both VkFence and VkSemaphore: */ #define tu_syncobj_from_handle(x) ((struct tu_syncobj*) (uintptr_t) (x))
