Commit graph

1741 commits

Author SHA1 Message Date
Hans-Kristian Arntzen
61121e206b Pass through duplicate commits if there are feedbacks.
Mutter and Weston behavior allows getting presentation feedbacks
for duplicate commits. This also allows gamescope to do the same.
2023-05-16 02:41:52 +01:00
Hans-Kristian Arntzen
072e31d007 Ensure forward progress on frame callback.
If the BUFFER flag is not set in a commit, it means
the buffer is inherited on the surface.
As this is equivalent to a commit with same buffer,
ensure forward progress is made on frame callbacks.

This behavior also matches Mutter and Weston based on tests.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2023-05-16 02:41:52 +01:00
Hans-Kristian Arntzen
a8ffc64f40 Ensure that duplicated commits have forward progress.
If the same buffer is attached in subsequent commits,
ensure frame callback is pumped.
This matches Mutter and Weston behavior based on tests.
2023-05-16 02:41:52 +01:00
Hans-Kristian Arntzen
72056a98b5 Send presentation after handling commits on XDG. 2023-05-16 02:41:52 +01:00
Hans-Kristian Arntzen
abd04f793e Don't send frame callback before we have actually committed.
This avoids a problem where frame callback is reported before we have
actually committed to display a surface. This could lead to skipping
where application commits a new surface before the current surface will
be queued up for display. This breaks FIFO rules in e.g. Vulkan.
A scenario where this matters is when GPU is rendering slower than
refresh rate.

Also avoids a problem where the commit queue can grow large since
frame callbacks will be pumped faster than the GPU is able to process
the frames.

At least Mutter behavior is similar here, so I think this is the correct
interpretation.

Also fixes KHR_present_wait in Xwayland. Xwayland uses frame callback to
signal PRESENT_COMPLETE and this fixes that.
2023-05-16 02:41:52 +01:00
Joshua Ashton
f6d9ef465d drm, rendervulkan: Pick a 10-bit format for composite buffer
1. Many game engines automatically render to 10-bit formats such as UE4 which means
that when we have to composite, we can keep the same HW dithering that we would get if
we just scanned them out directly.

2. When compositing HDR content as a fallback when we undock, it avoids introducing
a bunch of horrible banding when going to G2.2 curve.
It ensures that we can dither that.
2023-05-15 23:48:24 +00:00
Joshua Ashton
8bb7272a04 rendervulkan: Expose some more formats 2023-05-15 22:44:28 +00:00
Jeremy Selan
6531d9cdf9 color_helpers: added default tonemapping for PQ->G22 2023-05-12 16:09:25 -07:00
Jeremy Selan
38e5b553fd vklayer: added HdrMetadata printing 2023-05-12 12:11:19 -07:00
Jeremy Selan
941b22f68f color_helpers: refactored eetf2390 tonemapping 2023-05-11 10:32:05 -07:00
Jeremy Selan
156660c72b color_helpers: added eetf_2390 tonemapping operator (currently unused) 2023-05-10 17:32:25 -07:00
Jeremy Selan
3534657de6 heatmap: fix typo 2023-05-10 17:32:25 -07:00
Joshua Ashton
b778e53036 wlserver: Set seat keyboard on keyboard focus
Ensures we have keymap sent by wlroots when we send modifiers for the keyboard in notify_enter
2023-05-10 17:02:04 +00:00
Joshua Ashton
345ffef031 main: Fix output initialization for OpenVR
Regressed from the present queue stuff
2023-05-09 23:45:06 +00:00
Jeremy Selan
3e2e84422f fix lut1d header definition 2023-05-09 16:26:37 -07:00
Jeremy Selan
f1ba09a0b0 dont assume shapers are analytically invertible (uses LUT inverse) 2023-05-09 16:23:11 -07:00
Joshua Ashton
c78294f2e5 main: Don't create SDL Vulkan surface if in a VRSession
Fixes a regression from the present queue stuff.
2023-05-09 23:15:23 +00:00
Jeremy Selan
19cac186e1 color_helper: actually store 1d luts in planar form to allow simpler inversion 2023-05-09 12:46:32 -07:00
Joshua Ashton
eec7f08c37 steamcompmgr: Add --framerate-limit 2023-05-09 18:12:28 +00:00
Jeremy Selan
db95bc30b1 color-helpers: all lut computation is in float; quantization is separate step 2023-05-09 10:50:25 -07:00
Joshua Ashton
1e1f5da6c3 build: Add glm dep to color microbench 2023-05-09 16:20:56 +00:00
Joshua Ashton
47e40afc6c ci: Add benchmark as a dependency 2023-05-09 16:20:56 +00:00
Joshua Ashton
8597dff537 color_helpers: Encode source color EOTF edges once per-edge rather than per-element 2023-05-09 16:20:56 +00:00
Joshua Ashton
50237d4f11 color_bench: Add color mgmt microbenchmark 2023-05-09 16:20:56 +00:00
Joshua Ashton
f9e47a612f color_helpers, steamcompmgr: Avoid allocation of LUTs every time we re-setup color mgmt 2023-05-09 16:20:56 +00:00
Joshua Ashton
36c120901a steamcompmgr: Profile all of update_color_mgmt and not just calcColorTransform 2023-05-09 16:20:56 +00:00
Joshua Ashton
e0afde05fa color_helpers: Apply shaper per-element of nested loop
Saves ~0.2ms
2023-05-09 16:20:56 +00:00
Joshua Ashton
171bfe9439 color_helpers: Inline some functions
Saves ~0.35ms
2023-05-09 16:20:56 +00:00
Joshua Ashton
eacb55f8fc steamcompmgr: Color management microbenchmark 2023-05-09 16:20:56 +00:00
Joshua Ashton
9bac374ff7 color_helpers: Use rintf instead of roundf
Saves ~0.2ms
2023-05-09 16:20:56 +00:00
Joshua Ashton
f0a821e2c6 build: Enable -ffast-math
Saves ~0.4ms in total in our color mgmt LUT calculations.

We don't deal with floats + NaNs/INFs anywhere in our codebase.
2023-05-09 16:20:56 +00:00
Joshua Ashton
580f9e05cb color_helpers: Optimize pq_to_nits + nits_to_pq
Make these take in vector types, saves ~0.4ms
2023-05-09 16:20:56 +00:00
Joshua Ashton
acef4c24ed layer: Enable KHR_present_wait driconf in the layer 2023-05-05 20:30:06 +01:00
Joshua Ashton
799869e3c7 steamcompmgr: Always send frame callback for any current surface (not just main)
Fixes a stall with the WSI Layer in the Granite latency test
2023-05-05 20:30:06 +01:00
Joshua Ashton
dd7df68143 wlserver, steamcompmgr: Initial presentation time implementation 2023-05-05 20:30:06 +01:00
Joshua Ashton
95368ea7ef protocol: Add presentation-time xml + build 2023-05-05 20:30:06 +01:00
Joshua Ashton
23caed78f7 steamcompmgr: Move send_done to just before latest latch time
Makes more sense instead of sending done after we commit for page flip, otherwise the cadence can be slightly too ahead.

(Accounts for the bubble of time after latch -> commit being included in the time when we want to submit)

This also ensures that in the case where QueuePresent can stall on Wayland WSI (ew, gross!) that that stall will be finished before the next acquire.
2023-05-05 20:30:06 +01:00
Victoria Brekenfeld
ce95b0e81f vulkan: Check if selected queue can be used
This is essentially a fix for src/rendervulkan.cpp:3075 (before this commit).
Instead of first selecting a queue and later failing, if the selected
queue can't be used for presenting, this patch considers the fact, *when*
selecting a queue.

As a result quite a bit of code had to be re-ordered to make sure the
surface already exists, when selecting the queue.
2023-05-05 18:07:30 +01:00
Joshua Ashton
1716555313 main: Expose sdr-gamut-wideness and hdr-sdr-content-nits as launch args 2023-04-30 01:59:05 +01:00
Jeremy Selan
279eb5e38c fix build breakage 2023-04-28 19:24:25 -07:00
Jeremy Selan
b25da0adae [color_helpers]: initial implementation of COLOR_LOOK atoms 2023-04-28 16:53:26 -07:00
Joshie
7f00114bd4
drm: Reset BLEND_TF + BLEND_LUT 2023-04-28 18:48:53 +01:00
Oliver Chang
5af321724c Avoid out of bounds accesses in drm.cpp
On certain configurations the EDID retrieval and parsing seems to fail,
leading to create_patched_edid accessing out of bounds indexes on a zero
length vector.
2023-04-27 16:42:30 +01:00
Joshie
608f952dba
layer: Fix scRGB surface format definition
scRGB is linear, not using sRGB curve.
Matches what we expose in DXVK for DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709.
2023-04-27 06:47:43 +01:00
Dlanis
e805c9c05d Replace tabs with spaces in help 2023-04-24 19:54:56 +01:00
Joshie
50477dc028
sdlwindow: Gate SDL_GetWindowSizeInPixels behind version check 2023-04-24 19:21:21 +01:00
Jan Beich
d5440c6fca drm: drop unused Linux-only header after a90e359fc4
src/drm.cpp:4:10: fatal error: 'linux/limits.h' file not found
 #include <linux/limits.h>
          ^~~~~~~~~~~~~~~~
2023-04-23 19:09:04 +01:00
Joshua Ashton
5ffd51b391 steamcompmgr: Ensure members of steamcompmgr_win_t get initialized
Supercedes: #851
2023-04-23 17:33:26 +01:00
Joshua Ashton
7ef68ce050 main, steamcompmgr, shaders: Handle lack of LUTs + add debug for disabling color mgmt 2023-04-23 17:09:40 +01:00
Joshua Ashton
8608821414 drm: Fix drm_supports_color_mgmt checks 2023-04-23 16:53:25 +01:00