summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2011-03-20Fix VT switchingrhel-6.1rhel6Søren Sandmann Pedersen5-31/+106
- Surfaces need to be evacuated before switching VT - The device must be reset - Framebuffer access must be turned off - Pixmaps created while switched away must be created in host memory. - Pixmaps that are being destroyed while switched away should be marked as not needing to be replaced.
2011-03-20Tiled upload of images after software fallback.Søren Sandmann Pedersen1-1/+26
Instead of uploading the full software image in one go, upload it in 512x512 tiles to avoid having to find huge huge blocks of memory and potentially running out.
2011-03-19Generate tighter damage for PolyFillRectSøren Sandmann Pedersen1-21/+14
https://bugzilla.redhat.com/show_bug.cgi?id=552000
2011-03-19If qxl_pre_init() is called without a confScreen, just return FALSE.Søren Sandmann Pedersen1-0/+6
Otherwise, the driver crashes when called from Xorg -configure.
2011-03-19Link in the compat driver; various renamingsSøren Sandmann Pedersen11-563/+570
2011-03-19Add old driver in as a compatibility layerSøren Sandmann Pedersen11-1/+3771
2011-03-19Don't re-upload read-only surfaces after a software fallback.Søren Sandmann Pedersen1-14/+24
Surfaces that were used in a read-only way don't need to be uploaded again since they didn't change. This is a particularly important optimization for Composite since sources and masks there don't have tight damage tracking regions.
2011-01-26Remove calls to SourceValidate() from uxa-damage.cSøren Sandmann Pedersen1-20/+0
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.
2011-01-26Make it compile with and without dixLookupPrivate() changes.Søren Sandmann Pedersen5-2/+44
2011-01-26Only add images to the cache if they are 128x128 or biggerSøren Sandmann1-3/+21
Keep track of how many live images there are, for debugging purposes.
2011-01-26Add debugging codeSøren Sandmann2-93/+176
2011-01-26More explicit life cycle managementSøren Sandmann Pedersen6-137/+227
2011-01-26Add a surface cacheSøren Sandmann Pedersen3-136/+345
2011-01-26Don't unmap memory until after uxa_close_screen; allow surface creation ↵Søren Sandmann2-19/+25
without vtSema
2011-01-26uxa: In change_window_attributes() only read back if the backing pixmap changedSøren Sandmann1-2/+7
This speeds up log in time considerably.
2011-01-26Comment out debugging spewSøren Sandmann3-7/+16
2011-01-26Migrate pixmaps out of video memory before mode settingSøren Sandmann3-84/+165
After mode setting migrate them back in.
2011-01-26Add qxl_surface_evacuates/replace_all() methods.Søren Sandmann3-48/+103
These functions will be used to migrate surfaces out of video memory when we have to reset the device.
2011-01-26Track live surfaces in a doubly linked list.Søren Sandmann2-45/+30
This allows us to find the surfaces that have to be moved out of video memory at reset time.
2011-01-26Track the pixmap in the surface struct.Søren Sandmann3-0/+13
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.
2011-01-26Move the surface lists into qxl_screen_tSøren Sandmann3-39/+34
That way things don't break horribly if you have multiple graphics cards
2011-01-26Fix a bunch of warningsSøren Sandmann4-438/+13
2011-01-26free qxl->uxe with regular free not xfreeHans de Goede1-1/+1
2011-01-26Fix the driver crashing qemu on 32 bitsHans de Goede1-5/+5
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.
2011-01-26Don't access the qxl device when our vt is not focussedHans de Goede4-33/+8
Trying to do so causes the X-server to segfault as it has dropped iopl permission, which is, erm, undesirable :)
2011-01-26Fix restoration of text mode font when leaving the vt (rhbz#633647)Hans de Goede2-11/+32
2011-01-26Change default virtual size to match the highest available resolutionHans de Goede1-7/+31
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.
2011-01-26Make non default qxl modes availableHans de Goede1-5/+39
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.
2011-01-26Make virtual resolution match actual resolution on startupHans de Goede1-0/+3
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.
2011-01-26Add put_image() accelerationSøren Sandmann3-1/+57
2011-01-26Some memory management changesSøren Sandmann2-5/+28
2011-01-26Split uxa_glyphs_init() into uxa_init_resources().Søren Sandmann6-41/+56
uxa_glyphs_init() eventually allocates a pixmap which has to be done after damage setup since otherwise _dixInitPrivates(PIXMAP_PRIVATE) will assert().
2011-01-26Add dependency tracking for surfaces.Søren Sandmann3-191/+242
The device needs dependent surfaces to be referenced in surfaces_dest[] and surfaces_rects[] of the drawable command.
2011-01-26Fix surface_init()Søren Sandmann2-4/+30
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.
2011-01-26Fix segmentation fault when no surfaces are availableSøren Sandmann2-8/+11
2011-01-26Faster malloc() implemenetationSøren Sandmann6-23/+2691
2011-01-26Delete most debug spewSøren Sandmann2-5/+19
2011-01-26Initial (buggy) support for copy area from offscreensSøren Sandmann3-29/+80
2011-01-26Enable solid fills for surfacesSøren Sandmann1-8/+3
2011-01-26Fix surface bugsSøren Sandmann5-38/+135
2011-01-26Set the correct size of pixmapsSøren Sandmann2-4/+12
2011-01-26Update to the new dixPrivate ABI.Søren Sandmann8-53/+52
2011-01-26Initial preparations for surfaces.Søren Sandmann9-539/+1432
- Surface command enums - Memory contexts for allocating video memory - Internal API for creating, drawing to, and destroying surfaces
2011-01-26Tighten damage region for fill rectSøren Sandmann1-3/+15
2011-01-26Make the fetched regions much tighter for core textSøren Sandmann3-24/+38
2011-01-26At finish_access() do the whole regionSøren Sandmann2-33/+43
2011-01-26Disable acceleration; fix bug with forgotten multiplication with bppSøren Sandmann1-10/+25
2011-01-26Add some debugging code.Søren Sandmann1-3/+16
2010-09-14Add a region argument to prepare access.Søren Sandmann Pedersen8-91/+133
Download individual boxes.
2010-09-14Add stripped-down version of damage.c as uxa-damage.c. Don't use it yetSøren Sandmann Pedersen3-2/+1422