public void Initialize(uint width, uint height) { // FOR RESIZING ?? ReleaseUnmanagedResources(); // GRAPHICS DEVICE mPresentationSurface.Initialize(width, height); mLogicalDevice = mDriverContext.CreateLogicalDevice( mPresentationSurface.Surface, MgDeviceExtensionOptions.ALL, MgQueueAllocation.One, MgQueueFlagBits.GRAPHICS_BIT | MgQueueFlagBits.COMPUTE_BIT); mPartition = mLogicalDevice.Queues[0].CreatePartition(MgCommandPoolCreateFlagBits.RESET_COMMAND_BUFFER_BIT); }
public MgGraphicsConfiguration(Magnesium.MgDriver driver, Magnesium.IMgPresentationSurface presentationSurface) { mDriver = driver; var errorCode = mDriver.Initialize( new Magnesium.MgApplicationInfo { ApplicationName = "MetalSample", EngineName = "Magnesium", ApplicationVersion = 1, EngineVersion = 1, ApiVersion = Magnesium.MgApplicationInfo.GenerateApiVersion(1, 0, 17), }, Magnesium.MgInstanceExtensionOptions.ALL ); if (errorCode != Result.SUCCESS) { throw new InvalidOperationException("Metal is not supported on this device : " + errorCode); } // WINDOW HOOK mPresentationSurface = presentationSurface; presentationSurface.Initialize(); LogicalDevice = mDriver.CreateLogicalDevice(presentationSurface.Surface, Magnesium.MgDeviceExtensionOptions.ALL); Partition = LogicalDevice.Queues[0].CreatePartition( MgCommandPoolCreateFlagBits.RESET_COMMAND_BUFFER_BIT, new Magnesium.MgDescriptorPoolCreateInfo { MaxSets = 1, PoolSizes = new MgDescriptorPoolSize[] { new MgDescriptorPoolSize { DescriptorCount = 1, Type = MgDescriptorType.COMBINED_IMAGE_SAMPLER, }, }, }); }