@@ -82,27 +82,58 @@ bool IGPUDescriptorSet::processWrite(const IGPUDescriptorSet::SWriteDescriptorSe
82
82
83
83
bool IGPUDescriptorSet::processCopy (const IGPUDescriptorSet::SCopyDescriptorSet& copy)
84
84
{
85
- #if 0
86
85
assert (copy.dstSet == this );
87
86
87
+ system::ILogger* logger = nullptr ;
88
+ {
89
+ auto debugCallback = getOriginDevice ()->getPhysicalDevice ()->getDebugCallback ();
90
+ if (debugCallback)
91
+ logger = debugCallback->getLogger ();
92
+ }
93
+
88
94
for (uint32_t t = 0 ; t < static_cast <uint32_t >(asset::IDescriptor::E_TYPE::ET_COUNT); ++t)
89
95
{
90
96
const auto type = static_cast <asset::IDescriptor::E_TYPE>(t);
91
97
92
- auto* srcDescriptors = srcDS->getDescriptors(type, pDescriptorCopies[i].srcBinding);
93
- auto* srcSamplers = srcDS->getMutableSamplers(pDescriptorCopies[i].srcBinding);
98
+ auto * srcDescriptors = copy.srcSet ->getDescriptors (type, copy.srcBinding );
99
+ if (!srcDescriptors)
100
+ {
101
+ if (logger)
102
+ logger->log (" Expected descriptors of given type at binding %u for the src descriptor set but none found." , system::ILogger::ELL_ERROR, copy.srcBinding );
103
+ return false ;
104
+ }
105
+
106
+ auto * srcSamplers = copy.srcSet ->getMutableSamplers (copy.srcBinding );
107
+ if (!srcSamplers)
108
+ {
109
+ if (logger)
110
+ logger->log (" Expected mutable samplers at binding %u for the src descriptor set, but none found" , system::ILogger::ELL_ERROR, copy.srcBinding );
111
+ return false ;
112
+ }
94
113
95
- auto* dstDescriptors = dstDS->getDescriptors(type, pDescriptorCopies[i].dstBinding);
96
- auto* dstSamplers = dstDS->getMutableSamplers(pDescriptorCopies[i].dstBinding);
114
+ auto * dstDescriptors = copy.dstSet ->getDescriptors (type, copy.dstBinding );
115
+ if (!dstDescriptors)
116
+ {
117
+ if (logger)
118
+ logger->log (" Expected descriptors of given type at binding %u for the dst descriptor set but none found." , system::ILogger::ELL_ERROR, copy.dstBinding );
119
+ return false ;
120
+ }
97
121
98
- if (srcDescriptors && dstDescriptors)
99
- std::copy_n(srcDescriptors, pDescriptorCopies[i].count, dstDescriptors);
122
+ auto * dstSamplers = copy.dstSet ->getMutableSamplers (copy.dstBinding );
123
+ if (!dstSamplers)
124
+ {
125
+ if (logger)
126
+ logger->log (" Expected mutable samplers at binding %u for the dst descriptor set, but none found" , system::ILogger::ELL_ERROR, copy.dstBinding );
127
+ return false ;
128
+ }
100
129
101
- if (srcSamplers && dstSamplers)
102
- std::copy_n(srcSamplers, pDescriptorCopies[i] .count, dstSamplers);
130
+ std::copy_n (srcDescriptors, copy. count , dstDescriptors);
131
+ std::copy_n (srcSamplers, copy .count , dstSamplers);
103
132
}
104
- #endif
105
- return false ;
133
+
134
+ incrementVersion ();
135
+
136
+ return true ;
106
137
}
107
138
108
139
}
0 commit comments