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(
|
REFRESHAPI void Refresh_QueueDestroyTexture(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_Texture *texture
|
Refresh_Texture *texture
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1050,6 +1051,7 @@ REFRESHAPI void Refresh_QueueDestroyTexture(
|
||||||
*/
|
*/
|
||||||
REFRESHAPI void Refresh_QueueDestroySampler(
|
REFRESHAPI void Refresh_QueueDestroySampler(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_Sampler *sampler
|
Refresh_Sampler *sampler
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1062,6 +1064,7 @@ REFRESHAPI void Refresh_QueueDestroySampler(
|
||||||
*/
|
*/
|
||||||
REFRESHAPI void Refresh_QueueDestroyBuffer(
|
REFRESHAPI void Refresh_QueueDestroyBuffer(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_Buffer *buffer
|
Refresh_Buffer *buffer
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1074,6 +1077,7 @@ REFRESHAPI void Refresh_QueueDestroyBuffer(
|
||||||
*/
|
*/
|
||||||
REFRESHAPI void Refresh_QueueDestroyRenderTarget(
|
REFRESHAPI void Refresh_QueueDestroyRenderTarget(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_RenderTarget *renderTarget
|
Refresh_RenderTarget *renderTarget
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1086,6 +1090,7 @@ REFRESHAPI void Refresh_QueueDestroyRenderTarget(
|
||||||
*/
|
*/
|
||||||
REFRESHAPI void Refresh_QueueDestroyFramebuffer(
|
REFRESHAPI void Refresh_QueueDestroyFramebuffer(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_Framebuffer *frameBuffer
|
Refresh_Framebuffer *frameBuffer
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1098,6 +1103,7 @@ REFRESHAPI void Refresh_QueueDestroyFramebuffer(
|
||||||
*/
|
*/
|
||||||
REFRESHAPI void Refresh_QueueDestroyShaderModule(
|
REFRESHAPI void Refresh_QueueDestroyShaderModule(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_ShaderModule *shaderModule
|
Refresh_ShaderModule *shaderModule
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1110,6 +1116,7 @@ REFRESHAPI void Refresh_QueueDestroyShaderModule(
|
||||||
*/
|
*/
|
||||||
REFRESHAPI void Refresh_QueueDestroyRenderPass(
|
REFRESHAPI void Refresh_QueueDestroyRenderPass(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_RenderPass *renderPass
|
Refresh_RenderPass *renderPass
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1122,6 +1129,7 @@ REFRESHAPI void Refresh_QueueDestroyRenderPass(
|
||||||
*/
|
*/
|
||||||
REFRESHAPI void Refresh_QueueDestroyComputePipeline(
|
REFRESHAPI void Refresh_QueueDestroyComputePipeline(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_ComputePipeline *computePipeline
|
Refresh_ComputePipeline *computePipeline
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1134,6 +1142,7 @@ REFRESHAPI void Refresh_QueueDestroyComputePipeline(
|
||||||
*/
|
*/
|
||||||
REFRESHAPI void Refresh_QueueDestroyGraphicsPipeline(
|
REFRESHAPI void Refresh_QueueDestroyGraphicsPipeline(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_GraphicsPipeline *graphicsPipeline
|
Refresh_GraphicsPipeline *graphicsPipeline
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -542,99 +542,117 @@ void Refresh_GetBufferData(
|
||||||
|
|
||||||
void Refresh_QueueDestroyTexture(
|
void Refresh_QueueDestroyTexture(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_Texture *texture
|
Refresh_Texture *texture
|
||||||
) {
|
) {
|
||||||
NULL_RETURN(device);
|
NULL_RETURN(device);
|
||||||
device->QueueDestroyTexture(
|
device->QueueDestroyTexture(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
|
commandBuffer,
|
||||||
texture
|
texture
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Refresh_QueueDestroySampler(
|
void Refresh_QueueDestroySampler(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_Sampler *sampler
|
Refresh_Sampler *sampler
|
||||||
) {
|
) {
|
||||||
NULL_RETURN(device);
|
NULL_RETURN(device);
|
||||||
device->QueueDestroySampler(
|
device->QueueDestroySampler(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
|
commandBuffer,
|
||||||
sampler
|
sampler
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Refresh_QueueDestroyBuffer(
|
void Refresh_QueueDestroyBuffer(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_Buffer *buffer
|
Refresh_Buffer *buffer
|
||||||
) {
|
) {
|
||||||
NULL_RETURN(device);
|
NULL_RETURN(device);
|
||||||
device->QueueDestroyBuffer(
|
device->QueueDestroyBuffer(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
|
commandBuffer,
|
||||||
buffer
|
buffer
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Refresh_QueueDestroyRenderTarget(
|
void Refresh_QueueDestroyRenderTarget(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_RenderTarget *renderTarget
|
Refresh_RenderTarget *renderTarget
|
||||||
) {
|
) {
|
||||||
NULL_RETURN(device);
|
NULL_RETURN(device);
|
||||||
device->QueueDestroyRenderTarget(
|
device->QueueDestroyRenderTarget(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
|
commandBuffer,
|
||||||
renderTarget
|
renderTarget
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Refresh_QueueDestroyFramebuffer(
|
void Refresh_QueueDestroyFramebuffer(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_Framebuffer *frameBuffer
|
Refresh_Framebuffer *frameBuffer
|
||||||
) {
|
) {
|
||||||
NULL_RETURN(device);
|
NULL_RETURN(device);
|
||||||
device->QueueDestroyFramebuffer(
|
device->QueueDestroyFramebuffer(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
|
commandBuffer,
|
||||||
frameBuffer
|
frameBuffer
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Refresh_QueueDestroyShaderModule(
|
void Refresh_QueueDestroyShaderModule(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_ShaderModule *shaderModule
|
Refresh_ShaderModule *shaderModule
|
||||||
) {
|
) {
|
||||||
NULL_RETURN(device);
|
NULL_RETURN(device);
|
||||||
device->QueueDestroyShaderModule(
|
device->QueueDestroyShaderModule(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
|
commandBuffer,
|
||||||
shaderModule
|
shaderModule
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Refresh_QueueDestroyRenderPass(
|
void Refresh_QueueDestroyRenderPass(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_RenderPass *renderPass
|
Refresh_RenderPass *renderPass
|
||||||
) {
|
) {
|
||||||
NULL_RETURN(device);
|
NULL_RETURN(device);
|
||||||
device->QueueDestroyRenderPass(
|
device->QueueDestroyRenderPass(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
|
commandBuffer,
|
||||||
renderPass
|
renderPass
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Refresh_QueueDestroyComputePipeline(
|
void Refresh_QueueDestroyComputePipeline(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_ComputePipeline *computePipeline
|
Refresh_ComputePipeline *computePipeline
|
||||||
) {
|
) {
|
||||||
NULL_RETURN(device);
|
NULL_RETURN(device);
|
||||||
device->QueueDestroyComputePipeline(
|
device->QueueDestroyComputePipeline(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
|
commandBuffer,
|
||||||
computePipeline
|
computePipeline
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Refresh_QueueDestroyGraphicsPipeline(
|
void Refresh_QueueDestroyGraphicsPipeline(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_GraphicsPipeline *graphicsPipeline
|
Refresh_GraphicsPipeline *graphicsPipeline
|
||||||
) {
|
) {
|
||||||
NULL_RETURN(device);
|
NULL_RETURN(device);
|
||||||
device->QueueDestroyGraphicsPipeline(
|
device->QueueDestroyGraphicsPipeline(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
|
commandBuffer,
|
||||||
graphicsPipeline
|
graphicsPipeline
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -361,46 +361,55 @@ struct Refresh_Device
|
||||||
|
|
||||||
void(*QueueDestroyTexture)(
|
void(*QueueDestroyTexture)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_Texture *texture
|
Refresh_Texture *texture
|
||||||
);
|
);
|
||||||
|
|
||||||
void(*QueueDestroySampler)(
|
void(*QueueDestroySampler)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_Sampler *sampler
|
Refresh_Sampler *sampler
|
||||||
);
|
);
|
||||||
|
|
||||||
void(*QueueDestroyBuffer)(
|
void(*QueueDestroyBuffer)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_Buffer *buffer
|
Refresh_Buffer *buffer
|
||||||
);
|
);
|
||||||
|
|
||||||
void(*QueueDestroyRenderTarget)(
|
void(*QueueDestroyRenderTarget)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_RenderTarget *renderTarget
|
Refresh_RenderTarget *renderTarget
|
||||||
);
|
);
|
||||||
|
|
||||||
void(*QueueDestroyFramebuffer)(
|
void(*QueueDestroyFramebuffer)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_Framebuffer *frameBuffer
|
Refresh_Framebuffer *frameBuffer
|
||||||
);
|
);
|
||||||
|
|
||||||
void(*QueueDestroyShaderModule)(
|
void(*QueueDestroyShaderModule)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_ShaderModule *shaderModule
|
Refresh_ShaderModule *shaderModule
|
||||||
);
|
);
|
||||||
|
|
||||||
void(*QueueDestroyRenderPass)(
|
void(*QueueDestroyRenderPass)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_RenderPass *renderPass
|
Refresh_RenderPass *renderPass
|
||||||
);
|
);
|
||||||
|
|
||||||
void(*QueueDestroyComputePipeline)(
|
void(*QueueDestroyComputePipeline)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_ComputePipeline *computePipeline
|
Refresh_ComputePipeline *computePipeline
|
||||||
);
|
);
|
||||||
|
|
||||||
void(*QueueDestroyGraphicsPipeline)(
|
void(*QueueDestroyGraphicsPipeline)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
|
Refresh_CommandBuffer *commandBuffer,
|
||||||
Refresh_GraphicsPipeline *graphicsPipeline
|
Refresh_GraphicsPipeline *graphicsPipeline
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue