working on subpass dependencies

This commit is contained in:
2024-12-04 15:38:47 +01:00
parent 33260f316f
commit 999ef64d0a
3 changed files with 10 additions and 23 deletions

View File

@@ -36,7 +36,7 @@ CXXPCHFLAGS = -xc++-header
PCH = runtime/Includes/PreCompiled.h PCH = runtime/Includes/PreCompiled.h
GCH = GCH =
NZSLC = nzslc NZRRC = nzslc
ifeq ($(TOOLCHAIN), gcc) ifeq ($(TOOLCHAIN), gcc)
CXX = g++ CXX = g++

View File

@@ -119,10 +119,7 @@ namespace mlx
return set == rhs_set; return set == rhs_set;
}); });
if(it == m_used_sets.end()) if(it == m_used_sets.end())
{
Error("Vulkan: cannot return descriptor set to pool, invalid pool");
return; return;
}
m_used_sets.erase(it); m_used_sets.erase(it);
m_free_sets.push_back(set); m_free_sets.push_back(set);
} }

View File

@@ -178,27 +178,17 @@ namespace mlx
{ {
attachments.push_back(kvfBuildAttachmentDescription(KVF_IMAGE_COLOR, image->GetFormat(), image->GetLayout(), image->GetLayout(), clear_attachments, VK_SAMPLE_COUNT_1_BIT)); attachments.push_back(kvfBuildAttachmentDescription(KVF_IMAGE_COLOR, image->GetFormat(), image->GetLayout(), image->GetLayout(), clear_attachments, VK_SAMPLE_COUNT_1_BIT));
attachment_views.push_back(image->GetImageView()); attachment_views.push_back(image->GetImageView());
#if 0
VkSubpassDependency& first_dependency = dependencies.emplace_back();
first_dependency.srcSubpass = VK_SUBPASS_EXTERNAL;
first_dependency.dstSubpass = 0;
first_dependency.srcStageMask = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
first_dependency.dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
first_dependency.srcAccessMask = VK_ACCESS_SHADER_READ_BIT;
first_dependency.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
first_dependency.dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT;
VkSubpassDependency& second_dependency = dependencies.emplace_back();
second_dependency.srcSubpass = 0;
second_dependency.dstSubpass = VK_SUBPASS_EXTERNAL;
second_dependency.srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
second_dependency.dstStageMask = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
second_dependency.srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
second_dependency.dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
second_dependency.dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT;
#endif
} }
VkSubpassDependency& dependency = dependencies.emplace_back();
dependency.srcSubpass = VK_SUBPASS_EXTERNAL;
dependency.dstSubpass = 0;
dependency.srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
dependency.dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
dependency.srcAccessMask = 0;
dependency.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
dependency.dependencyFlags = 0;
m_renderpass = kvfCreateRenderPassWithSubpassDependencies(RenderCore::Get().GetDevice(), attachments.data(), attachments.size(), GetPipelineBindPoint(), dependencies.data(), dependencies.size()); m_renderpass = kvfCreateRenderPassWithSubpassDependencies(RenderCore::Get().GetDevice(), attachments.data(), attachments.size(), GetPipelineBindPoint(), dependencies.data(), dependencies.size());
m_clears.clear(); m_clears.clear();
m_clears.resize(attachments.size()); m_clears.resize(attachments.size());