| 149 | } |
| 150 | |
| 151 | bool CopyContext::resourceBarrier(const Resource* pResource, Resource::State newState, const ResourceViewInfo* pViewInfo) |
| 152 | { |
| 153 | const Texture* pTexture = dynamic_cast<const Texture*>(pResource); |
| 154 | if (pTexture) |
| 155 | { |
| 156 | bool globalBarrier = pTexture->isStateGlobal(); |
| 157 | if (pViewInfo) |
| 158 | { |
| 159 | globalBarrier = globalBarrier && pViewInfo->firstArraySlice == 0; |
| 160 | globalBarrier = globalBarrier && pViewInfo->mostDetailedMip == 0; |
| 161 | globalBarrier = globalBarrier && pViewInfo->mipCount == pTexture->getMipCount(); |
| 162 | globalBarrier = globalBarrier && pViewInfo->arraySize == pTexture->getArraySize(); |
| 163 | } |
| 164 | |
| 165 | if (globalBarrier) |
| 166 | { |
| 167 | return textureBarrier(pTexture, newState); |
| 168 | } |
| 169 | else |
| 170 | { |
| 171 | return subresourceBarriers(pTexture, newState, pViewInfo); |
| 172 | } |
| 173 | } |
| 174 | else |
| 175 | { |
| 176 | const Buffer* pBuffer = dynamic_cast<const Buffer*>(pResource); |
| 177 | return bufferBarrier(pBuffer, newState); |
| 178 | } |
| 179 | } |
| 180 | |
| 181 | bool CopyContext::subresourceBarriers(const Texture* pTexture, Resource::State newState, const ResourceViewInfo* pViewInfo) |
| 182 | { |
no outgoing calls