190 likes | 254 Views
DisplayWall Software Architecture. Yuqun Chen, Grant Wallace, Kai Li. Motivation. We’ve achieved high resolution Next stage: multiple active surfaces many types of inputs new ways of interacting with the surfaces new ways to visualize information Stanford’s Interactive Space.
E N D
DisplayWall Software Architecture Yuqun Chen, Grant Wallace, Kai Li
Motivation • We’ve achieved high resolution • Next stage: • multiple active surfaces • many types of inputs • new ways of interacting with the surfaces • new ways to visualize information • Stanford’s Interactive Space
New Application Framework • aware of multiple surfaces • aware of multiple inputs • aware of reliability • allows dynamic grouping • aware of multiple platforms (PDA, laptop, PC)
Future Applications • Collaborative Engineering • 3D models • 2D blue prints/maps • video conferencing • writing workspace (documents, code) • multiple simultaneous user inputs • different types of devices (laptop, PDA, etc.) • many apps work cooperatively
Orthogonal Design Spaces • Multiple Applications • Multiple Inputs • Multiple Displays
Desired Properties • Applications • multiple apps cooperate • take multiple inputs • scalable • Input • route many inputs to many apps • Display/System • multiple surface management • re-configurable and scalable • fault tolerance (timely recovery) • hardware/OS platform independent
Application Space • Synchronization and communication • high-level events among multiple apps • large-scale data exchange • Select among multiple input events • system support for multiplexing inputs • Application-level adaptability • deal with join/leave on the fly • new site joins a video conferencing • bring the new app’s states up to date
Application Scalability • Scalable to actual screen size & aspect ratio • e.g., imageviewer • Scalable with number of physical nodes • walk-through • load-balancing
Inputs Space • Multiple physical inputs => one virtual inputs • (gyro-mouse, hand position) ==> virtual mouse • (PDA, keyboard, keyboard) ==> virtual keyboard • Multiple virtual inputs • flight simulator: captain and co-pilot
Physical to Virtual Input Routing app virtual keyboard 1 PC keyboard virtual keyboard 2 wireless keyboard remote keyboard virtual mouse 1 mouse virtual mouse 2 app gyro virtual speech virtual body speech recog
Display System Space • Surface (=virtual screen) management • which virtual screen to route application output • virtual screen space configuration/grouping • Per-surface reconfiguration • assign physical screens to a surface • surface resolution • Fault-tolerance • should not worry about connections • state recovery • Hardware/OS independent ==> LINUX
Common Properties • Communication abstraction is the key • Sequencing of data/events • One-to-many: multicast • high-level app events, graphics primitives • Many-to-one: point-to-point • input devices • Avoid explicit connection management • Safe storage for fault tolerance
Communication Choices [1] • MPI-style message passing • advantages • people are familiar with messages • virtual nodes • disadvantages: • mutual knowledge between send and receiver • even though physical nodes can change underneath • lack of a concept of a “shared space”
Communication Choice [2] • Shared (Virtual) Memory • advantages • single shared memory space • at API level, no knowledge about the each others • disadvantages: • memory management from many nodes • platform dependent (big vs. small endian) • coherence may come at a high cost
Communication Choices [3] • Linda-like tuple space (T Space) • a named storage space independent of any nodes • in(name, data), out(name)->data, read(name)->data • messages without direct sender-receiver knowledge • anybody can read from the space
Virtual Frame Buffer/Pixelmap • Well-defined mappings between virtual areas and the physical memory/frame buffer • Coordinated access to the virtual space • everybody reads, barrier, then write • Multiple virtual frames to switch between
Use of Virtual Pixelmap declare virtual map A and B optional: global frame update: A ==> B barrier() every node: read a region from A every node: write to B barrier() swap A and B barrier()
X Server vs. VDD • X Window System • virtual screen management • multiple sources • multiple platforms • multiple inputs ?? • VDD (partially developed) • Windows Apps • smaller API
Software Architecture app app App synchronization XML Virtual inputs rendering inputs OpenGL local VDD X Virtual FB mouse keyboard hand System communication