[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference bulova::decw_jan-89_to_nov-90

Title:DECWINDOWS 26-JAN-89 to 29-NOV-90
Notice:See 1639.0 for VMS V5.3 kit; 2043.0 for 5.4 IFT kit
Moderator:STAR::VATNE
Created:Mon Oct 30 1989
Last Modified:Mon Dec 31 1990
Last Successful Update:Fri Jun 06 1997
Number of topics:3726
Total number of notes:19516

2120.0. "Multiple Pixmap performance" by SHARIF::BULLARD () Wed Jan 24 1990 04:32

I am working with a customer who's application uses two large pixmaps,
possibly more in the future.He is experiencing noticable delays when
switching operations between the two pixmaps.After the first
operation on a pixmap,subsequent operations are fast.Monitoring the
application indicates that there is no page faulting going on but 
quite a lot of direct IO. Is this because the pixmap has to be paged
into video RAM from the application working set on the first operation?
Can anyone confirm or explain this?

regards Mark
T.RTitleUserPersonal
Name
DateLines
2120.1Try SPX. $3500 MLP - GPX trade inSTAR::BMATTHEWSWed Jan 24 1990 07:4716
I am working with a customer who's application uses two large pixmaps,
possibly more in the future.He is experiencing noticable delays when
switching operations between the two pixmaps.After the first
operation on a pixmap,subsequent operations are fast.Monitoring the
application indicates that there is no page faulting going on but 
quite a lot of direct IO. Is this because the pixmap has to be paged
into video RAM from the application working set on the first operation?
Can anyone confirm or explain this?

> Yes, that is exactly correct. On the GPX based graphics systems there is
> 1024x864 area for large pixmaps. With the new SPX graphics option the
> area is about 2560x1024 but is allocatable linerally with a max width of 8k.
> In 5.3-1 the max size for a single pixmap is still the screen size. With
> 5.4 the limit for the largest single pixmap will be raised to the size of
> the available offscreen memory.
>						Bill
2120.2A supplementary question...SHARIF::BULLARDSeize the day !!Mon Jan 29 1990 10:1010
Thanks for the information.The customer has now decided to improve the performance
by always updating from the pixmap held in offscreen memory.He does this by
doing a XCopyArea of the pixmap that needs to be updated into the pixmap that 
is held in offscreen memory.He has observed that even small pixmap copies consume
quite a lot of CPU.The relationship between the CPU usage and the pixmap size
does not appear to be linear. Is there any thing that can be done to improve the 
performance of this operation e.g tuning SYSGEN parameters?


regards Mark
2120.3More infoDECWIN::BMATTHEWSMon Jan 29 1990 10:5021
            <<< Note 2120.2 by SHARIF::BULLARD "Seize the day !!" >>>
                        -< A supplementary question... >-

Thanks for the information.The customer has now decided to improve the performance
by always updating from the pixmap held in offscreen memory.He does this by
doing a XCopyArea of the pixmap that needs to be updated into the pixmap that 
is held in offscreen memory.He has observed that even small pixmap copies consume
quite a lot of CPU.The relationship between the CPU usage and the pixmap size
does not appear to be linear. Is there any thing that can be done to improve the 
performance of this operation e.g tuning SYSGEN parameters?


> There is no single pixmap that is held in offscreen memory. Whenever the
> server needs to draw to a pixmap it must be first copied into offscreen
> memory if it is not already there.
>
> You could try defining the decw$server_ws* logicals before decw$startup is
> invoked to give the server a larger working set.
>
>							Bill

2120.4More questions... SHARIF::BULLARDSeize the day !!Fri Feb 02 1990 12:1213
Thanks again for the info.I appreciate that there is no single pixmap
in offscreen memory.The customer I am dealing with has at least two
large pixmaps.At times he needs to update the screen with just part
of the pixmap.To avoid moving a large pixmap into offscreen memeory 
every time he wants to update the screen he is using XCopyArea 
to move the portion of the pixmap that is required first
to a pixmap in offscreen memory,which the application maintains,and 
then to the screen.However he has noticed that this takes quite a lot
of CPU (about 0.3 seconds for a 50 x 80 pixmap) even for quite small
areas.There is no  paging occuring which would imply that the server
working set is adequate.Can anyone explain why this operation is so 
CPU intensive.The server is running on a VS2000 and the application
is running on  remote Microvax 3600.
2120.5Copy Area Moves tries to move both the source and dest into offscreenDECWIN::ROSENBLUMTue Feb 06 1990 17:2719
Copy Area moves both the source and destination of the copy into offscreen, or
at least it tries to.

If it can't fit the whole pixmap into offscreen then it takes the 
full scanline of the source and puts that into offscreen then copies the one
scan line into the destination pixmap.  It keeps moving this one or two scan
line chunks till the copy is complete.

As you can tell it is a long, time consuming process.

My suggestion is to use a lot of very small pixmaps I.E. 32 by 32 if he can,
These are stored in a small pixmap cache seperate from the large area of
offscreen memory, also try to use single bit deep pixmaps if he can, you can
stack those in offscreen and then copy between them and the screen using copy
planes.

What size is his source pixmap and his off screen pixmap.

Mike
2120.6Thanks that's exactly what I needed to knowSHARIF::BULLARDSeize the day !!Wed Feb 07 1990 05:557
Unfortunately the customers source and offscreen pixmap are both full
screen pixmaps.I have passed the information to the customer and we 
are now considering how to approach the problem .

Thanks again 

Mark
2120.7ZSAZSA::READINGSRichard ReadingsMon Feb 26 1990 12:5211
The customer tried creating a mosaic of smaller pixmaps instead of one large 
pixmap but it was hard to implement and not really practical. 

In this application the customer simply wishes to overwrite the destination 
pixmap with the source pixmap. Is there any way to avoid attempting to load both
source and destination pixmaps into off-screen memory in this case, and thus 
speed up the process? The current level of performance is causing the customer a 
lot of pain.

Richard