Commit Graph

1110 Commits

Author SHA1 Message Date
Jonathan Morton
94964c221f [NEON] Add ARGB8-over-RGB565 compositing blitter. 2009-06-16 12:11:01 -04:00
Jonathan Morton
af660613ee [NEON] Add transparent rect blitter. 2009-06-16 12:10:57 -04:00
Jonathan Morton
8eeeca9932 [NEON] Replace Ian's glyph-blitter with a better one.
Each scanline of the destination is bulk-loaded into a cached buffer on
the stack (using the QuadWordCopy routine) before being processed.  This
is the primary benefit on uncached framebuffers, since it is necessary
to minimise the number of accesses to such things and avoid
write-to-read turnarounds.

This also simplifies edge handling, since QuadWordCopy() can do a
precise writeback efficiently via the write-combiner, allowing the main
routine to "over-read" the scanline edge safely when required.  This is
why the glyph's mask data is also copied into a temporary buffer of
known size.

Each group of 8 pixels is then processed using fewer instructions,
taking advantage of the lower precision requirements of the 6-bit
destination (so a simpler pixel multiply can be used) and using a more
efficient bit-repacking method.

(As an aside, this patch removes nearly twice as much code as it
introduces.  Most of this is due to duplication of Ian's inner loop,
since he has to handle narrow cases separately.  RVCT support is of
course preserved.)

We measured the doubling of performance by rendering 96-pixel height
glyph strings, which are fillrate limited rather than latency/overhead
limited.  The performance is also improved, albeit by a smaller amount,
on the more usual smaller text, demonstrating that internal overhead is
not a problem.
2009-06-16 12:08:58 -04:00
Søren Sandmann Pedersen
1a7f25946b Post-release version bump 2009-06-16 11:59:20 -04:00
Søren Sandmann Pedersen
9733b2c4d4 Pre-release version bump 2009-06-16 11:52:48 -04:00
Jonathan Morton
b1cb5922f7 Add RVCT support for straight blitter. 2009-06-15 13:49:27 -04:00
Jonathan Morton
b6a3868ced Better CFLAGS handling for recent ARM platforms. 2009-06-15 13:49:25 -04:00
Jonathan Morton
1217c11a02 Misc warning fixes. 2009-06-15 13:42:24 -04:00
Søren Sandmann Pedersen
68ec1244cd Add API to set a function to be called when the image is destroyed. 2009-06-13 10:20:43 -04:00
Søren Sandmann Pedersen
ebc39ed35a Work around X server bug.
X servers prior to

	ebfd6688d1927288155221e7a78fbca9f9293952

relied on pixman not clipping to destination geometry whenever an
explicit clip region was set. Since only X servers set
source_clipping, we can just trigger off of that.
2009-06-13 10:20:19 -04:00
Søren Sandmann Pedersen
08eb065c56 Move region computation closer to the region walking.
Computing the composite is region is a bit expensive, so only compute
it if we are likely to actually walk it.
2009-06-13 10:20:19 -04:00
Søren Sandmann Pedersen
78ca4eea64 Simplify clipping rule
The new rule is:

- Output is clipped to the destination clip region.

- If a source image has the clip_sources property set, then there
  is an additional step, after repeating and transforming, but before
  compositing, where pixels that are not in the source clip are
  rejected. Rejected means no compositing takes place (not that the
  pixel is treated as 0). By default source clipping is turned off;
  when they are turned on, only client-set clips are honored.

The old rules were unclear and inconsistently implemented.
2009-06-13 10:20:19 -04:00
Søren Sandmann Pedersen
b9683cb2ae Fix pixman_image_is_opaque()
- Don't claim that non-repeating bits images are opaque.

- Don't claim that conical gradients are opaque ever.
2009-06-13 10:18:18 -04:00
Søren Sandmann Pedersen
7aeed3fc08 Only call fast paths when the images cover the composite region 2009-06-13 10:18:18 -04:00
Søren Sandmann Pedersen
e67c7eedf2 Pass the region to walk_region_internal() 2009-06-13 10:18:18 -04:00
Søren Sandmann Pedersen
85a2f55e6b Remove srcRepeat and maskRepeat arguments from _pixman_walk_composite_region() 2009-06-13 10:18:18 -04:00
Søren Sandmann Pedersen
dc0a9dd65a Remove all the srcRepeat/srcTransform stuff from the general implementation. 2009-06-13 10:18:18 -04:00
Søren Sandmann Pedersen
f885caad4a Make _pixman_walk_composite_region() a wrapper around an internal function 2009-06-13 10:18:17 -04:00
Søren Sandmann Pedersen
d5768884a1 Handle repeat_none/normal for 64 bit fetchers 2009-06-13 10:18:17 -04:00
Søren Sandmann Pedersen
c9ea4a9722 Make the untransformed path handle REPEAT_NONE and REPEAT_NORMAL 2009-06-13 10:18:17 -04:00
Julien Cristau
61c808f1a6 Update debian/copyright from upstream COPYING (closes: #519078).
Thanks, Jo Shields!
2009-06-10 22:48:43 +02:00
Søren Sandmann Pedersen
cf7bf4eb57 Post-release version bump 2009-06-05 01:33:28 -04:00
Søren Sandmann Pedersen
b721bc4919 Pre-release version bump
Also squash some warnings and correct the variable name in RELEASING.
2009-06-05 01:10:00 -04:00
Jonathan Morton
5f086792ee [NEON] Really fix filler bug.
Advance the destination pointer (r4 register) properly.
Found by Siarhei Siamashka.
2009-06-04 11:29:46 -04:00
Jonathan Morton
3b12cc7a23 [NEON] Fix filler bug.
r5 is being sourced explicitly instead of the %[width] reference.
It's probably a copy-paste bug, not spotted because I didn't
originally write it.
2009-06-04 11:24:22 -04:00
Søren Sandmann Pedersen
3c570a815a Add an --enable-timers configure option to enable the TIMER_BEGIN/END macros 2009-06-04 00:05:06 -04:00
Søren Sandmann Pedersen
7077138fb3 Some cleanups in the configure.ac file 2009-06-03 23:54:57 -04:00
Søren Sandmann Pedersen
9d442a6bc6 Correct link to bugzilla in README 2009-06-03 22:25:25 -04:00
Søren Sandmann Pedersen
4465866cba Merge branch 'many-pixels' 2009-06-03 21:49:59 -04:00
Jonathan Morton
a673a898e1 Delete now-unused fbCompositeSrc_x888x0565neon(). 2009-06-03 10:43:42 -04:00
Jonathan Morton
7b3e90c361 Replace fbCompositeSrc_x888x0565neon with fbCompositeSrc_24x16neon. 2009-06-03 10:43:42 -04:00
Jonathan Morton
0bfd9904e4 Enable NEON straight blits. 2009-06-03 10:43:41 -04:00
Jonathan Morton
4da5316285 Enable NEON copies. 2009-06-03 10:43:41 -04:00
Jonathan Morton
15ec397784 Enable NEON fills. 2009-06-03 10:43:41 -04:00
Jonathan Morton
78faaa58d6 Add more NEON fast paths 2009-06-03 10:43:41 -04:00
Søren Sandmann Pedersen
d4d716cc25 Only advance the Z coordinate for non-affine transformations 2009-06-02 16:54:10 -04:00
Søren Sandmann Pedersen
c2b1194929 Consistently use 256 pixels as the size of the temp buffers 2009-06-02 16:54:10 -04:00
Søren Sandmann Pedersen
10bc25b01a Inline repeating instead of doing it as a separate pass 2009-06-02 16:54:10 -04:00
Søren Sandmann Pedersen
db4f7fc9df Move pixman_expand/contract to pixman-utils.c 2009-06-02 16:54:10 -04:00
Søren Sandmann Pedersen
abb60f43f4 Change pixel wise fetcher to fetch many pixels at a time instead of just one 2009-06-02 16:54:10 -04:00
Søren Sandmann Pedersen
9a7ded161c Remove unused access macro 2009-06-02 16:54:10 -04:00
Søren Sandmann Pedersen
2b82a4c14d Add a 64 bit pixel fetcher and use it for solid colors 2009-06-02 16:54:10 -04:00
Søren Sandmann Pedersen
f9fa5bcac0 Move simple fetchers after transformed fetcher 2009-06-02 16:54:10 -04:00
Søren Sandmann Pedersen
c981eb95bb Rename some of the fetchers 2009-06-02 16:54:09 -04:00
Søren Sandmann Pedersen
e043530553 Split filter switching into its own bits_image_fetch_filtered() function 2009-06-02 16:54:09 -04:00
Søren Sandmann Pedersen
cb04bfd6b4 Move 'adjust' code into the individual filters 2009-06-02 16:54:09 -04:00
Søren Sandmann Pedersen
94c6abe8fc Add bits_image prefix to fetchers 2009-06-02 16:54:09 -04:00
Søren Sandmann Pedersen
5b8304fd17 Move some code around - use image->fetch_pixel in FbFetchSolid 2009-06-02 16:54:09 -04:00
Søren Sandmann Pedersen
48a2d0bba2 Rename _pixman_image_fetch_pixels() to bits_image_fetch_alpha_pixels 2009-06-02 16:54:09 -04:00
Søren Sandmann Pedersen
0486f0f324 Get rid of the StoreExternalAlpha() functions 2009-06-02 16:54:09 -04:00