Andri Yngvason
58a181ccbc
Redesign update/rendering loop
...
Every change to the framebuffer is now copied into a single buffer
inside a single callback. This simplifies things a lot, and might even
perform better.
2020-04-07 23:37:31 +00:00
Greg V
d610076614
shm: support memfd and SHM_ANON
2020-04-06 02:07:25 +03:00
Greg V
720b127dee
keyboard: allocate shm with correct size
...
This was working on Linux because shm_open there returns a regular file,
but this is required on FreeBSD where shm_open returns a memory-backed fd.
2020-04-06 00:26:22 +03:00
Andri Yngvason
be401b5e4a
Report error when binding to address fails
...
This fixes #21
2020-04-04 22:38:23 +00:00
Andri Yngvason
6e521a07a0
Merge frames rather than dropping them when encoder is too slow
2020-04-04 21:03:49 +00:00
Andri Yngvason
238c196e6b
Capture a new frame immediately when a client requests a whole frame
2020-04-04 15:01:38 +00:00
Andri Yngvason
ee4917f200
Make sure that frames being written to are not in use by the encoder
2020-04-04 13:14:07 +00:00
Andri Yngvason
8ce312e9eb
renderer: Add dtrace probes
2020-04-02 00:55:18 +00:00
Andri Yngvason
075680994e
screencopy: Add dtrace probes
2020-04-02 00:34:00 +00:00
Andri Yngvason
dc7adf8f3b
renderer: Use ATTR_INDEX_ constants for glEnableVertex*
2020-03-29 14:05:33 +00:00
Andri Yngvason
e85f219aff
Make sure damage buffer is properly aligned
2020-03-29 13:09:28 +00:00
Andri Yngvason
b14a0b854b
Rotate NeatVNC framebuffers rather than allocating new ones
2020-03-28 19:23:03 +00:00
Andri Yngvason
2bb17c8215
Blit the whole frame when a new client connects
2020-03-28 15:20:59 +00:00
Andri Yngvason
e7586e8753
Only copy the damaged region from GPU
2020-03-28 15:05:04 +00:00
Andri Yngvason
1ebd9a7647
damage: Respect frame boundaries
2020-03-28 14:34:12 +00:00
Andri Yngvason
b6ca7aff8c
Join process_frame() and update_vnc()
2020-03-28 14:09:29 +00:00
Andri Yngvason
bfbc81bf04
Use GPU damage checker
2020-03-28 13:07:33 +00:00
Andri Yngvason
52c18ffe23
damage: Add asynchronous damage checking
2020-03-28 13:05:59 +00:00
Andri Yngvason
7f5431d922
Move rendering calls into frame-capture
2020-03-28 11:44:40 +00:00
Andri Yngvason
c91816f247
Implement damage buffer conversion
2020-03-28 10:59:21 +00:00
Andri Yngvason
b0a6b6bd2a
renderer: Swap FPOs rather than textures
2020-03-28 10:59:21 +00:00
Andri Yngvason
ae90348ece
renderer: Save previous rendered frame rather than previous imported frame
...
We can't keep dmabufs very long.
2020-03-26 21:43:35 +00:00
Andri Yngvason
b5f1ff0898
renderer: Render to texture
2020-03-26 18:49:37 +00:00
Andri Yngvason
7e709c23e9
renderer: Add damage renderer
2020-03-25 23:21:11 +00:00
Andri Yngvason
6536cbd56f
renderer: Add damage shaders
2020-03-25 23:21:11 +00:00
Andri Yngvason
557f0f365b
renderer: Set up texture bindings on render()
2020-03-25 21:27:57 +00:00
Andri Yngvason
a8fd0d6765
renderer: Show error when linking shaders fails
2020-03-25 21:07:36 +00:00
Andri Yngvason
996729f9bb
renderer: Show error message when shader compilation failse
2020-03-25 20:44:54 +00:00
Andri Yngvason
13216fa507
renderer: Add u_tex1 to shaders
2020-03-25 20:26:15 +00:00
Andri Yngvason
49c584f80d
renderer: Move shader setup into render()
2020-03-24 22:57:02 +00:00
Andri Yngvason
4da96d0dc1
renderer: Split buffer import and rendering
2020-03-24 22:48:13 +00:00
Andri Yngvason
9d058c85ce
Renderer: Keep last texture
2020-03-24 22:07:49 +00:00
Andri Yngvason
b39e7535ee
renderer: Use FBO instead of pbuffer
...
This is in preperation for damage checking on the GPU
2020-03-24 19:17:23 +00:00
Andri Yngvason
a12ce12ba6
Exit when compositor goes away
2020-03-22 20:29:13 +00:00
Andri Yngvason
26cef852b6
Replace libuv with aml
2020-03-21 16:46:10 +00:00
Andri Yngvason
7ea17d04aa
Apply output transformation to pointer coordinates
2020-03-07 14:19:02 +00:00
Andri Yngvason
e8279e57f5
Apply output transform to damage hint coordinates
2020-03-07 14:15:09 +00:00
Andri Yngvason
8ff7128714
output: Add coordinate transformations
2020-03-07 14:13:59 +00:00
Andri Yngvason
433ee722ec
render: Implement rest of transforms
2020-03-07 12:16:01 +00:00
Andri Yngvason
c32993d87d
Use transformed geometry for frame buffers
2020-03-05 22:05:14 +00:00
Andri Yngvason
9642e086d8
render: Set glViewport based on output transform
2020-03-05 22:05:14 +00:00
Andri Yngvason
e01f75bfbd
output: Add functions to get transformed geometry
2020-03-05 22:05:14 +00:00
Andri Yngvason
35ffc2dac7
output: Add transform
2020-03-05 22:05:14 +00:00
Andri Yngvason
a3d4189a0b
render: Add output transforms
2020-03-05 22:05:14 +00:00
Andri Yngvason
a327a2f6dd
render: Add 2D projections
2020-03-05 18:46:27 +00:00
Andri Yngvason
1bf618a098
render: Fetch uniform locations in one place
2020-03-05 18:20:54 +00:00
Andri Yngvason
6b3b448405
render: Move shader_program into shader struct
2020-03-05 18:14:50 +00:00
Andri Yngvason
1e6c89d9a9
output: Use non-scaled geometry
...
This fixes #16
2020-03-04 21:40:33 +00:00
Andri Yngvason
a70a2b1bc4
pointer: Remove output position from coordinates
...
This is no longer required as the input is mapped to the output in the
compositor.
2020-02-21 23:28:36 +00:00
Andri Yngvason
10e5c08752
Map input to the selected output
2020-02-21 23:28:33 +00:00
Dan Shick
4ad4c712b2
Fix shader path, meson doesn't include trailing slash in prefix
2020-02-11 18:41:59 -05:00
Andri Yngvason
4d6f477d71
Merge pull request #14 from danshick/cursor_overlay_flag
...
Added cli flag to change overlay_cursor option, defaulting to false
2020-02-11 23:49:35 +01:00
Dan Shick
e53b4dfc9d
Add option to enable cursor overlay rendering
2020-02-11 17:45:01 -05:00
Andri Yngvason
e5512114f8
render: Only compile the shader that is being used
2020-02-11 21:55:05 +00:00
Andri Yngvason
c274c81fa3
Install shader files
2020-02-11 21:09:30 +00:00
Andri Yngvason
a8d49f3022
render: Define constants for attribute indices
2020-02-11 20:32:04 +00:00
Andri Yngvason
4b3be2c972
render: Load shaders from files
2020-02-11 19:55:31 +00:00
Andri Yngvason
3c4b81862b
render: Create a function to read a shader from a file
2020-02-11 19:55:31 +00:00
Andri Yngvason
cbbd97018d
Don't fail when config doesn't exist
2020-01-29 19:45:04 +00:00
Andri Yngvason
8491d6c73c
Enable VeNCrypt auth & encryption
2020-01-25 18:10:59 +00:00
Andri Yngvason
e6b1ca8044
keyboard: Assign state to keys rather than symbols
...
The keys are pressed and released, not the symbols. This fixes tracking
of the state of a key through modifier changes. E.g. A capital 'A' may
be received from the client while the shift key is pressed, but if the
shift key is released before the 'a' key, the 'a' symbol is generated.
2020-01-25 13:19:08 +00:00
Andri Yngvason
ec7fee42c5
Create an integer set data structure
2020-01-25 13:17:24 +00:00
Andri Yngvason
a1ee09386a
pointer: Add output position to absolute coordinates
...
This fixes mouse issues when there are multiple outputs
2020-01-24 21:14:29 +00:00
Andri Yngvason
7eaece7c0a
Restructure input initialisation
2020-01-24 20:56:47 +00:00
Andri Yngvason
b0077c93fe
Use output name for output selection
2020-01-24 20:19:57 +00:00
Andri Yngvason
d0bee5c651
output: Add function to find display by name
2020-01-24 20:18:37 +00:00
Andri Yngvason
df936b9dac
Add xdg_output_v1 for more output info
2020-01-24 20:08:57 +00:00
Andri Yngvason
0572693f21
Exit when the compositor goes away
2020-01-21 19:16:36 +00:00
Andri Yngvason
48907682c7
keyboard: Fix modifier lookup
2020-01-20 21:15:04 +00:00
Andri Yngvason
5731ea4666
keyboard: Add bounds checking on keycode lookup
2020-01-19 12:43:48 +00:00
Andri Yngvason
20cd7725f6
Load a config file
2020-01-18 18:14:17 +00:00
Andri Yngvason
c1210f1426
Create a simple config loader
2020-01-18 17:58:40 +00:00
Andri Yngvason
e2079a7e56
keyboard: Don't send repeated events to server
...
This caused the virtual key to get "stuck" in the pressed position and
then to stop working at all. It's definitely a bug on the server side
also.
2020-01-15 20:34:56 +00:00
Andri Yngvason
b744e2410e
Handle more pixel formats
2020-01-14 21:44:07 +00:00
Andri Yngvason
7acf2c7aef
screencopy: Update copyright notice
2020-01-14 20:42:48 +00:00
Andri Yngvason
9eb851cf92
screencopy: Adjust rate limiting based on capturing delay
2020-01-14 20:40:57 +00:00
Andri Yngvason
38d7b9cf4d
screencopy: Simplify rate limiting
2020-01-14 20:12:58 +00:00
Andri Yngvason
017edc6ae1
Handle seat removal
2020-01-14 19:18:33 +00:00
Andri Yngvason
0cc1a70ba7
main: remove duplicate function
2020-01-14 19:11:01 +00:00
Andri Yngvason
ffce795c6f
dmabuf: Limit frame rate to 20 FPS
2020-01-04 15:05:15 +00:00
Andri Yngvason
c5fee473d6
Fix segfault on exit when dmabuf capturing is selected
2020-01-04 13:48:09 +00:00
Andri Yngvason
457e540d89
pointer: Fix mouse scroll
2020-01-03 21:52:36 +00:00
Andri Yngvason
476854aeaf
keyboard: Remove debug printout
2020-01-03 20:42:40 +00:00
Andri Yngvason
990e57fa89
keyboard: Improve key code lookup
...
The shift level for each symbol is now included in the lookup table, so
it's more robust for various keyboard layouts.
2020-01-03 20:03:02 +00:00
Andri Yngvason
a6f979e93a
Add seat selection
2019-12-31 14:01:22 +00:00
Andri Yngvason
452ba2c4fb
Listen to connections from localhost only, by default
2019-12-31 10:33:40 +00:00
Drew DeVault
38c872b2ba
Fix output selection
2019-12-30 16:13:44 -05:00
Andri Yngvason
2b00400b8a
Add option to select keyboard layout
2019-12-30 10:15:12 +00:00
Andri Yngvason
e82e3a92b5
screencopy: Add rate limiting
...
The smoothing filter allows for short bursts of higher frame rate in
order to reduce latency.
2019-12-29 11:47:33 +00:00
Andri Yngvason
c794ca3822
smooth: Use integers rather than floats to store tme
2019-12-29 10:36:08 +00:00
Andri Yngvason
baad0ecd68
Extract time functions into own module
2019-12-29 10:06:25 +00:00
Andri Yngvason
61657c97ba
Add an exponential smoothing filter
2019-12-29 10:02:31 +00:00
Andri Yngvason
cbfa0416b4
dmabuf: Close file descriptors after using them
2019-12-27 16:31:47 +00:00
Andri Yngvason
09772ddf5b
Clean up some resources
2019-12-27 14:41:54 +00:00
Andri Yngvason
9adac0e683
Don't call uv_close() on unknown handles
2019-12-27 13:53:36 +00:00
Andri Yngvason
5c7f941481
keyboard: Add some acknowledgements
2019-12-25 11:45:07 +00:00
Andri Yngvason
b2bbc9ac0b
Implement keyboard backend
2019-12-25 11:05:05 +00:00
Andri Yngvason
7c1722445d
Make screencopy the default capturing backend
2019-12-23 12:50:36 +00:00
Andri Yngvason
82bdbb82c0
Add virtual pointer backend
2019-12-22 21:42:10 +00:00
Andri Yngvason
529483a459
Remove unused code
2019-10-22 19:24:09 +00:00
Andri Yngvason
25187cbfb2
Add option for output selection
2019-10-13 12:58:56 +00:00
Andri Yngvason
ba3dc617f4
output: Add missing copyright statement
2019-10-13 12:48:12 +00:00
Andri Yngvason
59fa4cfeaa
Move output handling into its own source file
2019-10-13 12:47:02 +00:00
Andri Yngvason
9cd6811efa
Add option parsing and the ability to select a frame capturing backend
2019-10-12 12:17:22 +00:00
Andri Yngvason
b07de643ab
render: Try to do proper cleanup on egl
2019-10-11 22:18:56 +00:00
Andri Yngvason
cc1f470c6e
Integrate dmabuf capturing into frame-capture
2019-10-10 22:51:44 +00:00
Andri Yngvason
ffda3c164c
Create frame-capture backend framework
2019-10-10 22:32:54 +00:00
Andri Yngvason
e037e74756
Implement screencopy damage
2019-10-10 21:40:22 +00:00
Andri Yngvason
ddaea0ceab
Add some code for rendering screencopy frames
2019-10-10 21:28:07 +00:00
Andri Yngvason
1132dd6a3c
render: Add a function to render plain framebuffer
2019-10-09 22:37:46 +00:00
Andri Yngvason
8cc00dd5eb
render: rename shader_program -> dmabuf_shader_program
2019-10-09 22:00:01 +00:00
Andri Yngvason
36e7bde860
screencopy: Remember to request frame copy
2019-10-09 21:59:13 +00:00
Andri Yngvason
af1307b420
render: Use compatible pbuffer
...
Otherwise glReadPixels() will be bonkers.
2019-10-09 20:53:11 +00:00
Andri Yngvason
640b12184d
Align dmabuf backend with screencopy backend
2019-10-09 19:12:16 +00:00
Andri Yngvason
a7b4859611
Working on screencopy backend for comparison width export-dmabuf
2019-10-08 22:16:26 +00:00
Andri Yngvason
a52e1040a0
Add license and copyright notice
2019-10-08 18:41:23 +00:00
Andri Yngvason
c02a6512ea
Add damage checking
2019-10-07 23:44:55 +00:00
Andri Yngvason
3ba5884954
Feed captured frames to nvnc
2019-10-07 23:07:12 +00:00
Andri Yngvason
119ee0efef
WiP: Implement frame capturing
2019-10-06 22:50:11 +00:00
Andri Yngvason
eaae3ba2db
Add more initialisation code
2019-10-06 22:12:29 +00:00
Andri Yngvason
33772e0b94
render: Fixup
2019-10-06 20:54:59 +00:00
Andri Yngvason
2d953c5053
Working on the main program
2019-10-06 18:51:39 +00:00
Andri Yngvason
a52ff52fcf
render: Move logging and struct to headers
2019-10-06 18:50:47 +00:00
Andri Yngvason
f4e9169b66
Add strlcpy
2019-10-06 18:49:57 +00:00
Andri Yngvason
89dbbc5fc9
render: Add header
2019-10-06 17:14:53 +00:00
Andri Yngvason
232b945ad0
Wrap interface for wl-export-dmabuf
2019-10-06 17:12:03 +00:00
Andri Yngvason
0dceb98f79
Add dmabuf import & render
2019-10-06 14:08:52 +00:00
Andri Yngvason
838570a4f9
Create new VNC project
2019-10-06 13:10:46 +00:00