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

Method copyResource

Source/Falcor/Core/API/CopyContext.cpp:487–524  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

485}
486
487void CopyContext::copyResource(const Resource* pDst, const Resource* pSrc)
488{
489 // Copy from texture to texture or from buffer to buffer.
490 FALCOR_ASSERT(pDst->getType() == pSrc->getType());
491
492 resourceBarrier(pDst, Resource::State::CopyDest);
493 resourceBarrier(pSrc, Resource::State::CopySource);
494
495 auto resourceEncoder = getLowLevelData()->getResourceCommandEncoder();
496
497 if (pDst->getType() == Resource::Type::Buffer)
498 {
499 const Buffer* pSrcBuffer = static_cast<const Buffer*>(pSrc);
500 const Buffer* pDstBuffer = static_cast<const Buffer*>(pDst);
501
502 FALCOR_ASSERT(pSrcBuffer->getSize() <= pDstBuffer->getSize());
503
504 resourceEncoder->copyBuffer(pDstBuffer->getGfxBufferResource(), 0, pSrcBuffer->getGfxBufferResource(), 0, pSrcBuffer->getSize());
505 }
506 else
507 {
508 const Texture* pSrcTexture = static_cast<const Texture*>(pSrc);
509 const Texture* pDstTexture = static_cast<const Texture*>(pDst);
510 gfx::SubresourceRange subresourceRange = {};
511 resourceEncoder->copyTexture(
512 pDstTexture->getGfxTextureResource(),
513 gfx::ResourceState::CopyDestination,
514 subresourceRange,
515 gfx::ITextureResource::Offset3D(0, 0, 0),
516 pSrcTexture->getGfxTextureResource(),
517 gfx::ResourceState::CopySource,
518 subresourceRange,
519 gfx::ITextureResource::Offset3D(0, 0, 0),
520 gfx::ITextureResource::Extents{0, 0, 0}
521 );
522 }
523 mCommandsPending = true;
524}
525
526void CopyContext::copySubresource(const Texture* pDst, uint32_t dstSubresourceIdx, const Texture* pSrc, uint32_t srcSubresourceIdx)
527{

Callers 15

executeMethod · 0.80
executeMethod · 0.80
executeMethod · 0.80
endFrameMethod · 0.80
generateDataMethod · 0.80
verifyDataMethod · 0.80
executeMethod · 0.80
renderMethod · 0.80
endMethod · 0.80
expandSDFGridTextureMethod · 0.80

Calls 4

getLowLevelDataFunction · 0.85
getTypeMethod · 0.45
getSizeMethod · 0.45

Tested by 6

generateDataMethod · 0.64
verifyDataMethod · 0.64
frameMethod · 0.64
initBufferIndirectFunction · 0.64
readBufferIndirectFunction · 0.64
GPU_TESTFunction · 0.64