MCPcopy Create free account
hub / github.com/NVIDIAGameWorks/Falcor / prepareResource

Method prepareResource

Source/Falcor/Core/API/ParameterBlock.cpp:224–248  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

222}
223
224void ParameterBlock::prepareResource(CopyContext* pContext, Resource* pResource, bool isUav)
225{
226 if (!pResource)
227 return;
228
229 // If it's a buffer with a UAV counter, insert a UAV barrier
230 const Buffer* pBuffer = pResource->asBuffer().get();
231 if (isUav && pBuffer && pBuffer->getUAVCounter())
232 {
233 pContext->resourceBarrier(pBuffer->getUAVCounter().get(), Resource::State::UnorderedAccess);
234 pContext->uavBarrier(pBuffer->getUAVCounter().get());
235 }
236
237 bool insertBarrier = true;
238 insertBarrier = (is_set(pResource->getBindFlags(), ResourceBindFlags::AccelerationStructure) == false);
239 if (insertBarrier)
240 {
241 insertBarrier = !pContext->resourceBarrier(pResource, isUav ? Resource::State::UnorderedAccess : Resource::State::ShaderResource);
242 }
243
244 // Insert UAV barrier automatically if the resource is an UAV that is already in UnorderedAccess state.
245 // Otherwise the user would have to insert barriers explicitly between passes accessing UAVs, which is easily forgotten.
246 if (insertBarrier && isUav)
247 pContext->uavBarrier(pResource);
248}
249
250ParameterBlock::~ParameterBlock() {}
251

Callers

nothing calls this directly

Calls 4

asBufferMethod · 0.80
resourceBarrierMethod · 0.80
uavBarrierMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected