[Nouveau] [PATCH] avoid build fail without COMPOSITE
Emil Velikov
emil.l.velikov at gmail.com
Wed Jul 15 06:12:26 PDT 2015
Upon closer look it seem that I was a bit off - the ati/intel ddx does
not set off_x/y to zero when built without composite*.
... in copy_region2, they do so when working with video -
XvAdaptorPtr::ddPutImage/XF86VideoAdaptorPtr::PutImage.
Does this mean that they need a similar update ? What are the symptoms
of the issue ?
Thanks
Emil
On 14 July 2015 at 23:51, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> Well, I don't pretend to know anything about X, but this is the commit
> that added the code in question:
>
> commit 297fd0d0755bda698be1d0b30cc60a41d7673c0b
> Author: Dave Airlie <airlied at redhat.com>
> Date: Tue Oct 16 16:15:16 2012 +1000
>
> nouveau/dri2: fix pixmap/window offset calcs.
>
> This should fix prime rendering under kwin, and not break it under the
> others.
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
>
> diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c
> index 71cff26..7bd0b3a 100644
> --- a/src/nouveau_dri2.c
> +++ b/src/nouveau_dri2.c
> @@ -165,9 +165,9 @@ nouveau_dri2_copy_region2(ScreenPtr pScreen,
> DrawablePtr pDraw, RegionPtr pRegio
> translate = TRUE;
>
> if (translate && pDraw->type == DRAWABLE_WINDOW) {
> - WindowPtr pWin = (WindowPtr)pDraw;
> - off_x = pWin->origin.x;
> - off_y = pWin->origin.y;
> + PixmapPtr pPix = get_drawable_pixmap(pDraw);
> + off_x = pDraw->x - pPix->screen_x;
> + off_y = pDraw->y - pPix->screen_y;
> }
>
> pGC = GetScratchGC(pDraw->depth, pScreen);
>
>
> Now I sort of assume that pDraw->x == pWin->origin.x. But... who knows.
>
> -ilia
>
>
> On Tue, Jul 14, 2015 at 5:46 PM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
>> On 14 July 2015 at 22:17, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>>> ---
>>> src/nouveau_dri2.c | 15 ++++++++++-----
>>> 1 file changed, 10 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c
>>> index f22e319..4398559 100644
>>> --- a/src/nouveau_dri2.c
>>> +++ b/src/nouveau_dri2.c
>>> @@ -142,6 +142,7 @@ nouveau_dri2_copy_region2(ScreenPtr pScreen, DrawablePtr pDraw, RegionPtr pRegio
>>> NVPtr pNv = NVPTR(xf86ScreenToScrn(pScreen));
>>> RegionPtr pCopyClip;
>>> GCPtr pGC;
>>> + PixmapPtr pPix;
>>> DrawablePtr src_draw, dst_draw;
>>> Bool translate = FALSE;
>>> int off_x = 0, off_y = 0;
>>> @@ -170,9 +171,13 @@ nouveau_dri2_copy_region2(ScreenPtr pScreen, DrawablePtr pDraw, RegionPtr pRegio
>>> }
>>>
>>> if (translate && pDraw->type == DRAWABLE_WINDOW) {
>>> - PixmapPtr pPix = get_drawable_pixmap(pDraw);
>>> - off_x = pDraw->x - pPix->screen_x;
>>> - off_y = pDraw->y - pPix->screen_y;
>>> + off_x = pDraw->x;
>>> + off_y = pDraw->y;
>>> +#ifdef COMPOSITE
>>> + pPix = get_drawable_pixmap(pDraw);
>>> + off_x -= pPix->screen_x;
>>> + off_y -= pPix->screen_y;
>>> +#endif
>> If I understand things correctly both ati and the intel ddx seems set
>> the offsets to zero when composite is missing.
>> I doubt that many people build xserver without it though :-)
>>
>> -Emil
More information about the Nouveau
mailing list