Scott Anderson
c01b81c99c
render: introduce wlr_drm_format_set
...
This types adds a container for formats + modifiers.
A list that is of [format [modifier]] was chosen instead of
[format modifer] because that is how GBM accepts them.
Co-Authored-By: emersion <contact@emersion.fr>
2019-04-01 19:15:56 +03:00
emersion
75371d2c88
Require libdrm >= 2.4.95
2019-01-29 19:33:38 +01:00
Jente Hidskes
ed5296c6cf
Protect against redefining MESA_EGL_NO_X11_HEADERS
2018-12-22 19:05:19 +01:00
Ilia Bozhinov
fb5691b6cc
output: add wlr_output_preferred_read_format()
...
The read format is dependent on the output, so we first need to make it
current. This fixes a race condition in wlr-screencopy-v1 where a dmabuf
client would cause EGL_NO_SURFACE to be bound at the time when
screencopy needs to query for the preferred format, causing GL errors.
2018-11-24 10:54:25 +01:00
emersion
51bfdd620e
Use #if instead of #ifdef for wlroots config data
...
This prevents some annoying issues when e.g. not including wlr/config.h or
making a typo in the guard name.
2018-11-12 10:12:46 +01:00
Cedric Sodhi
beefec3326
Tell Mesa not to attempt X11 headers
...
If no X11 related things are being built, tell Mesa's eglplatform.h not to attempt inclusion of associated X11 header.
2018-11-09 21:25:23 +01:00
emersion
62d646f2b8
render/gles2: remove assumptions about supported formats
...
We were assuming GL_BGRA_EXT was always supported.
We now check that it's supported for rendering. We fail if it isn't because
this format is specified as "always supported" by the Wayland protocol.
We also check if it's supported for reading pixels. A new preferred_read_format
function returns the preferred format that can be used to read pixels. This is
used by the screencopy protocol.
2018-11-04 09:00:51 +01:00
emersion
b42fc4f2b1
render: on Wayland, make eglSwapBuffers non-blocking
2018-10-28 09:58:20 +01:00
nyorain
cb03a41a3b
Use enum wl_shm_format for gles2 texture formats
...
Also rephrase the write_pixels comment.
2018-10-16 09:35:28 +02:00
nyorain
cd28637187
Remove fmt parameter from wlr_texture_write_pixels
...
It's not allowed to change the format of a texture so remove
the confusing parameter.
2018-10-15 23:56:56 +02:00
nyorain
affbfb6a28
Support older wlr_linux_dmabuf_v1 clients
...
If a client uses an older version of the dmabuf protocol, use the
`formats` event instead of `modifiers` (since that didn't exist in older
versions).
With a bit of necessary guessing, support dmabuf importing even when
EGL_EXT_image_dma_buf_import_modifiers isn't present instead of
failing up front.
2018-10-12 23:07:45 +02:00
Scott Anderson
fd3fa760d3
Revert "Revert "Merge pull request #1194 from ascent12/meson_feature""
...
This reverts commit 9c886f20b9
.
2018-08-24 19:35:02 +12:00
Drew DeVault
9c886f20b9
Revert "Merge pull request #1194 from ascent12/meson_feature"
...
This breaks wlroots when used as a meson subproject.
This reverts commit dea311992e
, reversing
changes made to 6db9c4b746
.
2018-08-23 21:00:58 -04:00
Scott Anderson
51892e0d74
Install headers explicitly
2018-08-22 21:16:16 +12:00
Drew DeVault
211ae764fd
Initial pass on API stability guarantees
...
This introduces -DWLR_USE_UNSTABLE and adds information regarding the
stability status to all headers. I started with a conservative set of
headers to mark as stable:
- types/wlr_matrix.h
- util/edges.h
- util/log.h
- util/region.h
- xcursor.h
2018-07-29 19:20:34 -04:00
emersion
c4915d1492
render: add wlr_texture_is_opaque
2018-07-12 23:35:33 +01:00
emersion
2b9cbaddf3
screencopy: add support for frame flags
2018-06-30 22:18:03 +01:00
emersion
57548b557a
Merge branch 'master' into screencontent
2018-06-17 14:49:18 +01:00
Vincent Vanlaer
f1a62a3200
Rename egl.exts to match the extension names
2018-06-09 19:11:51 +02:00
Vincent Vanlaer
5ec6d8230d
Split eglSwapBuffersWithDamage feature detection
...
Detecting whether eglSwapBuffersWithDamageEXT or
eglSwapBuffersWithDamageKHR is used should be based on the extension
string, not only on the availability of the function.
2018-06-09 11:39:14 +02:00
emersion
457bfcab19
render/egl: only request high priority context on DRM
2018-06-08 00:17:45 +01:00
emersion
d425edc96c
render/egl: consistent extension checking
2018-06-08 00:06:34 +01:00
emersion
cbfe0e834a
Request a high priority EGL context
2018-06-08 00:06:34 +01:00
emersion
21928cbe61
Merge branch 'master' into screencontent
2018-05-31 12:33:27 +01:00
emersion
135721118a
render: remove wlr_renderer_check_import_dmabuf
...
It's possible to implement it outside the renderer, by creating a
texture and destroying it right away. This reduces the API surface
of the renderer.
2018-05-30 17:08:15 +01:00
emersion
28020ff577
Only allow one modifier per DMA-BUF, split attributes struct in render/
2018-05-30 09:29:12 +01:00
emersion
5ba1a9af56
render: add wlr_texture_to_dmabuf
2018-05-29 18:47:17 +01:00
emersion
6eb4b5b54d
Merge pull request #993 from emersion/bind-wl-drm-in-renderer
...
render: bind wl_drm in renderer
2018-05-25 13:54:16 +01:00
Ilia Bozhinov
24cf70ae96
backends: implement custom EGL and renderer initialization
...
Compositors now have more control over how the backend creates its
renderer. Currently all backends create an EGL/GLES2 renderer, so
the necessary attributes for creating the context are passed to a
user-provided callback function. It is responsible for initializing
provided wlr_egl and to return a renderer. On fail, return 0.
Fixes #987
2018-05-25 14:56:52 +03:00
emersion
41130fe54b
render: bind wl_drm in renderer
2018-05-21 19:07:08 +01:00
emersion
449f06556a
Destroy wlr_surface with wlr_renderer
2018-04-26 00:11:36 +01:00
emersion
018b82c01e
render/egl: allow passing NULL to surface and image destructors
2018-04-25 08:28:48 +01:00
emersion
eaed6bd03b
render/egl: add wlr_egl_destroy_surface
2018-04-24 23:44:43 +01:00
emersion
70d820be25
Add wlr_renderer_init_wl_shm to advertize supported renderer formats
2018-04-20 23:58:30 +01:00
emersion
d2ebbd103c
backend: remove wlr_backend_get_egl
2018-04-08 11:00:56 -04:00
emersion
f3f61bed3e
Untie wlr_gles2_renderer and wlr_gles2_texture
2018-04-01 16:07:50 -04:00
emersion
a7bb48b404
render/egl: add wlr_egl_create_image_from_wl_drm
...
This allows external renderers and potential future GL-based
renderers to re-use this function.
2018-03-31 23:20:00 -04:00
emersion
33a2eb4b77
Untie wlr_backend from wlr_renderer
2018-03-31 18:49:43 -04:00
Tony Crisci
330ee08126
Merge pull request #744 from emersion/texture-redesign
...
Redesign wlr_texture
2018-03-28 00:14:57 -04:00
Drew DeVault
13edb19a6c
Fix issue starting up client EGL on X11 backend
2018-03-27 18:51:38 -04:00
emersion
c42fd1018b
render: remove GL calls from wlr_egl
2018-03-27 17:02:48 -04:00
emersion
adf4fb08dd
Merge branch 'master' into texture-redesign
2018-03-26 19:13:13 -04:00
emersion
793c3b3047
render: add simple functions to render rectangles and ellipses
2018-03-26 12:41:51 -04:00
emersion
c63d94483b
Redesign wlr_texture
...
- Textures are now immutable (apart from those created from raw
pixels), no more invalid textures
- Move all wl_drm stuff in wlr_renderer
- Most of wlr_texture fields are now private
- Remove some duplicated DMA-BUF code in the DRM backend
- Add more assertions
- Stride is now always given as bytes rather than pixels
- Drop wl_shm functions
Fun fact: this patch has been written 10,000 meters up in the air.
2018-03-24 23:48:32 -04:00
emersion
a854c2f246
Merge branch 'master' into gles2-renderer-redesign
2018-03-23 00:55:55 +01:00
emersion
b1f93bc5cc
render/egl: use EGL_KHR_debug
2018-03-21 10:42:43 +01:00
emersion
3581573bdc
render/gles2: make wlr_renderer_begin take viewport size
...
This allows raw GL calls outside wlr_renderer to be removed.
2018-03-21 07:37:09 +01:00
emersion
95e86e675a
render/gles2: remove global state, use OpenGL debug extension
2018-03-20 19:14:33 +01:00
emersion
c41de2d1be
render: split render.h into wlr_renderer.h and wlr_texture.h
2018-03-19 23:16:29 +01:00
emersion
876f07e9f1
renderer: replace wlr_texture_get_matrix by wlr_render_texture
2018-03-15 19:31:02 +01:00
emersion
8b58e1a3ad
Merge branch 'master' into matrix-redesign
2018-03-15 15:48:09 +01:00
emersion
824a95ad19
matrix: use 2D matrices
2018-03-15 15:33:58 +01:00
Guido Günther
14cdb6153f
Add initial linux_dmabuf protocol support
...
Tested with
./weston-simple-dmabuf-drm
./weston-simple-dmabuf-drm --import-immediate=1
./weston-simple-dmabuf-drm --y-inverted=1
(and combinations)
Supports only single plane XRGB dmabufs for now.
2018-03-15 12:40:18 +01:00
emersion
d26b67cb06
matrix: unify API, don't use array pointers
2018-03-15 11:10:56 +01:00
emersion
b6a3f240c7
matrix: move to types/
2018-03-15 09:11:27 +01:00
Guido Günther
d08792bfff
Add alpha to wlr_render_with_matrix
...
so we can use the alpha channel to e.g. blend in textures
2018-02-25 13:47:48 +01:00
emersion
c2e1474010
Reformat all #include directives
2018-02-12 21:29:23 +01:00
emersion
bf6d245400
Swap buffers with damage
2018-02-09 22:54:14 +01:00
emersion
ddb1779f9f
render: make wlr_renderer_clear take a float[4] for the color
2018-02-03 09:32:02 +01:00
emersion
51c22d39a4
Merge remote-tracking branch 'upstream/master' into output-damage
2018-01-29 23:24:09 +01:00
Tony Crisci
ed5b1fdedd
Merge pull request #580 from emersion/screenshooter-renderer-backport
...
Backport screenshooter fixes from the renderer redesign v1
2018-01-29 17:13:23 -05:00
emersion
6281deb90f
Merge remote-tracking branch 'upstream/master' into output-damage
2018-01-24 14:48:01 +01:00
emersion
4fa90b0511
Backport screenshooter fixes from the renderer redesign v1
...
This backports some changes to #319 to fix the screenshooter data
format. This also adds wlr_backend_get_renderer which will be
useful to support multiple renderers.
2018-01-23 22:06:54 +01:00
emersion
415a2b7c56
render: add wlr_renderer_clear and wlr_renderer_scissor
2018-01-22 16:42:22 +01:00
Tony Crisci
85a6939cf2
rename matrix model box to project box
2018-01-21 19:03:10 -05:00
Tony Crisci
d13114520a
move matrix model code to matrix.h
2018-01-21 15:53:42 -05:00
emersion
0365b587f0
output: add damage tracking via buffer age
2018-01-21 00:06:35 +01:00
emersion
b99d1f4fcc
Refactor wlr_egl_init to accept config_attribs
2017-12-17 23:51:04 +01:00
Drew DeVault
23fb663ea4
Merge pull request #453 from emersion/surface-transform
...
Add surface transforms support
2017-12-14 14:43:04 -05:00
emersion
18eb1eee3f
Listen to display destroy in xwayland, rename wlr_egl_free
2017-12-08 00:59:37 +01:00
emersion
f4754ad1a2
Fix surface transforms
2017-11-30 23:58:12 +01:00
Scott Anderson
9b984253e2
Move egl.h to render/egl.h
2017-10-22 10:36:07 +13:00
emersion
0ce3135304
Move read_pixels from output to renderer
2017-10-08 02:11:56 +02:00
Scott Anderson
009c3747a8
Multi-GPU DRM
2017-10-01 22:29:25 +13:00
emersion
427bdb5b55
Use more consistent include guard names
2017-09-23 10:26:01 +02:00
Dominique Martinet
f24b3df980
wlr renderer/texture: rename init to create when it does alloc
2017-08-19 08:33:31 +02:00
Tony Crisci
72a33b736f
implement texture get buffer size
2017-08-15 07:36:50 -04:00
Drew DeVault
de6f32c84e
Refactor away wlr_renderer_state
2017-08-14 08:37:50 -04:00
Drew DeVault
94e6e6334b
Refactor out wlr_texture_state
2017-08-14 08:25:26 -04:00
Drew DeVault
c24351681f
Refactor EGL handling
2017-08-10 22:15:37 -04:00
nyorain
67369173aa
Implement drm (egl) buffer attaching
2017-08-10 10:59:58 +02:00
Drew DeVault
4de930542f
Implement partial texture uploads
2017-08-09 22:17:40 -04:00
nyorain
e167f41fde
Rename wlr_surface -> wlr_texture; attach -> upload
2017-08-08 18:25:16 +02:00
Scott Anderson
1db97a9af9
Updated DRM cursor rendering
2017-08-06 21:38:40 +12:00
Drew DeVault
8920b5d607
Merge branch 'wlcore'
2017-06-29 16:00:24 -04:00
Scott Anderson
0cd94f0cf0
Added software cursor fallback
2017-06-26 17:34:15 +12:00
Drew DeVault
5a2796266f
Support wl_shm pixel formats in gles2 renderer
2017-06-23 14:25:55 -04:00
Drew DeVault
2aafb5dd19
Add wlcore/wl_shm (WIP)
2017-06-23 13:41:07 -04:00
Drew DeVault
b18209c904
Switch to GLES2
...
Closes #13
2017-06-23 11:38:45 -04:00
Drew DeVault
fd91244e83
Update everyone to use new headers
2017-06-21 10:27:45 -04:00
Drew DeVault
2443a070e7
Add colored quad and ellipse rendering primitives
2017-06-15 15:31:13 -04:00
Drew DeVault
cd6a40d816
Further improvements to rendering subsystem
2017-06-08 15:52:42 -04:00
Drew DeVault
fc1dc1b5b0
Use constant VBO for quad, add matrix stuff
2017-06-07 21:35:07 -04:00