Commit graph

746 commits

Author SHA1 Message Date
Pierre-Loup A. Griffais
8827ea367e drm: re-add non-liftoff path, with logging. 2020-01-13 20:18:28 -08:00
Pierre-Loup A. Griffais
3a17f3eed7 steamcompmgr: small fixes to not fix damage until we really painted. 2020-01-13 18:53:29 -08:00
Pierre-Loup A. Griffais
e637bdad10 steamcompmgr: gpuvis frame cadence debugging.
Now that things are generally more stable, let's take a look.
2020-01-13 18:45:53 -08:00
Pierre-Loup A. Griffais
c77df96523 rendervulkan: always write all layers in the descriptor.
Use an empty dummy texture for unbound slots, as the driver can't know
what the shader will sample from.

Also remove any sort of implicit attempts at compaction of slots.
2020-01-09 02:34:54 +00:00
Pierre-Loup A. Griffais
807b24f731 steamcompmgr: Added a debug option to always composite.
This way we never flip anything but our own buffers, to facilitate bug
isolation.
2020-01-08 02:40:14 +00:00
Pierre-Loup A. Griffais
6efedbb587 DRM: Protect ourselves against a race condition in flip accounting.
The flip handler could try to deref before we had added the refs.
2020-01-08 01:38:36 +00:00
Pierre-Loup A. Griffais
2092afd078 steamcompmgr: we weren't hiding the Steam window anymore.
Also fix the mouse focus edge condition to actually be correct.
2020-01-07 23:39:24 +00:00
Pierre-Loup A. Griffais
5598fcfa57 steamcompmgr: Handle early WL_SURFACE_ID notification.
Untested for now as it only happens when we lose a race, leaving a
printout to confirm if it worked in the wild later.
2020-01-07 19:50:34 +00:00
Pierre-Loup A. Griffais
94c4c05e40 Reconcile new cursor DRM code and nested path. 2020-01-06 20:16:27 -08:00
Pierre-Loup A. Griffais
4d6602ba4b DRM: Make liftoff layers conditional for now.
Can't get them to be useful, might need library and amdgpu DC fixes.
2020-01-06 19:36:20 -08:00
Pierre-Loup A. Griffais
6b3e2ddf68 DRM: multi-plane support via libliftoff.
Import libliftoff as subproject and plumb our planes through it.

Wait for a flip to complete immediately after queuing it for now.

Also immediately wait for cursor image uploads, as we don't have to
do Vulkan rendering anymore after queuing an upload.

Cursor shows up with format hack, but is badly corrupt. We might need
to use a DRM dumb_fb rather than going through the same Vulkan image.

Alpha bits of surfaces are ignored again, need to make Steam select
an ARGB visual for overlay windows, probably.

Setting up the "alpha" plane property somehow makes overlays not
show up at all despite liftoff happily letting us go with scanout.
2020-01-05 22:19:04 -08:00
Pierre-Loup A. Griffais
a8d96fb227 steamcompmgr: let's go with -e instead, for embedded.
As opposed to nested.
2020-01-05 22:19:03 -08:00
Pierre-Loup A. Griffais
d5e90511d5 rendervulkan: Fix corruption at the bottom of the compute path.
Thread group size doesn't have to be aligned with image dimensions, as
is the case with 16x16 on a 1920x1080 output.
2020-01-05 19:01:44 -08:00
Pierre-Loup A. Griffais
0565c32a55 steamcompmgr: Don't composite the cursor when it's empty. 2020-01-05 18:10:15 -08:00
Pierre-Loup A. Griffais
c4321e54b2 rendervulkan: Some attempted fixes, in vain.
Only set implicit_sync on in-bound buffers, we'll sync our scanout image
ourselves by exporting the fence and passing to DRM, and flushing.

The fence export actually fails, so leave it commented our for now.

Flushing also doesn't do anything, the bottom of our scanout image is still
corrupt when scanning out to DRM.
2020-01-05 17:56:59 -08:00
Pierre-Loup A. Griffais
db94055511 Fix DRM output, initializing SDL apparently breaks it.
We don't want SDL input in the non-nested case at any rate.
2020-01-05 04:45:45 -08:00
Pierre-Loup A. Griffais
83683d270c steamcompmgr: Add command-line argument for relying on Steam GameIDs.
So we can easily test single-app scenarios by generating placeholder
ones. Will also make it more robust by using Xres1.2, which should
remove the need for Alkazar's patch for Dead Cells and other apps that
don't get tagged right by the current overlay.
2020-01-04 19:37:04 -08:00
Pierre-Loup A. Griffais
97aac0bbf9 Add some code to detect if the cursor becomes fully hidden.
That should come in handy for auto-grabbing in the nested case.
2020-01-04 19:19:54 -08:00
Pierre-Loup A. Griffais
8a8eea1df3 Don't like this 2013 cursor rescaling logic anymore.
It worked well enough with the Big Picture cursor, and seeing it change
scales between Steam and a game was sometimes jarring, but it doesn't
compute hotspot offset right, and scaling cursors doesn't come out great
a lot of the time.
2020-01-02 19:43:10 -08:00
Pierre-Loup A. Griffais
d357278b98 Add SDL input handling in the nested case, plumb basic mouse stuff.
Relative mouse broken right now.
2020-01-02 19:26:53 -08:00
Roman Gilg
b11f46d4e7 fix: handle terminate better 2020-01-02 00:00:34 +01:00
Pierre-Loup A. Griffais
81e5e1b2f8 steamcompmgr: re-add cursor painting.
We're in sole control of the cursor now, there's no "fake" cursor anymore.

Don't attempt to hide it in X, it doesn't matter.

Also Vulkan rendering of a texture populated from arbitrary bits.

Also add the third layer to the shader... Badly needs clean-up.
2020-01-01 23:36:58 +09:00
Pierre-Loup A. Griffais
898e653c39 rendervulkan: Use FIFO present mode for now in the nested case.
That's a good enough proxy for a real vblank cadence and helps my Envy
not catch on fire.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
010ba40691 wlserver: Flush clients on any unlock.
This should make steamcompmgr messages actually go when we send them.

We're pulling too many frames out of "vsynced" clients now, need to instill
a real frame cadence based on vblank and notify based on that.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
c70e71d1e2 I think I've come to terms with not building wlr stuff as C++.
Might as well clean up some of the initial madness.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
7bf4d963b4 x11: With great power comes great responsibility, I guess.
The WL_SURFACE_ID messages force us to register SubstructureRedirectMask,
which means we have to participate in a bunch more stuff before windows
will resize and reconfigure properly. This fixes a bunch of problems with
real games.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
56c1fd217e wlserver: I think that worked, now make it not destroy a core. 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
24c10095e5 wlserver: Add naive locking to try to see if that fixes hangs for good.
Change the wl event loop to busy-wait for now as that's easiest to make
unlock periodically.
2020-01-01 15:30:38 +09:00
Roman Gilg
a537a04b10 docs: add back license file
The project was licensed under BSD-2-Clause. Add this information back again.
2020-01-01 15:30:38 +09:00
Roman Gilg
bc042c70f5 build: do install executable
In order to launch the binary with for example Mesa being installed not into
the regular /usr prefix but into something like /opt the binary needs to be
launched from the install directory and not only directly from the build
directory.

So actually do install the executable.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
2a9a4c3993 steamcompmgr: disable fadeout for now.
It causes use-after-free bugs since the current logic is based
on GLX TFP hold/release semantics, which don't apply anymore.

Reinstate later.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
4209391fe1 Vulkan: Can have a normal-sized descriptor pool now. 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
7f4d791c20 Vulkan: free imported textures, removing the small last leak of GTT.
Some more leading whitespace for good measure.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
85cab97737 Vulkan: try to collate output-specific things together.
Main motivation was to have a clean-ish spot to add a ping-pong
command-buffer instead of allocating one every frame. Leaking
significantly less GTT now.

Also add some more leading whitespace courtesy of Kate.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
97c81ee9fc Helper HUD to know if we're compositing layers with the GPU or not. 2020-01-01 15:30:38 +09:00
Roman Gilg
b966a74e0c feat: add signal handlers 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
60ce06b4cd Some primitive rotation support as a test. 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
2934681b56 Some more GL leftover stuff was hiding. 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
ed52f586af Add more float comparisons. Every project should have at least 4. 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
8db29e4c24 Make direct DRM flipping match composite description.
Also overload VulkanPipeline_t some more. :/
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
c186dc28cf Make all output paths coexist in harmony. 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
7d97f096d4 Don't need the workaround to recreate overlay ARGB pixmaps anymore. 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
46427fd810 Vulkan: just cache various samplers for now, use a single descriptor.
Caching descriptors is useless when we're importing different images
every draw.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
9d49e1a682 Vulkan: descriptor cache.
Doesn't help running out right now, as the DMA-BUFs from a new app
frame get imported as different Vulkan textures. Not sure how to
ensure continuity across several sightings of the original swapchain
images yet.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
0915d864c0 Vulkan: compress layer slots into contiguous texture slots.
Otherwise we can crash if what we get passed has holes, like when the
main layer loses its texture abruptly but overlays are still on top of it.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
30d8582b62 Ding dong the witch is dead! 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
d3e0b3c963 Select a non-SRGB swapchain format to fix washed out colors. Thanks Bas! 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
9d359e3213 I guess HLSL does weird padding with float2s?
With this and some more fixes, output pipeline looks pretty much perfect.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
ec34dad8a9 Plumb steamcompmgr window painting to Vulkan compute. 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
622f198549 Fix swapped channels on glxgears rendering. Still super dark though. 2020-01-01 15:30:38 +09:00