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
Yuxuan Shui
a2d0d5c826
xrender: move into its own folder
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:31 +01:00
Yuxuan Shui
bd4c242015
win: split struct win
...
Currently compton handles window creation event by immediately query all
the information it needs and create a window struct with that
information. However, this is prone to race conditions.
In the future, we want to react to window creation event by creating a
placeholder in the window stack, and only query window information in a
critical section where the X server is grabbed by us.
This commit split struct win into two struct, one as placeholder, the
other for holding actual window information.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:29 +01:00
Yuxuan Shui
abeeb36bb2
x: wrap xcb_generate_id to check for errors
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:28 +01:00
Yuxuan Shui
3935e97e69
gl_common: bump GL to 3.30
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:27 +01:00
Yuxuan Shui
6e8a86d415
gl_common: use vao
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:27 +01:00
Yuxuan Shui
ffc9c32b5e
gl_common: update gl_compose to core profile
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:27 +01:00
Yuxuan Shui
f08004a448
gl_common: update gl_blur to core profile
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:27 +01:00
Yuxuan Shui
599e8b6600
gl_common: update gl_fill to core profile
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:27 +01:00
Yuxuan Shui
233edbd1c3
gl_common: fix implicit conversion warnings
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:26 +01:00
Yuxuan Shui
7c2edd9d63
gl_common: remove some fixed function glEnable/Disable
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:26 +01:00
Yuxuan Shui
d64aab7d40
gl_common: add vertex shader
...
Also use an attribute for the texture coordinates.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:26 +01:00
Yuxuan Shui
0733f7540f
Silence unused variable warning in release build
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:26 +01:00
Yuxuan Shui
0037b7e5fb
Eliminate implicit conversions
...
Use explicit conversions everywhere. Adding bounds check assertions when
necessary.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2019-05-21 20:15:25 +01:00