Software Solutions for Multi-Display Setups



Similar documents
Creating Full Screen Applications Across Multiple Displays in Extended Mode

Intel Media SDK Library Distribution and Dispatching Process

Customizing Boot Media for Linux* Direct Boot

Intel vpro Technology. How To Purchase and Install Symantec* Certificates for Intel AMT Remote Setup and Configuration

Specification Update. January 2014

Intel HTML5 Development Environment. Tutorial Test & Submit a Microsoft Windows Phone 8* App (BETA)

Intel vpro Technology. How To Purchase and Install Go Daddy* Certificates for Intel AMT Remote Setup and Configuration

The Case for Rack Scale Architecture

Intel HTML5 Development Environment. Article - Native Application Facebook* Integration

iscsi Quick-Connect Guide for Red Hat Linux

Power Benefits Using Intel Quick Sync Video H.264 Codec With Sorenson Squeeze

2013 Intel Corporation

with PKI Use Case Guide

Creating Overlay Networks Using Intel Ethernet Converged Network Adapters

Intel Technical Advisory

User Experience Reference Design

Intel Solid-State Drive Pro 2500 Series Opal* Compatibility Guide

Intel Core i5 processor 520E CPU Embedded Application Power Guideline Addendum January 2011

Intel Data Direct I/O Technology (Intel DDIO): A Primer >

Intel HTML5 Development Environment. Tutorial Building an Apple ios* Application Binary

Intel SSD 520 Series Specification Update

Intel HTML5 Development Environment Article Using the App Dev Center

Cloud based Holdfast Electronic Sports Game Platform

Intel Retail Client Manager Audience Analytics

How to Configure Intel Ethernet Converged Network Adapter-Enabled Virtual Functions on VMware* ESXi* 5.1

Intel Data Migration Software

COSBench: A benchmark Tool for Cloud Object Storage Services. Jiangang.Duan@intel.com

Intel Integrated Native Developer Experience (INDE): IDE Integration for Android*

Intel Core TM i3 Processor Series Embedded Application Power Guideline Addendum

System Image Recovery* Training Foils

This guide explains how to install an Intel Solid-State Drive (Intel SSD) in a SATA-based desktop or notebook computer.

Douglas Fisher Vice President General Manager, Software and Services Group Intel Corporation

Intel Service Assurance Administrator. Product Overview

Intel Identity Protection Technology with PKI (Intel IPT with PKI)

Intel Retail Client Manager

Intel Ethernet and Configuring Single Root I/O Virtualization (SR-IOV) on Microsoft* Windows* Server 2012 Hyper-V. Technical Brief v1.

USB 3.0* Radio Frequency Interference Impact on 2.4 GHz Wireless Devices

Software Evaluation Guide for Autodesk 3ds Max 2009* and Enemy Territory: Quake Wars* Render a 3D character while playing a game

Intel Desktop Board D945GCPE Specification Update

* * * Intel RealSense SDK Architecture

Haswell Cryptographic Performance

Intel Desktop Board DP55WB

Partition Alignment of Intel SSDs for Achieving Maximum Performance and Endurance Technical Brief February 2014

Intel Desktop Board D945GCPE

Intel 810 and 815 Chipset Family Dynamic Video Memory Technology

Intel Identity Protection Technology (IPT)

Intel Desktop Board DG41BI

Intel Desktop Board DG43RK

Intel Desktop Board DQ35JO

Intel Atom Processor E3800 Product Family

Intel Cloud Builder Guide: Cloud Design and Deployment on Intel Platforms

Intel Internet of Things (IoT) Developer Kit

Intel Retail Client Manager

Intel Desktop Board DG41TY

Video Encoding on Intel Atom Processor E38XX Series using Intel EMGD and GStreamer

Intel Desktop Board DG31PR

Intel Identity Protection Technology Enabling improved user-friendly strong authentication in VASCO's latest generation solutions

VNF & Performance: A practical approach

Intel Desktop Board D101GGC Specification Update

Intel Small Business Advantage (Intel SBA) Release Notes for OEMs

Intel and Qihoo 360 Internet Portal Datacenter - Big Data Storage Optimization Case Study

Displaying Stereoscopic 3D (S3D) with Intel HD Graphics Processors for Software Developers August 2011

System Event Log (SEL) Viewer User Guide

Intel Desktop Board DG33TL

Intel Desktop Board DQ43AP

Intel Desktop Board DG41WV

INTEL SOFTWARE LICENSE AGREEMENT (OEM / IHV / ISV Distribution & Single User)

Intel Media SDK Features in Microsoft Windows 7* Multi- Monitor Configurations on 2 nd Generation Intel Core Processor-Based Platforms

Intel Matrix Storage Console

Intel Platform Controller Hub EG20T

Intel: a Thought Leader Helping IoT Scale Out

Intel Simple Network Management Protocol (SNMP) Subagent v6.0

IDE Integration for Android* Part of the Intel Integrated Native Developer Experience (Intel INDE) 1.5.7

Resetting USB drive using Windows Diskpart command

Intel Matrix Storage Manager 8.x

Intel 845G/GL Chipset Dynamic Video Memory Technology

Intel Modular Server System MFSYS25

Intel Desktop Board D945GCL

Enabling new usage models for Intel Embedded Platforms

Intel Media Server Studio - Metrics Monitor (v1.1.0) Reference Manual

RAID and Storage Options Available on Intel Server Boards and Systems

Intel Desktop Board DG965RY

Intel Rapid Storage Technology

Intel System Event Log (SEL) Viewer Utility

Upgrading Intel AMT 5.0 drivers to Linux kernel v2.6.31

How to Configure Intel X520 Ethernet Server Adapter Based Virtual Functions on Citrix* XenServer 6.0*

Intel Cloud Builders Guide to Cloud Design and Deployment on Intel Platforms

Version Rev. 1.0

Intel System Event Log (SEL) Viewer Utility

Intel System Event Log (SEL) Viewer Utility

Intel vpro Technology with Location Based Services Deployment Guide

Intel Remote Configuration Certificate Utility Frequently Asked Questions

Revision History. Revision Revision History Date

Intel Desktop Board DQ965GF

Intel Desktop Board DP43BF

Intel Storage System SSR212CC Enclosure Management Software Installation Guide For Red Hat* Enterprise Linux

Cloud Service Brokerage Case Study. Health Insurance Association Launches a Security and Integration Cloud Service Brokerage

Intel Network Builders

DDR2 x16 Hardware Implementation Utilizing the Intel EP80579 Integrated Processor Product Line

Intel System Event Log (SEL) Viewer Utility. User Guide SELViewer Version 10.0 /11.0 December 2012 Document number: G

Transcription:

White Paper Bruce Bao Graphics Application Engineer Intel Corporation Software Solutions for Multi-Display Setups January 2013 328563-001

Executive Summary Multi-display systems are growing in popularity. They provide bigger display areas and involve substantially lower system cost compared to high-end single display systems. How to enable one application to show its content across multi-display systems is a popular question. This article discusses how to go about doing that. The Intel Embedded Design Center provides qualified developers with web-based access to technical resources. Access Intel Confidential design materials, step-by step guidance, application reference solutions, training, Intel s tool loaner program, and connect with an e-help desk and the embedded community. Design Fast. Design Smart. Get started today. http://www.intel.com/p/en_us/embedded. 2

Contents Business challenge and solution... 4 Basic framework... 7 Bezel compensation... 13 Conclusions... 15 References... 15 3

Business challenge and solution Developers use multiple methods to realize cross-monitor display effects, but these methods generally fall into two main categories. They are either implemented by modifying the display driver or implemented by modifying the application source code. Modifying the display driver: Independent Hardware Vendors (IHVs) need to modify the display driver to: 1. Get and shield the display information of each display monitor; 2. Generate display information of the virtual monitor which is combined by multi-display monitors; 3. Pass the virtual monitor display information to the OS and applications. In this case, the driver handles all operations and is transparent to the OS and applications. The OS will be configured as a single or duplicated display mode, and the application only needs to be designed to work in the single display mode. At the same time, IHVs also provide a GUI configuration tool for customers to configure the multi-display combination (such as, 3x1 or 1x3 layout) in order to generate the final virtual screen. The advantage of this modified display driver method is that it is easy to realize bezel compensation (or bezel correction). The disadvantage of this method is that each display monitor must be the same size / resolution setting and orientation. Figure 1 Example of IHV GUI to configure the 3x1 multi-display 4

Modifying the application: Independent Software Vendors (ISVs) need to modify their applications source code to make it function in a multi-display system. First, the application needs to query the multi-display information, like the multiscreen layout, the width and height of the virtual screen etc. Then the application can display its content across the multiple connected monitors based on this information. In this method, the OS exactly knows how many display monitors are connected to the system, and will configure them work in extended mode. All the information (including start point, resolution, direction etc.) for each display can be queried, which makes the software solution more flexible and can enable it to handle some special layouts. All the customer needs to do is to configure the layout of multi-display in the display control panel first, so the application can get this information by invoking the Windows API. Because additional copies and synchronization operations may be invoked by the OS to simultaneously show different parts of content to different monitors, the performance of this solution will drop a little compared to the driver solution. Figure 2 Special layout of multi-display example (usually done by application solution) 5

Figure 3 Special layout of multi-display example (usually done by application solution) Table 1. Feature comparison between these two solutions Function/ Request Hardware platform Operation System Application mode Display Topology Bezel Driver solution Platform supported by this driver Single or Duplicate Full-screen or window mode Simple: Display setting of each monitor should be the same The final virtual screen should be a rectangle. Easy to apply, benefits all software applications. Application solution Any hardware platform Extend Window mode only Flexible Difficult to apply, applications need do it by themselves. ISV cost Zero Small Performance Better Common Maintenance Rely on IHV ISV can take control 6

Basic framework The application solution can have lots of methods, and we only discuss the simplest one here: create one window and have it span across all the displays, and enable the application to render its contents within this window. This method is simple to implement within the existing applications to make them suited to multi-display systems, while the performance may decrease a bit depending on different system configurations and software architecture: OS will do additional blt/copy operations to show different portions of the image across the different displays. 1. Configure the layout of multi-display a) Set extended mode in the Windows display control panel. Figure 4 Display layout in system display panel. 7

b) Configure the display layout (drag the monitor to the proper position in display control panel) and set the corresponding resolution. Figure 5 Display layout in system display panel. 2. Modify the application source code. The BasicHLSL example shown here is from the Microsoft DirectX SDK. a) Make sure the application is running in Windows* mode b) Get/Query the current display settings from Windows, including the resolution of the virtual screen, the coordinate of the start point etc. // Get necessary information of Virtual Screen. RES_X = GetSystemMetrics(SM_XVIRTUALSCREEN); RES_Y = GetSystemMetrics(SM_YVIRTUALSCREEN); RES_W = GetSystemMetrics(SM_CXVIRTUALSCREEN); RES_H = GetSystemMetrics(SM_CYVIRTUALSCREEN); 8

c) Set the window size and position based on the information returned from step b. // Create window. hwnd_ = CreateWindow( TEXT("DemoApp"), TEXT("Simple DirectWrite Hello World"), WS_POPUP, // WS_POPUP Window style RES_X, RES_Y, RES_W, RES_H, //Horizontal start point of the virtual screen //Vertical start point of the virtual screen //Width of the virtual screen //Height of the virtual screen NULL, NULL,0 HINST_THISCOMPONENT, this ); d) Remove the limitation to show content only in a single display: Disable the bclipwindowtosingleadapter parameter in the DXUTChangeDevice function. HRESULT DXUTChangeDevice(DXUTDeviceSettings* NewDeviceSettings, IDirect3DDevice9* pd3d9devicefromapp, ID3D10Device* pd3d10devicefromapp, bool bforcerecreate, bool bclipwindowtosingleadapter) 9

3. Additional work in abnormal display topology: For abnormal display topology, nothing needs to be changed in the source code after step 2. All that is needed is to change the display topology in the Intel Graphics and Media Control Panel. Here we take two monitors as an example and make one horizontal and the other vertical: a) System display control panel: Select the second display and choose Portrait from the Orientation drop down (Figure 6). Drag the vertical monitor to a suitable position (Figure 7), and click OK or Apply. Figure 6 Display layout in system display panel. Figure 7 Display layout in system display panel. 10

b) Intel Graphics and Media Control Panel: In the General settings tab, select the second display. Select the Rotate To 90 Degrees option from the Rotation drop down menu (Figure 8) and click Apply. In the Multiple Displays tab, select the Primary and Secondary displays, drag the vertical monitor as needed to a suitable position in the Positioning column (Figure 9) and click OK. Figure 8 Configurations in Intel Graphics and Media Control Panel 11

Figure 9 Configurations in Intel Graphics and Media Control Panel Now the system has been successfully configured as one horizontal and one vertical display topology. 4. Running result Figure 10 Final result (horizontal layout) 12

Figure 11 Final result (special layout) Bezel compensation Each monitor has an edge where there is no picture. That part of the monitor is called the bezel. Bezels introduce big gaps which separate different parts of one picture, causing the image to look unnatural and not change smoothly. Bezel compensation refers to using the images to compensate for the bezel. In this case, the GPU will render on a virtual screen which is bigger than the real screen size, so some display content will not be seen on the real screen. From end user point of view, the missing contents are covered by the bezel and the total system is Bezel compensated. 13

Figure 12 Bezel compensation Advanced and complicated application solution: Applications can be designed to create multiple windows and each one covers only one display monitor and binds to it. Thus different windows will be rendered as different parts of the image. Performance of this architecture will be better because no additional blt/copy is needed. Bezel compensation can also be solved by rendering suitable content in each window. But the disadvantage is that the application needs to carefully handle the synchronization between different content part renderings. 14

Conclusion References The driver and application solutions can solve the request of one screen of content cross a multi-display system. The software-based solution is more flexible and can be a good complement of a driver-based solution a modified application will also run well on driver supported multi-display systems. Intel is providing driver solutions starting with the 3 rd generation Intel Core processors. Customers can easily design their Intel based system by choose the technology which is right for them. 1. Microsoft DirectX SDK (includes many samples together with BasicHLSL) http://www.microsoft.com/enus/download/details.aspx?displaylang=en&id=6812 2. Microsoft Sample code for multi-display: http://msdn.microsoft.com/enus/library/windows/desktop/dd941791%28v=vs.85%29.aspx 3. Definition of GetSystemMetrics function: http://msdn.microsoft.com/enus/library/aa929225.aspx 4. Definition of CreateWindow function: http://msdn.microsoft.com/enus/library/ms632679(vs.85).aspx The Intel Embedded Design Center provides qualified developers with webbased access to technical resources. Access Intel Confidential design materials, step-by step guidance, application reference solutions, training, Intel s tool loaner program, and connect with an e-help desk and the embedded community. Design Fast. Design Smart. Get started today. http://www.intel.com/p/en_us/embedded. Author Bruce Bao is a Graphics Application Engineer in the Intelligent Systems Group at Intel Corporation. 15

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. A "Mission Critical Application" is any application in which failure of the Intel Product could result, directly or indirectly, in personal injury or death. SHOULD YOU PURCHASE OR USE INTEL'S PRODUCTS FOR ANY SUCH MISSION CRITICAL APPLICATION, YOU SHALL INDEMNIFY AND HOLD INTEL AND ITS SUBSIDIARIES, SUBCONTRACTORS AND AFFILIATES, AND THE DIRECTORS, OFFICERS, AND EMPLOYEES OF EACH, HARMLESS AGAINST ALL CLAIMS COSTS, DAMAGES, AND EXPENSES AND REASONABLE ATTORNEYS' FEES ARISING OUT OF, DIRECTLY OR INDIRECTLY, ANY CLAIM OF PRODUCT LIABILITY, PERSONAL INJURY, OR DEATH ARISING IN ANY WAY OUT OF SUCH MISSION CRITICAL APPLICATION, WHETHER OR NOT INTEL OR ITS SUBCONTRACTOR WAS NEGLIGENT IN THE DESIGN, MANUFACTURE, OR WARNING OF THE INTEL PRODUCT OR ANY OF ITS PARTS. Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined". Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information. The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request. Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order. Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-4725, or go to: http://www.intel.com/design/literature.htm%20 Intel, and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others. Copyright 2013 Intel Corporation. All rights reserved. 16