Age | Commit message (Collapse) | Author | Files | Lines |
|
These were kludges and are not necessary with new servers. Note that
they were never necessary for the QXL driver because we generally
don't use software cursors.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
without vtSema
|
|
This speeds up log in time considerably.
|
|
|
|
After mode setting migrate them back in.
|
|
These functions will be used to migrate surfaces out of video memory
when we have to reset the device.
|
|
This allows us to find the surfaces that have to be moved out of video
memory at reset time.
|
|
This is in preparation for making surfaces survives resets and mode
sets. To do that, we'll need to evacuate them out of video memory, and
then copy them back in. If some surface can't be reallocated, we'll
need to make sure it is removed from its corresponding surface.
|
|
That way things don't break horribly if you have multiple graphics cards
|
|
|
|
|
|
When casting a 32bit pointer to a uint64 the following happens:
ptr -> int32 -> int64 -> uint64, so if the address is above
0x80000000 which is quite normal for mapped io, the int32 -> int64
cast causes sign extension, not good!
Also fix the printing of the memslots the memslot phys addresses
are always 64 bit, so tell printf to always read 64 bits, otherwise
we end up printing the higher 32 bits of the address as size on 32
bits.
|
|
Trying to do so causes the X-server to segfault as it has
dropped iopl permission, which is, erm, undesirable :)
|
|
|
|
With the old default virtual size of 1024x768, using higher resolutions
is not possible without an xorg.conf. Since the default now a days is
to not have an xorg.conf, this is sort of unfortunate.
This patch makes these higher resolutions available, while keeping the
default resolution used when none is specified through xorg.conf at
1024x786, so that the spice client window won't be way too large for
smaller screens by default.
Note that when running inside a vm with a qxl device with a 8MB
framebuffer the code, for automatically setting the virtualsize to the
largest width and height seen in the resolution list, would lead to a too
large virtual size. The 8MB list has both 1920x1080 and 1600x1200
resolution which lead to a virtualsize of 1920x1200 which does not fit,
there is a special check for this situation, which maximizes the available
width in this case. This means that for using 1600x1200 on an 8MB device
an xorg.conf is still necessary.
This change does come at the prize of using more memory, but that
seems like a reasonable price to pay to give us parity wrt supported
resolutions with the windows driver. Also this is a must have to allow
the to be written Linux agent to change the guest resolution to match
the client machines one when running in auto fullscreen mode.
In the long run we should add support for resizing the fb on the fly to
match the resolution.
|
|
Currently unless an xorg.conf with modelines is used a lot of the
qxl supported modes like 1920x1080 are not available, because the xorg
default modelines set does not have modelines for them.
This patch adds code to dynamically generate modelines for all modes
in the qxl mode list, bringing the xorg driver up to par with the windows
driver wrt supported resolutions.
Note that an xorg.conf specifying a large enough virtual screen size is
still needed for resolutions > 1024x768, but one no longer needs to add
modelines in it. This is fixed in my next patch.
This patch also adjusts a few (fake) clock limits to make all the
modes reported by the qxl device when compiled with a 16MB framebuffer
work.
|
|
When setting a Virtual size in xorg.conf, currently there can be
a difference between the actual output resolution (say 1600x1200) and
the virtual resolution (for example 2048x1600). This causes parts
of the desktop too be unreachable because the cursor is bound to
the spicec window and thus one cannot pan over the virtual desktop.
Moreover other parts of the driver don't seem to like this and I've
seen several hangs / crashes which I think are related.
|
|
|
|
|
|
uxa_glyphs_init() eventually allocates a pixmap which has to be done
after damage setup since otherwise _dixInitPrivates(PIXMAP_PRIVATE)
will assert().
|
|
The device needs dependent surfaces to be referenced in
surfaces_dest[] and surfaces_rects[] of the drawable command.
|
|
This function needs to set free_surfaces to NULL because it can be
called multiple times. If not, the same surface will end up in the
free list more than once, which leads to double frees and other bugs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Download individual boxes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|