mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-09-17 00:38:12 +00:00

committed by
Ryan C. Gordon

parent
ea9880b760
commit
c0a9d220b9
@@ -4104,7 +4104,7 @@ static VulkanBuffer *VULKAN_INTERNAL_CreateBuffer(
|
|||||||
vulkanUsageFlags |= VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
|
vulkanUsageFlags |= VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer = SDL_malloc(sizeof(VulkanBuffer));
|
buffer = SDL_calloc(1, sizeof(VulkanBuffer));
|
||||||
|
|
||||||
buffer->size = size;
|
buffer->size = size;
|
||||||
buffer->usage = usageFlags;
|
buffer->usage = usageFlags;
|
||||||
@@ -4196,7 +4196,7 @@ static VulkanBufferContainer *VULKAN_INTERNAL_CreateBufferContainer(
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bufferContainer = SDL_malloc(sizeof(VulkanBufferContainer));
|
bufferContainer = SDL_calloc(1, sizeof(VulkanBufferContainer));
|
||||||
|
|
||||||
bufferContainer->activeBuffer = buffer;
|
bufferContainer->activeBuffer = buffer;
|
||||||
buffer->container = bufferContainer;
|
buffer->container = bufferContainer;
|
||||||
@@ -4204,8 +4204,7 @@ static VulkanBufferContainer *VULKAN_INTERNAL_CreateBufferContainer(
|
|||||||
|
|
||||||
bufferContainer->bufferCapacity = 1;
|
bufferContainer->bufferCapacity = 1;
|
||||||
bufferContainer->bufferCount = 1;
|
bufferContainer->bufferCount = 1;
|
||||||
bufferContainer->buffers = SDL_malloc(
|
bufferContainer->buffers = SDL_calloc(bufferContainer->bufferCapacity, sizeof(VulkanBuffer *));
|
||||||
bufferContainer->bufferCapacity * sizeof(VulkanBuffer *));
|
|
||||||
bufferContainer->buffers[0] = bufferContainer->activeBuffer;
|
bufferContainer->buffers[0] = bufferContainer->activeBuffer;
|
||||||
bufferContainer->dedicated = dedicated;
|
bufferContainer->dedicated = dedicated;
|
||||||
bufferContainer->debugName = NULL;
|
bufferContainer->debugName = NULL;
|
||||||
@@ -6801,7 +6800,7 @@ static VulkanUniformBuffer *VULKAN_INTERNAL_CreateUniformBuffer(
|
|||||||
VulkanRenderer *renderer,
|
VulkanRenderer *renderer,
|
||||||
Uint32 size)
|
Uint32 size)
|
||||||
{
|
{
|
||||||
VulkanUniformBuffer *uniformBuffer = SDL_malloc(sizeof(VulkanUniformBuffer));
|
VulkanUniformBuffer *uniformBuffer = SDL_calloc(1, sizeof(VulkanUniformBuffer));
|
||||||
|
|
||||||
uniformBuffer->buffer = VULKAN_INTERNAL_CreateBuffer(
|
uniformBuffer->buffer = VULKAN_INTERNAL_CreateBuffer(
|
||||||
renderer,
|
renderer,
|
||||||
@@ -6928,6 +6927,7 @@ static void VULKAN_INTERNAL_ReleaseBuffer(
|
|||||||
renderer->buffersToDestroyCount += 1;
|
renderer->buffersToDestroyCount += 1;
|
||||||
|
|
||||||
vulkanBuffer->markedForDestroy = 1;
|
vulkanBuffer->markedForDestroy = 1;
|
||||||
|
vulkanBuffer->container = NULL;
|
||||||
|
|
||||||
SDL_UnlockMutex(renderer->disposeLock);
|
SDL_UnlockMutex(renderer->disposeLock);
|
||||||
}
|
}
|
||||||
@@ -6947,6 +6947,7 @@ static void VULKAN_INTERNAL_ReleaseBufferContainer(
|
|||||||
// Containers are just client handles, so we can free immediately
|
// Containers are just client handles, so we can free immediately
|
||||||
if (bufferContainer->debugName != NULL) {
|
if (bufferContainer->debugName != NULL) {
|
||||||
SDL_free(bufferContainer->debugName);
|
SDL_free(bufferContainer->debugName);
|
||||||
|
bufferContainer->debugName = NULL;
|
||||||
}
|
}
|
||||||
SDL_free(bufferContainer->buffers);
|
SDL_free(bufferContainer->buffers);
|
||||||
SDL_free(bufferContainer);
|
SDL_free(bufferContainer);
|
||||||
@@ -10695,6 +10696,10 @@ static bool VULKAN_INTERNAL_DefragmentMemory(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (currentRegion->vulkanBuffer->uniformBufferForDefrag) {
|
||||||
|
newBuffer->uniformBufferForDefrag = currentRegion->vulkanBuffer->uniformBufferForDefrag;
|
||||||
|
}
|
||||||
|
|
||||||
VULKAN_INTERNAL_ReleaseBuffer(renderer, currentRegion->vulkanBuffer);
|
VULKAN_INTERNAL_ReleaseBuffer(renderer, currentRegion->vulkanBuffer);
|
||||||
} else if (!currentRegion->isBuffer && !currentRegion->vulkanTexture->markedForDestroy) {
|
} else if (!currentRegion->isBuffer && !currentRegion->vulkanTexture->markedForDestroy) {
|
||||||
newTexture = VULKAN_INTERNAL_CreateTexture(
|
newTexture = VULKAN_INTERNAL_CreateTexture(
|
||||||
|
Reference in New Issue
Block a user