forked from MoonsideGames/Refresh
				
			change shader uniform push to take pipelines instead of command buffers
							parent
							
								
									7f3e89315e
								
							
						
					
					
						commit
						8f1cdf190f
					
				|  | @ -995,7 +995,7 @@ REFRESHAPI void Refresh_SetBufferData( | ||||||
|  */ |  */ | ||||||
| REFRESHAPI uint32_t Refresh_PushVertexShaderUniforms( | REFRESHAPI uint32_t Refresh_PushVertexShaderUniforms( | ||||||
| 	Refresh_Device *device, | 	Refresh_Device *device, | ||||||
| 	Refresh_CommandBuffer *commandBuffer, | 	Refresh_GraphicsPipeline *pipeline, | ||||||
| 	void *data, | 	void *data, | ||||||
| 	uint32_t dataLengthInBytes | 	uint32_t dataLengthInBytes | ||||||
| ); | ); | ||||||
|  | @ -1012,7 +1012,7 @@ REFRESHAPI uint32_t Refresh_PushVertexShaderUniforms( | ||||||
|  */ |  */ | ||||||
| REFRESHAPI uint32_t Refresh_PushFragmentShaderUniforms( | REFRESHAPI uint32_t Refresh_PushFragmentShaderUniforms( | ||||||
| 	Refresh_Device *device, | 	Refresh_Device *device, | ||||||
| 	Refresh_CommandBuffer *commandBuffer, | 	Refresh_GraphicsPipeline *pipeline, | ||||||
| 	void *data, | 	void *data, | ||||||
| 	uint32_t dataLengthInBytes | 	uint32_t dataLengthInBytes | ||||||
| ); | ); | ||||||
|  | @ -1029,7 +1029,7 @@ REFRESHAPI uint32_t Refresh_PushFragmentShaderUniforms( | ||||||
|  */ |  */ | ||||||
| REFRESHAPI uint32_t Refresh_PushComputeShaderUniforms( | REFRESHAPI uint32_t Refresh_PushComputeShaderUniforms( | ||||||
| 	Refresh_Device *device, | 	Refresh_Device *device, | ||||||
| 	Refresh_CommandBuffer *commandBuffer, | 	Refresh_ComputePipeline *pipeline, | ||||||
| 	void *data, | 	void *data, | ||||||
| 	uint32_t dataLengthInBytes | 	uint32_t dataLengthInBytes | ||||||
| ); | ); | ||||||
|  |  | ||||||
|  | @ -466,14 +466,14 @@ void Refresh_SetBufferData( | ||||||
| 
 | 
 | ||||||
| uint32_t Refresh_PushVertexShaderUniforms( | uint32_t Refresh_PushVertexShaderUniforms( | ||||||
| 	Refresh_Device *device, | 	Refresh_Device *device, | ||||||
|     Refresh_CommandBuffer *commandBuffer, |     Refresh_GraphicsPipeline *pipeline, | ||||||
| 	void *data, | 	void *data, | ||||||
| 	uint32_t dataLengthInBytes | 	uint32_t dataLengthInBytes | ||||||
| ) { | ) { | ||||||
|     if (device == NULL) { return 0; } |     if (device == NULL) { return 0; } | ||||||
|     return device->PushVertexShaderUniforms( |     return device->PushVertexShaderUniforms( | ||||||
|         device->driverData, |         device->driverData, | ||||||
|         commandBuffer, |         pipeline, | ||||||
|         data, |         data, | ||||||
|         dataLengthInBytes |         dataLengthInBytes | ||||||
|     ); |     ); | ||||||
|  | @ -481,14 +481,14 @@ uint32_t Refresh_PushVertexShaderUniforms( | ||||||
| 
 | 
 | ||||||
| uint32_t Refresh_PushFragmentShaderUniforms( | uint32_t Refresh_PushFragmentShaderUniforms( | ||||||
| 	Refresh_Device *device, | 	Refresh_Device *device, | ||||||
|     Refresh_CommandBuffer *commandBuffer, |     Refresh_GraphicsPipeline * pipeline, | ||||||
| 	void *data, | 	void *data, | ||||||
| 	uint32_t dataLengthInBytes | 	uint32_t dataLengthInBytes | ||||||
| ) { | ) { | ||||||
|     if (device == NULL) { return 0; } |     if (device == NULL) { return 0; } | ||||||
|     return device->PushFragmentShaderUniforms( |     return device->PushFragmentShaderUniforms( | ||||||
|         device->driverData, |         device->driverData, | ||||||
|         commandBuffer, |         pipeline, | ||||||
|         data, |         data, | ||||||
|         dataLengthInBytes |         dataLengthInBytes | ||||||
|     ); |     ); | ||||||
|  | @ -496,14 +496,14 @@ uint32_t Refresh_PushFragmentShaderUniforms( | ||||||
| 
 | 
 | ||||||
| uint32_t Refresh_PushComputeShaderUniforms( | uint32_t Refresh_PushComputeShaderUniforms( | ||||||
|     Refresh_Device *device, |     Refresh_Device *device, | ||||||
|     Refresh_CommandBuffer *commandBuffer, |     Refresh_ComputePipeline *pipeline, | ||||||
|     void *data, |     void *data, | ||||||
|     uint32_t dataLengthInBytes |     uint32_t dataLengthInBytes | ||||||
| ) { | ) { | ||||||
|     if (device == NULL) { return 0; } |     if (device == NULL) { return 0; } | ||||||
|     return device->PushComputeShaderUniforms( |     return device->PushComputeShaderUniforms( | ||||||
|         device->driverData, |         device->driverData, | ||||||
|         commandBuffer, |         pipeline, | ||||||
|         data, |         data, | ||||||
|         dataLengthInBytes |         dataLengthInBytes | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|  | @ -312,21 +312,21 @@ struct Refresh_Device | ||||||
| 
 | 
 | ||||||
|     uint32_t(*PushVertexShaderUniforms)( |     uint32_t(*PushVertexShaderUniforms)( | ||||||
|         Refresh_Renderer *driverData, |         Refresh_Renderer *driverData, | ||||||
|         Refresh_CommandBuffer *commandBuffer, |         Refresh_GraphicsPipeline* pipeline, | ||||||
|         void *data, |         void *data, | ||||||
|         uint32_t dataLengthInBytes |         uint32_t dataLengthInBytes | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|     uint32_t(*PushFragmentShaderUniforms)( |     uint32_t(*PushFragmentShaderUniforms)( | ||||||
|         Refresh_Renderer *driverData, |         Refresh_Renderer *driverData, | ||||||
|         Refresh_CommandBuffer *commandBuffer, |         Refresh_GraphicsPipeline *pipeline, | ||||||
|         void *data, |         void *data, | ||||||
|         uint32_t dataLengthInBytes |         uint32_t dataLengthInBytes | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|     uint32_t (*PushComputeShaderUniforms)( |     uint32_t (*PushComputeShaderUniforms)( | ||||||
|         Refresh_Renderer *driverData, |         Refresh_Renderer *driverData, | ||||||
|         Refresh_CommandBuffer *commandBuffer, |         Refresh_ComputePipeline *pipeline, | ||||||
|         void *data, |         void *data, | ||||||
|         uint32_t dataLengthInBytes |         uint32_t dataLengthInBytes | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|  | @ -6553,21 +6553,21 @@ static void VULKAN_SetBufferData( | ||||||
| 
 | 
 | ||||||
| static uint32_t VULKAN_PushVertexShaderUniforms( | static uint32_t VULKAN_PushVertexShaderUniforms( | ||||||
| 	Refresh_Renderer *driverData, | 	Refresh_Renderer *driverData, | ||||||
| 	Refresh_CommandBuffer *commandBuffer, | 	Refresh_GraphicsPipeline *pipeline, | ||||||
| 	void *data, | 	void *data, | ||||||
| 	uint32_t dataLengthInBytes | 	uint32_t dataLengthInBytes | ||||||
| ) { | ) { | ||||||
| 	VulkanRenderer* renderer = (VulkanRenderer*) driverData; | 	VulkanRenderer* renderer = (VulkanRenderer*) driverData; | ||||||
| 	VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer; | 	VulkanGraphicsPipeline* graphicsPipeline = (VulkanGraphicsPipeline*) pipeline; | ||||||
| 
 | 
 | ||||||
| 	SDL_LockMutex(renderer->uniformBufferLock); | 	SDL_LockMutex(renderer->uniformBufferLock); | ||||||
| 
 | 
 | ||||||
| 	renderer->vertexUBOOffset += renderer->vertexUBOBlockIncrement; | 	renderer->vertexUBOOffset += renderer->vertexUBOBlockIncrement; | ||||||
| 	renderer->vertexUBOBlockIncrement = vulkanCommandBuffer->currentGraphicsPipeline->vertexUBOBlockSize; | 	renderer->vertexUBOBlockIncrement = graphicsPipeline->vertexUBOBlockSize; | ||||||
| 
 | 
 | ||||||
| 	if ( | 	if ( | ||||||
| 		renderer->vertexUBOOffset + | 		renderer->vertexUBOOffset + | ||||||
| 		vulkanCommandBuffer->currentGraphicsPipeline->vertexUBOBlockSize >= | 		graphicsPipeline->vertexUBOBlockSize >= | ||||||
| 		UBO_BUFFER_SIZE * (renderer->frameIndex + 1) | 		UBO_BUFFER_SIZE * (renderer->frameIndex + 1) | ||||||
| 	) { | 	) { | ||||||
| 		Refresh_LogError("Vertex UBO overflow!"); | 		Refresh_LogError("Vertex UBO overflow!"); | ||||||
|  | @ -6589,21 +6589,21 @@ static uint32_t VULKAN_PushVertexShaderUniforms( | ||||||
| 
 | 
 | ||||||
| static uint32_t VULKAN_PushFragmentShaderUniforms( | static uint32_t VULKAN_PushFragmentShaderUniforms( | ||||||
| 	Refresh_Renderer *driverData, | 	Refresh_Renderer *driverData, | ||||||
| 	Refresh_CommandBuffer *commandBuffer, | 	Refresh_GraphicsPipeline *pipeline, | ||||||
| 	void *data, | 	void *data, | ||||||
| 	uint32_t dataLengthInBytes | 	uint32_t dataLengthInBytes | ||||||
| ) { | ) { | ||||||
| 	VulkanRenderer* renderer = (VulkanRenderer*) driverData; | 	VulkanRenderer* renderer = (VulkanRenderer*) driverData; | ||||||
| 	VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer; | 	VulkanGraphicsPipeline* graphicsPipeline = (VulkanGraphicsPipeline*) pipeline; | ||||||
| 
 | 
 | ||||||
| 	SDL_LockMutex(renderer->uniformBufferLock); | 	SDL_LockMutex(renderer->uniformBufferLock); | ||||||
| 
 | 
 | ||||||
| 	renderer->fragmentUBOOffset += renderer->fragmentUBOBlockIncrement; | 	renderer->fragmentUBOOffset += renderer->fragmentUBOBlockIncrement; | ||||||
| 	renderer->fragmentUBOBlockIncrement = vulkanCommandBuffer->currentGraphicsPipeline->fragmentUBOBlockSize; | 	renderer->fragmentUBOBlockIncrement = graphicsPipeline->fragmentUBOBlockSize; | ||||||
| 
 | 
 | ||||||
| 	if ( | 	if ( | ||||||
| 		renderer->fragmentUBOOffset + | 		renderer->fragmentUBOOffset + | ||||||
| 		vulkanCommandBuffer->currentGraphicsPipeline->fragmentUBOBlockSize >= | 		graphicsPipeline->fragmentUBOBlockSize >= | ||||||
| 		UBO_BUFFER_SIZE * (renderer->frameIndex + 1) | 		UBO_BUFFER_SIZE * (renderer->frameIndex + 1) | ||||||
| 	) { | 	) { | ||||||
| 		Refresh_LogError("Fragment UBO overflow!"); | 		Refresh_LogError("Fragment UBO overflow!"); | ||||||
|  | @ -6625,21 +6625,21 @@ static uint32_t VULKAN_PushFragmentShaderUniforms( | ||||||
| 
 | 
 | ||||||
| static uint32_t VULKAN_PushComputeShaderUniforms( | static uint32_t VULKAN_PushComputeShaderUniforms( | ||||||
| 	Refresh_Renderer *driverData, | 	Refresh_Renderer *driverData, | ||||||
| 	Refresh_CommandBuffer *commandBuffer, | 	Refresh_ComputePipeline *pipeline, | ||||||
| 	void *data, | 	void *data, | ||||||
| 	uint32_t dataLengthInBytes | 	uint32_t dataLengthInBytes | ||||||
| ) { | ) { | ||||||
| 	VulkanRenderer* renderer = (VulkanRenderer*) driverData; | 	VulkanRenderer* renderer = (VulkanRenderer*) driverData; | ||||||
| 	VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer; | 	VulkanComputePipeline* computePipeline = (VulkanComputePipeline*) pipeline; | ||||||
| 
 | 
 | ||||||
| 	SDL_LockMutex(renderer->uniformBufferLock); | 	SDL_LockMutex(renderer->uniformBufferLock); | ||||||
| 
 | 
 | ||||||
| 	renderer->computeUBOOffset += renderer->computeUBOBlockIncrement; | 	renderer->computeUBOOffset += renderer->computeUBOBlockIncrement; | ||||||
| 	renderer->computeUBOBlockIncrement = vulkanCommandBuffer->currentComputePipeline->computeUBOBlockSize; | 	renderer->computeUBOBlockIncrement = computePipeline->computeUBOBlockSize; | ||||||
| 
 | 
 | ||||||
| 	if ( | 	if ( | ||||||
| 		renderer->computeUBOOffset + | 		renderer->computeUBOOffset + | ||||||
| 		vulkanCommandBuffer->currentComputePipeline->computeUBOBlockSize >= | 		computePipeline->computeUBOBlockSize >= | ||||||
| 		UBO_BUFFER_SIZE * (renderer->frameIndex + 1) | 		UBO_BUFFER_SIZE * (renderer->frameIndex + 1) | ||||||
| 	) { | 	) { | ||||||
| 		Refresh_LogError("Compute UBO overflow!"); | 		Refresh_LogError("Compute UBO overflow!"); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue