Arcan 0.5

This took a while, but for good reason. In a sense, the project has reached its halfway point and most of the scaffolding is now being removed. The major changes are so numerous that I will not try and elaborate on them here, but a few posts will be coming in rapid succession that shows off what has been extended and some of what the overarching goals actually are.

The sad part with this release is that we deprecate a few things, e.g. windows support and the AWB/Gridle applications as these parts have well outlived their respective usefulness. The video below is the first attempt in trying to explain some of what this project is about.

For those that dislikes slow videos, here are a few link to slides:

  1. High-Level description

 

2. Design

 

3. Developer Introduction

 

And for more detailed descriptions, there’s still the wiki@:

https://github.com/letoram/arcan/wiki

For the sake of form, here is the condensed list of of 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
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s