Age | Commit message (Collapse) | Author | Files | Lines |
|
-fix types & casts for correctness in x64
-add #ifndef _WIN64 for all the SSE2/FPU/fast_memcpy stuff
-miniport/makefile: remove IFNDEF AMD64 to enable x64 build
-miniport/qxl.inf: add x64 support
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
We can't use the global pdev FPUSave, because multiple processes
could be calling the sse2 using code in parallel.
|
|
|
|
|
|
We currently only support streams there anyway, and the code doesn't
work for offscreen surfaces as is since its only looking at the
destination rect.
|
|
|
|
|
|
The cmd and print semaphores protect hardware instances that exist
one per device, so we can't really use per-pdev locks to protect them.
|
|
Now that all DevRes are dynamic we can just put the data in DevRes.
|
|
Instead of allocating an array of DevRes we allocate each DevRes
dynamically for each element.
Also make PDEV->Res be a pointer instead of copying the global pdev.
This also drops the needto Sync it when the pdev is made inactive,
as all pdevs share the same DevRes.
This way shared things like semaphores are really shared.
|
|
Update the licence text of the windows qxl driver files. Adds a
paragraph clarifying that the WDK Code qualifies for the system library
exception in the GPL.
This follows the licensing model the virtio windows drivers are using.
|
|
It seems we bumped the inf file version without changing the version
encoded in the dll.
|
|
We need to protect the release ring against concurrent access, so
we need a semaphore for it. Since we already hold the malloc_sem in
almost all cases we access the ring we just extend its use to cover
all the places its used.
|
|
Ensure we break from the release loop if num_to_release got to zero.
This fixes a leak of resources as we otherwise threw away the whole list
of things to free and started on the next one.
|
|
|
|
|
|
We store a free list in the SurfaceInfos, using a field not otherwise
used for free surfaces. Also, treat base_mem == NULL as "surface in use"
for easy checking.
|
|
|
|
|
|
Before trying to allocate memory we free a large chunk of
freeable resources. Leaving the resources unfreed before allocating
increases the risks of unnecessarily fragmenting the heap, which
is bad, especially for the vram which needs large free contiguous
allocations for surfaces.
We do somewhat limit the number of resources we free on each call
to ensure that we get an approximately even spread of the cost of
allocations.
|
|
This is needed as much as in AllocMem to protect the mspaces data
from concurrent access.
|
|
It protects shared data (mspaces info) so it needs to be shared.
|
|
When we release a surface resource, for instance when AllocMem gets
OOM, we call ReleaseOutput with the pdev in use (i.e. probably the
currently active one). However, its possible that the resource we
free is actually from another (now inactive) pdev.
Since the surface release function FreeDelSurface() uses pdev to
find the data for the surface id we may find the wrong surface data.
So, we move all the SurfaceInfos except the primary one to a global
array. This is fine since the surface ids (except 0) are never shared
between pdevs due to the surfaces_used global array.
|
|
|
|
This is in preparation for using it in DevRes
|
|
|
|
The driver no longer claims to support DirectDraw.
It uses mspace to allocate surfaces and not HeapVidMemAllocAligned.
This fixes freedesktop bug #29254.
|
|
|
|
Also adds the subsystem id to the inf file
|
|
after driver is disabled and re-enabled.
On logoff, in Win7 guest, and on switch user and login into a Winxp guest, the driver is disabled and re-enabled (while the miniport in not reset).
However, before the fix, all the draw objects, e.g., surfaces, were still alive in the worker and the release ring still contained objects, while all the driver's data was initialized. This caused blue screens, and panics in the worker.
|
|
The bug caused BSOD: SESSION_HAS_VALID_POOL_ON_EXIT on switching users/log off
(after the driver is disabled and enabled back again, while the miniport is not restarted).
|
|
|
|
|
|
|
|
|
|
|
|
We're disabling geometric lines, so remove code relating to that.
Also, remove commented out never-to-be-used driver capabilities
flags.
|
|
|
|
When freeing the chunks we freed the resource multiple times instead
of actually freeing the chunks.
|
|
|
|
|