Perhaps unsurprisingly, I'm seeing a lot of similarities between this and wined3d_command_list/wined3d_deferred_context. That code has the advantage of having seen a fair amount of production testing, as well as being familiar to existing wined3d contributors. Unless there's a compelling argument to deviate from that setup, could we please try to keep the vkd3d implementation similar to that one?