Vulkan-ValidationLayers icon indicating copy to clipboard operation
Vulkan-ValidationLayers copied to clipboard

BestPractices-PushConstants is reported for wrong command

Open StefanPoelloth opened this issue 1 year ago • 1 comments

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.

StefanPoelloth avatar Jul 10 '24 09:07 StefanPoelloth

we have tests that use both graphics/compute for normal core validation, but seem to be missing any for Best Practice :disappointed:

spencer-lunarg avatar Jul 10 '24 13:07 spencer-lunarg