Skip to content

going public

Compare
Choose a tag to compare
@letoram letoram released this 11 Apr 19:09
· 2113 commits to d71b958588dcb5ae0b205eab8536790f8ed3b9e0 since this release

This is by far the largest release to date, covering about two years of development when combined with the two other appls senseye and durden. In addition to a number of bugfixes, optimization and refactoring, these are the biggest changes:

General

  • 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

Lua

  • 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

Engine

  • 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

Platform

  • 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.

Shmif

  • 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

Frameservers

  • 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