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; | 	VulkanResourceAccessType resourceAccessType; | ||||||
| 	VkDescriptorSetLayout descriptorSetLayout; | 	VkDescriptorSetLayout descriptorSetLayout; | ||||||
| 	VkWriteDescriptorSet writeDescriptorSet; |  | ||||||
| 	VkDescriptorBufferInfo descriptorBufferInfo; |  | ||||||
| 
 | 
 | ||||||
| 	if (bufferPool->type == UNIFORM_BUFFER_VERTEX) | 	if (bufferPool->type == UNIFORM_BUFFER_VERTEX) | ||||||
| 	{ | 	{ | ||||||
|  | @ -3382,31 +3380,6 @@ static uint8_t VULKAN_INTERNAL_CreateUniformBuffer( | ||||||
| 
 | 
 | ||||||
| 	bufferPool->descriptorPool.availableDescriptorSetCount -= 1; | 	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) | 	if (bufferPool->availableBufferCount >= bufferPool->availableBufferCapacity) | ||||||
| 	{ | 	{ | ||||||
| 		bufferPool->availableBufferCapacity *= 2; | 		bufferPool->availableBufferCapacity *= 2; | ||||||
|  | @ -3537,6 +3510,9 @@ static VulkanUniformBuffer* VULKAN_INTERNAL_AcquireUniformBufferFromPool( | ||||||
| 	VulkanUniformBufferPool *bufferPool, | 	VulkanUniformBufferPool *bufferPool, | ||||||
| 	VkDeviceSize blockSize | 	VkDeviceSize blockSize | ||||||
| ) { | ) { | ||||||
|  | 	VkWriteDescriptorSet writeDescriptorSet; | ||||||
|  | 	VkDescriptorBufferInfo descriptorBufferInfo; | ||||||
|  | 
 | ||||||
| 	SDL_LockMutex(bufferPool->lock); | 	SDL_LockMutex(bufferPool->lock); | ||||||
| 
 | 
 | ||||||
| 	if (bufferPool->availableBufferCount == 0) | 	if (bufferPool->availableBufferCount == 0) | ||||||
|  | @ -3552,9 +3528,35 @@ static VulkanUniformBuffer* VULKAN_INTERNAL_AcquireUniformBufferFromPool( | ||||||
| 	VulkanUniformBuffer *uniformBuffer = bufferPool->availableBuffers[bufferPool->availableBufferCount - 1]; | 	VulkanUniformBuffer *uniformBuffer = bufferPool->availableBuffers[bufferPool->availableBufferCount - 1]; | ||||||
| 	bufferPool->availableBufferCount -= 1; | 	bufferPool->availableBufferCount -= 1; | ||||||
| 
 | 
 | ||||||
|  | 	SDL_UnlockMutex(bufferPool->lock); | ||||||
|  | 
 | ||||||
| 	uniformBuffer->offset = 0; | 	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; | 	return uniformBuffer; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -4534,10 +4536,6 @@ static void VULKAN_DestroyDevice( | ||||||
| 	VULKAN_INTERNAL_DestroyBuffer(renderer, renderer->dummyFragmentUniformBuffer->vulkanBuffer); | 	VULKAN_INTERNAL_DestroyBuffer(renderer, renderer->dummyFragmentUniformBuffer->vulkanBuffer); | ||||||
| 	VULKAN_INTERNAL_DestroyBuffer(renderer, renderer->dummyComputeUniformBuffer->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->vkDestroySemaphore( | ||||||
| 		renderer->logicalDevice, | 		renderer->logicalDevice, | ||||||
| 		renderer->transferFinishedSemaphore, | 		renderer->transferFinishedSemaphore, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue