.extensionName = VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME,
.specVersion = 1,
},
+ {
+ .extensionName = VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME,
+ .specVersion = 1,
+ },
};
static VkResult
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures2KHR *pFeatures)
{
+ vk_foreach_struct(ext, pFeatures->pNext) {
+ switch (ext->sType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR: {
+ VkPhysicalDeviceVariablePointerFeaturesKHR *features = (void *)ext;
+ features->variablePointersStorageBuffer = true;
+ features->variablePointers = false;
+ break;
+ }
+ default:
+ break;
+ }
+ }
return radv_GetPhysicalDeviceFeatures(physicalDevice, &pFeatures->features);
}
'VK_KHR_external_memory',
'VK_KHR_external_memory_fd',
'VK_KHR_storage_buffer_storage_class',
+ 'VK_KHR_variable_pointers',
]
# We generate a static hash table for entry point lookup
.image_write_without_format = true,
.tessellation = true,
.int64 = true,
+ .variable_pointers = true,
};
entry_point = spirv_to_nir(spirv, module->size / 4,
spec_entries, num_spec_entries,