mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
drm/vmwgfx: Make all surfaces shareable
There is no real need to have a separate pool for shareable and non-shareable surfaces. Make all surfaces shareable, regardless of whether the drm_vmw_surface_flag_shareable has been specified. Signed-off-by: Maaz Mombasawala <maaz.mombasawala@broadcom.com> Reviewed-by: Martin Krastev <martin.krastev@broadcom.com> Signed-off-by: Zack Rusin <zack.rusin@broadcom.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240126200804.732454-3-zack.rusin@broadcom.com
This commit is contained in:
parent
935f795045
commit
9840d28f25
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright (c) 2009-2022 VMware, Inc., Palo Alto, CA., USA
|
||||
* Copyright (c) 2009-2023 VMware, Inc., Palo Alto, CA., USA
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
|
|
@ -648,7 +648,6 @@ int ttm_prime_handle_to_fd(struct ttm_object_file *tfile,
|
|||
* @tfile: struct ttm_object_file identifying the caller
|
||||
* @size: The size of the dma_bufs we export.
|
||||
* @prime: The object to be initialized.
|
||||
* @shareable: See ttm_base_object_init
|
||||
* @type: See ttm_base_object_init
|
||||
* @refcount_release: See ttm_base_object_init
|
||||
*
|
||||
|
|
@ -656,10 +655,11 @@ int ttm_prime_handle_to_fd(struct ttm_object_file *tfile,
|
|||
* for data sharing between processes and devices.
|
||||
*/
|
||||
int ttm_prime_object_init(struct ttm_object_file *tfile, size_t size,
|
||||
struct ttm_prime_object *prime, bool shareable,
|
||||
struct ttm_prime_object *prime,
|
||||
enum ttm_object_type type,
|
||||
void (*refcount_release) (struct ttm_base_object **))
|
||||
{
|
||||
bool shareable = !!(type == VMW_RES_SURFACE);
|
||||
mutex_init(&prime->mutex);
|
||||
prime->size = PAGE_ALIGN(size);
|
||||
prime->real_type = type;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright (c) 2006-2022 VMware, Inc., Palo Alto, CA., USA
|
||||
* Copyright (c) 2006-2023 VMware, Inc., Palo Alto, CA., USA
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
|
|
@ -288,7 +288,6 @@ extern void ttm_object_device_release(struct ttm_object_device **p_tdev);
|
|||
extern int ttm_prime_object_init(struct ttm_object_file *tfile,
|
||||
size_t size,
|
||||
struct ttm_prime_object *prime,
|
||||
bool shareable,
|
||||
enum ttm_object_type type,
|
||||
void (*refcount_release)
|
||||
(struct ttm_base_object **));
|
||||
|
|
|
|||
|
|
@ -832,8 +832,6 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data,
|
|||
srf->snooper.image = NULL;
|
||||
}
|
||||
|
||||
user_srf->prime.base.shareable = false;
|
||||
user_srf->prime.base.tfile = NULL;
|
||||
if (drm_is_primary_client(file_priv))
|
||||
user_srf->master = drm_file_get_master(file_priv);
|
||||
|
||||
|
|
@ -847,10 +845,10 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data,
|
|||
goto out_unlock;
|
||||
|
||||
/*
|
||||
* A gb-aware client referencing a shared surface will
|
||||
* expect a backup buffer to be present.
|
||||
* A gb-aware client referencing a surface will expect a backup
|
||||
* buffer to be present.
|
||||
*/
|
||||
if (dev_priv->has_mob && req->shareable) {
|
||||
if (dev_priv->has_mob) {
|
||||
struct vmw_bo_params params = {
|
||||
.domain = VMW_BO_DOMAIN_SYS,
|
||||
.busy_domain = VMW_BO_DOMAIN_SYS,
|
||||
|
|
@ -869,8 +867,9 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data,
|
|||
}
|
||||
|
||||
tmp = vmw_resource_reference(&srf->res);
|
||||
ret = ttm_prime_object_init(tfile, res->guest_memory_size, &user_srf->prime,
|
||||
req->shareable, VMW_RES_SURFACE,
|
||||
ret = ttm_prime_object_init(tfile, res->guest_memory_size,
|
||||
&user_srf->prime,
|
||||
VMW_RES_SURFACE,
|
||||
&vmw_user_surface_base_release);
|
||||
|
||||
if (unlikely(ret != 0)) {
|
||||
|
|
@ -1549,8 +1548,6 @@ vmw_gb_surface_define_internal(struct drm_device *dev,
|
|||
|
||||
tmp = vmw_resource_reference(res);
|
||||
ret = ttm_prime_object_init(tfile, res->guest_memory_size, &user_srf->prime,
|
||||
req->base.drm_surface_flags &
|
||||
drm_vmw_surface_flag_shareable,
|
||||
VMW_RES_SURFACE,
|
||||
&vmw_user_surface_base_release);
|
||||
|
||||
|
|
@ -2052,8 +2049,6 @@ int vmw_gb_surface_define(struct vmw_private *dev_priv,
|
|||
}
|
||||
|
||||
*srf_out = &user_srf->srf;
|
||||
user_srf->prime.base.shareable = false;
|
||||
user_srf->prime.base.tfile = NULL;
|
||||
|
||||
srf = &user_srf->srf;
|
||||
srf->metadata = *req;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright © 2009-2022 VMware, Inc., Palo Alto, CA., USA
|
||||
* Copyright © 2009-2023 VMware, Inc., Palo Alto, CA., USA
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
|
|
@ -902,7 +902,8 @@ struct drm_vmw_shader_arg {
|
|||
/**
|
||||
* enum drm_vmw_surface_flags
|
||||
*
|
||||
* @drm_vmw_surface_flag_shareable: Whether the surface is shareable
|
||||
* @drm_vmw_surface_flag_shareable: Deprecated - all userspace surfaces are
|
||||
* shareable.
|
||||
* @drm_vmw_surface_flag_scanout: Whether the surface is a scanout
|
||||
* surface.
|
||||
* @drm_vmw_surface_flag_create_buffer: Create a backup buffer if none is
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user