Skip to content

RFC: d3d12: Add a new flag PIPE_FLUSH_FINISH and use it to trigger flusing and resetting all batches before a resize

Gert Wollny requested to merge gerddie/mesa:wait-on-finish-flush into msclc-d3d12

In d3d12_wgl_framebuffer_resize we call flush with the flag PIPE_FLUSH_HINT_FINISH because we expect that all draw calls will be done and all the references to the resources used by the swapchain will be released after waiting for the fence.

However, if we call only d3d12_flush_cmdlist, it will set a fence, and when the draw call finishes and the fence is signalled the batches will not be reset, because this is done when the batch is started.

So call flush withe the (new) flag PIPE_FLUSH_FINISH instead and call d3d12_flush_cmdlist_wait instead in this case because in this call all pending batches will be flushed and reset so that on return no additional references are hold on the swapchain resources and the resize can go forward.

With that, there is no need to wait for a fence anymore, so drop it.

Fixes #48

Edited by Gert Wollny

Merge request reports