新しい低レベル API Vulkan がリリースされました。
・Khronos Releases Vulkan 1.0 Specification
これでようやく各プラットフォームの API が出揃ったことになります。対応は下記の通り。
Desktop Mobile ------------------------------------------------- Metal OS X iOS Direct3D 12 Windows 10 Vulkan Windows 7~, Linux Android
Vulkan 最大の特徴は Platform の枠を超えて利用できることです。Android, Linux だけでなく Windows でも動作します。
Windows にはすでに DirectX12 がありますが Windows 10 以降が必須となっています。Windows 7 でも使える Vulkan は Windows 環境でも十分魅力的に映るかもしれません。
すでに Beta 版ドライバが公開されているため、比較的すぐに試してみることができます。
現時点で対応している GPU は下記の通り。(分かる範囲のみ)
GeForce Kepler/Maxwell Windows, Linux, Android RADEON GCN Windows Intel HD Graphics Gen8~ Linux
GCN すべてに対応しているかどうかは未確認です。
Mobile GPU の場合 Vulkan に対応できるのは、予想通り OpenGL ES 3.1 以降になるようです。
Intel HD Graphics と低レベル API の対応
Metal Intel HD Graphics Gen 7~ Ivy Bridge 以降 Direct3D 12 Intel HD Graphics Gen 7.5~ Haswell 以降 Vulkan Intel HD Graphics Gen 8~ Broadwell 以降
Vulkan が動いているかどうかは vulkaninfo コマンドで調べることができます。
GeForce の場合 driver と同時にコマンドも install されました。
下記は GeForce GTX 960 の抜粋です。
=========== VULKAN INFO =========== Vulkan API Version: 1.0.3 ~ VkPhysicalDeviceFeatures: ========================= robustBufferAccess = 1 fullDrawIndexUint32 = 1 imageCubeArray = 1 independentBlend = 1 geometryShader = 1 tessellationShader = 1 sampleRateShading = 1 dualSrcBlend = 1 logicOp = 1 multiDrawIndirect = 1 drawIndirectFirstInstance = 1 depthClamp = 1 depthBiasClamp = 1 fillModeNonSolid = 1 depthBounds = 1 wideLines = 1 largePoints = 1 textureCompressionETC2 = 0 textureCompressionASTC_LDR = 0 textureCompressionBC = 1 occlusionQueryPrecise = 1 pipelineStatisticsQuery = 1 vertexSideEffects = 1 tessellationSideEffects = 1 geometrySideEffects = 1 shaderImageGatherExtended = 1 shaderStorageImageExtendedFormats = 1 shaderStorageImageMultisample = 1 shaderStorageImageReadWithoutFormat = 1 shaderStorageImageWriteWithoutFormat = 1 shaderUniformBufferArrayDynamicIndexing = 1 shaderSampledImageArrayDynamicIndexing = 1 shaderStorageBufferArrayDynamicIndexing = 1 shaderStorageImageArrayDynamicIndexing = 1 shaderClipDistance = 1 shaderCullDistance = 1 shaderFloat64 = 1 shaderInt64 = 1 shaderInt16 = 0 shaderResourceResidency = 1 shaderResourceMinLod = 1 alphaToOne = 1 sparseBinding = 1 sparseResidencyBuffer = 1 sparseResidencyImage2D = 1 sparseResidencyImage3D = 1 sparseResidency2Samples = 1 sparseResidency4Samples = 1 sparseResidency8Samples = 1 sparseResidency16Samples = 1 sparseResidencyAliased = 1 variableMultisampleRate = 1 iheritedQueries = 1 ~
ヘッダファイルやツール類は Open Source として GitHub からダウンロードする形になるようです。
Vulkan-LoaderAndValidationLayers に含まれています。
ビルドもできます。build には cmake と Python3 が必要。例えば glslang の場合下記の通り。
cd glslang mkdir build cd build cmake .. -G "Visual Studio 14 Win64" start glslang.sln
関連エントリ
・AEP を取り込んだ OpenGL ES 3.2 は機能面で Desktop に並ぶ, Android は Vulkan へ
・3D 低レベル API の現状 Direct3D 12/Metal
・CPU 負荷が低い 新しい 3D API
関連ページ
・3D Low overhead API (Low Level API) Metal/D3D12/Vulkan
ついに!変化の始まりですね!
普及を待たないといけない僕が使うのはまだまだ先になりそうだけど。
最後発だけあって全部入りになっているようです。
ベータドライバの公開など思ったよりも動きが早いですね。