VulkanRaytracingCycles 0.0.0
Cycles Render Engine With VulkanRaytracingShaderModules. ( Experiment , in progress)
DescUniform Namespace Reference

Functions

template<typename T >
VkDeviceSize alignmentSB (T &bach, VkDeviceSize size, VkDeviceSize _alignment=0)
 
template<typename T >
void appendAlignScalar (T &bach, VkDeviceSize size, int expect=-1)
 
template<typename T >
void setAlignScalar (T &bach)
 

Function Documentation

◆ alignmentSB()

template<typename T >
VkDeviceSize DescUniform::alignmentSB ( T &  bach,
VkDeviceSize  size,
VkDeviceSize  _alignment = 0 
)

MIN

MAX VkDeviceSize tboSize = limits.maxStorageBufferRange; const VkDeviceSize structMax = VkDeviceSize(tboSize) * structSize; _maxStructChunk = __min(structMax, maxChunk);

Definition at line 275 of file incomplete.h.

275 {
276
277 const VkDeviceSize maxChunk = 512 * 1024 * 1024;
278 if (_alignment == 0) {
279 VkPhysicalDeviceLimits& limits = $properties.limits;
280 _alignment = limits.minStorageBufferOffsetAlignment;
281 }
283 auto alignment = _alignment - (size % _alignment);
284 if (alignment < _alignment)return size + alignment;
285 return size;
286
291
292 };

◆ appendAlignScalar()

template<typename T >
void DescUniform::appendAlignScalar ( T &  bach,
VkDeviceSize  size,
int  expect = -1 
)

Definition at line 296 of file incomplete.h.

296 {
297
298 size = alignmentSB(bach, size);
299 VkDescriptorBufferInfo info = {
300 .offset = bach.size,
301 .range = size
302 };
303 bach.infos.push_back(info);
304 if (expect > 0) assert(bach.infos.size() == expect);
305
306 bach.size += size;
307
308 };
VkDeviceSize alignmentSB(T &bach, VkDeviceSize size, VkDeviceSize _alignment=0)
Definition: incomplete.h:275

◆ setAlignScalar()

template<typename T >
void DescUniform::setAlignScalar ( T &  bach)

Definition at line 310 of file incomplete.h.

310 {
311 assert(bach.vkBuffer != VK_NULL_HANDLE);
312 for (auto& info : bach.infos) info.buffer = bach.vkBuffer;
313 };