Lines Matching refs:srf
46 struct vmw_surface srf; member
156 static inline uint32_t vmw_surface_dma_size(const struct vmw_surface *srf) in vmw_surface_dma_size() argument
158 return srf->num_sizes * sizeof(struct vmw_surface_dma); in vmw_surface_dma_size()
170 static inline uint32_t vmw_surface_define_size(const struct vmw_surface *srf) in vmw_surface_define_size() argument
172 return sizeof(struct vmw_surface_define) + srf->num_sizes * in vmw_surface_define_size()
211 static void vmw_surface_define_encode(const struct vmw_surface *srf, in vmw_surface_define_encode() argument
221 cmd_len = sizeof(cmd->body) + srf->num_sizes * sizeof(SVGA3dSize); in vmw_surface_define_encode()
225 cmd->body.sid = srf->res.id; in vmw_surface_define_encode()
226 cmd->body.surfaceFlags = srf->flags; in vmw_surface_define_encode()
227 cmd->body.format = srf->format; in vmw_surface_define_encode()
229 cmd->body.face[i].numMipLevels = srf->mip_levels[i]; in vmw_surface_define_encode()
233 src_size = srf->sizes; in vmw_surface_define_encode()
235 for (i = 0; i < srf->num_sizes; ++i, cmd_size++, src_size++) { in vmw_surface_define_encode()
251 static void vmw_surface_dma_encode(struct vmw_surface *srf, in vmw_surface_dma_encode() argument
259 svga3dsurface_get_desc(srf->format); in vmw_surface_dma_encode()
261 for (i = 0; i < srf->num_sizes; ++i) { in vmw_surface_dma_encode()
266 const struct vmw_surface_offset *cur_offset = &srf->offsets[i]; in vmw_surface_dma_encode()
267 const struct drm_vmw_size *cur_size = &srf->sizes[i]; in vmw_surface_dma_encode()
276 body->host.sid = srf->res.id; in vmw_surface_dma_encode()
316 struct vmw_surface *srf; in vmw_hw_surface_destroy() local
343 srf = vmw_res_to_srf(res); in vmw_hw_surface_destroy()
366 struct vmw_surface *srf; in vmw_legacy_srf_create() local
374 srf = vmw_res_to_srf(res); in vmw_legacy_srf_create()
398 submit_size = vmw_surface_define_size(srf); in vmw_legacy_srf_create()
407 vmw_surface_define_encode(srf, cmd); in vmw_legacy_srf_create()
445 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_legacy_srf_dma() local
451 submit_size = vmw_surface_dma_size(srf); in vmw_legacy_srf_dma()
459 vmw_surface_dma_encode(srf, cmd, &ptr, bind); in vmw_legacy_srf_dma()
575 struct vmw_surface *srf, in vmw_surface_init() argument
579 struct vmw_resource *res = &srf->res; in vmw_surface_init()
600 INIT_LIST_HEAD(&srf->view_list); in vmw_surface_init()
618 prime.base)->srf.res); in vmw_user_surface_base_to_res()
628 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_user_surface_free() local
630 container_of(srf, struct vmw_user_surface, srf); in vmw_user_surface_free()
631 struct vmw_private *dev_priv = srf->res.dev_priv; in vmw_user_surface_free()
636 kfree(srf->offsets); in vmw_user_surface_free()
637 kfree(srf->sizes); in vmw_user_surface_free()
638 kfree(srf->snooper.image); in vmw_user_surface_free()
657 struct vmw_resource *res = &user_srf->srf.res; in vmw_user_surface_base_release()
695 struct vmw_surface *srf; in vmw_surface_define_ioctl() local
756 srf = &user_srf->srf; in vmw_surface_define_ioctl()
757 res = &srf->res; in vmw_surface_define_ioctl()
759 srf->flags = req->flags; in vmw_surface_define_ioctl()
760 srf->format = req->format; in vmw_surface_define_ioctl()
761 srf->scanout = req->scanout; in vmw_surface_define_ioctl()
763 memcpy(srf->mip_levels, req->mip_levels, sizeof(srf->mip_levels)); in vmw_surface_define_ioctl()
764 srf->num_sizes = num_sizes; in vmw_surface_define_ioctl()
767 srf->sizes = kmalloc(srf->num_sizes * sizeof(*srf->sizes), GFP_KERNEL); in vmw_surface_define_ioctl()
768 if (unlikely(srf->sizes == NULL)) { in vmw_surface_define_ioctl()
772 srf->offsets = kmalloc(srf->num_sizes * sizeof(*srf->offsets), in vmw_surface_define_ioctl()
774 if (unlikely(srf->sizes == NULL)) { in vmw_surface_define_ioctl()
782 ret = copy_from_user(srf->sizes, user_sizes, in vmw_surface_define_ioctl()
783 srf->num_sizes * sizeof(*srf->sizes)); in vmw_surface_define_ioctl()
789 srf->base_size = *srf->sizes; in vmw_surface_define_ioctl()
790 srf->autogen_filter = SVGA3D_TEX_FILTER_NONE; in vmw_surface_define_ioctl()
791 srf->multisample_count = 0; in vmw_surface_define_ioctl()
794 cur_offset = srf->offsets; in vmw_surface_define_ioctl()
795 cur_size = srf->sizes; in vmw_surface_define_ioctl()
798 for (j = 0; j < srf->mip_levels[i]; ++j) { in vmw_surface_define_ioctl()
812 if (srf->scanout && in vmw_surface_define_ioctl()
813 srf->num_sizes == 1 && in vmw_surface_define_ioctl()
814 srf->sizes[0].width == 64 && in vmw_surface_define_ioctl()
815 srf->sizes[0].height == 64 && in vmw_surface_define_ioctl()
816 srf->format == SVGA3D_A8R8G8B8) { in vmw_surface_define_ioctl()
818 srf->snooper.image = kmalloc(64 * 64 * 4, GFP_KERNEL); in vmw_surface_define_ioctl()
820 if (srf->snooper.image) { in vmw_surface_define_ioctl()
821 memset(srf->snooper.image, 0x00, 64 * 64 * 4); in vmw_surface_define_ioctl()
828 srf->snooper.image = NULL; in vmw_surface_define_ioctl()
830 srf->snooper.crtc = NULL; in vmw_surface_define_ioctl()
842 ret = vmw_surface_init(dev_priv, srf, vmw_user_surface_free); in vmw_surface_define_ioctl()
865 tmp = vmw_resource_reference(&srf->res); in vmw_surface_define_ioctl()
882 kfree(srf->offsets); in vmw_surface_define_ioctl()
884 kfree(srf->sizes); in vmw_surface_define_ioctl()
991 struct vmw_surface *srf; in vmw_surface_reference_ioctl() local
1003 srf = &user_srf->srf; in vmw_surface_reference_ioctl()
1005 rep->flags = srf->flags; in vmw_surface_reference_ioctl()
1006 rep->format = srf->format; in vmw_surface_reference_ioctl()
1007 memcpy(rep->mip_levels, srf->mip_levels, sizeof(srf->mip_levels)); in vmw_surface_reference_ioctl()
1012 ret = copy_to_user(user_sizes, &srf->base_size, in vmw_surface_reference_ioctl()
1013 sizeof(srf->base_size)); in vmw_surface_reference_ioctl()
1016 user_sizes, srf->num_sizes); in vmw_surface_reference_ioctl()
1035 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_gb_surface_create() local
1062 if (srf->array_size > 0) { in vmw_gb_surface_create()
1082 if (srf->array_size > 0) { in vmw_gb_surface_create()
1085 cmd2->body.sid = srf->res.id; in vmw_gb_surface_create()
1086 cmd2->body.surfaceFlags = srf->flags; in vmw_gb_surface_create()
1087 cmd2->body.format = cpu_to_le32(srf->format); in vmw_gb_surface_create()
1088 cmd2->body.numMipLevels = srf->mip_levels[0]; in vmw_gb_surface_create()
1089 cmd2->body.multisampleCount = srf->multisample_count; in vmw_gb_surface_create()
1090 cmd2->body.autogenFilter = srf->autogen_filter; in vmw_gb_surface_create()
1091 cmd2->body.size.width = srf->base_size.width; in vmw_gb_surface_create()
1092 cmd2->body.size.height = srf->base_size.height; in vmw_gb_surface_create()
1093 cmd2->body.size.depth = srf->base_size.depth; in vmw_gb_surface_create()
1094 cmd2->body.arraySize = srf->array_size; in vmw_gb_surface_create()
1098 cmd->body.sid = srf->res.id; in vmw_gb_surface_create()
1099 cmd->body.surfaceFlags = srf->flags; in vmw_gb_surface_create()
1100 cmd->body.format = cpu_to_le32(srf->format); in vmw_gb_surface_create()
1101 cmd->body.numMipLevels = srf->mip_levels[0]; in vmw_gb_surface_create()
1102 cmd->body.multisampleCount = srf->multisample_count; in vmw_gb_surface_create()
1103 cmd->body.autogenFilter = srf->autogen_filter; in vmw_gb_surface_create()
1104 cmd->body.size.width = srf->base_size.width; in vmw_gb_surface_create()
1105 cmd->body.size.height = srf->base_size.height; in vmw_gb_surface_create()
1106 cmd->body.size.depth = srf->base_size.depth; in vmw_gb_surface_create()
1236 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_gb_surface_destroy() local
1246 vmw_view_surface_list_destroy(dev_priv, &srf->view_list); in vmw_gb_surface_destroy()
1282 struct vmw_surface *srf; in vmw_gb_surface_define_ioctl() local
1313 &srf); in vmw_gb_surface_define_ioctl()
1317 user_srf = container_of(srf, struct vmw_user_surface, srf); in vmw_gb_surface_define_ioctl()
1325 res = &user_srf->srf.res; in vmw_gb_surface_define_ioctl()
1403 struct vmw_surface *srf; in vmw_gb_surface_reference_ioctl() local
1415 srf = &user_srf->srf; in vmw_gb_surface_reference_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()
1434 rep->creq.svga3d_flags = srf->flags; in vmw_gb_surface_reference_ioctl()
1435 rep->creq.format = srf->format; in vmw_gb_surface_reference_ioctl()
1436 rep->creq.mip_levels = srf->mip_levels[0]; in vmw_gb_surface_reference_ioctl()
1438 rep->creq.multisample_count = srf->multisample_count; in vmw_gb_surface_reference_ioctl()
1439 rep->creq.autogen_filter = srf->autogen_filter; in vmw_gb_surface_reference_ioctl()
1440 rep->creq.array_size = srf->array_size; in vmw_gb_surface_reference_ioctl()
1442 rep->creq.base_size = srf->base_size; 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()
1489 struct vmw_surface *srf; in vmw_surface_gb_priv_define() local
1535 *srf_out = &user_srf->srf; in vmw_surface_gb_priv_define()
1540 srf = &user_srf->srf; in vmw_surface_gb_priv_define()
1541 srf->flags = svga3d_flags; in vmw_surface_gb_priv_define()
1542 srf->format = format; in vmw_surface_gb_priv_define()
1543 srf->scanout = for_scanout; in vmw_surface_gb_priv_define()
1544 srf->mip_levels[0] = num_mip_levels; in vmw_surface_gb_priv_define()
1545 srf->num_sizes = 1; in vmw_surface_gb_priv_define()
1546 srf->sizes = NULL; in vmw_surface_gb_priv_define()
1547 srf->offsets = NULL; in vmw_surface_gb_priv_define()
1548 srf->base_size = size; in vmw_surface_gb_priv_define()
1549 srf->autogen_filter = SVGA3D_TEX_FILTER_NONE; in vmw_surface_gb_priv_define()
1550 srf->array_size = array_size; in vmw_surface_gb_priv_define()
1551 srf->multisample_count = multisample_count; in vmw_surface_gb_priv_define()
1560 srf->res.backup_size = in vmw_surface_gb_priv_define()
1561 svga3dsurface_get_serialized_size(srf->format, in vmw_surface_gb_priv_define()
1562 srf->base_size, in vmw_surface_gb_priv_define()
1563 srf->mip_levels[0], in vmw_surface_gb_priv_define()
1566 if (srf->flags & SVGA3D_SURFACE_BIND_STREAM_OUTPUT) in vmw_surface_gb_priv_define()
1567 srf->res.backup_size += sizeof(SVGA3dDXSOState); in vmw_surface_gb_priv_define()
1571 srf->flags |= SVGA3D_SURFACE_SCREENTARGET; in vmw_surface_gb_priv_define()
1577 ret = vmw_surface_init(dev_priv, srf, vmw_user_surface_free); in vmw_surface_gb_priv_define()