BestPractices-PushConstants is reported for wrong command
Environment:
- OS: Windows 10 22H2
- GPU and driver version: 2080Ti 556.12
- SDK or header version if building from repo: 1.3.283
- Options enabled (synchronization, best practices, etc.): BestPractices
My renderer uses multiple dispatches and draws, one vkCmdDispatchIndirect uses push constants but doesnt write the whole pushconstants range. The vkCmdDrawIndexedIndirectCount after the vkCmdDispatchIndirect reports the problem.
After multiple vkCmdDispatchIndirect/vkCmdDispatch/vkCmdDrawIndexedIndirectCount calls the following commands happen:
- vkCmdDispatchIndirect which uses pushconstants but doesnt write the whole range.
- vkCmdDrawIndexedIndirectCount is called with a pipeline without pushconstants and reports the error below.
Expected behavior The validation warning should be reported for the vkCmdDispatchIndirect call.
Valid Usage ID validation layer: Validation Warning: [ BestPractices-PushConstants ] Object 0: handle = 0x23d61103790, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x1248c6a4 | vkCmdDrawIndexedIndirectCount(): Pipeline uses push constants with 104 bytes, but byte 88 was never set with vkCmdPushConstants.
we have tests that use both graphics/compute for normal core validation, but seem to be missing any for Best Practice :disappointed: