Quantum
ef2da1902e
[common] framebuffer: allow custom framebuffer write implementations
...
This is helpful for only copying damaged areas.
2021-07-18 10:41:50 +10:00
Quantum
69b20aee05
[common] kvmfr: add damage rectangles to the protocol
...
Co-Authored-By: Tudor Brindus <me@tbrindus.ca>
2021-07-18 10:41:50 +10:00
Geoffrey McRae
23f9855768
[common] ringbuffer: add forEach iterator
2021-07-17 21:09:51 +10:00
Geoffrey McRae
41403286d1
[common] ringbuffer: add getLength method
2021-07-17 21:09:51 +10:00
Geoffrey McRae
94ae9a95d7
[common] added new ringbuffer helper for metrics collection
2021-07-17 21:09:51 +10:00
Geoffrey McRae
041b95507d
[host] windows/nvfbc/common: strip out broken "enhanced" event logic
...
This so called "enhanced" event logic is completely flawed and can never
work correctly, better to strip it out and put our faith in windows to
handle the events for us.
And yes, I am fully aware I wrote the utter trash in the first place :)
2021-07-09 10:22:03 +10:00
Geoffrey McRae
bfb47a0ae4
[common] windows: update event fast path to use atomics
...
Due to a failure to understand atomics when this code was originally
written it has a critical flaw with the fast path where an event could
be signalled when it should not be. This change set corrects this issue
by using atomic operations.
2021-07-09 04:50:14 +10:00
Geoffrey McRae
0acce0737f
[common] debug: output to stdout
and reset the the color at the end
2021-07-08 07:18:06 +10:00
Geoffrey McRae
54d0dc351b
[common] debug: remove missed debug_print
forward
2021-07-07 23:08:47 +10:00
Geoffrey McRae
1effd5fddc
[common] debug: add color support to debug messages
...
People often miss the warnings about invalid arguments in their command
line, this last minute patch attempts to address this by making
warnings, errors, fixme's and fatal errors stand out if stdout is a TTY.
2021-07-07 23:05:46 +10:00
Quantum
d385b49f5f
[common] runningavg: avoid integer overflows
...
We receive values as int64_t, but when we compute the sum, we store it as
int. This doesn't make sense as we eventually cast it to double when
computing the average. We should instead store the sum as int64_t.
2021-06-28 14:47:19 +10:00
Geoffrey McRae
d36c4f0e83
[host] kvmfr: allow the frame size to exceed the available memory
...
This change allows the host to still transmit a frame that is truncated
if the IVSHMEM size is too small to allow for a full frame.
2021-06-12 18:44:28 +10:00
Geoffrey McRae
d20e4d1de5
[common] framebuffer: make use of framebuffer_wait
2021-06-08 16:10:34 +10:00
Geoffrey McRae
e87d2f1a20
[common] framebuffer: add additional profiling support
2021-06-08 16:08:44 +10:00
Geoffrey McRae
4a75cc3bcf
[common] framebuffer: simplify the remaining
calculation
...
The pitches match so there is no need for the added complexity of this
calculation.
2021-06-08 15:14:54 +10:00
Geoffrey McRae
196050bd23
[common] framebuffer: improve client framebuffer read performance
...
Extensive profiling reveals that the glibc memcpy performs up to 2x
faster then the existing SIMD implementation that was in use here. This
patch also will copy large 1MB chunks if the pitch of the source and
destination match further increasing throughput.
2021-06-08 15:08:13 +10:00
Quantum
7300d00f66
[common] option: handle ini lines without trailing newline
...
Before, if the last line of an ini file has no trailing \n, it is ignored.
This commit changes the parser to process such lines.
2021-06-07 18:22:19 +10:00
Geoffrey McRae
21d86dd31d
[common] option: prevent ascii filter from eating newlines
2021-06-07 11:29:17 +10:00
Geoffrey McRae
44bff58aa8
[common] option: ignore non-typeable ascii characters
...
Under windows text editors like to default to saving in UTF8 with a byte
order mask prefix preventing proper parsing of any option that is on the
first line of the file. Since the configuration file is only intended to
be plain ascii this change ignores all non-ascii characters solving this
issue.
2021-06-07 11:25:35 +10:00
Quantum
62c7fc2588
[common] runningavg: refresh copyright notice
2021-06-06 13:36:55 +10:00
Geoffrey McRae
f02d61d665
[host] dxgi: sleep until it's close to time to map
...
This change adds an average function to time how long it takes the GPU
to copy and map the texture, and then uses this average to sleep for 80%
of this average lowering CPU usage and potentially decreasing lock
contention.
2021-06-06 12:26:36 +10:00
Quantum
24d0aa0c18
[all] normalize copyright on all source files
2021-06-06 11:53:05 +10:00
Quantum
f9a9953071
[client] egl: use new util_hasGLExt helper to check extensions
...
We previously used strstr, which can be prone to false positives when
the name of one extension is a substring of another extension.
This commit creates the helper function util_hasGLExt, which asserts
that the substring found in extension list is bounded by either spaces
or the beginning/end of the string.
2021-05-19 15:58:54 +10:00
Jonathan Rubenstein
c6d7fb8dd0
[common] option: Reformat help and support rST tables
...
Corners of table have '+' added, and adds new command line flag --rst-help,
which adds some extra formatting to the make it an rST compliant table for the
in-line docs.
2021-05-06 22:32:36 +10:00
Quantum
fc7dd7dbb7
[common] cmake: correctly link static libbfd.a
...
When linking against libbfd.so, just passing libbfd.so to the compiler is
sufficient. When linking against the static version libbfd.a, however,
we must additionally link against libiberty.a and libz.a.
This commit adds a CMake helper to find the correct libraries that need
to be passed to link against libbfd correctly.
2021-03-03 16:37:34 +11:00
Quantum
b00c25a822
[common] crash: fix Linux compilation with -DENABLE_BACKTRACE=NO
...
Essentially, debug.h defines printTrace as an empty macro when the macro
ENABLE_BACKTRACE is not defined, breaking the compilation of crash.c.
Fixed by defining a private macro for debug.h only to avoid clashing.
2021-03-03 16:36:50 +11:00
Quantum
5ad70ccc41
[common] crash/linux: generate core dump when handling SIGSEGV
...
Calling abort() instead of exit() will generate a core dump, allowing gdb
to be used when the client crashes. This is desirable for the following
reasons:
1. gdb can be used to inspect the call stack with far more detail than the
our quick stack trace code, and also allows the access to the heap.
2. Our SIGSEGV handler is unable to use debug symbols for shared libraries,
making it impossible to debug bugs involving drivers and similar.
2021-02-27 13:34:03 +11:00
Geoffrey McRae
6358f35cb7
[common] detect clang and disable warnings for unknown-warning-option
...
Clang doesn't know the warning option `format-truncation`, which GCC
falsely triggers on when calling vsnprintf. Further to this, GCC doesn't
understand the warning group `unknown-warning-option`, as such we must
disable these warnings in the cmake.
2021-02-22 01:54:46 +11:00
Geoffrey McRae
99fc650550
[common] fix gcc format-truncation
false positive
2021-02-22 01:39:28 +11:00
Quantum
5649d1ad95
[client] wayland: split Wayland display server into modules
...
The Wayland display server is getting unwieldy due to the sheer size.
To make it easier to edit in the future, I split it into many components
based on logical boundaries.
2021-02-21 10:31:49 +11:00
Quantum
db16efe68b
[common] add a reference counted buffer type
...
This allows buffers to be shared between different asynchronous operations.
Once all users no longer need the buffer, it will be freed.
The motivation for this is being able to stream Wayland clipboard data
asynchronously to multiple clients. The buffer should only be freed after
the clipboard has changed and all ongoing transfer completes.
2021-02-21 10:31:49 +11:00
Quantum
e01666b6ad
[client] wayland: implement epoll registration mechanism
...
This will be used to register async clipboard I/O callbacks later.
2021-02-21 10:31:49 +11:00
Quantum
62b27760ea
[common] ivshmem: do not create dmabuf for simple mmap
...
It used to be the case that you need to create dmabuf for kvmfr devices
to be able to mmap them. But after #457 , this is no longer needed.
Directly mmaping the kvmfr device has the advantage of avoiding the
creation of a dmabuf, which has cost (e.g. the list of pages, the
scatterlist, etc.).
2021-02-21 10:31:48 +11:00
Quantum
8e98f863b6
[host] windows: detect whether screensaver is disabled in the guest
...
This will allow us to add an option to disable the screensaver on the client
when an application in the guest requests it. This behaviour may be useful
when the guest is doing media playback.
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
Geoffrey McRae
dbb18a6ecb
[client] x11/sdl: get the border dimensions from the backend
2021-02-21 10:31:48 +11:00
Geoffrey McRae
bf583290a4
[client/common] restructure project in prep for full SDL removal
2021-02-21 10:31:46 +11:00
Geoffrey McRae
6f1c19b3b0
[all] improve backtrace and debugging support
2021-02-21 10:30:57 +11:00
Quantum
7e15ec5e66
[common] windows: implement crash handler for stack traces
...
This commit uses the DbgHelp library which is shipped with Windows to
generate stack traces with function names and line number information.
It takes advantage of the pdb file generated by cv2pdb that is now
installed with looking-glass-host.exe.
2021-01-27 07:56:12 +11:00
Geoffrey McRae
4c1893fe20
[all] fix numerous memory leaks at application shutdown
2021-01-24 21:47:53 +11:00
Geoffrey McRae
428b498cca
[common] fix invalid read from unaligned addresses ( fixes #410 )
2021-01-20 23:18:46 +11:00
Geoffrey McRae
14cc57071c
[host] remove the remainder of the YUV420 support
2021-01-18 13:55:44 +11:00
Geoffrey McRae
f5587b6b6b
[host] all: pass back the desktop rotation to the client
2021-01-18 13:53:29 +11:00
Geoffrey McRae
27a38294ea
[client] major restructure of platform specific code
2021-01-16 20:41:13 +11:00
Quantum
afa277f8ee
[common] ivshmem/linux: add stubs for ivshmemInit and ivshmemFree
...
These two functions were added in 9ff1859dc1
for Windows, but were never used on Linux.
Adding stubs will allow the host to compile on Linux.
These should be fixed later.
2021-01-15 08:49:30 +11:00
Tudor Brindus
a46a3a2668
[all] use explicit void parameter lists
...
This makes it a compile-time error to call a function that semantically
takes no parameters with a nonzero number of arguments.
Previously, such code would still compile, but risk blowing up the stack
if a compiler chose to use something other than caller-cleanup calling
conventions.
2021-01-14 17:29:37 +11:00
Geoffrey McRae
f85b6418b8
[common] linux: stop event signals accumulating after they are serviced
2021-01-08 01:18:02 +11:00
Quantum
7e4d323427
get display DPI info to scale mouse movement
2021-01-05 09:03:29 +11:00
Geoffrey McRae
0badf2a84c
[all] move defines for LGMP_QUEUE_*_LEN into KVMFR.h
2020-10-30 18:48:41 +11:00
Geoffrey McRae
6799d518a5
[client] common: added spin timeout to framebuffer wait
2020-10-30 03:27:28 +11:00
Geoffrey McRae
4f9544d61d
[client] egl: added DMA texture support for direct upload
...
Note: This only works with the KVMFR kernel module in a VM->VM
configuration. If this causes issues it can be disabled with the new
option `app:allowDMA`
2020-10-30 02:36:45 +11:00
Geoffrey McRae
5522e93fb9
[common] linux: added helpers for ivshmem DMA usage
2020-10-30 02:36:45 +11:00
Geoffrey McRae
0efe7dc63c
[common] linux: added support for kvmfr dmabuf
2020-10-30 02:36:45 +11:00
Geoffrey McRae
a70858aea0
[client] reworked frame timing waits for better responsiveness
2020-10-26 18:09:45 +11:00
Geoffrey McRae
9ff1859dc1
[host] windows: check the ivshmem device exists in the service
2020-10-19 02:49:15 +11:00
Geoffrey McRae
58ba76a27f
[client] seperate frame setup and data events
2020-10-12 19:43:29 +11:00
Geoffrey McRae
b2961c7939
[all] added new format version field to frame header
2020-10-12 18:52:37 +11:00
Geoffrey McRae
6650e58a4a
[common] linux: print reason for failure to open the shm file/device
2020-10-12 17:48:31 +11:00
Geoffrey McRae
9c6bd888fd
[host/client] added experimental RGBA16 float support (EGL only)
2020-10-11 19:22:31 +11:00
Geoffrey McRae
e6c88a4af3
[all] be smarter about getting the git version
2020-10-09 02:17:20 +11:00
Geoffrey McRae
7e362050f7
[all] update KVMFR to provide cursor hotspot information
...
This commit bumps the KVMFR protocol version as it adds additional
hotspot x & y fields to the KVMFRCursor struct. This corrects the issue
of invalid alignment of the local mouse when the shape has an offset
such as the 'I' beam.
2020-08-20 13:51:01 +10:00
Geoffrey McRae
431ae3fc55
[common] linux: fix issue with infinite timeout events
2020-08-11 19:31:11 +10:00
Geoffrey McRae
d9a80b16f0
[common] properly define _GNU_SOURCE and set the thread names
2020-08-10 16:22:02 +10:00
Geoffrey McRae
90d0cd873d
[common] added a sleep to the framebuffer spinlock and a sane timeout
2020-08-10 16:18:08 +10:00
Geoffrey McRae
19c2fe9b5e
Revert "[common] linux: improve event mechanics"
...
The logic here is wrong, this should be done externally as multiple
waiters will cause issues
2020-08-09 14:44:00 +10:00
Geoffrey McRae
88d25ee98c
[common] linux: improve event mechanics
2020-08-09 13:26:55 +10:00
Geoffrey McRae
be7820303f
[common] fixed debug formatting across platforms
2020-08-03 15:05:35 +10:00
Geoffrey McRae
43503222c7
[common] framebuffer: fixed incorrect streaming usage
2020-08-03 14:41:57 +10:00
Geoffrey McRae
85b8c12abf
[common] adjust framebuffer read/write strategy for better cache usage
2020-08-03 12:33:08 +10:00
Geoffrey McRae
7af053497e
[common] unroll the framebuffer write loop and increase the chunk size
2020-08-03 12:24:17 +10:00
Geoffrey McRae
aa32c5ffad
[common] framebuffer: added missing header include
2020-08-03 11:58:38 +10:00
Geoffrey McRae
62d1bd1ea2
[common] framebuffer: use stream load instead of plain load
2020-08-03 11:55:38 +10:00
Geoffrey McRae
2329e993ee
[common] fixed framebuffer write SIMD code performance
2020-08-03 11:44:24 +10:00
Geoffrey McRae
da655b86c3
[common] improve frambuffer copy to avoid cache pollution (SIMD)
2020-08-03 11:16:30 +10:00
Max Sistemich
c5ff8bd4ce
[common] linux: implement timers
2020-07-25 00:38:15 +10:00
Geoffrey McRae
553e2830bb
[client/host] share the host version with the client for diagnostics
2020-05-29 14:14:31 +10:00
Geoffrey McRae
4441427943
[client] implemented better clock drift correction
2020-05-22 20:45:59 +10:00
Geoffrey McRae
e31f38eadc
[client] allow frame updates to be triggered by a timed event
...
This is a major change to how the LG client performs it's updates. In
the past LG would operate a fixed FPS regardless of incoming update
speed and/or frequency. This change allows LG to dynamically increase
it's FPS in order to better sync with the guest as it's rate changes.
2020-05-21 13:41:59 +10:00
Geoffrey McRae
b7ca3d7e37
[client] cleanup debug output
2020-05-17 11:25:27 +10:00
Geoffrey McRae
c4bf992c0c
[client/host] added enforcement of KVMFR versioning
2020-05-17 11:13:08 +10:00
Geoffrey McRae
fdb9a9cca8
use a timer for the LGMP host instead of a thread
2020-04-24 21:31:12 +10:00
Geoffrey McRae
f6691a90c0
[client/obs] improve frambuffer_read functions to support copy pitch
...
Fixes #244
2020-04-14 13:27:07 +10:00
Geoffrey McRae
dbd7db7787
[common] fix framebuffer_prepare to use atomic_store
2020-04-12 13:16:55 +10:00
Geoffrey McRae
1222fd40b7
[common] fix FrameBuffer to use atomics correctly
...
Might Fix #248
2020-04-12 13:14:53 +10:00
chrsm
2440272307
[common] fix build for newer versions of binutils
...
binutils has changed several macros. Added ifdef to allow building with
stable and bleeding edge versions.
refs #232
2020-02-25 22:31:55 +11:00
Geoffrey McRae
939bb07603
[all] cleanup use of atomic locking and switch to C11 stdatomic
2020-01-29 19:06:09 +11:00
Geoffrey McRae
3f3a8f898d
[common] 1e9
is a floating point notation
2020-01-29 14:01:14 +11:00
Geoffrey McRae
6e62ea5364
[common] fix building on mingw for linux
2020-01-28 05:10:38 +11:00
Geoffrey McRae
29e5f193f0
[common] added timestamps to log output
2020-01-28 03:57:19 +11:00
Geoffrey McRae
8dbc1daaf4
[common] linux: signal should signal all listeners
2020-01-27 14:33:57 +11:00
Geoffrey McRae
bced5f95ff
[all] make cursor visible a flag and send it seperate to position
2020-01-27 02:07:32 +11:00
Geoffrey McRae
d860d6b891
[c-host] win: fixed improper signal detection in event code
2020-01-26 17:49:04 +11:00
Geoffrey McRae
b7e4426002
[c-host] inform the client if we have positional cursor information
2020-01-26 17:25:14 +11:00
Geoffrey McRae
c7aa8871e4
[common] fixed improper comment parsing, fixes #233
2020-01-21 16:35:21 +11:00
Geoffrey McRae
4746c89227
[all] moved time and locking methods to the common library
2020-01-17 14:35:08 +11:00
Geoffrey McRae
278d851c7c
[egl] added fallback for platforms not supporting eglGetPlatformDisplay
2020-01-17 11:50:00 +11:00
Geoffrey McRae
17e05c6fd5
[all] expose the FrameBuffer struct for correct sizeof calculations
2020-01-13 19:30:49 +11:00
Geoffrey McRae
9846762991
[all] align the frame data to the page boundary
2020-01-13 19:17:09 +11:00
Geoffrey McRae
0d29527758
[common] added agnostic function sysinfo_getPageSize
2020-01-13 15:52:31 +11:00
Geoffrey McRae
6aeafc6651
[common] add comment support to the ini parser
2020-01-12 22:44:41 +11:00
Geoffrey McRae
1aadf91901
[common] revert /dev/uio0 naming change behaviour
2020-01-12 22:37:10 +11:00
Geoffrey McRae
e554635e48
[spice] turn on TCP_QUICKACK
...
https://assets.extrahop.com/whitepapers/TCP-Optimization-Guide-by-ExtraHop.pdf
2020-01-11 16:03:28 +11:00
Geoffrey McRae
22f04a926f
[common] numerious bad usage bug fixes
2020-01-10 18:04:22 +11:00
Geoffrey McRae
2d755a45e0
[client] added support for LGMP
2020-01-09 20:32:42 +11:00
Geoffrey McRae
73e8bc41cd
[c-host] don't overflow the pointerMemory array
2020-01-09 16:15:04 +11:00
Geoffrey McRae
0b8f1a18b2
[LGMP] start of c-host conversion to use LGMP
2020-01-09 15:42:32 +11:00
Geoffrey McRae
8caa220ad5
[common] link setupapi for ivshmem windows implementation
2020-01-06 20:59:34 +11:00
Geoffrey McRae
b8203bec53
[common] properly detect all versions of Windows 8
2020-01-06 20:55:21 +11:00
Geoffrey McRae
5db4c32035
[c-host] dont use DX12 feature levels on Windows8
...
Fixes #218
2020-01-06 20:53:15 +11:00
Geoffrey McRae
45ee79014d
[common] added back support for shared memory files
2020-01-06 00:20:30 +11:00
Geoffrey McRae
4345d94d68
[client] update client to use the common ivshmem* methods
2020-01-03 15:17:14 +11:00
Geoffrey McRae
89d6ea0b5d
[common] move ivshmem code into the common library
2020-01-03 14:53:56 +11:00
Geoffrey McRae
ba31c78412
[client] switch from SDL_Thread to lgThread
2020-01-02 23:59:06 +11:00
Geoffrey McRae
1c1d2a0568
[common] moved linux agnostic code into the common library
2020-01-02 23:34:35 +11:00
Geoffrey McRae
0c6ff6822d
[common/c-host] move agnostic code into common
library
2020-01-02 22:21:42 +11:00
Geoffrey McRae
547598c61c
[common] locked section macro should use it's argument
2019-12-16 15:47:23 +11:00
Geoffrey McRae
711fbc549a
[c-host] dxgi: interlock so we can map outside of the capture thread
2019-12-16 15:18:26 +11:00
Geoffrey McRae
f85c017184
[c-host] DXGI profiled and tuned again :)
2019-12-15 16:21:21 +11:00
Geoffrey McRae
e1bfb1234b
[common] obey the destination buffer size
2019-10-14 18:08:06 +11:00
Geoffrey McRae
9377fdfc37
[all] bump KVMFR version due to incompatible changes
2019-10-14 17:19:19 +11:00
Geoffrey McRae
8ef1aee35c
[common] fix bug in framebuffer_read
2019-10-09 14:11:45 +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
4cf6dec592
[all] allow disable of backtrace support during build
2019-06-19 09:13:03 +10:00
Geoffrey McRae
3d426ccef8
[all] fix missing cursor when client reconnects
2019-05-28 14:06:15 +10:00
Geoffrey McRae
438e9e0969
[common] option: fixed missing null terminator
2019-05-27 01:56:55 +10:00
Geoffrey McRae
9554e82c47
[common] fix failure to initialize structure
2019-05-27 01:50:38 +10:00
Geoffrey McRae
2e6301fca1
[common] fixed issue with building for windows (typo)
2019-05-24 21:39:51 +10:00
Geoffrey McRae
78a6af8dae
[common] added new sysinfo unit and multisample query support
...
Based on @rLink234's work in 4ac781b4516678b6c59d9ecf4a61df64a01ec8c1
2019-05-23 16:54:50 +10:00
Geoffrey McRae
db0d966102
[common] option: add debug errors for invalid options
2019-05-21 14:58:11 +10:00
Geoffrey McRae
a29639fceb
[common] option: fix another invalid usage of an unset variable
2019-05-21 13:24:28 +10:00
Geoffrey McRae
0605b7df8c
[common] option: allow short options to toggle boolean values
2019-05-21 12:58:53 +10:00
Geoffrey McRae
51ca08719e
[common] option: trim whitespace from option names and values
2019-05-21 12:34:41 +10:00
Geoffrey McRae
ce9b94e93d
[common] option: fix crash on failure to parse invalid config file
2019-05-21 12:28:13 +10:00
Geoffrey McRae
7cc0f7cb99
[common] option: fix incorrect column header padding
2019-05-21 11:38:40 +10:00
Geoffrey McRae
06c229dfd4
[common] option: fix invalid access of null/invalid options
2019-05-21 11:34:50 +10:00
Geoffrey McRae
2d5f6d65ce
[common] option: added shortopt support and pretty help print
2019-05-21 11:31:31 +10:00
Geoffrey McRae
b9841351b4
[common] added stringutils with alloc_sprintf helper
2019-05-21 11:31:19 +10:00
Geoffrey McRae
d9b6d115d1
[common] fix stringlist const free bug
2019-05-21 11:30:05 +10:00
Geoffrey McRae
a7daeb2a12
[c-host] option: fix memory corruption due to usage of old pointers
2019-05-17 09:25:57 +10:00
Geoffrey McRae
2fe9dc7ca1
[common] track if option set failed and print help if so
2019-05-12 16:51:37 +10:00
Geoffrey McRae
e22f33a44b
[common] add getValues callback for options
2019-05-12 16:13:50 +10:00
Geoffrey McRae
5d69d2aba9
[common] added new StringList helper module
2019-05-12 16:12:12 +10:00
Geoffrey McRae
538a6dc08e
[common] rework option API to allow for custom types
2019-05-11 20:58:49 +10:00
Geoffrey McRae
5b199d8f25
[common] make local struct local
2019-05-11 19:07:10 +10:00
Geoffrey McRae
785bc33192
[common] added config file loading capability
2019-05-11 18:22:01 +10:00
Geoffrey McRae
cf030f6f0c
[common] remove "Option" from the option help output
2019-05-11 11:51:29 +10:00
Geoffrey McRae
823164a924
[common] further option help cleanup
2019-05-11 11:50:26 +10:00
Geoffrey McRae
86c7286aad
[common] seperate validator and clean up output
2019-05-11 11:35:17 +10:00
Geoffrey McRae
32d5f1db85
[common] validate all options including defaults
2019-05-11 11:21:00 +10:00
Geoffrey McRae
53ade56b4e
[common] fix option parser memory leak
2019-05-09 23:05:33 +10:00
Geoffrey McRae
247e92937c
[common] match the correct option
2019-05-09 22:47:48 +10:00
Geoffrey McRae
e7345b9711
[c-host] initial agnostic option api and parser
2019-05-09 22:06:58 +10:00
Geoffrey McRae
972ff93e6c
[common] fix build under arch, thanks @techfreak for pointing this out
2019-04-12 12:20:24 +10:00
Geoffrey McRae
32bd6d96e3
[common] implemented crash handler for linux (including backtrace)
2019-04-11 16:41:52 +10:00
Geoffrey McRae
611216286e
[c-host] added initial crash handler stub
2019-04-11 11:34:46 +10:00
Geoffrey McRae
28b12c85f4
[build] make "common" a static library (part 1/2)
2019-04-11 11:03:30 +10:00
Geoffrey McRae
eedde4abcb
[c-host] fixed build under linux
2019-03-04 09:45:45 +11:00
Geoffrey McRae
fcc06dfad4
[c-host] app: inital capture is now working
2019-03-04 09:37:50 +11:00
Geoffrey McRae
810fb73362
[common] gnuc on windows still uses / as the directory separator
2019-02-28 19:21:00 +11:00
Geoffrey McRae
5a37a53cb0
[host] move windows specific debug code to the host
2019-02-28 16:23:31 +11:00
Geoffrey McRae
08bf01b649
[all] update copyright dates
2019-02-22 22:16:14 +11:00
Geoffrey McRae
2cb18a3f8f
[host] removed incomplete h264
2018-12-07 20:54:30 +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
e515cdc8dd
[host] added YUV420 output support
2018-07-28 06:19:59 +10:00
Geoffrey McRae
2019766989
[host] added format converter class
2018-07-28 06:19:58 +10:00
Geoffrey McRae
48d3403c40
[memcpy] fix error caused by switch to shorter OPs
2018-07-26 05:49:24 +10:00
Geoffrey McRae
9f8c20c3e7
[common] no need to use AVX operands here either
2018-07-10 16:38:07 +10:00
Geoffrey McRae
a72ad4e46c
[host] replaced use of AVX in memcpySSE
...
There is no need to use AVX instructions as we are not using the
wider registers. Removing their use removes the requirement to run
a AVX capable guest CPU.
2018-07-10 16:32:50 +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
15a337fee8
[host] use the new memcpySSE implementation
2018-05-22 18:59:24 +10:00
Geoffrey McRae
e8b1b8fbdf
[common] tune windows memcpySSE asm implementation:wq
2018-05-19 21:40:13 +10:00
Geoffrey McRae
e9d77e6c52
[common] inline memcpy into memcpySSE for the final bytes
2018-05-19 18:31:49 +10:00
Geoffrey McRae
56f0a8525b
[common] more SSE improvements
...
* 32bit inlined is slow for only large copies, warn if memcpySSE is
used when it shouldn't be.
* Removed 64bit memcpySSE as native inlined is faster
See: https://stackoverflow.com/questions/50422510/why-is-i386-memcpy-slow-on-x86-64
2018-05-19 18:27:04 +10:00
Geoffrey McRae
778af24d82
[common] inline get_pc to memcpySSE
2018-05-19 16:21:12 +10:00
Geoffrey McRae
cd6caea4b0
[x86] use a proper call/ret to obtain the current IP
...
See: https://blogs.msdn.microsoft.com/oldnewthing/20041216-00/?p=36973
2018-05-19 16:16:01 +10:00
Geoffrey McRae
f63c8043af
[common] new sse2 memcpy improvements
2018-05-18 20:56:57 +10:00
Geoffrey McRae
3c77c1eb2b
NASM version of a SSE2 memcpy
2018-05-18 18:50:07 +10:00
Geoffrey McRae
ffec6c2014
Incoming new memcpy implementation
2018-05-18 01:59:00 +10:00
Geoffrey McRae
a6d2fe73ae
[common] fixed bug in memcpySSE skipping remaining bytes
2017-12-30 18:39:57 +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
ec6c35010b
[host] updated host application for the new mt client format
...
See prior commit for details on this update
2017-12-20 00:58:42 +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
6595374a2c
[common] cleanup header format and move resettable members
2017-12-17 05:03:16 +11:00
Geoffrey McRae
110aced7d1
[common] changed KVMFR to allow for variable cursor buffer sizes
2017-12-15 10:51:10 +11:00
Geoffrey McRae
e379f70784
[host] switch to fast polling mode, fixes stuttering issues
2017-12-14 02:23:11 +11:00
Geoffrey McRae
edecd922ea
[common] added restart session flag to KVMFR spec
2017-12-13 20:46:25 +11:00
Geoffrey McRae
b5a5d4cda2
[common/client] add pitch to cursor shape structure
2017-12-13 04:42:09 +11:00
Geoffrey McRae
a157f40690
[common] updateCount should be unsigned
2017-12-12 08:15:43 +11:00
Geoffrey McRae
818164da7f
[host] updated to use new protocol design
2017-12-12 07:56:50 +11:00
Geoffrey McRae
0c90032db1
[common] more OCD adjustments to debug.h
2017-12-12 05:15:39 +11:00
Geoffrey McRae
4634df91ba
[common] ocd cleanup debug output for windows
2017-12-12 05:08:35 +11:00
Geoffrey McRae
219179b375
[misc] added website url to sources
2017-12-12 04:30:47 +11:00
Geoffrey McRae
6849efcb0d
[common] shorten debug filename field
2017-12-12 03:59:58 +11:00
Geoffrey McRae
1173fc4ae4
[common] strip paths from debug filenames at compile time
2017-12-12 03:59:58 +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
2da40012ca
[common] corrected memcpySSE overflow error
2017-12-12 03:59:56 +11:00
Geoffrey McRae
cb96bd6493
[common] removed deprecated image formats
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