• Home
  • Raw
  • Download

Lines Matching full:priv

81 static int sdma_init(struct amdgpu_priv *priv, int fd)  in sdma_init()  argument
91 if (priv->drm_version < 27) in sdma_init()
95 if (priv->dev_info.family < AMDGPU_FAMILY_CI || priv->dev_info.family > AMDGPU_FAMILY_NV) in sdma_init()
104 priv->sdma_ctx = ctx_args.out.alloc.ctx_id; in sdma_init()
106 priv->sdma_cmdbuf_size = ALIGN(4096, priv->dev_info.virtual_address_alignment); in sdma_init()
107 gem_create.in.bo_size = priv->sdma_cmdbuf_size; in sdma_init()
115 priv->sdma_cmdbuf_bo = gem_create.out.handle; in sdma_init()
117 priv->sdma_cmdbuf_addr = in sdma_init()
118 ALIGN(priv->dev_info.virtual_address_offset, priv->dev_info.virtual_address_alignment); in sdma_init()
121 va_args.handle = priv->sdma_cmdbuf_bo; in sdma_init()
124 va_args.va_address = priv->sdma_cmdbuf_addr; in sdma_init()
126 va_args.map_size = priv->sdma_cmdbuf_size; in sdma_init()
132 gem_map.in.handle = priv->sdma_cmdbuf_bo; in sdma_init()
137 priv->sdma_cmdbuf_map = mmap(0, priv->sdma_cmdbuf_size, PROT_READ | PROT_WRITE, MAP_SHARED, in sdma_init()
139 if (priv->sdma_cmdbuf_map == MAP_FAILED) { in sdma_init()
140 priv->sdma_cmdbuf_map = NULL; in sdma_init()
151 gem_close.handle = priv->sdma_cmdbuf_bo; in sdma_init()
156 ctx_args.in.ctx_id = priv->sdma_ctx; in sdma_init()
161 static void sdma_finish(struct amdgpu_priv *priv, int fd) in sdma_finish() argument
167 if (!priv->sdma_cmdbuf_map) in sdma_finish()
170 va_args.handle = priv->sdma_cmdbuf_bo; in sdma_finish()
173 va_args.va_address = priv->sdma_cmdbuf_addr; in sdma_finish()
175 va_args.map_size = priv->sdma_cmdbuf_size; in sdma_finish()
178 gem_close.handle = priv->sdma_cmdbuf_bo; in sdma_finish()
182 ctx_args.in.ctx_id = priv->sdma_ctx; in sdma_finish()
186 static int sdma_copy(struct amdgpu_priv *priv, int fd, uint32_t src_handle, uint32_t dst_handle, in sdma_copy() argument
191 const uint64_t max_commands = priv->sdma_cmdbuf_size / cmd_size; in sdma_copy()
192 uint64_t src_addr = priv->sdma_cmdbuf_addr + priv->sdma_cmdbuf_size; in sdma_copy()
236 priv->sdma_cmdbuf_map[cmd++] = 0x01; /* linear copy */ in sdma_copy()
237 priv->sdma_cmdbuf_map[cmd++] = in sdma_copy()
238 priv->dev_info.family >= AMDGPU_FAMILY_AI ? (cur_size - 1) : cur_size; in sdma_copy()
239 priv->sdma_cmdbuf_map[cmd++] = 0; in sdma_copy()
240 priv->sdma_cmdbuf_map[cmd++] = cur_src_addr; in sdma_copy()
241 priv->sdma_cmdbuf_map[cmd++] = cur_src_addr >> 32; in sdma_copy()
242 priv->sdma_cmdbuf_map[cmd++] = cur_dst_addr; in sdma_copy()
243 priv->sdma_cmdbuf_map[cmd++] = cur_dst_addr >> 32; in sdma_copy()
250 ib.va_start = priv->sdma_cmdbuf_addr; in sdma_copy()
258 bo_list_entries[0].bo_handle = priv->sdma_cmdbuf_bo; in sdma_copy()
276 cs.in.ctx_id = priv->sdma_ctx; in sdma_copy()
288 wait_cs.in.ctx_id = priv->sdma_ctx; in sdma_copy()
316 static bool is_modifier_scanout_capable(struct amdgpu_priv *priv, uint32_t format, in is_modifier_scanout_capable() argument
328 if (priv->dev_info.family >= AMDGPU_FAMILY_RV) { /* DCN based GPUs */ in is_modifier_scanout_capable()
337 assert(priv->dev_info.family == AMDGPU_FAMILY_AI); in is_modifier_scanout_capable()
363 struct amdgpu_priv *priv; in amdgpu_init() local
368 priv = calloc(1, sizeof(struct amdgpu_priv)); in amdgpu_init()
369 if (!priv) in amdgpu_init()
374 free(priv); in amdgpu_init()
378 priv->drm_version = drm_version->version_minor; in amdgpu_init()
381 drv->priv = priv; in amdgpu_init()
383 if (query_dev_info(drv_get_fd(drv), &priv->dev_info)) { in amdgpu_init()
384 free(priv); in amdgpu_init()
385 drv->priv = NULL; in amdgpu_init()
389 free(priv); in amdgpu_init()
390 drv->priv = NULL; in amdgpu_init()
395 if (sdma_init(priv, drv_get_fd(drv))) in amdgpu_init()
469 is_modifier_scanout_capable(drv->priv, format, modifiers[i]); in amdgpu_init()
511 sdma_finish(drv->priv, drv_get_fd(drv)); in amdgpu_close()
513 free(drv->priv); in amdgpu_close()
514 drv->priv = NULL; in amdgpu_close()
524 struct amdgpu_priv *priv = bo->drv->priv; in amdgpu_create_bo_linear() local
549 if (double_align && priv->dev_info.family >= AMDGPU_FAMILY_NV && in amdgpu_create_bo_linear()
573 ALIGN(bo->meta.total_size, priv->dev_info.virtual_address_alignment); in amdgpu_create_bo_linear()
610 struct amdgpu_priv *priv = bo->drv->priv; in amdgpu_create_bo() local
618 if (use_flags & (BO_USE_SCANOUT) && priv->dev_info.family == AMDGPU_FAMILY_CZ) { in amdgpu_create_bo()
671 if (bo->priv) in amdgpu_release_bo()
679 if (bo->priv) in amdgpu_destroy_bo()
693 struct amdgpu_linear_vma_priv *priv = NULL; in amdgpu_map_bo() local
696 if (bo->priv) in amdgpu_map_bo()
699 drv_priv = bo->drv->priv; in amdgpu_map_bo()
715 priv = calloc(1, sizeof(struct amdgpu_linear_vma_priv)); in amdgpu_map_bo()
716 if (!priv) in amdgpu_map_bo()
727 free(priv); in amdgpu_map_bo()
731 priv->map_flags = map_flags; in amdgpu_map_bo()
732 handle = priv->handle = gem_create.out.handle; in amdgpu_map_bo()
734 ret = sdma_copy(bo->drv->priv, bo->drv->fd, bo->handles[0].u32, priv->handle, in amdgpu_map_bo()
754 vma->priv = priv; in amdgpu_map_bo()
758 if (priv) { in amdgpu_map_bo()
760 gem_close.handle = priv->handle; in amdgpu_map_bo()
762 free(priv); in amdgpu_map_bo()
769 if (bo->priv) { in amdgpu_unmap_bo()
776 if (vma->priv) { in amdgpu_unmap_bo()
777 struct amdgpu_linear_vma_priv *priv = vma->priv; in amdgpu_unmap_bo() local
780 if (BO_MAP_WRITE & priv->map_flags) { in amdgpu_unmap_bo()
781 r = sdma_copy(bo->drv->priv, bo->drv->fd, priv->handle, in amdgpu_unmap_bo()
787 gem_close.handle = priv->handle; in amdgpu_unmap_bo()
800 if (bo->priv) in amdgpu_bo_invalidate()