summaryrefslogtreecommitdiff
path: root/src/intel_driver.c
AgeCommit message (Collapse)Author
2011-11-17glamor: Initial commit to introduce glamor acceleration.Zhigang Gong
Added one configuration option --enable-glamor to control whether use glamor. Added one new file intel_glamor.c to wrap glamor egl API for intel driver's usage. This commit doesn't really change the driver's control path. It just adds necessary files for glamor and change some configuration. Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com> Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-11-16Compile out UXA if so desiredChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-11-16sna: Reduce and clarify dependenciesChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-10-11snb: implement PIPE_CONTROL workaroundDaniel Vetter
Sandybdrige requires an elaborate dance to flush caches without hanging the gpu. See public docs Vol2Part1 1.7.4.1 PIPE_CONTROL or the corrensponding code in mesa/kernel. This (together with the corresponding patch for the kernel) seems to fix the hangs in cairo-perf-traces I'm seeing on my snb machine. v2: Incorporate review from Chris Wilson. For paranoia keep all three PIPE_CONTROL cmds in the same batchbuffer to avoid upsetting the gpu. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-07-11dri: Enable triple-bufferred pageflipsChris Wilson
By popular demand. Triple-buffering trade-offs output latency versus jitter. By having a pre-rendered frame ready to swap in following a pageflip, we avoid the scenario where the latency between receiving the flip complete signal from the kernel, waking up the vsynced application, it render the new frame and then for the server to process the swap request is greater than the frame interval, causing us to miss the vblank. The result is that application can become frame-locked to 30fps. Instead, we report to the application that the first frame swap is immediately completed, supply a new back buffer (or else the rendering would be blocked on waiting for the front-buffer to be swapped away from the scanout) and let them proceed to render the second frame. The second frame is added to the swap queue, and the client throttled to vrefresh. (If the client missed the vblank, the swap queue is empty and the client is immediately woken again, whilst the pageflip is pending.) Note, for practical reasons this only applies to page-flipping, for example, calls to glXSwapBuffer() on fullscreen applications. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-06-22Don't include xf86Priv.hAdam Jackson
I'd like it to not be in the SDK anymore, and we're not using anything from it. Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-05-11Remove the memory of Option "AccelMethod"Adam Jackson
Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-04-20Add basic 30 bit depth supportJesse Barnes
Still need to handle video and gamma correction, but this gets the display up and running at 30 bit depth if the kernel and display support it. Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2011-04-20Use SwapbuffersWait config option to control waiting on fullscreen swapsChris Wilson
As fullscreen swaps were going via a different path to the swapping of ordinary windows, we were no longer honouring the xorg.conf option to disable swapbuffer waiting. This changes the code to only use pageflipping if the Option "SwapbuffersWait" is set to "TRUE" (default). Jesse's comment was that this should be superseded by actually supporting asynchronous page flips. As we are missing kernel and dix level support for that, in the meantime honour the config option. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Kristian Høgsberg <krh@bitplanet.net>
2011-04-12Turn relaxed-fencing off by default for older (pre-G33) chipsetsChris Wilson
There are still too many unresolved bugs, typically GPU hangs, that are related to using relaxed fencing (i.e. only allocating the minimal amount of memory required for a buffer) on older hardware, so turn off the feature by default for the release. Reported-and-tested-by: Knut Petersen <Knut_Petersen@t-online.de> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=36147 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-04-08intel: Restore manual flush for old kernelsChris Wilson
Daniel Vetter pointed out that the automagic flush by the kernel for the busy-ioctl was only introduced upstream in 2.6.37. So we still need to manually emit a flush on old kernels. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-04-04Take advantage of the kernel flush for dirty bo in the busy ioctlChris Wilson
Rather than just creating and submitting a batch that simply contains a flush in order to periodically ensure that rendering reaches the scanout, we can simply ask the kernel whether the scanout is busy. The kernel will then submit a flush on our behalf if it is dirty, which takes advantage of the kernel's dirty state tracking. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-04-04Remove the unnecessary MI_FLUSH from the flush handlerChris Wilson
The kernel will emit any required flushes between the dri client and the ddx, and we do not rely on the MI_FLUSH here for scanout. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-03-09Give each user of tiling separate xorg.conf optionsChris Wilson
So that you can indeed allocate a linear framebuffer if you so desire without breaking mesa. Adds: Section "Driver" Option "LinearFramebuffer" "False|True" # default false EndSection to xorg.conf Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-01-20Create the UXA generational resources during screen createChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-01-08Remove bitrotted, but fortunately unused, I830CrtcPrivateChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-01-08Delete some dead codeChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-01-08Remove unused GTT/Map sizes and addressesChris Wilson
These have been made obsolete by KMS and GEM. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-01-03If the crtc is not enabled, then it can't be onChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-12-22Remove the deprecated function 'XNFprintf'Chris Wilson
As we know the maximum length of the string, we can replace our single usage of XNFprintf with snprintf. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-12-20Undo: Disable BLT for i830 and 845GChris Wilson
Reported-by: György Balló <ballogy@freestart.hu> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=32482 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-12-05Don't use hardware acceleration on Sandybridge rev 07 hardware or earlier.Matthias Hopf
This is known to lock up the GPU even with the workaround in place. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=31773 Signed-off-by: Matthias Hopf <mhopf@suse.de> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-11-23Disable BLT for i830 and 845GChris Wilson
This pair of chipsets seem broken beyond repair, specifically the erratum that causes the wrong PTE entry to be invalidated, so disable our incorrect attempts to use the BLT on those devices. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-11-03Fallback to shadow for Sandybridge if we don't have access to the BLTChris Wilson
If we attempt to emit BLT batches without kernel support, we just end up with EINVAL and no rendering. Prevent this, and avoid uncached rendering, by restoring the shadow fallback paths if there is no BLT support. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-11-02Remove the intermittent GEM_THROTTLE call.Eric Anholt
This is a holdover from early GEM work when we weren't syncing on the DRI client side. It would keep clients from getting too far ahead and killing their interactivity, by bringing everyone to a halt when anyone was too far ahead. Now, GL clients throttle themselves to avoid the problem, and it turns out that in the case that they don't (long rendering to buffers with no swap), this actually reduces X Server interactivity: instead of lagging of X rendering behind input, you get no response for seconds at a time, then a burst of rendering, then nothing again. Reported by ajax. Tested with moving a window while running cairo-perf-trace on the GL backend (improvement) and X backend (no significant change in responsiveness).
2010-11-01Support BLT acceleration on gen6Zou Nan hai
Signed-off-by: Zou Nan hai <nanhai.zou@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-22intel: Listen for hotplug uevents (V3)Adam Jackson
This connects the kernel uevent indicating monitor hotplugging to the RandR notification events so that X applications can be notified automatically when monitors are connected or disconnected. This also adds a configuration option to disable hotplug events. V2: missed a #ifdef HAVE_UDEV around some udev-specific declarations V3: document Hotplug option in man page Signed-off-by: Keith Packard <keithp@keithp.com>
2010-10-07Include a chipset generation number to clarify device specific paths.Chris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-04shadow: Enable shadow by default on SandyBridgeChris Wilson
SandyBridge 2D support is far from complete, so instead of permanently falling back and always using uncached GTT mapping for rendering, use the shadow buffer instead. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-04shadow+dri2: Allow dri2 to be independently enabled with shadowChris Wilson
To enable DRI we create GEM buffers for the client to render into with hardware acceleration. In order to maintain coherency between any 2D render operations with the independent 3D clients (this includes the reading of 2D rasterisation by the direct rendering client, e.g. compiz using texture_from_pixmap) we need to replace the shadow pixmap with the GTT mapping. Therefore 2D rendering to a DRI buffer will be to uncached memory and thus penalised -- but the direct rendering clients will have full hardware acceleration. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-02Do not claim the PCI device if !KMSChris Wilson
By returning FALSE whilst probing if we can't find a KMS driver, we allow X to fallback to trying the VESA driver -- rather than failing. The initial idea for this was by Julien Cristau. Reported-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-09-30Always use tiling on SandybridgeZhenyu Wang
Sandybridge requires kind of buffer must be tiling, like depth. And we would or have all tiling cases handled fine. So not allow user to turn off tiling on Sandybridge+ may be fine. Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2010-09-26Disable dri2 after forcing fallbacksChris Wilson
If we force fallbacks, then we will only create pixmaps in system memory, preventing DRI2 from passing valid bo names to the clients. In this case, they will just fallback to swrast. If we disable DRI2 after forcing fallbacks (e.g. regenerating after a GPU hang or explicitly disabled with the shadow buffer) then it is simpler just to disable the extension and allow mesa to use pure swrast. Reported-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-09-17Disable swap buffer wait on SandybridgeZhenyu Wang
MI_LOAD_SCAN_LINE_INCL command is not available on sandybridge. I haven't got reply on any substitution for it, so turn it off for now. Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2010-09-10shadow: Simply modify the Screen pixmap headerChris Wilson
This is a slightly less risky strategy than having to remember to update all pointers to the old Screen pixmap. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-09-08Enable a shadow buffer and disable GPU acceleration.Chris Wilson
An attempt to workaround the incoherency in gen2 chipsets, we avoid using dynamic reallocation as much as possible. The first step is to disable allocation of pixmaps using GEM and simply create them in system memory without a backing buffer object. This forces all rendering to use S/W fallbacks. The second step is to allocate a shadow front buffer and assign that to the Screen pixmap. This ensure that the front buffer remains in the GTT and pinned for scanout. The shadow buffer will be rendered to in the normal fashion via the Screen pixmap, and be marked dirty. In the block handler, the dirty shadow buffer is then blitted (using the GPU) over the front buffer. This should completely avoid having to move pages around in the GTT and avoid incurring the wrath of those early chipsets. Secondly, performance should be reasonable as we avoid the ping-pong caused by the small aperture and weak GPU forcing software fallbacks. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-08-19Open-code DRICreatePCIBusID()Chris Wilson
During -configure we would attempt to query the availablility of KMS before the DRI module was loaded, thus we were unable to create a valid bus identifier and so the query failed and we disowned the device. Fixes: Bug 29611 - Xorg -configure fails https://bugs.freedesktop.org/show_bug.cgi?id=29611 Reported-by: Sergey Samokhin <prikrutil@gmail.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-08-18Move registration of vsync fd from pre-init to screen-initChris Wilson
Marty Jack reported an issue he found where the page-flipping handler was being lost on server reset. This results in the swap completion notification being lost, with the sporadic hang of full screen applications like Compiz, flash and even glxgears! Fixes: Bug 29584 - Server in compute loop https://bugs.freedesktop.org/show_bug.cgi?id=29584 There are also several possibly related bugs with similar symptoms, i.e. OpenGL applications hanging on missed swap notifications. Reported-by: Marty Jack <martyj19@comcast.net> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Keith Packard <keithp@keithp.com>
2010-08-01Rename drmmode_display to intel_displayChris Wilson
And fixup all the drmmode_* functions to have an intel prefix and categorise those into intel_mode, intel_crtc, intel_output and intel_property so that the functions are a little more self-descriptive and, more importantly, are consistent. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-07-30Submit batch buffers from flush callback chainKristian Høgsberg
There are a few cases where the server will flush client output buffers but our block handler only catches the most common (before going into select). If the server flushes client buffers before we submit our batch buffer, the client may receive a damage event for rendering that hasn't happened yet. Instead, we can hook into the flush callback chain, which the server will invoke just before flushing output. This lets us submit batch buffers before sending out events, preserving ordering. Fixes 28438: [bisected] incorrect character in gnome-terminal under compiz https://bugs.freedesktop.org/show_bug.cgi?id=28438 Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
2010-07-13Teardown the bufmgr on shutdown as well.Chris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-07-13modes: There may be more than one crtc and output... DESTROY THEM ALL!Chris Wilson
In order to cleanup all CRTCs and outputs on shutdown, we need to keep a list of the individual structures and iterate over that list on shutdown. Also, the output and crtcs are configured just once and not for each screen generation so move the shutdown to the termination and not on CloseScreen. Oops. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-07-09drmmode: Destroy Crtc on screen shutdownChris Wilson
Should fix: Bug 26946 - CRTC cursor BO leak in 2D https://bugs.freedesktop.org/show_bug.cgi?id=26946 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-06-25Remove unused inclusion of <sys/mman.h>Chris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-06-25Rename common infrastructure to the intel namespace.Chris Wilson
After splitting out the i810 driver into its own legacy directory, we can identify the common routines not as i830 but as intel. This clarifies the code which *is* i830 specific. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>