| 543 | } |
| 544 | |
| 545 | void RenderContext::resolveSubresource(const ref<Texture>& pSrc, uint32_t srcSubresource, const ref<Texture>& pDst, uint32_t dstSubresource) |
| 546 | { |
| 547 | // TODO it would be better to just use barriers on the subresources. |
| 548 | resourceBarrier(pSrc.get(), Resource::State::ResolveSource); |
| 549 | resourceBarrier(pDst.get(), Resource::State::ResolveDest); |
| 550 | |
| 551 | auto resourceEncoder = getLowLevelData()->getResourceCommandEncoder(); |
| 552 | gfx::SubresourceRange srcRange = {}; |
| 553 | srcRange.baseArrayLayer = pSrc->getSubresourceArraySlice(srcSubresource); |
| 554 | srcRange.layerCount = 1; |
| 555 | srcRange.mipLevel = pSrc->getSubresourceMipLevel(srcSubresource); |
| 556 | srcRange.mipLevelCount = 1; |
| 557 | |
| 558 | gfx::SubresourceRange dstRange = {}; |
| 559 | dstRange.baseArrayLayer = pDst->getSubresourceArraySlice(dstSubresource); |
| 560 | dstRange.layerCount = 1; |
| 561 | dstRange.mipLevel = pDst->getSubresourceMipLevel(dstSubresource); |
| 562 | dstRange.mipLevelCount = 1; |
| 563 | |
| 564 | resourceEncoder->resolveResource( |
| 565 | pSrc->getGfxTextureResource(), |
| 566 | gfx::ResourceState::ResolveSource, |
| 567 | srcRange, |
| 568 | pDst->getGfxTextureResource(), |
| 569 | gfx::ResourceState::ResolveDestination, |
| 570 | dstRange |
| 571 | ); |
| 572 | mCommandsPending = true; |
| 573 | } |
| 574 | |
| 575 | void RenderContext::resolveResource(const ref<Texture>& pSrc, const ref<Texture>& pDst) |
| 576 | { |
nothing calls this directly
no test coverage detected