Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
- added support for sliced vstores (cubemap, 3d texture)
- rendertarget_ids are now exposed as a uniform (for stereo rendering)
- ugly 1-tick animation timer discard bug fixed
- fixed video layer display- duplication bug on crash recovery
- synchronization layer refactor for future multi-GPU/on-demand and multithreaded client processing
- added system scripts namespace for better sharing between projects
- expose target_flag controls for deferred / script-locked resize control
- Switched the default careful usermask to match usermask
- updated function, build_3dbox - added face split option
- depth function controls added
- new function, image_storage_slice - for converting and synching a sliced store
- new function + builtin uniform, rendertarget_id => rtgt_id - for distinguishing between target rendertarget at the shader stage
- new functions for 3d mesh and navigation: build_sphere, build_cylinder, step3d_model
- updated 3d motion functions to accept interpolation function arguments
- exit_silent argument added to shutdown so clients switch to recover state
- displayhint constants fixed for maximized and fullscreen states
- mesh_shader now behaves like image_shader (string and numerical ids accepted)
- histogram_impose can now work with row offsets
- update_handler on frameserver in terminal state will be _fatal rejected
- load_fail forward fix to asynchronous image loading
- build_plane now also permits a vertically oriented mesh
- image_tesselation function now expose depth buffer controls
- resample_image extended to allow source vstore snapshotting
- fix to crash recovery being misinterpreted for -b :self
- open_nonblock now also supports domain sockets
- new function, rendertarget_range for masking out rendering of objects based on order
- add EXIT_SILENT option to shutdown() to allow clients to live on after display server shutdown
- resettransform now returns remaining time for each transform slot
- improved (debug build only) trace output on script errors in callback
- added entry point _fatal(msg)->str triggered on scripting error for better custom error reporting
- voidlinux - packages upstreamed for (arcan, durden, arcan-wayland, xarcan, aclip, aloadimage)
- restructure to allow more complicated accelerated handle passing
- egl-dri: tty- switch regression fix
- egl-dri: context management reworked in preparation of threaded/mixed 10-bit/8-bit outputs
- linux/openbsd: much improved privilege separation support
- devicehint- now carries metadata about accepted buffer formats
- default handlers (when client provides no implementation) for pushed segments are now supported
- ground work for hidden fallback implementation of force-pushed subsegments
- last_word mechanism added to communicate a user-readable string for abnormal termination
- ground work for 'per-scanline' like dirty transfers
- add helper function, arcan_shmif_handover_exec for delegating subwindows to child processes
- reworked timing code (again)
- force-push debug segment now provides a default state debug output window
- Add support for starting position hint
- Noaudio argument added
- Add default bindings for seek controls
- Add optional (default off) libuvc based webcam access
- Added support for xdg_wm_base protocol
- eglSwapBuffer() client livelock race fixed
- mouse wheel scrolling fixes
- added controls for specifying temp folder prefix in -exec mode
- Add support for resetting default "forward" orientation
- subwindow semantics simplified
- add support for dynamic loading
- controls for setting semantic label to color mapping
- fix to writestr / erase_region dirty- tracking
- added acfgfs tool to mount durden- like menus as a FUSE filesystem
- multiple rpath / osx build fixes
- add controls for manual disable fsrv archetypes
- dropped a number of < 3.0 cmake behaviors and bumped required version
- egl-dri platform now defaults to adding arcan binary suid
- VR support now covers the full path from bridge communicating metadata and limb discovery/loss/map/updates.
- (71939f) -0,-1 pipes and filters input setup added, covered in AWK for Multimedia.
- format-string render functions extended with vid-subimage blit
- generate GUIDs for launched frameservers
- New function: define_linktarget used to create an offscreen render pipeline that is tied to the pipeline of another rendertarget.
- New function: subsystem_reset used to rebuild subsystems (video only for now) to allow live driver upgrades, active GPU switching and so on - without losing state
- Updated function: camtag_model, change to allow forcing destination rendertarget
- Updated function: image_tesselation, expose index access
- Updated function: render_text, added evid,w,h and Evid,w,h,x1,y1,x2,y2
- Updated function: launch_avfeed, added guid as return
- Forward current cached GUID on device hint
- Persist GUID across migration
- Allow incoming devicehint events to update 'last known guid'
- Removed reconnect backoff delay
- Support for ligatures improved
- Highlighting/Inverse/Full-Block cursor changed for better visibility
- Added controls to "screenshot" the current window into a new (input label: COPY_WINDOW)
- Copy Windows can be set to be the primary clipboard receiver (input label: SELECT_TOGGLE)
- Add preinit stage to event and video subsystems for acquiring / dropping privileges
- Added chacha20 csprng and cipher
- OpenBSD: added mouse support
- Egl-Dri: swap-GPU slot added to db- based configuration
- SDL2: improved keyboard and mouse support
- Initial support for OpenHMD
- Ported to OpenBSD
- Fixes to subsurface allocations
- -egl-shm argument added, perform shm->dma_buf conversion in bridge to offload server
- single exec mode (arcan-wayland -exec /my/bin) for stronger separation between clients
- add support for rebuilding client (crash recovery and migration) described in (crash-resilient wayland compositing)[https://arcan-fe.com/2017/12/24/crash-resilient-wayland-compositing/]
- basic seccomp syscall filtering
- First draft version, will be the main focus of the 0.6- series of releases.
- Refactored frameserver- spawning parts to cut down on duplicated code paths and make setup/control more streamlined.
- Added support for tessellated 2D object, with more fine-grained control over individual vertices.
- Extended agp_mesh_store to cover what will be needed for full glTF2.
- Crash-recovery procedure for external clients now also applies to scripting layer errors when there is no fallback appl set.
- Reworked font/format string code to bleed less state and automatically re-raster if the outer object is attached to a rendertarget with a different output density.
- Added additional anchoring points to linked images (center-left, center-top, center-right, center-bottom)
- VR- mapping work for binding external sensor "limbs" to 3d models.
- New function: image_tesselation, used to change subdivisions in s and t directions, and to access and change individual mesh attributes.
- New function: rendertarget_reconfigure, used to change the target density of a rendertarget.
- New functions: vr_map_limb, vr_metadata
- Updated function: define_rendertarget. It now returns status, accepts more mode flags (MSAA) and allows target density specification.
- Updated function: alloc_surface. It now allows additional backend storage formats, (FP16, FP32, alpha-less, RGB565, ...)
- Updated function: link_image, added additional anchoring points
- New library, arcan-shmif-server. This is used for proxying / multiplexing additional connection unto an established one. Primary targets for this lib is a networking proxy and for TUI/Terminal to support delegating decode/rendering to other processes.
- Added support for HANDOVER subsegments, these are subsegments that mutate into primary segments in order to reuse a connection to negotiate new clients without exposing a listening channel.
- Dissemination article: https://arcan-fe.com/2017/07/12/the-dawn-of-a-new-command-line-interface/
- support for bitmapped fonts (PSFv2) as an optional path for faster rendering on weak hardware.
- Built-in bitmapped terminus for three densities/sizes (small, normal, large) as fallback.
- Added dynamic color-scheme updates.
- Rendering-layer reworked to support shaping, custom blits, ...
- Experimental double buffered mode (ARCAN_ARG=dblbuf)
- Experimental smooth scrolling in normal mode (ARCAN_ARG=scroll=4)
- Experimental shaping mode kerning for non-monospace fonts (ARCAN_ARG=shape)
- Experimental ligature/substitution mode for BiDi/i8n/"code fonts" via Harfbuzz (ARCAN_ARG=substitute)
- Lua bindings and tool for testing them out (src/tools/ltui)
- Refactored use of environment variables to a configuration API
- EGL-DRI: VT switching should be noticeably more robust, EGL libraries can now be dynamically loaded/reloaded to account for upgrades or per-GPU sets of libraries.
- AGP: Updated GLES2 backend to work better with BCM drivers.
- Evdev: Added optional support for using xkblayouts to populate the utf8 field.
- EGL-GLES: quick fixes to bring BCM blobs back to life on rPI.
- OpenBSD: initial port bring-up, keyboard input and graphics working.
- SDL2: added SDL2 based video/event platform implementation, some input issues left to sort out before 1.2 support can be deprecated and this be the default on OSX.
- Aloadimage: basic support for SVG images
- Doc: started refactoring lua API documentation format to double as IDL for re-use of lua API as privileged drawing and WM- protocol.
- XKB- Layout transfer support, basic pointer and pointer surface (wl_seat)
- Damage Regions, dma-buf forwarding (wl_surf)
- More stubs (data_device/data_device manager/data_offer/data source)
- zxdg-shell mostly working (toplevel, positioners, popup)
- added support for relative_pointer motion
- LED subsystem reworked: Support hotplug, synthesized LED devices, added support for a FIFO protocol for communicating with external LED controllers
- Accelerated Graphics: refactored to be dynamically (re-)loadable, getting closer to multi-vendor-multi-GPU support and GPU hotplugging.
- Driver backend update: external-launch reloads accelerated graphics library, getting closer to runtime driver upgrades
- Initial HMD/VR support: Early stages, spawn a subprocess for device control and input fusion/sampling with mapping to a virtual skeleton
- Allow direct-to-drain enqueue for out-of-band high-priority events
Tools (src/tools) / Backends (separate repositories)
- waybridge: (new) (alpha state, see wiki wayland notes) wayland protocol service
- xarcan: (new) xserver with shmif driver backend
- qemu: input state- fixes, closer to working multi-display and virgil support
- SDL: improved synchronization, mouse and multi-window support
- vrbridge: (new) basic integration skeleton and partial PSVR support (unusable)
- aclip: (new) clipboard manager for translation between appl- and command-line
- aloadimage: (new) image viewer with parser sandboxing
- shmmon: (new) debugging tool for inspection of shmif- connection dumps or single client state from scraping proc
- openal: patched backend can now be built standalone, back to working state for LWA
- New segid subtypes: WIDGET, BRIDGE_X11, BRIDGE_WL, SERVICE
- Two new sub-libraries: shmif_ext (extended accelerated rendering setup convenience) and shmif_tui (text user interface)
- _open_ext added exposing additional initial-registration fields
- Extended connection protocol to include a preroll stage which act as a collection phase for fonts, outputs, language, etc. in order to cut down on initial setup complexity and reduce connect-to-draw latency.
- added _initial structure that conveys information gathered during the preroll stage
- add VSIGNAL RHINT to support event- based notification on frame delivery for some I/O multiplexation edge cases
- Engine-side reservable misc- buffer added to shmpage layout for specialized I/O devices that would saturate the event queues when dealing with latency-sensitive high-samplerate input devices
- Negotiable extended mapping for synchronizing gamma/color information
- Negotiable (placeholder/incomplete) extended mapping for supporting HDR source contents
- Negotiable (placeholder/incomplete) extended mapping for vector content transfer
- egl-dri: backlight support exposed as a LED controller, VT switch stability fixes, EGLStreams support moved from the egl-nvidia platform, removed egl-nvidia, add switchable synchronization strategies for fast, adaptive or conservative.
- evdev: devices with LEDs now get mapped to a corresponding LED controller.
- agp: exposed more color packing formats.
- Tuning to resize/- refresh cpu v latency tradeoffs
- Refactored codebase and split out drawing/shmif- integration etc. into using shmif_tui.
- Minor bugfixes related to color parsing, added blink speed control
- Deprecated: LED_CONTROLLERS constant
- target- event propagation extended:
- Added functions: hmd_setup, define_arcantarget (LWA only, experimental)
- Updated functions: controller_leds, set_led, set_led_intensity, set_led_rgb, open_nonblock, audio_gain, video_displaygamma, decode_modifiers, target_flags, add_3dmesh
- Added constants: TARGET_ALLOW(CM,LODEF,HDR,VECTOR,INPUT)
- Added aliases: image_surface, image_surface_storage, image_surface_resolve (dropped properties suffix)
- Updated events: display_state (additional fields for backlight) input (status: extended label fields, device reference, device domain) target (expose "bchunkstate", "preroll")
- partial/incomplete: requesting/rendering to subsegments (icon, titlebar, popup, ...) via define_arcantarget
- improvements to runtime DPI switching and automated resize-response
- runtime server controlled 'default font' and 'default font size' switching
* New functions: target_devicehint (control accelerated device use and connection points), video_displaygamma (access low-level display gamma ramps), rendertarget_vids (enumerate rendertarget- attachments) * Update functions: target_displayhint(synch controls), set_context_attachment(can now query), rendertarget_forceupdate(change rate after creation), target_seek(can now specify seek domain), system_collapse (can now disable frameserver-vid adoption)
* Added shmif_ext support library for reusing the boiler plate in setting up egl surfaces, creating contexts and performing handle passing. * Audio buffer negotiation is now allowed to now switch samplerate * Structure for specifying viewport-border region extended to handle varying t/l/d/r * Support for live migration between connection points * Extended the number of RESET states to account for server crash recovery
* image loading and guard thread stack size and safety edge condition fixes * allow shmif- connections to negotiate deviating audio samplerate
* Added optional tesseract-ocr support to encode frameserver. * Removed resamplers from game * Terminal: mouse protocol support, better resize filtering, better scrolling step size controls, fixed font descriptor leak, OSC set title and bracket paste support
* Support for egl-dri on BSDs * Input platform for FreeBSD/console * Display mapping semantics improved for SDL/egl-dri * Improved synch- control for multiple displays * linux/event, renamed to evdev, better (but still not good) VT switching support * evdev, MT event formatting fixes * evdev, better recovery in the event of SIGTERM
* sdl12 hijack library reworked to use dummy- drivers for A/V * xlib hijack library for partially broken SDL12/SDL2 games that rely on dangling X/GLX symbols
* New functions: net_discover, video_synchronization, resize_video_canvas, video_displaydscr, video_displaymodes, map_video_display, system_identstr, system_collapse, switch_appl, build_pointcloud, image_state, cursor_setstorage, cursor_position, move_cursor, nudge_cursor, resize_cursor, image_mipmap, alloc_surface, tag_image_transform, resample_image, target_reject, target_updatehandler, pacify_target, bond_target, rendertarget_detach, rendertarget_forceupdate, rendertarget_noclear, target_flags, target_parent, target_displayhint, target_fonthint, target_alloc, open_nonblock, accept_target, define_feedtarget, define_nulltarget, util:hash, util:to_base64, util:from_base64, get_keys, match_keys, list_target_tags, target_configurations, audio_buffer_size, crop_image, center_image, image_access_storage, image_resize_storage, image_matchstorage, build_pointcloud, system_defaultfont, frameserver_debugstall, input_capabilities, input_samplebase, set_context_attachment, video_display_state, shader_ugroup * Removed deprecated: launch_target_capabilities, game_cmdline, switch_theme, list_games, game_info, game_family, game_genres pause_audio, instance_image, camtaghmd_model, default_movie_queueopts, default_movie_queueopts_override, net_refresh * New constants: GL_VERSION, SHADER_LANGUAGE, FRAMESERVER_MODES, APPLID, API_ENGINE_BUILD KEY_CONFIG, KEY_TARGET, HINT_FIT, HINT_CROP, HINT_YFLIP, HINT_ROTATE_CW_90, HINT_ROTATE_CCW_90, SHARED_RESOURCE, SYS_APPL_RESOURCE, ALL_RESOURCES, INTERP_LINEAR, INTERP_SINE, INTERP_EXPIN, INTERP_EXPOUT, INTERP_EXPINOUT, ANCHOR_UL, ANCHOR_UR, ANCHOR_LL, ANCHOR_LR, ANCHOR_C, VRES_AUTORES, EXIT_SUCCESS, EXIT_FAILURE, MAX_TARGETW, MAX_TARGETH, TYPE_FRAMESERVER, TYPE_3DOBJECT, TARGET_SYNCHRONOUS, TARGET_NOALPHA, TARGET_VSTORE_SYNCH, TARGET_VERBOSE, TARGET_AUTOCLOCK, TARGET_NOBUFFERPASS, DISPLAY_STANDBY, DISPLAY_OFF, DISPLAY_SUSPEND, DISPLAY_ON, RENDERTARGET_NOSCALE, RENDERTARGET_SCALE, READBACK_MANUAL, HISTOGRAM_SPLIT, HISTOGRAM_MERGE, HISTOGRAM_NOALPHA, TD_HINT_CONTINUED, TD_HINT_INVISIBLE, TD_HINT_UNFOCUSED, TD_HINT_IGNORE, FONT_PT_SZ, CRASH_SOURCE * Calctarget callback table get, histogram_impose and frequency * Frameserver_terminated events renamed to terminated * Support for coverage tracking trace build * Added color support to output messages * Added interpolation function specifier to move/rotate/blend/resize * Transformation chains can have callback tags associated with completion, this also works as a timer implementation. * Added support for native/accelerated cursor rendering * System_collapse for switching running appl or dropping all resource * Allocations that are not strictly connected to frameservers * _display_state callback * Input class for frameserver/remoting originated input (cursor_input, key_input) * Net discovery events propagated * Automated frameserver- looping dropped, in favour of manual management on terminated events * Monitor state format properly escape Lua strings * Text rendering functions provide additional metrics and has a tabled version where %2 indices ignore format string characters * Link_image can now specify anchor point
* Database module rewritten, target/configuration/appl key-value store * Namespace rewritten, RESOURCE/APPL split into multiple fine-grained namespaces * Interpolation state exposed as shader built-in * Output dimensions exposed as shader built-in * Better transformation caching and dirty invalidation * Bugfixes to 2D/3D picking * Support for post- Lua init hook scripts (primarily intended for testing and automation purposes). * First refactoring of memory allocation resources using different interface that tracks alignment, metatype etc. * Support for adoption / fallback application in the event of an error in the Lua state machine * Dropped support for framequeues * Font rendering support for default- system font and specifying format related to system font * Fallback font chains to switch other fonts when glyphs are missing * Cheap, "shallow" clipping added to reduce stencil- buffer use * More fine grained control over frameserver data routing * Support for shader instancing through uniform groups * Framesets now act as null_surface + sharestorage calls
* EGL-GLES split into regular EGL-GLES primarily for ARM devices, and the Linux/KMS specific EGL-DRI with the distant relative EGL-NVIDIA. * Interface expanded to support multi-monitor, dynamic synchronization switching * X11 and Linux (evdev) platform support expanded with better input management * Support for DRI render-nodes, accelerated buffering passing * OpenGL used stripped from video/3d/frameserver into AGP (arcan graphics platform) to support lower level graphics APIs and software rendering.
* Much improved documentation, automated testing, build tracking and tagging. * Re-organized large parts of the source tree * Switched majority of component licensing from GPL to BSD * AWB / Gridle moved out to own .gits, defunct/unsupported * Added support for LWA, lightweight arcan. A special build that uses another arcan instance as display server. * Much improved support for HDPI and mixed-DPI displays
* Support for non-authoritative connections via CONNPATH and CONNKEY * Support for multiple- segments, * More aggressive cookie/dynamic integrity check * Cleanup / simplify connection and setup API * Shmif resize heuristics switched to reduce stalls / latency * Support for multiple video buffers / segment * Support for multiple audio buffers / segment * Support for Communicating buffer dimensions * More fine-grained control over I/O multiplexation, guard threads, synchronization, blocking vs tearing * Type-model changes, SEGID can register as: LWA, NETWORK_SERVER, NETWORK_CLIENT, MEDIA, TERMINAL, REMOTING, ENCODER, SENSOR, GAME, APPLICATION, BROWSER, VM, HMD_SBS, HMD_L, HMD_R, POPUP, ICON, TITLEBAR, CURSOR, ACCESSIBILITY, CLIPBOARD, CLIPBOARD_PASTE * target_command- changes: -FDTRANSFER, +BCHUNK_IN, +BCHUNK_OUT, +SEEKCONTENT, +DISPLAYHINT, +STREAMSET, +MESSAGE, +FONTHINT, +GEOHINT * external_command- changes: +FAILURE, +BUFFERSTREAM, +STATESIZE, +FLUSHAUD, +SEGREQ, +KEYINPUT, +CURSORINPUT, +CURSORHINT, +VIEWPORT, +CONTENT, +LABELHINT, +REGISTER, +ALERT, +CLOCKREQ
* Added terminal frameserver * ARCAN_FRAMESERVER_DEBUGSTALL switched to allow infinite or specific- sleep * VNC server support added to encode * Remoting frameserver added (primitive at the moment, support vnc client) * Decode_ default switched from av/ffmpeg to libvlc * Libretro graphing moved to a possible debug secondary segment
- Monitoring mode now uses the same namespace as themes, can now load .lua crashdumps
- The core-engine builds and runs on arm/egl devices (e.g. raspberry PI), no working input layer or resolution switching controls yet. _math performance is horrible before we get working ARMv6 + NEON optimized options.
- Frameserver API cleaned up, reworked build-system and source organisation.
- Optional avfeed- frameserver added, this is just a skeleton to ease writing custom data sources ( corresponding lua calls are launch_avfeed) and needs to be enabled build-time.
- Frameservers can now (except on windows) be built in a split- mode, where each subtype (movie, encode, libretro etc.) gets its own binary.
- Alignment issues when running SIMD optimized math adjusted
- OSX support partially re-added, no packaging / UI work as of yet.
- Monitoring mode changed slightly, instead of forking, we now set envvar and re-exec ourselves to accommodate for systems with broken broken fork() support (seriously OSX...)
- initial API documentation coverage now at 100%, language and descriptive qualities for individual pages still have a lot to go, this will be improved gradually.
- system_load now accepts an optional trigger to disable _fatal calls when asked to load a broken script
- target_coreopt added to force key,val options to target frameserver
- target_verbose hints frameservers and their internal processing to expose more detailed data (e.g. pts/framecount/frameskipping for decode and encode)
- define_calctarget added, similar in style to a recordtarget (without any audio) that exposes buffer data as a callback to a provided lua function
- target_synchronous disables PTS enforcement and blocks on sync with frameserver and with GPU (only for very specific uses)
- exposing lua api to the VM is delayed until just before the themename() entry-point
- all C<->LUA functions are now mapped to a LUA_TRACE(luasymbolname) macro (where ctx refers to the lua_State pointer) for engine dev. to ease customized tracing, by default, the macro is just empty.
- system_snapshot function added (similar to a crashdump but can be invoked by script dev.)
- image_children now returns correct VIDs
- more functions aggressively shut down if a broken VID is provided
- Support for Core Options
- Support for 3D Cores (may cause some problems with certain window managers as we need to spawn full windows to get access to an off-screen FBO)
- Improved support for analog devices and filtering
- Rollback based input latency masking support added (experimental)
- Improved builddb times and fixes for libretro core scanning
- Now adds support for .descr files in games/target folder to disable and override scanning
Clone this wiki locally
Press h to open a hovercard with more details.