Codebase list wlroots / 6832ae1
render: drop wlr_renderer_read_pixels() flags These are unused. Simon Ser 1 year, 6 months ago
8 changed file(s) with 12 addition(s) and 27 deletion(s). Raw diff Collapse all Expand all
406406 }
407407
408408 bool result = wlr_renderer_read_pixels(
409 renderer, DRM_FORMAT_ARGB8888, NULL,
409 renderer, DRM_FORMAT_ARGB8888,
410410 stride, buffer->width, buffer->height, 0, 0, 0, 0,
411411 data);
412412
3939 struct wlr_renderer *renderer);
4040 uint32_t (*preferred_read_format)(struct wlr_renderer *renderer);
4141 bool (*read_pixels)(struct wlr_renderer *renderer, uint32_t fmt,
42 uint32_t *flags, uint32_t stride, uint32_t width, uint32_t height,
42 uint32_t stride, uint32_t width, uint32_t height,
4343 uint32_t src_x, uint32_t src_y, uint32_t dst_x, uint32_t dst_y,
4444 void *data);
4545 void (*destroy)(struct wlr_renderer *renderer);
1212 #include <wayland-server-core.h>
1313 #include <wlr/backend.h>
1414 #include <wlr/render/wlr_texture.h>
15
16 enum wlr_renderer_read_pixels_flags {
17 WLR_RENDERER_READ_PIXELS_Y_INVERT = 1,
18 };
1915
2016 struct wlr_renderer_impl;
2117 struct wlr_drm_format_set;
8985 /**
9086 * Reads out of pixels of the currently bound surface into data. `stride` is in
9187 * bytes.
92 *
93 * If `flags` is not NULl, the caller indicates that it accepts frame flags
94 * defined in enum wlr_renderer_read_pixels_flags.
9588 */
9689 bool wlr_renderer_read_pixels(struct wlr_renderer *r, uint32_t fmt,
97 uint32_t *flags, uint32_t stride, uint32_t width, uint32_t height,
90 uint32_t stride, uint32_t width, uint32_t height,
9891 uint32_t src_x, uint32_t src_y, uint32_t dst_x, uint32_t dst_y, void *data);
9992
10093 /**
414414 }
415415
416416 static bool gles2_read_pixels(struct wlr_renderer *wlr_renderer,
417 uint32_t drm_format, uint32_t *flags, uint32_t stride,
417 uint32_t drm_format, uint32_t stride,
418418 uint32_t width, uint32_t height, uint32_t src_x, uint32_t src_y,
419419 uint32_t dst_x, uint32_t dst_y, void *data) {
420420 struct wlr_gles2_renderer *renderer =
462462 }
463463
464464 pop_gles2_debug(renderer);
465
466 if (flags != NULL) {
467 *flags = 0;
468 }
469465
470466 return glGetError() == GL_NO_ERROR;
471467 }
456456 }
457457
458458 static bool pixman_read_pixels(struct wlr_renderer *wlr_renderer,
459 uint32_t drm_format, uint32_t *flags, uint32_t stride,
459 uint32_t drm_format, uint32_t stride,
460460 uint32_t width, uint32_t height, uint32_t src_x, uint32_t src_y,
461461 uint32_t dst_x, uint32_t dst_y, void *data) {
462462 struct wlr_pixman_renderer *renderer = get_renderer(wlr_renderer);
969969 }
970970
971971 static bool vulkan_read_pixels(struct wlr_renderer *wlr_renderer,
972 uint32_t drm_format, uint32_t *flags, uint32_t stride,
972 uint32_t drm_format, uint32_t stride,
973973 uint32_t width, uint32_t height, uint32_t src_x, uint32_t src_y,
974974 uint32_t dst_x, uint32_t dst_y, void *data) {
975975 // TODO: implement!
193193 }
194194
195195 bool wlr_renderer_read_pixels(struct wlr_renderer *r, uint32_t fmt,
196 uint32_t *flags, uint32_t stride, uint32_t width, uint32_t height,
196 uint32_t stride, uint32_t width, uint32_t height,
197197 uint32_t src_x, uint32_t src_y, uint32_t dst_x, uint32_t dst_y,
198198 void *data) {
199199 if (!r->impl->read_pixels) {
200200 return false;
201201 }
202 return r->impl->read_pixels(r, fmt, flags, stride, width, height,
202 return r->impl->read_pixels(r, fmt, stride, width, height,
203203 src_x, src_y, dst_x, dst_y, data);
204204 }
205205
189189 }
190190
191191 static bool frame_shm_copy(struct wlr_screencopy_frame_v1 *frame,
192 struct wlr_buffer *src_buffer, uint32_t *flags) {
192 struct wlr_buffer *src_buffer) {
193193 struct wlr_output *output = frame->output;
194194 struct wlr_renderer *renderer = output->renderer;
195195 assert(renderer);
207207 return false;
208208 }
209209
210 uint32_t renderer_flags = 0;
211210 bool ok = false;
212211 if (!wlr_renderer_begin_with_buffer(renderer, src_buffer)) {
213212 goto out;
214213 }
215 ok = wlr_renderer_read_pixels(renderer, format, &renderer_flags,
214 ok = wlr_renderer_read_pixels(renderer, format,
216215 stride, width, height, x, y, 0, 0, data);
217216 wlr_renderer_end(renderer);
218 *flags = renderer_flags & WLR_RENDERER_READ_PIXELS_Y_INVERT ?
219 ZWLR_SCREENCOPY_FRAME_V1_FLAGS_Y_INVERT : 0;
220217
221218 out:
222219 wlr_buffer_end_data_ptr_access(frame->buffer);
292289 wl_list_remove(&frame->output_commit.link);
293290 wl_list_init(&frame->output_commit.link);
294291
295 uint32_t flags = 0;
296292 bool ok;
297293 switch (frame->buffer_cap) {
298294 case WLR_BUFFER_CAP_DMABUF:
299295 ok = frame_dma_copy(frame, buffer);
300296 break;
301297 case WLR_BUFFER_CAP_DATA_PTR:
302 ok = frame_shm_copy(frame, buffer, &flags);
298 ok = frame_shm_copy(frame, buffer);
303299 break;
304300 default:
305301 abort(); // unreachable
310306 return;
311307 }
312308
313 zwlr_screencopy_frame_v1_send_flags(frame->resource, flags);
309 zwlr_screencopy_frame_v1_send_flags(frame->resource, 0);
314310 frame_send_damage(frame);
315311 frame_send_ready(frame, event->when);
316312 frame_destroy(frame);