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);
        }
示例#2
0
        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,
                    },
                },
            });
        }