It's no problem to send fewer of these per MR. I have included the complete set because all but the last introduce no functional changes, and upstreaming a smaller set would leave the changes in a half-done state with unnecessary buffering.
-- v8: vkd3d: Store command list commands in a buffer until executed. vkd3d: Store WriteBufferImmediate() arguments in a buffer. vkd3d: Store ExecuteIndirect() arguments in a buffer. vkd3d: Store SetPredication() arguments in a buffer. vkd3d: Store ResolveQueryData() arguments in a buffer. vkd3d: Store EndQuery() arguments in a buffer. vkd3d: Store BeginQuery() arguments in a buffer. vkd3d: Store d3d12_command_list_clear_uav() arguments in a buffer. vkd3d: Store ClearRenderTargetView() arguments in a buffer. vkd3d: Store ClearDepthStencilView() arguments in a buffer. vkd3d: Store OMSetRenderTargets() arguments in a buffer. vkd3d: Store SOSetTargets() arguments in a buffer. vkd3d: Store IASetVertexBuffers() arguments in a buffer. vkd3d: Store IASetIndexBuffer() arguments in a buffer. vkd3d: Store d3d12_command_list_set_root_descriptor() arguments in a buffer. vkd3d: Store d3d12_command_list_set_root_cbv() arguments in a buffer. vkd3d: Store d3d12_command_list_set_root_constants() arguments in a buffer. vkd3d: Store d3d12_command_list_set_descriptor_table() arguments in a buffer. vkd3d: Store d3d12_command_list_set_root_signature() arguments in a buffer. vkd3d: Add an internal refcount to struct d3d12_root_signature. vkd3d: Store ResourceBarrier() arguments in a buffer. vkd3d: Store SetPipelineState() arguments in a buffer. vkd3d: Store OMSetStencilRef() arguments in a buffer. vkd3d: Store OMSetBlendFactor() arguments in a buffer. vkd3d: Store RSSetScissorRects() arguments in a buffer. vkd3d: Store RSSetViewports() arguments in a buffer. vkd3d: Store IASetPrimitiveTopology() arguments in a buffer. vkd3d: Store ResolveSubresource() arguments in a buffer. vkd3d: Store CopyResource() arguments in a buffer. vkd3d: Store CopyTextureRegion() arguments in a buffer. vkd3d: Store CopyBufferRegion() arguments in a buffer. vkd3d: Store Dispatch() arguments in a buffer. vkd3d: Store DrawIndexedInstanced() arguments in a buffer. vkd3d: Store DrawInstanced() arguments in a buffer.
This merge request has too many patches to be relayed via email. Please visit the URL below to see the contents of the merge request. https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/294
This whole series can be shelved until we need out-of-order query resolution, or more correct state promotion, or the potential performance gains are implemented and proven. The downside is we can't fix the validation layer spam from layout mismatches.
I think that fixing layout mismatches (and, in general, make the validation layer output cleaner) is quite valuable. In part because it might happen that at some point a driver actually cares about that, but also because having a clean validation output makes it easier to spot relevant validation errors. Would this MR solve that problem immediately, or is it just a prerequisite? If so, do you already have the code to fix layout mismatches?
On Wed Oct 18 13:18:04 2023 +0000, Giovanni Mascellani wrote:
This whole series can be shelved until we need out-of-order query
resolution, or more correct state promotion, or the potential performance gains are implemented and proven. The downside is we can't fix the validation layer spam from layout mismatches. I think that fixing layout mismatches (and, in general, make the validation layer output cleaner) is quite valuable. In part because it might happen that at some point a driver actually cares about that, but also because having a clean validation output makes it easier to spot relevant validation errors. Would this MR solve that problem immediately, or is it just a prerequisite? If so, do you already have the code to fix layout mismatches?
This MR is a prerequisite for fixing layout mismatches. I have a series of patches which resolve the layout issues.