radv: Add a trivial implementation of VK_KHR_deferred_host_operation
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Sun, 17 Jan 2021 12:37:50 +0000 (13:37 +0100)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tue, 19 Jan 2021 00:25:38 +0000 (01:25 +0100)
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8545>

src/amd/vulkan/radv_device.c
src/amd/vulkan/radv_extensions.py

index 7c10d24..2344bb7 100644 (file)
@@ -38,6 +38,7 @@
 #include "radv_shader.h"
 #include "radv_cs.h"
 #include "util/disk_cache.h"
+#include "vk_deferred_operation.h"
 #include "vk_util.h"
 #include <xf86drm.h>
 #include <amdgpu.h>
@@ -8363,3 +8364,42 @@ void radv_GetPrivateDataEXT(
        vk_object_base_get_private_data(&device->vk, objectType, objectHandle,
                                        privateDataSlot, pData);
 }
+
+VkResult radv_CreateDeferredOperationKHR(VkDevice _device,
+                                         const VkAllocationCallbacks* pAllocator,
+                                         VkDeferredOperationKHR* pDeferredOperation)
+{
+       RADV_FROM_HANDLE(radv_device, device, _device);
+       return vk_create_deferred_operation(&device->vk, pAllocator,
+                                           pDeferredOperation);
+}
+
+void radv_DestroyDeferredOperationKHR(VkDevice _device,
+                                      VkDeferredOperationKHR operation,
+                                      const VkAllocationCallbacks* pAllocator)
+{
+       RADV_FROM_HANDLE(radv_device, device, _device);
+       vk_destroy_deferred_operation(&device->vk, operation, pAllocator);
+}
+
+uint32_t radv_GetDeferredOperationMaxConcurrencyKHR(VkDevice _device,
+                                                    VkDeferredOperationKHR operation)
+{
+       RADV_FROM_HANDLE(radv_device, device, _device);
+       return vk_get_deferred_operation_max_concurrency(&device->vk, operation);
+}
+
+VkResult radv_GetDeferredOperationResultKHR(VkDevice _device,
+                                            VkDeferredOperationKHR operation)
+{
+       RADV_FROM_HANDLE(radv_device, device, _device);
+       return vk_get_deferred_operation_result(&device->vk, operation);
+}
+
+VkResult radv_DeferredOperationJoinKHR(VkDevice _device,
+                                       VkDeferredOperationKHR operation)
+{
+       RADV_FROM_HANDLE(radv_device, device, _device);
+       return vk_deferred_operation_join(&device->vk, operation);
+}
+
index 8452935..30e88c2 100644 (file)
@@ -62,6 +62,7 @@ EXTENSIONS = [
     Extension('VK_KHR_copy_commands2',                    1, True),
     Extension('VK_KHR_create_renderpass2',                1, True),
     Extension('VK_KHR_dedicated_allocation',              3, True),
+    Extension('VK_KHR_deferred_host_operations',          1, True),
     Extension('VK_KHR_depth_stencil_resolve',             1, True),
     Extension('VK_KHR_descriptor_update_template',        1, True),
     Extension('VK_KHR_device_group',                      4, True),