* We could put everything onto the replay thread but that's unnecessary back-
and-forth pingponging for a local capture.
* This is safe to use on the UI thread if it's local, but if it's remote it uses
the same connection as the replay controller so must happen on the replay
thread.
* We add a new helper (not exposed to swig) that handles this check, and for
python we wrap the returned ICaptureAccess in an invoker that ensures we are
on one of those threads.
- Not from the current action
- This makes Prev/Next button behaviour consistent when a marker is selected
- For Next if the action has children go to the first child, otherwise the action's nextAction
- For Prev if the action has children go to the previousAction of the first child, otherwise the action's previousAction
- Change asserts to if's and errors to prevent crashes in GetGroupsharedSrc(), SetGroupsharedSrc()
- for gsm check for valid memory access using dataOffset and dataSize
- the existing check for elemIdx >= numElems is not enough i.e. 2D arrays
- it had become incorrect over time
- disable DXIL debugger when DXC_COMPATIBLE_DISASM is enabled
- don't show RD Disassembly string when DXC_COMPATIBLE_DISASM is enabled
- previously only the resource used in the CalculateSampleGather operation would support arrays
- now includes array of Samplers, array of UAVs, array of SRVs which does not use CalculateSampleGather
- simulation support for arrays of Samplers (bounded and unbounded)
- simulation support for arrays of cbuffers (bounded and unbounded)
- add arrayed SRVs, UAVs, Samplers, cbuffers to the global state and UI
GL resource arrays are expanded in the GL reflection i.e. texture[0], texture[1] but they are collapsed in the SPIRV reflection.
For SPIRV resource arrays if matching the full name fails then try to match by the expanded name i.e. texture[<ARRAY_ELEMENT>]
* Linux doesn't support rebinding contexts between EGL (Android binding API) and
GLX (linux) even if no context is bound, so if one platform is used then the
other we can't bind our child contexts in order to delete objects when a
context is destroyed.
* We will have to do the same as we do if a different context is bound, and hope
that the driver tidies this stuff up for us when the context is deleted.
Keep the argument tuple owned by varfunc for its full per-call lifetime.
ConvertFunc destroys varfunc before ScopedFuncCall, so the tuple is released
exactly once while the GIL is still held, including failed callbacks.