Commit graph

692 commits

Author SHA1 Message Date
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
a36d312844 [host] dxgi: fixed missed header update for timeout fix 2018-01-04 09:30:55 +11:00
Geoffrey McRae
6653340bac [host] dxgi: follow suit and use h264 high profile 2018-01-04 09:30:27 +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
9000fdf6fc [host] fix frame duplication problem with new MFT implementation 2017-12-31 00:32:39 +11:00
Geoffrey McRae
fbf08b94aa [client] initial vaapi h264 decode support (unfinished) 2017-12-31 00:27:26 +11:00
Geoffrey McRae
a6d2fe73ae [common] fixed bug in memcpySSE skipping remaining bytes 2017-12-30 18:39:57 +11:00
Geoffrey McRae
e854723aa3 [client] fixed incorrect cursor dataPos validation 2017-12-30 13:48:32 +11:00
Geoffrey McRae
9b7f54fa35 [host] service restarts now restart capture interfaces 2017-12-30 13:35:45 +11:00
Geoffrey McRae
9ef9f60505 [host] dxgi: fixed MFT memory leak and re-init failure 2017-12-30 13:35:45 +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
b5f2092e9c [host] return the compressed frame size in the pitch field 2017-12-29 21:01:02 +11:00
Geoffrey McRae
03622f61b0 [host] Added experimental H264 compression to DXGI (disabled by default)
This is not yet working, the client is yet to be updated to support
decompressing this stream.
2017-12-29 20:53:52 +11:00
Geoffrey McRae
3d9230ac93 [host] dxgi: fixed frame update regression 2017-12-29 07:15:59 +11:00
Geoffrey McRae
2d746cbfd4 [host] dxgi: performance improvements 2017-12-29 07:01:13 +11:00
Geoffrey McRae
2f2813037b [host] improved latency of multimemcpy with hybrid locking and preempt 2017-12-29 07:00:27 +11:00
Geoffrey McRae
f6f4c8070a [host] adjusted frame and cursor offset calculations 2017-12-29 06:11:32 +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
59fa025292 [host] add store fence to shm writes as we are using writecombine 2017-12-28 15:42:44 +11:00
Geoffrey McRae
e09d7f0ad0 [host] Update IVSHMEM class to support incoming driver version 2017-12-28 15:42:44 +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
16e804b068 [host] added tracing class to help profile slow code points 2017-12-23 18:15:15 +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
arcnmx
d9397610f3 [host] compile MultiMemcpy on mingw 2017-12-21 14:42:49 +11:00
arcnmx
f26d8fbd3e [host] remove unused variables 2017-12-21 14:42:49 +11:00
Geoffrey McRae
43b096a5e7 [host] added multi-threaded memcopy for high resolutions 2017-12-21 13:49:36 +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