コード例 #1
0
ファイル: InstanceInfo.cs プロジェクト: LibVega/VVK
        /// <summary>
        /// Gets the highest API version supported by the current system.
        /// </summary>
        public static VkVersion GetApiVersion()
        {
            uint version = 0;

            InstanceFunctionTable.EnumerateInstanceVersion(&version).Throw("EnumerateInstanceVersion");
            return(new VkVersion(version));
        }
コード例 #2
0
ファイル: InstanceInfo.cs プロジェクト: LibVega/VVK
        /// <summary>
        /// Gets the instance extensions supported by the current system.
        /// </summary>
        /// <param name="layerName">The optional layer name in which to look for extensions.</param>
        public static VkExtensionProperties[] GetExtensions(string?layerName)
        {
            uint count = 0;

            VkExtensionProperties[] props;

            if (layerName is not null)
            {
                using var nativeName = new NativeString(layerName);
                InstanceFunctionTable.EnumerateInstanceExtensionProperties(nativeName.Data, &count, null)
                .Throw("EnumerateInstanceExtensionProperties");
                props = new VkExtensionProperties[count];
                fixed(VkExtensionProperties *ptr = props)
                {
                    InstanceFunctionTable.EnumerateInstanceExtensionProperties(nativeName.Data, &count, ptr)
                    .Throw("EnumerateInstanceExtensionProperties");
                }
            }
            else
            {
                InstanceFunctionTable.EnumerateInstanceExtensionProperties(null, &count, null)
                .Throw("EnumerateInstanceExtensionProperties");
                props = new VkExtensionProperties[count];
                fixed(VkExtensionProperties *ptr = props)
                {
                    InstanceFunctionTable.EnumerateInstanceExtensionProperties(null, &count, ptr)
                    .Throw("EnumerateInstanceExtensionProperties");
                }
            }

            return(props);
        }
コード例 #3
0
ファイル: InstanceInfo.cs プロジェクト: LibVega/VVK
        /// <summary>
        /// Gets the debug layers supported by the current system.
        /// </summary>
        public static VkLayerProperties[] GetLayers()
        {
            uint count = 0;

            InstanceFunctionTable.EnumerateInstanceLayerProperties(&count, null)
            .Throw("EnumerateInstanceExtensionProperties");
            var props = new VkLayerProperties[count];

            fixed(VkLayerProperties *ptr = props)
            {
                InstanceFunctionTable.EnumerateInstanceLayerProperties(&count, ptr)
                .Throw("EnumerateInstanceExtensionProperties");
            }

            return(props);
        }