dzn: Invalid minImageTransferGranularity specified on graphics/compute queue families
According to VkQueueFamilyProperties, graphics and compute capable queues must be declared with a minImageTransferGranularity
of (1,1,1)
. Currently, dozen is hardcoded to a value of (0,0,0)
. I'd create a PR to change this if I were confident that this wasn't an indication of some underlying requirement from D3D12.
This doesn't seem to cause any immediate damage, other than incorrect Vulkan validation messages being logged:
Validation Error: [ VUID-vkCmdCopyBufferToImage-imageOffset-07738 ] Object 0: handle = 0x2732694a1a0, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0xb5f1e000000013c7, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0xcae1744e | vkCmdCopyBufferToImage(): pRegions[0].imageExtent (w=1024, h=1024, d=1) must match the image subresource extents (w=1024, h=1024, d=4) when the command buffer's queue family image transfer granularity is (w=0, h=0, d=0). The Vulkan spec states: The imageOffset and imageExtent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties (https://vulkan.lunarg.com/doc/view/1.3.275.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdCopyBufferToImage-imageOffset-07738)