The rules for merging semantics into an array were not strict enough.
If either the type, interpolation mode, or size is different, or if it
is not using a register's x component, then we can't combine it. Also,
the rules for marking a semantic as array length 1 were too strict,
resulting in some semantics packing into other registers incorrectly.
* This also fixes a case where pipelines with dynamic stencil masks wouldn't
have the masks properly set for stencil counting and we wouldn't get shader
output properly.
* This seems to only happen in SM5.1 builds for some reason, if an array has 0
length and 1 stride then we try to auto-calculate the stride and length when
needed in structs.
* We change to use VarType instead of CompType for signature parameters which
allows us to represent different types of variables beyond just
unsigned/signed integer and float.
- Filter events that don't match image view range
- Leave some tests in the original state. Disable depth test and write,
this causes the individual fragments that failed the depth test to
show up, but the post modification value for them will be accurate.
- Fix a couple of things: delete TestsFailedCallback, and fix the
padding
* This would be quite an edge case in itself if our added descriptors pushed it
over the limit, but this is much more likely to happen on drivers where
update-after-bind descriptor sets have much higher limits than normal
descriptor sets. We cannot safely use update-after-bind descriptors, so
instead we check to see if the limits are exceeded and bail out.
* Its presence makes it invalid to have any of the components, rather than
trying to merge any of them that might be present we can instead just add the
individual VkPhysicalDeviceBufferDeviceAddressFeatures which is still legal.
Use a separate compute shader module for MSAA copy, and output
directly into the destination buffer instead of creating
staging resources.
Support case where there is no depth stencil attachment to get post mod
values in per fragment reporting. Previously used the original
framebuffer that might not have had depth/stencil view, so couldn't
count the fragments. Now use the sub image.
To get the post mod color, we need to blend with the premod color, so
we use vkCmdCopyImage to copy from the original image.