nuttx/drivers/video/vnc/Kconfig
Huang Qi 4945c49c61 vncserver: Support pointer driver
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
2022-07-08 13:28:34 +08:00

179 lines
4.8 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
menuconfig VNCSERVER
bool "VNC server"
default n
depends on NET_TCP
select FB_UPDATE
---help---
Enable support for a VNC Remote Frame Buffer (RFB) server.
if VNCSERVER
choice
prompt "VNC server protocol"
default VNCSERVER_PROTO3p8
config VNCSERVER_PROTO3p3
bool "Version 3.3"
depends on EXPERIMENTAL
config VNCSERVER_PROTO3p8
bool "Version 3.8"
endchoice # VNC server protocol
config VNCSERVER_NDISPLAYS
int "Number of displays"
default 1
range 1 99
---help---
Specifies the number of RFB displays supported by the server.
Normally this should be one.
config VNCSERVER_NAME
string "VNC display name"
default "NuttX"
config VNCSERVER_PRIO
int "VNC server task priority"
default 100
config VNCSERVER_STACKSIZE
int "VNC server stack size"
default DEFAULT_TASK_STACKSIZE
config VNCSERVER_UPDATER_PRIO
int "VNC updater thread priority"
default 100
config VNCSERVER_UPDATER_STACKSIZE
int "VNC updater thread stack size"
default DEFAULT_TASK_STACKSIZE
choice
prompt "VNC color format"
default VNCSERVER_COLORFMT_RGB16
config VNCSERVER_COLORFMT_RGB8
bool "RGB8 3:3:2"
config VNCSERVER_COLORFMT_RGB16
bool "RGB16 5:6:5"
config VNCSERVER_COLORFMT_RGB32
bool "RGB32 8:8:8"
endchoice # VNC color format
config VNCSERVER_SCREENWIDTH
int "Framebuffer width (pixels)"
default 320
---help---
This setting defines the width in pixels of the local framebuffer.
Memory usage: PixelWidth * ScreenWidth * ScreenHeight
So, for example, a 320x240 screen with RGB16 pixels would require
2x320x240 = 150 KB of RAM.
config VNCSERVER_SCREENHEIGHT
int "Framebuffer height (rows)"
default 240
---help---
This setting defines the height in rows of the local framebuffer.
Memory usage: PixelWidth * ScreenWidth * ScreenHeight
So, for example, a 320x240 screen with RGB16 pixels would require
2x320x240 = 150 KB of RAM.
config VNCSERVER_NUPDATES
int "Number of pre-allocate update structures"
default 48
---help---
This setting provides the number of pre-allocated update structures
that will be used. Dynamic memory allocations are never made. In
the likely event that we run out of update structures, the graphics
subsystem will pause and wait for the next structures to be released.
Overhead is 12-bytes per update structure.
config VNCSERVER_UPDATE_BUFSIZE
int "Max update buffer size (bytes)"
default 1024
---help---
A single buffer is pre-allocated for rendering updates. This
setting specifies the maximum in bytes of that update buffer. For
example, an update buffers of 32 pixels at 8-bits per pixel and
32-rows would yield a buffer size of 1024!
There is a very strong interaction with this setting and the network MTU.
Ideally, this buffer should fit in one network packet to avoid accessive
re-assembly of partial TCP packets.
REVISIT: In fact, if the buffer does not fit in one network packet,
then there appears to be reliability issues in the connection. I am
not sure why that is; TCP is a stream so it should not matter how
many packets are in a transfer.
Example: Negotiated pixel depth = 8 BPP, window width = 800 pixels.
CONFIG_VNCSERVER_UPDATE_BUFSIZE needs to be the payload size (MSS)
of the transfer or 800 bytes. The MTU is then:
MSS = MTU - sizeof(IP Header) - sizeof(VNC FramebufferUpdate Header)
For IPv4, the IP Header is 20 bytes; 40 bytes for IPv6. The
FramebufferUpdate header is 16 bytes so. The desired MSS is 800 bytes
so MTU = 836 or 856. For Ethernet, this is a total packet size of 870
bytes.
config VNCSERVER_KBDENCODE
bool "Encode keyboard input"
default n
depends on LIBC_KBDCODEC
---help---
Use a special encoding of keyboard characters as defined in
include/nuttx/input/kbd_coded.h.
config VNCSERVER_TOUCH
bool "Enable touch input"
default n
select INPUT
select INPUT_TOUCHSCREEN
---help---
Use touchscreen based input driver
config VNCSERVER_TOUCH_DEVNAME
string "Touch input device name prefix"
default "/dev/input"
depends on VNCSERVER_TOUCH
---help---
Touch device name prefix, final devi name is /dev/inputX by default,
X is display number
config VNCSERVER_INBUFFER_SIZE
int "Input buffer size"
default 80
config VNCSERVER_DEBUG
bool "VNC Server debug"
default n
depends on DEBUG_FEATURES && !DEBUG_GRAPHICS
---help---
Normally VNC debug output is selected with DEBUG_GRAPHICS. The
VNC server support this special option to enable GRAPHICS debug
output for the VNC server while GRAPHICS debug is disabled. This
provides an cleaner, less cluttered output when you only wish to
debug the VNC server versus enabling DEBUG_GRAPHICS globally.
config VNCSERVER_UPDATE_DEBUG
bool "Detailed updater debug"
default n
depends on DEBUG_GRAPHICS || VNCSERVER_DEBUG
endif # VNCSERVER