layers: Improve DrawState Descriptor validation

Adding further validation for the contents of vkUpdateDescriptorSets() call.
Make sure that provided sampler/image/buffer data is consistent with type and layout of the update.

For imageView updates, make sure that aspect bits are set correctly for Color and DS images and make sure that the imageLayout is compatible with the underlying image format.

This results in 4 new validation checks:
DRAWSTATE_SAMPLER_DESCRIPTOR_ERROR
DRAWSTATE_IMAGEVIEW_DESCRIPTOR_ERROR
DRAWSTATE_BUFFERVIEW_DESCRIPTOR_ERROR
DRAWSTATE_BUFFERINFO_DESCRIPTOR_ERROR

Each of the new checks has a basic check to verify that the underlying Vk object (sampler, imageview, bufferview, buffer) for the respective type of check is valid. The ImageView error also includes cases where format of the image is not consistent with the layout (Color vs DS).

Also added some enhancements to existing check:
DRAWSTATE_INVALID_IMAGE_ASPECT - verify D&S bits not both set, but that one is for a DS layout, verify COLOR bit set for Color layout

This change included adding and/or enhancing the tracking in DrawState for image[View] and buffer[View].
There is documentation for each of the new checks.
There are new tests added for each of the new error cases as well as the ASPECT error case.
4 files changed