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