• Home
  • Raw
  • Download

Lines Matching refs:backing

60    struct zink_sparse_backing *backing;  member
312 list_for_each_entry(struct zink_sparse_backing, backing, &bo->u.sparse.backing, list) { in sparse_backing_alloc()
313 for (unsigned idx = 0; idx < backing->num_chunks; ++idx) { in sparse_backing_alloc()
314 uint32_t cur_num_pages = backing->chunks[idx].end - backing->chunks[idx].begin; in sparse_backing_alloc()
317 best_backing = backing; in sparse_backing_alloc()
365 list_add(&best_backing->list, &bo->u.sparse.backing); in sparse_backing_alloc()
387 struct zink_sparse_backing *backing) in sparse_free_backing_buffer() argument
389 bo->u.sparse.num_backing_pages -= backing->bo->base.size / ZINK_SPARSE_BUFFER_PAGE_SIZE; in sparse_free_backing_buffer()
391 list_del(&backing->list); in sparse_free_backing_buffer()
392 zink_bo_unref(screen, backing->bo); in sparse_free_backing_buffer()
393 FREE(backing->chunks); in sparse_free_backing_buffer()
394 FREE(backing); in sparse_free_backing_buffer()
403 struct zink_sparse_backing *backing, in sparse_backing_free() argument
408 unsigned high = backing->num_chunks; in sparse_backing_free()
414 if (backing->chunks[mid].begin >= start_page) in sparse_backing_free()
420 assert(low >= backing->num_chunks || end_page <= backing->chunks[low].begin); in sparse_backing_free()
421 assert(low == 0 || backing->chunks[low - 1].end <= start_page); in sparse_backing_free()
423 if (low > 0 && backing->chunks[low - 1].end == start_page) { in sparse_backing_free()
424 backing->chunks[low - 1].end = end_page; in sparse_backing_free()
426 if (low < backing->num_chunks && end_page == backing->chunks[low].begin) { in sparse_backing_free()
427 backing->chunks[low - 1].end = backing->chunks[low].end; in sparse_backing_free()
428 memmove(&backing->chunks[low], &backing->chunks[low + 1], in sparse_backing_free()
429 sizeof(*backing->chunks) * (backing->num_chunks - low - 1)); in sparse_backing_free()
430 backing->num_chunks--; in sparse_backing_free()
432 } else if (low < backing->num_chunks && end_page == backing->chunks[low].begin) { in sparse_backing_free()
433 backing->chunks[low].begin = start_page; in sparse_backing_free()
435 if (backing->num_chunks >= backing->max_chunks) { in sparse_backing_free()
436 unsigned new_max_chunks = 2 * backing->max_chunks; in sparse_backing_free()
438 REALLOC(backing->chunks, in sparse_backing_free()
439 sizeof(*backing->chunks) * backing->max_chunks, in sparse_backing_free()
440 sizeof(*backing->chunks) * new_max_chunks); in sparse_backing_free()
444 backing->max_chunks = new_max_chunks; in sparse_backing_free()
445 backing->chunks = new_chunks; in sparse_backing_free()
448 memmove(&backing->chunks[low + 1], &backing->chunks[low], in sparse_backing_free()
449 sizeof(*backing->chunks) * (backing->num_chunks - low)); in sparse_backing_free()
450 backing->chunks[low].begin = start_page; in sparse_backing_free()
451 backing->chunks[low].end = end_page; in sparse_backing_free()
452 backing->num_chunks++; in sparse_backing_free()
455 if (backing->num_chunks == 1 && backing->chunks[0].begin == 0 && in sparse_backing_free()
456 backing->chunks[0].end == backing->bo->base.size / ZINK_SPARSE_BUFFER_PAGE_SIZE) in sparse_backing_free()
457 sparse_free_backing_buffer(screen, bo, backing); in sparse_backing_free()
469 while (!list_is_empty(&bo->u.sparse.backing)) { in bo_sparse_destroy()
471 container_of(bo->u.sparse.backing.next, in bo_sparse_destroy()
517 list_inithead(&bo->u.sparse.backing); in bo_sparse_create()
728 if (comm[va_page].backing) { in zink_bo_commit()
735 while (va_page < end_va_page && !comm[va_page].backing) in zink_bo_commit()
740 struct zink_sparse_backing *backing; in zink_bo_commit() local
744 backing = sparse_backing_alloc(screen, bo, &backing_start, &backing_size); in zink_bo_commit()
745 if (!backing) { in zink_bo_commit()
749 if (!do_commit_single(screen, res, backing->bo, in zink_bo_commit()
753 ok = sparse_backing_free(screen, bo, backing, backing_start, backing_size); in zink_bo_commit()
761 comm[span_va_page].backing = backing; in zink_bo_commit()
778 struct zink_sparse_backing *backing; in zink_bo_commit() local
783 if (!comm[va_page].backing) { in zink_bo_commit()
789 backing = comm[va_page].backing; in zink_bo_commit()
791 comm[va_page].backing = NULL; in zink_bo_commit()
797 comm[va_page].backing == backing && in zink_bo_commit()
799 comm[va_page].backing = NULL; in zink_bo_commit()
804 if (!sparse_backing_free(screen, bo, backing, backing_start, span_pages)) { in zink_bo_commit()