Fix uniform buffers not tracking correctly
							parent
							
								
									a15e26b124
								
							
						
					
					
						commit
						54a8ff122c
					
				|  | @ -719,7 +719,7 @@ typedef struct VulkanUniformBufferPool VulkanUniformBufferPool; | ||||||
| typedef struct VulkanUniformBuffer | typedef struct VulkanUniformBuffer | ||||||
| { | { | ||||||
| 	VulkanUniformBufferPool *pool; | 	VulkanUniformBufferPool *pool; | ||||||
| 	VulkanBuffer *vulkanBuffer; | 	VulkanBufferContainer *vulkanBufferContainer; /* use container to avoid defrag issues */ | ||||||
| 	VkDeviceSize offset; | 	VkDeviceSize offset; | ||||||
| 	VkDescriptorSet descriptorSet; | 	VkDescriptorSet descriptorSet; | ||||||
| } VulkanUniformBuffer; | } VulkanUniformBuffer; | ||||||
|  | @ -2398,12 +2398,6 @@ static uint8_t VULKAN_INTERNAL_FindMemoryType( | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	Refresh_LogWarn( |  | ||||||
| 		"Failed to find memory type %X, required %X, ignored %X", |  | ||||||
| 		typeFilter, |  | ||||||
| 		requiredProperties, |  | ||||||
| 		ignoredProperties |  | ||||||
| 	); |  | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -2587,7 +2581,6 @@ static uint8_t VULKAN_INTERNAL_AllocateMemory( | ||||||
| 
 | 
 | ||||||
| 		SDL_free(allocation); | 		SDL_free(allocation); | ||||||
| 
 | 
 | ||||||
| 		Refresh_LogWarn("vkAllocateMemory: %s", VkErrorMessages(result)); |  | ||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -2821,7 +2814,6 @@ static uint8_t VULKAN_INTERNAL_BindResourceMemory( | ||||||
| 		SDL_UnlockMutex(renderer->allocatorLock); | 		SDL_UnlockMutex(renderer->allocatorLock); | ||||||
| 
 | 
 | ||||||
| 		/* Responsibility of the caller to handle being out of memory */ | 		/* Responsibility of the caller to handle being out of memory */ | ||||||
| 		Refresh_LogWarn("Failed to allocate memory!"); |  | ||||||
| 		return 2; | 		return 2; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -4221,6 +4213,7 @@ static VulkanUniformBufferPool* VULKAN_INTERNAL_CreateUniformBufferPool( | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void VULKAN_INTERNAL_BindUniformBuffer( | static void VULKAN_INTERNAL_BindUniformBuffer( | ||||||
|  | 	VulkanRenderer *renderer, | ||||||
| 	VulkanCommandBuffer *commandBuffer, | 	VulkanCommandBuffer *commandBuffer, | ||||||
| 	VulkanUniformBuffer *uniformBuffer | 	VulkanUniformBuffer *uniformBuffer | ||||||
| ) { | ) { | ||||||
|  | @ -4235,6 +4228,47 @@ static void VULKAN_INTERNAL_BindUniformBuffer( | ||||||
| 
 | 
 | ||||||
| 	commandBuffer->boundUniformBuffers[commandBuffer->boundUniformBufferCount] = uniformBuffer; | 	commandBuffer->boundUniformBuffers[commandBuffer->boundUniformBufferCount] = uniformBuffer; | ||||||
| 	commandBuffer->boundUniformBufferCount += 1; | 	commandBuffer->boundUniformBufferCount += 1; | ||||||
|  | 
 | ||||||
|  | 	VULKAN_INTERNAL_TrackBuffer( | ||||||
|  | 		renderer, | ||||||
|  | 		commandBuffer, | ||||||
|  | 		uniformBuffer->vulkanBufferContainer->vulkanBuffer | ||||||
|  | 	); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* Buffer indirection so we can cleanly defrag */ | ||||||
|  | static VulkanBufferContainer* VULKAN_INTERNAL_CreateBufferContainer( | ||||||
|  | 	VulkanRenderer *renderer, | ||||||
|  | 	uint32_t sizeInBytes, | ||||||
|  | 	VulkanResourceAccessType resourceAccessType, | ||||||
|  | 	VkBufferUsageFlags usageFlags | ||||||
|  | ) { | ||||||
|  | 	VulkanBufferContainer* bufferContainer; | ||||||
|  | 	VulkanBuffer* buffer; | ||||||
|  | 
 | ||||||
|  | 	/* always set transfer bits so we can defrag */ | ||||||
|  | 	usageFlags |= VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT; | ||||||
|  | 
 | ||||||
|  | 	buffer = VULKAN_INTERNAL_CreateBuffer( | ||||||
|  | 		renderer, | ||||||
|  | 		sizeInBytes, | ||||||
|  | 		resourceAccessType, | ||||||
|  | 		usageFlags, | ||||||
|  | 		1, | ||||||
|  | 		0 | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	if (buffer == NULL) | ||||||
|  | 	{ | ||||||
|  | 		Refresh_LogError("Failed to create buffer!"); | ||||||
|  | 		return NULL; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	bufferContainer = SDL_malloc(sizeof(VulkanBufferContainer)); | ||||||
|  | 	bufferContainer->vulkanBuffer = buffer; | ||||||
|  | 	buffer->container = bufferContainer; | ||||||
|  | 
 | ||||||
|  | 	return (VulkanBufferContainer*) bufferContainer; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static uint8_t VULKAN_INTERNAL_CreateUniformBuffer( | static uint8_t VULKAN_INTERNAL_CreateUniformBuffer( | ||||||
|  | @ -4265,25 +4299,22 @@ static uint8_t VULKAN_INTERNAL_CreateUniformBuffer( | ||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	VulkanUniformBuffer *buffer = SDL_malloc(sizeof(VulkanUniformBuffer)); | 	VulkanUniformBuffer *uniformBuffer = SDL_malloc(sizeof(VulkanUniformBuffer)); | ||||||
| 	buffer->pool = bufferPool; | 	uniformBuffer->pool = bufferPool; | ||||||
| 
 | 	uniformBuffer->vulkanBufferContainer = VULKAN_INTERNAL_CreateBufferContainer( | ||||||
| 	buffer->vulkanBuffer = VULKAN_INTERNAL_CreateBuffer( |  | ||||||
| 		renderer, | 		renderer, | ||||||
| 		UBO_BUFFER_SIZE, | 		UBO_BUFFER_SIZE, | ||||||
| 		resourceAccessType, | 		resourceAccessType, | ||||||
| 		VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, | 		VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | ||||||
| 		0, |  | ||||||
| 		0 |  | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	if (buffer->vulkanBuffer == NULL) | 	if (uniformBuffer->vulkanBufferContainer == NULL) | ||||||
| 	{ | 	{ | ||||||
| 		Refresh_LogError("Failed to create buffer for uniform buffer!"); | 		Refresh_LogError("Failed to create buffer for uniform buffer!"); | ||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	buffer->offset = 0; | 	uniformBuffer->offset = 0; | ||||||
| 
 | 
 | ||||||
| 	/* Allocate a descriptor set for the uniform buffer */ | 	/* Allocate a descriptor set for the uniform buffer */ | ||||||
| 
 | 
 | ||||||
|  | @ -4303,7 +4334,7 @@ static uint8_t VULKAN_INTERNAL_CreateUniformBuffer( | ||||||
| 		bufferPool->descriptorPool.descriptorPools[bufferPool->descriptorPool.descriptorPoolCount - 1], | 		bufferPool->descriptorPool.descriptorPools[bufferPool->descriptorPool.descriptorPoolCount - 1], | ||||||
| 		descriptorSetLayout, | 		descriptorSetLayout, | ||||||
| 		1, | 		1, | ||||||
| 		&buffer->descriptorSet | 		&uniformBuffer->descriptorSet | ||||||
| 	)) { | 	)) { | ||||||
| 		Refresh_LogError("Failed to allocate uniform descriptor set!"); | 		Refresh_LogError("Failed to allocate uniform descriptor set!"); | ||||||
| 		return 0; | 		return 0; | ||||||
|  | @ -4321,7 +4352,7 @@ static uint8_t VULKAN_INTERNAL_CreateUniformBuffer( | ||||||
| 		); | 		); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	bufferPool->availableBuffers[bufferPool->availableBufferCount] = buffer; | 	bufferPool->availableBuffers[bufferPool->availableBufferCount] = uniformBuffer; | ||||||
| 	bufferPool->availableBufferCount += 1; | 	bufferPool->availableBufferCount += 1; | ||||||
| 
 | 
 | ||||||
| 	return 1; | 	return 1; | ||||||
|  | @ -4357,17 +4388,16 @@ static VulkanUniformBuffer* VULKAN_INTERNAL_CreateDummyUniformBuffer( | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	VulkanUniformBuffer *buffer = SDL_malloc(sizeof(VulkanUniformBuffer)); | 	VulkanUniformBuffer *uniformBuffer = SDL_malloc(sizeof(VulkanUniformBuffer)); | ||||||
| 
 | 	uniformBuffer->pool = NULL; | ||||||
| 	buffer->vulkanBuffer = VULKAN_INTERNAL_CreateBuffer( | 	uniformBuffer->vulkanBufferContainer = VULKAN_INTERNAL_CreateBufferContainer( | ||||||
| 		renderer, | 		renderer, | ||||||
| 		UBO_BUFFER_SIZE, | 		UBO_BUFFER_SIZE, | ||||||
| 		resourceAccessType, | 		resourceAccessType, | ||||||
| 		VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, | 		VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | ||||||
| 		0, |  | ||||||
| 		0 |  | ||||||
| 	); | 	); | ||||||
| 	buffer->offset = 0; | 
 | ||||||
|  | 	uniformBuffer->offset = 0; | ||||||
| 
 | 
 | ||||||
| 	/* Allocate a descriptor set for the uniform buffer */ | 	/* Allocate a descriptor set for the uniform buffer */ | ||||||
| 
 | 
 | ||||||
|  | @ -4376,12 +4406,12 @@ static VulkanUniformBuffer* VULKAN_INTERNAL_CreateDummyUniformBuffer( | ||||||
| 		renderer->defaultDescriptorPool, | 		renderer->defaultDescriptorPool, | ||||||
| 		descriptorSetLayout, | 		descriptorSetLayout, | ||||||
| 		1, | 		1, | ||||||
| 		&buffer->descriptorSet | 		&uniformBuffer->descriptorSet | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	/* Update the descriptor set for the first and last time! */ | 	/* Update the descriptor set for the first and last time! */ | ||||||
| 
 | 
 | ||||||
| 	descriptorBufferInfo.buffer = buffer->vulkanBuffer->buffer; | 	descriptorBufferInfo.buffer = uniformBuffer->vulkanBufferContainer->vulkanBuffer->buffer; | ||||||
| 	descriptorBufferInfo.offset = 0; | 	descriptorBufferInfo.offset = 0; | ||||||
| 	descriptorBufferInfo.range = VK_WHOLE_SIZE; | 	descriptorBufferInfo.range = VK_WHOLE_SIZE; | ||||||
| 
 | 
 | ||||||
|  | @ -4391,7 +4421,7 @@ static VulkanUniformBuffer* VULKAN_INTERNAL_CreateDummyUniformBuffer( | ||||||
| 	writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC; | 	writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC; | ||||||
| 	writeDescriptorSet.dstArrayElement = 0; | 	writeDescriptorSet.dstArrayElement = 0; | ||||||
| 	writeDescriptorSet.dstBinding = 0; | 	writeDescriptorSet.dstBinding = 0; | ||||||
| 	writeDescriptorSet.dstSet = buffer->descriptorSet; | 	writeDescriptorSet.dstSet = uniformBuffer->descriptorSet; | ||||||
| 	writeDescriptorSet.pBufferInfo = &descriptorBufferInfo; | 	writeDescriptorSet.pBufferInfo = &descriptorBufferInfo; | ||||||
| 	writeDescriptorSet.pImageInfo = NULL; | 	writeDescriptorSet.pImageInfo = NULL; | ||||||
| 	writeDescriptorSet.pTexelBufferView = NULL; | 	writeDescriptorSet.pTexelBufferView = NULL; | ||||||
|  | @ -4404,9 +4434,9 @@ static VulkanUniformBuffer* VULKAN_INTERNAL_CreateDummyUniformBuffer( | ||||||
| 		NULL | 		NULL | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	buffer->pool = NULL; /* No pool because this is a dummy */ | 	uniformBuffer->pool = NULL; /* No pool because this is a dummy */ | ||||||
| 
 | 
 | ||||||
| 	return buffer; | 	return uniformBuffer; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void VULKAN_INTERNAL_DestroyUniformBufferPool( | static void VULKAN_INTERNAL_DestroyUniformBufferPool( | ||||||
|  | @ -4428,7 +4458,8 @@ static void VULKAN_INTERNAL_DestroyUniformBufferPool( | ||||||
| 	/* This is always destroyed after submissions, so all buffers are available */ | 	/* This is always destroyed after submissions, so all buffers are available */ | ||||||
| 	for (i = 0; i < uniformBufferPool->availableBufferCount; i += 1) | 	for (i = 0; i < uniformBufferPool->availableBufferCount; i += 1) | ||||||
| 	{ | 	{ | ||||||
| 		VULKAN_INTERNAL_DestroyBuffer(renderer, uniformBufferPool->availableBuffers[i]->vulkanBuffer); | 		VULKAN_INTERNAL_DestroyBuffer(renderer, uniformBufferPool->availableBuffers[i]->vulkanBufferContainer->vulkanBuffer); | ||||||
|  | 		SDL_free(uniformBufferPool->availableBuffers[i]->vulkanBufferContainer); | ||||||
| 		SDL_free(uniformBufferPool->availableBuffers[i]); | 		SDL_free(uniformBufferPool->availableBuffers[i]); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -4466,7 +4497,7 @@ static VulkanUniformBuffer* VULKAN_INTERNAL_AcquireUniformBufferFromPool( | ||||||
| 
 | 
 | ||||||
| 	/* Update the descriptor set with the correct range */ | 	/* Update the descriptor set with the correct range */ | ||||||
| 
 | 
 | ||||||
| 	descriptorBufferInfo.buffer = uniformBuffer->vulkanBuffer->buffer; | 	descriptorBufferInfo.buffer = uniformBuffer->vulkanBufferContainer->vulkanBuffer->buffer; | ||||||
| 	descriptorBufferInfo.offset = 0; | 	descriptorBufferInfo.offset = 0; | ||||||
| 	descriptorBufferInfo.range = blockSize; | 	descriptorBufferInfo.range = blockSize; | ||||||
| 
 | 
 | ||||||
|  | @ -5106,6 +5137,7 @@ static void VULKAN_INTERNAL_EndCommandBuffer( | ||||||
| 		commandBuffer->computeUniformBuffer != NULL | 		commandBuffer->computeUniformBuffer != NULL | ||||||
| 	) { | 	) { | ||||||
| 		VULKAN_INTERNAL_BindUniformBuffer( | 		VULKAN_INTERNAL_BindUniformBuffer( | ||||||
|  | 			renderer, | ||||||
| 			commandBuffer, | 			commandBuffer, | ||||||
| 			commandBuffer->computeUniformBuffer | 			commandBuffer->computeUniformBuffer | ||||||
| 		); | 		); | ||||||
|  | @ -5146,9 +5178,13 @@ static void VULKAN_DestroyDevice( | ||||||
| 
 | 
 | ||||||
| 	SDL_free(renderer->submittedCommandBuffers); | 	SDL_free(renderer->submittedCommandBuffers); | ||||||
| 
 | 
 | ||||||
| 	VULKAN_INTERNAL_DestroyBuffer(renderer, renderer->dummyVertexUniformBuffer->vulkanBuffer); | 	VULKAN_INTERNAL_DestroyBuffer(renderer, renderer->dummyVertexUniformBuffer->vulkanBufferContainer->vulkanBuffer); | ||||||
| 	VULKAN_INTERNAL_DestroyBuffer(renderer, renderer->dummyFragmentUniformBuffer->vulkanBuffer); | 	VULKAN_INTERNAL_DestroyBuffer(renderer, renderer->dummyFragmentUniformBuffer->vulkanBufferContainer->vulkanBuffer); | ||||||
| 	VULKAN_INTERNAL_DestroyBuffer(renderer, renderer->dummyComputeUniformBuffer->vulkanBuffer); | 	VULKAN_INTERNAL_DestroyBuffer(renderer, renderer->dummyComputeUniformBuffer->vulkanBufferContainer->vulkanBuffer); | ||||||
|  | 
 | ||||||
|  | 	SDL_free(renderer->dummyVertexUniformBuffer->vulkanBufferContainer); | ||||||
|  | 	SDL_free(renderer->dummyFragmentUniformBuffer->vulkanBufferContainer); | ||||||
|  | 	SDL_free(renderer->dummyComputeUniformBuffer->vulkanBufferContainer); | ||||||
| 
 | 
 | ||||||
| 	SDL_free(renderer->dummyVertexUniformBuffer); | 	SDL_free(renderer->dummyVertexUniformBuffer); | ||||||
| 	SDL_free(renderer->dummyFragmentUniformBuffer); | 	SDL_free(renderer->dummyFragmentUniformBuffer); | ||||||
|  | @ -7035,8 +7071,6 @@ static Refresh_Buffer* VULKAN_CreateBuffer( | ||||||
| 	Refresh_BufferUsageFlags usageFlags, | 	Refresh_BufferUsageFlags usageFlags, | ||||||
| 	uint32_t sizeInBytes | 	uint32_t sizeInBytes | ||||||
| ) { | ) { | ||||||
| 	VulkanBufferContainer* bufferContainer; |  | ||||||
| 	VulkanBuffer* buffer; |  | ||||||
| 	VulkanResourceAccessType resourceAccessType; | 	VulkanResourceAccessType resourceAccessType; | ||||||
| 	VkBufferUsageFlags vulkanUsageFlags = | 	VkBufferUsageFlags vulkanUsageFlags = | ||||||
| 		VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT; | 		VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT; | ||||||
|  | @ -7070,26 +7104,12 @@ static Refresh_Buffer* VULKAN_CreateBuffer( | ||||||
| 		resourceAccessType = RESOURCE_ACCESS_INDIRECT_BUFFER; | 		resourceAccessType = RESOURCE_ACCESS_INDIRECT_BUFFER; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	buffer = VULKAN_INTERNAL_CreateBuffer( | 	return (Refresh_Buffer*) VULKAN_INTERNAL_CreateBufferContainer( | ||||||
| 		(VulkanRenderer*)driverData, | 		(VulkanRenderer*) driverData, | ||||||
| 		sizeInBytes, | 		sizeInBytes, | ||||||
| 		resourceAccessType, | 		resourceAccessType, | ||||||
| 		vulkanUsageFlags, | 		vulkanUsageFlags | ||||||
| 		1, |  | ||||||
| 		0 |  | ||||||
| 	); | 	); | ||||||
| 
 |  | ||||||
| 	if (buffer == NULL) |  | ||||||
| 	{ |  | ||||||
| 		Refresh_LogError("Failed to create buffer!"); |  | ||||||
| 		return NULL; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	bufferContainer = SDL_malloc(sizeof(VulkanBufferContainer)); |  | ||||||
| 	bufferContainer->vulkanBuffer = buffer; |  | ||||||
| 	buffer->container = bufferContainer; |  | ||||||
| 
 |  | ||||||
| 	return (Refresh_Buffer*) bufferContainer; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Setters */ | /* Setters */ | ||||||
|  | @ -7792,6 +7812,7 @@ static uint32_t VULKAN_PushVertexShaderUniforms( | ||||||
| 	) { | 	) { | ||||||
| 		/* We're out of space in this buffer, bind the old one and acquire a new one */ | 		/* We're out of space in this buffer, bind the old one and acquire a new one */ | ||||||
| 		VULKAN_INTERNAL_BindUniformBuffer( | 		VULKAN_INTERNAL_BindUniformBuffer( | ||||||
|  | 			renderer, | ||||||
| 			vulkanCommandBuffer, | 			vulkanCommandBuffer, | ||||||
| 			vulkanCommandBuffer->vertexUniformBuffer | 			vulkanCommandBuffer->vertexUniformBuffer | ||||||
| 		); | 		); | ||||||
|  | @ -7805,7 +7826,7 @@ static uint32_t VULKAN_PushVertexShaderUniforms( | ||||||
| 	offset = vulkanCommandBuffer->vertexUniformBuffer->offset; | 	offset = vulkanCommandBuffer->vertexUniformBuffer->offset; | ||||||
| 
 | 
 | ||||||
| 	VULKAN_INTERNAL_SetBufferData( | 	VULKAN_INTERNAL_SetBufferData( | ||||||
| 		vulkanCommandBuffer->vertexUniformBuffer->vulkanBuffer, | 		vulkanCommandBuffer->vertexUniformBuffer->vulkanBufferContainer->vulkanBuffer, | ||||||
| 		vulkanCommandBuffer->vertexUniformBuffer->offset, | 		vulkanCommandBuffer->vertexUniformBuffer->offset, | ||||||
| 		data, | 		data, | ||||||
| 		dataLengthInBytes | 		dataLengthInBytes | ||||||
|  | @ -7835,6 +7856,7 @@ static uint32_t VULKAN_PushFragmentShaderUniforms( | ||||||
| 	) { | 	) { | ||||||
| 		/* We're out of space in this buffer, bind the old one and acquire a new one */ | 		/* We're out of space in this buffer, bind the old one and acquire a new one */ | ||||||
| 		VULKAN_INTERNAL_BindUniformBuffer( | 		VULKAN_INTERNAL_BindUniformBuffer( | ||||||
|  | 			renderer, | ||||||
| 			vulkanCommandBuffer, | 			vulkanCommandBuffer, | ||||||
| 			vulkanCommandBuffer->fragmentUniformBuffer | 			vulkanCommandBuffer->fragmentUniformBuffer | ||||||
| 		); | 		); | ||||||
|  | @ -7848,7 +7870,7 @@ static uint32_t VULKAN_PushFragmentShaderUniforms( | ||||||
| 	offset = vulkanCommandBuffer->fragmentUniformBuffer->offset; | 	offset = vulkanCommandBuffer->fragmentUniformBuffer->offset; | ||||||
| 
 | 
 | ||||||
| 	VULKAN_INTERNAL_SetBufferData( | 	VULKAN_INTERNAL_SetBufferData( | ||||||
| 		vulkanCommandBuffer->fragmentUniformBuffer->vulkanBuffer, | 		vulkanCommandBuffer->fragmentUniformBuffer->vulkanBufferContainer->vulkanBuffer, | ||||||
| 		vulkanCommandBuffer->fragmentUniformBuffer->offset, | 		vulkanCommandBuffer->fragmentUniformBuffer->offset, | ||||||
| 		data, | 		data, | ||||||
| 		dataLengthInBytes | 		dataLengthInBytes | ||||||
|  | @ -7877,6 +7899,7 @@ static uint32_t VULKAN_PushComputeShaderUniforms( | ||||||
| 	) { | 	) { | ||||||
| 		/* We're out of space in this buffer, bind the old one and acquire a new one */ | 		/* We're out of space in this buffer, bind the old one and acquire a new one */ | ||||||
| 		VULKAN_INTERNAL_BindUniformBuffer( | 		VULKAN_INTERNAL_BindUniformBuffer( | ||||||
|  | 			renderer, | ||||||
| 			vulkanCommandBuffer, | 			vulkanCommandBuffer, | ||||||
| 			vulkanCommandBuffer->computeUniformBuffer | 			vulkanCommandBuffer->computeUniformBuffer | ||||||
| 		); | 		); | ||||||
|  | @ -7890,7 +7913,7 @@ static uint32_t VULKAN_PushComputeShaderUniforms( | ||||||
| 	offset = vulkanCommandBuffer->computeUniformBuffer->offset; | 	offset = vulkanCommandBuffer->computeUniformBuffer->offset; | ||||||
| 
 | 
 | ||||||
| 	VULKAN_INTERNAL_SetBufferData( | 	VULKAN_INTERNAL_SetBufferData( | ||||||
| 		vulkanCommandBuffer->computeUniformBuffer->vulkanBuffer, | 		vulkanCommandBuffer->computeUniformBuffer->vulkanBufferContainer->vulkanBuffer, | ||||||
| 		vulkanCommandBuffer->computeUniformBuffer->offset, | 		vulkanCommandBuffer->computeUniformBuffer->offset, | ||||||
| 		data, | 		data, | ||||||
| 		dataLengthInBytes | 		dataLengthInBytes | ||||||
|  | @ -8971,6 +8994,7 @@ static void VULKAN_EndRenderPass( | ||||||
| 		vulkanCommandBuffer->vertexUniformBuffer != NULL | 		vulkanCommandBuffer->vertexUniformBuffer != NULL | ||||||
| 	) { | 	) { | ||||||
| 		VULKAN_INTERNAL_BindUniformBuffer( | 		VULKAN_INTERNAL_BindUniformBuffer( | ||||||
|  | 			renderer, | ||||||
| 			vulkanCommandBuffer, | 			vulkanCommandBuffer, | ||||||
| 			vulkanCommandBuffer->vertexUniformBuffer | 			vulkanCommandBuffer->vertexUniformBuffer | ||||||
| 		); | 		); | ||||||
|  | @ -8981,6 +9005,7 @@ static void VULKAN_EndRenderPass( | ||||||
| 		vulkanCommandBuffer->fragmentUniformBuffer != NULL | 		vulkanCommandBuffer->fragmentUniformBuffer != NULL | ||||||
| 	) { | 	) { | ||||||
| 		VULKAN_INTERNAL_BindUniformBuffer( | 		VULKAN_INTERNAL_BindUniformBuffer( | ||||||
|  | 			renderer, | ||||||
| 			vulkanCommandBuffer, | 			vulkanCommandBuffer, | ||||||
| 			vulkanCommandBuffer->fragmentUniformBuffer | 			vulkanCommandBuffer->fragmentUniformBuffer | ||||||
| 		); | 		); | ||||||
|  | @ -9066,6 +9091,7 @@ static void VULKAN_BindGraphicsPipeline( | ||||||
| 		vulkanCommandBuffer->vertexUniformBuffer != NULL | 		vulkanCommandBuffer->vertexUniformBuffer != NULL | ||||||
| 	) { | 	) { | ||||||
| 		VULKAN_INTERNAL_BindUniformBuffer( | 		VULKAN_INTERNAL_BindUniformBuffer( | ||||||
|  | 			renderer, | ||||||
| 			vulkanCommandBuffer, | 			vulkanCommandBuffer, | ||||||
| 			vulkanCommandBuffer->vertexUniformBuffer | 			vulkanCommandBuffer->vertexUniformBuffer | ||||||
| 		); | 		); | ||||||
|  | @ -9088,6 +9114,7 @@ static void VULKAN_BindGraphicsPipeline( | ||||||
| 		vulkanCommandBuffer->fragmentUniformBuffer != NULL | 		vulkanCommandBuffer->fragmentUniformBuffer != NULL | ||||||
| 	) { | 	) { | ||||||
| 		VULKAN_INTERNAL_BindUniformBuffer( | 		VULKAN_INTERNAL_BindUniformBuffer( | ||||||
|  | 			renderer, | ||||||
| 			vulkanCommandBuffer, | 			vulkanCommandBuffer, | ||||||
| 			vulkanCommandBuffer->fragmentUniformBuffer | 			vulkanCommandBuffer->fragmentUniformBuffer | ||||||
| 		); | 		); | ||||||
|  | @ -9219,6 +9246,7 @@ static void VULKAN_BindComputePipeline( | ||||||
| 		vulkanCommandBuffer->computeUniformBuffer != NULL | 		vulkanCommandBuffer->computeUniformBuffer != NULL | ||||||
| 	) { | 	) { | ||||||
| 		VULKAN_INTERNAL_BindUniformBuffer( | 		VULKAN_INTERNAL_BindUniformBuffer( | ||||||
|  | 			renderer, | ||||||
| 			vulkanCommandBuffer, | 			vulkanCommandBuffer, | ||||||
| 			vulkanCommandBuffer->computeUniformBuffer | 			vulkanCommandBuffer->computeUniformBuffer | ||||||
| 		); | 		); | ||||||
|  | @ -11705,14 +11733,6 @@ static Refresh_Device* VULKAN_CreateDevice( | ||||||
| 		renderer->physicalDeviceDriverProperties.conformanceVersion.minor, | 		renderer->physicalDeviceDriverProperties.conformanceVersion.minor, | ||||||
| 		renderer->physicalDeviceDriverProperties.conformanceVersion.patch | 		renderer->physicalDeviceDriverProperties.conformanceVersion.patch | ||||||
| 	); | 	); | ||||||
| 	Refresh_LogWarn( |  | ||||||
| 		"\n" |  | ||||||
| 		"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" |  | ||||||
| 		"! Refresh Vulkan is still in development!	!\n" |  | ||||||
| 		"! The API is unstable and subject to change	!\n" |  | ||||||
| 		"! You have been warned!			!\n" |  | ||||||
| 		"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" |  | ||||||
| 	); |  | ||||||
| 
 | 
 | ||||||
| 	if (!VULKAN_INTERNAL_CreateLogicalDevice( | 	if (!VULKAN_INTERNAL_CreateLogicalDevice( | ||||||
| 		renderer | 		renderer | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue