Kirill Primak
b0437fc416
xdg-shell: use unified map logic
2 years ago
Kirill Primak
c590bb600f
subcompositor: use unified map logic
2 years ago
Kirill Primak
6b40e08148
compositor: introduce unified map logic
2 years ago
Simon Ser
6668c822b3
cursor: unset wlr_output_cursor.texture on surface destroy
...
When the surface is destroyed, its current wlr_texture is about to
get destroyed as well. Reset wlr_output_cursor.texture to prevent
use-after-free.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3652
2 years ago
Simon Ser
9c9e3f6263
cursor: ignore wlr_cursor_set_surface() with same surface
...
Avoids damaging the output and rendering the cursor again if it
hasn't changed.
2 years ago
Kirill Primak
75d03f2b68
xwm: introduce associate/dissociate events
...
We'll soon introduce a unified wlr_surface map event. Up until now, compositors
have been using wlr_xwayland_surface's map event to setup various wlr_surface
related listeners (e.g. commit). This will no longer be possible when that
event is moved over to wlr_surface. Introduce new events where the compositor
can add/remove wlr_surface event listeners.
2 years ago
Kirill Primak
2d6a09d9f0
Revert "xwm: emit new_surface/destroy on associate/dissociate"
...
Firing new_surface when a wlr_surface is associated to the X11 window is too
late: the X11 client might've sent configure events before that.
This reverts commit 039cca8a51
.
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3606
2 years ago
Simon Ser
beb820b573
render/vulkan: improve error handling in vulkan_begin_render_pass()
...
Release the command buffer if we end up not submitting it.
2 years ago
Simon Ser
0ba3ea3bcd
render/vulkan: improve error handling in render_pass_submit()
...
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3644
2 years ago
Simon Ser
30aca4df0d
backend/drm: introduce wlr_drm_mode_get_info()
...
This allows compositors to get back the raw drmModeModeInfo and
look at DRM-specific fields and flags.
2 years ago
Simon Ser
ba276e5ac2
render/vulkan: handle vulkan_record_stage_cb() failures
2 years ago
Simon Ser
3f0487d310
backend/drm: move forward decl up for drmModeModeInfo
...
This allows doc generators to properly associate the doc comment
with the function instead of the typedef.
2 years ago
Simon Ser
5bcd537ff4
output/cursor: use new rendering API
2 years ago
Simon Ser
8e81b4bb42
examples: convert to new rendering API
...
Left out multi-pointer (will be removed) and quads (requires
arbitrary rotation).
2 years ago
Simon Ser
8fe29e6bd1
backend/drm: use new rendering API
2 years ago
Simon Ser
93a6acae9f
output: add wlr_output_begin_render_pass()
2 years ago
Alexander Orzechowski
95062904c7
wlr_scene: Introduce wlr_scene_buffer_set_opacity
2 years ago
Alexander Orzechowski
2346b90a9f
wlr_scene: Make scene_rect_from_node public
...
This is in an effort to be more consistent with both already public
getters: wlr_scene_buffer_from_node and wlr_scene_tree_from_node
2 years ago
Alexander Orzechowski
88f80c4a7c
wlr_scene: Make scene_tree_from_node public
...
This is to allow for compositors that want to be more implicit about
how their scene is organized. Such a compositor may want to walk up
at a certain scene node to find something such as a surface to focus on.
2 years ago
Alexander Orzechowski
61c157269e
wlr_scene: Add documentation to wlr_scene_buffer_from_node
2 years ago
Simon Ser
e07c77f846
render/vulkan: implement render pass API
2 years ago
Alexander Orzechowski
8af00d5534
renderer/gles2: Implement render pass interface
2 years ago
Alexander Orzechowski
b1d26ed47b
renderer/gles2: Compute texture coordinates based off of vertex positions
2 years ago
Alexander Orzechowski
45b2a8eee2
renderer/gles2: Merge get_buffer and create_buffer
2 years ago
Alexander Orzechowski
6f67bfe5ab
renderer/gles2: Interpret matrix as column major in shader
...
Avoids us needing to transpose.
2 years ago
Simon Ser
3de330ec85
render/vulkan: add 10, 12, and 16-bit YCbCr formats
2 years ago
Simon Ser
2c6aeed7d6
output: use pending render format if any
...
If a modeset contains a render format change, use that instead of
the current one stored in wlr_output.render_format.
This fixes render_bit_depth configuration not being applied without
a second modeset in Sway.
2 years ago
Simon Ser
28e8d92263
render/vulkan: document TEXTURE_TRANSFORM_* in shader
2 years ago
Simon Ser
f60b367db7
render/vulkan: drop unused vulkan_has_extension()
2 years ago
Simon Ser
42eec38ab6
render/vulkan: drop unused vulkan_change_layout_queue()
2 years ago
Simon Ser
4d634276a4
render/egl: check for EGL_EXT_device_query in get_egl_device_from_drm_fd()
...
We use eglQueryDeviceStringEXT() later on, which is optional and
requires support for the EGL_EXT_device_query extension.
2 years ago
Simon Ser
7099fa2ea4
render/vulkan: de-dup pipeline layout initialization
2 years ago
Simon Ser
16dea12dae
render/vulkan: add more YCbCr formats
...
The Vulkan spec states:
> For the purposes of range expansion and Y′CBCR model conversion,
> the R and B components contain color difference (chroma) values
> and the G component contains luma.
The equations below that sentence also help understand the mapping.
2 years ago
Simon Ser
a682fa6c21
render/vulkan: require support for linear filter for YCbCr
...
YCBCR_CONVERSION_LINEAR_FILTER is not enough: this one only covers
chromaFilter. For magFilter/minFilter we need FILTER_LINEAR as well.
2 years ago
Simon Ser
91d469d8c0
render/vulkan: check format support before creating YCbCr sampler
...
We need to check whether the format supports dma_tex_ycbcr_features
before creating the YCbCr sampler.
2 years ago
Simon Ser
c7ae9dfaf8
render/vulkan: generalize YCbCr format support
2 years ago
Simon Ser
50b494d0f9
render/vulkan: add init_{default,ycbcr}_pipeline_layout()
2 years ago
Simon Ser
5ea0eb3468
render/vulkan: add vulkan_get_pipeline_layout()
...
Will make it easier to add more pipeline layouts for other YCbCr
formats.
2 years ago
Simon Ser
fd38761676
render/vulkan: introduce struct wlr_vk_pipeline_layout
...
This will make it easier to create one pipeline layout (plus related
objects) per YCbCr format.
2 years ago
Simon Ser
db619009dc
render/vulkan: use same sampler params for RGBA and NV12
2 years ago
Simon Ser
9755016422
render/vulkan: use VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE for default sampler
...
We don't actually need the REPEAT mode, and this makes things more
consistent with the YCbCr sampler (which requires CLAMP_TO_EDGE for
spec compliance).
Also drop borderColor which is unused for this mode.
2 years ago
Simon Ser
fe7c998666
render/vulkan: use identity swizzle for YCbCr formats
...
Fixes the following validation error:
[ VUID-VkImageViewCreateInfo-pNext-01970 ] Object 0: handle = 0x62e00003c400, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xf378e14b | vkCreateImageView(): If there is a VkSamplerYcbcrConversion, the imageView must be created with the identity swizzle.
2 years ago
Simon Ser
091aa5582a
render/vulkan: fix VkPipelineLayout when texturing NV12
...
The default pipeline layout was always passed. However, for NV12 we
need to pass a different one.
2 years ago
Simon Ser
fc3ad784e0
render/vulkan: extract quad pipeline init to separate function
...
Makes it clearer that all of these structs are for the quad pipeline.
2 years ago
Kirill Primak
dc6402d153
util/box: transform empty boxes' origins
...
Not a huge fan of this, but changing this behavior would be a breaking change
to a stable API.
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3650
2 years ago
Simon Ser
09f5a00585
render/vulkan: fix YCbCr format check in vulkan_texture_from_pixels()
2 years ago
Kirill Primak
5f4a35290d
util/box: always treat NULL boxes as empty
2 years ago
Kirill Primak
5d67bbde86
util/box: simplify empty box case in wlr_box_intersection()
2 years ago
Alexander Orzechowski
d495fb8c04
wlr_{box, fbox}_equal: Consider empty boxes NULL
2 years ago
Alexander Orzechowski
acaf57dcca
wlr_{box, fbox}_equal: Handle NULL
2 years ago