some uniform buffer fixes
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
5c47f98160
commit
4ad948aba4
|
@ -3326,6 +3326,7 @@ static void VULKAN_INTERNAL_CreateUniformBuffer(
|
||||||
}
|
}
|
||||||
|
|
||||||
VulkanUniformBuffer *buffer = SDL_malloc(sizeof(VulkanUniformBuffer));
|
VulkanUniformBuffer *buffer = SDL_malloc(sizeof(VulkanUniformBuffer));
|
||||||
|
buffer->pool = bufferPool;
|
||||||
|
|
||||||
buffer->vulkanBuffer = VULKAN_INTERNAL_CreateBuffer(
|
buffer->vulkanBuffer = VULKAN_INTERNAL_CreateBuffer(
|
||||||
renderer,
|
renderer,
|
||||||
|
@ -4456,8 +4457,9 @@ static void VULKAN_INTERNAL_EndCommandBuffer(
|
||||||
VkResult result;
|
VkResult result;
|
||||||
|
|
||||||
/* Compute pipelines are not explicitly unbound so we have to clean up here */
|
/* Compute pipelines are not explicitly unbound so we have to clean up here */
|
||||||
if (commandBuffer->computeUniformBuffer != NULL)
|
if ( commandBuffer->computeUniformBuffer != renderer->dummyComputeUniformBuffer &&
|
||||||
{
|
commandBuffer->computeUniformBuffer != NULL
|
||||||
|
) {
|
||||||
VULKAN_INTERNAL_BindUniformBuffer(commandBuffer->computeUniformBuffer);
|
VULKAN_INTERNAL_BindUniformBuffer(commandBuffer->computeUniformBuffer);
|
||||||
}
|
}
|
||||||
commandBuffer->computeUniformBuffer = NULL;
|
commandBuffer->computeUniformBuffer = NULL;
|
||||||
|
@ -7803,14 +7805,16 @@ static void VULKAN_EndRenderPass(
|
||||||
vulkanCommandBuffer->commandBuffer
|
vulkanCommandBuffer->commandBuffer
|
||||||
);
|
);
|
||||||
|
|
||||||
if (vulkanCommandBuffer->vertexUniformBuffer != NULL)
|
if ( vulkanCommandBuffer->vertexUniformBuffer != renderer->dummyVertexUniformBuffer &&
|
||||||
{
|
vulkanCommandBuffer->vertexUniformBuffer != NULL
|
||||||
|
) {
|
||||||
VULKAN_INTERNAL_BindUniformBuffer(vulkanCommandBuffer->vertexUniformBuffer);
|
VULKAN_INTERNAL_BindUniformBuffer(vulkanCommandBuffer->vertexUniformBuffer);
|
||||||
}
|
}
|
||||||
vulkanCommandBuffer->vertexUniformBuffer = NULL;
|
vulkanCommandBuffer->vertexUniformBuffer = NULL;
|
||||||
|
|
||||||
if (vulkanCommandBuffer->fragmentUniformBuffer != NULL)
|
if ( vulkanCommandBuffer->fragmentUniformBuffer != renderer->dummyFragmentUniformBuffer &&
|
||||||
{
|
vulkanCommandBuffer->fragmentUniformBuffer != NULL
|
||||||
|
) {
|
||||||
VULKAN_INTERNAL_BindUniformBuffer(vulkanCommandBuffer->fragmentUniformBuffer);
|
VULKAN_INTERNAL_BindUniformBuffer(vulkanCommandBuffer->fragmentUniformBuffer);
|
||||||
}
|
}
|
||||||
vulkanCommandBuffer->fragmentUniformBuffer = NULL;
|
vulkanCommandBuffer->fragmentUniformBuffer = NULL;
|
||||||
|
@ -7880,8 +7884,9 @@ static void VULKAN_BindGraphicsPipeline(
|
||||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
||||||
VulkanGraphicsPipeline* pipeline = (VulkanGraphicsPipeline*) graphicsPipeline;
|
VulkanGraphicsPipeline* pipeline = (VulkanGraphicsPipeline*) graphicsPipeline;
|
||||||
|
|
||||||
if (vulkanCommandBuffer->vertexUniformBuffer != renderer->dummyVertexUniformBuffer)
|
if ( vulkanCommandBuffer->vertexUniformBuffer != renderer->dummyVertexUniformBuffer &&
|
||||||
{
|
vulkanCommandBuffer->vertexUniformBuffer != NULL
|
||||||
|
) {
|
||||||
VULKAN_INTERNAL_BindUniformBuffer(vulkanCommandBuffer->vertexUniformBuffer);
|
VULKAN_INTERNAL_BindUniformBuffer(vulkanCommandBuffer->vertexUniformBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7898,8 +7903,9 @@ static void VULKAN_BindGraphicsPipeline(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vulkanCommandBuffer->fragmentUniformBuffer != renderer->dummyFragmentUniformBuffer)
|
if ( vulkanCommandBuffer->fragmentUniformBuffer != renderer->dummyFragmentUniformBuffer &&
|
||||||
{
|
vulkanCommandBuffer->fragmentUniformBuffer != NULL
|
||||||
|
) {
|
||||||
VULKAN_INTERNAL_BindUniformBuffer(vulkanCommandBuffer->fragmentUniformBuffer);
|
VULKAN_INTERNAL_BindUniformBuffer(vulkanCommandBuffer->fragmentUniformBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8036,8 +8042,9 @@ static void VULKAN_BindComputePipeline(
|
||||||
vulkanCommandBuffer->imageDescriptorSet = renderer->emptyComputeImageDescriptorSet;
|
vulkanCommandBuffer->imageDescriptorSet = renderer->emptyComputeImageDescriptorSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vulkanCommandBuffer->computeUniformBuffer != NULL)
|
if ( vulkanCommandBuffer->computeUniformBuffer != renderer->dummyComputeUniformBuffer &&
|
||||||
{
|
vulkanCommandBuffer->computeUniformBuffer != NULL
|
||||||
|
) {
|
||||||
VULKAN_INTERNAL_BindUniformBuffer(vulkanCommandBuffer->computeUniformBuffer);
|
VULKAN_INTERNAL_BindUniformBuffer(vulkanCommandBuffer->computeUniformBuffer);
|
||||||
}
|
}
|
||||||
vulkanCommandBuffer->computeUniformBuffer = NULL;
|
vulkanCommandBuffer->computeUniformBuffer = NULL;
|
||||||
|
@ -9301,7 +9308,7 @@ static Refresh_Device* VULKAN_INTERNAL_CreateDevice(
|
||||||
|
|
||||||
/* Variables: UBO Creation */
|
/* Variables: UBO Creation */
|
||||||
VkDescriptorPoolCreateInfo defaultDescriptorPoolInfo;
|
VkDescriptorPoolCreateInfo defaultDescriptorPoolInfo;
|
||||||
VkDescriptorPoolSize poolSizes[3];
|
VkDescriptorPoolSize poolSizes[4];
|
||||||
VkDescriptorSetAllocateInfo descriptorAllocateInfo;
|
VkDescriptorSetAllocateInfo descriptorAllocateInfo;
|
||||||
|
|
||||||
result = (Refresh_Device*) SDL_malloc(sizeof(Refresh_Device));
|
result = (Refresh_Device*) SDL_malloc(sizeof(Refresh_Device));
|
||||||
|
@ -9560,11 +9567,14 @@ static Refresh_Device* VULKAN_INTERNAL_CreateDevice(
|
||||||
poolSizes[2].descriptorCount = 1;
|
poolSizes[2].descriptorCount = 1;
|
||||||
poolSizes[2].type = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
|
poolSizes[2].type = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
|
||||||
|
|
||||||
|
poolSizes[3].descriptorCount = 3;
|
||||||
|
poolSizes[3].type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
|
||||||
|
|
||||||
defaultDescriptorPoolInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
|
defaultDescriptorPoolInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
|
||||||
defaultDescriptorPoolInfo.pNext = NULL;
|
defaultDescriptorPoolInfo.pNext = NULL;
|
||||||
defaultDescriptorPoolInfo.flags = 0;
|
defaultDescriptorPoolInfo.flags = 0;
|
||||||
defaultDescriptorPoolInfo.maxSets = 2 + 1 + 1;
|
defaultDescriptorPoolInfo.maxSets = 2 + 1 + 1 + 3;
|
||||||
defaultDescriptorPoolInfo.poolSizeCount = 3;
|
defaultDescriptorPoolInfo.poolSizeCount = 4;
|
||||||
defaultDescriptorPoolInfo.pPoolSizes = poolSizes;
|
defaultDescriptorPoolInfo.pPoolSizes = poolSizes;
|
||||||
|
|
||||||
renderer->vkCreateDescriptorPool(
|
renderer->vkCreateDescriptorPool(
|
||||||
|
@ -9610,37 +9620,6 @@ static Refresh_Device* VULKAN_INTERNAL_CreateDevice(
|
||||||
&renderer->emptyComputeImageDescriptorSet
|
&renderer->emptyComputeImageDescriptorSet
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Initialize uniform buffer pools */
|
|
||||||
renderer->vertexUniformBufferPool = VULKAN_INTERNAL_CreateUniformBufferPool(
|
|
||||||
renderer,
|
|
||||||
UNIFORM_BUFFER_VERTEX
|
|
||||||
);
|
|
||||||
|
|
||||||
renderer->fragmentUniformBufferPool = VULKAN_INTERNAL_CreateUniformBufferPool(
|
|
||||||
renderer,
|
|
||||||
UNIFORM_BUFFER_FRAGMENT
|
|
||||||
);
|
|
||||||
|
|
||||||
renderer->computeUniformBufferPool = VULKAN_INTERNAL_CreateUniformBufferPool(
|
|
||||||
renderer,
|
|
||||||
UNIFORM_BUFFER_COMPUTE
|
|
||||||
);
|
|
||||||
|
|
||||||
/* Initialize buffer space */
|
|
||||||
|
|
||||||
renderer->buffersInUseCapacity = 32;
|
|
||||||
renderer->buffersInUseCount = 0;
|
|
||||||
renderer->buffersInUse = (VulkanBuffer**)SDL_malloc(
|
|
||||||
sizeof(VulkanBuffer*) * renderer->buffersInUseCapacity
|
|
||||||
);
|
|
||||||
|
|
||||||
renderer->submittedBufferCapacity = 32;
|
|
||||||
renderer->submittedBufferCount = 0;
|
|
||||||
renderer->submittedBuffers = (VulkanBuffer**)SDL_malloc(
|
|
||||||
sizeof(VulkanBuffer*) * renderer->submittedBufferCapacity
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
/* Dummy Uniform Buffers */
|
/* Dummy Uniform Buffers */
|
||||||
|
|
||||||
renderer->dummyVertexUniformBuffer = VULKAN_INTERNAL_CreateDummyUniformBuffer(
|
renderer->dummyVertexUniformBuffer = VULKAN_INTERNAL_CreateDummyUniformBuffer(
|
||||||
|
@ -9676,6 +9655,37 @@ static Refresh_Device* VULKAN_INTERNAL_CreateDevice(
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Initialize uniform buffer pools */
|
||||||
|
|
||||||
|
renderer->vertexUniformBufferPool = VULKAN_INTERNAL_CreateUniformBufferPool(
|
||||||
|
renderer,
|
||||||
|
UNIFORM_BUFFER_VERTEX
|
||||||
|
);
|
||||||
|
|
||||||
|
renderer->fragmentUniformBufferPool = VULKAN_INTERNAL_CreateUniformBufferPool(
|
||||||
|
renderer,
|
||||||
|
UNIFORM_BUFFER_FRAGMENT
|
||||||
|
);
|
||||||
|
|
||||||
|
renderer->computeUniformBufferPool = VULKAN_INTERNAL_CreateUniformBufferPool(
|
||||||
|
renderer,
|
||||||
|
UNIFORM_BUFFER_COMPUTE
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Initialize buffer space */
|
||||||
|
|
||||||
|
renderer->buffersInUseCapacity = 32;
|
||||||
|
renderer->buffersInUseCount = 0;
|
||||||
|
renderer->buffersInUse = (VulkanBuffer**)SDL_malloc(
|
||||||
|
sizeof(VulkanBuffer*) * renderer->buffersInUseCapacity
|
||||||
|
);
|
||||||
|
|
||||||
|
renderer->submittedBufferCapacity = 32;
|
||||||
|
renderer->submittedBufferCount = 0;
|
||||||
|
renderer->submittedBuffers = (VulkanBuffer**)SDL_malloc(
|
||||||
|
sizeof(VulkanBuffer*) * renderer->submittedBufferCapacity
|
||||||
|
);
|
||||||
|
|
||||||
/* Initialize caches */
|
/* Initialize caches */
|
||||||
|
|
||||||
for (i = 0; i < NUM_COMMAND_POOL_BUCKETS; i += 1)
|
for (i = 0; i < NUM_COMMAND_POOL_BUCKETS; i += 1)
|
||||||
|
|
Loading…
Reference in New Issue