18 个版本
0.1.17 | 2023 年 5 月 1 日 |
---|---|
0.1.16 | 2023 年 4 月 30 日 |
#62 在 渲染
用于 2 crate
1MB
17K SLoC
vulk
vulk
是一个高度实验性的 Vulkan 绑定库,除了只包括最新的特性和扩展,如光线追踪、网格着色器、描述符缓冲区、着色器对象等。当一个新的 Vulkan 扩展完全取代了一个功能时,vulk
将不会保持向后兼容性。例如,在 vulk
中,您不能使用顶点着色器,因为网格着色器是所有几何阶段的超集。
vulk
的设计灵感来自 ash
,这也是您应该用于生产用例而不是 vulk
的原因。
目前,唯一支持的驱动程序是 2023 年 4 月 27 日的最新 NVIDIA 驱动程序。
lib.rs
:
vulk
命令
初始化
vk::GetInstanceProcAddr
返回一个命令的函数指针vk::GetDeviceProcAddr
返回一个命令的函数指针vk::CreateInstance
创建一个新的 Vulkan 实例vk::DestroyInstance
销毁一个 Vulkan 实例
设备和队列
vk::EnumeratePhysicalDevices
列出 Vulkan 实例可访问的物理设备vk::GetPhysicalDeviceProperties2
返回物理设备的属性vk::GetPhysicalDeviceQueueFamilyProperties2
报告指定物理设备队列的属性vk::CreateDevice
创建新的设备实例vk::DestroyDevice
销毁逻辑设备vk::GetDeviceQueue2
从设备获取队列句柄
命令缓冲区
vk::CreateCommandPool
创建新的命令池对象vk::ResetCommandPool
重置命令池vk::DestroyCommandPool
销毁命令池对象vk::AllocateCommandBuffers
从现有命令池分配命令缓冲区vk::ResetCommandBuffer
将命令缓冲区重置到初始状态vk::FreeCommandBuffers
释放命令缓冲区vk::BeginCommandBuffer
开始记录命令缓冲区vk::EndCommandBuffer
完成记录命令缓冲区vk::QueueSubmit2
将命令缓冲区提交到队列
同步和缓存控制
vk::CreateSemaphore
创建新的队列信号量对象vk::DestroySemaphore
销毁信号量对象vk::GetSemaphoreCounterValue
查询时间线信号量的当前状态vk::WaitSemaphores
在主机上等待时间线信号量vk::SignalSemaphore
在主机上发出时间线信号量vk::CmdPipelineBarrier2
插入内存依赖vk::QueueWaitIdle
等待队列变为空闲vk::DeviceWaitIdle
等待设备变为空闲vk::GetCalibratedTimestampsEXT
查询校准时间戳
渲染通道
vk::CmdBeginRendering
开始动态渲染通道实例vk::CmdEndRendering
结束动态渲染通道实例
着色器
vk::CreateShadersEXT
创建一个或多个新的着色器vk::CmdBindShadersEXT
将着色器对象绑定到命令缓冲区vk::DestroyShaderEXT
销毁着色器对象vk::CreateShaderModule
创建一个新的着色器模块对象vk::DestroyShaderModule
销毁着色器模块
管道
vk::CreateRayTracingPipelinesKHR
创建一个新的光线追踪管道对象vk::GetRayTracingShaderGroupHandlesKHR
查询光线追踪管道着色器组句柄vk::DestroyPipeline
销毁管道对象vk::CmdBindPipeline
将管道对象绑定到命令缓冲区
内存分配
vk::GetPhysicalDeviceMemoryProperties2
报告指定物理设备的内存信息vk::AllocateMemory
分配设备内存vk::FreeMemory
释放设备内存vk::MapMemory2KHR
将内存对象映射到应用程序地址空间vk::UnmapMemory2KHR
解除之前映射的内存对象
资源创建
vk::CreateBuffer
创建一个新的缓冲区对象vk::DestroyBuffer
销毁缓冲区对象vk::CreateImage
创建一个新的图像对象vk::DestroyImage
销毁图像对象vk::CreateImageView
从现有的图像创建图像视图vk::DestroyImageView
销毁图像视图对象vk::CreateAccelerationStructureKHR
创建一个新的加速结构对象vk::GetAccelerationStructureBuildSizesKHR
获取加速结构的所需大小vk::DestroyAccelerationStructureKHR
销毁加速结构对象vk::GetAccelerationStructureDeviceAddressKHR
查询加速结构的地址vk::GetDeviceBufferMemoryRequirements
返回指定Vulkan对象的内存需求vk::GetDeviceImageMemoryRequirements
返回指定Vulkan对象的内存需求vk::BindBufferMemory2
将设备内存绑定到缓冲区对象vk::BindImageMemory2
将设备内存绑定到图像对象
采样器
vk::CreateSampler
创建一个新的采样器对象vk::DestroySampler
销毁采样器对象
资源描述符
vk::CreateDescriptorSetLayout
创建一个新的描述符集布局vk::DestroyDescriptorSetLayout
销毁描述符集布局对象vk::CreatePipelineLayout
创建一个新的管线布局对象vk::DestroyPipelineLayout
销毁管线布局对象vk::CmdPushConstants
更新推送常量的值vk::GetBufferDeviceAddress
查询缓冲区的地址vk::GetDescriptorSetLayoutSizeEXT
获取描述符集布局在内存中的大小vk::GetDescriptorSetLayoutBindingOffsetEXT
获取描述符集布局中绑定的偏移量vk::GetDescriptorEXT
获取要放入缓冲区的描述符vk::CmdBindDescriptorBuffersEXT
将描述符缓冲区绑定到命令缓冲区vk::CmdSetDescriptorBufferOffsetsEXT
在命令缓冲区中设置描述符缓冲区偏移量
查询
vk::CreateQueryPool
创建一个新的查询池对象vk::DestroyQueryPool
销毁查询池对象vk::ResetQueryPool
重置查询池中的查询vk::CmdBeginQuery
开始查询vk::CmdEndQuery
结束查询vk::GetQueryPoolResults
将查询池中的查询结果复制到主机内存区域vk::CmdWriteTimestamp2
将设备时间戳写入查询对象
复制命令
vk::CmdCopyBuffer2
在缓冲区区域之间复制数据vk::CmdCopyImage2
在图像之间复制数据vk::CmdCopyBufferToImage2
从缓冲区复制数据到图像vk::CmdCopyImageToBuffer2
将图像数据复制到缓冲区
绘图命令
vk::CmdDrawMeshTasksEXT
绘制网格任务工作项vk::CmdDrawMeshTasksIndirectEXT
向命令缓冲区发出间接网格任务绘制vk::CmdDrawMeshTasksIndirectCountEXT
使用来自缓冲区的绘制计数执行间接网格任务绘制
固定功能顶点后处理
vk::CmdSetViewportWithCount
为命令缓冲区动态设置视口计数和视口vk::CmdSetScissorWithCount
为命令缓冲区动态设置裁剪计数和裁剪矩形边界
光栅化
vk::CmdSetRasterizationSamplesEXT
为命令缓冲区动态指定光栅化样本vk::CmdSetFrontFace
为命令缓冲区动态设置前向面方向vk::CmdSetCullMode
为命令缓冲区动态设置剔除模式
片段操作
vk::CmdSetDepthTestEnable
为命令缓冲区动态设置深度测试启用vk::CmdSetDepthCompareOp
为命令缓冲区动态设置深度比较运算符vk::CmdSetDepthWriteEnable
动态设置命令缓冲区深度写入使能
帧缓冲区
vk::CmdSetColorBlendEnableEXT
动态指定命令缓冲区每个附件的pname:blendEnablevk::CmdSetColorBlendEquationEXT
动态指定命令缓冲区的混合因子和操作vk::CmdSetColorWriteMaskEXT
动态指定命令缓冲区每个附件的颜色写入掩码
命令分发
vk::CmdDispatch
分发计算工作项vk::CmdDispatchIndirect
使用间接参数分发计算工作项
窗口系统集成(WSI)
vk::CreateWin32SurfaceKHR
为Win32原生窗口创建VkSurfaceKHR对象vk::DestroySurfaceKHR
销毁VkSurfaceKHR对象vk::GetPhysicalDeviceSurfaceSupportKHR
查询是否支持呈现vk::GetPhysicalDeviceSurfaceCapabilitiesKHR
查询表面能力vk::GetPhysicalDeviceSurfaceFormatsKHR
查询表面支持的颜色格式vk::GetPhysicalDeviceSurfacePresentModesKHR
查询支持的呈现模式vk::CreateSwapchainKHR
创建交换链vk::DestroySwapchainKHR
销毁交换链对象vk::GetSwapchainImagesKHR
获取与交换链关联的可呈现图像数组vk::AcquireNextImage2KHR
获取下一个可呈现图像的索引vk::QueuePresentKHR
将图像排队进行呈现
加速结构
光线追踪
vk::CmdTraceRaysKHR
初始化光线追踪调度vk::CmdTraceRaysIndirect2KHR
使用间接着色器绑定表初始化间接光线追踪调度
附加功能
调试
vk::CreateDebugUtilsMessengerEXT
创建调试信使对象vk::DestroyDebugUtilsMessengerEXT
销毁调试信使对象
扩展
VK_KHR_surface
VK_KHR_swapchain
VK_KHR_win32_surface
VK_EXT_debug_utils
VK_KHR_acceleration_structure
VK_KHR_ray_tracing_pipeline
VK_KHR_ray_query
VK_EXT_calibrated_timestamps
VK_EXT_validation_features
VK_KHR_deferred_host_operations
VK_KHR_map_memory2
VK_KHR_pipeline_library
VK_KHR_synchronization2
VK_EXT_descriptor_buffer
VK_EXT_mesh_shader
VK_KHR_ray_tracing_maintenance1
VK_EXT_shader_object
依赖关系
~0.4–6MB
~19K SLoC