@@ -931,78 +931,6 @@ void VulkanQueueRunner::LogReadbackImage(const VKRStep &step) {
931
931
INFO_LOG (G3D, " %s" , StepToString (vulkan_, step).c_str ());
932
932
}
933
933
934
- static void TransitionColorFromOptimal (VkCommandBuffer cmd, VkImage colorImage, VkImageLayout colorLayout, int numLayers, VulkanBarrierBatch *recordBarrier) {
935
- VkPipelineStageFlags dstStageMask = 0 ;
936
- VkAccessFlags dstAccessMask = 0 ;
937
- // And the final transition.
938
- // Don't need to transition it if VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL.
939
- switch (colorLayout) {
940
- case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
941
- dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
942
- dstStageMask = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
943
- break ;
944
- case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
945
- dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
946
- dstStageMask = VK_PIPELINE_STAGE_TRANSFER_BIT;
947
- break ;
948
- case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
949
- dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
950
- dstStageMask = VK_PIPELINE_STAGE_TRANSFER_BIT;
951
- break ;
952
- case VK_IMAGE_LAYOUT_UNDEFINED:
953
- case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:
954
- // Nothing to do.
955
- return ;
956
- default :
957
- _dbg_assert_msg_ (false , " TransitionFromOptimal: Unexpected final color layout %d" , (int )colorLayout);
958
- break ;
959
- }
960
- recordBarrier->TransitionImage (
961
- colorImage, 0 , 1 , numLayers, VK_IMAGE_ASPECT_COLOR_BIT,
962
- VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
963
- colorLayout,
964
- VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, // srcAccessMask
965
- dstAccessMask,
966
- VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
967
- dstStageMask
968
- );
969
- }
970
-
971
- static void TransitionDepthFromOptimal (VkCommandBuffer cmd, VkImage depthStencilImage, VkImageLayout depthStencilLayout, int numLayers, VulkanBarrierBatch *recordBarrier) {
972
- VkPipelineStageFlags dstStageMask = 0 ;
973
- VkAccessFlags dstAccessMask = 0 ;
974
- switch (depthStencilLayout) {
975
- case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
976
- dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
977
- dstStageMask = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
978
- break ;
979
- case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
980
- dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
981
- dstStageMask = VK_PIPELINE_STAGE_TRANSFER_BIT;
982
- break ;
983
- case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
984
- dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
985
- dstStageMask = VK_PIPELINE_STAGE_TRANSFER_BIT;
986
- break ;
987
- case VK_IMAGE_LAYOUT_UNDEFINED:
988
- case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
989
- // Nothing to do.
990
- return ;
991
- default :
992
- _dbg_assert_msg_ (false , " TransitionFromOptimal: Unexpected final depth layout %d" , (int )depthStencilLayout);
993
- break ;
994
- }
995
- recordBarrier->TransitionImage (
996
- depthStencilImage, 0 , 1 , numLayers, VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT,
997
- VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
998
- depthStencilLayout,
999
- VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, // srcAccessMask
1000
- dstAccessMask,
1001
- VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
1002
- dstStageMask
1003
- );
1004
- }
1005
-
1006
934
void VulkanQueueRunner::PerformRenderPass (const VKRStep &step, VkCommandBuffer cmd, int curFrame, QueueProfileContext &profile) {
1007
935
for (size_t i = 0 ; i < step.preTransitions .size (); i++) {
1008
936
const TransitionRequest &iter = step.preTransitions [i];
@@ -1303,9 +1231,9 @@ void VulkanQueueRunner::PerformRenderPass(const VKRStep &step, VkCommandBuffer c
1303
1231
1304
1232
if (fb) {
1305
1233
// If the desired final layout aren't the optimal layout needed next, transition.
1306
- TransitionColorFromOptimal (cmd, fb->color .image , step.render .finalColorLayout , fb->numLayers , &recordBarrier_ );
1234
+ recordBarrier_. TransitionColorImageAuto (fb-> color . image , & fb->color .layout , step.render .finalColorLayout , 0 , 1 , fb->numLayers );
1307
1235
if (fb->depth .image ) {
1308
- TransitionDepthFromOptimal (cmd, fb->depth .image , step.render .finalDepthStencilLayout , fb->numLayers , &recordBarrier_ );
1236
+ recordBarrier_. TransitionDepthStencilImageAuto (fb-> depth . image , & fb->depth .layout , step.render .finalDepthStencilLayout , 0 , 1 , fb->numLayers );
1309
1237
}
1310
1238
recordBarrier_.Flush (cmd);
1311
1239
0 commit comments