diff options
author | Thomas Hellstrom <thellstrom@vmware.com> | 2013-10-08 13:32:36 +0400 |
---|---|---|
committer | Thomas Hellstrom <thellstrom@vmware.com> | 2014-01-17 10:52:36 +0400 |
commit | 173fb7d4e26705a9e8b8e9d197a18ff39bfdad0a (patch) | |
tree | f7797b8cbcd5f6d5be686c4c642f4ef9df59a49d /drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | |
parent | b5c3b1a6bfaf71895d656162f29e979c5c904888 (diff) | |
download | linux-173fb7d4e26705a9e8b8e9d197a18ff39bfdad0a.tar.xz |
drm/vmwgfx: Persistent tracking of context bindings
Only scrub context bindings when a bound resource is destroyed, or when
the MOB backing the context is unbound.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Zack Rusin <zackr@vmware.com>
Diffstat (limited to 'drivers/gpu/drm/vmwgfx/vmwgfx_surface.c')
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c index 739a93dc941e..a729b20ee14d 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c @@ -1100,6 +1100,9 @@ static int vmw_gb_surface_destroy(struct vmw_resource *res) if (likely(res->id == -1)) return 0; + mutex_lock(&dev_priv->binding_mutex); + vmw_context_binding_res_list_kill(&res->binding_head); + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); if (unlikely(cmd == NULL)) { DRM_ERROR("Failed reserving FIFO space for surface " @@ -1111,6 +1114,7 @@ static int vmw_gb_surface_destroy(struct vmw_resource *res) cmd->header.size = sizeof(cmd->body); cmd->body.sid = res->id; vmw_fifo_commit(dev_priv, sizeof(*cmd)); + mutex_unlock(&dev_priv->binding_mutex); vmw_resource_release_id(res); vmw_3d_resource_dec(dev_priv, false); |