Quantum
4a76401c34
[client] egl: make the last eglDestroyImage call indirect
...
Missed this one in the last PR.
2021-09-29 18:28:07 +10:00
Quantum
072c54977e
[client] egl: use eglCreateImage and eglDestroyImage indirectly
...
The dmabuf path is optional, so we shouldn't require those functions to
link our program.
2021-09-29 17:48:50 +10:00
Quantum
1b58f2592c
[client] egl: make filters damage aware
...
This saves a lot of GPU power for partial updates. Running testufo with
lanczos downscaling and FSR upscaling consumed over 90 W, but with this
commit, consumed only 75 W.
2021-09-04 13:30:24 +10:00
Quantum
e9bf225c75
[client] egl: remove useless RenderStep struct
2021-09-04 13:28:49 +10:00
Quantum
ac926e4458
[client] egl: support debug contexts on older EGL versions
2021-09-04 13:24:45 +10:00
Quantum
26d2feb4d8
[client] egl: remove warning disabling in ffx.c
2021-09-04 13:24:34 +10:00
Quantum
977a4f6323
[client] egl: remove useless comment in filter_downscale.c
2021-08-31 20:14:39 +10:00
Quantum
f4df690d9f
[client] egl: fix preset tooltip always showing
2021-08-30 18:47:48 +10:00
Quantum
239cb6a92b
[client] egl: add separator after presets
2021-08-30 18:45:21 +10:00
Quantum
876a4125bf
[client] egl: correctly select the preset when saving over it
2021-08-30 18:45:21 +10:00
Quantum
ffbf6cd8b4
[client] egl: make preset UI more intuitive
...
This commit makes selecting a preset load it, and changes "Create preset" to
"Save preset as...".
2021-08-30 18:45:21 +10:00
Quantum
39e42ba735
[common] option: change option_dump to option_dump_preset
...
This new function dumps all options marked as preset instead of dumping
individual sections. This should allow filter options to not be all grouped
into the [eglFilter] section.
2021-08-30 18:32:16 +10:00
Quantum
3345ff8448
[client] egl: mark all preset-only options as such
2021-08-30 18:21:54 +10:00
Quantum
8a2ae6860e
[client] egl: warn when attempting to save without preset selected
2021-08-30 18:21:54 +10:00
Quantum
1717555187
[client] egl: implement preset deletion
2021-08-30 18:21:54 +10:00
Quantum
dc27638025
[client] egl: implement loading and saving of filter order
2021-08-30 18:21:54 +10:00
Quantum
c85cc7d668
[client] egl: show preset errors as modal dialogs
2021-08-30 18:21:54 +10:00
Quantum
311f7241c6
[client] egl: implement preset loading/saving logic
2021-08-30 18:21:54 +10:00
Quantum
b7b93f624c
[client] egl: implement options loading/saving for downscale
2021-08-30 18:21:54 +10:00
Quantum
084837b936
[client] egl: add loadState and saveState for filters
2021-08-30 18:21:54 +10:00
Quantum
4adb425337
[client] egl: add UI for presets list
2021-08-30 18:21:54 +10:00
Quantum
5225d2e97f
[client] egl: fix framebuffer leaking textures
2021-08-28 19:17:24 +10:00
Quantum
e6df0acad9
[common] vector: eliminate double allocation when possible
...
This commit creates two constructor/destructor pairs for vector:
* vector_alloc/vector_free dynamically allocates the vector itself
* vector_create/vector_destroy uses existing Vector objects
2021-08-28 19:17:15 +10:00
Quantum
ceff9dca9b
[client] egl: simplify filter moving logic with memmove
...
This avoids duplicating the entire array of filters.
2021-08-25 05:35:50 +10:00
Quantum
7c7eff8dba
[client] egl: make texture_dmabuf.c use vector
...
This replaces the custom memory management code.
2021-08-24 22:10:36 +10:00
Geoffrey McRae
b118c3b681
[client] egl: implement nicer drag & drop re-ordering of filters
2021-08-24 22:05:46 +10:00
Quantum
e5e76d784e
[client] egl: allow postprocessing filters to be reordered by dragging
2021-08-22 21:36:13 +10:00
Quantum
99761b195f
[client] egl: switch postprocessing filters to use vectors
...
This will allow them to be reordered much more easily.
2021-08-22 21:36:13 +10:00
Quantum
9aa0d3ddab
[client] egl: fix context creation on EGL 1.4
...
EGL_CONTEXT_OPENGL_DEBUG is only defined in EGL 1.5, and therefore, we should
not be passing it on older versions of EGL.
2021-08-19 21:28:56 +10:00
Quantum
429620c48b
[client] egl: dynamically import glBufferStorageEXT
...
On some implementations (e.g. llvmpipe), the function can only be queried via
eglGetProcAddress.
2021-08-19 21:28:45 +10:00
Quantum
bb91b41c64
[client] egl: look at 3x3 around the pixel instead of 4x4
...
Using 4x4 means that some pixels will be outside of the lanczos window. The
ideal lanczos function should in fact be zero in those areas, so we shouldn't
waste time processing those pixels.
I can't notice any difference in the results.
2021-08-19 15:52:44 +10:00
Quantum
520460669c
[client] egl: set gl_Position.z in cursor vertex shader
2021-08-19 12:24:55 +10:00
Quantum
81c38e825c
[client] remove all casts around malloc
...
The cast is unnecessary in C and should be removed to avoid clutter.
2021-08-16 16:26:58 +10:00
Quantum
fd4a4114e6
[client] egl: pad areas of the desktop repainted to cover overlays
...
We pad the screen coordinates and then convert to desktop coordinates,
so that the padding will always be a pixel wide on screen.
2021-08-16 16:26:18 +10:00
Quantum
104141eec1
[client] use correct argument order for calloc
2021-08-16 16:25:59 +10:00
Quantum
b7d3bbbd82
[client] egl: use standard-compliant way of EGL detection
...
According to the documentation for eglQueryString:
> EGL_BAD_DISPLAY is generated if display is not an EGL display connection,
> unless display is EGL_NO_DISPLAY and name is EGL_EXTENSIONS.
Therefore, we should check EGL by doing:
eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS)
Indeed, the old way of eglQueryString(EGL_NO_DISPLAY, EGL_VERSION) works on
libglvnd but not using mesa's libEGL.so directly.
Also added a warning to make it more obvious that EGL is not available.
2021-08-16 16:25:48 +10:00
Tudor Brindus
14ad83c6b8
[client] use variable-relative sizeof where possible
2021-08-16 16:22:55 +10:00
Quantum
8f5afe1848
[client] egl: clamp sharpness settings in filters
...
While the slider does not allow you to get out of range by dragging,
the user could still type in out of range values, so we clamp the values.
2021-08-15 18:01:03 +10:00
Quantum
36073586e7
[client] egl: add tooltip about Ctrl+Click on sharpness sliders
...
With the new keymap feature, we are now able to properly support letting
the user enter exact values into the sliders. This commit adds a tooltip
to help the user discover this feature.
Note that this currently only works on Wayland. The X11 backend will need
to call app_handleKeyboardModifiers.
2021-08-15 18:01:03 +10:00
Quantum
bbd173000f
[client] egl: clamp downscale factor range
2021-08-14 14:57:33 +10:00
Quantum
96738ab9d0
[client] egl: make downscale filter use text input widget
...
The major/minor pixel size hack is too confusing. This commit replaces
that with a text input and a slider.
2021-08-14 14:44:26 +10:00
Quantum
5f3bd778c0
[client] egl: add debug prints for renderStartup errors
2021-08-14 12:20:12 +10:00
Quantum
f66486b0c7
[client] egl/downscale: implement filter switching
2021-08-14 12:19:50 +10:00
Quantum
2c02e6c4a0
[client] egl: add linear downscale filter shader
2021-08-14 12:19:50 +10:00
Quantum
94de061587
[client] egl: implement lanczos filter shader
2021-08-14 12:19:50 +10:00
Quantum
16adbab5d4
[client] all: remove needless initalization
2021-08-14 12:19:07 +10:00
Quantum
579f998519
[client] all: replace assert with DEBUG_ASSERT
2021-08-14 12:19:07 +10:00
Quantum
85a96d1e06
[client] all: use DEBUG_UNREACHABLE instead of assert
...
Due to the way assert is defined in standard C, compilers in release mode
will not treat it as unreachable. This explains a lot about those pesky
uninitialized variable bugs, actually.
2021-08-14 12:19:07 +10:00
Quantum
8c18817e2d
[client] egl: don't generate mipmaps in downscale filter
...
When using DMABUF, the mipmaps can cause driver hangs and crashes.
2021-08-12 17:03:18 +10:00
Geoffrey McRae
117e88c240
[client] egl: add new downscale filter
2021-08-12 15:54:16 +10:00