lavapipe: EXT_memory_budget
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Wed, 17 May 2023 11:47:06 +0000 (07:47 -0400)
committerMarge Bot <emma+marge@anholt.net>
Tue, 23 May 2023 21:09:28 +0000 (21:09 +0000)
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23077>

docs/features.txt
src/gallium/frontends/lavapipe/lvp_device.c

index 483b8f3..a60e406 100644 (file)
@@ -574,7 +574,7 @@ Khronos extensions that are not part of any Vulkan version:
   VK_EXT_index_type_uint8                               DONE (anv, lvp, panvk, radv/gfx8+, v3dv, tu, vn)
   VK_EXT_line_rasterization                             DONE (anv, lvp, radv, tu, v3dv, vn)
   VK_EXT_load_store_op_none                             DONE (anv, radv, tu, v3dv, vn)
-  VK_EXT_memory_budget                                  DONE (anv, radv, tu, v3dv, vn)
+  VK_EXT_memory_budget                                  DONE (anv, lvp, radv, tu, v3dv, vn)
   VK_EXT_memory_priority                                DONE (radv)
   VK_EXT_mesh_shader                                    DONE (anv/gfx12.5+, radv)
   VK_EXT_multi_draw                                     DONE (anv, lvp, radv, tu, vn)
index a968307..98b1787 100644 (file)
@@ -166,6 +166,7 @@ static const struct vk_device_extension_table lvp_device_extensions_supported =
    .EXT_image_robustness                  = true,
    .EXT_index_type_uint8                  = true,
    .EXT_inline_uniform_block              = true,
+   .EXT_memory_budget                     = true,
    .EXT_multisampled_render_to_single_sampled = true,
    .EXT_multi_draw                        = true,
    .EXT_non_seamless_cube_map             = true,
@@ -1171,6 +1172,13 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceProperties2(
          props->shaderBinaryVersion = 1;
          break;
       }
+      case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT: {
+         VkPhysicalDeviceMemoryBudgetPropertiesEXT *props = (VkPhysicalDeviceMemoryBudgetPropertiesEXT*)ext;
+         os_get_total_physical_memory(&props->heapBudget[0]);
+         os_get_available_system_memory(&props->heapUsage[0]);
+         props->heapUsage[0] = props->heapBudget[0] - props->heapUsage[0];
+         break;
+      }
       case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: {
          VkPhysicalDeviceRobustness2PropertiesEXT *props =
             (VkPhysicalDeviceRobustness2PropertiesEXT *)ext;