@@ -57,53 +57,15 @@ class IGPUDescriptorSet : public asset::IDescriptorSet<const IGPUDescriptorSetLa
5757 inline bool isZombie () const { return (m_pool.get () == nullptr ); }
5858
5959 protected:
60- IGPUDescriptorSet (core::smart_refctd_ptr<const IGPUDescriptorSetLayout>&& _layout, core::smart_refctd_ptr<IDescriptorPool>&& pool, const uint32_t poolOffset, IDescriptorPool::SDescriptorOffsets && offsets);
60+ IGPUDescriptorSet (core::smart_refctd_ptr<const IGPUDescriptorSetLayout>&& _layout, core::smart_refctd_ptr<IDescriptorPool>&& pool, IDescriptorPool::SStorageOffsets && offsets);
6161 virtual ~IGPUDescriptorSet ();
6262
6363 private:
64- friend class ILogicalDevice ;
65-
6664 inline void incrementVersion () { m_version.fetch_add (1ull ); }
6765
68- // TODO(achal): Don't know yet if we want to keep these.
69- inline void processWrite (const IGPUDescriptorSet::SWriteDescriptorSet& write)
70- {
71- assert (write.dstSet == this );
72-
73- auto * descriptors = getDescriptors (write.descriptorType , write.binding );
74- auto * samplers = getMutableSamplers (write.binding );
75- for (auto j = 0 ; j < write.count ; ++j)
76- {
77- descriptors[j] = write.info [j].desc ;
78-
79- if (samplers)
80- samplers[j] = write.info [j].info .image .sampler ;
81- }
82- }
83-
84- #if 0
85- inline void processCopy(const IGPUDescriptorSet::SCopyDescriptorSet& copy)
86- {
87- assert(copy.dstSet == this);
88-
89- for (uint32_t t = 0; t < static_cast<uint32_t>(asset::IDescriptor::E_TYPE::ET_COUNT); ++t)
90- {
91- const auto type = static_cast<asset::IDescriptor::E_TYPE>(t);
92-
93- auto* srcDescriptors = srcDS->getDescriptors(type, pDescriptorCopies[i].srcBinding);
94- auto* srcSamplers = srcDS->getMutableSamplers(pDescriptorCopies[i].srcBinding);
95-
96- auto* dstDescriptors = dstDS->getDescriptors(type, pDescriptorCopies[i].dstBinding);
97- auto* dstSamplers = dstDS->getMutableSamplers(pDescriptorCopies[i].dstBinding);
98-
99- if (srcDescriptors && dstDescriptors)
100- std::copy_n(srcDescriptors, pDescriptorCopies[i].count, dstDescriptors);
101-
102- if (srcSamplers && dstSamplers)
103- std::copy_n(srcSamplers, pDescriptorCopies[i].count, dstSamplers);
104- }
105- }
106- #endif
66+ friend class ILogicalDevice ;
67+ bool processWrite (const IGPUDescriptorSet::SWriteDescriptorSet& write);
68+ bool processCopy (const IGPUDescriptorSet::SCopyDescriptorSet& copy);
10769
10870 // This assumes that descriptors of a particular type in the set will always be contiguous in pool's storage memory, regardless of which binding in the set they belong to.
10971 inline core::smart_refctd_ptr<asset::IDescriptor>* getDescriptors (const asset::IDescriptor::E_TYPE type, const uint32_t binding) const
@@ -138,7 +100,7 @@ class IGPUDescriptorSet : public asset::IDescriptorSet<const IGPUDescriptorSetLa
138100 if (baseAddress == nullptr )
139101 return nullptr ;
140102
141- const auto offset = getDescriptorStorageOffset (type);
103+ const auto offset = m_storageOffsets. getDescriptorOffset (type);
142104 if (offset == ~0u )
143105 return nullptr ;
144106
@@ -151,21 +113,17 @@ class IGPUDescriptorSet : public asset::IDescriptorSet<const IGPUDescriptorSetLa
151113 if (baseAddress == nullptr )
152114 return nullptr ;
153115
154- const auto poolOffset = getMutableSamplerStorageOffset ();
155- if (poolOffset == ~0u )
116+ const auto offset = m_storageOffsets. getMutableSamplerOffset ();
117+ if (offset == ~0u )
156118 return nullptr ;
157119
158- return baseAddress + poolOffset ;
120+ return baseAddress + offset ;
159121 }
160122
161- inline uint32_t getDescriptorStorageOffset (const asset::IDescriptor::E_TYPE type) const { return m_descriptorStorageOffsets.data [static_cast <uint32_t >(type)]; }
162- inline uint32_t getMutableSamplerStorageOffset () const { return m_descriptorStorageOffsets.data [static_cast <uint32_t >(asset::IDescriptor::E_TYPE::ET_COUNT)]; }
163-
164123 std::atomic_uint64_t m_version;
165124 friend class IDescriptorPool ;
166125 core::smart_refctd_ptr<IDescriptorPool> m_pool;
167- uint32_t m_poolOffset;
168- const IDescriptorPool::SDescriptorOffsets m_descriptorStorageOffsets;
126+ const IDescriptorPool::SStorageOffsets m_storageOffsets;
169127};
170128
171129}
0 commit comments