Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add kawase blur #120

Merged
merged 80 commits into from
Apr 17, 2023
Merged
Changes from 1 commit
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
cc5206a
Add kawase blur
ErikReider Mar 10, 2023
2918521
Use blur for tiled windows
ErikReider Mar 10, 2023
c4163f0
Added config options
ErikReider Mar 11, 2023
72244a3
Refactored framebuffer and stencil creation
ErikReider Mar 11, 2023
fec171c
Significantly improved blur damage. Still not fixed though
ErikReider Mar 14, 2023
9272552
Minor fixes
ErikReider Mar 20, 2023
6de7dc3
fix compile errors
WillPower3309 Mar 21, 2023
416148e
Fixed nitpick
ErikReider Mar 22, 2023
ef1a8fc
Fixed damage tracking issues
ErikReider Mar 23, 2023
76413e9
Clear damaged region before drawing to wlr buffer
ErikReider Mar 24, 2023
4c200ea
Fixed damage_ring bounds not being set, overflowing when expanding
ErikReider Mar 26, 2023
186cacf
Merge branch 'master' into blur
ErikReider Mar 27, 2023
c23efb4
Added blur to default config
ErikReider Mar 27, 2023
f01d7b7
Improved fx renderer logic and fixed damage debug flags not working
ErikReider Mar 27, 2023
75f4ff3
Fix segfault when there's no view surface
ErikReider Mar 28, 2023
03eaca4
Blur now renders per surface for each view (saved and regular buffers)
ErikReider Mar 28, 2023
7c07705
Added tiled optimization with blur_xray config option
ErikReider Mar 28, 2023
fef838b
Removed unused fx functions
ErikReider Mar 28, 2023
d01b4fa
Fixed blur with scaling
ErikReider Mar 28, 2023
0685a03
Fixed blur rendering for subsurfaces
ErikReider Mar 30, 2023
f5fec2f
Init fx_renderer per output
ErikReider Mar 30, 2023
2f00f96
Fixed optimization not updating on layershell destroy
ErikReider Mar 30, 2023
11b6e8e
addressed a couple of nits
WillPower3309 Mar 31, 2023
5263a24
created blur_parameters struct
WillPower3309 Mar 31, 2023
8cbbaa3
Added comments to effects buffers
ErikReider Mar 31, 2023
22f8892
Renamed fx_create/fx_release(_framebuffer)
ErikReider Apr 1, 2023
c0463cd
Only draw optimized blur when there are translucent windows open
ErikReider Apr 1, 2023
af1dc7d
Made blur and blur_xray only apply globally
ErikReider Apr 1, 2023
929aeff
Fix blur alpha blending
ErikReider Apr 1, 2023
5495438
Use empty opaque region if applied alpha through swayipc
ErikReider Apr 1, 2023
1599445
Fixed some output damage issues
ErikReider Apr 2, 2023
5a37165
Added back per-container blur
ErikReider Apr 2, 2023
162f2b2
Merge remote-tracking branch 'origin/master' into blur
WillPower3309 Apr 4, 2023
1846573
Merge branch 'blur' of github.com:WillPower3309/swayfx into blur
WillPower3309 Apr 4, 2023
4f059bd
Merge remote-tracking branch 'origin/master' into blur
WillPower3309 Apr 4, 2023
2d04042
rebase
WillPower3309 Apr 4, 2023
d325df9
Use refactored damage_ring bounds logic from upstream
ErikReider Apr 5, 2023
b85dd55
Rename scissor_output
ErikReider Apr 6, 2023
91c8ecf
Moved damage/render_whole_monitor logic into render.c
ErikReider Apr 6, 2023
6df9a6e
Moved fx_get_container_expanded_size into render.c
ErikReider Apr 6, 2023
240a966
Fixed blur_xray man page description mentioning per-window
ErikReider Apr 6, 2023
9498269
Remove unused damage pointer in fx_renderer.h
ErikReider Apr 6, 2023
0716d82
merged from master
WillPower3309 Apr 7, 2023
3329ede
removed unneeded version lines
WillPower3309 Apr 7, 2023
ec8141e
moved fx_texture and fx_framebuffer to fx_renderer folder
WillPower3309 Apr 7, 2023
f7086cf
Merge remote-tracking branch 'origin/master' into blur
WillPower3309 Apr 7, 2023
1e02650
Seperate non-gl blur functions and move them into render.c
ErikReider Apr 7, 2023
a7fd799
Removed use of glBindFramebuffer in render.c
ErikReider Apr 7, 2023
8ee7dda
removed some unneeded includes
WillPower3309 Apr 10, 2023
03afd85
updated config terminology
WillPower3309 Apr 10, 2023
0e4e926
updated fx_texture creation function name
WillPower3309 Apr 10, 2023
4fd1872
nits + cleanups
WillPower3309 Apr 10, 2023
72fb894
blur iterator optimization
WillPower3309 Apr 10, 2023
4984c4a
moved render blur to render_view
WillPower3309 Apr 11, 2023
0353d8a
fixed pointer style
WillPower3309 Apr 11, 2023
b244c23
Fixed blur not rendering when view->surface is NULL
ErikReider Apr 11, 2023
ba1f53f
Remove alpha todo comment
ErikReider Apr 11, 2023
4a8214f
Use render_texture in render_blur instead of using duplicate code
ErikReider Apr 11, 2023
b313152
minor cleanups
WillPower3309 Apr 12, 2023
db68f4a
cleaned up render_damage in render_blur
WillPower3309 Apr 12, 2023
5ceebad
optimized blur damage tracking
WillPower3309 Apr 12, 2023
e60e57a
moved render_blur back to render_surface_iterator and render_saved_view
WillPower3309 Apr 13, 2023
8f299e6
Damage whole output on blur config options change
ErikReider Apr 13, 2023
1ced65e
removed unneeded command includes
WillPower3309 Apr 13, 2023
661d74e
nits + pass surface scale
WillPower3309 Apr 13, 2023
0ec7b7c
cleaup
WillPower3309 Apr 13, 2023
cd865c3
added upstream TODO
WillPower3309 Apr 13, 2023
ad5a816
removed extraneous newline
WillPower3309 Apr 13, 2023
5acae5e
fixed resize issue, nits
WillPower3309 Apr 14, 2023
f1b6f1f
Fixed scaling issue
ErikReider Apr 14, 2023
92daace
Made should_blur_draw_optimize return bool
ErikReider Apr 14, 2023
5b73ac2
should_blur_draw_optimize() damage refactor
WillPower3309 Apr 15, 2023
1efa3f8
Only render blur if container wants blur
ErikReider Apr 15, 2023
ed346a5
Extend damage if any container wants blur/shadow
ErikReider Apr 15, 2023
72b8274
Fixed not being able to toggle blur_xray during runtime
ErikReider Apr 15, 2023
8c99126
set deco_data blur properly
WillPower3309 Apr 15, 2023
a7d6d5e
Don't extend damaged region if larger than monitor size
ErikReider Apr 15, 2023
fcdf13c
matching naming of other rendering functions
WillPower3309 Apr 16, 2023
eff5b81
Instead of not expanding damage if too big, limit damage size to moni…
ErikReider Apr 17, 2023
54d2c11
removed wlr_box_from_pixman_region32
WillPower3309 Apr 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion sway/desktop/render.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,16 @@ bool should_parameters_blur() {
return config->blur_params.radius > 0 && config->blur_params.num_passes > 0;
}

// TODO: contribute wlroots function to allow creating an box from a pixman_region32?
struct wlr_box wlr_box_from_pixman_region32(pixman_region32_t *region) {
return (struct wlr_box) {
.x = region->extents.x1,
.y = region->extents.y1,
.width = region->extents.x2 - region->extents.x1,
.height = region->extents.y2 - region->extents.y1,
};
}

/**
* Apply scale to a width or height.
*
Expand Down Expand Up @@ -1782,7 +1792,11 @@ void output_render(struct sway_output *output, struct timespec *when,

// Extend the damaged region
int expanded_size = effect_info.expanded_size;
if (expanded_size > 0) {
struct wlr_box damage_box = wlr_box_from_pixman_region32(damage);
if (expanded_size > 0
// Don't expand the damage any further if it's already
// larger than the monitor size
&& damage_box.width <= width && damage_box.height <= height) {
wlr_region_expand(damage, damage, expanded_size);
pixman_region32_copy(&extended_damage, damage);
wlr_region_expand(damage, damage, expanded_size);
Expand Down