<br><br><div class="gmail_quote">2013/6/21 David Herrmann <span dir="ltr"><<a href="mailto:dh.herrmann@gmail.com" target="_blank">dh.herrmann@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi<br>
<div><div class="h5"><br>
On Fri, Jun 21, 2013 at 12:05 PM, Marc Chalain <<a href="mailto:marc.chalain@gmail.com">marc.chalain@gmail.com</a>> wrote:<br>
><br>
><br>
> 2013/6/21 David Herrmann <<a href="mailto:dh.herrmann@gmail.com">dh.herrmann@gmail.com</a>><br>
>><br>
>> Hi<br>
>><br>
>> On Fri, Jun 21, 2013 at 11:43 AM, Marc Chalain <<a href="mailto:marc.chalain@gmail.com">marc.chalain@gmail.com</a>><br>
>> wrote:<br>
>> ><br>
>> > 2013/6/21 David Herrmann <<a href="mailto:dh.herrmann@gmail.com">dh.herrmann@gmail.com</a>><br>
>> >><br>
>> >> Hi<br>
>> >><br>
>> >> On Fri, Jun 21, 2013 at 10:49 AM, mchalain [<a href="mailto:marc.chalain@gmail.com">marc.chalain@gmail.com</a>]<br>
>> >> <<a href="mailto:marc.chalain@gmail.com">marc.chalain@gmail.com</a>> wrote:<br>
>> >> > From: mchalain <<a href="mailto:marc.chalain@gmail.com">marc.chalain@gmail.com</a>><br>
>> >> ><br>
>> >> >  it initializes varinfo.yoffset. varinfo.yoffset has to<br>
>> >> >  point on the beginning of the video memory.<br>
>> >> >  The card uses this value to push on the screen a part of<br>
>> >> >  the video memory when this one is larger than the screen.<br>
>> >> ><br>
>> >> > ---<br>
>> >> >  weston/src/compositor-fbdev.c |    6 ++++++<br>
>> >> >  1 file changed, 6 insertions(+)<br>
>> >> ><br>
>> >> > diff --git a/weston/src/compositor-fbdev.c<br>
>> >> > b/weston/src/compositor-fbdev.c<br>
>> >> > index adfb67a..d2aee9b 100644<br>
>> >> > --- a/weston/src/compositor-fbdev.c<br>
>> >> > +++ b/weston/src/compositor-fbdev.c<br>
>> >> > @@ -368,6 +368,11 @@ fbdev_query_screen_info(struct fbdev_output<br>
>> >> > *output, int fd,<br>
>> >> >                 return -1;<br>
>> >> >         }<br>
>> >> ><br>
>> >> > +       if (varinfo.yoffset != 0) {<br>
>> >> > +               varinfo.yoffset = 0;<br>
>> >> > +               if (ioctl(fd, FBIOPAN_DISPLAY, &varinfo) < 0)<br>
>> >> > +                       return -1;<br>
>> >> > +       }<br>
>> >><br>
>> >> Why do you need this? It's unnecessary. We call FBIOPUT_VSCREENINFO<br>
>> >> after fbdev_query_screen_info(), anyway. Furthermore, not all drivers<br>
>> >> support panning even though the yoffset may be non-zero (you need<br>
>> >> FBIOPUT_VSCREENINFO then).<br>
>> >><br>
>> >> I think you can just drop this here but keep the yoffset=0 below.<br>
>> >><br>
>> ><br>
>> > where do you use  FBIOPUT_VSCREENINFO ? I only find inside<br>
>> > fbdev_set_screen_info but this function is called only when the output<br>
>> > is<br>
>> > reenable not at the startup.<br>
>><br>
>> My bad!<br>
>> But still, you now call FBIOPAN_DISPLAY on _every_<br>
>> fbdev_query_screen_info() while it is only needed during initial setup<br>
>> as VT_ENTER calls fbdev_set_screen_info(), anyway. So instead, I'd<br>
>> recommend to just call fbdev_set_screen_info() during initial setup as<br>
>> well.<br>
>><br>
><br>
> No I call  FBIOPAN_DISPLAY only at startup after yoffset is set to 0<br>
<br>
</div></div>You call it everytime yoffset isn't 0. So if you VT_LEAVE, another<br>
application changes the yoffset for whatever reason and we VT_ENTER,<br>
you will end up calling FBIOPAN_DISPLAY again followed by<br>
fbdev_set_screen_info() if the screen-info changed.<br>
<br>
Don't expect applications on other VTs to behave as expected. They may<br>
do anything! They may even use some acceleration which we in weston<br>
aren't aware of.<br>
<div class="im"><br></div></blockquote><div>If another application set yoffset, with VT_ENTER we pass inside  fbdev_set_screen_info<br>and yoffset is set to 0.<br>After fbdev_set_screen_info is buggy and this patch is not a bugfix...<br>
the bug is you set varinfo.bits_per_pixel with a value that could be different of 32 and<br>after you set the colors as A8R8G8B8 ...<br>I don't want to use it, because I can't check all cases of this function, my card is too simple...<br>
<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
>> > It seems strange that FBIOPAN_DISPLAY is not supported by some devices.<br>
>> > I<br>
>> > used this one to not set all the varinfo on the device and to be faster.<br>
>><br>
>> See ./drivers/video/fbmem.c fb_pan_display(). Trivial fbdev drivers<br>
>> might not support it, but user-space can still set the offset via<br>
>> FBIOPUT_VSCREENINFO. If you want, you can call FBIOPAN_DISPLAY and if<br>
>> it fails, you use FBIOPUT_VSCREENINFO.<br>
>><br>
> I read the yoffset hasn't to be null in  FB_VMODE_YWRAP . But yoffset is<br>
> only used for panning.<br>
> It's useless to set it if it doesn't use (fbmem.c uses yoffset only for<br>
> panning in your example too)<br>
<br>
</div>A driver may not support FBIOPAN_DISPLAY but still support panning via<br>
FBIOPUT_VSCREENINFO. If any framebuffer parameter change requires a<br>
full modeset, there is no reason to support FBIOPAN_DISPLAY. But<br>
panning may still be supported via yoffset and FBIOPUT_VSCREENINFO.<br>
<br></blockquote><div>You tell that kernel bug must be corrected by kernel developers in the thread about SYN_DROPPED<br>and now you tell me that we have to check that the driver should not be completed ??? <br>I don't understand the need to add useless code. I will change  FBIOPAN_DISPLAY by<br>
FBIOPUT_VSCREENINFO but it's only to make you happy.<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Cheers<br>
<span class="HOEnZb"><font color="#888888">David<br>
</font></span></blockquote></div><br>