/// <summary> /// Enumerates available D3D adapters, devices, modes, etc. /// </summary> public void Enumerate() { foreach (AdapterInformation ai in Manager.Adapters) { ArrayList adapterFormatList = new ArrayList(); GraphicsAdapterInfo adapterInfo = new GraphicsAdapterInfo(); adapterInfo.AdapterOrdinal = ai.Adapter; adapterInfo.AdapterDetails = ai.Information; // Get list of all display modes on this adapter. // Also build a temporary list of all display adapter formats. foreach (DisplayMode displayMode in ai.SupportedDisplayModes) { if (displayMode.Width < AppMinFullscreenWidth) { continue; } if (displayMode.Height < AppMinFullscreenHeight) { continue; } if (GraphicsUtility.GetColorChannelBits(displayMode.Format) < AppMinColorChannelBits) { continue; } adapterInfo.DisplayModeList.Add(displayMode); if (!adapterFormatList.Contains(displayMode.Format)) { adapterFormatList.Add(displayMode.Format); } } // Sort displaymode list DisplayModeComparer dmc = new DisplayModeComparer(); adapterInfo.DisplayModeList.Sort(dmc); // Get info for each device on this adapter EnumerateDevices(adapterInfo, adapterFormatList); // If at least one device on this adapter is available and compatible // with the app, add the adapterInfo to the list if (adapterInfo.DeviceInfoList.Count == 0) { continue; } AdapterInfoList.Add(adapterInfo); } }
private static IEnumerable <string> ContentStyles(IPortalViewContext portalViewContext, SiteMapNode node, IDictionary <string, object> cache, IEnumerable <string> except, IEnumerable <KeyValuePair <string, string> > only) { var styles = ContentStyles(portalViewContext, node, cache).ToArray(); string[] allDisplayModes; string[] availableDisplayModes; if (TryGetDisplayModes(out allDisplayModes, out availableDisplayModes)) { var partialUrlTrie = new FileNameTrie(styles); var displayModeComparer = new DisplayModeComparer(availableDisplayModes); var groups = GetDisplayModeFileGroups(partialUrlTrie, allDisplayModes); if (only != null) { return(only.Select(o => { var extensionless = Path.GetFileNameWithoutExtension(o.Key); var matchGroup = groups.FirstOrDefault(s => string.Equals(s.Prefix, extensionless, StringComparison.OrdinalIgnoreCase)); if (matchGroup == null) { return o.Value; } var file = matchGroup.Where(f => availableDisplayModes.Contains(f.DisplayModeId)) .OrderBy(f => f, displayModeComparer) .FirstOrDefault(); return file == null ? o.Value : file.Name.Item1; })); } if (except != null) { return(groups .Where(group => !except.Any(e => string.Equals(Path.GetFileNameWithoutExtension(e), group.Prefix, StringComparison.OrdinalIgnoreCase))) .Select(group => group.Where(f => availableDisplayModes.Contains(f.DisplayModeId)) .OrderBy(f => f, displayModeComparer) .FirstOrDefault()) .Where(f => f != null) .Select(f => f.Name.Item1)); } return(groups .Select(group => group.Where(f => availableDisplayModes.Contains(f.DisplayModeId)) .OrderBy(f => f, displayModeComparer) .FirstOrDefault()) .Where(f => f != null) .Select(f => f.Name.Item1)); } if (only != null) { return(only.Select(o => { var match = styles.FirstOrDefault(s => string.Equals(s.Item2, o.Key, StringComparison.InvariantCultureIgnoreCase)); return match == null ? o.Value : match.Item1; })); } if (except != null) { return(styles .Where(s => !except.Any(e => string.Equals(e, s.Item2, StringComparison.InvariantCultureIgnoreCase))) .Select(s => s.Item1)); } return(styles.Select(s => s.Item1)); }
/// <summary> /// Enumerates available D3D adapters, devices, modes, etc. /// </summary> public void Enumerate() { foreach (AdapterInformation ai in Manager.Adapters) { ArrayList adapterFormatList = new ArrayList(); GraphicsAdapterInfo adapterInfo = new GraphicsAdapterInfo(); adapterInfo.AdapterOrdinal = ai.Adapter; adapterInfo.AdapterDetails = ai.Information; // Get list of all display modes on this adapter. // Also build a temporary list of all display adapter formats. foreach (DisplayMode displayMode in ai.SupportedDisplayModes) { if (displayMode.Width < AppMinFullscreenWidth) continue; if (displayMode.Height < AppMinFullscreenHeight) continue; if (GraphicsUtility.GetColorChannelBits(displayMode.Format) < AppMinColorChannelBits) continue; adapterInfo.DisplayModeList.Add(displayMode); if (!adapterFormatList.Contains(displayMode.Format)) adapterFormatList.Add(displayMode.Format); } // Sort displaymode list DisplayModeComparer dmc = new DisplayModeComparer(); adapterInfo.DisplayModeList.Sort(dmc); // Get info for each device on this adapter EnumerateDevices(adapterInfo, adapterFormatList); // If at least one device on this adapter is available and compatible // with the app, add the adapterInfo to the list if (adapterInfo.DeviceInfoList.Count == 0) continue; AdapterInfoList.Add(adapterInfo); } }