Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support VK_KHR_timeline_semaphore and VK_EXT_descriptor_indexing extensions #766

Closed
mxpv opened this issue Oct 27, 2019 · 6 comments
Closed
Labels
Completed Issue has been fixed, or enhancement implemented. Enhancement

Comments

@mxpv
Copy link

mxpv commented Oct 27, 2019

The Vulkan 1.1.124 spec introduces a very nice extension - VK_KHR_timeline_semaphore (pdf, issue, commit). It would be great to support it in MoltenVK.

@oscarbg
Copy link

oscarbg commented Oct 25, 2020

+1!!
recent VKD3D builds need it.. see details:
#214 (comment)

@billhollings
Copy link
Contributor

@oscarbg Thanks for identifying the uptick in priority.

@K0bin
Copy link

K0bin commented Oct 25, 2020

FYI vkd3d-proton also needs descriptor indexing.

@billhollings
Copy link
Contributor

FYI vkd3d-proton also needs descriptor indexing.

Thanks. Development on VK_EXT_descriptor_indexing is underway already, and should be released in next couple of weeks.

@billhollings billhollings changed the title Support VK_KHR_timeline_semaphore extension Support VK_KHR_timeline_semaphore and VK_EXT_descriptor_indexing extensions Oct 25, 2020
@cdavis5e
Copy link
Collaborator

#1124 adds support for VK_KHR_timeline_semaphore.

@oscarbg
Copy link

oscarbg commented Nov 2, 2020

Hi,
just putting all needed VK_EXT_descriptor_indexing features by VKD3D, if not fails with:
"Insufficient descriptor indexing support"
I have seen this on Intel Windows driver as it doesn't currently support VKD3D.. hope Metal allows exposing all features needed by VKD3D even on Intel GPUs..

features can be seen in vkd3d_bindless_state_init:
checks all VKD3D_BINDLESS_SRV | VKD3D_BINDLESS_UAV | VKD3D_BINDLESS_CBV | VKD3D_BINDLESS_SAMPLER flags set by
vkd3d_bindless_state_get_bindless_flags function which depend on descriptor indexing features as:

 if (!vk_info->EXT_descriptor_indexing ||
            !device_info->descriptor_indexing_features.runtimeDescriptorArray ||
            !device_info->descriptor_indexing_features.descriptorBindingPartiallyBound ||
            !device_info->descriptor_indexing_features.descriptorBindingUpdateUnusedWhilePending ||
            !device_info->descriptor_indexing_features.descriptorBindingVariableDescriptorCount)
        return 0;

    if (device_info->descriptor_indexing_properties.maxPerStageDescriptorUpdateAfterBindSampledImages >= 1000000 &&
            device_info->descriptor_indexing_features.descriptorBindingSampledImageUpdateAfterBind &&
            device_info->descriptor_indexing_features.descriptorBindingUniformTexelBufferUpdateAfterBind &&
            device_info->descriptor_indexing_features.shaderSampledImageArrayNonUniformIndexing &&
            device_info->descriptor_indexing_features.shaderUniformTexelBufferArrayNonUniformIndexing)
        flags |= VKD3D_BINDLESS_SAMPLER | VKD3D_BINDLESS_SRV;

    if (device_info->descriptor_indexing_properties.maxPerStageDescriptorUpdateAfterBindStorageImages >= 1000000 &&
            device_info->descriptor_indexing_features.descriptorBindingStorageImageUpdateAfterBind &&
            device_info->descriptor_indexing_features.descriptorBindingStorageTexelBufferUpdateAfterBind &&
            device_info->descriptor_indexing_features.shaderStorageImageArrayNonUniformIndexing &&
            device_info->descriptor_indexing_features.shaderStorageTexelBufferArrayNonUniformIndexing)
        flags |= VKD3D_BINDLESS_UAV;

    if (device_info->descriptor_indexing_properties.maxPerStageDescriptorUpdateAfterBindUniformBuffers >= 1000000 &&
            device_info->descriptor_indexing_features.descriptorBindingUniformBufferUpdateAfterBind &&
            device_info->descriptor_indexing_features.shaderUniformBufferArrayNonUniformIndexing)
        flags |= VKD3D_BINDLESS_CBV;
    else if (device_info->descriptor_indexing_properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers >= 1000000 &&
            device_info->descriptor_indexing_features.descriptorBindingStorageBufferUpdateAfterBind &&
            device_info->descriptor_indexing_features.shaderStorageBufferArrayNonUniformIndexing)
        flags |= VKD3D_BINDLESS_CBV | VKD3D_BINDLESS_CBV_AS_SSBO;

@billhollings billhollings added the Completed Issue has been fixed, or enhancement implemented. label Oct 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Completed Issue has been fixed, or enhancement implemented. Enhancement
Projects
None yet
Development

No branches or pull requests

5 participants