summaryrefslogtreecommitdiff
path: root/sway/desktop/output.c
diff options
context:
space:
mode:
authorWilliam McKinnon <[email protected]>2023-09-06 00:32:08 -0400
committerGitHub <[email protected]>2023-09-06 00:32:08 -0400
commit6f6991a1b38b03e87fd3f73607ca2393ae62cfea (patch)
treefcb05d87a897f167f57142877aa7e2003d32bf82 /sway/desktop/output.c
parent13eeea5ed5f569eb8a9af329af8a7f6b4b0b114e (diff)
refactor: simplify blur (#219)
* refactor: removed surface_width + surface_height from render_blur() * Fixed scaling issues * Minor refactors * removed scaled_dst box * removed uneeded fb bind * removed unneeded src_box * removed unneeded wlr_fbox_from_box function * removed src_box * Don't scale the blur translucent region twice * Renamed extended_damage to original_damage to reflect better what it actually is * Removed unneeded clearing of the wlr fbo before rendering onto it * Removed the need for our own main FBO, also fixes some damage bugs * Simplified detection of blur on workspace * cleaned up comments --------- Co-authored-by: Erik Reider <[email protected]>
Diffstat (limited to 'sway/desktop/output.c')
-rw-r--r--sway/desktop/output.c32
1 files changed, 1 insertions, 31 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c
index 5d61186f..911bffbb 100644
--- a/sway/desktop/output.c
+++ b/sway/desktop/output.c
@@ -697,36 +697,6 @@ static void damage_surface_iterator(struct sway_output *output,
}
pixman_region32_translate(&damage, box.x, box.y);
- // Extend view/layer damage size
- int effect_size = 0;
- if (view && view->container->blur_enabled) {
- // Don't check for shadow, gets extended in `output_damage_whole_container`
- effect_size = config_get_blur_size();
- } else if (wlr_surface_is_layer_surface(surface)) {
- struct wlr_layer_surface_v1 *layer = wlr_layer_surface_v1_from_wlr_surface(surface);
- struct sway_layer_surface *sway_layer = layer_from_wlr_layer_surface_v1(layer);
- int blur_size = sway_layer->has_blur? config_get_blur_size(): 0;
- int shadow_sigma = sway_layer->has_shadow? config->shadow_blur_sigma: 0;
- effect_size = MAX(blur_size, shadow_sigma);
- }
- if (effect_size > 0) {
- if (pixman_region32_not_empty(&damage)) {
- int output_width, output_height;
- wlr_output_transformed_resolution(output->wlr_output, &output_width, &output_height);
- int32_t damage_width = damage.extents.x2 - damage.extents.x1;
- int32_t damage_height = damage.extents.y2 - damage.extents.y1;
- if (damage_width > output_width || damage_height > output_height) {
- pixman_region32_intersect_rect(&damage, &damage, 0, 0, output_width, output_height);
- } else {
- wlr_region_expand(&damage, &damage, effect_size);
- }
- }
- box.x -= effect_size;
- box.y -= effect_size;
- box.width += effect_size * 2;
- box.height += effect_size * 2;
- }
-
if (wlr_damage_ring_add(&output->damage_ring, &damage)) {
wlr_output_schedule_frame(output->wlr_output);
}
@@ -983,7 +953,7 @@ void handle_new_output(struct wl_listener *listener, void *data) {
// Init FX Renderer
struct wlr_egl *egl = wlr_gles2_renderer_get_egl(server->wlr_renderer);
- output->renderer = fx_renderer_create(egl);
+ output->renderer = fx_renderer_create(egl, wlr_output);
if (!output->renderer) {
sway_log(SWAY_ERROR, "Failed to create fx_renderer");
abort();