Skip to content

Commit 16c3ecd

Browse files
committed
Add dirty mark to DescriptorSet
1 parent c81da1d commit 16c3ecd

2 files changed

Lines changed: 10 additions & 0 deletions

File tree

pathfinder/gpu/descriptor_set.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ class DescriptorSet {
7878
for (auto& d : _descriptors) {
7979
descriptors[d.binding] = d;
8080
}
81+
82+
dirty = true;
8183
}
8284

8385
const std::unordered_map<uint32_t, Descriptor>& get_descriptors() const {
@@ -90,6 +92,8 @@ class DescriptorSet {
9092
protected:
9193
/// Binding point is used as the hashing key.
9294
std::unordered_map<uint32_t, Descriptor> descriptors;
95+
96+
bool dirty = false;
9397
};
9498

9599
} // namespace Pathfinder

pathfinder/gpu/vk/descriptor_set.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ namespace Pathfinder {
1010
void DescriptorSetVk::update_vk_descriptor_set(VkDevice vk_device, VkDescriptorSetLayout vk_descriptor_set_layout) {
1111
vk_device_ = vk_device;
1212

13+
if (!dirty) {
14+
return;
15+
}
16+
1317
// Create descriptor pool and allocate descriptor sets.
1418
if (!descriptor_set_allocated_) {
1519
// Get pool sizes.
@@ -142,6 +146,8 @@ void DescriptorSetVk::update_vk_descriptor_set(VkDevice vk_device, VkDescriptorS
142146
// To update multiple descriptor sets at once,
143147
// make sure the pBufferInfo or pImageInfo pointers are still valid at this point.
144148
vkUpdateDescriptorSets(vk_device_, descriptor_writes.size(), descriptor_writes.data(), 0, nullptr);
149+
150+
dirty = false;
145151
}
146152

147153
VkDescriptorSet &DescriptorSetVk::get_vk_descriptor_set() {

0 commit comments

Comments
 (0)