Commit graph

170 commits

Author SHA1 Message Date
Georg Lehmann
a9654d6cfb rendervulkan: Only create useful pipelines. 2022-01-31 17:09:10 +00:00
Georg Lehmann
bf55e08712 rendervulkan: Remove swap channels pipeline variant. 2022-01-26 13:06:30 +00:00
Georg Lehmann
4f0f0065ad rendervulkan: Remove swap channels.
Unused since 76292f01cb, partially broken and
unnecessary because we should be able to always use the correct VkFormat.
2022-01-26 13:06:30 +00:00
Joshua Ashton
10943045ff rendervulkan: Support modifiers on SRGB images 2022-01-25 05:13:20 +00:00
Georg Lehmann
5bfc27576d build: preparations for more shaders 2022-01-23 05:10:41 +00:00
Georg Lehmann
edb77e2490 rendervulkan: Add missing barriers in vulkan_create_texture_from_bits. 2022-01-20 07:37:20 +00:00
Georg Lehmann
eff99fdf81 rendervulkan: Add acquire and release barriers for imported images. 2022-01-20 07:37:20 +00:00
Georg Lehmann
10ba9f3908 rendervulkan: Fix WAW hazard for screenshot image. 2022-01-20 07:37:20 +00:00
Georg Lehmann
ca09577632 rendervulkan: Stop using unnormalized ycbcr samplers.
This is not allowed for ycbcr samplers.
2022-01-20 07:37:20 +00:00
Georg Lehmann
73025b24e2 rendervulkan: Avoid writing rgb descriptors for ycbcr images. 2022-01-20 07:37:20 +00:00
Georg Lehmann
1bb24ded57 rendervulkan: Remove empty texture. 2022-01-20 07:37:20 +00:00
Georg Lehmann
dcc290725a rendervulkan: Enable NULL descriptor feature. 2022-01-20 07:37:20 +00:00
Georg Lehmann
7d6ad29757 rendervulkan: Enable samplerYcbcrConversion. 2022-01-20 07:37:20 +00:00
Georg Lehmann
ca2c770d64 rendervulkan: Always account for push frameid even if it's unused. 2022-01-20 07:37:20 +00:00
Georg Lehmann
95d25290d3 rendervulkan: Switch to GL_ARB_shader_clock and enable shaderSubgroupClock.
shaderSubgroupClock is better supported than shaderDeviceClock (e.g. anv
and before radv < gfx8).
2022-01-20 07:37:20 +00:00
Georg Lehmann
e1397a26e3 rendervulkan: Transition present image to general before compositing. 2022-01-20 07:37:20 +00:00
Georg Lehmann
96fb7aeed0 rendervulkan: Transition present image to PRESENT_SRC in nested mode. 2022-01-20 07:37:20 +00:00
Georg Lehmann
2c5dae8439 rendervulkan: Wait for fence after acquire next image. 2022-01-20 07:37:20 +00:00
Georg Lehmann
78482d3f08 rendervulkan: Remove dead fence code.
This was already commented out when it was added 2 years ago, and it doesn't
seem useful.
2022-01-11 15:35:20 +01:00
Georg Lehmann
7c94fc3437 rendervulkan: Compact descriptor set bindings. 2022-01-05 05:02:10 +00:00
Georg Lehmann
7c5cc5e67e rendervulkan: Rework sampler cache.
Less awkward to use and also fixes a texture leak because the shared_ptr
to the texture is no longer stored in the sampler cache.
2022-01-05 05:00:46 +00:00
Joshua Ashton
589fd61d58 rendervulkan: Refactor to use shared_ptr for VulkanTexture_t 2021-12-17 15:43:26 -08:00
Joshua Ashton
0e7ef385d5 steamcompmgr: Move commit refs to shared_ptr
This is the right thing to do given a vulkanTexture could refer to muliple commits.
2021-12-17 15:43:26 -08:00
Joshua Ashton
ec92dc75e5 rendervulkan: Fix release barrier
Need to use our queueFamilyIndex as the src.
2021-12-17 11:58:06 +01:00
Joshua Ashton
ced63bf255 rendervulkan: Clean up some stuff dependent on k_nMaxSamplers 2021-12-15 22:37:50 -08:00
Joshua Ashton
023948e22d rendervulkan: Fix dangling YCbCr descriptors 2021-12-15 21:29:16 -08:00
Pierre-Loup A. Griffais
11a3bfb199 rendervulkan: change default YUV mode to limited color range
That's what Remote Play uses, we can add metadata to pick eventually but that'll
work for now.
2021-12-15 16:45:03 -08:00
Joshua Ashton
296a3d498d steamcompmgr: Add framework for held commits 2021-12-13 23:47:29 -08:00
Joshua Ashton
23430084e2 rendervulkan: Blend in linear space
We must blend in linear space, not SRGB space or we get these horrible browns.

Gets us closer to how this looks with planes.
2021-11-22 21:48:58 -08:00
Bas Nieuwenhuizen
c0d745baac Use atomics for CVulkanTexture refcounts.
Otherwise the double access on destruction could be very messy. The
default for all these operations is the cst memory order which is
certainly good enough though technically not the most optimal.
(Could do acq_rel for all of them).
2021-11-22 21:45:52 -08:00
Bas Nieuwenhuizen
3a1776f0f8 Properly lock the id->CVulkanTexture map.
Only locks the map itself, the lifetime of the texture itself has
still to be known to be valid.
2021-11-22 21:45:52 -08:00
Joshua Ashton
dbdf1095f8 rendervulkan: Add --composite-debug
Adds a --composite-debug flag for displaying frame markers on alternating corners of the screen or rotating in a localized square when compositing.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-11-22 21:40:10 -08:00
Simon Ser
e80e4393de Add CVulkanTexture::{m_width,m_height} 2021-11-01 09:56:08 +01:00
Simon Ser
49fb59ac56 Don't use std::unique_ptr for screenshot textures
We need to keep the screneshot textures around if they are still
ref'ed when we re-make the swapchain. std::unique_ptr makes this
impossible. Switch to std::shared_ptr, and get rid of the nLockRefs
field.
2021-11-01 09:44:51 +01:00
Joshua Ashton
0aa6761157 Introduce screenshot saving thread
Fixes hangs/stutters when taking screenshots.

Should be trivial to extend to pipewire too.
2021-10-29 13:13:23 +02:00
Simon Ser
21b263768f rendervulkan: order formats with alpha first
This allows the cursor to be exported as an ARGB8888 buffer suitable
for the cursor plane.
2021-09-29 19:02:18 +02:00
Joshua Ashton
50f695591d rendervulkan: Force nearest filtering for non-scaled and integer offset things
No reason to do linear filtering otherwise.
2021-09-15 10:58:38 -07:00
Joshua Ashton
320a23220a rendervulkan: Sample at texel centers
I missed adding this back in when I did the PR that was meant to fix this when I was debugging... Oops.
2021-09-15 10:58:38 -07:00
Simon Ser
a480fe81fe Drop VulkanRenderer_t.parent
We don't need the wlroots parent GLES2 renderer anymore.
2021-09-15 13:35:42 +02:00
Simon Ser
2772a17f22 Implement wlr_renderer_impl.get_drm_fd
This depends on VK_EXT_physical_device_drm.
2021-09-15 13:35:42 +02:00
Simon Ser
0bbecd7e90 Extract fence from Vulkan texture if buffer is shm 2021-09-15 13:35:42 +02:00
Simon Ser
118d8213e4 rendervulkan: implement wlr_renderer_impl.texture_from_buffer 2021-09-15 13:35:42 +02:00
Simon Ser
db1ffbe2e4 rendervulkan: remove wlr_renderer_impl.init_wl_display
We don't need EGL_bind_wayland_display anymore.
2021-09-15 13:35:42 +02:00
Simon Ser
6fbabb94b3 rendervulkan: build list of supported wl_shm formats 2021-09-15 13:35:42 +02:00
Simon Ser
a325cf193b Use wlroots' wl_drm implementation
wl_drm is not available on Vulkan.

References: https://github.com/swaywm/wlroots/pull/2708
2021-09-15 13:35:42 +02:00
Simon Ser
123df9006f rendervulkan: implement wlr_renderer_impl.get_render_buffer_caps 2021-09-15 13:35:42 +02:00
Simon Ser
d13d19981b rendervulkan: drop wlr_renderer_impl.render_ellipse_with_matrix stub
This has been removed from wlroots upstream.
2021-09-15 13:35:42 +02:00
Bas Nieuwenhuizen
83eae082fa Warning fix 2021-09-14 17:29:51 -07:00
Bas Nieuwenhuizen
e510af1b7e Add a proper release barrier for modifier based images when not nested.
RADV does retiling in that barrier. Still hinky overall but this fixes
using compositing with DCC compressed images on RADV.
2021-09-14 17:22:07 -07:00
Joshua Ashton
ce87bf1b76 Init format info after initializing DRM
Otherwise all our modifiers/formats and stuff are garbage.

Fixes: #269
2021-09-14 17:01:42 -07:00