Skip to content

Instantly share code, notes, and snippets.

@amasover
Last active May 21, 2018 23:38
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amasover/f7de08f8f247203725cc12c1de449300 to your computer and use it in GitHub Desktop.
Save amasover/f7de08f8f247203725cc12c1de449300 to your computer and use it in GitHub Desktop.
Working surround profile + auxiliary monitors for use with HeliosDisplayManagement

Here are the steps that worked for me to setup HeliosDisplayManagement for an NVidia Surround arrangement and a non-surround arrangement.

  1. Download installer from the releases page.

  2. Run Helios Display Management, and click "clone", then edit the cloned arrangement and change the name to what you want (can also be done through editing xml. Do this again for the other monitor arrangement (e.g., clone a surround arrangement, then turn off surround through NVidia control panel, then clone the non-surround arrangement).

Cloning the arrangements generates some base xml for you to work with, and it also generates a nice screenshot that you can use in links on your desktop.

  1. Click "Create Shortcut" for each cloned arrangement. You can put these shortcuts on your desktop.

  2. Install OSVR from its installer page.

  3. Run DirectModeDebugging.exe in C:\Program Files\OSVR\Runtime\bin to get your Display IDs. (NOTE: I don't know if these IDs are required, but this is what worked for me). The Display IDs for my surround monitors all had isActive: true, and were right next to each other in the output.

  4. Copy the entire <SurroundTopology> block, and put it into your DisplayProfiles_1.0.xml located in %appdata%. Put it under the virtual monitor that represents your surround display (in my case, my virtual monitor had a path of \\?\DISPLAY#DELA0A2#5&amp;135d46b0&amp;2&amp;UID5120 and a resolution of 5860x1080. Make sure this virtual montor has a name of NV Surround). Replace the <DisplayId> for each <SurroundTopologyDisplay> with the ones you found in step #5. Replace the monitor names with the correct names (hint: you can get these names from the non-surround section of the xml).

  5. If you want bezel correction, then set <ApplyWithBezelCorrectedResolution> to true. Then we need to set the offsets. Starting with the second monitor in the surround topology, set the x offset to negative $numOfPixelsToOffset. In my example, I want to bezel correct 50 pixels on each border in my 3-monitor surround arrangement. Therefore, I set the x-overlap to -50 on the second and third monitors. If you want the offsets to be different on each bezel, just set the x-overlap values to be different.

You should now be able to run the shortcuts on your desktop to toggle back and forth between surround and non-surround arrangements.

<ArrayOfProfile xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Profile>
<Name>surround</Name>
<Paths>
<Path>
<PixelFormat>PixelFormat32Bpp</PixelFormat>
<Position>
<X>1580</X>
<Y>-1440</Y>
</Position>
<Resolution>
<Width>2560</Width>
<Height>1440</Height>
</Resolution>
<SourceId>0</SourceId>
<Targets>
<PathTarget>
<DevicePath>\\?\DISPLAY#ACR0408#5&amp;135d46b0&amp;2&amp;UID4356</DevicePath>
<DisplayName>XB270HU</DisplayName>
<FrequencyInMillihertz>144000</FrequencyInMillihertz>
<Rotation>Identity</Rotation>
<Scaling>Identity</Scaling>
<ScanLineOrdering>Progressive</ScanLineOrdering>
</PathTarget>
</Targets>
</Path>
<Path>
<PixelFormat>PixelFormat32Bpp</PixelFormat>
<Position>
<X>4140</X>
<Y>-1080</Y>
</Position>
<Resolution>
<Width>1920</Width>
<Height>1080</Height>
</Resolution>
<SourceId>0</SourceId>
<Targets>
<PathTarget>
<DevicePath>\\?\DISPLAY#DELA0A4#4&amp;acfa790&amp;4&amp;UID206371</DevicePath>
<DisplayName>DELL U2414H</DisplayName>
<FrequencyInMillihertz>60000</FrequencyInMillihertz>
<Rotation>Identity</Rotation>
<Scaling>Identity</Scaling>
<ScanLineOrdering>Progressive</ScanLineOrdering>
</PathTarget>
</Targets>
</Path>
<Path>
<PixelFormat>PixelFormat32Bpp</PixelFormat>
<Position>
<X>0</X>
<Y>0</Y>
</Position>
<Resolution>
<Width>5860</Width>
<Height>1080</Height>
</Resolution>
<SourceId>1</SourceId>
<Targets>
<PathTarget>
<DevicePath>\\?\DISPLAY#DELA0A2#5&amp;135d46b0&amp;2&amp;UID5120</DevicePath>
<DisplayName>NV Surround</DisplayName>
<FrequencyInMillihertz>60000</FrequencyInMillihertz>
<Rotation>Identity</Rotation>
<Scaling>AspectRatioCenteredMax</Scaling>
<ScanLineOrdering>Progressive</ScanLineOrdering>
<SurroundTopology>
<AcceleratePrimaryDisplay>true</AcceleratePrimaryDisplay>
<ApplyWithBezelCorrectedResolution>true</ApplyWithBezelCorrectedResolution>
<BaseMosaicPanoramic>false</BaseMosaicPanoramic>
<ColorDepth>32</ColorDepth>
<Columns>3</Columns>
<Displays>
<SurroundTopologyDisplay>
<DisplayId>2179202595</DisplayId>
<DisplayName>DELL U2414H</DisplayName>
<Overlap>
<X>0</X>
<Y>0</Y>
</Overlap>
<PixelShiftType>NoPixelShift</PixelShiftType>
<Rotation>Identity</Rotation>
</SurroundTopologyDisplay>
<SurroundTopologyDisplay>
<DisplayId>2175003377</DisplayId>
<DisplayName>DELL U2414H</DisplayName>
<Overlap>
<X>-50</X>
<Y>0</Y>
</Overlap>
<PixelShiftType>NoPixelShift</PixelShiftType>
<Rotation>Identity</Rotation>
</SurroundTopologyDisplay>
<SurroundTopologyDisplay>
<DisplayId>2172786973</DisplayId>
<DisplayName>DELL U2414H</DisplayName>
<Overlap>
<X>-50</X>
<Y>0</Y>
</Overlap>
<PixelShiftType>NoPixelShift</PixelShiftType>
<Rotation>Identity</Rotation>
</SurroundTopologyDisplay>
</Displays>
<DriverReloadAllowed>false</DriverReloadAllowed>
<Frequency>60</Frequency>
<ImmersiveGaming>true</ImmersiveGaming>
<Resolution>
<Width>1920</Width>
<Height>1080</Height>
</Resolution>
<Rows>1</Rows>
</SurroundTopology>
</PathTarget>
</Targets>
</Path>
</Paths>
</Profile>
<Profile>
<Name>array</Name>
<Paths>
<Path>
<PixelFormat>PixelFormat32Bpp</PixelFormat>
<Position>
<X>0</X>
<Y>0</Y>
</Position>
<Resolution>
<Width>2560</Width>
<Height>1440</Height>
</Resolution>
<SourceId>0</SourceId>
<Targets>
<PathTarget>
<DevicePath>\\?\DISPLAY#ACR0408#5&amp;135d46b0&amp;2&amp;UID4356</DevicePath>
<DisplayName>XB270HU</DisplayName>
<FrequencyInMillihertz>60000</FrequencyInMillihertz>
<Rotation>Identity</Rotation>
<Scaling>Identity</Scaling>
<ScanLineOrdering>Progressive</ScanLineOrdering>
</PathTarget>
</Targets>
</Path>
<Path>
<PixelFormat>PixelFormat32Bpp</PixelFormat>
<Position>
<X>2262</X>
<Y>-1080</Y>
</Position>
<Resolution>
<Width>1920</Width>
<Height>1080</Height>
</Resolution>
<SourceId>0</SourceId>
<Targets>
<PathTarget>
<DevicePath>\\?\DISPLAY#DELA0A4#4&amp;acfa790&amp;4&amp;UID206371</DevicePath>
<DisplayName>DELL U2414H</DisplayName>
<FrequencyInMillihertz>60000</FrequencyInMillihertz>
<Rotation>Identity</Rotation>
<Scaling>Identity</Scaling>
<ScanLineOrdering>Progressive</ScanLineOrdering>
</PathTarget>
</Targets>
</Path>
<Path>
<PixelFormat>PixelFormat32Bpp</PixelFormat>
<Position>
<X>-1920</X>
<Y>208</Y>
</Position>
<Resolution>
<Width>1920</Width>
<Height>1080</Height>
</Resolution>
<SourceId>1</SourceId>
<Targets>
<PathTarget>
<DevicePath>\\?\DISPLAY#DELA0A2#5&amp;135d46b0&amp;2&amp;UID4608</DevicePath>
<DisplayName>DELL U2414H</DisplayName>
<FrequencyInMillihertz>60000</FrequencyInMillihertz>
<Rotation>Identity</Rotation>
<Scaling>Identity</Scaling>
<ScanLineOrdering>Progressive</ScanLineOrdering>
</PathTarget>
</Targets>
</Path>
<Path>
<PixelFormat>PixelFormat32Bpp</PixelFormat>
<Position>
<X>342</X>
<Y>-1080</Y>
</Position>
<Resolution>
<Width>1920</Width>
<Height>1080</Height>
</Resolution>
<SourceId>2</SourceId>
<Targets>
<PathTarget>
<DevicePath>\\?\DISPLAY#DELA0A2#5&amp;135d46b0&amp;2&amp;UID4610</DevicePath>
<DisplayName>DELL U2414H</DisplayName>
<FrequencyInMillihertz>60000</FrequencyInMillihertz>
<Rotation>Identity</Rotation>
<Scaling>Identity</Scaling>
<ScanLineOrdering>Progressive</ScanLineOrdering>
</PathTarget>
</Targets>
</Path>
<Path>
<PixelFormat>PixelFormat32Bpp</PixelFormat>
<Position>
<X>2560</X>
<Y>0</Y>
</Position>
<Resolution>
<Width>1920</Width>
<Height>1080</Height>
</Resolution>
<SourceId>3</SourceId>
<Targets>
<PathTarget>
<DevicePath>\\?\DISPLAY#DELA0A2#5&amp;135d46b0&amp;2&amp;UID4612</DevicePath>
<DisplayName>DELL U2414H</DisplayName>
<FrequencyInMillihertz>60000</FrequencyInMillihertz>
<Rotation>Identity</Rotation>
<Scaling>Identity</Scaling>
<ScanLineOrdering>Progressive</ScanLineOrdering>
</PathTarget>
</Targets>
</Path>
</Paths>
</Profile>
</ArrayOfProfile>
@bodnjenie
Copy link

works brill thanks man

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment