* The behaviour with this set to true is significantly better for lightly-
optimised code as comes out of HLSL legalisation, with little penalty for
other code.
* In this version the disassembly is no longer available from the driver via
this method. While it currently gives a normal error message, in future
versions it may start crashing so we block it now.
* We store the compiler used (when known) in shader debug info and use that to
select the compiler for editing as even higher priority than the default for a
given language/encoding combination.
* We also ensure that for known tools we add the input and output parameters
last, after any custom parameters, so that they are always present regardless
of what the user puts in.
* This allows us to more accurately display those that have been modified since
the last step, when a source-level step covers multiple instruction-level
steps.
* We also do our own sorting of source variables based on how recently they were
updated. This applies in both directions, so stepping backwards and
'reversing' a variable change will also count as a recent update.
* Since the source vars data doesn't change for a given instruction, we can pre-
calculate it and save time on re-calculating per-state.
* Note callstack *can* change per-state on SPIR-V where the same instruction can
be reached by different flow paths, so the callstack remains part of the per-
state data.
Metal replay serialization uses dummy wrapped metal objects ie.
case MetalChunk::MTLLibrary_newFunctionWithName:
return m_DummyReplayLibrary->Serialise_newFunctionWithName(ser, NULL, NULL);
case MetalChunk::MTLRenderCommandEncoder_setRenderPipelineState:
return m_DummyReplayRenderCommandEncoder->Serialise_setRenderPipelineState(ser, NULL);
case MetalChunk::MTLBlitCommandEncoder_endEncoding:
return m_DummyReplayBlitCommandEncoder->Serialise_endEncoding(ser);
Reuse the same constructor with NULL real metal object instead of making a new constructor