Luboš Luňák
6fd9d4e4b3
Create a new window for each tested pixmap with selfcheck, otherwise
...
second test fails for some reason with BadAlloc in glXCreatePixmap().
Maybe nvidia bug, but could be also some hidden KWin bug (according
to GLX docs, glXCreatePixmap() can give BadAlloc only when it can't
allocate, which is nonsense here, but glXCreateWindow() says that
BadAlloc may mean calling it twice on the same window, so maybe
here it's twice with the same pixmap - I don't see where the bug
could be though).
svn path=/trunk/KDE/kdebase/workspace/; revision=857141
2008-09-04 19:48:52 +00:00
Luboš Luňák
9a0124fc96
Check every screen, topleft and bottomright corners, should catch more problems.
...
Also remove the unnecessary XSync().
svn path=/trunk/KDE/kdebase/workspace/; revision=854556
2008-08-29 19:23:16 +00:00
Luboš Luňák
fd2e9b54cb
Funny how awesome ideas are often so awfully simple. Test whether compositing
...
really works by simply trying to do it and test the result - create a small
testing window with known content, do the same with it like with normal
windows, grab the screen contents, compare with the original, doesn't match? -> fail.
It still would be nice to have something similar for performance.
svn path=/trunk/KDE/kdebase/workspace/; revision=854549
2008-08-29 19:02:36 +00:00
Luboš Luňák
a42ccaa4ba
Virtuals don't work normally in dtors, call in overriden dtor too.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=853290
2008-08-27 13:21:20 +00:00
Lucas Murray
9a52d3c709
Added feature to only invert the colours of selected windows
...
Fixed shader alpha blending
CCMAIL: kwin@kde.org
svn path=/trunk/KDE/kdebase/workspace/; revision=853224
2008-08-27 12:20:34 +00:00
Martin Gräßlin
cb4ed769aa
Change from orthographic projection to a perspective projection. This allows to change z-values and rotations.
...
Therefore zScale, zTranslate and new RotationData are added to ScreenPaintData and WindowPaintData. So it is possible to define zTranslation and rotations without using OpenGL directly. The change only affects OpenGL compositing. XRender is not changed.
svn path=/trunk/KDE/kdebase/workspace/; revision=842018
2008-08-04 14:07:45 +00:00
Lucas Murray
c60c12572e
X ARGB windows are stored with alpha premultiplied. Adjusted OpenGL rendering to accomodate that and therefore fixed incorrect rendering of windows with transparencies such as the Plasma panel.
...
BUG: 163054
svn path=/trunk/KDE/kdebase/workspace/; revision=841974
2008-08-04 11:34:40 +00:00
Luboš Luňák
80dae9910e
Fix last commit.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=807454
2008-05-13 21:27:56 +00:00
Luboš Luňák
e5b1dd90bc
Restore color settings after painting background. Fixes splashscreen
...
being fully black during KDE startup, not that I understand why.
svn path=/trunk/KDE/kdebase/workspace/; revision=807447
2008-05-13 21:15:15 +00:00
Luboš Luňák
9bd87cb271
Redo timing of next painting with vsync used, try harder not to miss
...
every other sync just by a small time.
svn path=/trunk/KDE/kdebase/workspace/; revision=806443
2008-05-11 12:03:42 +00:00
Luboš Luňák
53cc35b649
Show the composite overlay window only before the first painting pass
...
actually needs to flush the output to the screen. Avoids windows
temporarily disappearing during KDE startup or similar visual glitches.
svn path=/trunk/KDE/kdebase/workspace/; revision=806387
2008-05-11 09:48:34 +00:00
Albert Astals Cid
3b9121ec3f
const & in foreach
...
svn path=/trunk/KDE/kdebase/workspace/; revision=801427
2008-04-26 16:03:02 +00:00
Luboš Luňák
02aeed3de2
No deprecated.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=788516
2008-03-21 17:50:59 +00:00
Luboš Luňák
f77561ce65
Don't discard window texture when only the shape changes but the window
...
geometry actually stays the same. Avoids large number of rebinds (with no
strict binding) with the launch feedback icon.
svn path=/trunk/KDE/kdebase/workspace/; revision=787948
2008-03-20 10:05:41 +00:00
Luboš Luňák
cff2b0e6cd
Abstract paint clipping into PaintClipper helper class that allows
...
stacking of clipping regions.
(http://lists.kde.org/?l=kwin&m=120138051215450&w=2 )
BUG: 156798
svn path=/trunk/KDE/kdebase/workspace/; revision=779045
2008-02-25 11:32:21 +00:00
Luboš Luňák
4b792d000e
Make error messages about compositing use kError(), so that they show up
...
even in release builds. Point to release notes in case of error.
svn path=/trunk/KDE/kdebase/workspace/; revision=768132
2008-01-29 14:23:26 +00:00
Luboš Luňák
429f30d508
Skip color-indexed configs, just in case.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=766482
2008-01-25 23:16:10 +00:00
Luboš Luňák
2382ea23b9
No deprecated.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=763107
2008-01-18 15:49:57 +00:00
Luboš Luňák
6b5f9f727f
Improved error detection in initRenderingContext().
...
svn path=/trunk/KDE/kdebase/workspace/; revision=763105
2008-01-18 15:49:27 +00:00
Luboš Luňák
4dc04a2eef
Move debug output about selected visuals.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=763097
2008-01-18 15:22:46 +00:00
Luboš Luňák
caf1627047
We need NPOT textures.
...
BUG: 155833
svn path=/trunk/KDE/kdebase/workspace/; revision=762709
2008-01-17 18:21:58 +00:00
Luboš Luňák
110f76ecd8
Change some of the debug messages to warnings, so compositing setup failures
...
show up also in release builds.
svn path=/trunk/KDE/kdebase/workspace/; revision=762175
2008-01-16 12:44:45 +00:00
Luboš Luňák
bb433ac40e
No longer include config*.h files in installed headers.
...
Also slightly redo the #define's for effects, now it's:
- #ifdef KWIN_HAVE_COMPOSITING to check whether there's any compositing support at all
- #ifdef KWIN_HAVE_OPENGL_COMPOSITING to check for OpenGL-based compositing
- #ifdef KWIN_HAVE_XRENDER_COMPOSITING the same for XRender
CCMAIL: kwin@kde.org
svn path=/trunk/KDE/kdebase/workspace/; revision=749628
2007-12-17 14:14:53 +00:00
Luboš Luňák
0a59114c43
I suppose black looks better on places where there's nothing at all.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=746328
2007-12-08 17:58:24 +00:00
Luboš Luňák
01bf6cbb4c
License cleanup - add headers where missing, be explicit about GPL
...
being v2+ (right now it says just GPL, which according to GPL itself
means any GPL). Decoration clients will come later.
CCMAIL: kwin@kde.org
svn path=/trunk/KDE/kdebase/workspace/; revision=742302
2007-11-27 19:40:25 +00:00
Rivo Laks
f4600f4b3f
Properly initialize Scene::Window pointers in EffectWindow objects.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=739644
2007-11-21 13:36:58 +00:00
Luboš Luňák
ff2d52e933
Given that Plasma and KRunner now (again, and maybe again not ultimately,
...
but whatever) default to ARGB visual if available, it's better to turn off
compositing if no GLX visual is found for depth 32.
CCBUG: 152595
svn path=/trunk/KDE/kdebase/workspace/; revision=739261
2007-11-20 19:04:08 +00:00
Luboš Luňák
6c47fc8322
Before destroying a current context, set some other current context (even none).
...
Fixes crashes with Intel.
svn path=/trunk/KDE/kdebase/workspace/; revision=731410
2007-10-31 16:28:59 +00:00
Luboš Luňák
6daf4d3ec8
Add few missing glBindTexture() calls.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=726337
2007-10-17 14:54:24 +00:00
Rivo Laks
aa0e5c7773
Dynamically load some of the used GLX symbols and make sure they exist before
...
initing gl mode.
svn path=/trunk/KDE/kdebase/workspace/; revision=721561
2007-10-05 14:10:13 +00:00
Rivo Laks
fc2b630b5c
Use glXMakeCurrent() instead of glXMakeContextCurrent() (which is only available in glx >= 1.3)
...
svn path=/trunk/KDE/kdebase/workspace/; revision=720151
2007-10-02 14:57:15 +00:00
Rivo Laks
75e62eefa5
Apply lod bias only to the window texture
...
svn path=/trunk/KDE/kdebase/workspace/; revision=717334
2007-09-26 16:38:32 +00:00
Luboš Luňák
bdaee4e99f
mTarget is not set at this point yet, so this gives opengl error.
...
Is it ok like this or does glTexEnv() require the texture to be bound?
CCMAIL: rivolaks@hot.ee
svn path=/trunk/KDE/kdebase/workspace/; revision=716886
2007-09-25 13:53:36 +00:00
Luboš Luňák
8d69535933
Add opengl debug checks, so that I don't have to add them everytime I need them.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=716883
2007-09-25 13:42:20 +00:00
Luboš Luňák
e6069e9cf6
Arghl. Again a stupid bug caused by float having poor precision.
...
Reverting r700026 and changing floats to doubles again. I'd probably like
to change even the ones interfacing with OpenGL which I've left for now.
svn path=/trunk/KDE/kdebase/workspace/; revision=707987
2007-09-03 15:00:43 +00:00
Rivo Laks
ae4bc5c53d
- Call GLTexture ctor
...
- Adjust texture lod bias after texture's been created (it's not created in init())
svn path=/trunk/KDE/kdebase/workspace/; revision=704983
2007-08-26 19:47:18 +00:00
Rivo Laks
a7ab423f93
Use texture lod bias when available to make trilinear-filtered windows look a bit sharper
...
svn path=/trunk/KDE/kdebase/workspace/; revision=704372
2007-08-24 18:45:08 +00:00
Luboš Luňák
d846a1e8a9
Use always float as the floating point type for compositing
...
(http://lists.kde.org/?l=kwin&m=118493073424327&w=2 ).
svn path=/trunk/KDE/kdebase/workspace/; revision=700026
2007-08-14 15:22:23 +00:00
Luboš Luňák
5a50381e1f
Move the shader used for painting to WindowPaintData, as it's
...
more related to one painting than to a window.
svn path=/trunk/KDE/kdebase/workspace/; revision=698576
2007-08-10 11:26:58 +00:00
Laurent Montel
994c800d79
Adapt to new KWarning/kFatal/kDebug api
...
svn path=/trunk/KDE/kdebase/workspace/; revision=695877
2007-08-03 06:59:24 +00:00
Luboš Luňák
ac42ba0b4f
A simple solution for alpha channel hacks - ignore them :).
...
The 'ignore ARGB visuals' option from Kompmgr probably doesn't make
much sense, those (usually old) apps can be run with XLIB_SKIP_ARGB_VISUALS=1 set.
Also remove the alpha clear hack used for decorations - I think decorations
instead should be fixed not to "unintentionally" have alpha set.
svn path=/trunk/KDE/kdebase/workspace/; revision=689916
2007-07-19 14:23:11 +00:00
Luboš Luňák
22c8626868
Add a TODO note.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=689904
2007-07-19 12:53:14 +00:00
Luboš Luňák
e1c5f18414
Separate rendering for decoration and window contents, they can have
...
different opacity (opacity only for decoration option).
svn path=/trunk/KDE/kdebase/workspace/; revision=689855
2007-07-19 10:07:49 +00:00
Luboš Luňák
ea944065c7
Arghl, this is not static const, it changes.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=689136
2007-07-17 18:14:17 +00:00
Luboš Luňák
f1108dd13a
Let's say the copy buffer hack for old nvidia drivers is not necessary these days.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=689095
2007-07-17 16:01:07 +00:00
Luboš Luňák
7b054df213
More debug info about possible initialization failures.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=688960
2007-07-17 10:38:12 +00:00
Stephan Kulow
19d0dab807
init it with something. Even though it looks like it should
...
rather continue? (CID 3919)
svn path=/trunk/KDE/kdebase/workspace/; revision=688152
2007-07-15 08:13:04 +00:00
Philip Falkner
1fcb1967fe
Zack's receent patch to Qt defaulting to ARGB visuals where possible
...
exposed a bug in our (ab)use of QX11Info::appDepth(). Make sure that
our buffers match the depth of the root window.
Thanks to Fredrik for the hint about DefaultDepth().
svn path=/trunk/KDE/kdebase/workspace/; revision=686998
2007-07-12 16:50:52 +00:00
Luboš Luňák
5faa397849
Vertex redesign - redo the way windows are split into smaller parts
...
for use in effects (and not only). Now a list of window quads (=window areas)
is created at the beginning of the paint pass, prepaint calls can modify
the split itself (i.e. divide it into more parts). The actual paint calls
can then modify these quads (i.e. transform their geometry). This will allow
better control of how the split is done and also allow painting e.g. only
the decoration differently. Still work in progress, but it works.
Also pass data to prepaint functions in a struct, as there is
already quite a number of them.
svn path=/trunk/KDE/kdebase/workspace/; revision=684893
2007-07-07 14:01:32 +00:00
Philip Falkner
c2ff6a4d7a
Make sure to unbind the texture in tfp_mode when the underlying pixmap
...
is discarded. Windows that have previously been mapped and unmapped now
update properly when mapped again.
svn path=/trunk/KDE/kdebase/workspace/; revision=683977
2007-07-05 19:59:55 +00:00
Luboš Luňák
cdb2d046c3
Always rebinding should not make sense anymore.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=677309
2007-06-18 21:24:01 +00:00
Luboš Luňák
4040e9be58
Add a hack to make it work with XGL.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=677300
2007-06-18 21:14:18 +00:00
Luboš Luňák
d9583cd3f6
Option for strict binding: kwinrc:Translucency:GLStrictBinding .
...
Non-nvidia users will probably need it set to true with TFP.
svn path=/trunk/KDE/kdebase/workspace/; revision=676673
2007-06-17 12:17:03 +00:00
Luboš Luňák
9c31c4555c
I apparently misunderstood the semantics of texture_from_pixmap a bit - rebind
...
only when the compositing pixmap changes (as in: a new one), not when its contents
change. This finally makes TFP faster than SHM (70% vs 45% of non-composited
performance) and should about match Compiz/Beryl. After this change also strict
binding may finally make sense.
svn path=/trunk/KDE/kdebase/workspace/; revision=676667
2007-06-17 12:02:16 +00:00
Rivo Laks
424f906ab2
- Add optional color argument to renderGLGeometry() functions. If specified, it's used as vertex colors
...
array when rendering.
- Rearrange some renderGLGeometry() parameters.
- Don't use opengl arrays and glDrawArrays() when rendering a small number of vertices since in this
case overhead of enabling/disabling the array is too big. Use immediate mode instead in such case.
svn path=/trunk/KDE/kdebase/workspace/; revision=675467
2007-06-14 10:05:51 +00:00
Luboš Luňák
acf4e9ce8e
Work around gcc-3.3.3's problem with resolving namespaced symbols.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=673984
2007-06-11 14:35:09 +00:00
Martin Koller
240b663df8
make compile on gcc-3.3.3
...
svn path=/trunk/KDE/kdebase/workspace/; revision=673195
2007-06-09 10:48:12 +00:00
Luboš Luňák
51107c77b7
We don't use stencil or depth buffer, so best configs are without those.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=673164
2007-06-09 07:08:30 +00:00
Luboš Luňák
f089923fe2
Sets best values found so far only if the config passes all checks, part II.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=673163
2007-06-09 07:06:11 +00:00
Luboš Luňák
dce6be54ca
Fix pixmap leak with strict binding.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=673154
2007-06-09 06:27:22 +00:00
Luboš Luňák
de8fa6c883
Clean up also the overlay window on failure.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=669838
2007-05-30 15:09:06 +00:00
Luboš Luňák
1caa3f95ed
Properly check for all needed extensions and handle gracefully absence.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=669827
2007-05-30 14:22:09 +00:00
Luboš Luňák
94bbce020a
Sets best values found so far only if the config passes all checks.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=669782
2007-05-30 12:01:34 +00:00
Luboš Luňák
fdf4645013
Remove unnecessary calls to initDrawableConfigs().
...
svn path=/trunk/KDE/kdebase/workspace/; revision=669778
2007-05-30 11:44:16 +00:00
Luboš Luňák
fe3e66deb3
No ceilf().
...
BUG: 145776
svn path=/trunk/KDE/kdebase/workspace/; revision=667286
2007-05-22 12:07:19 +00:00
Philip Falkner
630f5793dc
Update SHM mode.
...
For 16bpp pixmaps, we use GL_RGB and GL_UNSIGNED_SHORT_5_6_5 with
glTex(Sub)Image2D, which means that SHM mode works with 16bpp X
servers.
Also, only create one XShmPixmap per damaged pixmap, instead of one
per (optimised) damage rectangle. Now we can use GL_RGB textures for
24bpp pixmaps, just like fallback mode does and tfp mode can.
svn path=/trunk/KDE/kdebase/workspace/; revision=659274
2007-04-29 21:22:49 +00:00
Luboš Luňák
f52b8e48cd
branches/work/kwin_composite becomes new trunk kwin.
...
svn path=/trunk/KDE/kdebase/workspace/; revision=659202
2007-04-29 17:35:43 +00:00
Luboš Luňák
2b7e1f4993
Remove kwin, kwin_composite will become new trunk kwin, missing merges
...
from trunk will be merged in.
svn path=/trunk/KDE/kdebase/workspace/; revision=659200
2007-04-29 17:34:49 +00:00
Luboš Luňák
cd98bc12d5
Shared implementation of rendering gl geometry.
...
svn path=/branches/work/kwin_composite/; revision=656516
2007-04-21 16:02:19 +00:00
Rivo Laks
cc1a7a9eca
Add GLRenderTarget class.
...
The render target is used to render the scene (or part of it) onto texture. This texture can then be used
e.g. to do some postprocessing.
Demo effect coming soon.
Move checkGLError() to kwineffects.*
Add GLTexture ctor which takes width and height and creates an empty texture (to be used with
GLRenderTarget to render onto it)
svn path=/branches/work/kwin_composite/; revision=655489
2007-04-18 15:22:13 +00:00
Rivo Laks
0353f3376e
Make effects actual plugins, so it's possible to load them on runtime.
...
There's also a kwineffects library now, containing the effects API, which makes it possible to write
third-party effects.
API isn't complete yet and for now just two effects have been converted but I'm working on it :-)
svn path=/branches/work/kwin_composite/; revision=652226
2007-04-10 13:02:08 +00:00
Luboš Luňák
e3b865cd5f
namespace KWinInternal -> KWin - shorter typing of names in gdb, yay
...
svn path=/branches/work/kwin_composite/; revision=650770
2007-04-05 12:07:35 +00:00
Luboš Luňák
8b5b40e4e8
Shadows. Right not it's only flat black rectangle, but otherwise
...
everything should work.
svn path=/branches/work/kwin_composite/; revision=646315
2007-03-25 10:48:07 +00:00
Luboš Luňák
81fdcfd20b
Beryl has moved to git.
...
svn path=/branches/work/kwin_composite/; revision=645292
2007-03-22 08:38:30 +00:00
Philip Falkner
aa6d8eabc5
Add GLTexture class. This is a convenient wrapper around managing an OpenGL texture, as well as loading an image into it. Includes support for loading from QImage, QPixmap, and a file. Defaults to a GL_TEXTURE_2D target, and will scale image if necessary.
...
Also add SceneOpenGL::Texture class, based on GLTexture. Optimised for SceneOpenGL::Window, this adds support for loading from an X Pixmap, as well as taking advantage of texture_from_pixmap/shm when available. Automatically detects what texture target should be used, so be sure to enableUnnormalizedTexCoords() before painting.
Make SceneOpenGL::Window, BoxSwitchEffect, and ExplosionEffect use the new classes.
svn path=/branches/work/kwin_composite/; revision=645125
2007-03-21 18:14:09 +00:00
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
f6ad1881e1
Support for window thumbnails.
...
svn path=/branches/work/kwin_composite/; revision=640344
2007-03-07 17:50:33 +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
Luboš Luňák
43d393429d
A window can be trasformed also by transforming the whole screen.
...
svn path=/branches/work/kwin_composite/; revision=628601
2007-01-30 16:36:53 +00:00
Luboš Luňák
409ceae7ff
SHM does not support all color depths.
...
svn path=/branches/work/kwin_composite/; revision=628226
2007-01-29 15:22:29 +00:00
Luboš Luňák
2324e92b4e
The workaround with explicitly asking for texture target with tfp
...
doesn't seem to be necessary.
svn path=/branches/work/kwin_composite/; revision=628209
2007-01-29 14:32:20 +00:00
Luboš Luňák
e0ed5d5f3f
Move raster position relatively using glBitmap() rather
...
than using glRasterPos2f() - the latter causes drawing
artefacts at the bottom screen edge with some gfx cards
svn path=/branches/work/kwin_composite/; revision=627525
2007-01-26 22:50:31 +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
Luboš Luňák
e5f5ecf22e
Handle a fixme.
...
KWin's debug area is 1212.
CCMAIL: Rivo Laks <rivolaks@hot.ee>
svn path=/branches/work/kwin_composite/; revision=626743
2007-01-24 14:26:04 +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
Philip Falkner
e3cf0dd455
Move window_pix into Toplevel, allowing the backing pixmap to be kept even after a window is unmapped.
...
This is needed for effects to make use of unavailable windows, such as when closing a window.
svn path=/branches/work/kwin_composite/; revision=622777
2007-01-12 23:21:36 +00:00
Luboš Luňák
4607cab829
Config option for whether zooming should be smooth or fast.
...
svn path=/branches/work/kwin_composite/; revision=610138
2006-12-03 13:38:57 +00:00
Luboš Luňák
6bf5d12108
Zoom effect, i.e. magnifying glass. The zoom is hardcoded
...
for now.
svn path=/branches/work/kwin_composite/; revision=610134
2006-12-03 13:36:40 +00:00
Luboš Luňák
6a66250620
Better synchronization of refresh rate and vsyncing,
...
patch by Philip Falkner.
svn path=/branches/work/kwin_composite/; revision=610110
2006-12-03 13:29:14 +00:00
Luboš Luňák
2fa320c9b8
Clearing of the whole buffer is not necessary anymore, at least not
...
in the simple cases. Improves drawing performance.
svn path=/branches/work/kwin_composite/; revision=608458
2006-11-27 16:16:34 +00:00
Luboš Luňák
277449f545
Ungrab X before doing the double-buffering swap, as that one
...
may involve waiting to sync to vblank.
svn path=/branches/work/kwin_composite/; revision=607501
2006-11-24 21:28:52 +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
8bbf28ed9c
It seems the fallback mode doesn't work with direct rendering.
...
svn path=/branches/work/kwin_composite/; revision=607241
2006-11-23 20:21:27 +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
55015eb927
Actually detect if the rendering is really direct.
...
svn path=/branches/work/kwin_composite/; revision=606789
2006-11-21 20:11:40 +00:00
Luboš Luňák
3e534d7d75
Convert to OpenGL coordinates.
...
svn path=/branches/work/kwin_composite/; revision=606378
2006-11-20 08:39:48 +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
8100c40188
Remove unused code.
...
svn path=/branches/work/kwin_composite/; revision=606261
2006-11-19 20:02:25 +00:00
Luboš Luňák
186fded142
Use glPush/PopAttrib() instead of glIs*().
...
svn path=/branches/work/kwin_composite/; revision=605476
2006-11-16 21:40:10 +00:00
Luboš Luňák
8e257f251f
Use kwin debug area.
...
svn path=/branches/work/kwin_composite/; revision=605290
2006-11-16 09:05:40 +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
0bd186ec72
Support GLX 1.2 (no glXCreateWindow() functionality).
...
svn path=/branches/work/kwin_composite/; revision=604877
2006-11-14 13:18:53 +00:00
Luboš Luňák
1be2c4ed32
Detect and check GLX version/extensions.
...
svn path=/branches/work/kwin_composite/; revision=604805
2006-11-14 11:52:20 +00:00
Luboš Luňák
9a706bea89
Remove one more part of direct OpenGL drawing to the root window.
...
svn path=/branches/work/kwin_composite/; revision=604021
2006-11-11 09:14:38 +00:00
Luboš Luňák
340e64ab51
With the overlay fix double-buffering now works too.
...
Also dump drawing directly into the root window, OpenGL normally
clips the root window, so nothing is drawn. NVidia has "DisableGLXRootClipping",
but there's no way to detect that and there's still the non-db mode.
svn path=/branches/work/kwin_composite/; revision=604019
2006-11-11 09:11:51 +00:00
Luboš Luňák
60d343f1d7
A great idea from Cedric Borgese: Instead of transforming
...
the OpenGL scene to match X coordinate system, adjust it
directly using glOrtho().
svn path=/branches/work/kwin_composite/; revision=603929
2006-11-10 20:27:44 +00:00
Luboš Luňák
001ddfacbd
Remove requiring GLX_DRAWABLE_TYPE to include GLX_PIXMAP_BIT,
...
ATI seems to be buggy and it doesn't seem to be really necessary.
svn path=/branches/work/kwin_composite/; revision=603922
2006-11-10 20:01:24 +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
1cc603cf75
Abort if there are problems with setting up OpenGL context.
...
svn path=/branches/work/kwin_composite/; revision=603712
2006-11-09 20:38:14 +00:00
Luboš Luňák
aeafa63a94
Move some OpenGL code to glutils.* .
...
Add support for changing window brightness.
Add DialogParent effect that makes windows that are unaccessible because
of modal dialogs darker.
Patch by Rivo Laks.
svn path=/branches/work/kwin_composite/; revision=603384
2006-11-08 19:10:07 +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
368c97ac96
Debug about visuals used.
...
svn path=/branches/work/kwin_composite/; revision=603143
2006-11-07 23:21:08 +00:00
Luboš Luňák
8d777cb1f7
Double-buffering using OpenGL doesn't work and I have no idea why.
...
svn path=/branches/work/kwin_composite/; revision=603138
2006-11-07 22:45:56 +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
f631e57a01
Bind the texture also in the global context and some opengl<->x
...
synchronizing.
svn path=/branches/work/kwin_composite/; revision=603127
2006-11-07 22:11:53 +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
2150cae758
svn revert r603055, it's nonsense
...
svn path=/branches/work/kwin_composite/; revision=603098
2006-11-07 20:33:52 +00:00
Luboš Luňák
e99a883a81
Require configs with no caveats. Manual replacement for glXChooseFBConfig()
...
is really needed :-/.
svn path=/branches/work/kwin_composite/; revision=603064
2006-11-07 17:51:15 +00:00
Luboš Luňák
f63e9e2b5b
Fix last commit.
...
svn path=/branches/work/kwin_composite/; revision=603058
2006-11-07 17:33:53 +00:00
Luboš Luňák
6e3f0f7bbe
Blah, destination drawable doesn't need alpha channel.
...
svn path=/branches/work/kwin_composite/; revision=603056
2006-11-07 17:31:34 +00:00
Luboš Luňák
5b7ef47746
Check root visual also when trying to find non-db config.
...
svn path=/branches/work/kwin_composite/; revision=603055
2006-11-07 17:27:58 +00:00
Luboš Luňák
2cd4ab9034
Fix Beryl SVN URL.
...
svn path=/branches/work/kwin_composite/; revision=601726
2006-11-04 08:11:01 +00:00
Luboš Luňák
8188d48bea
Include urls for the opengl docs.
...
svn path=/branches/work/kwin_composite/; revision=601302
2006-11-02 20:21:34 +00:00
Luboš Luňák
245df12129
But that doesn't compile here. According to http://www.opengl.org/registry/ABI/
...
the right header for GLX extensions is GL/glxext.h . If it still doesn't
compile somewhere, it probably needs conditional compilation.
svn path=/branches/work/kwin_composite/; revision=601182
2006-11-02 12:57:10 +00:00
Tim Beaulen
4e34c8f0b3
Build
...
The errors I got:
[ 28%] Building CXX object workspace/kwin/CMakeFiles/kdeinit_kwin.dir/scene_opengl.o
/home/kde4dev/kde/src/kdebase/workspace/kwin/scene_opengl.cpp:162: error: 'GLX_BIND_TO_TEXTURE_RGBA_EXT' was not declared in this scope
/home/kde4dev/kde/src/kdebase/workspace/kwin/scene_opengl.cpp: In member function 'void KWinInternal::SceneOpenGL::Window::bindTexture()':
/home/kde4dev/kde/src/kdebase/workspace/kwin/scene_opengl.cpp:500: error: 'GLX_FRONT_LEFT_EXT' was not declared in this scope
/home/kde4dev/kde/src/kdebase/workspace/kwin/scene_opengl.cpp:506: error: 'GLX_TEXTURE_FORMAT_EXT' was not declared in this scope
/home/kde4dev/kde/src/kdebase/workspace/kwin/scene_opengl.cpp:506: error: 'GLX_TEXTURE_FORMAT_RGBA_EXT' was not declared in this scope
/home/kde4dev/kde/src/kdebase/workspace/kwin/scene_opengl.cpp:512: error: 'GLX_Y_INVERTED_EXT' was not declared in this scope
/home/kde4dev/kde/src/kdebase/workspace/kwin/scene_opengl.cpp:515: error: 'GLX_FRONT_LEFT_EXT' was not declared in this scope
/home/kde4dev/kde/src/kdebase/workspace/kwin/scene_opengl.cpp: In member function 'void KWinInternal::SceneOpenGL::Window::discardTexture()':
/home/kde4dev/kde/src/kdebase/workspace/kwin/scene_opengl.cpp:568: error: 'GLX_FRONT_LEFT_EXT' was not declared in this scope
make[2]: *** [workspace/kwin/CMakeFiles/kdeinit_kwin.dir/scene_opengl.o] Error 1
make[1]: *** [workspace/kwin/CMakeFiles/kdeinit_kwin.dir/all] Error 2
make: *** [all] Error 2
kde4dev@localhost ~/kde/src/k
svn path=/branches/work/kwin_composite/; revision=601177
2006-11-02 12:06:47 +00:00
Luboš Luňák
12731982bb
Does compositing/opengl work with gfx cards other than nvidia?
...
svn path=/branches/work/kwin_composite/; revision=600732
2006-10-31 15:28:38 +00:00
Luboš Luňák
bf0256bf1b
Fix compile.
...
svn path=/branches/work/kwin_composite/; revision=600688
2006-10-31 13:20:51 +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
05021ecedb
Fix crash with unmanaged windows.
...
svn path=/branches/work/kwin_composite/; revision=598783
2006-10-24 15:54:52 +00:00
Luboš Luňák
548eb09a74
Move shared code to base class.
...
svn path=/branches/work/kwin_composite/; revision=598752
2006-10-24 13:38:31 +00:00
Luboš Luňák
189ca6c3a2
Fix window scaling (apply scale before translating).
...
svn path=/branches/work/kwin_composite/; revision=598743
2006-10-24 12:50:22 +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
daa8f7eccc
Fix texture mapping.
...
svn path=/branches/work/kwin_composite/; revision=597757
2006-10-21 15:06:09 +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
066a4583d7
Switch back to modelview matrix mode.
...
svn path=/branches/work/kwin_composite/; revision=595801
2006-10-15 18:00:52 +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
fef8c89b93
Don't bind the texture if not necessary.
...
svn path=/branches/work/kwin_composite/; revision=595561
2006-10-14 20:50:24 +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
5de53a53e6
A new way of adjusting opacity of non-alpha windows from glcompmgr,
...
the alpha way doesn't work with TFP for some reason.
svn path=/branches/work/kwin_composite/; revision=594941
2006-10-12 21:12:13 +00:00
Luboš Luňák
259cf5e401
Use glXGetProcAddress().
...
svn path=/branches/work/kwin_composite/; revision=594141
2006-10-10 09:16:57 +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
4cbf58f8ea
Small fixes.
...
svn path=/branches/work/kwin_composite/; revision=593721
2006-10-08 20:30:02 +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
4a18e30518
Use the X way of handling ARGB windows with decorations
...
here as well.
svn path=/branches/work/kwin_composite/; revision=593457
2006-10-07 21:22:24 +00:00
Luboš Luňák
9941ae2cea
Windows with only shaped decorations are also shaped
...
from the compositing point of view.
svn path=/branches/work/kwin_composite/; revision=593455
2006-10-07 21:21:45 +00:00
Luboš Luňák
b168c35384
Don't cache window pixmap, it's used only after it
...
changes.
svn path=/branches/work/kwin_composite/; revision=593453
2006-10-07 21:20:23 +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
db41dd99cd
Finally found some way how to handle together ARGB windows
...
and RGB decorations, although there's probably a better
way than this.
svn path=/branches/work/kwin_composite/; revision=593446
2006-10-07 21:16:38 +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
fb73a2070a
Fix compile.
...
svn path=/branches/work/kwin_composite/; revision=591156
2006-10-01 21:45:46 +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
b59701f608
Nicer handling of second phase painting.
...
svn path=/branches/work/kwin_composite/; revision=591144
2006-10-01 21:12:58 +00:00
Luboš Luňák
a283f9f9c0
Replace the opacity hack from glcompmgr with code from compiz.
...
svn path=/branches/work/kwin_composite/; revision=591143
2006-10-01 21:11:45 +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
f3119d2550
Some opengl error checking.
...
svn path=/branches/work/kwin_composite/; revision=590566
2006-09-30 13:37:28 +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