On Thu, Jan 8, 2015 at 8:30 PM, Jason Ekstrand <[email protected]> wrote:

>
>
> On Thu, Jan 8, 2015 at 2:10 PM, Keith Packard <[email protected]> wrote:
>
>> Jason Ekstrand <[email protected]> writes:
>>
>> > +    old_shadow = drmmode->shadow_bo;
>> >
>> >      if (!drmmode_create_bo(drmmode, &drmmode->front_bo,
>> >                             width, height, scrn->bitsPerPixel))
>> > @@ -1218,13 +1219,9 @@ drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int
>> width, int height)
>> >      }
>> >
>> >      if (drmmode->shadow_enable) {
>> > -        uint32_t size = scrn->displayWidth * scrn->virtualY *
>> > -            ((scrn->bitsPerPixel + 7) >> 3);
>> > -        new_pixels = calloc(1, size);
>> > -        if (new_pixels == NULL)
>> > +        if (!drmmode_create_bo(drmmode, &drmmode->shadow_bo,
>> > +                               width, height, scrn->bitsPerPixel))
>> >              goto fail;
>> > -        free(drmmode->shadow_fb);
>> > -        drmmode->shadow_fb = new_pixels;
>> >      }
>>
>> I don't see the old shadow_bo getting freed anywhere; did I miss
>> something?
>>
>
> The real answer is that, as far as I can tell, this code shouldn't be
> touching the shadow and the shadow shouldn't be in the drmmode structure at
> all.  Unless I'm competely missing everything, shadows should be per-crtc.
> If that's correct, then the modesetting driver's shadow handling is just
> completely bogus.  I'm reworking things again.
>

Correction, we have two completely different concepts of "shadow fb" going
on here.  One is the shadow from miext/shadow that seems to cover the
entire screen pixmap.  The other shadow buffers, the ones used for
rotation, should be per-crtc.  These two concepts of shadow buffers are, as
far as I can tell, completely seperate.

Given that I can't seem to figure out what miext/shadow does, I'm kind of
at a loss.  My best guess is that it effectively causes X to be
double-buffered by rendering in the primary pixmap and blitting to the
shadow for actual scan-out.  That said, I'm not really sure.  How should
this interact with per-crtc rotation shadow buffers?  I have no idea.

Also, the xf86-video-intel driver doesn't use it at all, so my go-to
example isn't helping.  A little help here?

--Jason


>
> This patch series just keeps getting longer...
>
>
>>
>> The rest of this patch looks good and is
>>
>> Reviewed-by: Keith Packard <[email protected]>
>>
>> --
>> -keith
>>
>
>
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to