Simon Ser
ddfee63055
render: use DRM formats in wlr_renderer_get_shm_texture_formats
4 years ago
Simon Ser
549435aee5
render/gles2: replace wlr_gles2_texture.wl_format with drm_format
4 years ago
Simon Ser
fab396f149
render/gles2: convert format table to DRM formats
4 years ago
Simon Ser
bfd020047d
render/gles2: remove current_buffer checks
...
All backends now use wlr_swapchain. This means the renderer is
guaranteed to have a current_buffer bound.
Remove the legacy code used for EGLSurface.
4 years ago
Brandon Dowdy
8aa38fe73e
render/egl: remove *config_attribs and wlr_egl->config
...
Breaking changes:
Both "EGLint *config_attribs" and "wlr_egl->config" no longer exist.
4 years ago
Simon Ser
afdf4dc890
render/gles2: make EGL context current in bind_buffer
...
Instead of requiring callers to manually make the EGL context current
before binding a buffer and unsetting it after unbinding a buffer, do
it inside wlr_renderer_bind_buffer.
This hides renderer-specific implementation details inside the
wlr_renderer interface. Non-GLES2 renderers may not use EGL.
This removes all EGL dependencies from the backends.
References: https://github.com/swaywm/wlroots/issues/2618
References: https://github.com/swaywm/wlroots/pull/2615#issuecomment-756687006
4 years ago
Simon Ser
02a086599c
render/gles2: save/restore EGL context in destroy_buffer
...
It can be surprising that destroying a buffer changes the EGL context,
especially since this can be triggered from anywhere wlr_buffer_unlock
is called.
Prevent this from happening by saving and restoring the EGL context.
4 years ago
Simon Ser
3f7e0cf5f0
render/egl: remove surface and buffer age args from make_current
...
These aren't used anymore.
4 years ago
Simon Ser
1d461687d2
render/egl: replace init/finish with create/destroy
...
This ensures wlr_gles2_renderer can properly take ownership of the
wlr_egl.
Closes: https://github.com/swaywm/wlroots/issues/2612
4 years ago
Simon Ser
2585f322cb
render/gles2: fix EGL use-after-free
...
The wlr_egl was cleaned up too early.
While at it, also fix a memory leak.
Fixes: b899a412e3
("backend: remove wlr_egl from all backends")
4 years ago
Simon Zeni
b899a412e3
backend: remove wlr_egl from all backends
4 years ago
Simon Ser
3fd8098881
render/gles2: require GL_EXT_unpack_subimage
...
We implicitly depended on this extension.
4 years ago
Simon Ser
f91e89fd9f
render/gles2: query alpha size from render buffer
...
If we're using a render buffer, query the alpha size from it.
Closes: https://github.com/swaywm/wlroots/issues/2527
4 years ago
Simon Ser
be8403e73d
render/gles2: don't eglGetConfigAttrib on EGL_NO_CONFIG_KHR
...
If we don't have an EGL config, don't try to query anything from it.
4 years ago
Simon Ser
c94ab99ae2
render: rename wlr_renderer_get_formats
...
Rename wlr_renderer_get_formats to wlr_renderer_get_shm_texture_formats.
This makes it clear those formats are only suitable for shm import.
4 years ago
Simon Ser
49115e9d5d
render: rename wlr_renderer_get_dmabuf_formats
...
Rename wlr_renderer_get_dmabuf_formats to
wlr_renderer_get_dmabuf_texture_formats. This makes it clear the formats
are only suitable for creating wlr_textures.
4 years ago
Simon Ser
5d008d9030
render: introduce wlr_renderer_get_dmabuf_render_formats
...
It describes which DMA-BUF formats can be used to render.
4 years ago
Simon Ser
61612ecb36
render: remove wlr_renderer_format_supported
...
Instead, callers can just use wlr_renderer_get_formats and iterate over
the list.
This function was unused in wlroots.
4 years ago
Simon Ser
eb8360bda3
render: introduce wlr_renderer_get_drm_fd
4 years ago
Simon Ser
1245730ea2
render/gles2: fix y-inverted output when rendering to buffer
4 years ago
Simon Ser
6136fe87d1
render/gles2: implement wlr_renderer_bind_buffer
4 years ago
Simon Ser
1dbcfdaf81
render/gles2: remove gles2_procs
...
Move the global into wlr_gles2_renderer. This removes global state and
allows us to have multiple renderers with different GL loaders.
4 years ago
Simon Ser
62da61716f
render/gles2: make push/pop debug functions take a wlr_renderer
4 years ago
Simon Ser
26af316b3b
render/gles2: make wlr_gles2_texture_from_* private
...
These functions are unused by compositors (see e.g. [1]) and prevent
wlr_gles2_texture from accessing wlr_gles2_renderer state. This is an
issue for proper teardown [2] and for accessing GLES2 extensions.
[1]: https://github.com/swaywm/wlroots/pull/1962#issuecomment-569511830
[2]: https://github.com/swaywm/wlroots/pull/1962
4 years ago
Andri Yngvason
e05a85327f
render: gles2: Fix y-inversion in gles2_blit_dmabuf()
4 years ago
Simon Zeni
4a4da256dd
render/gles2: use glGetAttribLocation instead of hardcoded indices
4 years ago
Simon Ser
315bf08733
render: add wlr_render_subtexture_with_matrix
...
This renders only a subset of the texture, instead of the full texture.
5 years ago
Andri Yngvason
78d6eed6b3
render: Fix blit_dmabuf() breakage due to API change
5 years ago
Andri Yngvason
b64a8a7f98
render: Add wlr_renderer_blit_dmabuf()
5 years ago
Simon Ser
e91417ea8d
render: stop making EGL context current in wlr_egl_init
...
This leaves an EGL context current behind. wlr_gles2_renderer_create was
assuming the EGL context was already current because of this (because it
called a GL function right off the bat).
5 years ago
Simon Ser
1edc42157b
render/egl: introduce wlr_egl_unset_current
...
This function can be called after wlr_egl_make_current to cleanup the
EGL context. This avoids having lingering EGL contexts that make things
work by chance.
Closes: https://github.com/swaywm/wlroots/issues/2197
5 years ago
Simon Ser
5dc3a9c754
render/gles2: add wlr_gles2_renderer_check_ext
5 years ago
Simon Ser
d10f8a98ec
render: only expose linux-dmabuf if EGL extension is supported
...
Only expose linux-dmabuf extension if EGL_EXT_image_dmabuf_import_ext is
supported.
Closes: https://github.com/swaywm/wlroots/issues/2076
5 years ago
Simon Ser
4a1015faff
render/gles2: only call wlr_egl_bind_display if supported
...
This allows us to hard-fail if the extension is advertised but we fail
to enable it.
5 years ago
Isaac Freund
c682d97841
Return failure of wlr_renderer_init_wl_display()
...
This makes it easier for the user of this library to properly handle
failure of this function.
The signature of wlr_renderer_impl.init_wl_display was also modified to
allow for proper error propagation.
5 years ago
Simon Ser
6d3f3b9300
render/gles2: unbind textures after use
...
Keeping textures bound results in hard-to-debug situations where some GL
operations incorrectly affect the texture.
5 years ago
Simon Ser
515679e4fe
Refactor EGL/GL API loading
...
Remove glapi.sh code generation, replace it with hand-written loading
code that checks extension strings before calling eglGetProcAddress.
The GLES2 renderer still uses global state because of:
- {PUSH,POP}_GLES2_DEBUG macros
- wlr_gles2_texture_from_* taking a wlr_egl instead of the renderer
5 years ago
Ronan Pigott
5df606d8ab
render/gles2: do not set GL_TEXTURE_MAG_FILTER
5 years ago
Drew DeVault
4c9423278a
Introduce wlr_renderer_get_egl
5 years ago
Scott Anderson
85a2ee6d30
render/gles: Simplify textures a bit
...
We don't need our own enum for types. Instead we just use
GL_TEXTURE_{2D,EXTERNAL_OES}, which already describes usage.
Also fixes a situation where we were using GL_TEXTURE_2D in a situation
we should not have. wl_drm buffers are always GL_TEXTURE_EXTERNAL_OES,
no matter if they're RGB or any other format.
5 years ago
Filip Sandborg
734c64a6cc
render/gles2: fix calculation for partial gles2 pixel read ( #1809 )
5 years ago
Simon Ser
107a1789ea
render/gles2: print GL_RENDERER
...
This is often the name of the GPU and can help debugging graphics issues.
6 years ago
emersion
e42178d03f
render: switch wlr_renderer to wlr_drm_format_set
6 years ago
emersion
5445d8aad0
meson: enable more compiler warnings
6 years ago
Timidger
9af0c5338f
Standardize the wlr_box input paramaters
...
Fixes #1094
6 years ago
emersion
d592dcdedd
render/gles2: check for GL_OES_EGL_image_external
6 years ago
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.
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
.
6 years ago
Drew DeVault
a0afedcd8f
Move side-effect out of assert statement
6 years ago
emersion
7cbef15206
util: add wlr_ prefix to log symbols
6 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
NeKit
6f29db1044
gles2 renderer: introduce struct wlr_gles2_tex_shader
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
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
41130fe54b
render: bind wl_drm in renderer
7 years ago
Ilia Bozhinov
47ffd0e184
gles2: pre-multiply alpha and fix blending function
7 years ago
emersion
71ca45e2c0
Make sure we don't use others' prefixes
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
emersion
f3f61bed3e
Untie wlr_gles2_renderer and wlr_gles2_texture
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
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
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
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
emersion
f1cbbac636
render/gles2: remove matrix transposition in shaders
7 years ago
emersion
8b58e1a3ad
Merge branch 'master' into matrix-redesign
7 years ago
emersion
824a95ad19
matrix: use 2D matrices
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
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
emersion
c2e1474010
Reformat all #include directives
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
emersion
a0f24b809e
output: add damage event
7 years ago
emersion
5017d7f762
rootston: only draw damaged regions
7 years ago