forked from MoonsideGames/Refresh
				
			fix UBO descriptor set not being resized
							parent
							
								
									c17ec99c50
								
							
						
					
					
						commit
						0ffa045f78
					
				|  | @ -3314,8 +3314,6 @@ static uint8_t VULKAN_INTERNAL_CreateUniformBuffer( | |||
| ) { | ||||
| 	VulkanResourceAccessType resourceAccessType; | ||||
| 	VkDescriptorSetLayout descriptorSetLayout; | ||||
| 	VkWriteDescriptorSet writeDescriptorSet; | ||||
| 	VkDescriptorBufferInfo descriptorBufferInfo; | ||||
| 
 | ||||
| 	if (bufferPool->type == UNIFORM_BUFFER_VERTEX) | ||||
| 	{ | ||||
|  | @ -3382,31 +3380,6 @@ static uint8_t VULKAN_INTERNAL_CreateUniformBuffer( | |||
| 
 | ||||
| 	bufferPool->descriptorPool.availableDescriptorSetCount -= 1; | ||||
| 
 | ||||
| 	/* Update the descriptor set we just allocated */ | ||||
| 
 | ||||
| 	descriptorBufferInfo.buffer = buffer->vulkanBuffer->buffer; | ||||
| 	descriptorBufferInfo.offset = 0; | ||||
| 	descriptorBufferInfo.range = blockSize; | ||||
| 
 | ||||
| 	writeDescriptorSet.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; | ||||
| 	writeDescriptorSet.pNext = NULL; | ||||
| 	writeDescriptorSet.descriptorCount = 1; | ||||
| 	writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC; | ||||
| 	writeDescriptorSet.dstArrayElement = 0; | ||||
| 	writeDescriptorSet.dstBinding = 0; | ||||
| 	writeDescriptorSet.dstSet = buffer->descriptorSet; | ||||
| 	writeDescriptorSet.pBufferInfo = &descriptorBufferInfo; | ||||
| 	writeDescriptorSet.pImageInfo = NULL; | ||||
| 	writeDescriptorSet.pTexelBufferView = NULL; | ||||
| 
 | ||||
| 	renderer->vkUpdateDescriptorSets( | ||||
| 		renderer->logicalDevice, | ||||
| 		1, | ||||
| 		&writeDescriptorSet, | ||||
| 		0, | ||||
| 		NULL | ||||
| 	); | ||||
| 
 | ||||
| 	if (bufferPool->availableBufferCount >= bufferPool->availableBufferCapacity) | ||||
| 	{ | ||||
| 		bufferPool->availableBufferCapacity *= 2; | ||||
|  | @ -3537,6 +3510,9 @@ static VulkanUniformBuffer* VULKAN_INTERNAL_AcquireUniformBufferFromPool( | |||
| 	VulkanUniformBufferPool *bufferPool, | ||||
| 	VkDeviceSize blockSize | ||||
| ) { | ||||
| 	VkWriteDescriptorSet writeDescriptorSet; | ||||
| 	VkDescriptorBufferInfo descriptorBufferInfo; | ||||
| 
 | ||||
| 	SDL_LockMutex(bufferPool->lock); | ||||
| 
 | ||||
| 	if (bufferPool->availableBufferCount == 0) | ||||
|  | @ -3552,9 +3528,35 @@ static VulkanUniformBuffer* VULKAN_INTERNAL_AcquireUniformBufferFromPool( | |||
| 	VulkanUniformBuffer *uniformBuffer = bufferPool->availableBuffers[bufferPool->availableBufferCount - 1]; | ||||
| 	bufferPool->availableBufferCount -= 1; | ||||
| 
 | ||||
| 	SDL_UnlockMutex(bufferPool->lock); | ||||
| 
 | ||||
| 	uniformBuffer->offset = 0; | ||||
| 
 | ||||
| 	SDL_UnlockMutex(bufferPool->lock); | ||||
| 	/* Update the descriptor set with the correct range */ | ||||
| 
 | ||||
| 	descriptorBufferInfo.buffer = uniformBuffer->vulkanBuffer->buffer; | ||||
| 	descriptorBufferInfo.offset = 0; | ||||
| 	descriptorBufferInfo.range = blockSize; | ||||
| 
 | ||||
| 	writeDescriptorSet.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; | ||||
| 	writeDescriptorSet.pNext = NULL; | ||||
| 	writeDescriptorSet.descriptorCount = 1; | ||||
| 	writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC; | ||||
| 	writeDescriptorSet.dstArrayElement = 0; | ||||
| 	writeDescriptorSet.dstBinding = 0; | ||||
| 	writeDescriptorSet.dstSet = uniformBuffer->descriptorSet; | ||||
| 	writeDescriptorSet.pBufferInfo = &descriptorBufferInfo; | ||||
| 	writeDescriptorSet.pImageInfo = NULL; | ||||
| 	writeDescriptorSet.pTexelBufferView = NULL; | ||||
| 
 | ||||
| 	renderer->vkUpdateDescriptorSets( | ||||
| 		renderer->logicalDevice, | ||||
| 		1, | ||||
| 		&writeDescriptorSet, | ||||
| 		0, | ||||
| 		NULL | ||||
| 	); | ||||
| 
 | ||||
| 	return uniformBuffer; | ||||
| } | ||||
| 
 | ||||
|  | @ -4534,10 +4536,6 @@ static void VULKAN_DestroyDevice( | |||
| 	VULKAN_INTERNAL_DestroyBuffer(renderer, renderer->dummyFragmentUniformBuffer->vulkanBuffer); | ||||
| 	VULKAN_INTERNAL_DestroyBuffer(renderer, renderer->dummyComputeUniformBuffer->vulkanBuffer); | ||||
| 
 | ||||
| 	/* We have to do this twice so the rotation happens correctly */ | ||||
| 	VULKAN_INTERNAL_PostWorkCleanup(renderer); | ||||
| 	VULKAN_INTERNAL_PostWorkCleanup(renderer); | ||||
| 
 | ||||
| 	renderer->vkDestroySemaphore( | ||||
| 		renderer->logicalDevice, | ||||
| 		renderer->transferFinishedSemaphore, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue