private static void Cleanup() { if (defaultInstance != null) { defaultInstance.Dispose(); defaultInstance = null; } if (debugInstance != null) { debugInstance.Dispose(); debugInstance = null; } }
/// <summary> /// Gets the <see cref="GraphicsAdapterFactoryInstance"/> used by all GraphicsAdapter. /// </summary> internal static GraphicsAdapterFactoryInstance GetInstance(bool enableValidation) { lock (StaticLock) { Initialize(); if (enableValidation) { return(debugInstance ?? (debugInstance = new GraphicsAdapterFactoryInstance(true))); } else { return(defaultInstance); } } }
/// <summary> /// Initializes all adapters with the specified factory. /// </summary> internal static void InitializeInternal() { // Create the default instance to enumerate physical devices defaultInstance = new GraphicsAdapterFactoryInstance(false); var nativePhysicalDevices = defaultInstance.NativeInstance.PhysicalDevices; var adapterList = new List <GraphicsAdapter>(); for (int i = 0; i < nativePhysicalDevices.Length; i++) { var adapter = new GraphicsAdapter(nativePhysicalDevices[i], i); staticCollector.Add(adapter); adapterList.Add(adapter); } defaultAdapter = adapterList.Count > 0 ? adapterList[0] : null; adapters = adapterList.ToArray(); staticCollector.Add(new AnonymousDisposable(Cleanup)); }