新しい低レベル 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