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

Method copySubresourceRegion

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

Source from the content-addressed store, hash-verified

586}
587
588void CopyContext::copySubresourceRegion(
589 const Texture* pDst,
590 uint32_t dstSubresourceIdx,
591 const Texture* pSrc,
592 uint32_t srcSubresourceIdx,
593 const uint3& dstOffset,
594 const uint3& srcOffset,
595 const uint3& size
596)
597{
598 resourceBarrier(pDst, Resource::State::CopyDest);
599 resourceBarrier(pSrc, Resource::State::CopySource);
600
601 gfx::SubresourceRange dstSubresource = {};
602 dstSubresource.baseArrayLayer = pDst->getSubresourceArraySlice(dstSubresourceIdx);
603 dstSubresource.layerCount = 1;
604 dstSubresource.mipLevel = pDst->getSubresourceMipLevel(dstSubresourceIdx);
605 dstSubresource.mipLevelCount = 1;
606
607 gfx::SubresourceRange srcSubresource = {};
608 srcSubresource.baseArrayLayer = pSrc->getSubresourceArraySlice(srcSubresourceIdx);
609 srcSubresource.layerCount = 1;
610 srcSubresource.mipLevel = pSrc->getSubresourceMipLevel(srcSubresourceIdx);
611 srcSubresource.mipLevelCount = 1;
612
613 gfx::ITextureResource::Extents copySize = {(int)size.x, (int)size.y, (int)size.z};
614
615 if (size.x == uint(-1))
616 {
617 copySize.width = pSrc->getWidth(srcSubresource.mipLevel) - srcOffset.x;
618 copySize.height = pSrc->getHeight(srcSubresource.mipLevel) - srcOffset.y;
619 copySize.depth = pSrc->getDepth(srcSubresource.mipLevel) - srcOffset.z;
620 }
621
622 auto resourceEncoder = getLowLevelData()->getResourceCommandEncoder();
623 resourceEncoder->copyTexture(
624 pDst->getGfxTextureResource(),
625 gfx::ResourceState::CopyDestination,
626 dstSubresource,
627 gfx::ITextureResource::Offset3D(dstOffset.x, dstOffset.y, dstOffset.z),
628 pSrc->getGfxTextureResource(),
629 gfx::ResourceState::CopySource,
630 srcSubresource,
631 gfx::ITextureResource::Offset3D(srcOffset.x, srcOffset.y, srcOffset.z),
632 copySize
633 );
634 mCommandsPending = true;
635}
636
637void CopyContext::addAftermathMarker(std::string_view name)
638{

Callers 1

Calls 4

getLowLevelDataFunction · 0.85
getWidthMethod · 0.80
getHeightMethod · 0.80

Tested by

no test coverage detected