Lines Matching refs:srf
51 struct vmw_surface srf; member
170 static inline uint32_t vmw_surface_dma_size(const struct vmw_surface *srf) in vmw_surface_dma_size() argument
172 return srf->num_sizes * sizeof(struct vmw_surface_dma); in vmw_surface_dma_size()
184 static inline uint32_t vmw_surface_define_size(const struct vmw_surface *srf) in vmw_surface_define_size() argument
186 return sizeof(struct vmw_surface_define) + srf->num_sizes * in vmw_surface_define_size()
225 static void vmw_surface_define_encode(const struct vmw_surface *srf, in vmw_surface_define_encode() argument
235 cmd_len = sizeof(cmd->body) + srf->num_sizes * sizeof(SVGA3dSize); in vmw_surface_define_encode()
239 cmd->body.sid = srf->res.id; in vmw_surface_define_encode()
245 cmd->body.surfaceFlags = (SVGA3dSurface1Flags)srf->flags; in vmw_surface_define_encode()
246 cmd->body.format = srf->format; in vmw_surface_define_encode()
248 cmd->body.face[i].numMipLevels = srf->mip_levels[i]; in vmw_surface_define_encode()
252 src_size = srf->sizes; in vmw_surface_define_encode()
254 for (i = 0; i < srf->num_sizes; ++i, cmd_size++, src_size++) { in vmw_surface_define_encode()
270 static void vmw_surface_dma_encode(struct vmw_surface *srf, in vmw_surface_dma_encode() argument
278 svga3dsurface_get_desc(srf->format); in vmw_surface_dma_encode()
280 for (i = 0; i < srf->num_sizes; ++i) { in vmw_surface_dma_encode()
285 const struct vmw_surface_offset *cur_offset = &srf->offsets[i]; in vmw_surface_dma_encode()
286 const struct drm_vmw_size *cur_size = &srf->sizes[i]; in vmw_surface_dma_encode()
295 body->host.sid = srf->res.id; in vmw_surface_dma_encode()
335 struct vmw_surface *srf; in vmw_hw_surface_destroy() local
362 srf = vmw_res_to_srf(res); in vmw_hw_surface_destroy()
384 struct vmw_surface *srf; in vmw_legacy_srf_create() local
392 srf = vmw_res_to_srf(res); in vmw_legacy_srf_create()
416 submit_size = vmw_surface_define_size(srf); in vmw_legacy_srf_create()
425 vmw_surface_define_encode(srf, cmd); in vmw_legacy_srf_create()
465 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_legacy_srf_dma() local
470 submit_size = vmw_surface_dma_size(srf); in vmw_legacy_srf_dma()
478 vmw_surface_dma_encode(srf, cmd, &ptr, bind); in vmw_legacy_srf_dma()
595 struct vmw_surface *srf, in vmw_surface_init() argument
599 struct vmw_resource *res = &srf->res; in vmw_surface_init()
616 INIT_LIST_HEAD(&srf->view_list); in vmw_surface_init()
634 prime.base)->srf.res); in vmw_user_surface_base_to_res()
644 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_user_surface_free() local
646 container_of(srf, struct vmw_user_surface, srf); in vmw_user_surface_free()
647 struct vmw_private *dev_priv = srf->res.dev_priv; in vmw_user_surface_free()
652 kfree(srf->offsets); in vmw_user_surface_free()
653 kfree(srf->sizes); in vmw_user_surface_free()
654 kfree(srf->snooper.image); in vmw_user_surface_free()
673 struct vmw_resource *res = &user_srf->srf.res; in vmw_user_surface_base_release()
711 struct vmw_surface *srf; in vmw_surface_define_ioctl() local
778 srf = &user_srf->srf; in vmw_surface_define_ioctl()
779 res = &srf->res; in vmw_surface_define_ioctl()
782 srf->flags = (SVGA3dSurfaceAllFlags)req->flags; in vmw_surface_define_ioctl()
783 srf->format = req->format; in vmw_surface_define_ioctl()
784 srf->scanout = req->scanout; in vmw_surface_define_ioctl()
786 memcpy(srf->mip_levels, req->mip_levels, sizeof(srf->mip_levels)); in vmw_surface_define_ioctl()
787 srf->num_sizes = num_sizes; in vmw_surface_define_ioctl()
789 srf->sizes = memdup_user((struct drm_vmw_size __user *)(unsigned long) in vmw_surface_define_ioctl()
791 sizeof(*srf->sizes) * srf->num_sizes); in vmw_surface_define_ioctl()
792 if (IS_ERR(srf->sizes)) { in vmw_surface_define_ioctl()
793 ret = PTR_ERR(srf->sizes); in vmw_surface_define_ioctl()
796 srf->offsets = kmalloc_array(srf->num_sizes, in vmw_surface_define_ioctl()
797 sizeof(*srf->offsets), in vmw_surface_define_ioctl()
799 if (unlikely(!srf->offsets)) { in vmw_surface_define_ioctl()
804 srf->base_size = *srf->sizes; in vmw_surface_define_ioctl()
805 srf->autogen_filter = SVGA3D_TEX_FILTER_NONE; in vmw_surface_define_ioctl()
806 srf->multisample_count = 0; in vmw_surface_define_ioctl()
807 srf->multisample_pattern = SVGA3D_MS_PATTERN_NONE; in vmw_surface_define_ioctl()
808 srf->quality_level = SVGA3D_MS_QUALITY_NONE; in vmw_surface_define_ioctl()
811 cur_offset = srf->offsets; in vmw_surface_define_ioctl()
812 cur_size = srf->sizes; in vmw_surface_define_ioctl()
815 for (j = 0; j < srf->mip_levels[i]; ++j) { in vmw_surface_define_ioctl()
829 if (srf->scanout && in vmw_surface_define_ioctl()
830 srf->num_sizes == 1 && in vmw_surface_define_ioctl()
831 srf->sizes[0].width == 64 && in vmw_surface_define_ioctl()
832 srf->sizes[0].height == 64 && in vmw_surface_define_ioctl()
833 srf->format == SVGA3D_A8R8G8B8) { in vmw_surface_define_ioctl()
835 srf->snooper.image = kzalloc(64 * 64 * 4, GFP_KERNEL); in vmw_surface_define_ioctl()
836 if (!srf->snooper.image) { in vmw_surface_define_ioctl()
842 srf->snooper.image = NULL; in vmw_surface_define_ioctl()
855 ret = vmw_surface_init(dev_priv, srf, vmw_user_surface_free); in vmw_surface_define_ioctl()
878 tmp = vmw_resource_reference(&srf->res); in vmw_surface_define_ioctl()
895 kfree(srf->offsets); in vmw_surface_define_ioctl()
897 kfree(srf->sizes); in vmw_surface_define_ioctl()
1000 struct vmw_surface *srf; in vmw_surface_reference_ioctl() local
1012 srf = &user_srf->srf; in vmw_surface_reference_ioctl()
1015 rep->flags = (uint32_t)srf->flags; in vmw_surface_reference_ioctl()
1016 rep->format = srf->format; in vmw_surface_reference_ioctl()
1017 memcpy(rep->mip_levels, srf->mip_levels, sizeof(srf->mip_levels)); in vmw_surface_reference_ioctl()
1022 ret = copy_to_user(user_sizes, &srf->base_size, in vmw_surface_reference_ioctl()
1023 sizeof(srf->base_size)); in vmw_surface_reference_ioctl()
1026 user_sizes, srf->num_sizes); in vmw_surface_reference_ioctl()
1045 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_gb_surface_create() local
1076 if (dev_priv->has_sm4_1 && srf->array_size > 0) { in vmw_gb_surface_create()
1080 } else if (srf->array_size > 0) { in vmw_gb_surface_create()
1101 if (dev_priv->has_sm4_1 && srf->array_size > 0) { in vmw_gb_surface_create()
1104 cmd3->body.sid = srf->res.id; in vmw_gb_surface_create()
1105 cmd3->body.surfaceFlags = srf->flags; in vmw_gb_surface_create()
1106 cmd3->body.format = srf->format; in vmw_gb_surface_create()
1107 cmd3->body.numMipLevels = srf->mip_levels[0]; in vmw_gb_surface_create()
1108 cmd3->body.multisampleCount = srf->multisample_count; in vmw_gb_surface_create()
1109 cmd3->body.multisamplePattern = srf->multisample_pattern; in vmw_gb_surface_create()
1110 cmd3->body.qualityLevel = srf->quality_level; in vmw_gb_surface_create()
1111 cmd3->body.autogenFilter = srf->autogen_filter; in vmw_gb_surface_create()
1112 cmd3->body.size.width = srf->base_size.width; in vmw_gb_surface_create()
1113 cmd3->body.size.height = srf->base_size.height; in vmw_gb_surface_create()
1114 cmd3->body.size.depth = srf->base_size.depth; in vmw_gb_surface_create()
1115 cmd3->body.arraySize = srf->array_size; in vmw_gb_surface_create()
1116 } else if (srf->array_size > 0) { in vmw_gb_surface_create()
1119 cmd2->body.sid = srf->res.id; in vmw_gb_surface_create()
1120 cmd2->body.surfaceFlags = srf->flags; in vmw_gb_surface_create()
1121 cmd2->body.format = srf->format; in vmw_gb_surface_create()
1122 cmd2->body.numMipLevels = srf->mip_levels[0]; in vmw_gb_surface_create()
1123 cmd2->body.multisampleCount = srf->multisample_count; in vmw_gb_surface_create()
1124 cmd2->body.autogenFilter = srf->autogen_filter; in vmw_gb_surface_create()
1125 cmd2->body.size.width = srf->base_size.width; in vmw_gb_surface_create()
1126 cmd2->body.size.height = srf->base_size.height; in vmw_gb_surface_create()
1127 cmd2->body.size.depth = srf->base_size.depth; in vmw_gb_surface_create()
1128 cmd2->body.arraySize = srf->array_size; in vmw_gb_surface_create()
1132 cmd->body.sid = srf->res.id; in vmw_gb_surface_create()
1133 cmd->body.surfaceFlags = srf->flags; in vmw_gb_surface_create()
1134 cmd->body.format = srf->format; in vmw_gb_surface_create()
1135 cmd->body.numMipLevels = srf->mip_levels[0]; in vmw_gb_surface_create()
1136 cmd->body.multisampleCount = srf->multisample_count; in vmw_gb_surface_create()
1137 cmd->body.autogenFilter = srf->autogen_filter; in vmw_gb_surface_create()
1138 cmd->body.size.width = srf->base_size.width; in vmw_gb_surface_create()
1139 cmd->body.size.height = srf->base_size.height; in vmw_gb_surface_create()
1140 cmd->body.size.depth = srf->base_size.depth; in vmw_gb_surface_create()
1270 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_gb_surface_destroy() local
1280 vmw_view_surface_list_destroy(dev_priv, &srf->view_list); in vmw_gb_surface_destroy()
1399 struct vmw_surface *srf; in vmw_surface_gb_priv_define() local
1455 *srf_out = &user_srf->srf; in vmw_surface_gb_priv_define()
1460 srf = &user_srf->srf; in vmw_surface_gb_priv_define()
1461 srf->flags = svga3d_flags; in vmw_surface_gb_priv_define()
1462 srf->format = format; in vmw_surface_gb_priv_define()
1463 srf->scanout = for_scanout; in vmw_surface_gb_priv_define()
1464 srf->mip_levels[0] = num_mip_levels; in vmw_surface_gb_priv_define()
1465 srf->num_sizes = 1; in vmw_surface_gb_priv_define()
1466 srf->sizes = NULL; in vmw_surface_gb_priv_define()
1467 srf->offsets = NULL; in vmw_surface_gb_priv_define()
1468 srf->base_size = size; in vmw_surface_gb_priv_define()
1469 srf->autogen_filter = SVGA3D_TEX_FILTER_NONE; in vmw_surface_gb_priv_define()
1470 srf->array_size = array_size; in vmw_surface_gb_priv_define()
1471 srf->multisample_count = multisample_count; in vmw_surface_gb_priv_define()
1472 srf->multisample_pattern = multisample_pattern; in vmw_surface_gb_priv_define()
1473 srf->quality_level = quality_level; in vmw_surface_gb_priv_define()
1480 if (srf->flags & SVGA3D_SURFACE_MULTISAMPLE) in vmw_surface_gb_priv_define()
1481 sample_count = srf->multisample_count; in vmw_surface_gb_priv_define()
1483 srf->res.backup_size = in vmw_surface_gb_priv_define()
1484 svga3dsurface_get_serialized_size_extended(srf->format, in vmw_surface_gb_priv_define()
1485 srf->base_size, in vmw_surface_gb_priv_define()
1486 srf->mip_levels[0], in vmw_surface_gb_priv_define()
1490 if (srf->flags & SVGA3D_SURFACE_BIND_STREAM_OUTPUT) in vmw_surface_gb_priv_define()
1491 srf->res.backup_size += sizeof(SVGA3dDXSOState); in vmw_surface_gb_priv_define()
1504 srf->flags |= SVGA3D_SURFACE_SCREENTARGET; in vmw_surface_gb_priv_define()
1510 ret = vmw_surface_init(dev_priv, srf, vmw_user_surface_free); in vmw_surface_gb_priv_define()
1578 struct vmw_surface *srf; in vmw_gb_surface_define_internal() local
1633 &srf); in vmw_gb_surface_define_internal()
1637 user_srf = container_of(srf, struct vmw_user_surface, srf); in vmw_gb_surface_define_internal()
1645 res = &user_srf->srf.res; in vmw_gb_surface_define_internal()
1727 struct vmw_surface *srf; in vmw_gb_surface_reference_internal() local
1739 srf = &user_srf->srf; in vmw_gb_surface_reference_internal()
1740 if (!srf->res.backup) { in vmw_gb_surface_reference_internal()
1746 ret = vmw_user_bo_reference(tfile, srf->res.backup, &backup_handle); in vmw_gb_surface_reference_internal()
1757 rep->creq.base.svga3d_flags = SVGA3D_FLAGS_LOWER_32(srf->flags); in vmw_gb_surface_reference_internal()
1758 rep->creq.base.format = srf->format; in vmw_gb_surface_reference_internal()
1759 rep->creq.base.mip_levels = srf->mip_levels[0]; in vmw_gb_surface_reference_internal()
1761 rep->creq.base.multisample_count = srf->multisample_count; in vmw_gb_surface_reference_internal()
1762 rep->creq.base.autogen_filter = srf->autogen_filter; in vmw_gb_surface_reference_internal()
1763 rep->creq.base.array_size = srf->array_size; in vmw_gb_surface_reference_internal()
1765 rep->creq.base.base_size = srf->base_size; in vmw_gb_surface_reference_internal()
1767 rep->crep.backup_size = srf->res.backup_size; in vmw_gb_surface_reference_internal()
1770 drm_vma_node_offset_addr(&srf->res.backup->base.vma_node); in vmw_gb_surface_reference_internal()
1771 rep->crep.buffer_size = srf->res.backup->base.num_pages * PAGE_SIZE; in vmw_gb_surface_reference_internal()
1775 SVGA3D_FLAGS_UPPER_32(srf->flags); in vmw_gb_surface_reference_internal()
1776 rep->creq.multisample_pattern = srf->multisample_pattern; in vmw_gb_surface_reference_internal()
1777 rep->creq.quality_level = srf->quality_level; in vmw_gb_surface_reference_internal()