Commit Graph

102 Commits

Author SHA1 Message Date
2a41847aa6 Make xinerama mandatory
Fixes #116

Also tweaks the usage message a bit.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-18 21:05:12 +00:00
b2750b26e0 Rectangle kernels
Replace conv::size with conv::{w,h}.

Shadow kernels are still squares, though.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-17 21:58:43 +00:00
a826e0ce79 Window state tracking refactor
Window state tracking is basically the back bond of window fading. We
add a new enum field to the win struct to track the state of the window,
instead of using a set of boolean variables. We also remove the fading
callbacks, since it is only used for fading, so the potential of code
reuse is lost. And it makes the code slightly harder to understand.

Also fixed a problem that --no-fading-openclose is not behaving as
advertised (from my observation, enabling this flag disables fading
entirely, instead of just diabling it for open/close).

Also uses double for opacity everywhere internally. Use opacity_t only
when setting X opacity prop.

TODO: Remove win::*_last

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-17 16:37:28 +00:00
39faac0f83 Blacklist more glx.h prototypes just in case
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-09 00:52:45 +00:00
136ce7c9e8 Prevent GL/glx.h from defining prototypes
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-09 00:43:31 +00:00
7e9d1c6442 Condense GLX extension lookup
Put them all into one function, and move the function pointers out of
glx_session_t, making them global variables (because them don't change
after initialized). Remove the function pointer typedefs and replace
them with the ones in glxext.h

We also only lookup the functions once per a lifetime of compton.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-09 00:14:32 +00:00
343140f845 Reuse glx_has_extension for old backend
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-08 22:34:53 +00:00
fec43acfaa Add missing headers
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-07 22:47:42 +00:00
aa9c439cc6 Improve the interface of glx_find_fbconfig
Remove the dependence of xcb_render types in glx.h

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-07 00:04:43 +00:00
f19766f15a Fix FBConfig cost calculation
Double buffering only doubles the color buffer, not the depth and
stencil.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-03 19:33:31 +00:00
2263bab2ff Consider buffer size and double buffering as well
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-03 19:15:30 +00:00
519bf8500b Prefer FBConfig with smaller depth + stencil buffer
Reduce GPU memory usage to what it was before fix-fbconfig.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-03 19:06:33 +00:00
39b612a8a4 Delete irrelevant comments
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-03 18:53:28 +00:00
b1d8687b31 Add copyright notice to backend/**
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-03 18:47:36 +00:00
8922312e42 Refactor FBConfig lookup
Background: To bind a Xorg window content to a OpenGL FBConfig, which
has to match the color format the Xorg window is using.

Previously, compton just find a FBConfig that has the same depth. This
led to chjj/compton#477, which has been fixed by a ugly hack.

The commit refactor the lookup mechanism to take as much into
consideration as we reasonably can. Hopefully preventing similar
breakages in the future.

Also, some code sharing between the old and new glx backend.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-03 18:41:47 +00:00
7ac351e5b5 Move some default_* functions to backend_common.c
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-03 18:41:02 +00:00
17c8517abc Most of the x_* functions don't need session_t
Replace session_t parameter with xcb_connection_t if that's the only
thing needed.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-03 15:59:31 +00:00
8371d6a0b7 Replace glDrawBuffers with glDrawBuffers
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-02 19:30:07 +00:00
4e14eec2ba Remove a redundant glEnd in glx_dim_dst
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-29 22:27:05 +00:00
198dcdb987 gl_common: fix coordinate mismatch
Xorg uses top left as origin, OpenGL uses lower left. So we need to flip
the y axis, and make sure we are using the right points as origin of
windows.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-28 01:14:41 +00:00
3b21365e94 gl_common: fix rendering
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-28 00:48:26 +00:00
6e454adff1 glx (new backend): Add some missing functions
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-28 00:04:01 +00:00
8c71f3fcbe Move some macros around
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-27 23:57:43 +00:00
5364c8ac9b Add backend_info_t::max_buffer_age
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-27 19:45:40 +00:00
d92a546beb Fix includes and typos in new backends 2019-01-27 19:34:26 +00:00
22f0d10c65 Make backend_info_t::buffer_age optional
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-27 19:32:07 +00:00
b50f15c835 Adapt paint_all_new to new interface
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-27 19:29:02 +00:00
e898526afb Add glx_backend to backend_list
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-27 19:28:15 +00:00
99b3c4575f Fix handling of region == NULL in paint_all_new
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-27 18:21:42 +00:00
061dd8e52e Reuse some code from the new gl backend
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-27 18:16:28 +00:00
6c6dd6ad7d Remove unused session_t argument from gl_has_extension
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-26 23:08:32 +00:00
031356069a new glx: Add glx_present
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-26 18:01:24 +00:00
e80ff8530e Make buffer age not glx specific
Buffer age is not a glx specific concept. xrender backend can have
buffer age too, if double buffering is used (required if we want to use
Present). So, make buffer age a generic concept in compton is required
for further backend improvements.

Moved buffer age based damage aggragation out of glx as well.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-26 15:07:09 +00:00
f649a949e2 Even more includes
Expand the modulemap to cover some of the system headers too.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-20 22:09:22 +00:00
916e23861a Improve the header includes, cont'd
Also check in the modulemap file, and add a option to build with clang's
-fmodules.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-20 17:10:06 +00:00
1e0deea57f Improve the include situation
Slightly clean up header inclusion with the help of clang's module system.
It's better for files to include the things you need directly.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-18 23:30:44 +00:00
72e3468694 Add backend_info_t::buffer_age
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-08 21:32:54 +00:00
82e8b09d56 Move paint_all_new to backend.c
Fix build with -Dnew_backends=false. And more build test for this case.

Fixes #83

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-02 20:36:33 +00:00
6d3ea3564b Implement vsync for the new xrender backend
We use the Present extension for that, since it is the best option we
have.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-01 14:59:56 +00:00
428c24a6fa Speed up shadow generation for small windows
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-01 11:35:59 +00:00
3686bf7a33 Use functions in backend/backend_common.c
Build backend_common.c even when new_backend=false.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-01 11:01:47 +00:00
4aeffa36b8 Refactor shadow generation
Trying to make the code easier to understand. The logic is unchanged.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-01 10:54:21 +00:00
edb1139507 Add some comments to backend.h
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-31 23:30:45 +00:00
86713c8170 Add make_shadow and paint_all_new to backend_common.c
Also made make_shadow private in render.c

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-31 14:30:58 +00:00
0b94bde004 Remove unused variable in backend/xrender.c
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-31 14:08:35 +00:00
6226ab1228 Fix memory leak in backend/xrender.c
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-31 08:22:57 +00:00
4039a6db64 Remove all use of psglx from backend/glx.c
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-31 07:37:49 +00:00
a2022661e6 Move glx_init_blur to gl_common.c
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-31 07:18:38 +00:00
8629fee78f Fix some static analyzer complains in glx.c
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-31 06:54:59 +00:00
f322bd4a53 Remove backend/gl/glx.h
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-31 01:53:25 +00:00