Lines Matching refs:srf
43 struct vmw_surface srf; member
152 static inline uint32_t vmw_surface_dma_size(const struct vmw_surface *srf) in vmw_surface_dma_size() argument
154 return srf->num_sizes * sizeof(struct vmw_surface_dma); in vmw_surface_dma_size()
166 static inline uint32_t vmw_surface_define_size(const struct vmw_surface *srf) in vmw_surface_define_size() argument
168 return sizeof(struct vmw_surface_define) + srf->num_sizes * in vmw_surface_define_size()
207 static void vmw_surface_define_encode(const struct vmw_surface *srf, in vmw_surface_define_encode() argument
217 cmd_len = sizeof(cmd->body) + srf->num_sizes * sizeof(SVGA3dSize); in vmw_surface_define_encode()
221 cmd->body.sid = srf->res.id; in vmw_surface_define_encode()
222 cmd->body.surfaceFlags = srf->flags; in vmw_surface_define_encode()
223 cmd->body.format = cpu_to_le32(srf->format); in vmw_surface_define_encode()
225 cmd->body.face[i].numMipLevels = srf->mip_levels[i]; in vmw_surface_define_encode()
229 src_size = srf->sizes; in vmw_surface_define_encode()
231 for (i = 0; i < srf->num_sizes; ++i, cmd_size++, src_size++) { in vmw_surface_define_encode()
247 static void vmw_surface_dma_encode(struct vmw_surface *srf, in vmw_surface_dma_encode() argument
255 svga3dsurface_get_desc(srf->format); in vmw_surface_dma_encode()
257 for (i = 0; i < srf->num_sizes; ++i) { in vmw_surface_dma_encode()
262 const struct vmw_surface_offset *cur_offset = &srf->offsets[i]; in vmw_surface_dma_encode()
263 const struct drm_vmw_size *cur_size = &srf->sizes[i]; in vmw_surface_dma_encode()
272 body->host.sid = srf->res.id; in vmw_surface_dma_encode()
312 struct vmw_surface *srf; in vmw_hw_surface_destroy() local
339 srf = vmw_res_to_srf(res); in vmw_hw_surface_destroy()
362 struct vmw_surface *srf; in vmw_legacy_srf_create() local
370 srf = vmw_res_to_srf(res); in vmw_legacy_srf_create()
394 submit_size = vmw_surface_define_size(srf); in vmw_legacy_srf_create()
403 vmw_surface_define_encode(srf, cmd); in vmw_legacy_srf_create()
441 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_legacy_srf_dma() local
447 submit_size = vmw_surface_dma_size(srf); in vmw_legacy_srf_dma()
455 vmw_surface_dma_encode(srf, cmd, &ptr, bind); in vmw_legacy_srf_dma()
571 struct vmw_surface *srf, in vmw_surface_init() argument
575 struct vmw_resource *res = &srf->res; in vmw_surface_init()
613 prime.base)->srf.res); in vmw_user_surface_base_to_res()
623 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_user_surface_free() local
625 container_of(srf, struct vmw_user_surface, srf); in vmw_user_surface_free()
626 struct vmw_private *dev_priv = srf->res.dev_priv; in vmw_user_surface_free()
631 kfree(srf->offsets); in vmw_user_surface_free()
632 kfree(srf->sizes); in vmw_user_surface_free()
633 kfree(srf->snooper.image); in vmw_user_surface_free()
652 struct vmw_resource *res = &user_srf->srf.res; in vmw_user_surface_base_release()
688 struct vmw_surface *srf; in vmw_surface_define_ioctl() local
751 srf = &user_srf->srf; in vmw_surface_define_ioctl()
752 res = &srf->res; in vmw_surface_define_ioctl()
754 srf->flags = req->flags; in vmw_surface_define_ioctl()
755 srf->format = req->format; in vmw_surface_define_ioctl()
756 srf->scanout = req->scanout; in vmw_surface_define_ioctl()
758 memcpy(srf->mip_levels, req->mip_levels, sizeof(srf->mip_levels)); in vmw_surface_define_ioctl()
759 srf->num_sizes = num_sizes; in vmw_surface_define_ioctl()
762 srf->sizes = kmalloc(srf->num_sizes * sizeof(*srf->sizes), GFP_KERNEL); in vmw_surface_define_ioctl()
763 if (unlikely(srf->sizes == NULL)) { in vmw_surface_define_ioctl()
767 srf->offsets = kmalloc(srf->num_sizes * sizeof(*srf->offsets), in vmw_surface_define_ioctl()
769 if (unlikely(srf->sizes == NULL)) { in vmw_surface_define_ioctl()
777 ret = copy_from_user(srf->sizes, user_sizes, in vmw_surface_define_ioctl()
778 srf->num_sizes * sizeof(*srf->sizes)); in vmw_surface_define_ioctl()
784 srf->base_size = *srf->sizes; in vmw_surface_define_ioctl()
785 srf->autogen_filter = SVGA3D_TEX_FILTER_NONE; in vmw_surface_define_ioctl()
786 srf->multisample_count = 0; in vmw_surface_define_ioctl()
789 cur_offset = srf->offsets; in vmw_surface_define_ioctl()
790 cur_size = srf->sizes; in vmw_surface_define_ioctl()
793 for (j = 0; j < srf->mip_levels[i]; ++j) { in vmw_surface_define_ioctl()
807 if (srf->scanout && in vmw_surface_define_ioctl()
808 srf->num_sizes == 1 && in vmw_surface_define_ioctl()
809 srf->sizes[0].width == 64 && in vmw_surface_define_ioctl()
810 srf->sizes[0].height == 64 && in vmw_surface_define_ioctl()
811 srf->format == SVGA3D_A8R8G8B8) { in vmw_surface_define_ioctl()
813 srf->snooper.image = kmalloc(64 * 64 * 4, GFP_KERNEL); in vmw_surface_define_ioctl()
815 if (srf->snooper.image) { in vmw_surface_define_ioctl()
816 memset(srf->snooper.image, 0x00, 64 * 64 * 4); in vmw_surface_define_ioctl()
823 srf->snooper.image = NULL; in vmw_surface_define_ioctl()
825 srf->snooper.crtc = NULL; in vmw_surface_define_ioctl()
837 ret = vmw_surface_init(dev_priv, srf, vmw_user_surface_free); in vmw_surface_define_ioctl()
859 tmp = vmw_resource_reference(&srf->res); in vmw_surface_define_ioctl()
876 kfree(srf->offsets); in vmw_surface_define_ioctl()
878 kfree(srf->sizes); in vmw_surface_define_ioctl()
975 struct vmw_surface *srf; in vmw_surface_reference_ioctl() local
987 srf = &user_srf->srf; in vmw_surface_reference_ioctl()
989 rep->flags = srf->flags; in vmw_surface_reference_ioctl()
990 rep->format = srf->format; in vmw_surface_reference_ioctl()
991 memcpy(rep->mip_levels, srf->mip_levels, sizeof(srf->mip_levels)); in vmw_surface_reference_ioctl()
996 ret = copy_to_user(user_sizes, &srf->base_size, in vmw_surface_reference_ioctl()
997 sizeof(srf->base_size)); in vmw_surface_reference_ioctl()
1000 user_sizes, srf->num_sizes); in vmw_surface_reference_ioctl()
1019 struct vmw_surface *srf = vmw_res_to_srf(res); in vmw_gb_surface_create() local
1054 cmd->body.sid = srf->res.id; in vmw_gb_surface_create()
1055 cmd->body.surfaceFlags = srf->flags; in vmw_gb_surface_create()
1056 cmd->body.format = cpu_to_le32(srf->format); in vmw_gb_surface_create()
1057 cmd->body.numMipLevels = srf->mip_levels[0]; in vmw_gb_surface_create()
1058 cmd->body.multisampleCount = srf->multisample_count; in vmw_gb_surface_create()
1059 cmd->body.autogenFilter = srf->autogen_filter; in vmw_gb_surface_create()
1060 cmd->body.size.width = srf->base_size.width; in vmw_gb_surface_create()
1061 cmd->body.size.height = srf->base_size.height; in vmw_gb_surface_create()
1062 cmd->body.size.depth = srf->base_size.depth; in vmw_gb_surface_create()
1233 struct vmw_surface *srf; in vmw_gb_surface_define_ioctl() local
1280 srf = &user_srf->srf; in vmw_gb_surface_define_ioctl()
1281 res = &srf->res; in vmw_gb_surface_define_ioctl()
1283 srf->flags = req->svga3d_flags; in vmw_gb_surface_define_ioctl()
1284 srf->format = req->format; in vmw_gb_surface_define_ioctl()
1285 srf->scanout = req->drm_surface_flags & drm_vmw_surface_flag_scanout; in vmw_gb_surface_define_ioctl()
1286 srf->mip_levels[0] = req->mip_levels; in vmw_gb_surface_define_ioctl()
1287 srf->num_sizes = 1; in vmw_gb_surface_define_ioctl()
1288 srf->sizes = NULL; in vmw_gb_surface_define_ioctl()
1289 srf->offsets = NULL; in vmw_gb_surface_define_ioctl()
1291 srf->base_size = req->base_size; in vmw_gb_surface_define_ioctl()
1292 srf->autogen_filter = SVGA3D_TEX_FILTER_NONE; in vmw_gb_surface_define_ioctl()
1293 srf->multisample_count = req->multisample_count; in vmw_gb_surface_define_ioctl()
1295 (srf->format, srf->base_size, srf->mip_levels[0], in vmw_gb_surface_define_ioctl()
1296 srf->flags & SVGA3D_SURFACE_CUBEMAP); in vmw_gb_surface_define_ioctl()
1308 ret = vmw_surface_init(dev_priv, srf, vmw_user_surface_free); in vmw_gb_surface_define_ioctl()
1329 tmp = vmw_resource_reference(&srf->res); in vmw_gb_surface_define_ioctl()
1383 struct vmw_surface *srf; in vmw_gb_surface_reference_ioctl() local
1395 srf = &user_srf->srf; in vmw_gb_surface_reference_ioctl()
1396 if (srf->res.backup == NULL) { in vmw_gb_surface_reference_ioctl()
1402 ret = vmw_user_dmabuf_reference(tfile, srf->res.backup, in vmw_gb_surface_reference_ioctl()
1414 rep->creq.svga3d_flags = srf->flags; in vmw_gb_surface_reference_ioctl()
1415 rep->creq.format = srf->format; in vmw_gb_surface_reference_ioctl()
1416 rep->creq.mip_levels = srf->mip_levels[0]; in vmw_gb_surface_reference_ioctl()
1418 rep->creq.multisample_count = srf->multisample_count; in vmw_gb_surface_reference_ioctl()
1419 rep->creq.autogen_filter = srf->autogen_filter; in vmw_gb_surface_reference_ioctl()
1421 rep->creq.base_size = srf->base_size; in vmw_gb_surface_reference_ioctl()
1423 rep->crep.backup_size = srf->res.backup_size; in vmw_gb_surface_reference_ioctl()
1426 drm_vma_node_offset_addr(&srf->res.backup->base.vma_node); in vmw_gb_surface_reference_ioctl()
1427 rep->crep.buffer_size = srf->res.backup->base.num_pages * PAGE_SIZE; in vmw_gb_surface_reference_ioctl()