Binding a buffer with VK_BUFFER_USAGE_VERTEX_BUFFER_BIT as a storage buffer using push descriptors doesn't produce validation errors · Issue #413 · KhronosGroup/Vulkan-ValidationLayers (original) (raw)

My code was creating a buffer with VkBufferCreateInfo::usage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT and then using push descriptors to set it as follows:

    VkWriteDescriptorSet descriptors[1] = {};
    descriptors[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
    descriptors[0].dstBinding = 0;
    descriptors[0].descriptorCount = 1;
    descriptors[0].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
    descriptors[0].pBufferInfo = &vbInfo;

    vkCmdPushDescriptorSetKHR(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, triangleLayout, 0, ARRAYSIZE(descriptors), descriptors);

Validation layers produced no errors. This looks incorrect to me - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER should require that the buffer is created with VK_BUFFER_USAGE_STORAGE_BUFFER_BIT.