Per Function compute:
labelToBlockIndex container : to go from a label to its block index
blockIndexToLabel container : to go from block index to its label
For each Block store the starting instruction index
Changed array offset handling
Added TODO about handling double vectors, the load might not start at x component
Improved handling of variable offset for when the offset is within a variable i.e. matrix row, array element.
Removed unused function GetCBufferVariableTypeName()
Added
bool D3D12ShaderDebug::CalculateMathIntrinsic(WrappedID3D12Device* device, MathOp mathOp, const ShaderVariable &input, ShaderVariable &output1, ShaderVariable &output2);
which is used by DXBC and DXIL ShaderDebugger CalculateMathIntrinsic methods
Extended shaderdebug.hlsl math intrinsics to support DXIL math opcodes
Use custom math operation values for DXBC and DXIL, not the DXBC OpCode value.
Use custom sampler operation values for DXBC and DXIL, not the DXBC OpCode value.
This changes DXBCDebug::DebugAPIWrapper, updated D3D11DebugAPIWrapper to match changes to interface and shader math and sample operation values.
* We still want to have a ResourceId for a command buffer to reflect push
constants - it doesn't matter which command buffer it is currently. If push
constants are present, but never pushed, we should still reflect it.
There are scenarios (specifically when running in anonymous containers) where there is no entry in the password file for the current user, this causes getpwuid() to return a NULL pointer promptly causing a segfault.
This change detects this and then attempts to read the $HOME env var, and if that fails it falls back to the temp dir. Although the temp dir is not valid as a home dir, it is a valid path and so can be used by the calling function.
* For our purposes we can trivially treat this as equal to OpExtInst since we
mostly don't care about forward references and don't use the debug information
where forward references are likely to be generated (class member function
type information).
* We use a different function for serialising addresses via ID+offset compared
to the normal lookup, since on serialise we need to allow out of bounds
references as that's legal in D3D12 too. If we have a mismatch here we could
mark one buffer referenced but serialise as another and be unable to translate
the address.
Fallback to use the embedded compiled shader if the source shader fails to compile
Only try to get pixel history DXIL shaders for captures that use DXIL