Lines Matching refs:bo_gem
418 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
420 if (bo_gem->relocs == NULL && bo_gem->softpin_target == NULL) {
421 DBG("%2d: %d %s(%s)\n", i, bo_gem->gem_handle,
422 bo_gem->kflags & EXEC_OBJECT_PINNED ? "*" : "",
423 bo_gem->name);
427 for (j = 0; j < bo_gem->reloc_count; j++) {
428 drm_intel_bo *target_bo = bo_gem->reloc_target_info[j].bo;
435 bo_gem->gem_handle,
436 bo_gem->kflags & EXEC_OBJECT_PINNED ? "*" : "",
437 bo_gem->name,
438 upper_32_bits(bo_gem->relocs[j].offset),
439 lower_32_bits(bo_gem->relocs[j].offset),
444 bo_gem->relocs[j].delta);
447 for (j = 0; j < bo_gem->softpin_target_count; j++) {
448 drm_intel_bo *target_bo = bo_gem->softpin_target[j];
454 bo_gem->gem_handle,
455 bo_gem->kflags & EXEC_OBJECT_PINNED ? "*" : "",
456 bo_gem->name,
468 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
470 atomic_inc(&bo_gem->refcount);
485 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *)bo;
493 if (bo_gem->validate_index != -1) {
494 bufmgr_gem->exec2_objects[bo_gem->validate_index].flags |= flags;
515 bo_gem->validate_index = index;
517 bufmgr_gem->exec2_objects[index].handle = bo_gem->gem_handle;
518 bufmgr_gem->exec2_objects[index].relocation_count = bo_gem->reloc_count;
519 bufmgr_gem->exec2_objects[index].relocs_ptr = (uintptr_t)bo_gem->relocs;
522 bufmgr_gem->exec2_objects[index].flags = bo_gem->kflags | flags;
534 drm_intel_bo_gem *bo_gem,
539 assert(!bo_gem->used_as_reloc_target);
547 size = bo_gem->bo.size;
548 if (bufmgr_gem->gen < 4 && bo_gem->tiling_mode != I915_TILING_NONE) {
566 bo_gem->reloc_tree_size = size + alignment;
572 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
579 bo_gem->relocs = malloc(max_relocs *
581 bo_gem->reloc_target_info = malloc(max_relocs *
583 if (bo_gem->relocs == NULL || bo_gem->reloc_target_info == NULL) {
584 bo_gem->has_error = true;
586 free (bo_gem->relocs);
587 bo_gem->relocs = NULL;
589 free (bo_gem->reloc_target_info);
590 bo_gem->reloc_target_info = NULL;
602 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
606 if (bo_gem->reusable && bo_gem->idle)
610 busy.handle = bo_gem->gem_handle;
614 bo_gem->idle = !busy.busy;
623 drm_intel_bo_gem *bo_gem, int state)
628 madv.handle = bo_gem->gem_handle;
651 drm_intel_bo_gem *bo_gem;
653 bo_gem = DRMLISTENTRY(drm_intel_bo_gem,
656 (bufmgr_gem, bo_gem, I915_MADV_DONTNEED))
659 DRMLISTDEL(&bo_gem->head);
660 drm_intel_gem_bo_free(&bo_gem->bo);
674 drm_intel_bo_gem *bo_gem;
709 bo_gem = DRMLISTENTRY(drm_intel_bo_gem,
711 DRMLISTDEL(&bo_gem->head);
713 bo_gem->bo.align = alignment;
723 bo_gem = DRMLISTENTRY(drm_intel_bo_gem,
725 if (!drm_intel_gem_bo_busy(&bo_gem->bo)) {
727 DRMLISTDEL(&bo_gem->head);
733 (bufmgr_gem, bo_gem, I915_MADV_WILLNEED)) {
734 drm_intel_gem_bo_free(&bo_gem->bo);
740 if (drm_intel_gem_bo_set_tiling_internal(&bo_gem->bo,
743 drm_intel_gem_bo_free(&bo_gem->bo);
752 bo_gem = calloc(1, sizeof(*bo_gem));
753 if (!bo_gem)
758 DRMINITLISTHEAD(&bo_gem->vma_list);
760 bo_gem->bo.size = bo_size;
769 free(bo_gem);
773 bo_gem->gem_handle = create.handle;
775 gem_handle, sizeof(bo_gem->gem_handle),
776 bo_gem);
778 bo_gem->bo.handle = bo_gem->gem_handle;
779 bo_gem->bo.bufmgr = bufmgr;
780 bo_gem->bo.align = alignment;
782 bo_gem->tiling_mode = I915_TILING_NONE;
783 bo_gem->swizzle_mode = I915_BIT_6_SWIZZLE_NONE;
784 bo_gem->stride = 0;
786 if (drm_intel_gem_bo_set_tiling_internal(&bo_gem->bo,
792 bo_gem->name = name;
793 atomic_set(&bo_gem->refcount, 1);
794 bo_gem->validate_index = -1;
795 bo_gem->reloc_tree_fences = 0;
796 bo_gem->used_as_reloc_target = false;
797 bo_gem->has_error = false;
798 bo_gem->reusable = true;
800 drm_intel_bo_gem_set_in_aperture_size(bufmgr_gem, bo_gem, alignment);
804 bo_gem->gem_handle, bo_gem->name, size);
806 return &bo_gem->bo;
809 drm_intel_gem_bo_free(&bo_gem->bo);
899 drm_intel_bo_gem *bo_gem;
909 bo_gem = calloc(1, sizeof(*bo_gem));
910 if (!bo_gem)
913 atomic_set(&bo_gem->refcount, 1);
914 DRMINITLISTHEAD(&bo_gem->vma_list);
916 bo_gem->bo.size = size;
930 free(bo_gem);
936 bo_gem->gem_handle = userptr.handle;
937 bo_gem->bo.handle = bo_gem->gem_handle;
938 bo_gem->bo.bufmgr = bufmgr;
939 bo_gem->is_userptr = true;
940 bo_gem->bo.virtual = addr;
942 bo_gem->user_virtual = addr;
943 bo_gem->tiling_mode = I915_TILING_NONE;
944 bo_gem->swizzle_mode = I915_BIT_6_SWIZZLE_NONE;
945 bo_gem->stride = 0;
948 gem_handle, sizeof(bo_gem->gem_handle),
949 bo_gem);
951 bo_gem->name = name;
952 bo_gem->validate_index = -1;
953 bo_gem->reloc_tree_fences = 0;
954 bo_gem->used_as_reloc_target = false;
955 bo_gem->has_error = false;
956 bo_gem->reusable = false;
958 drm_intel_bo_gem_set_in_aperture_size(bufmgr_gem, bo_gem, 0);
963 addr, bo_gem->gem_handle, bo_gem->name,
966 return &bo_gem->bo;
1067 drm_intel_bo_gem *bo_gem;
1079 &handle, sizeof(handle), bo_gem);
1080 if (bo_gem) {
1081 drm_intel_gem_bo_reference(&bo_gem->bo);
1093 bo_gem = NULL;
1101 &open_arg.handle, sizeof(open_arg.handle), bo_gem);
1102 if (bo_gem) {
1103 drm_intel_gem_bo_reference(&bo_gem->bo);
1107 bo_gem = calloc(1, sizeof(*bo_gem));
1108 if (!bo_gem)
1111 atomic_set(&bo_gem->refcount, 1);
1112 DRMINITLISTHEAD(&bo_gem->vma_list);
1114 bo_gem->bo.size = open_arg.size;
1115 bo_gem->bo.offset = 0;
1116 bo_gem->bo.offset64 = 0;
1117 bo_gem->bo.virtual = NULL;
1118 bo_gem->bo.bufmgr = bufmgr;
1119 bo_gem->name = name;
1120 bo_gem->validate_index = -1;
1121 bo_gem->gem_handle = open_arg.handle;
1122 bo_gem->bo.handle = open_arg.handle;
1123 bo_gem->global_name = handle;
1124 bo_gem->reusable = false;
1127 gem_handle, sizeof(bo_gem->gem_handle), bo_gem);
1129 global_name, sizeof(bo_gem->global_name), bo_gem);
1131 ret = get_tiling_mode(bufmgr_gem, bo_gem->gem_handle,
1132 &bo_gem->tiling_mode, &bo_gem->swizzle_mode);
1137 drm_intel_bo_gem_set_in_aperture_size(bufmgr_gem, bo_gem, 0);
1138 DBG("bo_create_from_handle: %d (%s)\n", handle, bo_gem->name);
1142 return &bo_gem->bo;
1145 drm_intel_gem_bo_free(&bo_gem->bo);
1154 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1157 DRMLISTDEL(&bo_gem->vma_list);
1158 if (bo_gem->mem_virtual) {
1159 VG(VALGRIND_FREELIKE_BLOCK(bo_gem->mem_virtual, 0));
1160 drm_munmap(bo_gem->mem_virtual, bo_gem->bo.size);
1163 if (bo_gem->wc_virtual) {
1164 VG(VALGRIND_FREELIKE_BLOCK(bo_gem->wc_virtual, 0));
1165 drm_munmap(bo_gem->wc_virtual, bo_gem->bo.size);
1168 if (bo_gem->gtt_virtual) {
1169 drm_munmap(bo_gem->gtt_virtual, bo_gem->bo.size);
1173 if (bo_gem->global_name)
1174 HASH_DELETE(name_hh, bufmgr_gem->name_table, bo_gem);
1175 HASH_DELETE(handle_hh, bufmgr_gem->handle_table, bo_gem);
1178 ret = drmCloseBufferHandle(bufmgr_gem->fd, bo_gem->gem_handle);
1181 bo_gem->gem_handle, bo_gem->name, strerror(errno));
1190 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1192 if (bo_gem->mem_virtual)
1193 VALGRIND_MAKE_MEM_NOACCESS(bo_gem->mem_virtual, bo->size);
1195 if (bo_gem->wc_virtual)
1196 VALGRIND_MAKE_MEM_NOACCESS(bo_gem->wc_virtual, bo->size);
1198 if (bo_gem->gtt_virtual)
1199 VALGRIND_MAKE_MEM_NOACCESS(bo_gem->gtt_virtual, bo->size);
1217 drm_intel_bo_gem *bo_gem;
1219 bo_gem = DRMLISTENTRY(drm_intel_bo_gem,
1221 if (time - bo_gem->free_time <= 1)
1224 DRMLISTDEL(&bo_gem->head);
1226 drm_intel_gem_bo_free(&bo_gem->bo);
1249 drm_intel_bo_gem *bo_gem;
1251 bo_gem = DRMLISTENTRY(drm_intel_bo_gem,
1254 assert(bo_gem->map_count == 0);
1255 DRMLISTDELINIT(&bo_gem->vma_list);
1257 if (bo_gem->mem_virtual) {
1258 drm_munmap(bo_gem->mem_virtual, bo_gem->bo.size);
1259 bo_gem->mem_virtual = NULL;
1262 if (bo_gem->wc_virtual) {
1263 drm_munmap(bo_gem->wc_virtual, bo_gem->bo.size);
1264 bo_gem->wc_virtual = NULL;
1267 if (bo_gem->gtt_virtual) {
1268 drm_munmap(bo_gem->gtt_virtual, bo_gem->bo.size);
1269 bo_gem->gtt_virtual = NULL;
1276 drm_intel_bo_gem *bo_gem)
1279 DRMLISTADDTAIL(&bo_gem->vma_list, &bufmgr_gem->vma_cache);
1280 if (bo_gem->mem_virtual)
1282 if (bo_gem->wc_virtual)
1284 if (bo_gem->gtt_virtual)
1290 drm_intel_bo_gem *bo_gem)
1293 DRMLISTDEL(&bo_gem->vma_list);
1294 if (bo_gem->mem_virtual)
1296 if (bo_gem->wc_virtual)
1298 if (bo_gem->gtt_virtual)
1307 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1312 for (i = 0; i < bo_gem->reloc_count; i++) {
1313 if (bo_gem->reloc_target_info[i].bo != bo) {
1314 drm_intel_gem_bo_unreference_locked_timed(bo_gem->
1319 for (i = 0; i < bo_gem->softpin_target_count; i++)
1320 drm_intel_gem_bo_unreference_locked_timed(bo_gem->softpin_target[i],
1322 bo_gem->kflags = 0;
1323 bo_gem->reloc_count = 0;
1324 bo_gem->used_as_reloc_target = false;
1325 bo_gem->softpin_target_count = 0;
1328 bo_gem->gem_handle, bo_gem->name);
1331 if (bo_gem->reloc_target_info) {
1332 free(bo_gem->reloc_target_info);
1333 bo_gem->reloc_target_info = NULL;
1335 if (bo_gem->relocs) {
1336 free(bo_gem->relocs);
1337 bo_gem->relocs = NULL;
1339 if (bo_gem->softpin_target) {
1340 free(bo_gem->softpin_target);
1341 bo_gem->softpin_target = NULL;
1342 bo_gem->softpin_target_size = 0;
1346 if (bo_gem->map_count) {
1347 DBG("bo freed with non-zero map-count %d\n", bo_gem->map_count);
1348 bo_gem->map_count = 0;
1349 drm_intel_gem_bo_close_vma(bufmgr_gem, bo_gem);
1355 if (bufmgr_gem->bo_reuse && bo_gem->reusable && bucket != NULL &&
1356 drm_intel_gem_bo_madvise_internal(bufmgr_gem, bo_gem,
1358 bo_gem->free_time = time;
1360 bo_gem->name = NULL;
1361 bo_gem->validate_index = -1;
1363 DRMLISTADDTAIL(&bo_gem->head, &bucket->head);
1372 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1374 assert(atomic_read(&bo_gem->refcount) > 0);
1375 if (atomic_dec_and_test(&bo_gem->refcount))
1381 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1383 assert(atomic_read(&bo_gem->refcount) > 0);
1385 if (atomic_add_unless(&bo_gem->refcount, -1, 1)) {
1394 if (atomic_dec_and_test(&bo_gem->refcount)) {
1406 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1410 if (bo_gem->is_userptr) {
1412 bo->virtual = bo_gem->user_virtual;
1418 if (bo_gem->map_count++ == 0)
1419 drm_intel_gem_bo_open_vma(bufmgr_gem, bo_gem);
1421 if (!bo_gem->mem_virtual) {
1425 bo_gem->gem_handle, bo_gem->name, bo_gem->map_count);
1428 mmap_arg.handle = bo_gem->gem_handle;
1436 __FILE__, __LINE__, bo_gem->gem_handle,
1437 bo_gem->name, strerror(errno));
1438 if (--bo_gem->map_count == 0)
1439 drm_intel_gem_bo_close_vma(bufmgr_gem, bo_gem);
1444 bo_gem->mem_virtual = (void *)(uintptr_t) mmap_arg.addr_ptr;
1446 DBG("bo_map: %d (%s) -> %p\n", bo_gem->gem_handle, bo_gem->name,
1447 bo_gem->mem_virtual);
1448 bo->virtual = bo_gem->mem_virtual;
1451 set_domain.handle = bo_gem->gem_handle;
1462 __FILE__, __LINE__, bo_gem->gem_handle,
1467 bo_gem->mapped_cpu_write = true;
1470 VG(VALGRIND_MAKE_MEM_DEFINED(bo_gem->mem_virtual, bo->size));
1480 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1483 if (bo_gem->is_userptr)
1486 if (bo_gem->map_count++ == 0)
1487 drm_intel_gem_bo_open_vma(bufmgr_gem, bo_gem);
1490 if (bo_gem->gtt_virtual == NULL) {
1494 bo_gem->gem_handle, bo_gem->name, bo_gem->map_count);
1497 mmap_arg.handle = bo_gem->gem_handle;
1507 bo_gem->gem_handle, bo_gem->name,
1509 if (--bo_gem->map_count == 0)
1510 drm_intel_gem_bo_close_vma(bufmgr_gem, bo_gem);
1515 bo_gem->gtt_virtual = drm_mmap(0, bo->size, PROT_READ | PROT_WRITE,
1518 if (bo_gem->gtt_virtual == MAP_FAILED) {
1519 bo_gem->gtt_virtual = NULL;
1523 bo_gem->gem_handle, bo_gem->name,
1525 if (--bo_gem->map_count == 0)
1526 drm_intel_gem_bo_close_vma(bufmgr_gem, bo_gem);
1531 bo->virtual = bo_gem->gtt_virtual;
1533 DBG("bo_map_gtt: %d (%s) -> %p\n", bo_gem->gem_handle, bo_gem->name,
1534 bo_gem->gtt_virtual);
1543 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1565 set_domain.handle = bo_gem->gem_handle;
1573 __FILE__, __LINE__, bo_gem->gem_handle,
1578 VG(VALGRIND_MAKE_MEM_DEFINED(bo_gem->gtt_virtual, bo->size));
1603 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1622 VG(VALGRIND_MAKE_MEM_DEFINED(bo_gem->gtt_virtual, bo->size));
1633 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1639 if (bo_gem->is_userptr)
1646 if (bo_gem->map_count <= 0) {
1655 if (bo_gem->mapped_cpu_write) {
1664 sw_finish.handle = bo_gem->gem_handle;
1670 bo_gem->mapped_cpu_write = false;
1677 if (--bo_gem->map_count == 0) {
1678 drm_intel_gem_bo_close_vma(bufmgr_gem, bo_gem);
1696 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1699 arg.handle = bo_gem->gem_handle;
1708 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1711 arg.handle = bo_gem->gem_handle;
1774 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1778 if (bo_gem->is_userptr)
1782 pwrite.handle = bo_gem->gem_handle;
1794 __FILE__, __LINE__, bo_gem->gem_handle, (int)offset,
1835 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1839 if (bo_gem->is_userptr)
1843 pread.handle = bo_gem->gem_handle;
1855 __FILE__, __LINE__, bo_gem->gem_handle, (int)offset,
1904 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1920 wait.bo_handle = bo_gem->gem_handle;
1940 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
1945 set_domain.handle = bo_gem->gem_handle;
1953 __FILE__, __LINE__, bo_gem->gem_handle,
1974 drm_intel_bo_gem *bo_gem;
1977 bo_gem = DRMLISTENTRY(drm_intel_bo_gem,
1979 DRMLISTDEL(&bo_gem->head);
1981 drm_intel_gem_bo_free(&bo_gem->bo);
2015 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2019 if (bo_gem->has_error)
2023 bo_gem->has_error = true;
2036 if (bo_gem->relocs == NULL && drm_intel_setup_reloc_list(bo))
2040 assert(bo_gem->reloc_count < bufmgr_gem->max_relocs);
2057 assert(!bo_gem->used_as_reloc_target);
2058 if (target_bo_gem != bo_gem) {
2060 bo_gem->reloc_tree_size += target_bo_gem->reloc_tree_size;
2061 bo_gem->reloc_tree_fences += target_bo_gem->reloc_tree_fences;
2064 bo_gem->reloc_target_info[bo_gem->reloc_count].bo = target_bo;
2068 bo_gem->reloc_target_info[bo_gem->reloc_count].flags =
2071 bo_gem->reloc_target_info[bo_gem->reloc_count].flags = 0;
2073 bo_gem->relocs[bo_gem->reloc_count].offset = offset;
2074 bo_gem->relocs[bo_gem->reloc_count].delta = target_offset;
2075 bo_gem->relocs[bo_gem->reloc_count].target_handle =
2077 bo_gem->relocs[bo_gem->reloc_count].read_domains = read_domains;
2078 bo_gem->relocs[bo_gem->reloc_count].write_domain = write_domain;
2079 bo_gem->relocs[bo_gem->reloc_count].presumed_offset = target_bo->offset64;
2080 bo_gem->reloc_count++;
2088 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2091 bo_gem->kflags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
2093 bo_gem->kflags &= ~EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
2100 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2102 if (bo_gem->has_error)
2106 bo_gem->has_error = true;
2112 if (target_bo_gem == bo_gem)
2115 if (bo_gem->softpin_target_count == bo_gem->softpin_target_size) {
2116 int new_size = bo_gem->softpin_target_size * 2;
2120 bo_gem->softpin_target = realloc(bo_gem->softpin_target, new_size *
2122 if (!bo_gem->softpin_target)
2125 bo_gem->softpin_target_size = new_size;
2127 bo_gem->softpin_target[bo_gem->softpin_target_count] = target_bo;
2129 bo_gem->softpin_target_count++;
2163 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2165 return bo_gem->reloc_count;
2187 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2193 assert(bo_gem->reloc_count >= start);
2198 for (i = start; i < bo_gem->reloc_count; i++) {
2199 drm_intel_bo_gem *target_bo_gem = (drm_intel_bo_gem *) bo_gem->reloc_target_info[i].bo;
2201 bo_gem->reloc_tree_fences -= target_bo_gem->reloc_tree_fences;
2206 bo_gem->reloc_count = start;
2208 for (i = 0; i < bo_gem->softpin_target_count; i++) {
2209 drm_intel_bo_gem *target_bo_gem = (drm_intel_bo_gem *) bo_gem->softpin_target[i];
2212 bo_gem->softpin_target_count = 0;
2226 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *)bo;
2229 if (bo_gem->relocs == NULL && bo_gem->softpin_target == NULL)
2232 for (i = 0; i < bo_gem->reloc_count; i++) {
2233 drm_intel_bo *target_bo = bo_gem->reloc_target_info[i].bo;
2244 need_fence = (bo_gem->reloc_target_info[i].flags &
2251 for (i = 0; i < bo_gem->softpin_target_count; i++) {
2252 drm_intel_bo *target_bo = bo_gem->softpin_target[i];
2270 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *)bo;
2277 assert(!(bo_gem->kflags & EXEC_OBJECT_PINNED));
2279 bo_gem->gem_handle, bo_gem->name,
2393 drm_intel_bo_gem *bo_gem = to_bo_gem(bufmgr_gem->exec_bos[i]);
2395 bo_gem->idle = false;
2398 bo_gem->validate_index = -1;
2447 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2452 pin.handle = bo_gem->gem_handle;
2470 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2475 unpin.handle = bo_gem->gem_handle;
2490 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2494 if (bo_gem->global_name == 0 &&
2495 tiling_mode == bo_gem->tiling_mode &&
2496 stride == bo_gem->stride)
2505 set_tiling.handle = bo_gem->gem_handle;
2516 bo_gem->tiling_mode = set_tiling.tiling_mode;
2517 bo_gem->swizzle_mode = set_tiling.swizzle_mode;
2518 bo_gem->stride = set_tiling.stride;
2527 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2533 if (bo_gem->is_userptr)
2544 drm_intel_bo_gem_set_in_aperture_size(bufmgr_gem, bo_gem, 0);
2546 *tiling_mode = bo_gem->tiling_mode;
2554 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2556 *tiling_mode = bo_gem->tiling_mode;
2557 *swizzle_mode = bo_gem->swizzle_mode;
2564 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2568 bo_gem->kflags |= EXEC_OBJECT_PINNED;
2579 drm_intel_bo_gem *bo_gem;
2595 &handle, sizeof(handle), bo_gem);
2596 if (bo_gem) {
2597 drm_intel_gem_bo_reference(&bo_gem->bo);
2601 bo_gem = calloc(1, sizeof(*bo_gem));
2602 if (!bo_gem)
2605 atomic_set(&bo_gem->refcount, 1);
2606 DRMINITLISTHEAD(&bo_gem->vma_list);
2615 bo_gem->bo.size = ret;
2617 bo_gem->bo.size = size;
2619 bo_gem->bo.handle = handle;
2620 bo_gem->bo.bufmgr = bufmgr;
2622 bo_gem->gem_handle = handle;
2624 gem_handle, sizeof(bo_gem->gem_handle), bo_gem);
2626 bo_gem->name = "prime";
2627 bo_gem->validate_index = -1;
2628 bo_gem->reloc_tree_fences = 0;
2629 bo_gem->used_as_reloc_target = false;
2630 bo_gem->has_error = false;
2631 bo_gem->reusable = false;
2634 &bo_gem->tiling_mode, &bo_gem->swizzle_mode);
2639 drm_intel_bo_gem_set_in_aperture_size(bufmgr_gem, bo_gem, 0);
2643 return &bo_gem->bo;
2646 drm_intel_gem_bo_free(&bo_gem->bo);
2655 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2657 if (drmPrimeHandleToFD(bufmgr_gem->fd, bo_gem->gem_handle,
2661 bo_gem->reusable = false;
2670 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2672 if (!bo_gem->global_name) {
2676 flink.handle = bo_gem->gem_handle;
2681 if (!bo_gem->global_name) {
2682 bo_gem->global_name = flink.name;
2683 bo_gem->reusable = false;
2686 global_name, sizeof(bo_gem->global_name),
2687 bo_gem);
2692 *name = bo_gem->global_name;
2728 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2730 bo_gem->kflags |= EXEC_OBJECT_ASYNC;
2747 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2749 bo_gem->kflags &= ~EXEC_OBJECT_ASYNC;
2785 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2789 if (bo == NULL || bo_gem->included_in_check_aperture)
2793 bo_gem->included_in_check_aperture = true;
2795 for (i = 0; i < bo_gem->reloc_count; i++)
2797 drm_intel_gem_bo_get_aperture_space(bo_gem->
2818 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo_array[i];
2820 if (bo_gem == NULL)
2823 total += bo_gem->reloc_tree_fences;
2835 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2838 if (bo == NULL || !bo_gem->included_in_check_aperture)
2841 bo_gem->included_in_check_aperture = false;
2843 for (i = 0; i < bo_gem->reloc_count; i++)
2844 drm_intel_gem_bo_clear_aperture_space_flag(bo_gem->
2859 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo_array[i];
2860 if (bo_gem != NULL)
2861 total += bo_gem->reloc_tree_size;
2889 drm_intel_bo_gem *bo_gem =
2891 bo_gem->reloc_tree_size = total;
2956 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2958 bo_gem->reusable = false;
2965 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2967 return bo_gem->reusable;
2973 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
2976 for (i = 0; i < bo_gem->reloc_count; i++) {
2977 if (bo_gem->reloc_target_info[i].bo == target_bo)
2979 if (bo == bo_gem->reloc_target_info[i].bo)
2981 if (_drm_intel_gem_bo_references(bo_gem->reloc_target_info[i].bo,
2986 for (i = 0; i< bo_gem->softpin_target_count; i++) {
2987 if (bo_gem->softpin_target[i] == target_bo)
2989 if (_drm_intel_gem_bo_references(bo_gem->softpin_target[i], target_bo))
3395 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
3397 if (bo_gem->gtt_virtual)
3398 return bo_gem->gtt_virtual;
3400 if (bo_gem->is_userptr)
3404 if (bo_gem->gtt_virtual == NULL) {
3409 bo_gem->gem_handle, bo_gem->name, bo_gem->map_count);
3411 if (bo_gem->map_count++ == 0)
3412 drm_intel_gem_bo_open_vma(bufmgr_gem, bo_gem);
3415 mmap_arg.handle = bo_gem->gem_handle;
3428 if (--bo_gem->map_count == 0)
3429 drm_intel_gem_bo_close_vma(bufmgr_gem, bo_gem);
3433 bo_gem->gtt_virtual = ptr;
3437 return bo_gem->gtt_virtual;
3443 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
3445 if (bo_gem->mem_virtual)
3446 return bo_gem->mem_virtual;
3448 if (bo_gem->is_userptr) {
3450 return bo_gem->user_virtual;
3454 if (!bo_gem->mem_virtual) {
3457 if (bo_gem->map_count++ == 0)
3458 drm_intel_gem_bo_open_vma(bufmgr_gem, bo_gem);
3461 bo_gem->gem_handle, bo_gem->name, bo_gem->map_count);
3464 mmap_arg.handle = bo_gem->gem_handle;
3470 __FILE__, __LINE__, bo_gem->gem_handle,
3471 bo_gem->name, strerror(errno));
3472 if (--bo_gem->map_count == 0)
3473 drm_intel_gem_bo_close_vma(bufmgr_gem, bo_gem);
3476 bo_gem->mem_virtual = (void *)(uintptr_t) mmap_arg.addr_ptr;
3481 return bo_gem->mem_virtual;
3487 drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
3489 if (bo_gem->wc_virtual)
3490 return bo_gem->wc_virtual;
3492 if (bo_gem->is_userptr)
3496 if (!bo_gem->wc_virtual) {
3499 if (bo_gem->map_count++ == 0)
3500 drm_intel_gem_bo_open_vma(bufmgr_gem, bo_gem);
3503 bo_gem->gem_handle, bo_gem->name, bo_gem->map_count);
3506 mmap_arg.handle = bo_gem->gem_handle;
3513 __FILE__, __LINE__, bo_gem->gem_handle,
3514 bo_gem->name, strerror(errno));
3515 if (--bo_gem->map_count == 0)
3516 drm_intel_gem_bo_close_vma(bufmgr_gem, bo_gem);
3519 bo_gem->wc_virtual = (void *)(uintptr_t) mmap_arg.addr_ptr;
3524 return bo_gem->wc_virtual;