#vulkan-bindings #vulkan-graphics #vulkan #graphics #ffi #no-std

sys no-std vks

Vulkan FFI绑定和符号加载器。支持Vulkan 1.0.59及所有扩展。

13个版本 (8个破坏性更新)

使用旧的Rust 2015

0.21.0 2017年10月15日
0.19.1 2017年7月1日

#606图形API

每月32次下载
6 库中使用 (3个直接使用)

ISC 许可证

1MB
9K SLoC

vks

Rust的Vulkan FFI绑定和符号加载器

最新支持的Vulkan规范:1.0.59 + 所有扩展

如果你正在寻找一个安全且更类似Rust的接口,请查看dacite项目。

build status vks on crates.io vks on docs.rs vks license

用法

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.1vulkan-1.dll)。

建议不要使用此功能,而是动态地在运行时加载Vulkan库并获取符号vkGetInstanceProcAddr。仅使用此符号,您就可以使用InstanceProcAddrLoader(以及通过扩展DeviceProcAddrLoader)来加载所有剩余的函数指针。

experimental功能

Vks包括对实验性Vulkan扩展的支持(通过前缀KHX或类似项识别),但通过功能进行限制。原因是这些扩展可能会以向后不兼容的方式进行更改,甚至在未来的Vulkan版本中删除。

请注意,如果使用此功能,vks的更新可能会破坏你的代码。在语义版本控制要求方面,此功能之后的所有内容都将被忽略。

您不应该发送依赖这些扩展或使用 实验性 特性的代码。

加载器

Vks 包含两个方便的 Vulkan 符号加载器: InstanceProcAddrLoaderDeviceProcAddrLoader。两者都支持所有可用的核心 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.

依赖关系