Geoffrey McRae
acb5c06794
egl: correct ImGui overlay luminance in HDR
...
Render ImGui to an intermediate SDR framebuffer and map it into the
native PQ or scRGB output using the Wayland surface reference white.
Preserve premultiplied alpha during conversion and limit composition to
damaged overlay regions.
2026-07-18 03:02:19 +10:00
Geoffrey McRae
21b978e1df
[client] egl: avoid per-frame DMABUF flushes
...
Only fence and flush when initially attaching an EGLImage. Subsequent
imports rely on framebuffer write completion, avoiding periodic driver
stalls.
2026-07-17 23:39:13 +10:00
Geoffrey McRae
c4285dcb6e
[client] egl: cache post-process configuration
...
Build the active filter chain only when its configuration changes,
including filter settings or order, input format, dimensions, output
size, and DMA mode.
Unchanged frames now execute only the cached active filters, avoiding
repeated setup, preparation, and output-resolution queries.
Reconfiguration forces a full-frame pass to prevent stale intermediate
framebuffer contents.
Also refresh CAS and FSR uniforms when loading presets and move
downscale pass selection out of the per-frame path.
2026-07-17 23:01:54 +10:00
Geoffrey McRae
e5c4fe68dc
[client] egl: cache renderer GL state
...
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
Track context-local GL bindings to avoid redundant program, framebuffer,
buffer, texture, sampler, viewport, blend, and scissor state changes.
Invalidate the cache across context switches, ImGui rendering, and
shared object changes. Preserve CPU-backed texture upload correctness by
explicitly clearing pixel unpack buffer bindings where required.
This reduces hot-path driver overhead without adding waits or GPU
synchronization.
2026-07-17 22:38:46 +10:00
Geoffrey McRae
b2c40a80af
[client] egl: remove blocking waits from frame submission
...
Track PBO fences per upload slot and wait only when a slot is reused,
allowing rendering to proceed without a CPU stall. Use GPU-side waits
for cross-context DMABUF synchronization.
Also propagate KVMFR write-completion failures so incomplete
shared-memory frames are never submitted, while retaining incremental
damage-copy waits to avoid added latency.
2026-07-17 22:02:05 +10:00
Geoffrey McRae
e3616ed4b9
[client] egl: add cached uniforms and multipass effects
...
Replace the per-frame uniform list with stable, name-cached handles that
retain their values across shader recompilation. Track dirty uniforms so
only changed values are uploaded, reducing redundant GL calls and buffer
management.
Add a reusable effect-pass pipeline with per-pass shaders, samplers,
formats, resolutions, and intermediate render targets. This makes
external effects easier to integrate and supports arbitrary multipass
chains.
Migrate the desktop, cursor, damage, 24-bit, downscale, CAS, and FSR
rendering paths to the new APIs. Also ensure framebuffer objects are
released correctly.
2026-07-17 21:05:47 +10:00
Geoffrey McRae
2006fb640f
[idd/client/obs] hdr: wire up the SdrWhiteLevel from the capture
2026-07-17 17:50:23 +10:00
Geoffrey McRae
3b69e6bdf4
[client] egl: fix masked color cursor HDR mapping
2026-07-17 17:15:13 +10:00
Geoffrey McRae
d41c9fdc5d
[client] egl: improve HDR cursor rendering, fixes alpha blending
2026-07-17 16:48:57 +10:00
Geoffrey McRae
9803f5b12a
[client] egl: implement SDR to HDR mapping for cursors
2026-07-17 04:44:38 +10:00
Geoffrey McRae
adb4fcb57a
[client] fix the HDR colorspace mapping to SDR
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
2026-07-16 20:25:20 +10:00
Geoffrey McRae
364485ded8
[client] wayland: implement HDR support
2026-07-16 05:34:09 +10:00
Geoffrey McRae
69f44a003d
[all] refresh copyright
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
2026-05-31 15:13:57 +10:00
Geoffrey McRae
e9b7bdfea1
Revert "[all] refresh copyright"
...
Corrupted IDD sources due to lack of UTF-8 with BOM support in the
script.
2026-05-31 15:10:44 +10:00
Geoffrey McRae
98602fb95e
[all] refresh copyright
2026-05-31 15:03:37 +10:00
Geoffrey McRae
eec9aa3ae3
[client] egl: fix uninitialized use of variables
2025-09-08 11:00:06 +10:00
Geoffrey McRae
f07dd827ae
[client] egl: fix null pointer dereference crash
2025-09-08 10:57:08 +10:00
Geoffrey McRae
5f9649b4a2
[client] egl: set the dmabuf sampler state at creation
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
2025-09-02 13:12:03 +10:00
Geoffrey McRae
e40610ea77
[client] egl: sync on fence without force glFlush in non-dmabuf path
2025-09-02 13:09:39 +10:00
Geoffrey McRae
d5839c7efd
[client] egl: improve dmabuf import hot path performance
...
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
* Removes the vector in favour of a two element array
* Removes iteration on the vector
* Create and track a per-image fence
* bind the EGLImage to the texture at creation, avoiding re-binding
* sync on GL_SYNC_FLUSH_COMMANDS_BIT and remove glFlush
2025-08-31 13:48:08 +10:00
Geoffrey McRae
f8f05c36b8
[client] egl: remove invalid call to glTexImage2D for dmabuf
...
GL_TEXTURE_EXTERNAL_OES is not a valid target for glTexImage2D and there
is no need to "create" the textures as this is done during import by
eglCreateImage
2025-08-29 19:25:39 +10:00
Jacob McNamee
b7d044de5d
[client] opengl: initialize scale to 1.0
...
Fixes SPICE cursor rendering unconditionally at (0, 0) prior to KVMFR
frame format configuration
2025-08-29 18:15:28 +10:00
Stewart Borle
60d7c84972
[client] egl: make int highp in fragment shaders
...
https://gitlab.freedesktop.org/mesa/mesa/-/issues/12990#note_3038479
2025-08-29 15:33:52 +10:00
Geoffrey McRae
420eaebb71
[cmake] all: update cmake_minimum_required version to 3.10
2025-03-05 12:27:23 +11:00
Geoffrey McRae
551298ed5b
[doc] all: update copyright year
2025-03-05 12:24:38 +11:00
Chris Spencer
0fd6f59bbb
[client] egl: fix desktop render dimensions check
...
Code now matches the error message.
2025-03-05 10:57:20 +11:00
Jacob McNamee
2067b21d47
[client] egl: fix line copy size computation in texBufferStreamUpdate
2024-05-20 19:42:21 +10:00
Jacob McNamee
9bc82ab1b4
[client] egl: fix misuse of stride vs. pitch in texBufferStreamUpdate
2024-05-20 19:42:21 +10:00
Jacob McNamee
82c9df54c5
[client] egl: fix unintended vertical clipping in spiceDrawFill
2024-05-20 19:42:21 +10:00
Jacob McNamee
c48bd35b3a
[client] opengl: fix unintended vertical clipping in spiceDrawFill
2024-05-20 19:42:21 +10:00
Geoffrey McRae
dc9065b62f
[client] egl: do not use DMA when using the spice display
2024-03-12 13:57:23 +11:00
Geoffrey McRae
13b9756e80
[client] egl: fix desktop spice toggle race
2024-03-12 11:58:16 +11:00
Geoffrey McRae
0b210a280d
[all] update the copyright to 2024
2024-02-01 17:16:31 +11:00
Geoffrey McRae
7247fadad8
[client] egl: fix post processing failure when converting pixel formats
2024-01-25 17:51:06 +11:00
Geoffrey McRae
22d949c411
[client] egl: fix rgb24 regression
...
We need the alpha channel for this data type
2023-11-21 12:20:46 +11:00
Geoffrey McRae
43a3fb0db3
[client] egl: RGB24 improvements
...
This patch performs several changes.
* Alters the fourcc codes to types that ignore the alpha channel where
possible to allow the gpu to internally use 24-bit formats.
* Attempts to use DRM_FORMAT_RGB888 first as some GPUs may support this
* If DMABUF is not in use the data is now imported directly as RGB24
without the post-processing shader
2023-11-21 12:01:45 +11:00
Geoffrey McRae
0ce4c34c37
[client] egl: fix non-dma RGB24 import path
2023-11-19 09:42:37 +11:00
Geoffrey McRae
6357df1a7a
[client] egl: fix non-dma texture stride issue
2023-11-15 17:40:57 +11:00
Geoffrey McRae
929e88b9d3
[all] provide conditional path optimization hints to the compiler
2023-11-12 18:26:08 +11:00
Geoffrey McRae
417c9cf092
[client] opengl: act on glBufferSubData failure
2023-11-11 13:48:41 +11:00
Geoffrey McRae
cce12508cc
[egl] shader: fix reliance on null terminated strings
...
Compiled in resources often will not contain a null terminator, as such
we must not use functions that rely on it. This implements a memsearch
function that performs like strstr on a buffer instead of a null
terminated string.
2023-11-11 13:48:41 +11:00
Geoffrey McRae
43f9a4c0e1
[client] egl: fix potential integer underflow
2023-11-11 13:48:41 +11:00
Geoffrey McRae
ee5c02f72a
[client] egl: fix potential resource leak
2023-11-11 13:48:41 +11:00
Geoffrey McRae
55fa5cc851
[client] egl: fix integer division into float
2023-11-11 13:48:41 +11:00
Geoffrey McRae
138a0aee53
[all] update cmake minimum version
2023-11-10 06:28:05 +11:00
Geoffrey McRae
3a6afd04d2
[client] egl: use the pitch to calculate the new width for rgb24
2023-11-10 06:28:05 +11:00
Geoffrey McRae
c0e09e13a5
[client] egl: make the bgr_bgra filter generic for 24-bit formats
2023-11-10 06:28:05 +11:00
Geoffrey McRae
3843afa927
[client] egl: fix texture import for RGB_24
2023-11-10 06:28:05 +11:00
Geoffrey McRae
49bdf046fe
[client] egl: partially fix RGB_24 support
2023-11-10 06:28:05 +11:00
Geoffrey McRae
6492c47e1e
[client] egl: fix typo
2023-11-10 06:28:05 +11:00