Geoffrey McRae
0e7e918e2c
[client] cleanup and re-order startup/shutdown code
2019-10-26 12:03:10 +11:00
Geoffrey McRae
7d6e061ade
[client] properly shutdown on failure to connect to the spice server
2019-10-26 11:27:05 +11:00
Geoffrey McRae
66891aa536
[client] don't require wayland-egl, fixes #204
2019-10-26 11:23:04 +11:00
Geoffrey McRae
9377fdfc37
[all] bump KVMFR version due to incompatible changes
2019-10-14 17:19:19 +11:00
Geoffrey McRae
4c0ca1c8e7
[client] fix xor support for masked color cursors
...
fixes #200
2019-10-09 19:48:42 +11:00
Geoffrey McRae
bca54ab1f6
[client/host] added new asyncronous memory copy
...
This changes the method of the memory copy from the host application to
the guest. Instead of performing a full copy from the capture device
into shared memory, and then flagging the new frame, we instead set a
write pointer, flag the client that there is a new frame and then copy
in chunks of 1024 bytes until the entire frame is copied. The client
upon seeing the new frame flag begins to poll at high frequency the
write pointer and upon each update copies as much as it can into the
texture.
This should improve latency but also slightly increase CPU usage on the
client due to the high frequency polling.
2019-10-09 13:53:02 +11:00
Geoffrey McRae
6d2c464436
[client] egl: improved streaming texture syncronization
2019-08-30 12:09:05 +10:00
Geoffrey McRae
e93bd7a3bf
[client] fix shutdown race condition with the frame thread
2019-08-30 11:54:26 +10:00
Geoffrey McRae
da94075e7b
[client] egl: more verbose error on texture egl failures
2019-08-30 11:40:38 +10:00
Geoffrey McRae
69522495de
[client] fix invalid shutdown of renderer outside of it's thread
2019-08-30 11:36:28 +10:00
Geoffrey McRae
fce88fc72c
[EGL] add debug printf helper
2019-08-30 11:33:43 +10:00
Geoffrey McRae
163a2e5d0a
[client] fix failure to build due to broken symlink, fixes #173
2019-07-23 11:06:51 +10:00
Geoffrey McRae
b979752989
[client] added missing include
2019-07-15 18:30:39 +10:00
orcephrye
8ad2d5f949
[client] autodetect monitor refresh rate for fps limit
2019-07-10 05:04:29 +10:00
Rokas Kupstys
745ba66119
Implement option to disable minimizing window on focus loss. Default behavior is not changed - not configuring these options unfocused window is minimized.
...
* Added config entry win:minimizeOnFocusLoss (default true).
2019-07-09 21:57:47 +10:00
Geoffrey McRae
4cf6dec592
[all] allow disable of backtrace support during build
2019-06-19 09:13:03 +10:00
Geoffrey McRae
d7fa0aeff9
[client] fix typo in SDL_VIDEODRIVER from prior patch, whoops :)
2019-06-19 09:03:15 +10:00
Geoffrey McRae
2def6346e6
[client] don't override SDL_VIDEODRIVER if it is already set
2019-06-19 09:01:28 +10:00
Geoffrey McRae
607539a2af
[client] improve streaming texture performance
2019-06-13 08:54:51 +10:00
Geoffrey McRae
2b4f8091f9
[client] README.md cosmetics
2019-05-31 16:45:55 +10:00
Geoffrey McRae
113da121e9
[client] updated documentation for new keybinds
2019-05-31 16:44:08 +10:00
Geoffrey McRae
dd7413f973
[client] added keybinds to send Ctrl+Alt+Fn
...
Fixes #165
2019-05-31 16:39:55 +10:00
Geoffrey McRae
97024041f3
[client] allow the screensaver to run
2019-05-30 20:54:39 +10:00
Geoffrey McRae
22238c3200
[client] fix invalid access on early termination
2019-05-30 20:24:51 +10:00
Geoffrey McRae
3d426ccef8
[all] fix missing cursor when client reconnects
2019-05-28 14:06:15 +10:00
Geoffrey McRae
b31e8e1cee
[client] egl: remove accidental commit of debug code
2019-05-27 18:46:05 +10:00
Geoffrey McRae
f0923c4ed7
[client] egl: expose a few new tuneables
2019-05-27 18:42:46 +10:00
Geoffrey McRae
aabf19e63b
[client] main: properly shutdown if renderer fails to init
2019-05-27 18:40:36 +10:00
Geoffrey McRae
f4fc1eb5f6
[client] typo in config help text
2019-05-27 18:40:36 +10:00
Geoffrey McRae
4cf2c7a350
[client] check for failure to map pbo memory
2019-05-27 01:39:01 +10:00
Geoffrey McRae
664d7dccdb
[client] fix the binary path when debugging
2019-05-27 01:38:50 +10:00
Jonathan (JJRcop) Rubenstein
d07aa4b29e
[client] Add win:maximize to maximize on startup
2019-05-26 20:47:59 +10:00
JJRcop
9f33043d17
[client] Fix typo in example of README.md
2019-05-25 10:25:57 +10:00
Geoffrey McRae
83c5df2c47
[client] main: add + sign to mouse sensitivit alerts
2019-05-24 05:35:16 +10:00
Geoffrey McRae
759b4ef811
[client] fix typo
2019-05-24 05:31:16 +10:00
Geoffrey McRae
437ebf6265
[client] main: new feature to increase/decrease mouse sensitivity
2019-05-24 05:29:38 +10:00
Geoffrey McRae
bffd02b8c7
[client] main: better UX with the escape key combinations
2019-05-23 20:31:01 +10:00
Geoffrey McRae
196b27ee9c
[doc] client: document defaults instead of my preconfigured values
2019-05-23 20:26:37 +10:00
Geoffrey McRae
ff08540fd3
[doc] fixed another formatting snafu
2019-05-23 20:20:18 +10:00
Geoffrey McRae
07be380f34
[doc] fix formatting a bit
2019-05-23 20:19:37 +10:00
Geoffrey McRae
76d58deefa
[doc] Updated project documentation in leu of Beta 1 release
2019-05-23 20:13:41 +10:00
Geoffrey McRae
dba9764c5e
[egl] alert: fix fuzzy font bug and make alerts a little more plesant
2019-05-23 19:58:12 +10:00
Geoffrey McRae
1492196bbf
[client] shutdown application on window close even if ignoreQuit is set
...
Fixes #138
2019-05-23 18:27:21 +10:00
Geoffrey McRae
d2d427b533
[client] egl: query maximum multisample support for MSAA context
...
Based on @rLink234's work in 4ac781b4516678b6c59d9ecf4a61df64a01ec8c1
Fixes #128
2019-05-23 16:56:50 +10:00
Geoffrey McRae
3585e02993
[client] egl: add options for maximum NV level and initial level
...
Adds options:
* egl:nvGain
* egl:nvGainMax
Fixes #153
2019-05-23 16:33:40 +10:00
Geoffrey McRae
86f4256b5a
[client] egl: fix streaming texture re-init crash
2019-05-22 12:19:03 +10:00
Geoffrey McRae
84b2917706
[client] app: new options to reduce CPU usage
...
This patch increases the default cursor and frame polling interval from
1us to 1000us which for most use cases should be more then fast enough.
It also adds two new configuration options to adjust these should it be
required:
* app:cursorPollInterval
* app:framePollInterval
2019-05-22 12:00:06 +10:00
Geoffrey McRae
fc66a4a19c
[client] egl: use persistant mapped texture buffers
...
While it is recommended to use memory barriers when updating a buffer
like we are, since we double buffer it is unlikely we will corrupt a
prior frame, and even if we do since it's just texture data at worst
we might see a tear.
2019-05-22 11:37:27 +10:00
Geoffrey McRae
087387087e
[client] fix race condition on initial uniform access
2019-05-22 11:36:47 +10:00
Geoffrey McRae
67595d6deb
[client] added missing semi-colon (not sure how that happened)
2019-05-21 15:51:45 +10:00
Geoffrey McRae
77f942711a
[client] fixed typo in option description
2019-05-21 15:51:14 +10:00
Geoffrey McRae
e3c98ddc35
[client] port all configuration parsing to use the new option helper
2019-05-21 15:03:59 +10:00
Geoffrey McRae
ba50fbdc3e
[client] egl: implement pixel perfect upscaling
2019-04-19 11:23:51 +10:00
Geoffrey McRae
6f77ba8aea
[client] perform proper shutdown on SIGTERM
2019-04-14 09:15:03 +10:00
Geoffrey McRae
32bd6d96e3
[common] implemented crash handler for linux (including backtrace)
2019-04-11 16:41:52 +10:00
Geoffrey McRae
d8915dbfc9
[build] make "common" a static library (part 2/2)
2019-04-11 11:12:59 +10:00
Łukasz Kostka
ccd0fd8902
Add install binary target
2019-04-05 03:18:11 +11:00
Geoffrey McRae
1fbba5cf2d
[client] egl: make nightvision enhance luminosity before gain
2019-03-31 00:08:52 +11:00
Geoffrey McRae
d6805cfa0f
[client] main: move config free into new config_free
method
2019-03-30 16:00:47 +11:00
Geoffrey McRae
4dee965fdf
[client] main: move config and option parsing into a seperate unit
2019-03-30 15:52:00 +11:00
Geoffrey McRae
35094a57cb
[client] more cleanup and added alerts for new events
2019-03-30 12:26:06 +11:00
Geoffrey McRae
5d254c7751
[client] main: don't ignore keybinds when spice is disabled
2019-03-29 02:33:09 +11:00
Geoffrey McRae
7fd4ba3aad
[client] main: added <escape>+I for spice input enable toggle
2019-03-29 02:17:06 +11:00
Geoffrey McRae
ecfcf11c05
[client] main: fix errornous double keybind registration
2019-03-29 02:08:16 +11:00
Geoffrey McRae
30ea57c644
[client] main: add full screen toggle key bind <escape>+F
...
Fixes #139
2019-03-29 02:06:37 +11:00
Geoffrey McRae
c4001c727a
[client] egl: added new super+N binding to increase image gain
...
This feture is to allow the use of the key combination <super>+N to
increase the brightness of the screen when using monitors with poor
backlighting. Can help in some games.
N = Night vision
2019-03-29 00:15:14 +11:00
Geoffrey McRae
fd4cfc2ff3
[client] main: add interface for modules to register key binds
2019-03-29 00:15:04 +11:00
Geoffrey McRae
03cb61f746
[client] main: prevent the cursor thread starting too early
...
fixes #136
2019-03-28 21:23:24 +11:00
Geoffrey McRae
8eed25b469
[client] cmake: list enabled features in configure output
2019-03-28 20:27:38 +11:00
Geoffrey McRae
ee09594190
[client] cmake: cosmetics
2019-03-28 20:15:13 +11:00
Geoffrey McRae
66c3c0115f
[client] added options to disable/enable interfaces
2019-03-28 20:12:18 +11:00
Geoffrey McRae
3e021f3a6b
[client] use cmake to generate renderers/fonts/clipboards headers/code
...
This is in preperation of cmake options to enable/disable various
functionallity.
2019-03-28 19:56:14 +11:00
Geoffrey McRae
b524c077a4
[client] egl: remove the rest of the shaders into seperate files
2019-03-28 15:53:15 +11:00
Geoffrey McRae
10f7efecb2
[client] cmake: fix inconsistent versioning
2019-03-28 15:03:35 +11:00
Geoffrey McRae
f09ee0bdb3
[client] egl: fix minor error in CMakeLists
2019-03-28 15:01:52 +11:00
Geoffrey McRae
d5a52241b0
[client] egl: move shaders into seperate files and build into objects
2019-03-28 14:59:54 +11:00
Geoffrey McRae
52c4e15c76
[client] project restructure part 2/2
2019-03-28 12:42:41 +11:00
Geoffrey McRae
fdba14691c
[client] egl: requires gl
2019-03-28 12:31:28 +11:00
Geoffrey McRae
3d136a28a0
[all] added pre-commit script and VERSION
...
This script belongs in .git/hooks/ to bump the version each commit.
2019-03-28 12:24:38 +11:00
Geoffrey McRae
db398d41a0
[client] project restructure part 1/2
2019-03-28 11:02:36 +11:00
Geoffrey McRae
7cbaf8b5be
[egl] don't assume SDL is compiled with Wayland support
2019-03-26 17:30:16 +11:00
NamoDev
d1c0d2b5f8
[CLIENT] cosmetic code changes
2019-03-18 08:32:38 +11:00
NamoDev
909606627f
[CLIENT] Fixed invalid value initialization
2019-03-18 08:32:38 +11:00
NamoDev
80f5d3a660
[CLIENT] Added option for custom window title
2019-03-18 08:32:38 +11:00
Geoffrey McRae
a57d68acd5
[client] main: fixed help text typo
2019-02-26 03:12:57 +11:00
Geoffrey McRae
a33734e2d3
[client] main: help output cosmetics
2019-02-26 03:09:59 +11:00
Geoffrey McRae
e5921b3949
[client] main: better error text for changed spice options
2019-02-26 03:08:26 +11:00
Geoffrey McRae
5de25f2b43
[client] main: add options to control spice features
2019-02-26 03:06:53 +11:00
Geoffrey McRae
41f4166aed
[client] x11: remove noise about unsupported formats
2019-02-25 05:44:31 +11:00
Geoffrey McRae
4f8fa6e7aa
[client] fixes #135 , double free crash
2019-02-25 05:43:18 +11:00
Geoffrey McRae
dbd09a431a
Revert "[client] x11: prevent race condition causing double free"
...
This reverts commit 8d48dd973a
.
2019-02-25 04:59:51 +11:00
Geoffrey McRae
8d48dd973a
[client] x11: prevent race condition causing double free
2019-02-25 04:42:58 +11:00
Geoffrey McRae
c7666b314b
[client] x11: fix bidirectional clipboard functionallity
2019-02-24 15:35:31 +11:00
Geoffrey McRae
03628505ed
[client] spice: correct sending of large va agent buffers
2019-02-24 15:35:17 +11:00
Geoffrey McRae
b368873f4d
[client] x11: ignore clipboard select events from ourself
2019-02-24 12:16:32 +11:00
Geoffrey McRae
dd38f3ce13
[client] x11: don't notify to clear if no property
2019-02-24 12:10:57 +11:00
Geoffrey McRae
d8b01c0257
[client] initial host to client clipboard sync working
2019-02-24 11:43:32 +11:00
Geoffrey McRae
0a2fbe1f7f
[client] spice: implement full clipboard guest copy support
2019-02-23 04:24:30 +11:00
Geoffrey McRae
de0b54ae70
[client] cosmetics
2019-02-22 22:40:57 +11:00
Geoffrey McRae
54e8cce33c
[client] core: added initial clipboard interface and x11 stubs
2019-02-22 22:38:52 +11:00
Geoffrey McRae
08bf01b649
[all] update copyright dates
2019-02-22 22:16:14 +11:00
Geoffrey McRae
1a66c11091
[client] spice: better align the spice api for x11 cliboard integration
2019-02-22 19:51:14 +11:00
Geoffrey McRae
689a1de69b
[client] spice: added clipboard callbacks to decouple spice from SDL
2019-02-22 18:59:45 +11:00
Geoffrey McRae
0dfa7425c1
[client] spice: fixed copying large amounts of text to the clipboard
2019-02-22 12:33:55 +11:00
Geoffrey McRae
4098db039e
[client] spice: fix read to allow for larger amounts of data
2019-02-22 09:15:29 +11:00
Geoffrey McRae
a7834611d1
[client] spice: fix memory leak
2019-02-22 09:08:53 +11:00
Geoffrey McRae
9dd4e4756b
[client] spice: implemented guest -> client clipboard sync
2019-02-22 09:02:34 +11:00
Geoffrey McRae
108369414e
[client] spice: implement channel caps and initial clipboard support
2019-02-22 07:40:43 +11:00
Geoffrey McRae
00e07c0384
[client] spice: remove extra debug output
2019-02-22 07:39:55 +11:00
Geoffrey McRae
1ebee561bc
[client] spice: fix incorrect message size for agent messages
2019-02-22 07:38:05 +11:00
Geoffrey McRae
ec0db86663
[client] spice: fix unitialized value
2019-02-22 04:13:27 +11:00
Geoffrey McRae
3df4bb3a54
[client] spice: protocol updates for performance and agent support
...
Note: agent support is not complete at this point due to lack of documentation.
2019-02-22 03:04:06 +11:00
Geoffrey McRae
5bd748680f
client: cosmetics
2019-02-22 03:04:06 +11:00
Marius Barbu
e09ff31c09
[client] update viewport size after window is created
...
Make sure glViewport gets called as soon as we know the window
dimensions, otherwise nothing gets rendered until KVMFR communication is
established (mostly the splash).
Without the fix, './looking-glass-client -s' behaves differently than
'./looking-glass-client -s -F' in that the latter triggers a
SDL_WINDOWEVENT_SIZE_CHANGED and updates the viewport immediately after
window creation while the former doesn't and all rendering is delayed
until the frameThread successfully decodes the first frame.
As all the possible ways of updating the viewport (window creation,
window size change, frame size change) are covered with
updatePositionInfo(), the 'started' state becomes redundant and is
removed.
Note: this might be the wrong way to fix it (possible driver bug?),
glViewport's specification mentions that the default viewport size
matches the window size when the GL context is first attached.
Tested on:
Debian Buster with GNOME 3.30.2 on X.Org 1.20.3
Looking Glass (a12-21-g07e4c1c20f)
Locking Method: Atomic
Using: EGL
Vendor : Intel Open Source Technology Center
Renderer: Mesa DRI Intel(R) Haswell Desktop
Version : OpenGL ES 3.1 Mesa 18.3.2
Signed-off-by: Marius Barbu <msb@avengis.com>
2019-02-21 07:56:25 +11:00
Geoffrey McRae
07e4c1c20f
[client] spice: correct issue with new channel list support
2019-02-21 05:31:51 +11:00
Geoffrey McRae
daf854c692
[client] spice: initial agent support
2019-02-21 05:06:13 +11:00
Geoffrey McRae
65c1e0391c
[client] spice: minor fixes, don't assume inputs channel exists
2019-02-21 03:43:11 +11:00
Geoffrey McRae
769edba1a5
[client] spice: remove useless mouse queue, this is not needed
...
When this was first developed the official spice client was used as an example refrence, however upon inspecting the source of spice-server it has been determined that there is no server side queueing going on, and acks are simply sent after every 4 to reduce bandwidth.
2019-02-19 14:50:30 +11:00
Frediano Ziglio
2567447b24
[client] spice: use correct enumeration for SpiceLinkReply
...
SPICEC_ERROR_CODE_xxx constants are supposed to be used by old
client (obsoleted years ago).
SpiceLinkReply error field uses SPICE_LINK_ERR_xxx enumeration
constants.
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
2019-02-10 09:06:07 +11:00
Geoffrey McRae
473e4716fc
[client] spice: debug print unsigned int re #127
2019-01-25 14:17:06 +11:00
Dominik Csapak
59cac9c0cc
change spice port type to unsigned short
...
so that ports >32767 get displayed correctly,
also signed overflow is undefined behaviour
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2019-01-25 14:15:22 +11:00
Geoffrey McRae
92d87d983b
[client] spice: fix incorrect cursor button state being sent
2019-01-17 02:45:46 +11:00
Geoffrey McRae
bfc4a1bc16
[client] update client to handle new cursor move code
2019-01-12 00:00:21 +11:00
Geoffrey McRae
e4ae9134ae
[client] egl: fix graphical glitch with splash
2019-01-02 10:36:17 +11:00
Geoffrey McRae
640bc03c6b
[client] [Patch 2/2] fixes #106
2019-01-02 10:30:55 +11:00
Geoffrey McRae
667aed635d
[client] egl: added untested support for wayland
2019-01-02 00:04:40 +11:00
Alexander Olofsson
1d3a23e051
Store the initial window size in the state
...
Fixes #107
2018-12-17 16:07:21 +11:00
Geoffrey McRae
507732587e
[client] egl: fixed uninitialized variable bug
2018-12-16 12:17:12 +11:00
Geoffrey McRae
d1e3508d55
[client] fix early render issue
2018-12-16 11:02:51 +11:00
Geoffrey McRae
3a8998f1f9
[client] make EGL the default renderer
2018-12-16 11:02:40 +11:00
Geoffrey McRae
de5795e368
[client] egl: implemented alerts and some minor fixes to fps
2018-12-16 10:57:01 +11:00
Geoffrey McRae
fca71e2b95
[client] egl: slight correction to splash
2018-12-16 00:56:35 +11:00
Geoffrey McRae
0e2b371e59
[client] egl: added splash screen rendering
2018-12-16 00:54:37 +11:00
Geoffrey McRae
e1fa6b4057
[client] egl: fix cursor regression
2018-12-13 02:11:37 +11:00
Geoffrey McRae
b6c8d3fae5
[client] egl: fix mono cursor double height regression
2018-12-13 01:39:52 +11:00
Geoffrey McRae
eb1c61f335
[client] warn about poor FPS display performance
2018-12-13 01:34:23 +11:00
Geoffrey McRae
5842ce23a3
[client] pre-calculate the frame time
2018-12-13 01:34:14 +11:00
Geoffrey McRae
692d48df87
[client] don't calculate FPS if we are not showing it
2018-12-13 01:28:00 +11:00
Geoffrey McRae
49bd091359
[client] use clock_nanosleep for more accurate frame timing
2018-12-13 01:22:57 +11:00
Geoffrey McRae
5fe2db7e56
[client] rename fps variables to be more correct
2018-12-12 23:59:22 +11:00
Geoffrey McRae
b927f991d6
Revert "[client] improve fps target accuracy"
...
This reverts commit 4d7e1054bd
.
This causes FPS runaway after a time
2018-12-12 23:40:29 +11:00
Geoffrey McRae
4d7e1054bd
[client] improve fps target accuracy
2018-12-12 23:33:35 +11:00
Geoffrey McRae
42fa0e1d1f
[client] egl: corrected fps alpha blending
2018-12-12 22:38:08 +11:00
Geoffrey McRae
abfe3a9b4d
[client] egl: moved desktop rendering into seperate unit
2018-12-12 21:41:51 +11:00
Geoffrey McRae
b9f8f1a0ad
[client] egl: add and use default quad helper for models
2018-12-12 20:08:52 +11:00
Geoffrey McRae
608b67af77
[client] egl: moved fps code into seperate unit
2018-12-12 20:04:43 +11:00
Geoffrey McRae
2a65e39848
[client] egl: added missing files from last commit
2018-12-12 18:57:31 +11:00
Geoffrey McRae
c23bf6a0c4
[client] egl: migrate cursor code into seperate unit
2018-12-12 18:53:55 +11:00
Geoffrey McRae
50c460df5a
[client] define GL_GLEXT_PROTOTYPES globally
2018-12-12 16:53:30 +11:00
Geoffrey McRae
61f0577ab2
[client] egl: costmetics
2018-12-12 16:41:29 +11:00
Geoffrey McRae
a9aab3c1ee
[client] egl: moved egl sources into subdirectory
2018-12-12 16:39:04 +11:00
Geoffrey McRae
73da86ac0e
[client] egl: add checking to egl_shader_get_uniform_location
2018-12-12 16:32:16 +11:00
Geoffrey McRae
43d08df6b3
[client] egl: rename "shader" to "this" for consistancy
2018-12-12 16:31:25 +11:00
Geoffrey McRae
4654f317ca
[client] opengl: fixed incorrect colors and added 10-bit RGBA support
2018-12-12 10:55:18 +11:00
Geoffrey McRae
d2b83027b4
[client] egl: removed accidental commit of test code
2018-12-11 16:35:53 +11:00
Geoffrey McRae
7be930a69c
[client] removed use of now removed frame type, fixed #105
2018-12-11 16:34:41 +11:00
Geoffrey McRae
75ffcacfe4
[client] added support for RGBA, BGRA and 10-bit RGBA
2018-12-04 21:24:01 +11:00
Geoffrey McRae
1beeac545d
[client] added missing lg-fonts.c to the repo
2018-11-20 22:34:01 +11:00
Geoffrey McRae
ab98c87e7c
[client] egl: added FPS rendering
2018-11-20 09:50:09 +11:00
Geoffrey McRae
5b453d604e
[client] remove other render modes from font ABI
2018-11-20 05:50:22 +11:00
Geoffrey McRae
90fc2a8164
[client] move FPS calculations out of renderers
2018-11-20 05:26:51 +11:00
Geoffrey McRae
0ed9301ed9
[client] font: implemented font ABI and updated OpenGL to use it
2018-11-20 04:38:53 +11:00
Geoffrey McRae
2692ccc7b3
[client] use mouse visibility info properly
2018-10-09 18:33:18 +11:00
Geoffrey McRae
d8b4d0c1ce
[client] consume all SDL events in the filter
2018-10-04 17:18:09 +10:00
Geoffrey McRae
9613127162
[client] better usage of SDL event loops
2018-10-04 17:03:09 +10:00
Geoffrey McRae
4e7de236d3
[egl] implement window positioning
2018-10-04 02:31:37 +10:00
Geoffrey McRae
741dfd418d
[egl] improve texture upload performance
2018-10-04 00:09:47 +10:00
Geoffrey McRae
1d6dfa048e
[client] tighten timings
2018-10-04 00:09:47 +10:00
Geoffrey McRae
e70928d603
[egl] fix incorrect xor blending for monochrome cursors
2018-09-25 23:32:45 +10:00
Geoffrey McRae
e2b33348f3
[egl] added monochrome cursor rendering
2018-09-25 23:04:29 +10:00
Geoffrey McRae
3ff712fea5
[egl] fix performance issue with cursor updates and add todo message
2018-09-24 20:26:31 +10:00
Geoffrey McRae
2db26ae37e
[egl] fix incorrect mouse size and position scaling
2018-09-24 20:11:42 +10:00
Geoffrey McRae
375b97ca6f
[egl] fix incorrect mouse colors
2018-09-24 19:52:44 +10:00
Geoffrey McRae
d331a3dd5a
[egl] added intial cursor support
2018-09-24 19:48:11 +10:00
Geoffrey McRae
c0c63fd93b
[egl] simplify yuv to rgb shader
2018-09-23 20:56:18 +10:00
Geoffrey McRae
b5a47cae25
[egl] implemented YUV420 decode support in hardware
2018-09-23 20:45:20 +10:00
Geoffrey McRae
1f1c9dfa59
[egl] don't re-create the buffer each frame
2018-09-23 16:56:09 +10:00
Geoffrey McRae
0903b4a610
[egl] make new OpenGL ES renderer available
...
Note that this renderer is incomplete at this time as it doesn't
render the cursor.
2018-09-23 16:04:20 +10:00
Geoffrey McRae
884ad6557b
[egl] cleanup texture API
2018-09-23 15:56:47 +10:00
Geoffrey McRae
00658f3d64
[egl] split out texture code into it's own object
2018-09-23 15:48:44 +10:00
Geoffrey McRae
fff3ec30b8
[egl] added basic shaders and use dma to xfer buffer to the gpu
2018-09-22 18:00:52 +10:00
Geoffrey McRae
26434f7baf
[egl] initial commit of new modern OpenGL ES renderer
2018-09-22 16:26:55 +10:00
Andy Chun
f75e2fe8db
Default XDG_SESSION_TYPE to unspecified
...
Minimal systems in cases may not have XDG_SESSION_TYPE set at all, causing the program to segfault at the `strcmp`. This commit sets XDG_SESSION_TYPE to `unspecified` (according to https://www.freedesktop.org/software/systemd/man/pam_systemd.html ) if it is not defined in the environment.
2018-08-03 10:02:54 +10:00
Yvan da Silva
0674e04597
Corrects an error in a debug message
...
* This happened during the last edit.
2018-07-30 08:07:53 +10:00
Yvan da Silva
29f1d6cd42
[client] Adds back support for wayland
...
* Since LG is now using SDL2, the SDL_VIDEODRIVER must be set.
* This fixes SDL error 'Couldn't find matching GLX visual' when creating the window.
2018-07-30 08:07:53 +10:00
Geoffrey McRae
83592f7e4a
[client] cleanup of renderer API for better usage
...
* Added new on_render_start for render initialization
* Changed on_resize to execute inside the render thread
2018-07-28 14:49:37 +10:00
Geoffrey McRae
13cd50f92c
[client] disable multisample after logo is gone
...
We only use multisample to smooth out the edges of the LG logo, it is
pointless to leave it on after the logo is gone.
2018-07-28 10:36:41 +10:00
Geoffrey McRae
05bd587c74
[client] implemented initial slow yuv420 support
2018-07-28 08:41:39 +10:00
Geoffrey McRae
ef336d552c
[parser/nal] no need to check for null before free ( fixes #87 )
2018-07-26 06:09:12 +10:00
Geoffrey McRae
60070e6076
[client] implement stream paused alert
2018-07-24 01:09:53 +10:00
Geoffrey McRae
1f90010cbd
[client] add switch to disable alert messages, fixes #83
2018-07-20 01:09:51 +10:00
Geoffrey McRae
d839026ade
[opengl] added fade out to wait screen
2018-07-20 01:01:16 +10:00
Geoffrey McRae
34de213926
[opengl] render alerts and fps on wait screen
2018-07-20 00:10:29 +10:00
Geoffrey McRae
b5ec4dd305
[client] scale up the logo and put a gradient behind it
2018-07-19 23:48:35 +10:00
Geoffrey McRae
023d3f811b
[client] render the looking glass logo (almost)
2018-07-19 23:33:51 +10:00
Geoffrey McRae
53c32cc5a4
[client] enable multisampling
2018-07-19 23:33:26 +10:00
Geoffrey McRae
eb6ee8ea46
[client] allow window resize event's before startup
2018-07-19 23:32:42 +10:00
williamvds
b19518a1f8
[client] Allow keyboard capture ( #26 )
2018-06-05 12:09:19 +10:00
Geoffrey McRae
14954cc426
[client] fix too early release of OpenGL context
...
Fixes a problem where resolution changes would require a restart of
the client
2018-05-31 18:54:29 +10:00
Geoffrey McRae
32dca9ea3f
[client] only provide linker flags at link time
2018-05-31 18:54:10 +10:00
Geoffrey McRae
792200cac4
[client] use atomic locking by default
2018-05-29 18:18:22 +10:00
Geoffrey McRae
526b607e37
[client] fixed warning/error text
2018-05-29 18:10:58 +10:00
Geoffrey McRae
298885083b
[client] remove xlib shim as it is no longer needed
2018-05-29 18:09:27 +10:00
Geoffrey McRae
26c4804892
[client] replace custom Makefile with cmake build
2018-05-29 18:08:26 +10:00
Geoffrey McRae
a507dd0c51
[client] remove h264 decoder for now
2018-05-29 17:44:25 +10:00
Geoffrey McRae
c6830bab16
[client] remove useless linking against libssl
2018-05-29 17:44:07 +10:00
Geoffrey McRae
a0457a2dd9
[client] added nettle/bignum.h to rsa.c, CentOS 7 seems to need it
2018-05-29 14:55:28 +10:00
Geoffrey McRae
ce60cafa19
[client] removed invalid MS Windows specific hint
...
See: https://wiki.libsdl.org/SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4
> A hint that specifies that SDL should not to generate
> SDL_WINDOWEVENT_CLOSE events for Alt+F4 on Microsoft Windows.
2018-05-29 14:09:44 +10:00
Geoffrey McRae
9e02131525
[client] don't scale the mouse when in capture mode
2018-05-29 11:55:28 +10:00
Geoffrey McRae
6918eeca26
[client] added missing library for floor
function
2018-05-29 11:08:56 +10:00
Geoffrey McRae
fbbee1cdac
[opengl] added support for alerts
2018-05-29 11:08:25 +10:00
Geoffrey McRae
89959b48a7
[client] added linked list utility
2018-05-29 11:08:01 +10:00
Geoffrey McRae
b26a535451
[client] added support for alert text
2018-05-29 11:06:42 +10:00
Geoffrey McRae
86207993b8
[client] alert the user when capture mode is on or off
2018-05-29 09:02:34 +10:00
Geoffrey McRae
ee9213da76
[client] add alert method to renderer api
2018-05-29 08:59:07 +10:00
Geoffrey McRae
a084b2b32f
[client] added the ability to specify the capture key (-m)
2018-05-29 08:51:58 +10:00
Geoffrey McRae
afdae8efc0
[client] allow the system screensaver to operate, -S to disable
2018-05-29 08:34:52 +10:00
Geoffrey McRae
64ad862116
[client] remove noise about scaling/alignment as this is fixed
2018-05-29 08:28:55 +10:00
r4m0n
4d81aaa763
Code cleanup
2018-05-29 02:18:17 +10:00
r4m0n
8cb25792ba
Fixing scaled mouse movement
2018-05-29 02:18:17 +10:00
Geoffrey McRae
97749b335a
[client] start rendering a little earlier
2018-05-28 15:36:12 +10:00
Geoffrey McRae
a647a602bf
[opengl] render a blue screen while waiting for sync
2018-05-28 15:30:31 +10:00
Geoffrey McRae
882b31aeaa
[client] add support for masked colour cursors ( fixes #61 )
...
Also allows early SDL usage for cursor and keyboard control before
the host application starts
2018-05-28 11:40:56 +10:00
Geoffrey McRae
62e67c345c
[client] reduce weight of FPS limiter feedback
2018-05-25 08:35:52 +10:00
Geoffrey McRae
5de9a8dce6
[client] prevent usleep underflow in FPS limiter
2018-05-24 18:10:23 +10:00
Geoffrey McRae
a4600e7278
[client] added FPS limiter for when running without vsync
2018-05-24 11:56:11 +10:00
Geoffrey McRae
c42bff99e2
[client] adjustments for better sync
2018-05-24 11:26:09 +10:00
Geoffrey McRae
df7183a572
[kvmfr] decouple cursor flags from frame flags and fix timings
2018-05-24 09:01:53 +10:00
Geoffrey McRae
7a5bbb1e59
[client] add unix socket support, fixes #67
2018-05-23 12:16:44 +10:00
Geoffrey McRae
a3cd0385d0
[doc] Fix formatting
2018-05-23 08:46:03 +10:00
Geoffrey McRae
8fdc11813d
[doc] Rename DEBUGGING file for Markdown formatting
2018-05-23 08:45:07 +10:00
Geoffrey McRae
fb412e8440
[doc] Added some documentaion for how to debug the LG client
2018-05-23 08:44:11 +10:00
Geoffrey McRae
6f141fe393
[client] removed unused define in rsa.c
2018-05-22 15:40:08 +10:00
Geoffrey McRae
9b0f974648
[client] switch to nettle and gmp for RSA EME-OAEP support
...
Fixes #68
2018-05-22 15:36:36 +10:00
Geoffrey McRae
ceac6a60e6
[spice] initial GnuTLS implementation (incomplete)
2018-05-22 09:49:35 +10:00
Geoffrey McRae
cba6630aa0
[spice] relocate openssl code into seperate function
...
This is in preperation of switching to an alternative SSL library
as OpenSSL conflicts with the GNU licence.
2018-05-22 09:39:03 +10:00
Geoffrey McRae
b3aadccfc4
[client] use glFinish to prevent buffering and re-enable by default
2018-05-21 23:16:16 +10:00
Geoffrey McRae
b8a1743d8f
[client] fixed crash when specifying the shmFile as a command
2018-05-21 21:46:48 +10:00
Geoffrey McRae
d097531926
[client] allow the mouse and keyboard to operate early
2018-05-16 18:19:32 +10:00
Geoffrey McRae
d339ca3599
[client] remove dependencies on libva until h264 is ready
2018-05-16 18:14:08 +10:00
Geoffrey McRae
adb1ca58b9
[opengl-basic] removed basic renderer as it is no longer needed
2018-05-16 18:13:20 +10:00
Geoffrey McRae
70ffe1de43
[h264] disable the module until I or someone finds time to finish it
2018-05-16 18:12:29 +10:00
Geoffrey McRae
cf4d16b528
[opengl] numerous improvements to buffer transfer
2018-05-16 17:58:36 +10:00
Geoffrey McRae
d0756cf00c
[main] make it possible to manually specify the memory size
2018-05-15 20:07:48 +10:00
Geoffrey McRae
4fd59ce8c9
[opengl] fix free bug with new contiguous buffer
2018-05-15 19:25:22 +10:00
Geoffrey McRae
adca879fb9
[opengl] use a single contiguous buffer for the AMD pinned buffer
2018-05-15 19:23:57 +10:00
Geoffrey McRae
3a2d612b41
[decoders] change the API to allow more flexability in the future
2018-05-15 19:19:39 +10:00
Geoffrey McRae
332d53e016
[opengl] Add support for AMD_pinned_memory if it is available
2018-05-15 13:23:44 +10:00
Geoffrey McRae
ae1344d1a0
[spice] fix out by one error in call to strncpy
2018-05-15 09:56:42 +10:00
Geoffrey McRae
ae382949c8
[opengl] glxWaitVideoSyncSGI is not well supported in Mesa 18
...
It seems Mesa 18 has problems with the glxWaitVideoSyncSGI API so
we disable the 'preventBuffer' option by default
2018-05-15 09:54:24 +10:00
Geoffrey McRae
fd8d4d3d38
[client] enable configuration of spice via config
2018-02-05 19:08:31 +11:00
Geoffrey McRae
a2216e4b68
[client] cosmetics
2018-02-05 19:08:15 +11:00
Alam Arias
4fb9fc3b3f
[client]: ignore Alt-F4 in ignoreQuit mode ( #46 )
...
* [client]: ignore Alt-F4 in ignoreQuit mode
* [client]: turn down the SNR for SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4
* [client]: turn down the SNR for SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS
2018-02-02 10:32:46 +11:00
arcnmx
d7321d5f5f
[client] fix event loop sleep ( #45 )
2018-01-30 21:07:14 +11:00
Geoffrey McRae
35eda57cb2
[client] remoted accidential commit of experimental method from header
2018-01-29 17:30:46 +11:00
Geoffrey McRae
78a100135b
[client] fix improper spice socket shutdown
2018-01-29 17:27:12 +11:00
Geoffrey McRae
dc6932a9ba
[client] no need to supress bin directory creation command
2018-01-29 17:04:08 +11:00
Geoffrey McRae
d765674913
[client] fix concurrent make, fixes #43
2018-01-29 17:02:41 +11:00
Geoffrey McRae
2af522aea7
[client] prevent 100% CPU usage in event loop, fixes #41
2018-01-29 16:56:23 +11:00
arcnmx
9aba969296
[client] fix SDL mutex compile errors ( #42 )
2018-01-29 16:51:14 +11:00
Geoffrey McRae
2114b73c11
[client] makefile: use $(CC) instead of assuming gcc
2018-01-25 09:58:03 +11:00
Geoffrey McRae
d591e2fd36
[client] added xlib-shim to disable calls to XSync
...
The compiled xlib-shim.so can be used to intercept and prevent SDL
from calling XSync, which causes latency issues on some video
hardware.
To use specify the full path to the file in the LD_PRELOAD
environment variable, like so:
LD_PRELOAD=/full/path/xlib-shim.so ./looking-glass
2018-01-25 09:55:21 +11:00
Geoffrey McRae
c61d97b0ac
[client] spice: add channel and mouse locking
...
This fixes a race condition which causes the mouse ringbuffer to
overflow. It also corrects out of order message index IDs due to
multiple threads sending messages asyncronously.
2018-01-25 07:41:11 +11:00
Geoffrey McRae
37ea662998
[client] use SDL_SetEventFilter for better mouse performance
...
This partially resolves lag issues on hosts running the amdgpu driver.
If mouse caputure is enable the lag issue returns, this is because SDL
calls `XSync` in `X11_WarpMouse` and `X11_WarpMouseGlobal`, if these
calls are removed all input lag issues dissapear.
This issue has been reported to SDL as the calls to `XSync` are not
required per the xlib documentation.
2018-01-24 23:46:11 +11:00
Aaron
3d9d275d61
Ignore SDL_MOUSEBUTTONDOWN events incompatible with SPICE ( #38 )
...
* Ignore SDL_MOUSEBUTTONDOWN events that aren't compatible with the SPICE PS/2 mouse
2018-01-15 10:55:17 +11:00
Geoffrey McRae
a02087e5e4
[client] h264: unroll silly loop
2018-01-06 13:47:35 +11:00
Geoffrey McRae
2ccf17b9b7
[client] h264: setup slice parameters correctly (incomplete)
2018-01-06 13:43:24 +11:00
Geoffrey McRae
8ccce5666c
[client] nal: corrections to parsing logic
2018-01-06 13:40:31 +11:00
Geoffrey McRae
859e984827
[client] h264: vaapi deprecated these fields, FMO is not supported
...
fbed1dbb5b/va/va.h (L2840)
2018-01-06 09:47:49 +11:00
Geoffrey McRae
5e84cfb3f1
[client] h264: use parameters from nal (incomplete)
2018-01-06 00:11:38 +11:00
Geoffrey McRae
5a84d3bef7
[client] h264: don't treat parse failure as fatal
2018-01-05 23:18:52 +11:00
Geoffrey McRae
634be5b096
[client] nal: removed useless debug print
2018-01-05 23:13:22 +11:00
Geoffrey McRae
80c9e24604
[client] nal: added final SLICE parser features
2018-01-05 23:09:43 +11:00
Geoffrey McRae
5808089fce
[client] nal: added SLICE parser
2018-01-05 21:36:26 +11:00
Geoffrey McRae
d6f84ddd12
[client] nal: added PPS parser
2018-01-05 16:18:28 +11:00
Geoffrey McRae
c809eeb2a8
[client] fixed nal parser memory leaks
2018-01-05 15:27:36 +11:00
Geoffrey McRae
2dfb1cf1a6
[client] Makefile: stop at the first error
2018-01-05 11:45:30 +11:00
Geoffrey McRae
50ba9b4899
[client] added initial NAL unit parser
2018-01-05 11:36:45 +11:00
Geoffrey McRae
b9723adc30
[client] h264: use high profile as it's more compatible on newer cards
2018-01-04 09:27:24 +11:00
Geoffrey McRae
7648ea712c
[client] opengl: fix termination on configure failure
2018-01-04 09:25:42 +11:00
Geoffrey McRae
3f29897506
[client] fix application termination on error
2018-01-04 09:25:17 +11:00
Geoffrey McRae
bebbdc4089
[client] h264 switch to contrained decoder as baseline is deprecated
2018-01-01 12:56:26 +11:00
Geoffrey McRae
fbf08b94aa
[client] initial vaapi h264 decode support (unfinished)
2017-12-31 00:27:26 +11:00
Geoffrey McRae
e854723aa3
[client] fixed incorrect cursor dataPos validation
2017-12-30 13:48:32 +11:00
Geoffrey McRae
076a45acc5
[client] added initial decoder framework
2017-12-29 22:48:21 +11:00
Geoffrey McRae
c239306d82
[client] initial support for compressed frames
2017-12-29 21:20:51 +11:00
Geoffrey McRae
40bfdcdf8c
[client] added configuration file loading support
...
the client now will look for a configuration file in the following
locations by default.
* /etc/looking-glass.conf
* ~/.looking-glass.conf
All configuration files are loaded and may override values specified by
any prior configuration files loaded.
Sample Config:
global:
{
fullScreen=false;
showFPS=true;
x=0;
y=0;
w=800;
h=600;
}
OpenGL:
{
mipmap="false";
}
2017-12-28 19:58:19 +11:00
Geoffrey McRae
6a6e53f728
[client] removed the dependency on the ivshmem-server
...
Since we do not use IRQs anymore we can use the ivshmem-plain device
which doesn't need the ivshmem-server. The QEMU arguments now should be
as follows:
-device ivshmem-plain,memdev=ivshmem
-object memory-backend-file,id=ivshmem,share=on,mem-path=/dev/shm/looking-glass,size=32M
Obviously adjusting the memory size as required. It is suggested that
the shared memory file be created before the guest is started with the
appropriate permissions, for example:
touch /dev/shm/looking-glass
chown user:kvm /dev/shm/looking-glass
chmod 660 /dev/shm/looking-glass
2017-12-28 15:34:18 +11:00
Geoffrey McRae
db52a55b36
[client] opengl: remove deprecated glScissor, fixes FPS display
2017-12-23 17:40:50 +11:00
Geoffrey McRae
0574daca13
[client] removed unused function argument
2017-12-23 17:38:25 +11:00
Geoffrey McRae
a08aad8009
[client] opengl: don't scale the FPS readout
2017-12-21 06:50:57 +11:00
Geoffrey McRae
2b66fa6136
[client] warn about unreliable cursor scaling
...
This also logs the scaling information to assist with reports about
improper mouse alignment
2017-12-21 06:39:41 +11:00
Geoffrey McRae
e3a426f378
[client] update dimension information after the first frame
2017-12-21 06:38:34 +11:00
Geoffrey McRae
e5f86a824a
[client] switch back to atomic locking as the default
...
The prior patch to correct the mouse loop resolves the CPU load issue
with the atomic locking method. SDL mutexes are still available if
desired but full mutex locking is far slower then fast spinlocks
2017-12-21 02:12:19 +11:00
Geoffrey McRae
c0b2c8e655
[client] added missing wait to cursor update thread
2017-12-21 01:56:59 +11:00
Geoffrey McRae
c5cbb948e2
[client] report locking mode used for diagnostics
2017-12-21 01:35:36 +11:00
Geoffrey McRae
58ed978767
[client] opengl: switch to SDL_mutex locking
2017-12-21 01:23:25 +11:00
Geoffrey McRae
c098967293
[client] opengl: update FPS even when there is no updates
2017-12-21 01:17:45 +11:00
Geoffrey McRae
8fbacba82e
[client] make startup sleep nicer on the CPU
2017-12-21 01:15:16 +11:00
Geoffrey McRae
0753e63644
[client] fixed unlock define
2017-12-21 01:11:42 +11:00
Geoffrey McRae
5501d22a2d
[client] fixed missed usage of new locking semantics
2017-12-21 01:03:21 +11:00
Geoffrey McRae
2f6b7e08f8
[client] define locking types and semantics to allow for alt methods
2017-12-21 00:58:16 +11:00
Geoffrey McRae
695822bd6d
[client] redesign of the renderer archiceture for mt support
...
This is the first of two commits that completely turn the rendering code
on it's head. This change set decouples the guest's capture rate from
the host's render rate for both cursor and frame updates. This helps
prevent the host application from stalling when waiting for frame draws
when all it want's to do is send cursor updates.
* Breaks OpenGL-Basic for now
2017-12-20 00:53:45 +11:00
Geoffrey McRae
a70adb2568
[client] correct help text for new -o argument
2017-12-19 15:40:52 +11:00
Geoffrey McRae
21a4e15868
[client] cosmetics
2017-12-19 15:37:49 +11:00
Geoffrey McRae
8b25f8a344
[client] opengl: show actual FPS seperate from updates per second (UPS)
2017-12-19 12:17:50 +11:00
Geoffrey McRae
7d307c0a9c
[client] improved option parsing
2017-12-19 11:58:38 +11:00
Geoffrey McRae
133d8ec21f
[client] opengl: added preventBuffer option
2017-12-19 11:02:35 +11:00
Geoffrey McRae
f4b95eeda9
[client] fix option output counts and dynamic name padding
2017-12-19 10:56:23 +11:00
Geoffrey McRae
c38e38d43d
[client] opengl: add splitmouse option
...
This feature was previously hardcoded enabled, it is now optional as
some hardware pipelines stall with the excessive flushes resulting in a
jumpy cursor. Default is disabled and may be re-enabled with
`-o opengl:splitmouse=1` or `-o opengl-basic:splitmouse=1` depending on
the renderer selected.
2017-12-19 10:21:45 +11:00
Geoffrey McRae
0ac1992019
[client] add new OpenGL-Basic renderer
...
This is based on bf8da7fd7e4397fe9931e82e52753806f1eee7e0 by @kiljacken
Per issue #11 on some cards this method performs much better then the
persistant buffering used in the standard OpenGL renderer.
Closes #11
2017-12-17 23:32:08 +11:00
Geoffrey McRae
5305ec5dd1
[client] opengl: made vsync option function again
2017-12-17 23:24:58 +11:00
Geoffrey McRae
313a4122bc
[client] add -g option to force a specific renderer
2017-12-17 23:15:18 +11:00
Geoffrey McRae
065b8c1eab
[client] fix typo in help text
2017-12-17 22:45:26 +11:00
Geoffrey McRae
424dc8bb13
[client] add renderer option list
2017-12-17 22:33:02 +11:00
Geoffrey McRae
06e38d897d
[client] implemented renderer specific option API
...
Please note the vsync and mipmap options are now specific to OpenGL
To configure them use the following options:
-o opengl:mipmap=1
-o opengl:vsync=0
2017-12-17 22:21:59 +11:00
Geoffrey McRae
f3e19b743c
[client] added ability to pass options to renderers
2017-12-17 20:32:44 +11:00
Geoffrey McRae
deee61efa9
[client] cosmetics
2017-12-17 20:16:43 +11:00
Geoffrey McRae
71c7f30265
[client] added -Q feature to prevent accidental applicaiton closure
...
Closes #21
2017-12-17 20:11:52 +11:00
Geoffrey McRae
3784e9c06f
[client] added support for new header format
2017-12-17 05:21:02 +11:00
Geoffrey McRae
287b983d27
[client] opengl: fixed broken mipmap logic
...
mipmapping is turned off for images that are scaled up a it degrades the
output quality.
2017-12-16 11:25:01 +11:00
Geoffrey McRae
2bb8b0227c
[client] don't send renderer mouse events until it's configured
2017-12-15 19:14:02 +11:00
Geoffrey McRae
ae4156d041
[client] don't update mouse scaling values until started
2017-12-15 19:14:02 +11:00
Patrick Steinhardt
fe337cf510
[client] ivshmem: fix missing <sys/select.h> include
...
While the function `ivshmem_wait_irq` makes use of the select(3)
function, it does not include <sys/select.h>. This happens to work on
glibc based systems, which include thet file transitively via other
header files. But on musl libc based systems, this breaks compilation.
Directly include <sys/select.h> to fix the problem.
2017-12-15 18:25:21 +11:00
Geoffrey McRae
7bfed41523
[client] opengl: update mouse draw time when doing decoupled draws
2017-12-15 17:03:51 +11:00
Geoffrey McRae
9bb66b7bd6
[client] opengl: decouple mouse updates from vsync
2017-12-15 16:58:21 +11:00
Geoffrey McRae
f7420317f1
[client] opengl: mouse shape updates bypass the draw timeout
2017-12-15 16:53:26 +11:00
Geoffrey McRae
c1379a45d2
[client] opengl: increase maximum mouse draw frequency
2017-12-15 16:34:29 +11:00
Geoffrey McRae
9c03327701
[client] opengl: added back double buffering and vsync support
...
This adds back in double buffering and vsync support. This has been
carefully implemented so that the render function blocks until the video
card reports that it has advanced a frame, this ensures that the OpenGL
pipeline never buffers frames.
2017-12-15 16:21:38 +11:00
Geoffrey McRae
0d8b2449cf
[client] added back missing vsync disable option
2017-12-15 16:19:47 +11:00
Arti Zirk
d1bd5b3115
Do not minimize fullscreen window on focus loss
2017-12-15 15:59:28 +11:00
Jack Karamanian
e03621a622
[client] Add borderless fullscreen usage
2017-12-15 15:59:09 +11:00
Jack Karamanian
606da0ae47
Add borderless fullscreen option
2017-12-15 12:59:34 +11:00
Geoffrey McRae
b6c8136565
[client] initialize the local header copy for proper startup
2017-12-15 12:02:37 +11:00
Geoffrey McRae
8ae9f8464b
[client] updated client to support new KVMFR cursor dataPos field
2017-12-15 10:51:40 +11:00
Geoffrey McRae
3c61814c56
[client] windows cursors are in BGRA format
2017-12-15 10:20:20 +11:00
Geoffrey McRae
cd54cb179b
[client] make gcc happy about the ignored read result
...
Fixes #5
2017-12-15 00:57:49 +11:00
Geoffrey McRae
67bdf2ba97
[client] fix SDL_ttf.h include path.
2017-12-14 22:05:32 +11:00
Geoffrey McRae
ead48195db
[client] opengl: use the stride rather then rect width for padded widths
2017-12-14 20:35:36 +11:00
Geoffrey McRae
2ae9b479f6
[client] update window dimensions when the spice client is disabled
2017-12-14 20:09:48 +11:00
Geoffrey McRae
3fa9f371b4
[client] added license to opengl.c
2017-12-14 20:06:48 +11:00
Geoffrey McRae
8ec4abc544
[client] adjusted renderer interface to allow for APIs such as Vulkan
2017-12-14 17:42:59 +11:00
Geoffrey McRae
7b64d35cd1
[client] corrected path to SDL2_ttf header
2017-12-14 16:09:39 +11:00
Geoffrey McRae
8c2709a3f4
Revert "[client] disable hacky vsync code now we are single buffering"
...
This reverts commit d55f0bf841
.
2017-12-14 10:40:51 +11:00
Geoffrey McRae
d55f0bf841
[client] disable hacky vsync code now we are single buffering
2017-12-14 10:35:38 +11:00
Geoffrey McRae
dd0930d265
[client] our source is vairable frame rate, we can't double buffer at all
2017-12-14 10:30:55 +11:00
Geoffrey McRae
04f7800df4
[client] remove silly wait logic
2017-12-14 10:12:31 +11:00
Geoffrey McRae
d8a80a1cfc
[client] move startup later as DXGI stalls when nothing is going on
2017-12-14 10:08:47 +11:00
Geoffrey McRae
9d29b1195d
[client] treat buffers correctly
2017-12-14 10:06:22 +11:00
Geoffrey McRae
2374b1a9fb
[client] make methods static inline
2017-12-14 08:23:58 +11:00
Geoffrey McRae
a7180a5609
[client] another try at better screen sync
2017-12-14 06:54:53 +11:00
Geoffrey McRae
81f4a7fade
[client] slow down mouse updates to something reasonable
2017-12-14 04:18:30 +11:00
Geoffrey McRae
7986350cb8
[client] switch to polling mode to fix stutting issues
2017-12-14 02:24:18 +11:00
Geoffrey McRae
afff50dfde
[client] don't try to realign the mouse until we know where the mouse is
2017-12-13 22:05:47 +11:00
Geoffrey McRae
233b7755ae
[client] moved host startup sync before window creation
2017-12-13 21:57:01 +11:00
Geoffrey McRae
3bc2506d92
[client] added clean client restart mechanisim
2017-12-13 21:08:35 +11:00
Geoffrey McRae
371f7ce535
[client] cosmetics
2017-12-13 20:44:58 +11:00
Geoffrey McRae
a6b253197f
[client/opengl] removed extra calls to make the context current
2017-12-13 14:26:31 +11:00
Geoffrey McRae
b5cb796b7c
[client] changed opengl to process every frame
2017-12-13 14:10:24 +11:00
Geoffrey McRae
d0e5bd02bd
[client] use lists to draw the cursor
2017-12-13 13:10:32 +11:00
Geoffrey McRae
85c83d2417
[client] enable vsync again but draw to front for cursor updates
2017-12-13 05:55:01 +11:00
Geoffrey McRae
e7511b30bb
[client] kick the guest before waiting for updates
2017-12-13 05:28:53 +11:00
Geoffrey McRae
d2957228ef
[client] added monochrome cursor support
2017-12-13 04:49:43 +11:00
Geoffrey McRae
b5a5d4cda2
[common/client] add pitch to cursor shape structure
2017-12-13 04:42:09 +11:00
Geoffrey McRae
c36e948bdb
[client] added RGB cursor support
2017-12-13 03:51:25 +11:00
Geoffrey McRae
a950f7b187
[client] added initial code for rendering the cursor shape
2017-12-13 03:08:38 +11:00
Geoffrey McRae
5cfae05cae
[client] corrected screen resize bug and incorrect scissor
2017-12-13 02:28:41 +11:00
Geoffrey McRae
893bb7e603
[client] huge rewrite of renderer API deal with mouse updates
2017-12-13 02:22:47 +11:00
Geoffrey McRae
301d394f50
[client] updates for new protocol and vsync disable method
2017-12-12 08:08:14 +11:00
Geoffrey McRae
219179b375
[misc] added website url to sources
2017-12-12 04:30:47 +11:00
Geoffrey McRae
9f790ff51d
[client] corrected polling logic
...
Calculating the pollDelay for the next frame is impossible as the
frame rate is determined by the host application's capture API and
may wildly vary.
2017-12-12 03:59:58 +11:00
Geoffrey McRae
ce278d17a7
[client] print out video card information
2017-12-12 03:59:58 +11:00
Geoffrey McRae
3d462928a6
[client] added git version to build
2017-12-12 03:59:58 +11:00
Geoffrey McRae
5863160c69
[client] fixed incorrect usage of glXWaitVideoSyncSGI
2017-12-12 03:59:58 +11:00
Geoffrey McRae
7574e03d86
[client] fixed out by one error on frame sleep sync
2017-12-12 03:59:58 +11:00
Geoffrey McRae
38d458ac7d
[client] added dependency on X11
2017-12-12 03:59:58 +11:00
Geoffrey McRae
e2c1f1cd77
[client] set the compositor bypass hint
2017-12-12 03:59:58 +11:00
Geoffrey McRae
8adf7cbacd
[client] remove debug print
2017-12-12 03:59:58 +11:00
Geoffrey McRae
0ad1f21ffb
[client] renderer interface improvements and use gl lists for opengl
2017-12-12 03:59:58 +11:00
Geoffrey McRae
fcfea1b65d
[client] fixed basic renderer
2017-12-12 03:59:58 +11:00
Geoffrey McRae
e6a21d1049
[client] implemented SGI_video_sync for better frame sync
2017-12-12 03:59:58 +11:00
Geoffrey McRae
31c9693cbf
[client] move remaining opengl code into the opengl renderer
2017-12-12 03:59:58 +11:00
Geoffrey McRae
5e9885bec1
[client] apply fps limiter when presentation time is too low
2017-12-12 03:59:58 +11:00
Geoffrey McRae
786b9ec723
[client] altered makefile to link fontconfig
2017-12-12 03:59:58 +11:00
Geoffrey McRae
421b091448
[client] Added fontconfig for font path detection
2017-12-12 03:59:58 +11:00
Geoffrey McRae
a4d8fd2237
[client] added rate limiting to failed kicks (guest not ready)
2017-12-12 03:59:58 +11:00
Geoffrey McRae
3899556cbf
[client] added extra sanity checks to the header's data format
2017-12-12 03:59:58 +11:00
Geoffrey McRae
81f1b43581
[client] makefile, enable -O3 as the default now
2017-12-12 03:59:58 +11:00
Geoffrey McRae
79dffa047f
[client] dont mipmap when enlarging smaller screens
2017-12-12 03:59:58 +11:00
Geoffrey McRae
0ccb38940e
[client] make autoResize work again
2017-12-12 03:59:58 +11:00
Geoffrey McRae
59a894ae04
[client] switched srcRect to srcSize and type to SDL_Point
2017-12-12 03:59:57 +11:00
Geoffrey McRae
34f07ec77f
[client] minor logical order optimization of the render loop
2017-12-12 03:59:57 +11:00
Geoffrey McRae
1d5f98db32
[client] adjusted presentation time to be more accurate
2017-12-12 03:59:57 +11:00
Geoffrey McRae
032602f336
[client] reworked the polling logic yet again
2017-12-12 03:59:57 +11:00
Geoffrey McRae
eb52ee9412
[client] added retard/resync counts for debugging
2017-12-12 03:59:57 +11:00
Geoffrey McRae
d09bb1146d
[client] removed unused useBufferStorage app state variable
2017-12-12 03:59:57 +11:00
Geoffrey McRae
ea5d0ddfe0
[client] removed deprecated option to disable GL_ARB_buffer_storage
2017-12-12 03:59:57 +11:00
Geoffrey McRae
852309464f
[client] more polling improvements
2017-12-12 03:59:57 +11:00
Geoffrey McRae
32c6989654
[client] removed debugging print
2017-12-12 03:59:57 +11:00
Geoffrey McRae
7349334811
[client] reworked polling logic and added GPU magic
...
SDL_RenderPresent calls SwapBuffers which doesn't block even with vsync
enabled until the driver/gpu has buffered several frames, this is no good
for our use case where low latency is of ultimate importance. This patch
measures the swap interval, ensures the time is consumed and then calls
glFinish to ensure that there is no buffered data. The results on NVidia
hardware are exceptional, but will need verification on AMD hardware.
Polling logic has also been improved, the client will hunt for the best
delay rather then resorting to waiting on an event from the guest, avoiding
scheduler latency caused by waiting on the irq event.
2017-12-12 03:59:57 +11:00
Geoffrey McRae
01d4d52355
[client] removed useless delay functions
2017-12-12 03:59:57 +11:00
Geoffrey McRae
e1a566bcad
[client] reworked sync code to use polling for short delays
2017-12-12 03:59:57 +11:00
Geoffrey McRae
a1f574ff2f
[client] added 1ms delay loop for incoming polling support
2017-12-12 03:59:57 +11:00
Geoffrey McRae
c26842cb60
[client] fixed minor issue in the makefile
2017-12-12 03:59:57 +11:00
Geoffrey McRae
2d5b633397
[client] changed ivshmem wait timeout to avoid stalls on startup
2017-12-12 03:59:57 +11:00
Geoffrey McRae
c1a82e853d
[client] added renderer abstratction
...
This moves the bulk of the rendering code into seperate rendering
modules cleaning up much of intertwined SDL & OpenGL mess.
2017-12-12 03:59:57 +11:00
Geoffrey McRae
5c335fca67
[client] Makefile rewrite from intial lazy version
2017-12-12 03:59:57 +11:00
Geoffrey McRae
310dba3620
[client] fixed incorrect texSize calculation
2017-12-12 03:59:57 +11:00
Geoffrey McRae
10e6408022
[misc] common and client project rename to "Looking Glass"
...
See: https://forum.level1techs.com/t/headless-pci-passthrough-program-name-vote/121779/36
2017-12-12 03:59:57 +11:00
Geoffrey McRae
3156c0e0cb
[client] corrected event processing
...
SDL_WaitEvent is useless as it runs in 10ms increments, which is way
too slow for high rate of input applications.
2017-12-12 03:59:57 +11:00
Geoffrey McRae
b61ba15a9c
[client] fixed realignment when in server mode
2017-12-12 03:59:56 +11:00
Geoffrey McRae
62ab543720
[client] fixed incorrect kick timing
2017-12-12 03:59:56 +11:00
Geoffrey McRae
14efdf7314
[client] cleanup of vbo and texture allocation
2017-12-12 03:59:56 +11:00
Geoffrey McRae
7638925387
[client] code cleanup
2017-12-12 03:59:56 +11:00
Geoffrey McRae
aa191f6c90
[client] added option to show host cursor for latency testing
2017-12-12 03:59:56 +11:00
Geoffrey McRae
7ef55134ef
[client] enable support for dynamic vsync
2017-12-12 03:59:56 +11:00
Geoffrey McRae
9590b58f0f
[client] only init ttf if fps is enabled
2017-12-12 03:59:56 +11:00
Geoffrey McRae
f2216168f4
[client] make FPS counter more accurate
2017-12-12 03:59:56 +11:00
Geoffrey McRae
a7c4cdcea1
[client] add option to disable vsync
2017-12-12 03:59:56 +11:00
Geoffrey McRae
aef0328050
[client] added FPS counter
2017-12-12 03:59:56 +11:00
Geoffrey McRae
7bf35e44c5
[client] fixed missing getopt character for input scaling
2017-12-12 03:59:56 +11:00
Geoffrey McRae
695a7b183f
[client] fix output offset when aspect ratio changes
2017-12-12 03:59:56 +11:00
Geoffrey McRae
8fdb86ae28
[client] only recalculate scales on screen or guest resize
2017-12-12 03:59:56 +11:00
Geoffrey McRae
9831de92e1
[client] add mouse input scaling feature for stretched/scaled windows
2017-12-12 03:59:56 +11:00
Geoffrey McRae
2c7e7a0a0b
[client] made help for new resize option clearer
2017-12-12 03:59:56 +11:00
Geoffrey McRae
a3572b2188
[client] added option to prevent window resize
2017-12-12 03:59:56 +11:00
Geoffrey McRae
b9e3db1971
[client] enable mipmapping by default
2017-12-12 03:59:56 +11:00
Geoffrey McRae
86cf7a9cf1
[client] add the ability to maintaint the aspect ratio
2017-12-12 03:59:56 +11:00
Geoffrey McRae
f767f32a32
[client] syncronization improvements
2017-12-12 03:59:56 +11:00
Geoffrey McRae
a84480470c
[client] cosmetics
2017-12-12 03:59:56 +11:00
Geoffrey McRae
c75e7a0f2b
[client] explcit flush buffers before using them
2017-12-12 03:59:56 +11:00
Geoffrey McRae
638f836927
[client] copy the header and kick the guest early
2017-12-12 03:59:56 +11:00
Geoffrey McRae
e8ac71263b
[client] dont send up events if we didn't send a down event
2017-12-12 03:59:56 +11:00
Geoffrey McRae
3ee53dca79
[client] changed output program name
2017-12-12 03:59:56 +11:00
Geoffrey McRae
4829c0413c
[client] additional security changes
2017-12-12 03:59:56 +11:00
Geoffrey McRae
5a9688cd47
[client] added mipmapping support
2017-12-12 03:59:56 +11:00
Geoffrey McRae
f6bc62647f
[client] fixed autoResize behaviour
2017-12-12 03:59:56 +11:00
Geoffrey McRae
f8d61da618
[client] default client size to something more reasonable
2017-12-12 03:59:55 +11:00
Geoffrey McRae
cae4fa3aa6
[client] allow texture stretch when in GL buffer mode
2017-12-12 03:59:55 +11:00
Geoffrey McRae
c0507f5a15
[client] fix incorrect texture buffer index
2017-12-12 03:59:55 +11:00
Geoffrey McRae
bed2d95ccd
[client] added checks for invalid offsets by the guest
2017-12-12 03:59:55 +11:00
Geoffrey McRae
e2160a5eda
[client] Added window positional options
2017-12-12 03:59:55 +11:00
Geoffrey McRae
52ad00fb0d
[client] added client configuration options
2017-12-12 03:59:55 +11:00
Geoffrey McRae
4731b13a03
[client] initial parameter implementation
2017-12-12 03:59:55 +11:00
Geoffrey McRae
34e67b1b57
[client] added KVMGFX_HEADER_VERSION define
2017-12-12 03:59:55 +11:00
Geoffrey McRae
72b69a6659
[client] removed DrawFunc typedef
2017-12-12 03:59:55 +11:00
Geoffrey McRae
e774a0bb06
[client] removed deprectaed drawFunc and improved error handling
2017-12-12 03:59:55 +11:00
Geoffrey McRae
b221382420
[client] removed deprecated compression functions
2017-12-12 03:59:55 +11:00
Geoffrey McRae
96ae755856
[client] state struct rename
2017-12-12 03:59:55 +11:00
Geoffrey McRae
74403cce8c
[client] kick the guest early to get the first frame faster
2017-12-12 03:59:55 +11:00