Skip to content

Device with no maintenance 4 support incorrectly trying to use it. #506

@jmccarthy634

Description

@jmccarthy634

This may be a mistake on how we are using the API, but the logic in vmaFindMemoryTypeIndexForBufferInfo (and possibly elsewhere, I didn't check) that decides is as follows:

#if VMA_KHR_MAINTENANCE4 || VMA_VULKAN_VERSION >= 1003000
    if(funcs->vkGetDeviceBufferMemoryRequirements)

We currently have VMA_STATIC_VULKAN_FUNCTIONS for our application set to false and provide our own function pointers to VMA, which we do so unconditionally if they are compiled in. We then provide VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT only if the device in question actually has support for the extension. On some older devices it looks like we have valid function pointers for some functions even though we can't use them, or at the very least the return value from vkGetInstance/DeviceProcAddress for them is not null. Obviously as a workaround we can just not set the function pointers in that case, but maybe VMA should also be checking against m_UseKhrMaintenance4 before trying to call these functions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions