Lines Matching refs:res

66 static void vmw_user_surface_free(struct vmw_resource *res);
69 static int vmw_legacy_srf_bind(struct vmw_resource *res,
71 static int vmw_legacy_srf_unbind(struct vmw_resource *res,
74 static int vmw_legacy_srf_create(struct vmw_resource *res);
75 static int vmw_legacy_srf_destroy(struct vmw_resource *res);
76 static int vmw_gb_surface_create(struct vmw_resource *res);
77 static int vmw_gb_surface_bind(struct vmw_resource *res,
79 static int vmw_gb_surface_unbind(struct vmw_resource *res,
82 static int vmw_gb_surface_destroy(struct vmw_resource *res);
225 cmd->body.sid = srf->res.id; in vmw_surface_define_encode()
276 body->host.sid = srf->res.id; in vmw_surface_dma_encode()
312 static void vmw_hw_surface_destroy(struct vmw_resource *res) in vmw_hw_surface_destroy() argument
315 struct vmw_private *dev_priv = res->dev_priv; in vmw_hw_surface_destroy()
319 if (res->func->destroy == vmw_gb_surface_destroy) { in vmw_hw_surface_destroy()
320 (void) vmw_gb_surface_destroy(res); in vmw_hw_surface_destroy()
324 if (res->id != -1) { in vmw_hw_surface_destroy()
333 vmw_surface_destroy_encode(res->id, cmd); in vmw_hw_surface_destroy()
343 srf = vmw_res_to_srf(res); in vmw_hw_surface_destroy()
344 dev_priv->used_memory_size -= res->backup_size; in vmw_hw_surface_destroy()
363 static int vmw_legacy_srf_create(struct vmw_resource *res) in vmw_legacy_srf_create() argument
365 struct vmw_private *dev_priv = res->dev_priv; in vmw_legacy_srf_create()
371 if (likely(res->id != -1)) in vmw_legacy_srf_create()
374 srf = vmw_res_to_srf(res); in vmw_legacy_srf_create()
375 if (unlikely(dev_priv->used_memory_size + res->backup_size >= in vmw_legacy_srf_create()
383 ret = vmw_resource_alloc_id(res); in vmw_legacy_srf_create()
389 if (unlikely(res->id >= SVGA3D_MAX_SURFACE_IDS)) { in vmw_legacy_srf_create()
413 dev_priv->used_memory_size += res->backup_size; in vmw_legacy_srf_create()
417 vmw_resource_release_id(res); in vmw_legacy_srf_create()
438 static int vmw_legacy_srf_dma(struct vmw_resource *res, in vmw_legacy_srf_dma() argument
445 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_legacy_srf_dma()
447 struct vmw_private *dev_priv = res->dev_priv; in vmw_legacy_srf_dma()
490 static int vmw_legacy_srf_bind(struct vmw_resource *res, in vmw_legacy_srf_bind() argument
493 if (!res->backup_dirty) in vmw_legacy_srf_bind()
496 return vmw_legacy_srf_dma(res, val_buf, true); in vmw_legacy_srf_bind()
511 static int vmw_legacy_srf_unbind(struct vmw_resource *res, in vmw_legacy_srf_unbind() argument
516 return vmw_legacy_srf_dma(res, val_buf, false); in vmw_legacy_srf_unbind()
527 static int vmw_legacy_srf_destroy(struct vmw_resource *res) in vmw_legacy_srf_destroy() argument
529 struct vmw_private *dev_priv = res->dev_priv; in vmw_legacy_srf_destroy()
533 BUG_ON(res->id == -1); in vmw_legacy_srf_destroy()
547 vmw_surface_destroy_encode(res->id, cmd); in vmw_legacy_srf_destroy()
554 dev_priv->used_memory_size -= res->backup_size; in vmw_legacy_srf_destroy()
560 vmw_resource_release_id(res); in vmw_legacy_srf_destroy()
576 void (*res_free) (struct vmw_resource *res)) in vmw_surface_init()
579 struct vmw_resource *res = &srf->res; in vmw_surface_init() local
584 ret = vmw_resource_init(dev_priv, res, true, res_free, in vmw_surface_init()
591 res_free(res); in vmw_surface_init()
601 vmw_resource_activate(res, vmw_hw_surface_destroy); in vmw_surface_init()
618 prime.base)->srf.res); in vmw_user_surface_base_to_res()
626 static void vmw_user_surface_free(struct vmw_resource *res) in vmw_user_surface_free() argument
628 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_user_surface_free()
631 struct vmw_private *dev_priv = srf->res.dev_priv; in vmw_user_surface_free()
657 struct vmw_resource *res = &user_srf->srf.res; in vmw_user_surface_base_release() local
662 vmw_resource_unreference(&res); in vmw_user_surface_base_release()
696 struct vmw_resource *res; in vmw_surface_define_ioctl() local
757 res = &srf->res; in vmw_surface_define_ioctl()
811 res->backup_size = cur_bo_offset; in vmw_surface_define_ioctl()
854 res->backup_size, in vmw_surface_define_ioctl()
857 &res->backup, in vmw_surface_define_ioctl()
860 vmw_resource_unreference(&res); in vmw_surface_define_ioctl()
865 tmp = vmw_resource_reference(&srf->res); in vmw_surface_define_ioctl()
866 ret = ttm_prime_object_init(tfile, res->backup_size, &user_srf->prime, in vmw_surface_define_ioctl()
872 vmw_resource_unreference(&res); in vmw_surface_define_ioctl()
877 vmw_resource_unreference(&res); in vmw_surface_define_ioctl()
1032 static int vmw_gb_surface_create(struct vmw_resource *res) in vmw_gb_surface_create() argument
1034 struct vmw_private *dev_priv = res->dev_priv; in vmw_gb_surface_create()
1035 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_gb_surface_create()
1047 if (likely(res->id != -1)) in vmw_gb_surface_create()
1051 ret = vmw_resource_alloc_id(res); in vmw_gb_surface_create()
1057 if (unlikely(res->id >= VMWGFX_NUM_GB_SURFACE)) { in vmw_gb_surface_create()
1085 cmd2->body.sid = srf->res.id; in vmw_gb_surface_create()
1098 cmd->body.sid = srf->res.id; in vmw_gb_surface_create()
1114 vmw_resource_release_id(res); in vmw_gb_surface_create()
1121 static int vmw_gb_surface_bind(struct vmw_resource *res, in vmw_gb_surface_bind() argument
1124 struct vmw_private *dev_priv = res->dev_priv; in vmw_gb_surface_bind()
1138 submit_size = sizeof(*cmd1) + (res->backup_dirty ? sizeof(*cmd2) : 0); in vmw_gb_surface_bind()
1149 cmd1->body.sid = res->id; in vmw_gb_surface_bind()
1151 if (res->backup_dirty) { in vmw_gb_surface_bind()
1155 cmd2->body.sid = res->id; in vmw_gb_surface_bind()
1156 res->backup_dirty = false; in vmw_gb_surface_bind()
1163 static int vmw_gb_surface_unbind(struct vmw_resource *res, in vmw_gb_surface_unbind() argument
1167 struct vmw_private *dev_priv = res->dev_priv; in vmw_gb_surface_unbind()
1201 cmd1->body.sid = res->id; in vmw_gb_surface_unbind()
1207 cmd2->body.sid = res->id; in vmw_gb_surface_unbind()
1213 cmd3->body.sid = res->id; in vmw_gb_surface_unbind()
1233 static int vmw_gb_surface_destroy(struct vmw_resource *res) in vmw_gb_surface_destroy() argument
1235 struct vmw_private *dev_priv = res->dev_priv; in vmw_gb_surface_destroy()
1236 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_gb_surface_destroy()
1242 if (likely(res->id == -1)) in vmw_gb_surface_destroy()
1247 vmw_binding_res_list_scrub(&res->binding_head); in vmw_gb_surface_destroy()
1259 cmd->body.sid = res->id; in vmw_gb_surface_destroy()
1262 vmw_resource_release_id(res); in vmw_gb_surface_destroy()
1283 struct vmw_resource *res; in vmw_gb_surface_define_ioctl() local
1325 res = &user_srf->srf.res; in vmw_gb_surface_define_ioctl()
1330 &res->backup, in vmw_gb_surface_define_ioctl()
1332 if (ret == 0 && res->backup->base.num_pages * PAGE_SIZE < in vmw_gb_surface_define_ioctl()
1333 res->backup_size) { in vmw_gb_surface_define_ioctl()
1335 vmw_dmabuf_unreference(&res->backup); in vmw_gb_surface_define_ioctl()
1341 res->backup_size, in vmw_gb_surface_define_ioctl()
1345 &res->backup, in vmw_gb_surface_define_ioctl()
1349 vmw_resource_unreference(&res); in vmw_gb_surface_define_ioctl()
1353 tmp = vmw_resource_reference(res); in vmw_gb_surface_define_ioctl()
1354 ret = ttm_prime_object_init(tfile, res->backup_size, &user_srf->prime, in vmw_gb_surface_define_ioctl()
1362 vmw_resource_unreference(&res); in vmw_gb_surface_define_ioctl()
1367 rep->backup_size = res->backup_size; in vmw_gb_surface_define_ioctl()
1368 if (res->backup) { in vmw_gb_surface_define_ioctl()
1370 drm_vma_node_offset_addr(&res->backup->base.vma_node); in vmw_gb_surface_define_ioctl()
1371 rep->buffer_size = res->backup->base.num_pages * PAGE_SIZE; in vmw_gb_surface_define_ioctl()
1379 vmw_resource_unreference(&res); in vmw_gb_surface_define_ioctl()
1416 if (srf->res.backup == NULL) { in vmw_gb_surface_reference_ioctl()
1422 ret = vmw_user_dmabuf_reference(tfile, srf->res.backup, in vmw_gb_surface_reference_ioctl()
1444 rep->crep.backup_size = srf->res.backup_size; in vmw_gb_surface_reference_ioctl()
1447 drm_vma_node_offset_addr(&srf->res.backup->base.vma_node); in vmw_gb_surface_reference_ioctl()
1448 rep->crep.buffer_size = srf->res.backup->base.num_pages * PAGE_SIZE; in vmw_gb_surface_reference_ioctl()
1560 srf->res.backup_size = in vmw_surface_gb_priv_define()
1567 srf->res.backup_size += sizeof(SVGA3dDXSOState); in vmw_surface_gb_priv_define()