Commit Graph

149 Commits

Author SHA1 Message Date
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