29#include "NvFlowContext.h"
30#include "NvFlowArray.h"
35 NvFlowBufferUsageFlags flags = 0u;
36 NvFlowFormat format = eNvFlowFormat_unknown;
37 NvFlowUint structureStride = 0u;
39 NvFlowBuffer* deviceBuffer =
nullptr;
40 NvFlowUint64 deviceNumBytes = 0llu;
42 NvFlowBufferTransient* transientBuffer =
nullptr;
43 NvFlowUint64 transientFrame = ~0llu;
48 ptr->contextInterface = contextInterface;
52 ptr->structureStride = structureStride;
57 if (ptr->deviceBuffer)
59 ptr->contextInterface->destroyBuffer(
context, ptr->deviceBuffer);
60 ptr->deviceBuffer =
nullptr;
66 if (ptr->deviceBuffer && ptr->deviceNumBytes < numBytes)
68 ptr->contextInterface->destroyBuffer(
context, ptr->deviceBuffer);
69 ptr->deviceBuffer =
nullptr;
70 ptr->deviceNumBytes = 0llu;
71 ptr->transientFrame = ~0llu;
73 if (!ptr->deviceBuffer)
76 bufDesc.format = ptr->format;
77 bufDesc.usageFlags = ptr->flags;
78 bufDesc.structureStride = ptr->structureStride;
79 bufDesc.sizeInBytes = 65536u;
80 while (bufDesc.sizeInBytes < numBytes)
82 bufDesc.sizeInBytes *= 2u;
85 ptr->deviceNumBytes = bufDesc.sizeInBytes;
86 ptr->deviceBuffer = ptr->contextInterface->createBuffer(
context, eNvFlowMemoryType_device, &bufDesc);
92 if (ptr->transientFrame == ptr->contextInterface->getCurrentFrame(
context))
94 return ptr->transientBuffer;
96 if (ptr->deviceBuffer)
98 ptr->transientBuffer = ptr->contextInterface->registerBufferAsTransient(
context, ptr->deviceBuffer);
99 ptr->transientFrame = ptr->contextInterface->getCurrentFrame(
context);
101 return ptr->transientBuffer;
Definition NvFlowContext.h:96
Definition NvFlowContext.h:362
Definition NvFlowDynamicBuffer.h:33