Marcin Slusarz
2011-May-01 21:49 UTC
[Nouveau] [PATCH] drm/nouveau: make cursor_set implementation consistent with other drivers
When xorg state tracker wants to hide the cursor it calls set_cursor with NULL buffer_handle and size=0x0, but nouveau refuses to hide it because size is not 64x64... which is a bit odd. Both radeon and intel check buffer_handle before validating size of cursor, so make nouveau implementation consistent with them. Signed-off-by: Marcin Slusarz <marcin.slusarz at gmail.com> --- drivers/gpu/drm/nouveau/nv04_crtc.c | 6 +++--- drivers/gpu/drm/nouveau/nv50_crtc.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nv04_crtc.c b/drivers/gpu/drm/nouveau/nv04_crtc.c index cc3cd17..3c78bc8 100644 --- a/drivers/gpu/drm/nouveau/nv04_crtc.c +++ b/drivers/gpu/drm/nouveau/nv04_crtc.c @@ -943,14 +943,14 @@ nv04_crtc_cursor_set(struct drm_crtc *crtc, struct drm_file *file_priv, struct drm_gem_object *gem; int ret = 0; - if (width != 64 || height != 64) - return -EINVAL; - if (!buffer_handle) { nv_crtc->cursor.hide(nv_crtc, true); return 0; } + if (width != 64 || height != 64) + return -EINVAL; + gem = drm_gem_object_lookup(dev, file_priv, buffer_handle); if (!gem) return -ENOENT; diff --git a/drivers/gpu/drm/nouveau/nv50_crtc.c b/drivers/gpu/drm/nouveau/nv50_crtc.c index e900a51..75ad2dc 100644 --- a/drivers/gpu/drm/nouveau/nv50_crtc.c +++ b/drivers/gpu/drm/nouveau/nv50_crtc.c @@ -349,14 +349,14 @@ nv50_crtc_cursor_set(struct drm_crtc *crtc, struct drm_file *file_priv, struct drm_gem_object *gem; int ret = 0, i; - if (width != 64 || height != 64) - return -EINVAL; - if (!buffer_handle) { nv_crtc->cursor.hide(nv_crtc, true); return 0; } + if (width != 64 || height != 64) + return -EINVAL; + gem = drm_gem_object_lookup(dev, file_priv, buffer_handle); if (!gem) return -ENOENT; -- 1.7.4.1
Ben Skeggs
2011-May-02 06:58 UTC
[Nouveau] [PATCH] drm/nouveau: make cursor_set implementation consistent with other drivers
On Sun, 2011-05-01 at 23:49 +0200, Marcin Slusarz wrote:> When xorg state tracker wants to hide the cursor it calls set_cursor > with NULL buffer_handle and size=0x0, but nouveau refuses to hide it > because size is not 64x64... which is a bit odd. Both radeon and intel > check buffer_handle before validating size of cursor, so make nouveau > implementation consistent with them.Pushed, thanks.> > Signed-off-by: Marcin Slusarz <marcin.slusarz at gmail.com> > --- > drivers/gpu/drm/nouveau/nv04_crtc.c | 6 +++--- > drivers/gpu/drm/nouveau/nv50_crtc.c | 6 +++--- > 2 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/nouveau/nv04_crtc.c b/drivers/gpu/drm/nouveau/nv04_crtc.c > index cc3cd17..3c78bc8 100644 > --- a/drivers/gpu/drm/nouveau/nv04_crtc.c > +++ b/drivers/gpu/drm/nouveau/nv04_crtc.c > @@ -943,14 +943,14 @@ nv04_crtc_cursor_set(struct drm_crtc *crtc, struct drm_file *file_priv, > struct drm_gem_object *gem; > int ret = 0; > > - if (width != 64 || height != 64) > - return -EINVAL; > - > if (!buffer_handle) { > nv_crtc->cursor.hide(nv_crtc, true); > return 0; > } > > + if (width != 64 || height != 64) > + return -EINVAL; > + > gem = drm_gem_object_lookup(dev, file_priv, buffer_handle); > if (!gem) > return -ENOENT; > diff --git a/drivers/gpu/drm/nouveau/nv50_crtc.c b/drivers/gpu/drm/nouveau/nv50_crtc.c > index e900a51..75ad2dc 100644 > --- a/drivers/gpu/drm/nouveau/nv50_crtc.c > +++ b/drivers/gpu/drm/nouveau/nv50_crtc.c > @@ -349,14 +349,14 @@ nv50_crtc_cursor_set(struct drm_crtc *crtc, struct drm_file *file_priv, > struct drm_gem_object *gem; > int ret = 0, i; > > - if (width != 64 || height != 64) > - return -EINVAL; > - > if (!buffer_handle) { > nv_crtc->cursor.hide(nv_crtc, true); > return 0; > } > > + if (width != 64 || height != 64) > + return -EINVAL; > + > gem = drm_gem_object_lookup(dev, file_priv, buffer_handle); > if (!gem) > return -ENOENT;