When copying from a dri2 buffer we usually dirty it as hw, since dri has
been rendering to it, and there can only be hw contents in the buffer.
However for the real front, X has already done the dirty work for us.
Also remove a glxWaitX() debug message.
This should fix piglit read-front.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Basically we support three ways of getting data to the screen:
1) Mixed mode: We mix presents and updates.
2) Mixed present optimized: A version of mixed where copies to the front
buffer end up as presents, saving a blit.
3) 3D surface mode: We only present from a 3D surface. Software contents are
first DMA'd to that surface.
This change adds boolean flags to the saa struct to select which mode to use.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Try to catch all cases where we have to do readbacks or format conversions
due to composite formats not being compatible with ordinary accel formats.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Clear dirty present areas when new contents are drawn to the backing
pixmap. Not when it is actually pushed to the screen.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
This imports the vmwgfx driver, based on the Gallium3D Xorg state tracker,
as well as the saa library. A "Shadow Acceleration Architecture", which is
optimized for the case where transfers between system (shadow) and hw memory
is very costly.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
We might be pruning modes based on the virtual size of the default mode in
some situations. Avoid this by allowing a virtual size equal to the device
max size, unless the user has requested something else.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Alan Hourihane <alanh@vmware.com>
The VRefresh value was a factor 1000 too high.
Calculate clock based on vrefresh and resolution.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Alan Hourihane <alanh@vmware.com>
This bug resulted in incorrect screen dimensions and DPI being calculated
in some circumstances, leading to among other things bad aspect ratios in xine.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Don't draw the colorkey to the screen drawable, but to the video drawable
when possible.
Also change the Xv API/ABI test to use the builtin ABI version
functions.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Michel Dnzer <daenzer@vmware.com>
This potentially also fixes a use of an uninitialized pointer value, which
may cause OOM or segfaults.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Michel Dnzer <daenzer@vmware.com>
The fact that modes were added without names caused segfaults on older
X servers. At least up to and including Xserver 1.4.
Also, for some reason, at least Xserver 1.4 insists on setting the first mode
in the modelist, even if we set another mode as the current one.
Work around this by inserting a new mode with the current screen dimensions,
and add that modename last to the array of display requested mode names.
This means that if none of the previous mode names are found, we will at least
find the newly inserted mode.
Also, if there are no requested mode names at all, the driver previously
chose the largest mode that fit the timings. Now we will, in that case,
always select the newly inserted mode and thus not change resolution unless
specified.
Also add an option to not add this default mode. The option
"AddDefaultMode" is true by default.
Finally when we restore registers at exit and VT switch, make sure we
reprogram the initial width, height and bpp for the next time we start a
server.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
In situations where we have trouble finding a specified mode,
use the resolution given by the width and height device registers.
Signed-off-by: Alan Hourihane <alanh@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
The test for Xserver >= 1.2 in the affected file was always failing.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Michel Dänzer <daenzer@vmware.com>
The idea is that the build system assigns this number if needed.
As an example it might be the commit number since the last version tag.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
The segfault occured because the named function was using resources that
were already taken down, because VMWARECloseScreen was called very late
in the CloseScreen callchain.
Make sure we wrap the CloseScreen pointers late in ScreenInit to avoid this.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Properly init and uninit the port private clipboxes on setup and end.
Clear the port private clipboxes on video stop, to force re-painting
of the colorkey when the stream is resumed.
Make sure the colorkey is painted *before* the overlay is flushed. Some
host implementations seem picky about this.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Silence warnings and errors on various server versions due to incorrect
usage of libc functions.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
When we switch mode we usually alter the size in a constant DPI environment
rather than keeping the size constant and alter the DPI.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
If the vmwlegacy driver wasn't present when expected, that would
leave the X server in a confused state. Thus report loading errors properly
back to the X server.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
vmwarectrl is a unit test client tool for developers.
By default, it is not built unless --enable-vmwarectrl-client is used.
Acked-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>