| Index: src/gpu/vk/GrVkMemory.cpp
 | 
| diff --git a/src/gpu/vk/GrVkMemory.cpp b/src/gpu/vk/GrVkMemory.cpp
 | 
| index 407a2c1ca3a30de48ce1bd4e98ecaa155d07343e..984e3271b0716df82d9c6a22912b9a783af609e4 100644
 | 
| --- a/src/gpu/vk/GrVkMemory.cpp
 | 
| +++ b/src/gpu/vk/GrVkMemory.cpp
 | 
| @@ -375,11 +375,11 @@ void GrVkSubHeap::free(const GrVkAlloc& alloc) {
 | 
|  
 | 
|      // find the block right after this allocation
 | 
|      FreeList::Iter iter = fFreeList.headIter();
 | 
| +    FreeList::Iter prev;
 | 
|      while (iter.get() && iter.get()->fOffset < alloc.fOffset) {
 | 
| +        prev = iter;
 | 
|          iter.next();
 | 
|      } 
 | 
| -    FreeList::Iter prev = iter;
 | 
| -    prev.prev();
 | 
|      // we have four cases:
 | 
|      // we exactly follow the previous one
 | 
|      Block* block;
 | 
| @@ -446,7 +446,7 @@ bool GrVkHeap::subAlloc(VkDeviceSize size, VkDeviceSize alignment,
 | 
|      for (auto i = 0; i < fSubHeaps.count(); ++i) {
 | 
|          if (fSubHeaps[i]->memoryTypeIndex() == memoryTypeIndex) {
 | 
|              VkDeviceSize heapSize = fSubHeaps[i]->largestBlockSize();
 | 
| -            if (heapSize > alignedSize && heapSize < bestFitSize) {
 | 
| +            if (heapSize >= alignedSize && heapSize < bestFitSize) {
 | 
|                  bestFitIndex = i;
 | 
|                  bestFitSize = heapSize;
 | 
|              }
 | 
| @@ -484,7 +484,7 @@ bool GrVkHeap::singleAlloc(VkDeviceSize size, VkDeviceSize alignment,
 | 
|      for (auto i = 0; i < fSubHeaps.count(); ++i) {
 | 
|          if (fSubHeaps[i]->memoryTypeIndex() == memoryTypeIndex && fSubHeaps[i]->unallocated()) {
 | 
|              VkDeviceSize heapSize = fSubHeaps[i]->size();
 | 
| -            if (heapSize > alignedSize && heapSize < bestFitSize) {
 | 
| +            if (heapSize >= alignedSize && heapSize < bestFitSize) {
 | 
|                  bestFitIndex = i;
 | 
|                  bestFitSize = heapSize;
 | 
|              }
 | 
| 
 |