Using a callback here works, but I'd prefer having explicit operation IDs.
This series has a small but significant performance cost, so I would like to avoid loading the handler pointer from a table.
That seems somewhat speculative, but in any case, why not add a vkd3d_array_reserve() call to d3d12_command_heap_init() then?
In a later patch the buffer cannot be reused simply, so this will be changed so the minimum is the largest of the command list's previous capacities, and the previous capacity is set to an initial value in `d3d12_command_heap_init()`.