Commit graph

276 commits

Author SHA1 Message Date
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
Pierre-Loup A. Griffais
8e4a4101f5 Vulkan: set scanout bit on memory for imported images.
As Bas points out, their original WSI allocated them expecting them to
get scanned out, so this has a better chance of describing their memory
layout in the absence of full modifiers. This fixes corruption for me
on Vega at least, but glxgears colors are swapped still.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
445844e83f Bas rightfully points out the system wlroots dep isn't needed anymore. 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
bfd02982ab Kill EGL with fire, rest of GL will follow shortly.
Working nested Vulkan path now using surface from SDL2 window.

For some definition of working, tile corruption there too.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
9517ace5c0 Taking about 0.5ms at 1080p on a HP Envy Raven laptop with this.
Sometimes we're running _before_ the app according to gpuvis, beware.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
15e6809031 It helps to actually import the DRM data!
Getting glxgears-shaped tile corruption, which is closer to expectations
without real DRM modifiers.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
d7dc7b435d Vulkan: start of actual rendering code.
Getting corruption on screen at 7FPS!
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
586bc69f5f Vulkan: some surgery on image code to make it import textures as well. 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
e61b20710e Enough Vulkan stuff to render to an image and flip it on screen.
No texturing yet, that's next after some surgery on the lump of code.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
2be0bdbcbb Start of Vulkan compute rendering code. Getting FBIDs (glxgears still OK). 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
df5244f547 Keep track of in-flight flips in DRM-land to defer frees of fbids if needed.
This makes output sane now for Xwayland buffers.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
1a0d25cbe2 Not sure if that fence stuff is right. 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
bc7207c69d More DRM flipping/importing, getting half of glxgears on screen.
Lower half is getting eaten by something, presumably underflow as it's black.

Make EGL and DRM coexist; make ensure_win_resources safe to call regardless
of what resources we want, so outer code doesn't have to care.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
4e324dd6eb Importing into DRM. 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
66511514d4 More DRM stuff, untested as of now, lifted from kmscube. 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
487f9887a3 Remove a wlroots patch not needed on mesa git anymore. 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
67c5affe47 Start of some DRM plumbing, make it work again outside of X. 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
4a7fe18845 Try to fix hangs in Portal when it isn't vsynced. 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
a58dfdd203 Only acknowledge frame_done once per commit, otherwise we pull unwanted
frames out of thin air.

Also use dummy ClientMessage events to nudge steamcompmgr's event loop,
Expose events have a meaning and we don't want to confuse some clients.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
985d6e40a7 Use actual display name instead of relying on the environment. 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
2bdbd01902 Some cleanup, 2020-01-01 15:30:37 +09:00