13个版本 (8个破坏性更新)
使用旧的Rust 2015
0.21.0 | 2017年10月15日 |
---|---|
0.19.1 | 2017年7月1日 |
#606 在 图形API 中
每月32次下载
在 6 个 库中使用 (3个直接使用)
1MB
9K SLoC
vks
Rust的Vulkan FFI绑定和符号加载器
最新支持的Vulkan规范:1.0.59 + 所有扩展
如果你正在寻找一个安全且更类似Rust的接口,请查看dacite项目。
用法
Vks可在crates.io上获取。将其添加到你的Cargo.toml
[dependencies]
vks = "0.21"
Windows
在Windows上,链接vks需要vulkan-1.lib
,如果启用了功能function_prototypes
。确保环境变量VULKAN_SDK
指向LunarG Vulkan SDK的根目录。如果你使用Vulkan SDK安装程序,这是默认设置。
Cargo功能
function_prototypes
功能
启用此功能会导致包括所有函数定义。在这种情况下,需要链接到Vulkan(libvulkan.so.1或
vulkan-1.dll
)。
建议不要使用此功能,而是动态地在运行时加载Vulkan库并获取符号vkGetInstanceProcAddr
。仅使用此符号,您就可以使用InstanceProcAddrLoader
(以及通过扩展DeviceProcAddrLoader
)来加载所有剩余的函数指针。
experimental
功能
Vks包括对实验性Vulkan扩展的支持(通过前缀KHX
或类似项识别),但通过功能进行限制。原因是这些扩展可能会以向后不兼容的方式进行更改,甚至在未来的Vulkan版本中删除。
请注意,如果使用此功能,vks的更新可能会破坏你的代码。在语义版本控制要求方面,此功能之后的所有内容都将被忽略。
您不应该发送依赖这些扩展或使用 实验性
特性的代码。
加载器
Vks 包含两个方便的 Vulkan 符号加载器: InstanceProcAddrLoader
和 DeviceProcAddrLoader
。两者都支持所有可用的核心 Vulkan 函数以及扩展函数指针。
支持扩展
KHR
扩展
扩展 | 修订版 |
---|---|
VK_KHR_16bit_storage |
1 |
VK_KHR_android_surface |
6 |
VK_KHR_dedicated_allocation |
3 |
VK_KHR_descriptor_update_template |
1 |
VK_KHR_display_swapchain |
9 |
VK_KHR_display |
21 |
VK_KHR_external_fence_capabilities |
1 |
VK_KHR_external_fence_fd |
1 |
VK_KHR_external_fence_win32 |
1 |
VK_KHR_external_fence |
1 |
VK_KHR_external_memory_capabilities |
1 |
VK_KHR_external_memory_fd |
1 |
VK_KHR_external_memory_win32 |
1 |
VK_KHR_external_memory |
1 |
VK_KHR_external_semaphore_capabilities |
1 |
VK_KHR_external_semaphore_fd |
1 |
VK_KHR_external_semaphore_win32 |
1 |
VK_KHR_external_semaphore |
1 |
VK_KHR_get_memory_requirements2 |
1 |
VK_KHR_get_physical_device_properties2 |
1 |
VK_KHR_get_surface_capabilities2 |
1 |
VK_KHR_incremental_present |
1 |
VK_KHR_maintenance1 |
1 |
VK_KHR_mir_surface |
4 |
VK_KHR_push_descriptor |
1 |
VK_KHR_relaxed_block_layout |
1 |
VK_KHR_sampler_mirror_clamp_to_edge |
1 |
VK_KHR_shader_draw_parameters |
1 |
VK_KHR_shared_presentable_image |
1 |
VK_KHR_storage_buffer_storage_class |
1 |
VK_KHR_surface |
25 |
VK_KHR_swapchain |
68 |
VK_KHR_variable_pointers |
1 |
VK_KHR_wayland_surface |
6 |
VK_KHR_win32_keyed_mutex |
1 |
VK_KHR_win32_surface |
6 |
VK_KHR_xcb_surface |
6 |
VK_KHR_xlib_surface |
6 |
EXT
扩展
扩展 | 修订版 |
---|---|
VK_EXT_acquire_xlib_display |
1 |
VK_EXT_blend_operation_advanced |
2 |
VK_EXT_debug_marker |
4 |
VK_EXT_debug_report |
8 |
VK_EXT_depth_range_unrestricted |
1 |
VK_EXT_direct_mode_display |
1 |
VK_EXT_discard_rectangles |
1 |
VK_EXT_display_control |
1 |
VK_EXT_display_surface_counter |
1 |
VK_EXT_hdr_metadata |
1 |
VK_EXT_post_depth_coverage |
1 |
VK_EXT_sampler_filter_minmax |
1 |
VK_EXT_shader_stencil_export |
1 |
VK_EXT_shader_subgroup_ballot |
1 |
VK_EXT_shader_subgroup_vote |
1 |
VK_EXT_shader_viewport_index_layer |
1 |
VK_EXT_swapchain_colorspace |
3 |
VK_EXT_validation_flags |
1 |
AMD
扩展
扩展 | 修订版 |
---|---|
VK_AMD_draw_indirect_count |
1 |
VK_AMD_gcn_shader |
1 |
VK_AMD_gpu_shader_half_float |
1 |
VK_AMD_gpu_shader_int16 |
1 |
VK_AMD_mixed_attachment_samples |
1 |
VK_AMD_negative_viewport_height |
1 |
VK_AMD_rasterization_order |
1 |
VK_AMD_shader_ballot |
1 |
VK_AMD_shader_explicit_vertex_parameter |
1 |
VK_AMD_shader_trinary_minmax |
1 |
VK_AMD_texture_gather_bias_lod |
1 |
GOOGLE
扩展
扩展 | 修订版 |
---|---|
VK_GOOGLE_display_timing |
1 |
IMG
扩展
扩展 | 修订版 |
---|---|
VK_IMG_filter_cubic |
1 |
VK_IMG_format_pvrtc |
1 |
MVK
扩展
扩展 | 修订版 |
---|---|
VK_MVK_ios_surface |
2 |
VK_MVK_macos_surface |
2 |
NN
扩展
扩展 | 修订版 |
---|---|
VK_NN_vi_surface |
1 |
NV
扩展
扩展 | 修订版 |
---|---|
VK_NV_clip_space_w_scaling |
1 |
VK_NV_dedicated_allocation |
1 |
VK_NV_external_memory_capabilities |
1 |
VK_NV_external_memory_win32 |
1 |
VK_NV_external_memory |
1 |
VK_NV_fill_rectangle |
1 |
VK_NV_fragment_coverage_to_color |
1 |
VK_NV_framebuffer_mixed_samples |
1 |
VK_NV_geometry_shader_passthrough |
1 |
VK_NV_glsl_shader |
1 |
VK_NV_sample_mask_override_coverage |
1 |
VK_NV_viewport_array2 |
1 |
VK_NV_viewport_swizzle |
1 |
VK_NV_win32_keyed_mutex |
1 |
KHX
扩展
您必须启用 实验性
特性才能使用这些扩展。
扩展 | 修订版 |
---|---|
VK_KHX_device_group_creation |
1 |
VK_KHX_device_group |
1 |
VK_KHX_multiview |
1 |
NVX
扩展
您必须启用 实验性
特性才能使用这些扩展。
扩展 | 修订版 |
---|---|
VK_NVX_device_generated_commands |
3 |
VK_NVX_multiview_per_view_attributes |
1 |
许可证
Vks 是在 ISC 许可证下授权的
Copyright (c) 2017, Dennis Hamester <[email protected]>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.