nouveau: fix channel closing
PATCH 1/1 nouveau: fix channel closing
Restore code lost in libdrm_nouveau rewrite.
--- nouveau/nouveau.c | 17 ++++++++++++----- 1 files changed, 12 insertions(+), 5 deletions(-)
nouveau/nouveau.c +12 -5
@@ -278,15 +278,22 @@ nouveau_object_new(struct nouveau_object *parent, uint64_t handle,void nouveau_object_del (struct nouveau_object **pobj) { -struct drm_nouveau_gpuobj_free req;struct nouveau_object *obj = *pobj;struct nouveau_device *dev;if (obj) { dev =nouveau_object_find (obj,NOUVEAU_DEVICE_CLASS ); - req.channel = obj->parent->handle; - req.handle = obj->handle; -drmCommandWrite (dev->fd,DRM_NOUVEAU_GPUOBJ_FREE , - &req,sizeof (req)); +if (obj->oclass ==NOUVEAU_FIFO_CHANNEL_CLASS ) { +struct drm_nouveau_channel_free req; + req.channel = obj->handle; +drmCommandWrite (dev->fd,DRM_NOUVEAU_CHANNEL_FREE , + &req,sizeof (req)); + }else { +struct drm_nouveau_gpuobj_free req; + req.channel = obj->parent->handle; + req.handle = obj->handle; +drmCommandWrite (dev->fd,DRM_NOUVEAU_GPUOBJ_FREE , + &req,sizeof (req)); + } }free (obj); *pobj =NULL ;
Signature · 1 line
1.7.8.5
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 1 line · Marcin Slusarz
Restore code lost in
libdrm_nouveaurewrite.
Thanks, pushed.
Quoted 36 lines
--- nouveau/nouveau.c | 17 ++++++++++++----- 1 files changed, 12 insertions(+), 5 deletions(-)nouveau/nouveau.c +12
-5@@ -278,15 +278,22 @@ nouveau_object_new(struct nouveau_object *parent, uint64_t handle,void nouveau_object_del (struct nouveau_object **pobj) { -struct drm_nouveau_gpuobj_free req;struct nouveau_object *obj = *pobj;struct nouveau_device *dev;if (obj) { dev =nouveau_object_find (obj,NOUVEAU_DEVICE_CLASS ); - req.channel = obj->parent->handle; - req.handle = obj->handle; -drmCommandWrite (dev->fd,DRM_NOUVEAU_GPUOBJ_FREE , - &req,sizeof (req)); +if (obj->oclass ==NOUVEAU_FIFO_CHANNEL_CLASS ) { +struct drm_nouveau_channel_free req; + req.channel = obj->handle; +drmCommandWrite (dev->fd,DRM_NOUVEAU_CHANNEL_FREE , + &req,sizeof (req)); + }else { +struct drm_nouveau_gpuobj_free req; + req.channel = obj->parent->handle; + req.handle = obj->handle; +drmCommandWrite (dev->fd,DRM_NOUVEAU_GPUOBJ_FREE , + &req,sizeof (req)); + } }free (obj); *pobj =NULL ;