Commit graph

105 commits

Author SHA1 Message Date
Luboš Luňák
da02ba11ca Scene*::Window classes are now too complex to be value-based,
allocate them dynamically.


svn path=/branches/work/kwin_composite/; revision=645046
2007-03-21 15:52:42 +00:00
Rivo Laks
19e7ebe1d8 Add shader support.
Effects can use setShader() method to set a custom shader for window rendering.

svn path=/branches/work/kwin_composite/; revision=643131
2007-03-16 13:00:01 +00:00
Luboš Luňák
d4a58f4152 QMap -> QHash
svn path=/branches/work/kwin_composite/; revision=642532
2007-03-14 16:50:19 +00:00
Luboš Luňák
e61ecff9b9 Check that getting compositing pixmap of a window succeeded.
It may fail (or "fail") if the window is not mapped or if the geometry
doesn't match, both of which may happen due to the asynchronous
nature of X.


svn path=/branches/work/kwin_composite/; revision=637741
2007-02-27 16:13:34 +00:00
Philip Falkner
8299541652 Add build checks for XComposite, XDamage, XRender, OpenGL, and XShm.
KWin should now build and run with/without any or all of the above.

svn path=/branches/work/kwin_composite/; revision=633387
2007-02-13 23:28:36 +00:00
Rivo Laks
de2c5223ee Split window rendering into multiple methods
svn path=/branches/work/kwin_composite/; revision=630472
2007-02-05 14:01:09 +00:00
Philip Falkner
f060c3bfbb Improved filtering algorithm. Now fast filtering is used by default, while (depending on SmoothScale in kwinrc) bilinear filtering is used on transformed windows and screens.
Optionally, if SmoothScale is set to 2, trilinear filtering will be attempted instead of bilinear.  This requires GL_ARB_texture_non_power_of_two, GL_EXT_framebuffer_object, and valid mipmaps.

svn path=/branches/work/kwin_composite/; revision=629453
2007-02-02 19:58:35 +00:00
Philip Falkner
66d796002f Add basic mipmapping support for OpenGL; by itself this doesn't do much, but allows further capabilities.
svn path=/branches/work/kwin_composite/; revision=629452
2007-02-02 19:56:18 +00:00
Philip Falkner
1e2d811cea Add support for GL_EXT_framebuffer_object, needed for mipmaps.
svn path=/branches/work/kwin_composite/; revision=629450
2007-02-02 19:55:17 +00:00
Philip Falkner
8fe5ec7709 Use glXGetFBConfigs instead of glXChooseFBConfig.
This makes texture_from_pixmap mode work in more places.

svn path=/branches/work/kwin_composite/; revision=628804
2007-01-31 14:32:52 +00:00
Luboš Luňák
908ec070a9 Discard vertices on size change.
svn path=/branches/work/kwin_composite/; revision=628605
2007-01-30 16:42:03 +00:00
Philip Falkner
0341a3e8b5 Add support for GL_ARB_texture_non_power_of_two. Use GL_TEXTURE_2D wherever possible, even when that extension isn't available.
svn path=/branches/work/kwin_composite/; revision=626897
2007-01-24 21:35:58 +00:00
Rivo Laks
c2830a6360 Effects can now request windows to be subdivided into multiple quads.
Effects also get access to window's vertices. This can be used to change shape of
  the window, e.g. for wobble effect

svn path=/branches/work/kwin_composite/; revision=626706
2007-01-24 11:51:38 +00:00
Luboš Luňák
77f803a563 Instead of the somewhat fragile way of trying to clean up Client/Unmanaged
instances and keeping them around after the window is closed, create
class Deleted as a representation of a closed window.


svn path=/branches/work/kwin_composite/; revision=626356
2007-01-22 22:51:30 +00:00
Luboš Luňák
a4bf620619 X pixmap is referenced by GLXPixmap, so there's no need
to worry about its lifetime, just taking care of GLXPixmap
is enough.


svn path=/branches/work/kwin_composite/; revision=623812
2007-01-15 15:15:04 +00:00
Luboš Luňák
049460fa2e Reset window damage after updating the damaged areas of the OpenGL texture
or Xrender picture, not after every repaint.
This also allows removing the confusing initPaint()/postPaint() calls in Scene.


svn path=/branches/work/kwin_composite/; revision=607500
2006-11-24 21:28:00 +00:00
Luboš Luňák
2c9dd370d9 Do not try to paint outside of the screen.
svn path=/branches/work/kwin_composite/; revision=606822
2006-11-21 22:22:48 +00:00
Luboš Luňák
9c4218d4bf Sync to vblank, patch by Philip Falkner.
svn path=/branches/work/kwin_composite/; revision=606795
2006-11-21 20:59:59 +00:00
Luboš Luňák
930a9248c9 Repainting of only changed areas, now also for OpenGL.
svn path=/branches/work/kwin_composite/; revision=606272
2006-11-19 20:29:41 +00:00
Luboš Luňák
b956650b2d Make some aspects affecting performance configurable in kwinrc,
group [Translucency]:
GLMode=TFP|SHM|Fallback - select rendering mode
GLAlwaysRebind=<bool> - force rebinding a texture
GLDirect=<bool> - direct rendering
CCMAIL: kwin@kde.org


svn path=/branches/work/kwin_composite/; revision=606268
2006-11-19 20:13:49 +00:00
Luboš Luňák
6e54bae328 Try to reduce number of roundtrips in SHM mode by merging
region rectangles.


svn path=/branches/work/kwin_composite/; revision=606267
2006-11-19 20:10:25 +00:00
Luboš Luňák
a35cf8e954 Try to use direct rendering.
svn path=/branches/work/kwin_composite/; revision=605288
2006-11-16 09:02:03 +00:00
Luboš Luňák
9d25cf5166 SHM mode, using MIT-SHM extension for Pixmap->image data conversions
and glTexImage texture creation. Stolen from Beryl (stolen from Looking Glass).
Not faster than TFP but faster then the original fallback glCopyTexImage
mode from glcompmgr.


svn path=/branches/work/kwin_composite/; revision=605283
2006-11-16 08:36:30 +00:00
Luboš Luňák
f33683df3f A different workaround for ATI (http://lists.kde.org/?l=kwin&m=116353772208535&w=2).
svn path=/branches/work/kwin_composite/; revision=605278
2006-11-16 07:57:55 +00:00
Luboš Luňák
9bfae71d45 Support for strict binding for AIGLX, although currently not needed.
svn path=/branches/work/kwin_composite/; revision=605274
2006-11-16 07:46:39 +00:00
Luboš Luňák
bcfc36c695 Work around ATI crashes.
svn path=/branches/work/kwin_composite/; revision=603713
2006-11-09 20:48:12 +00:00
Luboš Luňák
d3fc0bbc09 Add support for changing saturation. Patch by Rivo Laks.
svn path=/branches/work/kwin_composite/; revision=603145
2006-11-07 23:33:23 +00:00
Luboš Luňák
4110fc1c3a Support for XComposite overlay window.
svn path=/branches/work/kwin_composite/; revision=603137
2006-11-07 22:44:39 +00:00
Luboš Luňák
5245ef9e10 In non-tfp mode, a different context must be used when doing opengl
operations with the window drawable. Patch by Philip Falkner.


svn path=/branches/work/kwin_composite/; revision=603122
2006-11-07 22:04:57 +00:00
Luboš Luňák
d92d3a8165 Document the compositing framework and the scene backends,
describe the design, add links to external docs.
Restructure COMPOSITE_TODO into sections and add sort of priorities.


svn path=/branches/work/kwin_composite/; revision=600163
2006-10-29 19:23:45 +00:00
Luboš Luňák
3f9b754ee7 Add post-painting pass to be used for triggering
repaints with animations.


svn path=/branches/work/kwin_composite/; revision=600156
2006-10-29 19:07:10 +00:00
Luboš Luňák
1d7b94acfc Basic window transformations.
svn path=/branches/work/kwin_composite/; revision=597997
2006-10-22 10:15:19 +00:00
Luboš Luňák
779597a648 Basic screen transformation.
svn path=/branches/work/kwin_composite/; revision=597815
2006-10-21 18:07:00 +00:00
Luboš Luňák
fef4dec6e6 Add COPY_BUFFER workaround from glcompmgr that makes this work
even with stable 8776 nvidia drivers (the beta ones lock up on me
from time to time with multiple X running).


svn path=/branches/work/kwin_composite/; revision=597767
2006-10-21 15:23:01 +00:00
Luboš Luňák
ddab4e0d2c Move functionality to the base Scene class.
svn path=/branches/work/kwin_composite/; revision=596186
2006-10-16 21:06:34 +00:00
Luboš Luňák
caed149f40 Add pre-paint passes that will allow finding out how the painting will be done.
svn path=/branches/work/kwin_composite/; revision=596109
2006-10-16 18:46:07 +00:00
Luboš Luňák
338adc9ad5 Throw away old code for effects and start anew.
svn path=/branches/work/kwin_composite/; revision=595965
2006-10-16 10:12:48 +00:00
Luboš Luňák
d547cf8cd4 Move duplicated functionality to the base class.
svn path=/branches/work/kwin_composite/; revision=595639
2006-10-15 08:58:38 +00:00
Luboš Luňák
17e46e32fb Separate more generic and simple screen paint.
svn path=/branches/work/kwin_composite/; revision=595559
2006-10-14 20:46:47 +00:00
Luboš Luňák
004d781e32 For simple paint, clip by above windows. A missing todo is to still
update only changed areas instead of doing full glXSwapBuffers()
when possible.


svn path=/branches/work/kwin_composite/; revision=595357
2006-10-14 07:15:23 +00:00
Luboš Luňák
b60b847e25 Dump usage of depth buffer, Compiz manages to do just with
clipping.


svn path=/branches/work/kwin_composite/; revision=595349
2006-10-14 06:33:38 +00:00
Luboš Luňák
e8e16726c1 Prepare for optimized painting cases.
svn path=/branches/work/kwin_composite/; revision=594955
2006-10-12 21:49:54 +00:00
Luboš Luňák
392acfb28c A really nice trick from Compiz. OpenGL coordinates have Y upside
down ( [0,0] is bottomleft, unlike topleft with X ), so simply
flip the whole scene upside down and move it up -> the coordinates
match, except for when mapping pixmap to textures.


svn path=/branches/work/kwin_composite/; revision=594942
2006-10-12 21:12:51 +00:00
Luboš Luňák
dac02f69c6 Support for double-buffered output, can't really test it here though.
svn path=/branches/work/kwin_composite/; revision=593722
2006-10-08 20:31:00 +00:00
Luboš Luňák
0858d34ed1 GLX_EXT_texture_from_pixmap working.
svn path=/branches/work/kwin_composite/; revision=593460
2006-10-07 21:23:46 +00:00
Luboš Luňák
71b0978628 Separate function for finding right GLXFBConfig.
svn path=/branches/work/kwin_composite/; revision=593458
2006-10-07 21:22:59 +00:00
Luboš Luňák
06203d0652 Don't bother with trying to transform window damage,
when there are any transformations, it should simply
repaint everything (todo).


svn path=/branches/work/kwin_composite/; revision=593450
2006-10-07 21:18:36 +00:00
Luboš Luňák
b1a526960f Don't cache the window pixmap, it doesn't make any difference.
svn path=/branches/work/kwin_composite/; revision=593445
2006-10-07 21:14:57 +00:00
Luboš Luňák
f14000b7fb Implement all missing Scene virtuals.
svn path=/branches/work/kwin_composite/; revision=591145
2006-10-01 21:14:53 +00:00
Luboš Luňák
d65ebbcb5f Opengl transparency.
svn path=/branches/work/kwin_composite/; revision=590751
2006-09-30 18:09:41 +00:00
Luboš Luňák
ace6b4ad8a Opengl support for shaped windows.
svn path=/branches/work/kwin_composite/; revision=590728
2006-09-30 17:28:27 +00:00
Luboš Luňák
fba72ecdfe Update only damaged areas.
svn path=/branches/work/kwin_composite/; revision=590678
2006-09-30 16:17:54 +00:00
Luboš Luňák
649887d6c2 Looks like using XserverRegion for keeping damage regions
wasn't that good idea. Changed to QRegion.


svn path=/branches/work/kwin_composite/; revision=590648
2006-09-30 15:40:03 +00:00
Luboš Luňák
1c7e7bb2b7 Keeping scene-related data in opengl scene.
svn path=/branches/work/kwin_composite/; revision=590319
2006-09-29 19:05:36 +00:00
Luboš Luňák
efff218441 A very crude OpenGL-based compositing code.
svn path=/branches/work/kwin_composite/; revision=590265
2006-09-29 16:49:34 +00:00