Cole Mickens
7297348736
render: fix meson including libdrm
6 years ago
Scott Anderson
7ca3bc1d6f
Fix libdrm includes
...
This removes any assumptions about how the libdrm headers are installed,
and uses the pkg-config include directories as we're "supposed to".
This only adds a partial dependency, since we don't actually need to
link against libdrm.
6 years ago
emersion
7daca85bcf
Merge pull request #1309 from swaywm/fix-headless-libinput
...
Fix headless backend
6 years ago
Cole Mickens
43d0ebfdac
Fix include path for (libdrm/)drm_fourcc.h
...
This PR broke a private nixpkgs definition I have for wlroots: https://github.com/swaywm/wlroots/pull/1304
It is fixed by changing `#include <drm_fourcc.h>` to `#include <libdrm/drm_fourcc.h>`, which follows what is already done in the dmabuf example.
6 years ago
Drew DeVault
63c69cee6e
Fix headless backend
...
It was only working if you ran it underneath an already-working Wayland
compositor. Running with the headless backend on the API would break.
6 years ago
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.
6 years ago
emersion
2f0815838d
Init dmabuf global in renderer
6 years ago
Scott Anderson
dc37194291
Change how glgen.sh outputs files
...
This fixes building wlroots as a subproject.
6 years ago
Scott Anderson
fd3fa760d3
Revert "Revert "Merge pull request #1194 from ascent12/meson_feature""
...
This reverts commit 9c886f20b9
.
6 years ago
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
.
6 years ago
Scott Anderson
a2bbf2c1f7
Make style more consistent
6 years ago
Mariusz Bialonczyk
ad406db21c
gles2: change context when it is not current
...
Texture functions, that create and manipulate textures should switch
the current context if necessary.
thanks to: @emersion
Fixes #934
6 years ago
Drew DeVault
b902c2bd7c
Revert "Move side-effect out of assert statement"
...
This reverts commit a0afedcd8f
.
7 years ago
Drew DeVault
a0afedcd8f
Move side-effect out of assert statement
7 years ago
emersion
c4915d1492
render: add wlr_texture_is_opaque
7 years ago
emersion
7cbef15206
util: add wlr_ prefix to log symbols
7 years ago
emersion
cc9b198f9e
render/gles2: ditch extra parens
7 years ago
emersion
bf7560b7cd
screencopy: add capture_output_region support
7 years ago
emersion
2b9cbaddf3
screencopy: add support for frame flags
7 years ago
Dominique Martinet
4cc4412481
wlr_renderer_destroy: fix renderer NULL check
...
renderer is checked for NULL, but was dereferenced before that.
Found through static analysis
7 years ago
emersion
57548b557a
Merge branch 'master' into screencontent
7 years ago
emersion
d643361c48
Merge pull request #1047 from NotKit/gles2fix
...
Fix GLES2 renderer to use glGetUniformLocations locations
7 years ago
NeKit
6f29db1044
gles2 renderer: introduce struct wlr_gles2_tex_shader
7 years ago
Vincent Vanlaer
f1a62a3200
Rename egl.exts to match the extension names
7 years ago
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.
7 years ago
Brian Ashworth
18bbe2d897
Fix atti assert in wlr_egl_init
7 years ago
emersion
457bfcab19
render/egl: only request high priority context on DRM
7 years ago
emersion
d425edc96c
render/egl: consistent extension checking
7 years ago
emersion
cbfe0e834a
Request a high priority EGL context
7 years ago
NeKit
de91c55ea9
Fix GLES2 renderer to use glGetUniformLocations locations
...
This is needed as uniform locations are driver implementation-specific.
7 years ago
emersion
6b7a55aa3d
Merge pull request #1020 from emersion/remove-check-dmabuf
...
render: remove wlr_renderer_check_import_dmabuf
7 years ago
emersion
21928cbe61
Merge branch 'master' into screencontent
7 years ago
Genki Sky
d1cf9acbd5
cleanup: Use void for zero-parameter functions
...
Signed-off-by: Genki Sky <sky@genki.is>
7 years ago
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.
7 years ago
emersion
28020ff577
Only allow one modifier per DMA-BUF, split attributes struct in render/
7 years ago
emersion
5ba1a9af56
render: add wlr_texture_to_dmabuf
7 years ago
emersion
6eb4b5b54d
Merge pull request #993 from emersion/bind-wl-drm-in-renderer
...
render: bind wl_drm in renderer
7 years ago
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
7 years ago
agr
4e89e0fc6c
fix server exit: eglMakeCurrent Invalid display
7 years ago
emersion
41130fe54b
render: bind wl_drm in renderer
7 years ago
Ilia Bozhinov
47ffd0e184
gles2: pre-multiply alpha and fix blending function
7 years ago
Brian Ashworth
35e83800d4
Fix alpha for src_rgba and src_rgbx
7 years ago
Alain Greppin
b2f8f00ae3
fix check of EGL_WL_bind_wayland_display presence
7 years ago
emersion
5a87712ca8
Log required extension name if unavailable
7 years ago
Drew DeVault
fecb971518
Merge pull request #902 from emersion/various-memory-leaks
...
Various memory leaks
7 years ago
emersion
449f06556a
Destroy wlr_surface with wlr_renderer
7 years ago
emersion
71ca45e2c0
Make sure we don't use others' prefixes
7 years ago
emersion
018b82c01e
render/egl: allow passing NULL to surface and image destructors
7 years ago
emersion
eaed6bd03b
render/egl: add wlr_egl_destroy_surface
7 years ago
Rostislav Pehlivanov
12298ce88c
Do not advertize *RGB8888 as supported shm formats
...
They're always available and supported, and are added automatically.
Adding them again just duplicates them.
7 years ago
Drew DeVault
b116414bd5
Merge pull request #880 from emersion/advertize-renderer-formats
...
Advertize supported renderer formats
7 years ago
emersion
1588094b99
Remove a few local prefixed symbols
7 years ago
emersion
70d820be25
Add wlr_renderer_init_wl_shm to advertize supported renderer formats
7 years ago
emersion
1b802d9251
Make wlr_renderer_scissor take normal coords instead of upside-down ones
7 years ago
emersion
d2ebbd103c
backend: remove wlr_backend_get_egl
7 years ago
Guido Günther
6a05bd3886
egl: silence dmabuf error when extension is not present
...
This makes it match 4bf936360d
.
7 years ago
emersion
f3f61bed3e
Untie wlr_gles2_renderer and wlr_gles2_texture
7 years ago
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.
7 years ago
emersion
33a2eb4b77
Untie wlr_backend from wlr_renderer
7 years ago
Drew DeVault
23d357e371
Downgrade gles2 messages to L_DEBUG
...
L_INFO is for stuff that's useful to the user
7 years ago
Orestis Floros
c9ed6fed59
Fix build error with -O2
...
../render/gles2/renderer.c: In function ‘gles2_render_texture_with_matrix’:
../render/gles2/renderer.c:140:2: error: ‘target’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
glBindTexture(target, tex_id);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../render/gles2/renderer.c:145:2: error: ‘prog’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
glUseProgram(prog);
7 years ago
Tony Crisci
330ee08126
Merge pull request #744 from emersion/texture-redesign
...
Redesign wlr_texture
7 years ago
Drew DeVault
13edb19a6c
Fix issue starting up client EGL on X11 backend
7 years ago
Drew DeVault
f444a0d14c
Implement layer surface damage
7 years ago
Drew DeVault
4bf936360d
Arrange & render layer surfaces
7 years ago
emersion
c42fd1018b
render: remove GL calls from wlr_egl
7 years ago
emersion
adf4fb08dd
Merge branch 'master' into texture-redesign
7 years ago
emersion
793c3b3047
render: add simple functions to render rectangles and ellipses
7 years ago
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.
7 years ago
Guido Günther
b1852096c5
linux-dmabuf: Support multi plane formats like NV12
7 years ago
emersion
a854c2f246
Merge branch 'master' into gles2-renderer-redesign
7 years ago
emersion
b1f93bc5cc
render/egl: use EGL_KHR_debug
7 years ago
emersion
8207f0f081
render/gles2: use gles2_pixel_format::has_alpha for shader selection
7 years ago
emersion
cc5ef1d2ff
render/gles2: move list of supported WL formats to pixel_format.c
7 years ago
emersion
3581573bdc
render/gles2: make wlr_renderer_begin take viewport size
...
This allows raw GL calls outside wlr_renderer to be removed.
7 years ago
emersion
95e86e675a
render/gles2: remove global state, use OpenGL debug extension
7 years ago
Guido Günther
2d01663b25
gles2: Honor alpha in fragment_src_external
...
By using the same vertex shader and adding alpha to the fragment shader
for external textures we can:
- use alpha blending
- have wlr_gles2_render_texture_with_matrix work with
the GL_TEXTURE_EXTERNAL_OES. So far this failed
since we passed in alpha which was unknown by fragment_src_external
7 years ago
Guido Günther
13e4ba4867
gles2_texture_bind: use texture's target type
...
Hardcoding GL_TEXTURE_2D leads to rendering errors when using
GL_TEXTURE_EXTERNAL_OES textures.
7 years ago
Guido Günther
b3cb5a36c7
gles2: allow to specify texture target type
...
Allow to set the texture target type when generating/binding the
texture. This allows us to attach the texture type to the texture so we
don't have to keep the logic elsewhere.
7 years ago
emersion
c41de2d1be
render: split render.h into wlr_renderer.h and wlr_texture.h
7 years ago
emersion
6ecb0eefcb
render/gles2: transpose matrices before binding them
...
Setting glUniformMatrix3fv's transpose parameter to GL_TRUE is
not allowed for OpenGL ES 2.
This adds a wlr_matrix_transpose function.
7 years ago
Drew DeVault
1956d3cedb
Merge pull request #722 from emersion/matrix-redesign
...
Matrix redesign
7 years ago
Guido Günther
7fd7dff26f
egl: print supported dmabuf formats
...
Useful for debugging dmabuf related problems e.g. when a client requests
a certain and we fail to support it.
7 years ago
emersion
f1cbbac636
render/gles2: remove matrix transposition in shaders
7 years ago
emersion
876f07e9f1
renderer: replace wlr_texture_get_matrix by wlr_render_texture
7 years ago
emersion
0e253e0615
render/gles2: don't set inverted_y when EGL_WAYLAND_Y_INVERTED_WL is unsupported
7 years ago
emersion
8b58e1a3ad
Merge branch 'master' into matrix-redesign
7 years ago
emersion
824a95ad19
matrix: use 2D matrices
7 years ago
Guido Günther
653bc282a7
Indent GLSL by two spaces
...
since this is the most established indentation
7 years ago
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.
7 years ago
emersion
d26b67cb06
matrix: unify API, don't use array pointers
7 years ago
emersion
b6a3f240c7
matrix: move to types/
7 years ago
Guido Günther
2d0db16942
render: Flip textures in case of inverted_y
7 years ago
emersion
d9571f27e6
Merge pull request #691 from agx/egl_ext_match
...
Avoid false positives on egl extension matching
7 years ago
Guido Günther
d9f2e90df6
Avoid false positives on egl extension matching
...
Due to the strstr prefix match EGL_EXT_foo would be incorrectly matched
if EGL_EXT_foobar would be available but not foo.
This doesn't matter for the currently checked extensions but will matter
for EGL_EXT_image_dma_buf_import_modifiers vs
EGL_EXT_image_dma_buf_import
Code borrowed from weston
7 years ago
Guido Günther
2dc8a35db2
textures: tell us which texture format is unsupported
7 years ago
Guido Günther
d928ddc36c
wlr_egl_create_image: return NULL when function is missing
...
This matches the return value of elgCreateImage in case of error.
7 years ago
Guido Günther
d08792bfff
Add alpha to wlr_render_with_matrix
...
so we can use the alpha channel to e.g. blend in textures
7 years ago
Drew DeVault
1d9be89e2d
Revert "ELF Visibility"
7 years ago
Scott Anderson
86269052eb
Explicitly export EFL symbols
7 years ago
Guido Günther
4d496802dd
Log GL and EGL vendor
...
useful for debugging
7 years ago
Rodrigo Lourenço
168e26489a
Add missing dependencies
7 years ago
emersion
c2e1474010
Reformat all #include directives
7 years ago
emersion
36ead80cd1
Make wlr_signal_emit_safe private
7 years ago
emersion
5e58d46cc1
Add wlr_signal_emit_safe
7 years ago
emersion
bf6d245400
Swap buffers with damage
7 years ago
emersion
ddb1779f9f
render: make wlr_renderer_clear take a float[4] for the color
7 years ago
emersion
51c22d39a4
Merge remote-tracking branch 'upstream/master' into output-damage
7 years ago
Tony Crisci
ed5b1fdedd
Merge pull request #580 from emersion/screenshooter-renderer-backport
...
Backport screenshooter fixes from the renderer redesign v1
7 years ago
emersion
f34a1b75eb
render/gles2: use format bpp when reading pixels
7 years ago
emersion
6281deb90f
Merge remote-tracking branch 'upstream/master' into output-damage
7 years ago
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.
7 years ago
emersion
415a2b7c56
render: add wlr_renderer_clear and wlr_renderer_scissor
7 years ago
Tony Crisci
85a6939cf2
rename matrix model box to project box
7 years ago
Tony Crisci
d13114520a
move matrix model code to matrix.h
7 years ago
emersion
0365b587f0
output: add damage tracking via buffer age
7 years ago
emersion
a0f24b809e
output: add damage event
7 years ago
emersion
bde255933e
output: add wlr_output::damage, fixes #572
7 years ago
emersion
5017d7f762
rootston: only draw damaged regions
7 years ago
Tony Crisci
3751a17321
decorate xwayland views
7 years ago
emersion
b99d1f4fcc
Refactor wlr_egl_init to accept config_attribs
7 years ago
Drew DeVault
23fb663ea4
Merge pull request #453 from emersion/surface-transform
...
Add surface transforms support
7 years ago
emersion
18eb1eee3f
Listen to display destroy in xwayland, rename wlr_egl_free
7 years ago
emersion
4a56957a37
Fix inverted flipped-90 and flipped-270
7 years ago
emersion
6a69b4419f
Make wlr_output_transform_* functions public, refactoring
7 years ago
emersion
f4754ad1a2
Fix surface transforms
7 years ago
Scott Anderson
bc113c16aa
Use correct include path for glapi.h
7 years ago
Scott Anderson
02374b945d
Change glapi.sh to generate both files
7 years ago
Scott Anderson
37b8a096a9
Pass backend to render
7 years ago
Scott Anderson
9b984253e2
Move egl.h to render/egl.h
7 years ago
Drew DeVault
9e1ff2dce9
Merge pull request #140 from emersion/screenshooter
...
Add screenshooter
7 years ago
Scott Anderson
c0e5feea37
Add GL/EGL extension loader generator
7 years ago
emersion
0ce3135304
Move read_pixels from output to renderer
7 years ago
Versus Void
c5df6ca900
Fix memory leaks
7 years ago
Scott Anderson
009c3747a8
Multi-GPU DRM
7 years ago
Scott Anderson
517ba0bc16
Change egl_get_config to always use visual id
7 years ago
Drew DeVault
220a6e9bf6
Add xwayland activate and fix EGL bug
7 years ago
Tony Crisci
00f1686ce5
unset egl current before terminating display
...
fixes segfault when closing the compositor with an egl window.
7 years ago
Drew DeVault
9fa822c666
Fix minor typos
7 years ago
Tony Crisci
368f74e4df
Refactor meson build files
...
Use tabs for indentation and break up function calls over 80 col.
7 years ago
Dominique Martinet
f24b3df980
wlr renderer/texture: rename init to create when it does alloc
7 years ago
Drew DeVault
27c13d621d
Merge pull request #88 from 4e554c4c/alloc_crashing
...
Prevent alloc errors from crashing
7 years ago
Tony Crisci
4f2b1cc930
implement get_buffer_size for egl buffers
7 years ago
Tony Crisci
72a33b736f
implement texture get buffer size
7 years ago
Calvin Lee
5cc7342606
Prevent alloc errors from crashing
...
Resolves #76
7 years ago
nyorain
f998bb8299
Fix style issues
7 years ago
Dominique Martinet
4bbf718e7d
impl->destroy cleanup:
...
- remove trivial destroy() function
- make sure we check impl and impl->destroy before calling
- always call free if not implemented
7 years ago
Drew DeVault
2facf1df65
Fix software cursors
7 years ago
Drew DeVault
de6f32c84e
Refactor away wlr_renderer_state
7 years ago
Drew DeVault
94e6e6334b
Refactor out wlr_texture_state
7 years ago
Drew DeVault
d4b4bfb8bc
Fix #64
7 years ago
nyorain
f066ff6d02
Fix external shader
7 years ago
Drew DeVault
2d6d2bcef9
Merge pull request #75 from nyorain/egl_image_leak
...
Fix egl image leak in gles renderer
7 years ago
nyorain
862bc9783f
Fix egl image leak in gles renderer
7 years ago
Dominique Martinet
c323bfc6a0
GLES2: detach and delete shaders after LinkProgram
...
Also make sure program linked correctly!
7 years ago
Drew DeVault
62d8b252c0
Refactor meson and move xdg-shell into wlroots
7 years ago
Drew DeVault
a6efb90382
s/gen/ensure/ fixes #47
7 years ago
Drew DeVault
c24351681f
Refactor EGL handling
7 years ago
Drew DeVault
7095274a9e
Merge branch 'master' into drm_buffer
7 years ago
Drew DeVault
3c12a32d1f
Merge pull request #58 from acrisci/feature/enable-gl-blending
...
enable gl blending
7 years ago
Tony Crisci
49e97857c7
enable gl blending
...
This makes transparency work correctly.
fixes #56
7 years ago
Drew DeVault
888986b038
Remove excess logging
7 years ago
Drew DeVault
7da43ff8b0
Implement wlr_surface_flush_damage
7 years ago
nyorain
073dff63da
Fix style issues
7 years ago
nyorain
67369173aa
Implement drm (egl) buffer attaching
7 years ago
Drew DeVault
e2b7712302
Use texture->pixel_format instead of re-scanning
7 years ago
Drew DeVault
4de930542f
Implement partial texture uploads
7 years ago
Drew DeVault
bd2e9a7168
Style cleanup
7 years ago
nyorain
e167f41fde
Rename wlr_surface -> wlr_texture; attach -> upload
7 years ago
Scott Anderson
1db97a9af9
Updated DRM cursor rendering
8 years ago
Drew DeVault
41b98f21e5
Merge pull request #42 from acrisci/bug/no-switch-active-textures
...
Remove unnecessary calls to glActiveTexture
8 years ago
nyorain
fdab81e1c9
Use meson build system
8 years ago
Tony Crisci
9119be1dd1
Remove unnecessary calls to glActiveTexture
...
Since wlroots shaders only use one texture at a time (ie there is only one
sampler2D variable in any shader), it is unnecessary to switch between active
texture units at this time.
8 years ago
Tony Crisci
effea557bb
Implement destroying surfaces
...
Add a signal for wlr_surface destruction on the wlr_surface that compositors
can listen to to remove the surface from their state.
Implement a listener for this in the example wl_compositor to remove the
surface from its internal list of surfaces.
Destroy the surface in the compositor destroy_surface callback given when the
surface resource was created.
Add a reference to the surface resource to the wlr_surface so a compositor can
find it in its list of resources upon wlr_resource destruction.
8 years ago
Tony Crisci
6610aa7ca7
Implement shm buffer surface attach interface
...
Implement surface_attach method. This is called when a client attaches an shm
buffer with wl_surface_attach().
Implement the GLES2 interface for attaching shm buffers. This creates an opengl
texture with the shm buffer contents for the surface.
This commit also includes some working code to render the surfaces onto the
screen for demonstration purposes.
8 years ago
Drew DeVault
b08aa9fd35
Revert "Merge pull request #27 from ascent12/meson"
...
This reverts commit 85805da021
, reversing
changes made to 8189c64d7f
.
8 years ago
Scott Anderson
a2ba226ba3
Use subdir
8 years ago
Scott Anderson
924bf0f669
Changed build system to meson
8 years ago
Drew DeVault
8920b5d607
Merge branch 'wlcore'
8 years ago
Scott Anderson
0cd94f0cf0
Added software cursor fallback
8 years ago
Drew DeVault
5a2796266f
Support wl_shm pixel formats in gles2 renderer
8 years ago
Drew DeVault
2aafb5dd19
Add wlcore/wl_shm (WIP)
8 years ago
Drew DeVault
f252c5a792
Manually transpose matricies in shader
...
Since GLES2 doesn't do this for us, it seems, on all platforms.
8 years ago
Drew DeVault
b18209c904
Switch to GLES2
...
Closes #13
8 years ago
Drew DeVault
f4453d104d
Reorganize wlr-common
8 years ago
Drew DeVault
c9d5a0b2fb
Clean up Wayland backend GL context and such
8 years ago
Drew DeVault
2443a070e7
Add colored quad and ellipse rendering primitives
8 years ago
Drew DeVault
7a25d6c50b
Destroy gles3 wlr_surfaces
8 years ago
Drew DeVault
2b909e1729
Add error "handling" to gles3 backend
8 years ago
Drew DeVault
cd6a40d816
Further improvements to rendering subsystem
8 years ago
Drew DeVault
83f8864f0a
Add wlr_renderer and move quad rendering there
8 years ago
Drew DeVault
211488131f
Add wlr_shader to wlr-render
8 years ago
Drew DeVault
fc1dc1b5b0
Use constant VBO for quad, add matrix stuff
8 years ago