radv: Add support for VK_KHR_variable_pointers.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Wed, 19 Jul 2017 21:55:58 +0000 (23:55 +0200)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Thu, 20 Jul 2017 07:13:01 +0000 (09:13 +0200)
Just a trivial enable.

Signed-off-by: Bas Nieuwenhuizen <basni@google.com>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_device.c
src/amd/vulkan/radv_entrypoints_gen.py
src/amd/vulkan/radv_pipeline.c

index e3655dabe3a29f1260627ec90e64c856d9651924..d87be66da8b6dc0f463e86a1b8f56e6aaa802123 100644 (file)
@@ -157,6 +157,10 @@ static const VkExtensionProperties common_device_extensions[] = {
                .extensionName = VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME,
                .specVersion = 1,
        },
+       {
+               .extensionName = VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME,
+               .specVersion = 1,
+       },
 };
 
 static VkResult
@@ -589,6 +593,18 @@ void radv_GetPhysicalDeviceFeatures2KHR(
        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);
 }
 
index ec798157f94ad6f97179b69a3a23a1e777d50d79..61b23281501bdbaae150bc443253853b5f52f46b 100644 (file)
@@ -48,6 +48,7 @@ supported_extensions = [
    '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
index 90cd716047a4a4627a30040690b6638ec3c38351..c920cc35be14e1466652b89235b4d8b627fdf3fc 100644 (file)
@@ -230,6 +230,7 @@ radv_shader_compile_to_nir(struct radv_device *device,
                        .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,