#endif
}
-static uint64_t
-get_available_system_memory()
-{
- char *meminfo = os_read_file("/proc/meminfo", NULL);
- if (!meminfo)
- return 0;
-
- char *str = strstr(meminfo, "MemAvailable:");
- if (!str) {
- free(meminfo);
- return 0;
- }
-
- uint64_t kb_mem_available;
- if (sscanf(str, "MemAvailable: %" PRIx64, &kb_mem_available) == 1) {
- free(meminfo);
- return kb_mem_available << 10;
- }
-
- free(meminfo);
- return 0;
-}
-
static VkResult
anv_physical_device_try_create(struct anv_instance *instance,
drmDevicePtr drm_device,
device->has_reg_timestamp = anv_gem_reg_read(fd, TIMESTAMP | I915_REG_READ_8B_WA,
&u64_ignore) == 0;
- device->has_mem_available = get_available_system_memory() != 0;
+ uint64_t avail_mem;
+ device->has_mem_available = os_get_available_system_memory(&avail_mem);
device->always_flush_cache =
driQueryOptionb(&instance->dri_options, "always_flush_cache");
VkPhysicalDeviceMemoryBudgetPropertiesEXT *memoryBudget)
{
ANV_FROM_HANDLE(anv_physical_device, device, physicalDevice);
- uint64_t sys_available = get_available_system_memory();
- assert(sys_available > 0);
+ uint64_t sys_available;
+ ASSERTED bool has_available_memory =
+ os_get_available_system_memory(&sys_available);
+ assert(has_available_memory);
VkDeviceSize total_heaps_size = 0;
for (size_t i = 0; i < device->memory.heap_count; i++)