Zhigang Gong
3c44e3e0ce
glamor: Optimize composite when soure/mask is xrgb.
...
Added a new shader aswizlle_prog to wired the alpha to 1 when
the image color depth is 24 (xrgb). Then we don't need to fallback
the xrgb source/mask to software composite in render phase. Also
don't wire the alpha bit to 1 in the render phase. This can get
about 2x performance gain with the cairo performance trace's
firefox-planet case.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:46:35 +08:00
Zhigang Gong
0e2af4d0c9
glamor: Don't print those fallback messages by default.
...
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:46:35 +08:00
Zhigang Gong
925fc9724f
glamor: Optimize glamor_finish_access.
...
use pbo if possible when we load texture to a temporary tex.
And for the previous direct texture load function, it's not
correct and get removed in this commit.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:46:35 +08:00
Zhigang Gong
b8ce483f58
glamor: Don't use glamor_pixmap_type currently.
...
Added comments to glamor_pixmap_create. To be refined in the future.
We need to identify whether a pixmap is a CPU memory pixmap or a
GPU pixmap. Current implementation is not correct. There are three
cases:
1. Too large pixmap, we direct it to CPU memory pixmap.
2. w ==0 || h == 0 pixmap, this case has two possibilities:
2.1 It will become a screen pixmap latter, then it should be
GPU type.
2.2 It's a scratch pixmap or created from a share memory, then
it should belong to CPU memory.
XXX, need to be refined latter.
2011-09-26 16:46:35 +08:00
Zhigang Gong
28835be1b8
glamor: improve glamor_finish_access.
...
When the platform's coordinate system is the same as X11's . We
can load the texture to the fbo directly without one extra texture
transformation.
2011-09-26 16:46:35 +08:00
Zhigang Gong
1edf0cc6ab
glamor: Don't write back read only pixmap to fbo.
...
For those pixmap which has valid fbo and opened as GLAMOR_ACCESS_RO
mode, we don't need to upload the texture back when calling the
glamor_finish_access(). This will get about 10% performance gain.
2011-09-26 16:46:35 +08:00
Zhigang Gong
1495ba9e64
glamor: Use buffer object as much as possible.
...
Change the row length of 1bit color depth pixmap to the actual stride.
The previous implementation use the width as its stride which is not
good. As it will waste 8 times of space and also bring some non-unify
code path. With this commit, we can merge those 1bit or other color
depth to almost one code path. And we will use pixel buffer object
as much as possible due to performance issue. By default, some mesa
hardware driver will fallback to software rasterization when use
glReadPixels on a non-buffer-object frame buffer. This change will
get about 4x times performance improvemention when we use y-inverted
glamor or the driver support hardware y-flipped blitting.
2011-09-26 16:46:35 +08:00
Zhigang Gong
cd43b1ea83
glamor: Add fallback code path for glamor_fill.
2011-09-26 16:46:35 +08:00
Zhigang Gong
8593f22fb8
glamor: glamor_set_alu should enable GL_COLOR_LOGIC_OP.
...
GL_COLOR_OP seems not supported in current MESA.
2011-09-26 16:46:35 +08:00
Zhigang Gong
f871d174a8
glamor: Switch to software fb for too large pixmap.
...
If pixmap's size exceeds the limitation of the MESA library, the
rendering will fail. So we switch to software fb if it is the case.
Add one new element for pixmap private structure to indicate whehter
we are a software fb type or a opengl type.
2011-09-26 16:46:35 +08:00
Zhigang Gong
c97d4533f2
glamor: Silent compilation warnings due to some deprecated APIs.
...
those xcalloc/xfree/xalloc/XNFprintf/... are deprecated. Replace
then with the new one. And fix some other minor problems.
2011-09-26 16:46:34 +08:00
Zhigang Gong
eb3487a448
glamor: Add new feature which is to flip output on y axis.
...
Due to the coordinate system on EGL is different from FBO
object. To support EGL surface well, we add this new feature.
When calling glamor_init from EGL ddx driver, it should use
the new flag GLAMOR_INVERTED_Y_AXIS.
2011-09-26 16:46:34 +08:00
Zhigang Gong
26ff612171
glamor: Resolved merge conflictions with Kristian's glamor-ddx patch.
2011-09-26 16:46:34 +08:00
Zhigang Gong
47b6531273
glamor: Fixed one segfault bug when close screen.
...
move the original glamor_fini to glamor_close_screen. And wrap the CloseScreen
with glamor_close_screen, Then we can do some thing before call the underlying
CloseScreen().
The root cause is that glamor_fini will be called after the ->CloseScreen().
This may trigger a segmentation fault at
glamor_unrealize_glyph_caches() at calling into FreePicture().
2011-09-26 16:46:34 +08:00
Zhigang Gong
b3577a1c85
glamor: Merged with latest xserver.
...
Merged with latest xserver, the major change is due to the API change of
the management of devPrivates.
2011-09-26 16:46:34 +08:00
Zhigang Gong
3105fe9f64
glamor: Call glamor_composite_rects only when enable RENDER.
2011-09-26 16:46:34 +08:00
Zhigang Gong
f9843c7a35
glamor: Fixed one conflict data type(XID) bug.
...
We should include the dix-config.h for all the glamor files. Otherwise
the XID type maybe inconsisitent in different files in 64bit machine.
The root cause is this macro "#define _XSERVER64 1" should be included
in all files refer to the data type "XID" which is originally defined
in X.h. If _XSERVER64 is defined as 1, then XID is defined as CARD32
which is a 32bit integer. If _XSERVER64 is not defined as 1 then XID
is "unsigned long". In a 32bit machine, "unsigned long" should be
identical to CARD32. But in a 64bit machine, they are different.
2011-09-26 16:46:34 +08:00
Zhigang Gong
e194740c94
glamor: Fixed some compiling and linking errors.
...
Change the inline functions to static type, otherwise when linking it
complains multiple definitions of those functions.
2011-09-26 16:46:34 +08:00
Eric Anholt
8cfcc61403
glamor: Add support for using EXT_framebuffer_blit to do CopyArea.
2011-09-26 16:46:34 +08:00
Eric Anholt
d2da9d1c22
glamor: Reduce the noise from wide lines "fallback".
2011-09-26 16:46:34 +08:00
Eric Anholt
955ccfbc34
glamor: Fix the segfault at screen fini.
2011-09-26 16:46:34 +08:00
Eric Anholt
003dee4c82
glamor: Replace the immediate mode in glamor_fill() with glDrawArrays().
2011-09-26 16:46:34 +08:00
Eric Anholt
60775e21e3
glamor: Use a VBO to accumulate multiple glyph quads at once.
...
This increases us from 23000 to 27000/sec on rgb24text.
2011-09-26 16:46:34 +08:00
Eric Anholt
8ce312e619
glamor: Use glamor_composite_with_shader once per group of glyphs.
...
This shaves CPU time in GL setup. Performance of rgb24text went from
18400/sec to 23500/sec.
2011-09-26 16:46:34 +08:00
Eric Anholt
6ce05e0b28
glamor: Convert the shaders path to handling glamor_composite_rect_t.
2011-09-26 16:46:34 +08:00
Eric Anholt
858ce0c192
glamor: Add support for component alpha rendering.
...
Brings x11perf -rgb24text from 230/sec to 18400/sec
2011-09-26 16:46:34 +08:00
Eric Anholt
d07fc66a05
glamor: Rework shader setup to make extending the IN types easier.
2011-09-26 16:46:33 +08:00
Eric Anholt
8cefa287dd
glamor: Add a little mechanism for only printing fallbacks when they happen.
...
Sometimes we want to try a couple of different methods for
accelerating. If one of them says "no" and the other says "yes",
don't spam the log about the "no."
2011-09-26 16:46:33 +08:00
Eric Anholt
5f5c35b56d
glamor: Fix up the fallback message for no texture present on compositing.
2011-09-26 16:46:33 +08:00
Eric Anholt
2fa95725d8
glamor: Add support for a1 composite sources.
...
They're stored just like a8, but the values are set to either 0.0 or
1.0. Because they're a8 with only two legal values, we can't use them
as destinations, but nobody's rendering to a1 dests anyway (we hope).
2011-09-26 16:46:33 +08:00
Eric Anholt
9bcbcbf8c2
glamor: Fix and enable ZPixmap PutImage acceleration.
2011-09-26 16:46:33 +08:00
Eric Anholt
2ba634fab9
glamor: Fix render source transforms.
...
Fixes (except for small bit differences) cairo source-pattern.
2011-09-26 16:46:33 +08:00
Eric Anholt
b1f67a5082
glamor: Fix and enable glamor_get_spans().
...
This makes running the cairo test suite almost tolerable.
2011-09-26 16:46:33 +08:00
Eric Anholt
f88d76cf7e
glamor: Enable glamor_fill_spans().
...
x11perf -wline100 performance goes from 8.8/sec to 111/sec.
2011-09-26 16:46:33 +08:00
Eric Anholt
a63df0c504
glamor: Fix up the wide/non-solid lines fallback.
2011-09-26 16:46:33 +08:00
Eric Anholt
d61a13cf3f
glamor: Fix and enable tile fill acceleration (aka the root weave).
2011-09-26 16:46:33 +08:00
Eric Anholt
86a2065253
glamor: Fix off-by-one in CopyPixels CopyArea path.
...
Fixes window dragging in uncomposited metacity.
2011-09-26 16:46:33 +08:00
Eric Anholt
be82a06242
glamor: Fix screen_x/screen_y handling for compositing.
...
It's not an offset from pixmap coords to composited pixmap coords,
it's an offset from screen-relative window drawable coords to
composited pixmap coords.
2011-09-26 16:46:33 +08:00
Eric Anholt
5360b1e8bb
glamor: Implement glCopyPixels based src == dest CopyArea acceleration
2011-09-26 16:46:33 +08:00
Eric Anholt
0565c1d789
glamor: Add support for accel of x8r8g8b8 source pictures.
...
There's a limitation still for RepeatNone, but this fixes a bunch of
fallbacks for gnome-terminal.
2011-09-26 16:46:33 +08:00
Eric Anholt
e6bf505736
glamor: Set active texture on glamor_copy_n_to_n setup.
...
Fixes failure in rendercheck -t blend -o src
2011-09-26 16:46:33 +08:00
Eric Anholt
be64167fea
glamor: Don't try to CopyArea from a Solid source picture.
...
Fixes failure with rendercheck.
2011-09-26 16:46:33 +08:00
Eric Anholt
126fc09cb5
glamor: Rework the Render shader setup to be easily modified, like cairo-gl.
2011-09-26 16:46:33 +08:00
Eric Anholt
f4a3194837
glamor: Add the glyph cache from UXA (de-camelCased).
...
This doesn't yet have an optimized glamor_composite_rects()
implementation, but it does triple the speed of x11perf -aa10text.
2011-09-26 16:46:33 +08:00
Eric Anholt
7e6432e7b9
glamor: Fix up and enable accelerated composite.
2011-09-26 16:46:33 +08:00
Eric Anholt
a0b589e90a
glamor: Restore planemask to all-on when finishing a fill.
2011-09-26 16:46:33 +08:00
Eric Anholt
d8c2662bf4
glamor: Set active texture in finishaccess drawing.
2011-09-26 16:46:33 +08:00
Eric Anholt
4f398b29dd
glamor: Align stride of fallback pixmap data to 32 bits.
...
fb/pixman demand this alignment, and all sorts of things go badly otherwise.
Fixes piglit x11-8bpp-7x8-draw.
2011-09-26 16:46:33 +08:00
Eric Anholt
15e58b5ffb
glamor: Split the copy path out into its own function.
2011-09-26 16:46:33 +08:00
Eric Anholt
ad67299fa2
glamor: Provide more information about the operands to fallback composites.
2011-09-26 16:46:33 +08:00
Eric Anholt
4811e428a9
glamor: Pull in UXA code for dumping some composites down to copy_n_to_n.
...
Window dragging with metacity+gnome-terminal+xcompmgr is almost credible.
2011-09-26 16:46:33 +08:00
Eric Anholt
35847c578e
glamor: Add acceleration for copyarea not from the screen.
2011-09-26 16:46:32 +08:00
Eric Anholt
647b9fb49a
glamor: Add CopyWindow implementation so it doesn't crash.
2011-09-26 16:46:32 +08:00
Eric Anholt
95d4a5a6ab
glamor: Enable fill acceleration and flip opposite for pixmaps too.
...
Here's my theory for the flipping: It doesn't really matter which
orientation we store the pixmaps if we don't scan them out. We have
to flip coordinates for the window system framebuffer. Doing so for
everything else makes things consistent. I'm not sure how this will
interact with future GLX integration, though.
2011-09-26 16:46:32 +08:00
Eric Anholt
5332547a0a
glamor: Fix prepare_access on 1bpp data.
...
Apparently I don't have anything hitting this path, so I'm not sure if
it's good or not.
2011-09-26 16:46:32 +08:00
Eric Anholt
c3c3a63497
glamor: Use the pixmap stride in fallbacks instead of trying to guess it.
...
Mostly fixes gnome-terminal text.
2011-09-26 16:46:32 +08:00
Eric Anholt
45de3d24b4
glamor: Replace the glDrawPixels in glamor_finish_access with GLSL.
...
Root weave displays. \o/
2011-09-26 16:46:32 +08:00
Eric Anholt
d8d3fa1034
glamor: All the fallbacks in the world.
...
Bringup is really not flying when I can't see anything. So dump back
to all software so I can turn on a bit at a time.
2011-09-26 16:46:32 +08:00
Eric Anholt
745502af96
glamor: Add check for EXT_bgra which we rely on.
2011-09-26 16:46:32 +08:00
Eric Anholt
6ce378f11f
glamor: Add fallback support for glamor_get_spans().
2011-09-26 16:46:32 +08:00
Eric Anholt
b5087ff9b1
glamor: Fix the row length of 1bpp prepare_access.
2011-09-26 16:46:32 +08:00
Eric Anholt
e93070affd
glamor: Fix up the access flags for glamor_prepare_access().
2011-09-26 16:46:32 +08:00
Eric Anholt
0e56c182c3
glamor: Add fallback support to glamor_put_image().
2011-09-26 16:46:32 +08:00
Eric Anholt
22cad98975
glamor: Add fallback support to glamor_set_spans().
2011-09-26 16:46:32 +08:00
Eric Anholt
55dac9b42e
glamor: Add glamor_prepare_access_gc() from UXA.
2011-09-26 16:46:32 +08:00
Eric Anholt
72a757ba00
glamor: Use GL_MESA_pack_invert to avoid complexity in prepare_access.
2011-09-26 16:46:32 +08:00
Eric Anholt
e9d4794cd0
glamor: Add fallbacks for Render.
2011-09-26 16:46:32 +08:00
Eric Anholt
de675893b7
glamor: Add fallbacks for glamor_copy_area().
2011-09-26 16:46:32 +08:00
Eric Anholt
ca58607a44
glamor: Move glamor_poly_lines to a separate file.
2011-09-26 16:46:32 +08:00
Eric Anholt
800fd4f849
glamor: Fix the type for copyarea.
2011-09-26 16:46:32 +08:00
Eric Anholt
c4343dfa0a
glamor: Add prepare/finishaccess code based on UXA.
2011-09-26 16:46:32 +08:00
Eric Anholt
f17473cdd5
glamor: Fix pixmap private getter in copyarea.
2011-09-26 16:46:32 +08:00
Eric Anholt
5915b4c0cf
glamor: Add support for solid source pictures.
2011-09-26 16:46:32 +08:00
Eric Anholt
1159ebb30b
glamor: Add untested copyarea implementation
2011-09-26 16:46:32 +08:00
Eric Anholt
936385142c
glamor: Accelerate PolyFillRect using glamor_fill instead of spans.
2011-09-26 16:46:32 +08:00
Eric Anholt
6dacc9b08c
glamor: Add untested PutImage 1bpp XYPixmap support.
2011-09-26 16:46:31 +08:00
Eric Anholt
854e9bd20a
glamor: Add untested PutImage XYBitmap support.
2011-09-26 16:46:31 +08:00
Eric Anholt
8a53566acb
glamor: make the polylines complaint a little more useful.
2011-09-26 16:46:31 +08:00
Eric Anholt
aa13306974
glamor: Start adding render acceleration support.
...
This brings in idr's glu3 code. We'll probably want to move to linking to
it as a library, once an ABI-stable release is out.
2011-09-26 16:46:31 +08:00
Eric Anholt
4a51cc0440
glamor: Add clipping to setspans.
2011-09-26 16:46:31 +08:00
Eric Anholt
5fadea5d9c
glamor: Fix some screen_xy offsets to be the right way around.
2011-09-26 16:46:31 +08:00
Eric Anholt
44e4599b83
glamor: Move planemask to a function in case I decide to fill it in.
2011-09-26 16:46:31 +08:00
Eric Anholt
882411bef1
glamor: add alu support to setspans.
2011-09-26 16:46:31 +08:00
Eric Anholt
c70ce72fd7
glamor: Give setspans the same format support as getspans.
2011-09-26 16:46:31 +08:00
Eric Anholt
d9eef95c74
glamor: Fix bad fallthrough in getspans (accessing invalid memory).
2011-09-26 16:46:31 +08:00
Eric Anholt
0360ba361a
glamor: Fix memory leak in getspans.
2011-09-26 16:46:31 +08:00
Eric Anholt
cdb1fe6d96
glamor: Move setspans to a separate file.
2011-09-26 16:46:31 +08:00
Eric Anholt
cfb8dea815
glamor: Hook up miGetImage to fix some invalid accesses.
2011-09-26 16:46:31 +08:00
Eric Anholt
e3c02c09c1
glamor: Add ALU support to solid, tile, and putimage.
2011-09-26 16:46:31 +08:00
Eric Anholt
2b657d91d8
glamor: Add untested putimage support.
2011-09-26 16:46:31 +08:00
Eric Anholt
f66e5c4145
glamor: Add 8bpp to get/setspans.
2011-09-26 16:46:31 +08:00
Eric Anholt
93ad091442
glamor: Add trapezoids code.
...
This fixes segfaults on starting gnome-terminal.
2011-09-26 16:46:31 +08:00
Eric Anholt
60ca0260f2
glamor: Add more solid_fail_regions for software fallbacks.
2011-09-26 16:46:31 +08:00
Eric Anholt
7500ee2b02
glamor: Fill in 1 and 24-bit getspans.
2011-09-26 16:46:31 +08:00
Eric Anholt
f6cffbb2ba
glamor: Add stub Composite support.
2011-09-26 16:46:31 +08:00
Eric Anholt
2fa26c4958
glamor: Free resources when destroying pixmaps.
2011-09-26 16:46:31 +08:00
Eric Anholt
16c3b929dd
glamor: Add untested support for tile filling.
2011-09-26 16:46:31 +08:00
Eric Anholt
8016135ec7
glamor: Fill out glamor_get_color_4f_from_pixel() a bit.
2011-09-26 16:46:31 +08:00
Eric Anholt
519103565c
glamor: Create FBOs for pixmaps.
2011-09-26 16:46:31 +08:00
Eric Anholt
f92d1478e9
glamor: Maybe fix up the format/type for setspans.
2011-09-26 16:46:30 +08:00
Eric Anholt
4f139db92f
glamor: Add getspans implementation.
2011-09-26 16:46:30 +08:00
Eric Anholt
f1dbed5456
glamor: Move to using shader objects.
2011-09-26 16:46:30 +08:00
Eric Anholt
fbbdd788cb
glamor: Fix up DrawPixels arguments to bear some relation to reality.
2011-09-26 16:46:30 +08:00
Eric Anholt
74f262bcdb
glamor: remove gratuitous flush.
2011-09-26 16:46:30 +08:00
Eric Anholt
399e006989
glamor: Fix up block/wakeup handler.
...
Prototypes are fixed, and we don't need to flush on wakeup.
2011-09-26 16:46:30 +08:00
Eric Anholt
2e35ceca65
ephyr: Use GLEW.
...
This will hide all sorts of extension stuff from us.
2011-09-26 16:46:30 +08:00
Eric Anholt
08097434ec
add fill files, merge with first real attempt at rendering.
2011-09-26 16:46:30 +08:00
Eric Anholt
df083fab84
glamor: first real attempt at rendering.
2011-09-26 16:46:30 +08:00
Eric Anholt
1b151f2e6a
glamor: glFlush from the blockhandler so rendering happens.
2011-09-26 16:46:30 +08:00
Eric Anholt
b530cdea4a
glamor: Use a nicer struct initializer for gcops.
2011-09-26 16:46:30 +08:00
Eric Anholt
4d52ae7f2d
glamor: Start trying to hook up the rendering bits
2011-09-26 16:46:30 +08:00
Eric Anholt
da6e0ffad2
More ephyr/glamor glue.
2011-09-26 16:46:30 +08:00
Eric Anholt
0ec823ce5b
Add build infrastructure for glamor.
2011-09-26 16:37:50 +08:00