Geoffrey McRae
3a8cb6a613
[client/common] fixes for issues detected through static analysis.
2022-03-07 10:14:52 +11:00
Geoffrey McRae
1082875b8e
[client] opengl: fix startup since ImGui upgrade
2022-01-24 06:42:16 +11:00
Quantum
f2fbb2b27c
[client] opengl: make draw functions static
2022-01-23 08:49:01 +11:00
Geoffrey McRae
6bba9bc25d
[client/common] move ll from the client into the common code module
2022-01-12 12:22:18 +11:00
Geoffrey McRae
952ebea2c5
[all] refresh copyright dates
2022-01-05 19:42:46 +11:00
Geoffrey McRae
d69069fb09
[client] egl: keep the mouse cursor 1:1 when downscaling
...
This keeps the cursor a usable size when the guest is running a high
resolution and downscaling (ie, 4K -> FHD).
2021-12-26 11:08:42 +11:00
Quantum
6370350006
[client] opengl: indirectly access non-OpenGL 1.3 functions
...
This commit adds check for the extensions that we need and then calls
the functions indirectly through gl_dynprocs.
This should improve compatibility with older versions of OpenGL, as we
now fallback to the ARB extensions if possible, and in the case of
glGenerateMipmap, we can handle the function not existing at all.
2021-10-01 01:45:11 +10:00
Quantum
3f72de78da
[client] opengl: use util_hasGLExt instead of custom logic
2021-10-01 01:45:11 +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
Geoffrey McRae
2141046da9
[client] opengl: refactor to use project naming standards
2021-08-08 17:21:25 +10:00
Geoffrey McRae
30ed563504
[client] interface: refactor to use camlCase function names
2021-08-08 15:43:42 +10:00
Geoffrey McRae
f8ae291090
[client] interface: switch to using UPCAST for the renderer's data
2021-08-08 15:32:01 +10:00
Geoffrey McRae
45d1f27fb4
[client] interface: rename LG_Renderer to LG_RendererOps
...
Part of the standardisation of using the `Ops` suffix for all interfaces
2021-08-08 14:43:04 +10:00
Geoffrey McRae
162b1b93db
[client] main: don't include the swap into the render timings
...
If vsync is enabled the swap will block until vblank skewing the timing
metrics.
2021-08-07 01:45:42 +10:00
Quantum
51b9cd4e5a
[all] copyright: use unicode copyright sign ©
...
This is done for consistency with the license strings in appstrings.c.
2021-08-04 21:16:35 +10:00
Geoffrey McRae
13d9c84dc9
[client] egl: replace monolithic EGLTexture with modular version
...
The way things were handled in EGLTexture is not only very hard to
follow, but broken. This change set breaks up EGLTexture into a modular
design making it easier to implement the various versions.
Note that DMABUF is currently broken and needs to be re-implemented.
2021-08-02 23:37:33 +10:00
Geoffrey McRae
f8e1ab8f31
[client] renderers: add new needs_render method to the interface
...
With jitRender the renderer needs to tell the main application if it
needs to be rendererd, such as during the initial splash screen fade
out.
2021-08-01 18:18:08 +10:00
Geoffrey McRae
60a58d4d8d
[client] all: make it possible to signal full window invalidation
...
Now that we are drawing with damage rects, when the window is hidden and
then exposed the window may not get fully redrawn. This provides
`app_invalidateWindow` for the display server backend to call when the
screen needs a full redraw.
2021-07-25 15:29:29 +10:00
arcnmx
3b37898eb2
[all] use cmake FindPkgConfig IMPORTED_TARGETs
2021-07-24 12:35:48 +10:00
Quantum
f09738678e
[client] fonts: remove font rendering machinery
2021-07-23 20:18:12 +10:00
Quantum
0c35d9b057
[client] opengl: remove font management
2021-07-23 20:18:12 +10:00
Quantum
dd0edc1394
[client] renderers: remove alert handling
2021-07-23 20:18:12 +10:00
Quantum
5153d35bb5
[client] renderer: remove on_help from renderer interface
2021-07-23 18:04:05 +10:00
Quantum
5d053128ac
[client] imgui: use improved high DPI rendering
...
This actually makes imgui render at a higher resolution, avoiding scaling
and resulting blurriness.
2021-07-23 16:07:42 +10:00
Quantum
947eac52f6
[client] renderers: treat -1 as full damage and 0 as no overlay
...
This makes everything consistent.
2021-07-22 18:57:34 +10:00
Geoffrey McRae
fdbdf6f167
[client] app: implement new overlay rendering framework
...
This change set implements a framework for overlays to be registered
that make use of ImGui. See `overlay/fps` for a simple implementation
example.
2021-07-22 17:27:30 +10:00
Geoffrey McRae
6389a06903
[client] main: let the renderer know if it's rendering a whole new frame
...
While the renderer can internally track this it would be better to
simply provide this information to the renderer directly so it can make
better decisions on how best to update the screen.
2021-07-21 17:26:48 +10:00
Quantum
1a88996c47
[client] opengl: don't include <GL/glx.h>
...
The OpenGL renderer backend should not depend on any particular
implementation of OpenGL, as it's used by both X11 and Wayland.
2021-07-21 12:33:01 +10:00
Geoffrey McRae
ab31040d5f
[client] all: use imgui for FPS/UPS display
2021-07-18 20:43:17 +10:00
Quantum
442ab318fd
[client] egl: use desktop frame damage information
2021-07-18 10:41:50 +10:00
Geoffrey McRae
f08163fd72
[client] imgui: added imgui to the client and OpenGL/EGL renderers
2021-07-17 21:09:51 +10:00
Geoffrey McRae
7b95cc72ed
[client] opengl: do not render a sync pending texture
2021-07-02 21:48:31 +10:00
Geoffrey McRae
d24b031fc5
[client] opengl: cosmetics
2021-07-02 20:10:25 +10:00
Geoffrey McRae
55d185ef9c
[client] opengl: no need to re-bind the already bound texture
2021-07-02 19:51:22 +10:00
Geoffrey McRae
9cbc255448
[client] opengl: do not prematurely delete overlay textures
...
Overlay textures exist for the lifetime of the renderer and as such
should not be deleted when the resolution changes.
2021-07-02 19:50:31 +10:00
Geoffrey McRae
212cc32097
[client] opengl: deconfigure is idempotent
2021-07-02 19:50:15 +10:00
Quantum
24d0aa0c18
[all] normalize copyright on all source files
2021-06-06 11:53:05 +10:00
Quantum
84e14edfe7
[client] opengl: remove dependency on SDL
2021-02-26 09:44:34 +11:00
Quantum
48be58378c
[client] opengl: scale UI elements on high DPI displays
...
This is done by simply scaling up the rendered text bitmap.
2021-02-21 19:06:53 +11:00
Quantum
89bdaec95a
[client] opengl: support scaled UI for high DPI displays
2021-02-21 19:06:53 +11:00
Quantum
b35e19fc27
[client] renderer: add interface for high DPI rendering
2021-02-21 19:06:53 +11:00
Quantum
89b73512ad
[client] renderer: add ability to toggle the FPS display
...
Before, if you want to see the FPS, you need to close the client and
restart it with the -k switch to see the FPS. This is annoying.
This PR introduces a new keybind, ScrollLock+D, which, when pressed,
toggles the display of the FPS.
This is implemented for both EGL and OpenGL backends.
2021-02-21 10:31:48 +11:00
Quantum
5dce97264b
[client] renderers: add on_help to renderer interface
...
This will be used to tell a render to display a help message.
2021-02-21 10:31:48 +11:00
Geoffrey McRae
973806dd9c
[client] opengl: implement & fix opengl support
2021-02-21 10:31:48 +11:00
Geoffrey McRae
4dfe4b8e2b
[client] allow renderers to pass back if they need an OpenGL context
2021-02-21 10:31:48 +11:00
Geoffrey McRae
ca5c3938e4
[client] all: move all SDL specific code into displayservers/sdl
2021-02-21 10:31:48 +11:00
Quantum
2973319bff
[client] opengl: remove glu dependency
...
We only use gluOrtho2D, which is trivially replaced with glOrtho, and
gluErrorString which can be replaced with a small lookup table.
2021-02-20 12:44:32 +11:00
Tudor Brindus
637a7625d2
[client] wayland: allow EGL/OpenGL vsync to be set to on
...
This effectively reverts 4bceaf5
.
Upstream ticket: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4180
Commit 941c651
makes working around the hang in LG itself not as
annoying as before.
In the future, we can bypass this entire issue by implementing our own
swapchain and listening to frame callbacks ourselves.
2021-02-09 09:12:57 +11:00
Geoffrey McRae
8a1578230f
[client] all: properly support guest rotation
...
If the guest has it's output rotated (ie, landscape) we must rotate and
translate the pointer draw location, as well as all the translations of
cursor coordinate spaces based on the rotation, along with any local
rotations that may also be applied.
2021-01-19 02:54:56 +11:00
Geoffrey McRae
72c86d7125
[client] all: add screen rotation support win:rotate
...
Currently only supports EGL, if there is enough demand for OpenGL
support this can be added later.
Closes #231
2021-01-15 12:42:16 +11:00