Skip to content

Commit ae7bacc

Browse files
Merge pull request #84 from wlrfx/swayfx-compat
swayfx compat changes
2 parents b2e0ac4 + fa95078 commit ae7bacc

File tree

14 files changed

+170
-270
lines changed

14 files changed

+170
-270
lines changed

include/render/fx_renderer/fx_renderer.h

+3-9
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <time.h>
88
#include <wlr/render/egl.h>
99
#include <wlr/render/interface.h>
10+
#include <wlr/render/swapchain.h>
1011
#include <wlr/render/wlr_texture.h>
1112
#include <wlr/util/addon.h>
1213
#include <wlr/util/box.h>
@@ -50,7 +51,8 @@ struct fx_framebuffer {
5051

5152
/** Should only be used with custom fbs */
5253
void fx_framebuffer_get_or_create_custom(struct fx_renderer *fx_renderer,
53-
struct wlr_output *output, struct fx_framebuffer **fx_buffer);
54+
struct wlr_output *output, struct wlr_swapchain *swapchain,
55+
struct fx_framebuffer **fx_buffer);
5456

5557
struct fx_framebuffer *fx_framebuffer_get_or_create(struct fx_renderer *renderer,
5658
struct wlr_buffer *wlr_buffer);
@@ -176,15 +178,7 @@ struct fx_renderer {
176178
struct quad_shader quad;
177179
struct quad_grad_shader quad_grad;
178180
struct quad_round_shader quad_round;
179-
struct quad_round_shader quad_round_tl;
180-
struct quad_round_shader quad_round_tr;
181-
struct quad_round_shader quad_round_bl;
182-
struct quad_round_shader quad_round_br;
183181
struct quad_grad_round_shader quad_grad_round;
184-
struct quad_grad_round_shader quad_grad_round_tl;
185-
struct quad_grad_round_shader quad_grad_round_tr;
186-
struct quad_grad_round_shader quad_grad_round_bl;
187-
struct quad_grad_round_shader quad_grad_round_br;
188182
struct tex_shader tex_rgba;
189183
struct tex_shader tex_rgbx;
190184
struct tex_shader tex_ext;

include/render/fx_renderer/shaders.h

+13-10
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,6 @@ enum fx_tex_shader_source {
2020
SHADER_SOURCE_TEXTURE_EXTERNAL = 3,
2121
};
2222

23-
enum fx_rounded_quad_shader_source {
24-
SHADER_SOURCE_QUAD_ROUND = 1,
25-
SHADER_SOURCE_QUAD_ROUND_TOP_LEFT = 2,
26-
SHADER_SOURCE_QUAD_ROUND_TOP_RIGHT = 3,
27-
SHADER_SOURCE_QUAD_ROUND_BOTTOM_RIGHT = 4,
28-
SHADER_SOURCE_QUAD_ROUND_BOTTOM_LEFT = 5,
29-
};
30-
3123
struct quad_shader {
3224
GLuint program;
3325
GLint proj;
@@ -67,9 +59,14 @@ struct quad_round_shader {
6759
GLint window_half_size;
6860
GLint window_position;
6961
GLint window_radius;
62+
63+
GLint round_top_left;
64+
GLint round_top_right;
65+
GLint round_bottom_left;
66+
GLint round_bottom_right;
7067
};
7168

72-
bool link_quad_round_program(struct quad_round_shader *shader, enum fx_rounded_quad_shader_source source);
69+
bool link_quad_round_program(struct quad_round_shader *shader);
7370

7471
struct quad_grad_round_shader {
7572
GLuint program;
@@ -89,10 +86,15 @@ struct quad_grad_round_shader {
8986
GLint count;
9087
GLint blend;
9188

89+
GLint round_top_left;
90+
GLint round_top_right;
91+
GLint round_bottom_left;
92+
GLint round_bottom_right;
93+
9294
int max_len;
9395
};
9496

95-
bool link_quad_grad_round_program(struct quad_grad_round_shader *shader, enum fx_rounded_quad_shader_source source, int max_len);
97+
bool link_quad_grad_round_program(struct quad_grad_round_shader *shader, int max_len);
9698

9799
struct tex_shader {
98100
GLuint program;
@@ -107,6 +109,7 @@ struct tex_shader {
107109
GLint discard_transparent;
108110
GLint dim;
109111
GLint dim_color;
112+
110113
GLint round_top_left;
111114
GLint round_top_right;
112115
GLint round_bottom_left;

include/scenefx/render/fx_renderer/fx_renderer.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ struct fx_renderer;
1212
struct wlr_renderer *fx_renderer_create_with_drm_fd(int drm_fd);
1313
struct wlr_renderer *fx_renderer_create(struct wlr_backend *backend);
1414

15-
struct fx_renderer *fx_get_renderer(
16-
struct wlr_renderer *wlr_renderer);
15+
struct fx_renderer *fx_get_renderer(struct wlr_renderer *wlr_renderer);
1716

1817
bool fx_renderer_check_ext(struct wlr_renderer *renderer, const char *ext);
1918
GLuint fx_renderer_get_buffer_fbo(struct wlr_renderer *renderer, struct wlr_buffer *buffer);

include/scenefx/render/pass.h

+10-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <stdbool.h>
55
#include <wlr/render/pass.h>
66
#include <wlr/render/interface.h>
7+
#include <wlr/render/swapchain.h>
78

89
#include "render/egl.h"
910
#include "scenefx/types/fx/corner_location.h"
@@ -18,6 +19,12 @@ struct fx_gles_render_pass {
1819
struct fx_render_timer *timer;
1920
};
2021

22+
struct fx_buffer_pass_options {
23+
const struct wlr_buffer_pass_options *base;
24+
25+
struct wlr_swapchain *swapchain;
26+
};
27+
2128
/**
2229
* Begin a new render pass with the supplied destination buffer.
2330
*
@@ -26,7 +33,7 @@ struct fx_gles_render_pass {
2633
*/
2734
struct fx_gles_render_pass *fx_renderer_begin_buffer_pass(struct wlr_renderer *wlr_renderer,
2835
struct wlr_buffer *wlr_buffer, struct wlr_output *output,
29-
const struct wlr_buffer_pass_options *options);
36+
const struct fx_buffer_pass_options *options);
3037

3138
struct fx_gradient {
3239
float degree;
@@ -65,7 +72,7 @@ struct fx_render_rect_grad_options {
6572
struct fx_render_rounded_rect_options {
6673
struct wlr_render_rect_options base;
6774
int corner_radius;
68-
enum corner_location corner_location;
75+
enum corner_location corners;
6976

7077
struct wlr_box window_box;
7178
int window_corner_radius;
@@ -75,7 +82,7 @@ struct fx_render_rounded_rect_grad_options {
7582
struct wlr_render_rect_options base;
7683
struct fx_gradient gradient;
7784
int corner_radius;
78-
enum corner_location corner_location;
85+
enum corner_location corners;
7986
};
8087

8188
struct fx_render_box_shadow_options {

include/scenefx/types/wlr_scene.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ struct wlr_scene_rect {
144144
int width, height;
145145
float color[4];
146146
int corner_radius;
147+
enum corner_location corners;
147148
};
148149

149150
/** A scene-graph node displaying a shadow */
@@ -413,8 +414,8 @@ void wlr_scene_rect_set_size(struct wlr_scene_rect *rect, int width, int height)
413414
/**
414415
* Change the corner radius of an existing rectangle node.
415416
*/
416-
void wlr_scene_rect_set_corner_radius(struct wlr_scene_rect *rect, int corner_radius);
417-
417+
void wlr_scene_rect_set_corner_radius(struct wlr_scene_rect *rect, int corner_radius,
418+
enum corner_location corners);
418419

419420
/**
420421
* Change the color of an existing rectangle node.

meson.build

-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,6 @@ pkgconfig.generate(
174174
name: versioned_name,
175175
version: meson.project_version(),
176176
filebase: meson.project_name(),
177-
name: meson.project_name(),
178177
description: 'Wlroots effects library',
179178
subdirs: versioned_name,
180179
)

render/fx_renderer/fx_framebuffer.c

+6-2
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,12 @@ GLuint fx_framebuffer_get_fbo(struct fx_framebuffer *buffer) {
6969
}
7070

7171
void fx_framebuffer_get_or_create_custom(struct fx_renderer *renderer,
72-
struct wlr_output *output, struct fx_framebuffer **fx_framebuffer) {
72+
struct wlr_output *output, struct wlr_swapchain *swapchain,
73+
struct fx_framebuffer **fx_framebuffer) {
7374
struct wlr_allocator *allocator = output->allocator;
74-
struct wlr_swapchain *swapchain = output->swapchain;
75+
if (!swapchain) {
76+
swapchain = output->swapchain;
77+
}
7578
int width = output->width;
7679
int height = output->height;
7780
struct wlr_buffer *wlr_buffer = NULL;
@@ -170,3 +173,4 @@ void fx_framebuffer_destroy(struct fx_framebuffer *fx_buffer) {
170173

171174
free(fx_buffer);
172175
}
176+

0 commit comments

Comments
 (0)