29#include "NvFlowContext.h"
34 NvFlowTextureTransient* transientTexture =
nullptr;
35 NvFlowUint64 transientFrame = ~0llu;
36 NvFlowFormat transientFormat = eNvFlowFormat_unknown;
37 NvFlowTexture* texture =
nullptr;
44 ptr->contextInterface = contextInterface;
50 NvFlowUint acquireWriteIdx = 0u;
51 for (NvFlowUint acquireReadIdx = 0u; acquireReadIdx < ptr->acquires.size; acquireReadIdx++)
53 NvFlowTexture* acquiredTexture =
nullptr;
54 if (ptr->contextInterface->getAcquiredTexture(
context, ptr->acquires[acquireReadIdx], &acquiredTexture))
58 ptr->contextInterface->destroyTexture(
context, ptr->texture);
59 ptr->texture =
nullptr;
61 ptr->texture = acquiredTexture;
65 ptr->acquires[acquireWriteIdx++] = ptr->acquires[acquireReadIdx];
68 ptr->acquires.size = acquireWriteIdx;
71NV_FLOW_INLINE NvFlowTextureTransient* NvFlowTextureVariable_get(NvFlowContext*
context,
NvFlowTextureVariable* ptr, NvFlowFormat* pFormat)
73 if (ptr->transientFrame == ptr->contextInterface->getCurrentFrame(
context))
77 *pFormat = ptr->transientFormat;
79 return ptr->transientTexture;
82 NvFlowTextureVariable_flush(
context, ptr);
86 ptr->transientTexture = ptr->contextInterface->registerTextureAsTransient(
context, ptr->texture);
87 ptr->transientFrame = ptr->contextInterface->getCurrentFrame(
context);
91 ptr->transientTexture =
nullptr;
92 ptr->transientFrame = ~0llu;
93 ptr->transientFormat = eNvFlowFormat_unknown;
97 *pFormat = ptr->transientFormat;
99 return ptr->transientTexture;
102NV_FLOW_INLINE
void NvFlowTextureVariable_set(NvFlowContext*
context,
NvFlowTextureVariable* ptr, NvFlowTextureTransient* transientTexture, NvFlowFormat transientFormat)
104 NvFlowTextureVariable_flush(
context, ptr);
107 ptr->contextInterface->destroyTexture(
context, ptr->texture);
108 ptr->texture =
nullptr;
110 ptr->transientTexture =
nullptr;
111 ptr->transientFrame = ~0llu;
112 ptr->transientFormat = eNvFlowFormat_unknown;
113 if (transientTexture)
115 ptr->transientTexture = transientTexture;
116 ptr->transientFrame = ptr->contextInterface->getCurrentFrame(
context);
117 ptr->transientFormat = transientFormat;
119 ptr->acquires.pushBack(ptr->contextInterface->enqueueAcquireTexture(
context, transientTexture));
125 NvFlowTextureVariable_set(
context, ptr,
nullptr, eNvFlowFormat_unknown);
Definition NvFlowArray.h:36
Definition NvFlowContext.h:362
Definition NvFlowContext.h:137
Definition NvFlowTextureVariable.h:32