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
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
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
Pierre-Loup A. Griffais
4a1550b7b0
steamcompmgr only makes sense in the nested X display in this scenario.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
77d0e72c69
Make commandline coexist across both sides, plumb nested size control.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
ced1d16f65
No further need for constant event debugging; command-line is now usable.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
e36f1f6c5b
Fix up frame cadence ordering a bit.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
825db84b13
Make the wayland commit side master of who has valid contents.
...
And fix a bug that would make overlays flicker.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
306583be94
Reinstate normal GameID detection logic, so we can run Steam now.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
95e132179d
Chop off some more concepts that were higher-level than I thought initially.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
11d50c1618
CHOP
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
77b4a683c0
chop chop (glxgears still works)
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
ef8f14b05e
chop (glxgears still works)
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
f919e65c38
Notify XWayland surfaces when we're done with a frame from them.
...
And remove rootston's output render path. This seems like it was the only
strictly needed thing, frames seem to time out without that. Will probably
find bugs later.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
7e9bc2a6a0
Use patched static wlroots as a submodule and subproject.
...
That should help setting it up on a machine that might want to use normal
wlroots for other things. Resolve a GL symbol conflict now that we're
colocated with wlroots' dynamic loading code.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
3cf1bd219d
Only do libinput if we're not hosted in X.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
3aac5b9015
Get working input, but steamcompmgr now randomly takes down my X server when
...
exiting.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
5bf32a3335
Use headless backend, give it a dummy output, keyboard and pointer.
...
I can render an app with the only GPU work coming from steamcompmgr now.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
32fe2d5bfb
Register GL error callback instead of checking by hand.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
3a091e864a
Process doesn't go away when closing clients anymore.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
6c04eba8c6
Allow re-import, still consume FDs that fall through the crack.
...
Lets glxgears animate at 60fps and doesn't leak FDs anymore.
steamcompmgr still goes down when glxgears exits.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
6dc724b2cd
No idea what that was for, but it can presumably go.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
617174e4b4
Add placeholder GameID to every window so I can easily test with glxgears.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
382004513a
Finish removing glX stuff, remove path_rendering stuff (with prejudice),
...
add some freeing of resources.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
7c4e06af94
Missed some files.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
b39c5a67d4
Hook up steamcompmgr output pipeline.
...
Get steamcompmgr's GL context from EGL and rip out GLX, as we need EGL to
import dma-bufs.
When new buffers are committed to surfaces, push their information to
steamcompmgr (without any feedback for now, fire-and-forget).
Can render games now.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
d740ac4d57
Windows render again now that WL_SURFACE_ID is plumbed through steamcompmgr.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
5b1154f863
Fix warnings on my setup.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
86efc186c5
Merge with rootston.
...
Enable C++ for bits of the code, but nothing that includes wlroots as that
doesn't want to build as C++.
Enable SubstructureRedirectMask mode and handle MapRequest for now; this lets
us get the WL_SURFACE_ID ClientMessages.
This uses a build of wlroots that has its internal XWM ripped out.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
9f4bc871d2
Import Debian version 1.34
...
steamos-compositor (1.34) brewmaster; urgency=medium
* Small tweak to loadargb_cursor to better handle non-premult cursors
2020-01-01 15:26:44 +09:00
Pierre-Loup A. Griffais
7b43e3ff99
Import Debian version 1.32
...
steamos-compositor (1.32) brewmaster; urgency=medium
* Fix a bug where cursor would be auto-hidden even when buttons held
* Show cursor if a button gets clicked while it's hidden
2020-01-01 15:26:44 +09:00
Pierre-Loup A. Griffais
59f9261aca
Import Debian version 1.31
...
steamos-compositor (1.31) brewmaster; urgency=medium
* Added support for one than more overlay layers; most opaque one wins.
2020-01-01 15:26:44 +09:00
Pierre-Loup A. Griffais
840e4883a3
Import Debian version 1.30
...
steamos-compositor (1.30) brewmaster; urgency=medium
* Added preliminary support for screen magnification.
* Increase cursor hiding time to 10 seconds.
* Fix bug while cursor would hide even when moving the mouse if a button was
held.
2020-01-01 15:26:44 +09:00
Pierre-Loup A. Griffais
34f963a59a
Import Debian version 1.29
...
steamos-compositor (1.29) brewmaster; urgency=medium
* Tweaking focus and display logic in steamcompmgr to avoid event storms on newer
X servers. It looks like Damage semantics changed on Xserver 1.16 and we were
getting unexpected events after XDamageSubtract().
2020-01-01 15:26:44 +09:00
John Vert
601e49f2e5
Import Debian version 1.27 - sidestep to Brewmaster
...
steamos-compositor (1.27) brewmaster; urgency=medium
* depend on libudev1 instead of libudev0
steamos-compositor (1.26) brewmaster; urgency=medium
* compilation fixes
steamos-compositor (1.25) brewmaster; urgency=medium
* fix missing tab in debian/rules, change Build-Depends from automake to automake1.11
2020-01-01 15:23:18 +09:00
Pierre-Loup Griffais
d740313b06
steamcompmgr documentation fix.
2019-09-09 11:02:32 -07:00
Pierre-Loup Griffais
7c401cd538
SteamOS compositor v1.24 with XCOM fix.
2019-09-09 11:02:32 -07:00
Pierre-Loup Griffais
33a5f82916
SteamOS compositor beta update.
2019-09-09 11:02:32 -07:00
Pierre-Loup Griffais
8ae95f1f37
[SteamOS compositor] Fix overlay flickering problem.
2019-09-09 11:02:32 -07:00
Pierre-Loup Griffais
acbd2c8d7c
Fix random flash of corruption when first presenting the overlay or a notification
2019-09-09 11:02:32 -07:00
Pierre-Loup Griffais
e512d3ee1b
SteamOS compositor 1.19 with black screen fix for MS games on Intel graphics.
2019-09-09 11:02:32 -07:00
Pierre-Loup Griffais
c26d9e7687
SteamOS compositor 1.18 with hitching fix on toast notifications.
2019-09-09 11:02:32 -07:00
Pierre-Loup Griffais
8ae6046bad
SteamOS: add udev_is_boot_vga tool to detect hybrid configs
2019-09-09 11:02:32 -07:00
Pierre-Loup Griffais
a325bad986
steamcompmgr 1.16; fixes "CID the Dummy".
2019-09-09 11:02:32 -07:00
Pierre-Loup Griffais
a50620bace
SteamOS: Always sync to vblank to fix tearing on AMD.
2019-09-09 11:02:32 -07:00
Pierre-Loup Griffais
b0fd3a75d5
SteamOS: fix double cursor when game exiting.
2019-09-09 11:02:31 -07:00
Pierre-Loup Griffais
8ed08641d4
SteamOS: when any of the Steam windows are invisible, completely halt their rendering.
...
Can't have a WebM video playing on a halted window or the decoder starts spinning waiting for the renderer.
CR: John McCaskey
2019-09-09 11:02:31 -07:00
Pierre-Loup Griffais
503b35b547
steamos-compositor 1.14
2019-09-09 11:02:31 -07:00
Pierre-Loup Griffais
967feaabe5
SteamOS compositor 1.12 with Bard's Tale, Long Live the Queen fixes.
2019-09-09 11:02:31 -07:00
Pierre-Loup Griffais
1fc30b7e60
SteamOS compositor 1.10 with mouse fixes for Superbrothers and scaled
...
cursors.
2019-09-09 11:02:31 -07:00
Pierre-Loup Griffais
ececbafa73
SteamOS compositor 1.8
...
SteamOS modeswitch-inhibitor 1.7
Changelogs:
steamos-compositor (1.8) alchemist; urgency=low
* Rearm ignore warp count when hiding cursor to prevent spurious appearances.
* Work around X server bug 69198 by warping the cursor back into our window
if it escapes.
* Disable DPMS and the X screensaver for now in the SteamOS session.
steamos-modeswitch-inhibitor (1.7) alchemist; urgency=low
* Correct interposer open location to account for new library name.
2019-09-09 11:02:31 -07:00
Pierre-Loup Griffais
12446b9d88
Fix mouse input in Steam on SteamOS when desktop is smaller than 1080p.
2019-09-09 11:02:31 -07:00
johnv
aa59866bc5
Add loadargbcursor program
2019-09-09 11:02:31 -07:00
johnv
92f5394b78
add debian package build files
2019-09-09 11:02:31 -07:00
Pierre-Loup Griffais
e0135b2777
SteamOS:
...
- add support for global overscan compensation, controlled with a root window property; pending tenfoot wizard to set it up
- present the cursor with the same visible size as in Steam or the overlay, no matter what scale ratio is being applied to the game
2019-09-09 11:02:30 -07:00
Pierre-Loup Griffais
639618330f
SteamOS: Fix more instances of cursor showing up when we don't want it.
2019-09-09 11:02:30 -07:00
Pierre-Loup Griffais
5a11ba7646
SteamOS: refactor cursor management to allow the compositor to hide the cursor when not being moved for a period of time, like Tenfoot does.
2019-09-09 11:02:30 -07:00
Pierre-Loup Griffais
6f3be23b46
SteamOS: Queue an Expose event per frame to never block when there aren't any other events going on; this lets us always smoothly fade to windows that aren't animating. When not in a fade paint_all() returns early without producing a frame and the behavior is the same as before.
2019-09-09 11:02:30 -07:00
Pierre-Loup Griffais
3d43811f37
Fix overlay on games that don't animate at all, like DosBOX titles sitting at the menu. The fade in and out is still not smooth in these cases and pending investigation, but it looks like Steam is blocked on the overlay IPC pipe instead of pumping frames, which has the side effect of setting the opacity that is needed for the smooth fade-in.
2019-09-09 11:02:30 -07:00
Pierre-Loup Griffais
21b4b1f7d5
SteamOS compositor workaround for Thomas was Alone; it can't create the game window FBconfig with its own visual, but it succeeds with the root visual.
2019-09-09 11:02:30 -07:00
Pierre-Loup Griffais
959693bd50
Conditionalize extension usage and grab their entrypoints with GetProcAddress.
2019-09-09 11:02:30 -07:00
johnv
8e98e9ab4a
integrate Pierre's latest
2019-09-09 11:02:30 -07:00
johnv
83999cae2f
make it build with autotools
2019-09-09 11:02:30 -07:00
Pierre-Loup Griffais
e106321c45
Initial implementation of a compositor for the SteamOS console session.
...
Used xcompmgr as a starting point, and mostly rewrote everything.
Unlike xcompmgr this is also a window manager.
2019-09-09 11:01:59 -07:00