Skip to content

Commit d7202e6

Browse files
committed
Update VulkanTriangleDynamicRendering for load dynamic rendering function
1 parent 98c6690 commit d7202e6

4 files changed

Lines changed: 25 additions & 94 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
>
3939
> >更新 `VulkanTriangleDynamicRendering` 检查动态渲染依赖扩展和特性并激活。
4040
>
41+
> >更新 `VulkanTriangleDynamicRendering` 加载动态渲染函数。
42+
>
4143
4244
> **2026/8/20**
4345
>

VulkanTriangle.cpp

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -712,52 +712,6 @@ VulkanTriangle::VulkanTriangle()
712712
vk_command_pool_create_info.flags = 0;
713713
vk_command_pool_create_info.queueFamilyIndex = queue_family_index;
714714
driver.vkCreateCommandPool(this->device, &vk_command_pool_create_info, nullptr, &this->commandPool);
715-
716-
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
717-
{
718-
// std::vector<VkDescriptorPoolSize> vk_descriptor_pool_sizes = {};
719-
//{
720-
// VkDescriptorPoolSize vk_descriptor_pool_size;
721-
// vk_descriptor_pool_size.descriptorCount = 1000;
722-
//
723-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
724-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
725-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
726-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
727-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_SAMPLER;
728-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
729-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
730-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
731-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
732-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
733-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER;
734-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
735-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER;
736-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
737-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
738-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
739-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
740-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
741-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC;
742-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
743-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT;
744-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
745-
//}
746-
//
747-
// VkDescriptorPoolCreateInfo vk_descriptor_pool_create_info = {};
748-
// vk_descriptor_pool_create_info.sType = VkStructureType::VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
749-
// vk_descriptor_pool_create_info.pNext = nullptr;
750-
// vk_descriptor_pool_create_info.flags = VkDescriptorPoolCreateFlagBits::VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT;
751-
// vk_descriptor_pool_create_info.maxSets = vk_descriptor_pool_sizes.size() * 1000;
752-
// vk_descriptor_pool_create_info.poolSizeCount = vk_descriptor_pool_sizes.size();
753-
// vk_descriptor_pool_create_info.pPoolSizes = vk_descriptor_pool_sizes.data();
754-
//
755-
// VkResult result = driver.vkCreateDescriptorPool(this->device, &vk_descriptor_pool_create_info, nullptr, &this->descriptorPool);
756-
// if (result != VkResult::VK_SUCCESS)
757-
//{
758-
// throw std::runtime_error("Can not create VkDescriptorPool!");
759-
//}
760-
}
761715
}
762716

763717
VulkanTriangle::~VulkanTriangle()

VulkanTriangleDynamicRendering.cpp

Lines changed: 17 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,15 @@ void DynamicRenderingCore()
8787
// VkCommandBuffer commandBuffer,
8888
// const VkRenderingInfo* pRenderingInfo);
8989

90+
// Vulkan 1.3
91+
// void vkCmdEndRendering(
92+
// VkCommandBuffer commandBuffer);
93+
94+
// Provided by VK_KHR_dynamic_rendering
95+
// Equivalent to vkCmdEndRendering
96+
// void vkCmdEndRenderingKHR(
97+
// VkCommandBuffer commandBuffer);
98+
9099
// Vulkan 1.3
91100
// typedef struct VkRenderingInfo
92101

@@ -883,9 +892,17 @@ VulkanTriangle::VulkanTriangle()
883892

884893
if (this->driver.isDynamicRenderingUseExtension)
885894
{
895+
driver.vkCmdBeginRenderingKHR = (PFN_vkCmdBeginRenderingKHR)driver.vkGetDeviceProcAddr(this->device, "vkCmdBeginRenderingKHR");
896+
assert(driver.vkCmdBeginRenderingKHR && "vkCmdBeginRenderingKHR");
897+
driver.vkCmdEndRenderingKHR = (PFN_vkCmdEndRenderingKHR)driver.vkGetDeviceProcAddr(this->device, "vkCmdEndRenderingKHR");
898+
assert(driver.vkCmdEndRenderingKHR && "vkCmdEndRenderingKHR");
886899
}
887900
else
888901
{
902+
driver.vkCmdBeginRendering = (PFN_vkCmdBeginRendering)driver.vkGetDeviceProcAddr(this->device, "vkCmdBeginRendering");
903+
assert(driver.vkCmdBeginRendering && "vkCmdBeginRendering");
904+
driver.vkCmdEndRendering = (PFN_vkCmdEndRendering)driver.vkGetDeviceProcAddr(this->device, "vkCmdEndRendering");
905+
assert(driver.vkCmdEndRendering && "vkCmdEndRendering");
889906
}
890907
}
891908

@@ -954,52 +971,6 @@ VulkanTriangle::VulkanTriangle()
954971
vk_command_pool_create_info.flags = 0;
955972
vk_command_pool_create_info.queueFamilyIndex = queue_family_index;
956973
driver.vkCreateCommandPool(this->device, &vk_command_pool_create_info, nullptr, &this->commandPool);
957-
958-
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
959-
{
960-
// std::vector<VkDescriptorPoolSize> vk_descriptor_pool_sizes = {};
961-
//{
962-
// VkDescriptorPoolSize vk_descriptor_pool_size;
963-
// vk_descriptor_pool_size.descriptorCount = 1000;
964-
//
965-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
966-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
967-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
968-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
969-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_SAMPLER;
970-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
971-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
972-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
973-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
974-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
975-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER;
976-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
977-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER;
978-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
979-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
980-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
981-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
982-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
983-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC;
984-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
985-
// vk_descriptor_pool_size.type = VkDescriptorType::VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT;
986-
// vk_descriptor_pool_sizes.push_back(vk_descriptor_pool_size);
987-
//}
988-
//
989-
// VkDescriptorPoolCreateInfo vk_descriptor_pool_create_info = {};
990-
// vk_descriptor_pool_create_info.sType = VkStructureType::VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
991-
// vk_descriptor_pool_create_info.pNext = nullptr;
992-
// vk_descriptor_pool_create_info.flags = VkDescriptorPoolCreateFlagBits::VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT;
993-
// vk_descriptor_pool_create_info.maxSets = vk_descriptor_pool_sizes.size() * 1000;
994-
// vk_descriptor_pool_create_info.poolSizeCount = vk_descriptor_pool_sizes.size();
995-
// vk_descriptor_pool_create_info.pPoolSizes = vk_descriptor_pool_sizes.data();
996-
//
997-
// VkResult result = driver.vkCreateDescriptorPool(this->device, &vk_descriptor_pool_create_info, nullptr, &this->descriptorPool);
998-
// if (result != VkResult::VK_SUCCESS)
999-
//{
1000-
// throw std::runtime_error("Can not create VkDescriptorPool!");
1001-
//}
1002-
}
1003974
}
1004975

1005976
VulkanTriangle::~VulkanTriangle()

VulkanTriangleDynamicRendering.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,13 +163,17 @@ struct VkDriver
163163
PFN_vkCmdPushConstants vkCmdPushConstants = nullptr;
164164
PFN_vkCmdDraw vkCmdDraw = nullptr;
165165

166-
//PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 = nullptr;
167-
//PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR = nullptr;
166+
// PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 = nullptr;
167+
// PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR = nullptr;
168168

169169
PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 = nullptr;
170170
PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR = nullptr;
171171
bool isGetPhysicalDeviceProperties2UseExtension = false;
172172

173+
PFN_vkCmdBeginRendering vkCmdBeginRendering = nullptr;
174+
PFN_vkCmdEndRendering vkCmdEndRendering = nullptr;
175+
PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR = nullptr;
176+
PFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR = nullptr;
173177
bool isDynamicRenderingUseExtension = false;
174178
};
175179

0 commit comments

Comments
 (0)