summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2010-05-31i915: Support textured video on an extended desktop.Chris Wilson1-35/+76
Handle rendering textured video onto an extended desktop (>2048) by using a temporary pixmap. Note that we still cannot handle rendering to a greater than 2048 destination region, for that we will need to tile. Hmm, time to request a 2560x1600, 10bpc monitor... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-29dri: Compilation fix.Chris Wilson1-1/+1
17:53 < arekm> ickle: i830_dri.c:630:28: error: ‘DrawableRec’ has no member named ‘bpp’ 17:53 < arekm> ickle: i830_dri.c:630:57: error: ‘DrawableRec’ has no member named ‘bpp’ * sigh. I need to fix this machine to have the right version of the * headers. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-29dri: Only flip if the front and back pixmaps match.Chris Wilson1-6/+38
An unredirected window (thanks Michel for the reminder) is backed by the Screen pixmap, and so uses a reference of that as its front buffer. The back buffer is a pixmap appropriately sized for the drawable. When the application requests to swap its buffers, obviously we cannot simply exchange the front and back buffer as they do not match, but need to copy the appropriate region from the back to the front. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-29Revert "dri: Use size from backing pixmap when creating buffers."Chris Wilson1-11/+11
This reverts commit 44d45d3fa56f121ce89ffe5b28beb48be01a95df. Michel Dänzer pointed out the flaw in using the pixmap size instead of the drawable size: Using the backing pixmap dimensions for this is not desirable. In particular, it means that the DRI2 buffers of non-redirected windows always have the same size as the screen. But even for redirected windows it wastes some graphics memory with a re-parenting window manager, that is if it doesn't break in various ways due to the top left corner of the DRI2 buffers no longer corresponding to the top left corner of the window.
2010-05-29dri: Use size from backing pixmap when creating buffers.Chris Wilson1-11/+11
This avoid using the garbage values stored in the Screen drawable, instead of the true values which are only maintained in its backing pixmap. The consequence of using the wrong size was to hand a 1x1 pixmap to metacity/mutter and have it believe it was a full screen drawable; GPU hangs ensued if using page flipping. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-28i915: Don't re-emit vertex size unless it has changed.Chris Wilson3-5/+7
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-28uxa: Fix prepare_solid being called without check_solid first.Eric Anholt1-0/+5
Fixes GPU hang on gen6.
2010-05-28uxa: Skip the redundant miComputeCompositeRects() when adding to the maskChris Wilson1-33/+20
As we are in full control of the destination (the temporary glyph mask) and the source (the glyph cache) we know that there are no clip regions on either and so can skip computing the composite rectangles. (We trust the device clipping to prevent compositing outside the target.) x11perf on PineView: 701/686 -> 881/856 kglyphs/s [aa/rgb] Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-28uxa: Make the glyph caches' fixed size explicit.Chris Wilson2-9/+6
Until we actual resize the glyph cache dynamically, make it obvious to the reader and the compiler that the size is fixed. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-28uxa: Use a glyph private rather than a hash table.Chris Wilson3-196/+141
Store the cache position directly on the glyph using a devPrivate rather than an through auxiliary hash table. x11perf on PineView: 650/638 kglyphs/s -> 701/686 kglyphs/s [aa/rgb] Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-26Decouple non-reusuable pixmaps from batch lists on unref.Chris Wilson1-2/+5
==7596== Invalid write of size 4 ==7596== at 0x491ACA8: intel_batch_teardown (i830_batchbuffer.c:118) ==7596== by 0x491C9D6: I830CloseScreen (i830_driver.c:1419) ==7596== by 0x8103A9C: RRCloseScreen (randr.c:105) ==7596== by 0x80DE794: xf86CrtcCloseScreen (xf86Crtc.c:759) ==7596== by 0x80BEBA3: DGACloseScreen (xf86DGA.c:268) ==7596== by 0x80D044B: DPMSClose (xf86DPMS.c:134) ==7596== by 0x488B050: XvCloseScreen (xvmain.c:320) ==7596== by 0x81841B1: VidModeClose (xf86VidMode.c:110) ==7596== by 0x80EB12F: CursorCloseScreen (cursor.c:191) ==7596== by 0x810CA17: AnimCurCloseScreen (animcur.c:108) ==7596== by 0x816937E: compCloseScreen (compinit.c:86) ==7596== by 0x48D39B9: glxCloseScreen (glxscreens.c:221) ==7596== Address 0x49c1a50 is 24 bytes inside a block of size 52 free'd ==7596== at 0x4024866: free (vg_replace_malloc.c:325) ==7596== by 0x80B023C: Xfree (utils.c:1096) ==7596== by 0x4927CFD: i830_set_pixmap_bo (i830_uxa.c:647) ==7596== by 0x491C9B4: I830CloseScreen (i830_driver.c:1413) ==7596== by 0x8103A9C: RRCloseScreen (randr.c:105) ==7596== by 0x80DE794: xf86CrtcCloseScreen (xf86Crtc.c:759) ==7596== by 0x80BEBA3: DGACloseScreen (xf86DGA.c:268) ==7596== by 0x80D044B: DPMSClose (xf86DPMS.c:134) ==7596== by 0x488B050: XvCloseScreen (xvmain.c:320) ==7596== by 0x81841B1: VidModeClose (xf86VidMode.c:110) ==7596== by 0x80EB12F: CursorCloseScreen (cursor.c:191) ==7596== by 0x810CA17: AnimCurCloseScreen (animcur.c:108) Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-26Add vertex bo to the list of buffers to be torn down.Chris Wilson1-1/+8
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-26i965: Remove ATOMIC_BATCH.Chris Wilson1-2/+0
This paranoid check is deceased; pining for the fjords. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-26Add a workaround for Ironlake errata relating to disabling the clipper.Eric Anholt1-0/+9
2010-05-26Add a workaround for Ironlake errata regarding blits and other engines.Eric Anholt1-0/+24
2010-05-26Remove remaining REG_DUMPER build stuff.Eric Anholt1-2/+0
2010-05-26uxa: Perform manual damage for CompositeRectsChris Wilson1-0/+5
[xserver-1.8] The damage layer doesn't wrap CompositeRects, so we need to manually append the damaged region ourselves. This works for miCompsiteRects since that translates the call into multiple invocations of either PolyFillRectangle or Composite, which themselves cause damage. Fixes: Bug 28120 - Tint2's tooltip borders end up at 0,0 and do not disappear https://bugs.freedesktop.org/show_bug.cgi?id=28120 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-26uxa: Force the alpha value to 0xffff when treating Over as SrcChris Wilson1-1/+3
Since we have at most 8 bits of alpha, we treat >= 0xff00 as opaque. However, being paranoid we should set the alpha value to 0xfff in case something unexpected happens when converting from the xRenderColor to the pixel value. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-26uxa: Use Composite rather than solid blitter for PolyRectChris Wilson1-22/+105
Due to the relocation overhead, using a single composite with many rectangles outperforms many solid blits. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-26uxa: Add PICT format mapping for depth 4 pixmaps.Chris Wilson1-0/+1
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-26i830: Skip an empty fill.Chris Wilson1-0/+3
In the extremely unlikely event that the higher layer erroneous gave us an empty fill, skip it. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-25uxa: Apply the drawable offset to the solid rectsChris Wilson1-6/+9
Fixes: Bug 28120 - Tint2's tooltip borders end up at 0,0 and do not disappear https://bugs.freedesktop.org/show_bug.cgi?id=28120 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-24Merge branch 'glyphs'Chris Wilson19-830/+1708
Tweak glyphs to improve x11perf on i915 by about 33%. PineView, aa10text: 460 -> 617 kglyphs/s. PineView, rgb10text: 434 -> 610 kglyphs/s. Speedups ======== xcb poppler 18.636 -> 13.958: 1.34x speedup xlib firefox-talos-gfx 71.905 -> 56.232: 1.28x speedup xcb firefox-talos-gfx 72.882 -> 57.969: 1.26x speedup xlib gnome-terminal-vim 38.126 -> 34.472: 1.11x speedup xcb gnome-terminal-vim 35.164 -> 32.573: 1.08x speedup xlib poppler 19.634 -> 18.246: 1.08x speedup Note the lack of significant improvement for firefox-planet-gnome.
2010-05-24i915: Emit CA over using OutReverse + Add passesChris Wilson4-132/+183
On PineView: 578/621 -> 610/617 kglyphs/sec [rgb/aa]
2010-05-24uxa: Use temporary dest when target is too large for compositorChris Wilson9-123/+431
If the destination cannot fit into the 3D pipeline when we need to composite, we fallback to doing the operation on the CPU. This is very slow, and quite easy to trigger on i915 by plugging in an external display. An alternative is to extract the extents of the operation from the destination using the blitter which can usually handle much larger operations. This gives us a temporary target that can fit into the 3D pipeline and thus be accelerated, before copying back into the larger real destination. For x11perf this boosts glyph rendering on PineView, from 38kglyphs/s to 480kglyphs/s. Just a little shy of the native performance of 601kglyphs/s Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-24uxa: Composite glyphs directly onto dst when possible.Chris Wilson3-158/+324
Without using a mask and compositing directly onto the destination, takes us from 580 kglyphs/s to 850 kglyphs/s on i945 [x11perf -aa10text]. However, the extra intersection check almost entirely cancels out the speed up and we discover that the glyphs in x11perf are always overlapping. Nothing is ever easy. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-24i915: compute normalized texcoords using a scale factor.Chris Wilson1-44/+44
500 -> 580kglyphs/s on i945. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-24uxa: translate the region in line for compositesChris Wilson1-19/+14
When compositing, we need to convert the box into a rect and so the advantages of using REGION_TRANSLATE are lost. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-24i915: Add special case primitive emitters for glyphs.Chris Wilson1-5/+83
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-24i915: Move vertices into a vertex buffer object.Chris Wilson7-225/+298
In theory this should allow us to pack far more operations into a single batch buffer, and reduce our overheads. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-24Use pwrite to upload the batch bufferChris Wilson5-42/+25
By using pwrite() instead of dri_bo_map() we can write to the batch buffer through the GTT and not be forced to map it back into the CPU domain and out again, eliminating a double clflush. Measing x11perf text performance on PineView: Before: 16000000 trep @ 0.0020 msec (511000.0/sec): Char in 80-char aa line (Charter 10) 16000000 trep @ 0.0021 msec (480000.0/sec): Char in 80-char rgb line (Charter 10) After: 16000000 trep @ 0.0019 msec (532000.0/sec): Char in 80-char aa line (Charter 10) 16000000 trep @ 0.0020 msec (496000.0/sec): Char in 80-char rgb line (Charter 10) Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-24Kill paranoid assertions on every write into the batchbuffer.Chris Wilson9-148/+23
On my PineView box these represent ~5% overhead on x11perf text: Before: 16000000 trep @ 0.0020 msec (495000.0/sec): Char in 80-char aa line (Charter 10) 12000000 trep @ 0.0022 msec (461000.0/sec): Char in 80-char rgb line (Charter 10) After: 16000000 trep @ 0.0020 msec (511000.0/sec): Char in 80-char aa line (Charter 10) 16000000 trep @ 0.0021 msec (480000.0/sec): Char in 80-char rgb line (Charter 10) Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-24i915: Emit composite primitive with specialised functions.Chris Wilson2-206/+358
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-23i915: amalgamate composite into a single primitive listChris Wilson5-6/+43
Combine all the calls to composite between prepare_composite and done_composite into a single primitive list, rather than a primitive call per composite(). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-23uxa: Spans! OMG!Chris Wilson3-27/+187
Use composite rather than solid blits in order to bring performance on a par with the CPU when using GEM and relocations. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-18dri: Clean up DRI2 API #ifdefs a bitKristian Høgsberg1-50/+31
Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
2010-05-17i830: Remove vestigal debugging ALWAYS_FLUSH and ALWAYS_SYNCChris Wilson4-24/+0
These are now debugging options exposed in Xorg.conf, and now unused int the source code. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-17dri: Check error code from GetScratchGC()Chris Wilson1-2/+5
It may fail so be prepared, and do use the right drawable! Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-16uxa: Replace solid planemask [0xffffffff] with FB_ALLONESChris Wilson1-4/+4
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-16i830: Encode surface bpp into formatChris Wilson1-61/+53
References: Bug 28135 - [855GM] Slowdown/High CPU-Usage after Git-Commit 926fbc7d90ac1d0d49d154f136f9c9ed613c98c2 https://bugs.freedesktop.org/show_bug.cgi?id=28135 The simple answer is that I had assumed that 0 was a reserved value. However, without the bbp encoded into the format 0 was used for a8r8g8b8 and r5g6b5, which are very common formats! The other possibility for the slowdown is that gtkperf is using of the now verboten xrgb formats -- but would in fact be valid if the source covers the clip and we could fixup the alpha value in the fixed function combine. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-16uxa: Tidy uxa_solid_rects()Chris Wilson1-5/+5
Move the operator reduction after a few fallbacks, closer to its use. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-16uxa: Patterns are acquired at 0,0Chris Wilson1-4/+4
Set the correct offset for the gradients patterns after rendering to a local Picture. Fixes cairo/test/huge-radial and friends Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-15uxa: Force an alpha channel when rendering source fallbacksChris Wilson1-0/+6
As the source may not cover the extents, we need to represent those areas as transparent in the fallback picture, ergo we need an alpha channel. We could be smarter and force a format conversion when necessary, and we could let the backend choose the most appropriate format. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-15uxa: Apply clip for solid rectangles.Chris Wilson1-41/+118
References: Bug 28120 - Tint2's tooltip borders end up at 0,0 and do not disappear https://bugs.freedesktop.org/show_bug.cgi?id=28120 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-15uxa: Avoid using blits when with PictFilterConvolutionChris Wilson1-2/+6
References: Bug 28098 Compiz renders shadows wrong, garbage line of pixels along left and top edge of windows https://bugs.freedesktop.org/show_bug.cgi?id=28098 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-15uxa: Check the w-scaling component is 1 for an translation matrixChris Wilson1-1/+2
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-15i830: Remove xrgb conversion to argb, no longer required.Chris Wilson1-31/+2
All textures are now properly declared so that the alpha swizzling occurs in the sampler or not at all. The downside is that for quite a few composite operations we have to fallback to software on older hardware. There is scope for more performing the alpha expansion in shaders or combiners when we know the picture covers the clip - which is almost all of the time for normal operations especially those constructed by Cairo. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-15i830: Remove incorrectly mapped tex formats.Chris Wilson1-23/+25
We no longer workaround the lack of alpha expansion for xrgb textures as this interferes with EXTEND_NONE, though we could if we know the source covers the clip... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-15uxa: Fix order of conditionals to only run fill_region for SRC or opaqueChris Wilson1-64/+64
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-15uxa: Expand the range of compatible formats to cover all bpp.Chris Wilson1-7/+9
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>