Fix use of needsHostReadSync().
MVKImageMemoryBinding::needsHostReadSync() use MVKPipelineBarrier. Removed obsolete MVKResource::needsHostReadSync(), which was no longer being used.
This commit is contained in:
parent
06747095c5
commit
83bbd6e384
@ -86,7 +86,6 @@ public:
|
||||
|
||||
protected:
|
||||
friend class MVKDeviceMemory;
|
||||
using MVKResource::needsHostReadSync;
|
||||
|
||||
void propagateDebugName() override;
|
||||
bool needsHostReadSync(VkPipelineStageFlags srcStageMask,
|
||||
|
@ -119,7 +119,7 @@ protected:
|
||||
void propagateDebugName() override;
|
||||
bool needsHostReadSync(VkPipelineStageFlags srcStageMask,
|
||||
VkPipelineStageFlags dstStageMask,
|
||||
VkMemoryBarrier* pMemoryBarrier) override;
|
||||
MVKPipelineBarrier& barrier);
|
||||
bool shouldFlushHostMemory();
|
||||
VkResult flushToDevice(VkDeviceSize offset, VkDeviceSize size);
|
||||
VkResult pullFromDevice(VkDeviceSize offset, VkDeviceSize size);
|
||||
|
@ -340,7 +340,7 @@ void MVKImageMemoryBinding::applyMemoryBarrier(VkPipelineStageFlags srcStageMask
|
||||
MVKCommandEncoder* cmdEncoder,
|
||||
MVKCommandUse cmdUse) {
|
||||
#if MVK_MACOS
|
||||
if ( needsHostReadSync(srcStageMask, dstStageMask, (VkMemoryBarrier*)&barrier) ) {
|
||||
if ( needsHostReadSync(srcStageMask, dstStageMask, barrier) ) {
|
||||
for(uint8_t planeIndex = beginPlaneIndex(); planeIndex < endPlaneIndex(); planeIndex++) {
|
||||
[cmdEncoder->getMTLBlitEncoder(cmdUse) synchronizeResource: _image->_planes[planeIndex]->_mtlTexture];
|
||||
}
|
||||
@ -358,9 +358,8 @@ void MVKImageMemoryBinding::propagateDebugName() {
|
||||
// texture and host memory for the purpose of the host reading texture memory.
|
||||
bool MVKImageMemoryBinding::needsHostReadSync(VkPipelineStageFlags srcStageMask,
|
||||
VkPipelineStageFlags dstStageMask,
|
||||
VkMemoryBarrier* pMemoryBarrier) {
|
||||
MVKPipelineBarrier& barrier) {
|
||||
#if MVK_MACOS
|
||||
MVKPipelineBarrier& barrier = *(MVKPipelineBarrier*)pMemoryBarrier;
|
||||
return ((barrier.newLayout == VK_IMAGE_LAYOUT_GENERAL) &&
|
||||
mvkIsAnyFlagEnabled(barrier.dstAccessMask, (VK_ACCESS_HOST_READ_BIT | VK_ACCESS_MEMORY_READ_BIT)) &&
|
||||
isMemoryHostAccessible() && !isMemoryHostCoherent());
|
||||
@ -522,7 +521,7 @@ void MVKImage::applyImageMemoryBarrier(VkPipelineStageFlags srcStageMask,
|
||||
MVKImageSubresource* pImgRez = _planes[planeIndex]->getSubresource(mipLvl, layer);
|
||||
if (pImgRez) { pImgRez->layoutState = barrier.newLayout; }
|
||||
#if MVK_MACOS
|
||||
bool needsSync = _planes[planeIndex]->getMemoryBinding()->needsHostReadSync(srcStageMask, dstStageMask, (VkMemoryBarrier*)&barrier);
|
||||
bool needsSync = _planes[planeIndex]->getMemoryBinding()->needsHostReadSync(srcStageMask, dstStageMask, barrier);
|
||||
id<MTLBlitCommandEncoder> mtlBlitEncoder = needsSync ? cmdEncoder->getMTLBlitEncoder(cmdUse) : nil;
|
||||
if (needsSync) { [mtlBlitEncoder synchronizeTexture: _planes[planeIndex]->_mtlTexture slice: layer level: mipLvl]; }
|
||||
#endif
|
||||
|
@ -72,10 +72,6 @@ public:
|
||||
MVKResource(MVKDevice* device) : MVKVulkanAPIDeviceObject(device) {}
|
||||
|
||||
protected:
|
||||
virtual bool needsHostReadSync(VkPipelineStageFlags srcStageMask,
|
||||
VkPipelineStageFlags dstStageMask,
|
||||
VkMemoryBarrier* pMemoryBarrier);
|
||||
|
||||
MVKDeviceMemory* _deviceMemory = nullptr;
|
||||
VkDeviceSize _deviceMemoryOffset = 0;
|
||||
VkDeviceSize _byteCount = 0;
|
||||
|
@ -34,18 +34,3 @@ VkResult MVKResource::bindDeviceMemory(MVKDeviceMemory* mvkMem, VkDeviceSize mem
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
// Returns whether the specified global memory barrier requires a sync between this
|
||||
// texture and host memory for the purpose of the host reading texture memory.
|
||||
bool MVKResource::needsHostReadSync(VkPipelineStageFlags srcStageMask,
|
||||
VkPipelineStageFlags dstStageMask,
|
||||
VkMemoryBarrier* pMemoryBarrier) {
|
||||
#if MVK_IOS
|
||||
return false;
|
||||
#endif
|
||||
#if MVK_MACOS
|
||||
return (mvkIsAnyFlagEnabled(dstStageMask, (VK_PIPELINE_STAGE_HOST_BIT)) &&
|
||||
mvkIsAnyFlagEnabled(pMemoryBarrier->dstAccessMask, (VK_ACCESS_HOST_READ_BIT)) &&
|
||||
isMemoryHostAccessible() && !isMemoryHostCoherent());
|
||||
#endif
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user