Skip to content

🎆 Blazingly fast GPU accelerated pixelflut server written in Rust.

License

Notifications You must be signed in to change notification settings

datdenkikniet/pixelpwnr-server

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pixelpwnr server

Note: This project is in the prototype phase, and is in development and tested with. Further optimization of this server for high performance use will be done at a later time.

A blazingly fast GPU accelerated pixelflut (video) server in Rust.

Features

  • Blazingly fast pixelflut rendering
  • GPU accelerated
  • Highly concurrent, to support many connections
  • Linux, Windows and macOS
  • Optional binary PX command for reduced bandwidth requirements (enabled by default).

Installation

For installation, Git and Rust cargo are required. Install the latest version of Rust with rustup.

Then, clone and install pixelpwnr-server with:

# Clone the project
git clone https://github.com/timvisee/pixelpwnr-server.git
cd pixelpwnr-server

# Install pixelpwnr server
cargo install -f

# Start using pixelpwnr server
pixelpwnr-server --help

# or run it directly from Cargo
cargo run --release -- --help

Or just build it and invoke the binary directly (Linux/macOS):

# Clone the project
git clone https://github.com/timvisee/pixelpwnr-server.git
cd pixelpwnr-server

# Build the project (release version)
cargo build --release

# Start using pixelpwnr-server
./target/release/pixelpwnr-server --help

The binary PX command

This implementation adds a new command to the protocol, which is laid out as follows:

PBxyrgba

where:

  • x and y are Little-Endian u16 values describing the X and Y coordinate of the pixel to set.
  • r, g, b and a are single-byte values describing the R, G, B, and A components of the color to set the pixel to.
  • It is important to note that this command does not end in a newline. Appending a newline simply causes the server to interpret that newline as an empty command (which is fine).

If you wish to disable the binary pixel command, pass the --no-default-features flag to cargo

Requirements

  • Rust (v1.31 or higher)
  • Build essentials (Ubuntu package: build-essential)
  • freetype2 development files (Ubuntu package: libfreetype6-dev)

Performance

Here are some points that help with the pixelflut server performance, under heavy load:

  • Use a --release build.
  • Use a CPU with as many cores as possible.
  • Use a fast Ethernet connection, preferably 10Gb/s+.
  • Use a dedicated graphics card.
  • Use a Linux machine.
  • Increase the file descriptor limit (on Linux).
  • Quit as many other running programs.

Relevant projects

License

This project is released under the GNU GPL-3.0 license. Check out the LICENSE file for more information.

About

🎆 Blazingly fast GPU accelerated pixelflut server written in Rust.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • Rust 100.0%