2016/02/18
低レベル Graphics API Vulkan 登場
新しい低レベル API Vulkan がリリースされました。
・Khronos Releases Vulkan 1.0 Specification
これでようやく各プラットフォームの API が出揃ったことになります。対応は下記の通り。
Vulkan 最大の特徴は Platform の枠を超えて利用できることです。Android, Linux だけでなく Windows でも動作します。
Windows にはすでに DirectX12 がありますが Windows 10 以降が必須となっています。Windows 7 でも使える Vulkan は Windows 環境でも十分魅力的に映るかもしれません。
すでに Beta 版ドライバが公開されているため、比較的すぐに試してみることができます。
現時点で対応している GPU は下記の通り。(分かる範囲のみ)
GCN すべてに対応しているかどうかは未確認です。
Mobile GPU の場合 Vulkan に対応できるのは、予想通り OpenGL ES 3.1 以降になるようです。
Intel HD Graphics と低レベル API の対応
Vulkan が動いているかどうかは vulkaninfo コマンドで調べることができます。
GeForce の場合 driver と同時にコマンドも install されました。
下記は GeForce GTX 960 の抜粋です。
ヘッダファイルやツール類は Open Source として GitHub からダウンロードする形になるようです。
Vulkan-LoaderAndValidationLayers に含まれています。
・GitHub: The Khronos Group
ビルドもできます。build には cmake と Python3 が必要。例えば glslang の場合下記の通り。
関連エントリ
・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
・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 に含まれています。
・GitHub: The Khronos Group
ビルドもできます。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
NVIDIA SHIELD Android TV はすでに OpenGL ES 3.2 の Context に対応していることがわかりました。
OpenGL ES 3.2 は ES 3.1 AEP が取り込まれており D3D11/OpenGL 4.x 相当の API となります。Android SDK が 3.2 に対応していないので現状ではあまり意味はありませんが、Desktop と共通のドライバが使われていることが読み取れます。
下記は Tegra K1 (Nexus 9 Driver 343.00) から追加された Extension です。
↑ GL_NV_conservative_raster や GL_NV_fragment_shader_interlock など、Maxwell GM2xx で追加された D3D12 相当の機能も見えます。(参考)
↓ 他にも K1 との違いとして fp16 対応があります。
詳細は下記に追加しました。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
公式サイトには Tegra X1 の CPU clock が載っていませんが、調べた限りでは 2.0GHz でした。ただし VFP Benchmark の実測では 2.1GHz 相当なので TB のような機能が働いているものと思われます。
・VFP Benchmark Log
関連エントリ
・Direct3D 12 GeForce GTX970 は FeatureLevel 12_1 対応、Resource Bind/Heap Tier は低い
・NVIDIA SHIELD Tablet Tegra K1 は OpenGL ES 3.1 で Extension Pack 対応
Android 5.1 Tegra X1 Maxwell (256) GL_VERSION: OpenGL ES 3.2 NVIDIA 349.00 GL_RENDERER: NVIDIA Tegra GL_VENDOR: NVIDIA Corporation GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.20
OpenGL ES 3.2 は ES 3.1 AEP が取り込まれており D3D11/OpenGL 4.x 相当の API となります。Android SDK が 3.2 に対応していないので現状ではあまり意味はありませんが、Desktop と共通のドライバが使われていることが読み取れます。
下記は Tegra K1 (Nexus 9 Driver 343.00) から追加された Extension です。
GL_EXT_discard_framebuffer GL_EXT_draw_elements_base_vertex GL_EXT_multi_draw_indirect GL_EXT_post_depth_coverage GL_EXT_raster_multisample GL_EXT_shader_texture_lod GL_KHR_context_flush_control GL_KHR_robust_buffer_access_behavior GL_KHR_robustness GL_NV_conditional_render GL_NV_conservative_raster GL_NV_fill_rectangle GL_NV_fragment_coverage_to_color GL_NV_fragment_shader_interlock GL_NV_framebuffer_mixed_samples GL_NV_geometry_shader_passthrough GL_NV_path_rendering_shared_edge GL_NV_polygon_mode GL_NV_sample_locations GL_NV_sample_mask_override_coverage GL_NV_shader_noperspective_interpolation GL_NV_viewport_array GL_NV_viewport_array2 GL_OES_copy_image GL_OES_draw_buffers_indexed GL_OES_draw_elements_base_vertex GL_OES_texture_border_clamp GL_OES_tessellation_point_size GL_OES_tessellation_shader GL_OES_texture_buffer GL_OES_geometry_point_size GL_OES_geometry_shader GL_OES_gpu_shader5 GL_OES_shader_io_blocks GL_OES_texture_view GL_OES_primitive_bounding_box GL_OES_texture_cube_map_array
↑ GL_NV_conservative_raster や GL_NV_fragment_shader_interlock など、Maxwell GM2xx で追加された D3D12 相当の機能も見えます。(参考)
↓ 他にも K1 との違いとして fp16 対応があります。
Precision: 0: [15 15] 10 VS float lowp 1: [15 15] 10 VS float mediump 2: [127 127] 23 VS float highp 3: [31 30] 0 VS int lowp 4: [31 30] 0 VS int mediump 5: [31 30] 0 VS int highp 6: [15 15] 10 FS float lowp 7: [15 15] 10 FS float mediump 8: [127 127] 23 FS float highp 9: [31 30] 0 FS int lowp 10: [31 30] 0 FS int mediump 11: [31 30] 0 FS int highp
詳細は下記に追加しました。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
公式サイトには Tegra X1 の CPU clock が載っていませんが、調べた限りでは 2.0GHz でした。ただし VFP Benchmark の実測では 2.1GHz 相当なので TB のような機能が働いているものと思われます。
・VFP Benchmark Log
関連エントリ
・Direct3D 12 GeForce GTX970 は FeatureLevel 12_1 対応、Resource Bind/Heap Tier は低い
・NVIDIA SHIELD Tablet Tegra K1 は OpenGL ES 3.1 で Extension Pack 対応