RE: [XFree86] Clipping graphic primitives to visible area of Window

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 10 Apr 2006, Pearson, Paul L-Baker Atlas wrote:

> Mark,
>
> I removed the backingstore option from XF86Config. Nothing is displayed
> in the area of the drawable that is exposed with scrolling. Our
> application does not catch the expose event, it relies on backingstore.
> So backingstore is partially working.
>
> Our application that uses XPutPixel to draw graphics does not have the
> problem. I can scroll around and everything is available. We use
> XDrawLine to draw the graphics that are missing from the display. I'm
> not sure what we use to display the text - but it is always there when I
> scroll around.
>
> I removed the three extensions that you had suggested. Now only the
> dotted line is displayed and the text is gone.

   That's weird.  I would have expected it to get better.

>
> Where can I find info on the extensions? I searched for awhile looking
> for descriptions, without luck.

    I don't know of a database of extension descriptions.  DBE is
the double-buffer extension.  I don't know of any applications that
use it.  GLX is the server component of OpenGL.  DRI is an extension
related to the implementation of OpenGL that the r128 driver uses.

    You could also try removing the extmod module but that holds
very common extensions like shape and mitshm and some applications
require those to operate.

    You could also try removing the fbdevhw module.  I don't
think your driver is using the framebuffer device and I didn't
think that module wrapped any rendering operations, but it
shouldn't hurt to remove it.


>
> If the backingstore puts up some of the image - shouldn't it put up all
> of the image?

   That's probably not the problem.  Backing store allocates a
pixmap the size of the drawable.  Window rendering that gets
clipped away goes to the backing pixmap.  When part of the window
is exposed, that part gets initialized with the backing pixmap
contents instead of sending the client an expose event.  I doubt
copying from the backing pixmap is broken.  Most likely, rendering
to the backing pixmap is broken.  The most common cause of that
being broken is that some extension broke the mechanism which
enables the backing store code to monitor window rendering.

   Could you also try telling the r128 to turn off hardware acceleration?
That would be:

   Option "NoAccel"

in the Section "Device" in the XF86Config file.  The server will
get very slow, but if it makes the problem go away it narrows
down the problem substantially.


		Mark.

>
> We use backingstore for speed of display - these apps are run over the
> network and the geophysical data is large.
>
> Thanks for your help,
> Paul
>
>
>
> -----Original Message-----
> From: Mark Vojkovich [mailto:mvojkovi@xxxxxxxxxxx]
> Sent: Monday, April 10, 2006 12:41
> To: Pearson, Paul L-Baker Atlas
> Cc: devel@xxxxxxxxxxx
> Subject: Re: [XFree86] Clipping graphic primitives to visible area of
> Window
>
>
>    Backing store doesn't really guarantee that you won't get
> expose events.  I believe the X11 Protocol specification says
> that enabling backing store merely tells the server that saving
> contents would be "useful" and doesn't guarantee that you won't
> get expose events.  A program that isn't capable of handling
> expose events is technically broken.  It's probably the case
> that different vendor implementations of backing store make
> different guarantees.  XFree86 uses the implementation from
> the X11 sample implementation.
>
>    The big question is whether or not XFree86 sent exposures
> when this scrolling occurred (assuming the application requested
> expose events in the first place).  If the expose event was
> sent, this is technically not a server bug.   The only thing
> weird that I see from your snapshots was that it appears as
> though some rendering operations may have be rendered to the
> backing store while some others might not have.  Though another
> explanation is that XFree86 didn't render any of it and the
> text was the only part rerendered by the application after
> the expose event.
>
>    I did some quick tests with the only backing store aware
> application I have (the "xv" image viewer) and didn't see any
> obvious problems using NVIDIA's drivers.  Sometimes driver or
> extention implementations can break the backing store wrappers,
> but you are using the 'r128' driver which probably isn't modifying
> the wrappers.  Some of the other extensions might.   You could
> try commenting out the loading of the dbe, dri or glx modules
> in the XF86Config, but I doubt those would be breaking backing
> store wrappers.
>
>    My guess is that this is probably a bad app assumption rather
> than a server bug, but I don't have a way to verify that at the
> moment.
>
> 			Mark.
>
>
> On Mon, 10 Apr 2006, Pearson, Paul L-Baker Atlas wrote:
>
> > Mark,
> >
> >
> >
> > Thanks for the reply. Our applications do depend on backing store and
> I
> > have enabled it, and it appears to work. If I put a window over the
> > window, everything that was there comes back when the overlay is
> > removed.
> >
> >
> >
> > I have a window which is smaller than my drawable. The window has
> scroll
> > bars. I use text, pixels and graphic primitives (XDrawLine) to display
> > to the drawable. Everything is displayed in the window. I scroll the
> > window. The text and pixels are displayed, but the graphics done with
> > the primitives are not displayed. The display acts as if the
> > clip_x_origin, clip_y_origin and clip_mask are being set to the size
> and
> > location of the window. If I scroll the window and force a graphics
> > update, some more primitives are displayed. If I scroll the window
> back
> > to where it was, that which was displayed with the primitives is gone,
> > text and pixels are there.
> >
> >
> >
> > I've attached four files (hopefully I will remember to attach them) -
> > the XF86Config file, disp1.png (showing the display before scrolling)
> > and disp2.png (showing the display after scrolling), and disp3.png
> > (after forcing an update to the scrolled window).
> >
> >
> >
> > Paul Pearson
> >
_______________________________________________

Devel@xxxxxxxxxxx
http://XFree86.Org/mailman/listinfo/devel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [X Forum]     [XFree86]     [XFree86 Newbie]     [X.Org]     [IETF Annouce]     [Security]     [Fontconfig]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]

  Powered by Linux