Rework submission flow to reduce waiting and improve the resource cleanup process. This patch also gets rid of descriptor set caching. Co-authored-by: cosmonaut <evan@moonside.games> Co-committed-by: cosmonaut <evan@moonside.games>pull/14/head
							parent
							
								
									1d72fdb995
								
							
						
					
					
						commit
						0319c26f6a
					
				|  | @ -1038,6 +1038,7 @@ REFRESHAPI void Refresh_GetBufferData( | |||
|  */ | ||||
| REFRESHAPI void Refresh_QueueDestroyTexture( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_Texture *texture | ||||
| ); | ||||
| 
 | ||||
|  | @ -1050,6 +1051,7 @@ REFRESHAPI void Refresh_QueueDestroyTexture( | |||
|  */ | ||||
| REFRESHAPI void Refresh_QueueDestroySampler( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_Sampler *sampler | ||||
| ); | ||||
| 
 | ||||
|  | @ -1062,6 +1064,7 @@ REFRESHAPI void Refresh_QueueDestroySampler( | |||
|  */ | ||||
| REFRESHAPI void Refresh_QueueDestroyBuffer( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_Buffer *buffer | ||||
| ); | ||||
| 
 | ||||
|  | @ -1074,6 +1077,7 @@ REFRESHAPI void Refresh_QueueDestroyBuffer( | |||
|  */ | ||||
| REFRESHAPI void Refresh_QueueDestroyRenderTarget( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_RenderTarget *renderTarget | ||||
| ); | ||||
| 
 | ||||
|  | @ -1086,6 +1090,7 @@ REFRESHAPI void Refresh_QueueDestroyRenderTarget( | |||
|  */ | ||||
| REFRESHAPI void Refresh_QueueDestroyFramebuffer( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_Framebuffer *frameBuffer | ||||
| ); | ||||
| 
 | ||||
|  | @ -1098,6 +1103,7 @@ REFRESHAPI void Refresh_QueueDestroyFramebuffer( | |||
|  */ | ||||
| REFRESHAPI void Refresh_QueueDestroyShaderModule( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_ShaderModule *shaderModule | ||||
| ); | ||||
| 
 | ||||
|  | @ -1110,6 +1116,7 @@ REFRESHAPI void Refresh_QueueDestroyShaderModule( | |||
|  */ | ||||
| REFRESHAPI void Refresh_QueueDestroyRenderPass( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_RenderPass *renderPass | ||||
| ); | ||||
| 
 | ||||
|  | @ -1122,6 +1129,7 @@ REFRESHAPI void Refresh_QueueDestroyRenderPass( | |||
|  */ | ||||
| REFRESHAPI void Refresh_QueueDestroyComputePipeline( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_ComputePipeline *computePipeline | ||||
| ); | ||||
| 
 | ||||
|  | @ -1134,6 +1142,7 @@ REFRESHAPI void Refresh_QueueDestroyComputePipeline( | |||
|  */ | ||||
| REFRESHAPI void Refresh_QueueDestroyGraphicsPipeline( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_GraphicsPipeline *graphicsPipeline | ||||
| ); | ||||
| 
 | ||||
|  |  | |||
|  | @ -542,99 +542,117 @@ void Refresh_GetBufferData( | |||
| 
 | ||||
| void Refresh_QueueDestroyTexture( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_Texture *texture | ||||
| ) { | ||||
|     NULL_RETURN(device); | ||||
|     device->QueueDestroyTexture( | ||||
|         device->driverData, | ||||
| 		commandBuffer, | ||||
|         texture | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| void Refresh_QueueDestroySampler( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_Sampler *sampler | ||||
| ) { | ||||
|     NULL_RETURN(device); | ||||
|     device->QueueDestroySampler( | ||||
|         device->driverData, | ||||
| 		commandBuffer, | ||||
|         sampler | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| void Refresh_QueueDestroyBuffer( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_Buffer *buffer | ||||
| ) { | ||||
|     NULL_RETURN(device); | ||||
|     device->QueueDestroyBuffer( | ||||
|         device->driverData, | ||||
| 		commandBuffer, | ||||
|         buffer | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| void Refresh_QueueDestroyRenderTarget( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_RenderTarget *renderTarget | ||||
| ) { | ||||
|     NULL_RETURN(device); | ||||
|     device->QueueDestroyRenderTarget( | ||||
|         device->driverData, | ||||
| 		commandBuffer, | ||||
|         renderTarget | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| void Refresh_QueueDestroyFramebuffer( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_Framebuffer *frameBuffer | ||||
| ) { | ||||
|     NULL_RETURN(device); | ||||
|     device->QueueDestroyFramebuffer( | ||||
|         device->driverData, | ||||
| 		commandBuffer, | ||||
|         frameBuffer | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| void Refresh_QueueDestroyShaderModule( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_ShaderModule *shaderModule | ||||
| ) { | ||||
|     NULL_RETURN(device); | ||||
|     device->QueueDestroyShaderModule( | ||||
|         device->driverData, | ||||
| 		commandBuffer, | ||||
|         shaderModule | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| void Refresh_QueueDestroyRenderPass( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_RenderPass *renderPass | ||||
| ) { | ||||
|     NULL_RETURN(device); | ||||
|     device->QueueDestroyRenderPass( | ||||
|         device->driverData, | ||||
| 		commandBuffer, | ||||
|         renderPass | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| void Refresh_QueueDestroyComputePipeline( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_ComputePipeline *computePipeline | ||||
| ) { | ||||
|     NULL_RETURN(device); | ||||
|     device->QueueDestroyComputePipeline( | ||||
|         device->driverData, | ||||
| 		commandBuffer, | ||||
|         computePipeline | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| void Refresh_QueueDestroyGraphicsPipeline( | ||||
| 	Refresh_Device *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_GraphicsPipeline *graphicsPipeline | ||||
| ) { | ||||
|     NULL_RETURN(device); | ||||
|     device->QueueDestroyGraphicsPipeline( | ||||
|         device->driverData, | ||||
| 		commandBuffer, | ||||
|         graphicsPipeline | ||||
|     ); | ||||
| } | ||||
|  |  | |||
|  | @ -361,46 +361,55 @@ struct Refresh_Device | |||
| 
 | ||||
|     void(*QueueDestroyTexture)( | ||||
|         Refresh_Renderer *driverData, | ||||
| 		Refresh_CommandBuffer *commandBuffer, | ||||
|         Refresh_Texture *texture | ||||
|     ); | ||||
| 
 | ||||
|     void(*QueueDestroySampler)( | ||||
|         Refresh_Renderer *driverData, | ||||
| 		Refresh_CommandBuffer *commandBuffer, | ||||
|         Refresh_Sampler *sampler | ||||
|     ); | ||||
| 
 | ||||
|     void(*QueueDestroyBuffer)( | ||||
|         Refresh_Renderer *driverData, | ||||
| 		Refresh_CommandBuffer *commandBuffer, | ||||
|         Refresh_Buffer *buffer | ||||
|     ); | ||||
| 
 | ||||
|     void(*QueueDestroyRenderTarget)( | ||||
|         Refresh_Renderer *driverData, | ||||
| 		Refresh_CommandBuffer *commandBuffer, | ||||
| 	    Refresh_RenderTarget *renderTarget | ||||
|     ); | ||||
| 
 | ||||
|     void(*QueueDestroyFramebuffer)( | ||||
|         Refresh_Renderer *driverData, | ||||
| 		Refresh_CommandBuffer *commandBuffer, | ||||
|         Refresh_Framebuffer *frameBuffer | ||||
|     ); | ||||
| 
 | ||||
|     void(*QueueDestroyShaderModule)( | ||||
|         Refresh_Renderer *driverData, | ||||
| 		Refresh_CommandBuffer *commandBuffer, | ||||
|         Refresh_ShaderModule *shaderModule | ||||
|     ); | ||||
| 
 | ||||
|     void(*QueueDestroyRenderPass)( | ||||
|         Refresh_Renderer *driverData, | ||||
| 		Refresh_CommandBuffer *commandBuffer, | ||||
|         Refresh_RenderPass *renderPass | ||||
|     ); | ||||
| 
 | ||||
|     void(*QueueDestroyComputePipeline)( | ||||
|         Refresh_Renderer *driverData, | ||||
| 		Refresh_CommandBuffer *commandBuffer, | ||||
|         Refresh_ComputePipeline *computePipeline | ||||
|     ); | ||||
| 
 | ||||
|     void(*QueueDestroyGraphicsPipeline)( | ||||
|         Refresh_Renderer *driverData, | ||||
| 		Refresh_CommandBuffer *commandBuffer, | ||||
|         Refresh_GraphicsPipeline *graphicsPipeline | ||||
|     ); | ||||
| 
 | ||||
|  |  | |||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue