Yuxuan Shui
c7bb6b0fe3
Clarify some of the backend interface functions
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-26 18:32:39 +01:00
Yuxuan Shui
e3b93a4f84
Additional blur artifact fix
...
There were still some artifacts left when multiple semi-transparent
windows are stacked on top of each other.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-26 18:28:22 +01:00
Yuxuan Shui
0109fe181e
gl_common: fix memory leak in _gl_fill
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-26 03:53:24 +01:00
Yuxuan Shui
357968c815
options: remove a spurious warning
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-26 02:44:42 +01:00
Yuxuan Shui
d37a4136ee
new xrender: implement partial updates
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-26 02:31:45 +01:00
Yuxuan Shui
5a861d5d6a
gl_common, new glx: implement partial updates
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-26 02:22:05 +01:00
Yuxuan Shui
06dba4b196
backend: do partial updates
...
Although the functionality is not implemented by any backends yet.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-26 02:05:06 +01:00
Yuxuan Shui
f86d6b7cbd
backend: update present interface for partial updates
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-26 02:05:00 +01:00
Yuxuan Shui
bc3ca92e04
gl common: render into a texture
...
Instead of rendering into the back buffer, render into a intermediate
texture.
This is a preparation for partial screen updating, which is necessary to
eliminate artifacts visible when using blur and use-damage together.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-26 01:20:11 +01:00
Yuxuan Shui
3d84f3f92a
gl_common: fix type mismatch when calling glVertexAttribPointer
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-26 01:19:55 +01:00
Yuxuan Shui
bb756b2238
Fix compiler warning about unused parameters
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-25 02:27:02 +01:00
Yuxuan Shui
62878d7c57
gl_common: use a dummy pass to unify blur code paths
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-25 00:36:42 +01:00
Yuxuan Shui
4c9ded837f
new backend: add interface for query blur size
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-24 23:27:51 +01:00
Yuxuan Shui
ad30b4f826
gl_common: use texelFetch
...
This relieves us from the need to normalize texture coordinates.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-14 16:21:22 +01:00
Yuxuan Shui
8a794e0ce1
Improve the compatibility of gl_has_extension
...
Fix infinite loop when running under RenderDoc
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-13 19:30:26 +01:00
Yuxuan Shui
372f4f816e
new backend: ignore window tranparency info from the backend
...
Doing this forces compton to blur every windows' background.
However, doing this can be beneficial, we will figure out a way
to do this properly in the future.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-13 12:44:41 +01:00
Yuxuan Shui
426043baa7
Improve transparency detection for blur
...
Previously, only the WM windows (window manager usually reparents the
application windows under its own window so it can manage them) are
checked for alpha channels. Some of the window managers (e.g. awesome)
acquire alpha channels for all of the WM windows, whether the underlying
application windows have alpha channel or not.
With this change, the application windows are also checked for alpha
channels. If a WM window has alpha but its child doesn't, only the WM
frame will be considered to be semi-transparent. Thus preventing some
unnecessary blurring.
Closes #191
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-13 12:37:28 +01:00
Yuxuan Shui
4c460a7bd5
new xrender: fix black border around blurred area
...
Similar fix to 6d646b54 .
Also ping #50
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-07 19:49:23 +01:00
Yuxuan Shui
e62971a0c3
gl common: fix memory leak
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-07 19:09:15 +01:00
Yuxuan Shui
182a207afd
new xrender: fix offset when using multi-pass blur
...
Also makes the code a bit more readable by replacing stateful variables.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-07 18:55:20 +01:00
Yuxuan Shui
6d646b543f
new glx: fix black border around blurred areas
...
This is done by extending the blur area internally when process
blurring.
Ping: #50 , cause this fixes that problem but only when using the
experiemental backends.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-07 18:39:46 +01:00
Yuxuan Shui
0b0d896ffe
Add debug mode
...
When enabled, the result will be redirected to a window, and compton
won't take over the screen.
Makes debugging easier.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-07-07 16:20:00 +01:00
Yuxuan Shui
a52f95acd7
gl_common: fix misunderstanding of VAO
...
GL_ARRAY_BUFFER is not part of VAO state.
This shouldn't affect compton's behaviour at all, though.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-06-24 01:51:50 +01:00
Yuxuan Shui
85abdef765
gl_common: use explicit vertex attrib loction
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-06-24 01:34:12 +01:00
Yuxuan Shui
67f0ec773a
new backends: blur interface update
...
To prepare for different blur methods, the blur interface of backends
has been splitted into two parts.
Now to use blur, a blur context must be created first; then, the blur
method should be called with the blur context created.
Updated the existing backends to the new interface. Also implemented
handling of the new blur options.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-06-09 19:26:41 +01:00
Yuxuan Shui
1eba43f888
Rename blur kernel parameter types
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-06-09 12:57:23 +01:00
Yuxuan Shui
c1b2ce1fce
Update generate_blur_kernel to use abstract parameter type
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-06-09 12:44:32 +01:00
Yuxuan Shui
e16e592302
Move enum blur_method to backend.h
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-06-09 12:43:51 +01:00
Yuxuan Shui
1da726047a
new backend: don't assume center of blur kernel is 1
...
Also fill the center of parsed kernel with 1. This shouldn't change the
behavior of the old backends since they will modify the center of the
kernels.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-06-09 01:03:37 +01:00
Yuxuan Shui
f64ac97a91
Return kernel count from kernel generation functions
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-06-09 00:45:06 +01:00
Yuxuan Shui
2239181551
Properly implement gaussian blur kernel
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-06-08 23:56:47 +01:00
Yuxuan Shui
fa8faaf91d
Remember the number of blur kernels
...
Don't count the number of blur kernels everytime.
Fixes #188
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-06-07 22:21:06 +01:00
Yuxuan Shui
abb089e605
Lift the MAX_BLUR_PASS limit
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-06-07 07:04:50 +01:00
Yuxuan Shui
b947a45d71
backend_common: add blur kernel generation functions
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-06-06 06:56:21 +01:00
Yuxuan Shui
b9a3b67f9c
new backend: xrender: fix INVER_COLOR_ALL
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 22:15:38 +01:00
Yuxuan Shui
294aae11ff
Fix xrender APPLY_ALPHA
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:22:20 +01:00
Yuxuan Shui
3cabba6161
gl_common: don't use GL4 feature
...
glGetIntegerv(GL_NUM_EXTENSIONS) is only available since GL4.
(However glGetStringi(GL_EXTENSIONS) is available since GL3)
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:35 +01:00
Yuxuan Shui
2d50d32bf7
new backend: glx: multiply color in APPLY_ALPHA
...
Because we use pre-multiplied alpha.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:35 +01:00
Yuxuan Shui
80c7b2f7ec
new backend: glx: implement IMAGE_OP_APPLY_ALPHA
...
Slight change to the backend_operations::fill interface.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:35 +01:00
Yuxuan Shui
18b1fc95ff
new backend: glx: reduce code duplication
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:35 +01:00
Yuxuan Shui
45ead409b5
new backend: glx: fix off-by-1 in blur shader generation
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:35 +01:00
Yuxuan Shui
86f4d73c22
new backend: gl_common: add support for decoupling lazy copied images
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:35 +01:00
Yuxuan Shui
b91888b0a3
new backend: glx: trivial refactoring
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:34 +01:00
Yuxuan Shui
939f2fb602
common.h: general clean up
...
Remove unused functions and definitions. Move some macros into the files
they belong.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:34 +01:00
Yuxuan Shui
be673f93c6
backend: add interfaces for readiness reporting
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:33 +01:00
Yuxuan Shui
468fb637b6
new backends: xrender: fix memory leak
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:32 +01:00
Yuxuan Shui
8e5210cb9c
new backend: glx: use glFinish instead of glXWaitGL
...
The API document claims they achieve the same thing, apparently not.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:31 +01:00
Yuxuan Shui
c55088944a
new backend: glx: use glFinish/glXWaitGL if not on NVIDIA
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:31 +01:00
Yuxuan Shui
b35bfd07d1
backend: driver: fix string out-of-bound read
...
libxcb doesn't null terminate strings.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:31 +01:00
Yuxuan Shui
685a583f84
backend: add preliminary support for driver detection
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:31 +01:00