% RetinaDisplay - How to deal with HiDPI "Retina" displays.
%
% On Linux with the standard X11 display system, no special measures are
% needed and HiDPI "Retina" displays should just work like regular displays
% as far as Psychtoolbox is concerned.
%
% On Apple OSX, Psychtoolbox by default will emulate a standard resolution
% display when used on a Retina display to keep old user code working which
% was written before the era of Retina displays, or with Psychtoolbox
% 3.0.11 or earlier versions. If you want to make full use of the native
% high resolution of your Retina display, use the imaging pipeline task
% PsychImaging('AddTask', 'General', 'UseRetinaResolution');. This will
% expose the full resolution but also require more graphics performance
% from your graphics card.
%
% On MS-Windows the situation can be difficult, depending on the Windows
% version and Matlab version in use, and potentially on what other
% applications are running and their status with respect to HiDPI Retina
% displays:
%
% On Windows XP and earlier versions, stuff will just work, but your
% application windows will look tiny when displayed on a Retina display.
%
% On Windows Vista and Windows 7, Psychtoolbox disables the DWM (Desktop
% Window Manager) by default for fullscreen onscreen windows. This will
% ensure optimal display timing precision and avoid Retina display trouble,
% essentially turning your system into a Windows XP system. DPI aware
% applications will continue to display correctly in such a configuration,
% but non DPI aware apps may appear tiny and difficult to use on Retina
% displays. All versions of Matlab older than R2015b are not DPI aware and
% will likely suffer from this problems.
%
% On Windows 8 and later, Psychtoolbox can not disable the DWM. If you
% display a Psychtoolbox window on a standard resolution display, stuff
% will probably work. If you try to display on a HiDPI Retina display then
% you will need to make sure that you either use GNU/Octave, or you use a
% Matlab version that is DPI aware, ie., at least R2015b. You will probably
% also have to make sure that no other non-DPI aware application is running
% or at least not displaying on your stimulus monitor, as such applications
% would trigger use of the DWM and thereby cause stimulus timing problems.
%
% Additionally, on Windows 8 and later you must make sure that the
% stimulation display is the designated "primary display", so DPI settings,
% which always apply to the primary display, thereby apply to your stimulus
% display. Applications displayed on other than the primary display will be
% subject to DWM scaling if those other displays do not have the same DPI
% setting as the primary display. A running Matlab or Octave would trigger
% harmful use of the DWM on such a non-matching display. In general it is a
% good idea for timing precision to make your stimulus display the
% designated primary display (this can be set in the display settings
% control display, maybe via a "Make this my main display" checkbox).
%
% If you must use a system setup with Retina display and a version of
% Matlab, or of Windows 8 or later, that does not allow you to circumvent
% or solve these problems, then there exists also the option to either
% override Windows DPI settings (somewhere under display control panel,
% advanced settings or "Make text appear bigger or smaller" - Try a Google
% search to find it) - this would get rid of DPI related timing problems at
% the expense of applications that display too small on your Retina
% display. Another option is to disable DPI scaling for all applications
% (including Matlab!) which are supposed to display on the HiDPI / Retina
% display. This will avoid rescaling and triggering the DWM, at the expense
% of a too small appearance of those applications GUIs on the Retina
% display. You can do this by right-clicking on the applications icon, then
% selecting the "Properties" item from the context menu, then selecting the
% "Compatibility" tab in the property dialog. In that tab, check the field
% called "Disable display scaling on high DPI settings", then click "OK" to
% apply the new settings and restart the application.
%
% See also Psychtoolbox forum message #23414 for another oddity that one user
% needed to do to fix HiDPI on a Windows multi-display setup:
%
% https://groups.yahoo.com/neo/groups/PSYCHTOOLBOX/conversations/messages/23414
%
% Windows is not only troublesome for proper visual stimulation and
% stimulation timing in itself, it can be especially troublesome when used
% with HiDPI / Retina displays. Therefore it might be a good idea to switch
% to Linux, or if you have to use Windows, to stick to Windows-7, or if you
% have to use a later Windows version, upgrade to Windows 10. It is
% probably also a good idea to then limit yourself to a single display
% setup and/or make sure that only DPI aware applications are running on
% this setup.
%
% Good luck!
%
