lavapipe: KHR_map_memory2
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Tue, 12 Sep 2023 16:10:13 +0000 (12:10 -0400)
committerMarge Bot <emma+marge@anholt.net>
Wed, 13 Sep 2023 02:01:29 +0000 (02:01 +0000)
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25181>

src/gallium/frontends/lavapipe/lvp_device.c

index af235d1..4e57c01 100644 (file)
@@ -123,6 +123,7 @@ static const struct vk_device_extension_table lvp_device_extensions_supported =
    .KHR_maintenance3                      = true,
    .KHR_maintenance4                      = true,
    .KHR_maintenance5                      = true,
+   .KHR_map_memory2                       = true,
    .KHR_multiview                         = true,
    .KHR_push_descriptor                   = true,
    .KHR_pipeline_library                  = true,
@@ -1793,16 +1794,13 @@ VKAPI_ATTR void VKAPI_CALL lvp_FreeMemory(
 
 }
 
-VKAPI_ATTR VkResult VKAPI_CALL lvp_MapMemory(
-   VkDevice                                    _device,
-   VkDeviceMemory                              _memory,
-   VkDeviceSize                                offset,
-   VkDeviceSize                                size,
-   VkMemoryMapFlags                            flags,
-   void**                                      ppData)
+VKAPI_ATTR VkResult VKAPI_CALL lvp_MapMemory2KHR(
+    VkDevice                                    _device,
+    const VkMemoryMapInfoKHR*                   pMemoryMapInfo,
+    void**                                      ppData)
 {
    LVP_FROM_HANDLE(lvp_device, device, _device);
-   LVP_FROM_HANDLE(lvp_device_memory, mem, _memory);
+   LVP_FROM_HANDLE(lvp_device_memory, mem, pMemoryMapInfo->memory);
    void *map;
    if (mem == NULL) {
       *ppData = NULL;
@@ -1811,21 +1809,22 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_MapMemory(
 
    map = device->pscreen->map_memory(device->pscreen, mem->pmem);
 
-   *ppData = (char *)map + offset;
+   *ppData = (char *)map + pMemoryMapInfo->offset;
    return VK_SUCCESS;
 }
 
-VKAPI_ATTR void VKAPI_CALL lvp_UnmapMemory(
-   VkDevice                                    _device,
-   VkDeviceMemory                              _memory)
+VKAPI_ATTR VkResult VKAPI_CALL lvp_UnmapMemory2KHR(
+    VkDevice                                    _device,
+    const VkMemoryUnmapInfoKHR*                 pMemoryUnmapInfo)
 {
    LVP_FROM_HANDLE(lvp_device, device, _device);
-   LVP_FROM_HANDLE(lvp_device_memory, mem, _memory);
+   LVP_FROM_HANDLE(lvp_device_memory, mem, pMemoryUnmapInfo->memory);
 
    if (mem == NULL)
-      return;
+      return VK_SUCCESS;
 
    device->pscreen->unmap_memory(device->pscreen, mem->pmem);
+   return VK_SUCCESS;
 }
 
 VKAPI_ATTR VkResult VKAPI_CALL lvp_FlushMappedMemoryRanges(