Permalink
Browse files

Vulkan: Decimate the texture allocator.

Thin3D wasn't calling Begin/End, which lead to leaks eventually and OOM.

Was causing softgpu to crash.
  • Loading branch information...
unknownbrackets committed Dec 24, 2017
1 parent 7f4da9b commit a7b3a1eb96d3a39870e193c17fd5cb0e2c5f0f70
Showing with 7 additions and 5 deletions.
  1. +2 −2 Common/Vulkan/VulkanMemory.cpp
  2. +3 −3 Common/Vulkan/VulkanMemory.h
  3. +2 −0 ext/native/thin3d/thin3d_vulkan.cpp
@@ -157,7 +157,7 @@ void VulkanPushBuffer::Unmap() {
}
VulkanDeviceAllocator::VulkanDeviceAllocator(VulkanContext *vulkan, size_t minSlabSize, size_t maxSlabSize)
: vulkan_(vulkan), lastSlab_(0), minSlabSize_(minSlabSize), maxSlabSize_(maxSlabSize), memoryTypeIndex_(UNDEFINED_MEMORY_TYPE), destroyed_(false) {
: vulkan_(vulkan), minSlabSize_(minSlabSize), maxSlabSize_(maxSlabSize) {
assert((minSlabSize_ & (SLAB_GRAIN_SIZE - 1)) == 0);
}
@@ -290,7 +290,7 @@ int VulkanDeviceAllocator::ComputeUsagePercent() const {
blocksUsed += slabs_[i].usage[j] != 0 ? 1 : 0;
}
}
return 100 * blocksUsed / blockSum;
return blockSum == 0 ? 0 : 100 * blocksUsed / blockSum;
}
void VulkanDeviceAllocator::Free(VkDeviceMemory deviceMemory, size_t offset) {
@@ -190,9 +190,9 @@ class VulkanDeviceAllocator {
VulkanContext *const vulkan_;
std::vector<Slab> slabs_;
size_t lastSlab_;
size_t lastSlab_ = 0;
size_t minSlabSize_;
const size_t maxSlabSize_;
uint32_t memoryTypeIndex_;
bool destroyed_;
uint32_t memoryTypeIndex_ = UNDEFINED_MEMORY_TYPE;
bool destroyed_ = false;
};
@@ -779,6 +779,7 @@ void VKContext::BeginFrame() {
// OK, we now know that nothing is reading from this frame's data pushbuffer,
push_->Reset();
push_->Begin(vulkan_);
allocator_->Begin();
frame.descSets_.clear();
VkResult result = vkResetDescriptorPool(device_, frame.descriptorPool, 0);
@@ -792,6 +793,7 @@ void VKContext::WaitRenderCompletion(Framebuffer *fbo) {
void VKContext::EndFrame() {
// Stop collecting data in the frame's data pushbuffer.
push_->End();
allocator_->End();
renderManager_.Finish();

0 comments on commit a7b3a1e

Please sign in to comment.