radv: factor out radv_alloc_memory
authorAndres Rodriguez <andresx7@gmail.com>
Fri, 20 Oct 2017 22:42:12 +0000 (18:42 -0400)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Fri, 20 Oct 2017 23:15:49 +0000 (01:15 +0200)
This allows us to pass extra parameters to the memory allocation
operation that are not defined in the vulkan spec. This is useful for
internal usage.

Signed-off-by: Andres Rodriguez <andresx7@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_device.c
src/amd/vulkan/radv_private.h

index 3748d51488f64a848602b46e16e596f50de84575..5e6e9dcdb588e3c0ae0fbeebf242261a86f61826 100644 (file)
@@ -2048,11 +2048,11 @@ bool radv_get_memory_fd(struct radv_device *device,
                                         pFD);
 }
 
-VkResult radv_AllocateMemory(
-       VkDevice                                    _device,
-       const VkMemoryAllocateInfo*                 pAllocateInfo,
-       const VkAllocationCallbacks*                pAllocator,
-       VkDeviceMemory*                             pMem)
+VkResult radv_alloc_memory(VkDevice                        _device,
+                          const VkMemoryAllocateInfo*     pAllocateInfo,
+                          const VkAllocationCallbacks*    pAllocator,
+                          enum radv_mem_flags_bits        mem_flags,
+                          VkDeviceMemory*                 pMem)
 {
        RADV_FROM_HANDLE(radv_device, device, _device);
        struct radv_device_memory *mem;
@@ -2134,6 +2134,15 @@ fail:
        return result;
 }
 
+VkResult radv_AllocateMemory(
+       VkDevice                                    _device,
+       const VkMemoryAllocateInfo*                 pAllocateInfo,
+       const VkAllocationCallbacks*                pAllocator,
+       VkDeviceMemory*                             pMem)
+{
+       return radv_alloc_memory(_device, pAllocateInfo, pAllocator, 0, pMem);
+}
+
 void radv_FreeMemory(
        VkDevice                                    _device,
        VkDeviceMemory                              _mem,
index 47a068b5597cb48be57019135c4cb7492330f5ff..a4e52b253066997aff3f8ae910d84f42cf372609 100644 (file)
@@ -106,6 +106,11 @@ enum radv_mem_type {
        RADV_MEM_TYPE_COUNT
 };
 
+enum radv_mem_flags_bits {
+       /* enable implicit synchronization when accessing the underlying bo */
+       RADV_MEM_IMPLICIT_SYNC = 1 << 0,
+};
+
 #define radv_printflike(a, b) __attribute__((__format__(__printf__, a, b)))
 
 static inline uint32_t
@@ -946,6 +951,12 @@ void radv_cmd_buffer_trace_emit(struct radv_cmd_buffer *cmd_buffer);
 bool radv_get_memory_fd(struct radv_device *device,
                        struct radv_device_memory *memory,
                        int *pFD);
+VkResult radv_alloc_memory(VkDevice _device,
+                          const VkMemoryAllocateInfo* pAllocateInfo,
+                          const VkAllocationCallbacks* pAllocator,
+                          enum radv_mem_flags_bits flags,
+                          VkDeviceMemory* pMem);
+
 /*
  * Takes x,y,z as exact numbers of invocations, instead of blocks.
  *