* Environment variables are not thread safe on linux, but unfortunately linux is
obssessed with them so we must hold our nose and interact with them.
* This change tries to move some modifications earlier into init before anything
else happens to reduce the risk of clashes, as well as removing some reads
that are unnecessary.
* ShaderVariable contents are not guaranteed to be 0-initialised outside of
their valid range and could contain leftovers from older IDs and calculations.
* The GL spec is absolutely and maliciously unhinged and the queried stencil
value will be clamped to 0 if no stencil texture is currently bound. This of
course will break in so many different places that will never get fixed, but
this minimal change at least allows autotests to run on mesa.
* This was previously only relevant for DXBC shaders that could have source
debug information but didn't prefer source debug unless optimisation was
disabled. This is inconsistent with how things are handled on SPIR-V and DXIL
and in general it's considered now that the benefits of debugging in source
outweigh the problems of debugging optimised code.
* The worst one was Persistant -> Persistent. This involved renaming
PersistentConfig but the impact of that is considered minimal enough to be
worth fixing.
* We enforce default and copy constructors where possible, this isn't very
pythonic but we can't use copy.deepcopy on our types.
* The structs that have specialised constructors e.g. FloatVector or Subresource
also have those documented though we have no way to enforce it.
* Some markers from the application may be unbalanced, or it might be unbalanced
if we began the capture with some markers already open (e.g. due to a push/pop
around present).
When MRTSS is used, resolveImageView must be NULL since resolve happens
into the same image:
> VUID-VkRenderingAttachmentInfo-imageView-06863
> If imageView is not VK_NULL_HANDLE, resolveMode is not VK_RESOLVE_MODE_NONE,
> the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT
> structure with the multisampledRenderToSingleSampledEnable field equal to
> VK_TRUE, and imageView has a sample count of VK_SAMPLE_COUNT_1_BIT,
> resolveImageView must be VK_NULL_HANDLE
Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
* Non-tightly packed arrays can be larger based on the stride than base size
multiplied by element count, e.g. with a 4-byte uint with a 16-byte array
stride.
D3D12EventNode contains all data for an Event during loading: APIEvent, ActionDescription, resource usage, debugMessages, annotations.
Action ID, Event ID is not computed whilst loading is happening.
At the end of Loading when the D3D12EventNode's have been flattened into linear submission order then the D3D12EventNode's are baked into RenderDoc replay APIEvents and Actions. Event IDs and Action IDs are assigned as part of the baking process