summaryrefslogtreecommitdiff
path: root/src/i830_render.c
AgeCommit message (Collapse)Author
2009-12-07batch: Ensure we send a MI_FLUSH in the block handler for TFPChris Wilson
This should restore the previous level of synchronisation between textures and pixmaps, but *does not* guarantee that a texture will be flushed before use. tfp should be fixed so that the ddx can submit the batch if required to flush the pixmap. A side-effect of this patch is to rename intel_batch_flush() to intel_batch_submit() to reduce the confusion of executing a batch buffer with that of emitting a MI_FLUSH. Should fix the remaining rendering corruption involving tfp [inc compiz]: Bug 25431 [i915 bisected] piglit/texturing_tfp regressed http://bugs.freedesktop.org/show_bug.cgi?id=25431 Bug 25481 Wrong cursor format and cursor blink rate with compiz enabled http://bugs.freedesktop.org/show_bug.cgi?id=25481 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-11-29batch: Emit a 'pipelined' flush when using a dirty source.Chris Wilson
Ensure that the render caches and texture caches are appropriately flushed when switching a pixmap from a target to a source. This should fix bug 24315, [855GM] Rendering corruption in text (usually) https://bugs.freedesktop.org/show_bug.cgi?id=24315 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-11-10Check that batch buffers are atomic.Chris Wilson
Since batch buffers are rarely emitted by themselves but as part of a sequence of state and vertices, the whole sequence is emitted atomically. Here we just enforce that batches are marked as being part of an atomic sequence as appropriate. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-11-05Fix "Remove flow-control macros for fallbacks in the 2D driver."Eric Anholt
I guess this is the sort of failure due to rebase-happiness that makes Linus yell at us for rebasing.
2009-11-05Remove flow-control macros for fallbacks in the 2D driver.Eric Anholt
It's poor style, and has confused new developers.
2009-10-14conf: Add debugging flush optionsChris Wilson
Make the following options available via xorg.conf: Section "Driver" Option "DebugFlushBatches" "1" # Flush the batch buffer after every # single operation; Option "DebugFlushCaches" "1" # Include a MI_FLUSH at the end of every # batch buffer to force data to be # flushed out of cache and into memory # before the completion of the batch. Option "DebugWait" "1" # Wait for the completion of every batch buffer # before continuing, i.e. perform synchronous # rendering. EndSection Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-10-08Call pPixmaps plain old pixmaps.Eric Anholt
2009-10-08de-pCamelHungarian the Render pictures and pixmaps.Eric Anholt
2009-10-08Share several render fields between render implementations.Eric Anholt
Also, start settling on the cairo naming for things: source, mask, and dest.
2009-10-08Rename the xf86 screen private from pScrn to scrn.Eric Anholt
2009-10-08Rename the screen private from I830Ptr pI830 to intel_screen_private *intel.Eric Anholt
This is the beginning of the campaign to remove some of the absurd use of Hungarian in the driver. Not that I don't like Hungarian, but I don't need to know that pI830 is a pPointer.
2009-10-06Move to kernel coding style.Eric Anholt
We've talked about doing this since the start of the project, putting it off until "some convenient time". Just after removing a third of the driver seems like a convenient time, when backporting's probably not happening much anyway.
2009-09-22Revert "8xx: Fallback for any non-affine transformation."Chris Wilson
This reverts commit 505025053d66d415e1c23ac858b9238fa8541d37. In theory, the non-affine paths work -- at least for the stated test case, so re-enable them and avoid the slow work-around. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-09-22i8xx: Format projective texture coordinates correctly.Keith Packard
Projective texture coordinates must be delivered as TEXCOORDFMT_3D using TEXCOORDTYPE_HOMOGENOUS. This meant selecting the correct type in i830_texture_setup, the correct format in i830_emit_composite_state and sending only 3 coordinates in i830_emit_composite_primitive. Signed-off-by: Keith Packard <keithp@keithp.com> [ickle: tweaked to fix up a couple of use-before-initialised] Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-09-21Split i915/i830 composite_emit_primitive into two functions.Keith Packard
The i915 and i830 take similar but different data when emitting the primitives, instead of trying to share code here, just split this apart and avoid potentially breaking things later on. Signed-off-by: Keith Packard <keithp@keithp.com>
2009-09-218xx: Fallback for any non-affine transformation.Carl Worth
There are definitely bugs in the 8xx code dealing with non-affine transformations. Disable that code for now to get things working. Fixes bug #22947 ([855GM, xf86-video-intel-2.8.0] "Freeze" when RENDER extension is being used)
2009-09-14Avoid fallbacks for compositing gradient patternsChris Wilson
Currently when asked to composite using a gradient source or mask, we fallback to using fbComposite(). This has the side-effect of causing a readback on the destination surface, stalling the GPU pipeline. Instead, like uxa_trapezoids(), we can use pixman to fill a scratch pixmap and then copy that to an offscreen pixmap for use with uxa_composite(). Speedups on i915: firefox-talos-svg: 710378.14 -> 549262.96: 1.29x speedup No slowdowns. Thanks to Søeren Sandmann Pedersen for spotting the missing ValidatePicture(). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-09-09i915: Restore nearest samplingChris Wilson
My recent commit [94fc93] to use the pixel centre for sampling with the i830 broke the i915. This restores the previous sampling coordinates for the i915 whilst preserving the correct coordinates for i830. Fixes: gnome characters disappear http://bugs.freedesktop.org/show_bug.cgi?id=23803 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-09-05i830/i915: Set the sample position to the pixel center.Chris Wilson
And in particular we apply the nearest sample bias separately for src/mask. Fixes cairo/test: device-offset-scale finer-grained-fallbacks mask-transformed-{similar,image} meta-surface-pattern pixman-rotate surface-pattern-big-scale-down text-transform Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-09-05i830: Update commentsChris Wilson
i830_composite() is no longer shared with i915 but i830_emit_composite_primitive() is. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-09-05i830: Trim composite setupChris Wilson
Remove a couple of redundant NOOPs from the setup and correct the required space checking for atomic batch operation.
2009-09-05i830: remove padding NOOPs from compositeChris Wilson
Bumps aa10text up from 249k to 260k! These NOOPs have existed uncommented since 04d1584737fd0d14e99608a97281fd7b1549ae0e. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-09-05i830: do not use stale mask transformChris Wilson
Not only were incorrectly falling back if we had non-affine transformations, but we made the decision based on a stale transformation matrix. Related bug 22877: batch_start_atomic horribly breaks performance after a while https://bugs.freedesktop.org/show_bug.cgi?id=22877 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Tested-by: Maximilian Grothusmann <maxi@own-hero.net>
2009-07-228xx render: Add limited support for a8 dests.Eric Anholt
This improves aa10text performance from 74k to 569k on my 855 laptop. This also causes my 865 to hang on aa10text like it does on rgb10text, thanks to actually hitting render accel.
2009-07-16Fix 915-class Render after the 8xx-class Render fix.Eric Anholt
The two shared i830_composite.c, so giving i830 atomic batch support triggered anger about starting i830's atomic area while in i915's atomic area. Instead, split the emit-a-primitive stuff from the state emission.
2009-07-15Use batch_start_atomic to fix batchbuffer wrapping problems with 8xx render.Eric Anholt
Bug #22483.
2009-06-23Harden i830 render in case check_composite didn't throw out bad formats.Alan Coopersmith
Fixes a warning in a static analysis program, and the code's a little clearer. Bug #21667
2009-05-10Fix "Unkown" typo in two FatalError messagesAlan Coopersmith
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
2009-04-21Replace a bunch of #ifdef debug flushing/syncing with a single function.Eric Anholt
This removes it from a callsite where it would have just resulted in a fatalerror.
2009-03-06intel: Nuke shared-entity support (zaphod mode).Eric Anholt
It's been broken for years now, and KMS offers a much better chance of getting this working sensibly without making a mess of the 2D driver.
2008-11-05Make I830FALLBACK debugging a runtime instead of compile-time option.Eric Anholt
2008-10-06Add support for RepeatPad and RepeatReflect to 915 and 830-class Render accel.Eric Anholt
2008-08-05Rename uxa using _ instead of capsKeith Packard
2008-08-05Use dri_bo for all object allocations, including pixmaps under uxaKeith Packard
2008-06-10Change most usage of pixmap offsets to using a reloc macro.Eric Anholt
This is based on airlied's RING->BATCH commit. The 965 code still needs to be fixed up for relocations.
2008-05-07Check pitch for EXA operationZhenyu Wang
2D pitch limit applys to all chips. Pre-965 chip has 8KB pitch limit for 3D. 965 supports max pitch by current exa (128KB). (cherry picked from commit 8187a5a16f8bd8f0ba5e7f5357f355928b3b8f07)
2008-03-21Transformed coord computed using floats. Don't move bilinear composite dst.Keith Packard
The homogeneous coordinate computation in the core server cannot be used for many legal matrices as it overflows. Just use floats in the driver; faster and avoids troubles. When compositing with bilinear filter, don't push the dst coordinates around as that makes the output blurry when pixels are aligned.
2008-03-18Handle projective transforms on 9xx for Composite.Keith Packard
Projective transforms require un-normalized texture coordinates and the use of the texldp instruction. The coordinates are passed as x/y/z/w (the z is unused, but there isn't a vertext format for just x/y/w).
2008-03-188xx/9xx can handle textures to 2kx2k. 965 can do 8kx8kKeith Packard
2008-03-14Change OUT_RING and similar calls to OUT_BATCH for batchbuffer mergeEric Anholt
2008-03-13Add workarounds for 830/845's lack of a8/x8r8g8b8/x8b8g8r8 support.Eric Anholt
When we have unset channels (color for a8, or alpha for x8*), force them to the appropriate value in the texture combiner rather than relying on getting the desired results from teture mapping. Performance is the same on 865, so multiple paths aren't necessary and we can use the less friendly texture formats everywhere.
2008-03-11Remove i830+ driver's use of CARD*/INT* types for great justice.Eric Anholt
Several uses are actually left, which are determined by the X Server interfaces we're implementing.
2008-03-11Silence warnings about possible uninitialize use of dst_format.Kristian Høgsberg
Whoa, gcc got a lot smarter about warnings. If iXXX_get_dest_format() doesn't support the picture format passed in it won't initialize the uint32_t pointed to by dst_format and return FALSE. What gcc now can detect is if dst_format is used without checking the return value, it might be used uninitialized. This patch makes sure we always check the return value before using dst_format.
2007-10-10EXA: fix tiled dest rendering on i8XX chipsZhenyu Wang
2007-06-12Fix context switching between DRI and X.Eric Anholt
Now, all 3D pipeline consumers in the driver just call IntelEmitInvariantState(), which handles basic state setup, the caching of that state setup, and notifying DRI clients. This also removes a mistaken idle wait in the Render code which was papering over the brokenness in the context switching.
2007-05-18EXA: add render enter helper functionWang Zhenyu
That notify mesa rendering is smashing the state, and check last 3d operation to do sync after we're swapped in or others.
2007-04-20EXA: set enabling bits properly for i830Wang Zhenyu
This was found when debug exa on a 865GV, we should set pipeline state bits properly, otherwise the engine will hang.
2007-04-17EXA: fix i830 renderWang Zhenyu
Fix tex blend pipeline in case that src/mask pict has no alpha. Unmask color buffer write disable bits. These make rendercheck run fine on 855GM.
2007-04-16EXA: fix 830/845G pict formatWang Zhenyu
Fallback in 830/845G when pict format is a8, x8r8g8b8 or x8b8g8r8. The hw doesn't support them.
2007-04-16EXA: Add i830 supported pict format XRGB8888, XBGR8888Wang Zhenyu