Submission rewrite (#13)

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>
updatetemplate
cosmonaut 2022-02-23 00:49:45 +00:00
parent 1d72fdb995
commit 0319c26f6a
4 changed files with 868 additions and 1560 deletions

View File

@ -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
);

View File

@ -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
);
}

View File

@ -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