lavapipe: Use the auto-generated vk_enqueue_BeginRendering
authorJason Ekstrand <jason.ekstrand@collabora.com>
Thu, 10 Mar 2022 16:25:45 +0000 (10:25 -0600)
committerJason Ekstrand <jason.ekstrand@collabora.com>
Fri, 11 Mar 2022 17:40:41 +0000 (11:40 -0600)
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15325>

src/gallium/frontends/lavapipe/ci/lvp-asan-fails.txt
src/gallium/frontends/lavapipe/lvp_cmd_buffer.c
src/gallium/frontends/lavapipe/lvp_execute.c
src/vulkan/util/vk_cmd_queue_gen.py

index 50edd3f..716c198 100644 (file)
@@ -1,14 +1,3 @@
-# https://gitlab.freedesktop.org/mesa/mesa/-/issues/5440
-# vk_cmd_queue_gen.py doesn't alloc or free pDepthAttachment and pStencilAttachment
-# because they don't have a len field. lvp has a hand-edited copy of the formerly
-# codegenned function for vkCmdBeginRendering that allocs, but that also would mean
-# we can't use the code-genned free.
-dEQP-VK.draw.dynamic_rendering.multi_draw.mosaic.indexed_mixed.no_draws.stride_extra_4.2_instances_base_3.with_tess.multiview.no_offset,Fail
-dEQP-VK.draw.dynamic_rendering.multi_draw.mosaic.indexed_packed.no_draws.stride_extra_4.no_instances.with_tess.multiview.no_offset,Fail
-dEQP-VK.draw.dynamic_rendering.multi_draw.mosaic.indexed_random.no_draws.stride_extra_4.10_instances.vert_only.multiview.no_offset,Fail
-dEQP-VK.draw.dynamic_rendering.multi_draw.overlapping.indexed_random.16_draws.stride_extra_4.1_instance.with_tess.multiview.no_offset,Fail
-dEQP-VK.draw.dynamic_rendering.multi_draw.overlapping.normal.one_draw.stride_extra_12.no_instances.with_geom.single_view.no_offset,Fail
-
 # Direct leak of 496 byte(s) in 1 object(s) allocated from:
 #     #0 0x7fa1e2f1e037 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154
 #     #1 0x7fa1ddf026ad in llvmpipe_resource_create_all ../src/gallium/drivers/llvmpipe/lp_texture.c:235
@@ -16,7 +5,6 @@ dEQP-VK.draw.dynamic_rendering.multi_draw.overlapping.normal.one_draw.stride_ext
 #     #3 0x7fa1dd96b1b9 in lvp_image_create ../src/gallium/frontends/lavapipe/lvp_image.c:99
 #     #4 0x7fa1dd96b87e in lvp_CreateImage ../src/gallium/frontends/lavapipe/lvp_image.c:154
 #     #5 0x555648e7e588  (/deqp/external/vulkancts/modules/vulkan/deqp-vk+0x2145588)
-dEQP-VK.dynamic_rendering.dedicated_allocation.formats.d32_sfloat.clear.clear,Fail
 dEQP-VK.image.texel_view_compatible.graphic.basic.3d_image.texture_read.bc3_unorm_block.r32g32b32a32_uint,Fail
 dEQP-VK.renderpass.dedicated_allocation.formats.a2b10g10r10_uint_pack32.input.dont_care.store.clear_draw,Fail
 dEQP-VK.renderpass.dedicated_allocation.formats.d16_unorm.input.load.store.self_dep_draw,Fail
index 4dc5699..8d2d003 100644 (file)
@@ -343,91 +343,3 @@ VKAPI_ATTR void VKAPI_CALL lvp_CmdPushDescriptorSetWithTemplateKHR(
       }
    }
 }
-
-VKAPI_ATTR void VKAPI_CALL lvp_CmdBeginRendering(VkCommandBuffer                             commandBuffer,
- const VkRenderingInfoKHR*                           pRenderingInfo
-)
-{
-   LVP_FROM_HANDLE(lvp_cmd_buffer, cmd_buffer, commandBuffer);
-   struct vk_cmd_queue *queue = &cmd_buffer->vk.cmd_queue;
-   struct vk_cmd_queue_entry *cmd = vk_zalloc(queue->alloc,
-                                              sizeof(*cmd), 8,
-                                              VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
-   if (!cmd)
-      return;
-
-   cmd->type = VK_CMD_BEGIN_RENDERING;
-   list_addtail(&cmd->cmd_link, &queue->cmds);
-
-   if (pRenderingInfo) {
-      cmd->u.begin_rendering.rendering_info = vk_zalloc(queue->alloc, sizeof(VkRenderingInfoKHR), 8, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
-      memcpy((void*)cmd->u.begin_rendering.rendering_info, pRenderingInfo, sizeof(VkRenderingInfoKHR));
-   VkRenderingInfoKHR *tmp_dst1 = (void *) cmd->u.begin_rendering.rendering_info; (void) tmp_dst1;
-   VkRenderingInfoKHR *tmp_src1 = (void *) pRenderingInfo; (void) tmp_src1;   
-   
-      const VkBaseInStructure *pnext = tmp_dst1->pNext;
-      if (pnext) {
-         switch ((int32_t)pnext->sType) {
-         
-      case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:
-         if (pnext) {
-      tmp_dst1->pNext = vk_zalloc(queue->alloc, sizeof(VkDeviceGroupRenderPassBeginInfo), 8, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
-      memcpy((void*)tmp_dst1->pNext, pnext, sizeof(VkDeviceGroupRenderPassBeginInfo));
-   VkDeviceGroupRenderPassBeginInfo *tmp_dst2 = (void *) tmp_dst1->pNext; (void) tmp_dst2;
-   VkDeviceGroupRenderPassBeginInfo *tmp_src2 = (void *) pnext; (void) tmp_src2;   
-   tmp_dst2->pDeviceRenderAreas = vk_zalloc(queue->alloc, sizeof(*tmp_dst2->pDeviceRenderAreas) * tmp_dst2->deviceRenderAreaCount, 8, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
-   memcpy(( VkRect2D*  )tmp_dst2->pDeviceRenderAreas, tmp_src2->pDeviceRenderAreas, sizeof(*tmp_dst2->pDeviceRenderAreas) * tmp_dst2->deviceRenderAreaCount);
-   } else {
-      tmp_dst1->pNext = NULL;
-   }
-         break;
-      
-      case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR:
-         if (pnext) {
-      tmp_dst1->pNext = vk_zalloc(queue->alloc, sizeof(VkRenderingFragmentShadingRateAttachmentInfoKHR), 8, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
-      memcpy((void*)tmp_dst1->pNext, pnext, sizeof(VkRenderingFragmentShadingRateAttachmentInfoKHR));
-   VkRenderingFragmentShadingRateAttachmentInfoKHR *tmp_dst2 = (void *) tmp_dst1->pNext; (void) tmp_dst2;
-   VkRenderingFragmentShadingRateAttachmentInfoKHR *tmp_src2 = (void *) pnext; (void) tmp_src2;   
-      } else {
-      tmp_dst1->pNext = NULL;
-   }
-         break;
-      
-      case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT:
-         if (pnext) {
-      tmp_dst1->pNext = vk_zalloc(queue->alloc, sizeof(VkRenderingFragmentDensityMapAttachmentInfoEXT), 8, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
-      memcpy((void*)tmp_dst1->pNext, pnext, sizeof(VkRenderingFragmentDensityMapAttachmentInfoEXT));
-   VkRenderingFragmentDensityMapAttachmentInfoEXT *tmp_dst2 = (void *) tmp_dst1->pNext; (void) tmp_dst2;
-   VkRenderingFragmentDensityMapAttachmentInfoEXT *tmp_src2 = (void *) pnext; (void) tmp_src2;   
-      } else {
-      tmp_dst1->pNext = NULL;
-   }
-         break;
-      
-      case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX:
-         if (pnext) {
-      tmp_dst1->pNext = vk_zalloc(queue->alloc, sizeof(VkMultiviewPerViewAttributesInfoNVX), 8, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
-      memcpy((void*)tmp_dst1->pNext, pnext, sizeof(VkMultiviewPerViewAttributesInfoNVX));
-   VkMultiviewPerViewAttributesInfoNVX *tmp_dst2 = (void *) tmp_dst1->pNext; (void) tmp_dst2;
-   VkMultiviewPerViewAttributesInfoNVX *tmp_src2 = (void *) pnext; (void) tmp_src2;   
-      } else {
-      tmp_dst1->pNext = NULL;
-   }
-         break;
-      
-         }
-      }
-      tmp_dst1->pColorAttachments = vk_zalloc(queue->alloc, sizeof(*tmp_dst1->pColorAttachments) * tmp_dst1->colorAttachmentCount, 8, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
-   memcpy(( VkRenderingAttachmentInfoKHR*             )tmp_dst1->pColorAttachments, tmp_src1->pColorAttachments, sizeof(*tmp_dst1->pColorAttachments) * tmp_dst1->colorAttachmentCount);
-      if (tmp_src1->pDepthAttachment) {
-         tmp_dst1->pDepthAttachment = vk_zalloc(queue->alloc, sizeof(VkRenderingAttachmentInfoKHR), 8, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
-         memcpy((void*)tmp_dst1->pDepthAttachment, tmp_src1->pDepthAttachment, sizeof(VkRenderingAttachmentInfoKHR));
-      }
-      if (tmp_src1->pStencilAttachment) {
-         tmp_dst1->pStencilAttachment = vk_zalloc(queue->alloc, sizeof(VkRenderingAttachmentInfoKHR), 8, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
-         memcpy((void*)tmp_dst1->pStencilAttachment, tmp_src1->pStencilAttachment, sizeof(VkRenderingAttachmentInfoKHR));
-      }
-   } else {
-      cmd->u.begin_rendering.rendering_info = NULL;
-   }
-}
index be4abc4..6ea24ef 100644 (file)
@@ -3942,7 +3942,7 @@ void lvp_add_enqueue_cmd_entrypoints(struct vk_device_dispatch_table *disp)
    ENQUEUE_CMD(CmdSetPrimitiveRestartEnable)
    ENQUEUE_CMD(CmdSetRasterizerDiscardEnable)
    ENQUEUE_CMD(CmdSetColorWriteEnableEXT)
-//   ENQUEUE_CMD(CmdBeginRendering)
+   ENQUEUE_CMD(CmdBeginRendering)
    ENQUEUE_CMD(CmdEndRendering)
    ENQUEUE_CMD(CmdSetDeviceMask)
 
index 7e18cda..58a51fd 100644 (file)
@@ -50,10 +50,6 @@ MANUAL_COMMANDS = [
     # executed
     'CmdBindDescriptorSets',
 
-    # Lavapipe implements internally
-    'CmdBeginRendering',
-    'CmdBeginRenderingKHR',
-
     # These don't return void
     'CmdSetPerformanceMarkerINTEL',
     'CmdSetPerformanceStreamMarkerINTEL',