Commit Graph

11006 Commits

Author SHA1 Message Date
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
529c38a460 glamor-ddx: Remove debug message when moving cursor. 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
74ca45e7d0 glamor-ddx: Fixed one bug when a client reset the connection.
This commit fixed two bugs when one client reset the connection.
The first is that we should reopen the graphic device when the previous
node was closed during the screen closing. The second one is we should
call glamor_close_screen (not the ddx version) prior to call
eglTerminate(). As eglTerminate will release the share library. And
the glamor_close_screen may still need to call openGL APIs and thus
will hit segfault. And renamed the ddx functions to avoid naming
conflications with the glamor functions.
2011-09-26 16:46:34 +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
e3295d4106 glamor-ddx: Move the cursor EGL image to crtc strcture.
Cursor is a per crtc resource. And this commit also fix the cursor
initialization regard to the latest mesa EGL code. Now hardware
cursor works fine.
2011-09-26 16:46:34 +08:00
Zhigang Gong
4328037268 glamor-ddx: Fix a compiling error. Need revisit.
GC is redefined in the X11/Xlib.h and include/gcstruct.h which is
a xorg header file. Just use a macro to simply avoid the conflict.
Need revisit latter to find a correct way to fix this problem.
2011-09-26 16:46:34 +08:00
Zhigang Gong
18a52e2388 glamor-ddx: Migrate the code to latest mesa library.
Use eglCreateDRMImageMESA to create surfaceless image. And then
export the drm buffer back which can be used to create the frame
buffer.
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
6dae8dc7ea glamor: Add glamor-ddx driver to the build tree.
Correct the linking parameters and add dependency to the libglamor.a.
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
Kristian Høgsberg
49bf0e301e glamor ddx driver using EGL on KMS 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
0d9e8db8d0 glamor: Fixed one linking error.
As current glamor implementation depends on the glx library in the
mesa package which is conflict with the version in xorg. We have to
--disable-glx when build Xephyr. But this leads to the linking error
here. We comment out the calling to ephyrHijackGLXExtension() now.
Need revisit latter.
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