.. _stdlib_vulkan_boost: =========================================================== Boost — selection, builders, block brackets, conveniences =========================================================== .. das:module:: vulkan_boost The hand-written ergonomic core: device/queue **selection** helpers, combined **builders** that fold several Vulkan objects into one owner (``build_offscreen_target``, ``create_host_buffer``), **block brackets** (``run_cmd_sync``, ``record_render_pass``, ``map_memory_to_array``) that pair a begin/end or map/unmap around a block, and small conveniences (``full_area``, ``clear_color``). This is the layer the examples are written against. ++++++++++ Structures ++++++++++ .. _struct-vulkan_boost-SpecConstantValue: .. das:attribute:: SpecConstantValue struct SpecConstantValue .. _struct-vulkan_boost-OffscreenTarget: .. das:attribute:: OffscreenTarget struct OffscreenTarget .. _struct-vulkan_boost-OffscreenDepth: .. das:attribute:: OffscreenDepth struct OffscreenDepth .. _struct-vulkan_boost-HostBuffer: .. das:attribute:: HostBuffer struct HostBuffer .. _struct-vulkan_boost-AddressBuffer: .. das:attribute:: AddressBuffer struct AddressBuffer .. _struct-vulkan_boost-ShaderBindingTable: .. das:attribute:: ShaderBindingTable struct ShaderBindingTable .. _struct-vulkan_boost-AccelInstance: .. das:attribute:: AccelInstance struct AccelInstance .. _struct-vulkan_boost-AccelStructure: .. das:attribute:: AccelStructure struct AccelStructure ++++++++++++++++ Device selection ++++++++++++++++ * :ref:`find_memory_type (phys: VkPhysicalDevice; type_bits: uint; want: VkMemoryPropertyFlags) : uint ` * :ref:`select_graphics_queue_family (phys: VkPhysicalDevice) : uint ` * :ref:`select_physical_device (instance: Instance) : VkPhysicalDevice ` .. _function-vulkan_boost_find_memory_type_VkPhysicalDevice_uint_VkMemoryPropertyFlags: .. das:function:: find_memory_type(phys: VkPhysicalDevice; type_bits: uint; want: VkMemoryPropertyFlags) : uint def find_memory_type (phys: VkPhysicalDevice; type_bits: uint; want: VkMemoryPropertyFlags) : uint :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **type_bits** : uint * **want** : :ref:`VkMemoryPropertyFlags ` .. _function-vulkan_boost_select_graphics_queue_family_VkPhysicalDevice: .. das:function:: select_graphics_queue_family(phys: VkPhysicalDevice) : uint def select_graphics_queue_family (phys: VkPhysicalDevice) : uint :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_select_physical_device_Instance: .. das:function:: select_physical_device(instance: Instance) : VkPhysicalDevice def select_physical_device (instance: Instance) : VkPhysicalDevice :Arguments: * **instance** : :ref:`Instance ` +++++++++++++++++ Instance & device +++++++++++++++++ * :ref:`create_device (phys: VkPhysicalDevice; queue_families: array\; extensions: array\; var features2: VkPhysicalDeviceFeatures2) : Device ` * :ref:`create_device (phys: VkPhysicalDevice; queue_family: uint) : Device ` * :ref:`create_device (phys: VkPhysicalDevice; queue_family: uint; extensions: array\) : Device ` * :ref:`create_device (phys: VkPhysicalDevice; queue_family: uint; extensions: array\; var features12: VkPhysicalDeviceVulkan12Features) : Device ` * :ref:`create_device (phys: VkPhysicalDevice; queue_family: uint; extensions: array\; var features13: VkPhysicalDeviceVulkan13Features) : Device ` * :ref:`create_device (phys: VkPhysicalDevice; queue_family: uint; extensions: array\; var features2: VkPhysicalDeviceFeatures2) : Device ` * :ref:`create_device (phys: VkPhysicalDevice; queue_family: uint; extensions: array\; var features: VkPhysicalDeviceFeatures) : Device ` * :ref:`create_device (phys: VkPhysicalDevice; queue_family: uint; extensions: array\; var meshFeatures: VkPhysicalDeviceMeshShaderFeaturesEXT) : Device ` * :ref:`create_device_descriptor_indexing (phys: VkPhysicalDevice; queue_family: uint) : Device ` * :ref:`create_device_draw_parameters (phys: VkPhysicalDevice; queue_family: uint) : Device ` * :ref:`create_instance (application_name: string = ""; api_version: uint = 0x0) : Instance ` * :ref:`create_instance (application_name: string; api_version: uint; extensions: array\) : Instance ` * :ref:`device_extension_available (phys: VkPhysicalDevice; name: string) : bool ` * :ref:`get_device_queue (device: Device; queue_family: uint; index: uint) : VkQueue ` * :ref:`instance_extension_available (name: string) : bool ` create_device ^^^^^^^^^^^^^ .. _function-vulkan_boost_create_device_VkPhysicalDevice_array_ls_uint_gr__array_ls_string_gr__VkPhysicalDeviceFeatures2: .. das:function:: create_device(phys: VkPhysicalDevice; queue_families: array; extensions: array; features2: VkPhysicalDeviceFeatures2) : Device def create_device (phys: VkPhysicalDevice; queue_families: array; extensions: array; var features2: VkPhysicalDeviceFeatures2) : Device :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **queue_families** : array * **extensions** : array * **features2** : :ref:`VkPhysicalDeviceFeatures2 ` .. _function-vulkan_boost_create_device_VkPhysicalDevice_uint: .. das:function:: create_device(phys: VkPhysicalDevice; queue_family: uint) : Device .. _function-vulkan_boost_create_device_VkPhysicalDevice_uint_array_ls_string_gr_: .. das:function:: create_device(phys: VkPhysicalDevice; queue_family: uint; extensions: array) : Device .. _function-vulkan_boost_create_device_VkPhysicalDevice_uint_array_ls_string_gr__VkPhysicalDeviceVulkan12Features: .. das:function:: create_device(phys: VkPhysicalDevice; queue_family: uint; extensions: array; features12: VkPhysicalDeviceVulkan12Features) : Device .. _function-vulkan_boost_create_device_VkPhysicalDevice_uint_array_ls_string_gr__VkPhysicalDeviceVulkan13Features: .. das:function:: create_device(phys: VkPhysicalDevice; queue_family: uint; extensions: array; features13: VkPhysicalDeviceVulkan13Features) : Device .. _function-vulkan_boost_create_device_VkPhysicalDevice_uint_array_ls_string_gr__VkPhysicalDeviceFeatures2: .. das:function:: create_device(phys: VkPhysicalDevice; queue_family: uint; extensions: array; features2: VkPhysicalDeviceFeatures2) : Device .. _function-vulkan_boost_create_device_VkPhysicalDevice_uint_array_ls_string_gr__VkPhysicalDeviceFeatures: .. das:function:: create_device(phys: VkPhysicalDevice; queue_family: uint; extensions: array; features: VkPhysicalDeviceFeatures) : Device .. _function-vulkan_boost_create_device_VkPhysicalDevice_uint_array_ls_string_gr__VkPhysicalDeviceMeshShaderFeaturesEXT: .. das:function:: create_device(phys: VkPhysicalDevice; queue_family: uint; extensions: array; meshFeatures: VkPhysicalDeviceMeshShaderFeaturesEXT) : Device ---- .. _function-vulkan_boost_create_device_descriptor_indexing_VkPhysicalDevice_uint: .. das:function:: create_device_descriptor_indexing(phys: VkPhysicalDevice; queue_family: uint) : Device def create_device_descriptor_indexing (phys: VkPhysicalDevice; queue_family: uint) : Device :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **queue_family** : uint .. _function-vulkan_boost_create_device_draw_parameters_VkPhysicalDevice_uint: .. das:function:: create_device_draw_parameters(phys: VkPhysicalDevice; queue_family: uint) : Device def create_device_draw_parameters (phys: VkPhysicalDevice; queue_family: uint) : Device :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **queue_family** : uint create_instance ^^^^^^^^^^^^^^^ .. _function-vulkan_boost_create_instance_string_uint: .. das:function:: create_instance(application_name: string = ""; api_version: uint = 0x0) : Instance def create_instance (application_name: string = ""; api_version: uint = 0x0) : Instance :Arguments: * **application_name** : string * **api_version** : uint .. _function-vulkan_boost_create_instance_string_uint_array_ls_string_gr_: .. das:function:: create_instance(application_name: string; api_version: uint; extensions: array) : Instance ---- .. _function-vulkan_boost_device_extension_available_VkPhysicalDevice_string: .. das:function:: device_extension_available(phys: VkPhysicalDevice; name: string) : bool def device_extension_available (phys: VkPhysicalDevice; name: string) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **name** : string .. _function-vulkan_boost_get_device_queue_Device_uint_uint: .. das:function:: get_device_queue(device: Device; queue_family: uint; index: uint) : VkQueue def get_device_queue (device: Device; queue_family: uint; index: uint) : VkQueue :Arguments: * **device** : :ref:`Device ` * **queue_family** : uint * **index** : uint .. _function-vulkan_boost_instance_extension_available_string: .. das:function:: instance_extension_available(name: string) : bool def instance_extension_available (name: string) : bool :Arguments: * **name** : string +++++++++++++++++++ Shaders & pipelines +++++++++++++++++++ * :ref:`create_compute_pipeline (device: Device; layout: PipelineLayout; shader: ShaderModule; entry: string = "main") : Pipeline ` * :ref:`create_compute_pipeline (device: Device; layout: PipelineLayout; shader: ShaderModule; spec: array\; entry: string = "main") : Pipeline ` * :ref:`create_graphics_pipeline_dyn (device: Device; color_format: VkFormat; depth_format: VkFormat; samples: VkSampleCountFlags; layout: PipelineLayout; vert: ShaderModule; frag: ShaderModule; width: int; height: int; var vertex_bindings: array\; var vertex_attributes: array\; depth_test_enable: bool = true; depth_write_enable: bool = true; depth_compare_op: VkCompareOp = vulkan::VkCompareOp.LESS_OR_EQUAL; dynamic_viewport: bool = false) : Pipeline ` * :ref:`create_graphics_pipeline_simple (device: Device; render_pass: RenderPass; layout: PipelineLayout; vert: ShaderModule; frag: ShaderModule; width: int; height: int; dynamic_viewport: bool = false) : Pipeline ` * :ref:`create_graphics_pipeline_v3d (device: Device; render_pass: RenderPass; layout: PipelineLayout; vert: ShaderModule; frag: ShaderModule; width: int; height: int; var vertex_bindings: array\; var vertex_attributes: array\; depth_test_enable: bool = true; depth_write_enable: bool = true; depth_compare_op: VkCompareOp = vulkan::VkCompareOp.LESS_OR_EQUAL; dynamic_viewport: bool = false) : Pipeline ` * :ref:`create_pipeline_layout (device: Device) : PipelineLayout ` * :ref:`create_shader_module (device: Device; var code: array\) : ShaderModule ` * :ref:`create_shader_module (device: Device; var code: array\) : ShaderModule ` create_compute_pipeline ^^^^^^^^^^^^^^^^^^^^^^^ .. _function-vulkan_boost_create_compute_pipeline_Device_PipelineLayout_ShaderModule_string: .. das:function:: create_compute_pipeline(device: Device; layout: PipelineLayout; shader: ShaderModule; entry: string = "main") : Pipeline def create_compute_pipeline (device: Device; layout: PipelineLayout; shader: ShaderModule; entry: string = "main") : Pipeline :Arguments: * **device** : :ref:`Device ` * **layout** : :ref:`PipelineLayout ` * **shader** : :ref:`ShaderModule ` * **entry** : string .. _function-vulkan_boost_create_compute_pipeline_Device_PipelineLayout_ShaderModule_array_ls_SpecConstantValue_gr__string: .. das:function:: create_compute_pipeline(device: Device; layout: PipelineLayout; shader: ShaderModule; spec: array; entry: string = "main") : Pipeline ---- .. _function-vulkan_boost_create_graphics_pipeline_dyn_Device_VkFormat_VkFormat_VkSampleCountFlags_PipelineLayout_ShaderModule_ShaderModule_int_int_array_ls_VkVertexInputBindingDescription_gr__array_ls_VkVertexInputAttributeDescription_gr__bool_bool_VkCompareOp_bool: .. das:function:: create_graphics_pipeline_dyn(device: Device; color_format: VkFormat; depth_format: VkFormat; samples: VkSampleCountFlags; layout: PipelineLayout; vert: ShaderModule; frag: ShaderModule; width: int; height: int; vertex_bindings: array; vertex_attributes: array; depth_test_enable: bool = true; depth_write_enable: bool = true; depth_compare_op: VkCompareOp = vulkan::VkCompareOp.LESS_OR_EQUAL; dynamic_viewport: bool = false) : Pipeline def create_graphics_pipeline_dyn (device: Device; color_format: VkFormat; depth_format: VkFormat; samples: VkSampleCountFlags; layout: PipelineLayout; vert: ShaderModule; frag: ShaderModule; width: int; height: int; var vertex_bindings: array; var vertex_attributes: array; depth_test_enable: bool = true; depth_write_enable: bool = true; depth_compare_op: VkCompareOp = vulkan::VkCompareOp.LESS_OR_EQUAL; dynamic_viewport: bool = false) : Pipeline :Arguments: * **device** : :ref:`Device ` * **color_format** : :ref:`VkFormat ` * **depth_format** : :ref:`VkFormat ` * **samples** : :ref:`VkSampleCountFlags ` * **layout** : :ref:`PipelineLayout ` * **vert** : :ref:`ShaderModule ` * **frag** : :ref:`ShaderModule ` * **width** : int * **height** : int * **vertex_bindings** : array< :ref:`VkVertexInputBindingDescription `> * **vertex_attributes** : array< :ref:`VkVertexInputAttributeDescription `> * **depth_test_enable** : bool * **depth_write_enable** : bool * **depth_compare_op** : :ref:`VkCompareOp ` * **dynamic_viewport** : bool .. _function-vulkan_boost_create_graphics_pipeline_simple_Device_RenderPass_PipelineLayout_ShaderModule_ShaderModule_int_int_bool: .. das:function:: create_graphics_pipeline_simple(device: Device; render_pass: RenderPass; layout: PipelineLayout; vert: ShaderModule; frag: ShaderModule; width: int; height: int; dynamic_viewport: bool = false) : Pipeline def create_graphics_pipeline_simple (device: Device; render_pass: RenderPass; layout: PipelineLayout; vert: ShaderModule; frag: ShaderModule; width: int; height: int; dynamic_viewport: bool = false) : Pipeline :Arguments: * **device** : :ref:`Device ` * **render_pass** : :ref:`RenderPass ` * **layout** : :ref:`PipelineLayout ` * **vert** : :ref:`ShaderModule ` * **frag** : :ref:`ShaderModule ` * **width** : int * **height** : int * **dynamic_viewport** : bool .. _function-vulkan_boost_create_graphics_pipeline_v3d_Device_RenderPass_PipelineLayout_ShaderModule_ShaderModule_int_int_array_ls_VkVertexInputBindingDescription_gr__array_ls_VkVertexInputAttributeDescription_gr__bool_bool_VkCompareOp_bool: .. das:function:: create_graphics_pipeline_v3d(device: Device; render_pass: RenderPass; layout: PipelineLayout; vert: ShaderModule; frag: ShaderModule; width: int; height: int; vertex_bindings: array; vertex_attributes: array; depth_test_enable: bool = true; depth_write_enable: bool = true; depth_compare_op: VkCompareOp = vulkan::VkCompareOp.LESS_OR_EQUAL; dynamic_viewport: bool = false) : Pipeline def create_graphics_pipeline_v3d (device: Device; render_pass: RenderPass; layout: PipelineLayout; vert: ShaderModule; frag: ShaderModule; width: int; height: int; var vertex_bindings: array; var vertex_attributes: array; depth_test_enable: bool = true; depth_write_enable: bool = true; depth_compare_op: VkCompareOp = vulkan::VkCompareOp.LESS_OR_EQUAL; dynamic_viewport: bool = false) : Pipeline :Arguments: * **device** : :ref:`Device ` * **render_pass** : :ref:`RenderPass ` * **layout** : :ref:`PipelineLayout ` * **vert** : :ref:`ShaderModule ` * **frag** : :ref:`ShaderModule ` * **width** : int * **height** : int * **vertex_bindings** : array< :ref:`VkVertexInputBindingDescription `> * **vertex_attributes** : array< :ref:`VkVertexInputAttributeDescription `> * **depth_test_enable** : bool * **depth_write_enable** : bool * **depth_compare_op** : :ref:`VkCompareOp ` * **dynamic_viewport** : bool .. _function-vulkan_boost_create_pipeline_layout_Device: .. das:function:: create_pipeline_layout(device: Device) : PipelineLayout def create_pipeline_layout (device: Device) : PipelineLayout :Arguments: * **device** : :ref:`Device ` create_shader_module ^^^^^^^^^^^^^^^^^^^^ .. _function-vulkan_boost_create_shader_module_Device_array_ls_uint8_gr_: .. das:function:: create_shader_module(device: Device; code: array) : ShaderModule def create_shader_module (device: Device; var code: array) : ShaderModule :Arguments: * **device** : :ref:`Device ` * **code** : array .. _function-vulkan_boost_create_shader_module_Device_array_ls_uint_gr_: .. das:function:: create_shader_module(device: Device; code: array) : ShaderModule ++++++++++++ Mesh shaders ++++++++++++ * :ref:`create_device_mesh_shader (phys: VkPhysicalDevice; queue_family: uint) : Device ` * :ref:`create_mesh_pipeline (device: Device; render_pass: RenderPass; layout: PipelineLayout; task: ShaderModule; mesh: ShaderModule; frag: ShaderModule; width: int; height: int; dynamic_viewport: bool = false; enable_depth: bool = false) : Pipeline ` * :ref:`mesh_shader_supported (phys: VkPhysicalDevice) : bool ` .. _function-vulkan_boost_create_device_mesh_shader_VkPhysicalDevice_uint: .. das:function:: create_device_mesh_shader(phys: VkPhysicalDevice; queue_family: uint) : Device def create_device_mesh_shader (phys: VkPhysicalDevice; queue_family: uint) : Device :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **queue_family** : uint .. _function-vulkan_boost_create_mesh_pipeline_Device_RenderPass_PipelineLayout_ShaderModule_ShaderModule_ShaderModule_int_int_bool_bool: .. das:function:: create_mesh_pipeline(device: Device; render_pass: RenderPass; layout: PipelineLayout; task: ShaderModule; mesh: ShaderModule; frag: ShaderModule; width: int; height: int; dynamic_viewport: bool = false; enable_depth: bool = false) : Pipeline def create_mesh_pipeline (device: Device; render_pass: RenderPass; layout: PipelineLayout; task: ShaderModule; mesh: ShaderModule; frag: ShaderModule; width: int; height: int; dynamic_viewport: bool = false; enable_depth: bool = false) : Pipeline :Arguments: * **device** : :ref:`Device ` * **render_pass** : :ref:`RenderPass ` * **layout** : :ref:`PipelineLayout ` * **task** : :ref:`ShaderModule ` * **mesh** : :ref:`ShaderModule ` * **frag** : :ref:`ShaderModule ` * **width** : int * **height** : int * **dynamic_viewport** : bool * **enable_depth** : bool .. _function-vulkan_boost_mesh_shader_supported_VkPhysicalDevice: .. das:function:: mesh_shader_supported(phys: VkPhysicalDevice) : bool def mesh_shader_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` ++++++++++++++++++++ Hardware ray tracing ++++++++++++++++++++ * :ref:`build_blas (device: Device; phys: VkPhysicalDevice; pool: CommandPool; queue: VkQueue; var vertices: array\; var indices: array\) : AccelStructure ` * :ref:`build_shader_binding_table (device: Device; phys: VkPhysicalDevice; pipeline: Pipeline; miss_count: uint; hit_count: uint) : ShaderBindingTable ` * :ref:`build_tlas (device: Device; phys: VkPhysicalDevice; pool: CommandPool; queue: VkQueue; var instances: array\) : AccelStructure ` * :ref:`cmd_trace_rays (cmd: CommandBuffer; sbt: ShaderBindingTable; width: uint; height: uint; depth: uint = 0x1) ` * :ref:`create_address_buffer (device: Device; phys: VkPhysicalDevice; size: uint64; usage: VkBufferUsageFlags; host_visible: bool) : AddressBuffer ` * :ref:`create_device_ray_tracing (phys: VkPhysicalDevice; queue_family: uint) : Device ` * :ref:`create_device_ray_tracing (phys: VkPhysicalDevice; queue_family: uint; extra_extensions: array\) : Device ` * :ref:`create_ray_tracing_pipeline (device: Device; layout: PipelineLayout; raygen: ShaderModule; miss: ShaderModule; closest_hit: ShaderModule; max_recursion: uint = 0x1) : Pipeline ` * :ref:`create_ray_tracing_pipeline (device: Device; layout: PipelineLayout; raygen: ShaderModule; miss: array\; closest_hit: ShaderModule; max_recursion: uint = 0x1) : Pipeline ` * :ref:`get_ray_tracing_properties (phys: VkPhysicalDevice) : VkPhysicalDeviceRayTracingPipelinePropertiesKHR ` * :ref:`get_ray_tracing_shader_group_handles (device: Device; pipeline: Pipeline; first_group: uint; group_count: uint; handle_size: uint) : array\ ` * :ref:`make_accel_instance (blas_address: uint64; custom_index: uint = 0x0; mask: uint = 0xff; sbt_record_offset: uint = 0x0; flags: uint = 0x0) : AccelInstance ` * :ref:`rt_supported (phys: VkPhysicalDevice) : bool ` * :ref:`write_descriptor_acceleration_structure (device: Device; dset: DescriptorSet; binding: uint; tlas: AccelStructure) ` .. _function-vulkan_boost_build_blas_Device_VkPhysicalDevice_CommandPool_VkQueue_array_ls_float3_gr__array_ls_uint_gr_: .. das:function:: build_blas(device: Device; phys: VkPhysicalDevice; pool: CommandPool; queue: VkQueue; vertices: array; indices: array) : AccelStructure def build_blas (device: Device; phys: VkPhysicalDevice; pool: CommandPool; queue: VkQueue; var vertices: array; var indices: array) : AccelStructure :Arguments: * **device** : :ref:`Device ` * **phys** : :ref:`VkPhysicalDevice ` * **pool** : :ref:`CommandPool ` * **queue** : :ref:`VkQueue ` * **vertices** : array * **indices** : array .. _function-vulkan_boost_build_shader_binding_table_Device_VkPhysicalDevice_Pipeline_uint_uint: .. das:function:: build_shader_binding_table(device: Device; phys: VkPhysicalDevice; pipeline: Pipeline; miss_count: uint; hit_count: uint) : ShaderBindingTable def build_shader_binding_table (device: Device; phys: VkPhysicalDevice; pipeline: Pipeline; miss_count: uint; hit_count: uint) : ShaderBindingTable :Arguments: * **device** : :ref:`Device ` * **phys** : :ref:`VkPhysicalDevice ` * **pipeline** : :ref:`Pipeline ` * **miss_count** : uint * **hit_count** : uint .. _function-vulkan_boost_build_tlas_Device_VkPhysicalDevice_CommandPool_VkQueue_array_ls_AccelInstance_gr_: .. das:function:: build_tlas(device: Device; phys: VkPhysicalDevice; pool: CommandPool; queue: VkQueue; instances: array) : AccelStructure def build_tlas (device: Device; phys: VkPhysicalDevice; pool: CommandPool; queue: VkQueue; var instances: array) : AccelStructure :Arguments: * **device** : :ref:`Device ` * **phys** : :ref:`VkPhysicalDevice ` * **pool** : :ref:`CommandPool ` * **queue** : :ref:`VkQueue ` * **instances** : array< :ref:`AccelInstance `> .. _function-vulkan_boost_cmd_trace_rays_CommandBuffer_ShaderBindingTable_uint_uint_uint: .. das:function:: cmd_trace_rays(cmd: CommandBuffer; sbt: ShaderBindingTable; width: uint; height: uint; depth: uint = 0x1) def cmd_trace_rays (cmd: CommandBuffer; sbt: ShaderBindingTable; width: uint; height: uint; depth: uint = 0x1) :Arguments: * **cmd** : :ref:`CommandBuffer ` * **sbt** : :ref:`ShaderBindingTable ` * **width** : uint * **height** : uint * **depth** : uint .. _function-vulkan_boost_create_address_buffer_Device_VkPhysicalDevice_uint64_VkBufferUsageFlags_bool: .. das:function:: create_address_buffer(device: Device; phys: VkPhysicalDevice; size: uint64; usage: VkBufferUsageFlags; host_visible: bool) : AddressBuffer def create_address_buffer (device: Device; phys: VkPhysicalDevice; size: uint64; usage: VkBufferUsageFlags; host_visible: bool) : AddressBuffer :Arguments: * **device** : :ref:`Device ` * **phys** : :ref:`VkPhysicalDevice ` * **size** : uint64 * **usage** : :ref:`VkBufferUsageFlags ` * **host_visible** : bool create_device_ray_tracing ^^^^^^^^^^^^^^^^^^^^^^^^^ .. _function-vulkan_boost_create_device_ray_tracing_VkPhysicalDevice_uint: .. das:function:: create_device_ray_tracing(phys: VkPhysicalDevice; queue_family: uint) : Device def create_device_ray_tracing (phys: VkPhysicalDevice; queue_family: uint) : Device :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **queue_family** : uint .. _function-vulkan_boost_create_device_ray_tracing_VkPhysicalDevice_uint_array_ls_string_gr_: .. das:function:: create_device_ray_tracing(phys: VkPhysicalDevice; queue_family: uint; extra_extensions: array) : Device ---- create_ray_tracing_pipeline ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _function-vulkan_boost_create_ray_tracing_pipeline_Device_PipelineLayout_ShaderModule_ShaderModule_ShaderModule_uint: .. das:function:: create_ray_tracing_pipeline(device: Device; layout: PipelineLayout; raygen: ShaderModule; miss: ShaderModule; closest_hit: ShaderModule; max_recursion: uint = 0x1) : Pipeline def create_ray_tracing_pipeline (device: Device; layout: PipelineLayout; raygen: ShaderModule; miss: ShaderModule; closest_hit: ShaderModule; max_recursion: uint = 0x1) : Pipeline :Arguments: * **device** : :ref:`Device ` * **layout** : :ref:`PipelineLayout ` * **raygen** : :ref:`ShaderModule ` * **miss** : :ref:`ShaderModule ` * **closest_hit** : :ref:`ShaderModule ` * **max_recursion** : uint .. _function-vulkan_boost_create_ray_tracing_pipeline_Device_PipelineLayout_ShaderModule_array_ls_ShaderModule_gr__ShaderModule_uint: .. das:function:: create_ray_tracing_pipeline(device: Device; layout: PipelineLayout; raygen: ShaderModule; miss: array; closest_hit: ShaderModule; max_recursion: uint = 0x1) : Pipeline ---- .. _function-vulkan_boost_get_ray_tracing_properties_VkPhysicalDevice: .. das:function:: get_ray_tracing_properties(phys: VkPhysicalDevice) : VkPhysicalDeviceRayTracingPipelinePropertiesKHR def get_ray_tracing_properties (phys: VkPhysicalDevice) : VkPhysicalDeviceRayTracingPipelinePropertiesKHR :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_get_ray_tracing_shader_group_handles_Device_Pipeline_uint_uint_uint: .. das:function:: get_ray_tracing_shader_group_handles(device: Device; pipeline: Pipeline; first_group: uint; group_count: uint; handle_size: uint) : array def get_ray_tracing_shader_group_handles (device: Device; pipeline: Pipeline; first_group: uint; group_count: uint; handle_size: uint) : array :Arguments: * **device** : :ref:`Device ` * **pipeline** : :ref:`Pipeline ` * **first_group** : uint * **group_count** : uint * **handle_size** : uint .. _function-vulkan_boost_make_accel_instance_uint64_uint_uint_uint_uint: .. das:function:: make_accel_instance(blas_address: uint64; custom_index: uint = 0x0; mask: uint = 0xff; sbt_record_offset: uint = 0x0; flags: uint = 0x0) : AccelInstance def make_accel_instance (blas_address: uint64; custom_index: uint = 0x0; mask: uint = 0xff; sbt_record_offset: uint = 0x0; flags: uint = 0x0) : AccelInstance :Arguments: * **blas_address** : uint64 * **custom_index** : uint * **mask** : uint * **sbt_record_offset** : uint * **flags** : uint .. _function-vulkan_boost_rt_supported_VkPhysicalDevice: .. das:function:: rt_supported(phys: VkPhysicalDevice) : bool def rt_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_write_descriptor_acceleration_structure_Device_DescriptorSet_uint_AccelStructure: .. das:function:: write_descriptor_acceleration_structure(device: Device; dset: DescriptorSet; binding: uint; tlas: AccelStructure) def write_descriptor_acceleration_structure (device: Device; dset: DescriptorSet; binding: uint; tlas: AccelStructure) :Arguments: * **device** : :ref:`Device ` * **dset** : :ref:`DescriptorSet ` * **binding** : uint * **tlas** : :ref:`AccelStructure ` +++++++++++++ Render passes +++++++++++++ * :ref:`create_render_pass_color_depth (device: Device; color_format: VkFormat; depth_format: VkFormat; color_final_layout: VkImageLayout = vulkan::VkImageLayout.TRANSFER_SRC_OPTIMAL) : RenderPass ` * :ref:`create_render_pass_depth_only (device: Device; depth_format: VkFormat; final_layout: VkImageLayout = vulkan::VkImageLayout.DEPTH_STENCIL_READ_ONLY_OPTIMAL) : RenderPass ` * :ref:`create_render_pass_single_color (device: Device; format: VkFormat; final_layout: VkImageLayout = vulkan::VkImageLayout.TRANSFER_SRC_OPTIMAL) : RenderPass ` .. _function-vulkan_boost_create_render_pass_color_depth_Device_VkFormat_VkFormat_VkImageLayout: .. das:function:: create_render_pass_color_depth(device: Device; color_format: VkFormat; depth_format: VkFormat; color_final_layout: VkImageLayout = vulkan::VkImageLayout.TRANSFER_SRC_OPTIMAL) : RenderPass def create_render_pass_color_depth (device: Device; color_format: VkFormat; depth_format: VkFormat; color_final_layout: VkImageLayout = vulkan::VkImageLayout.TRANSFER_SRC_OPTIMAL) : RenderPass :Arguments: * **device** : :ref:`Device ` * **color_format** : :ref:`VkFormat ` * **depth_format** : :ref:`VkFormat ` * **color_final_layout** : :ref:`VkImageLayout ` .. _function-vulkan_boost_create_render_pass_depth_only_Device_VkFormat_VkImageLayout: .. das:function:: create_render_pass_depth_only(device: Device; depth_format: VkFormat; final_layout: VkImageLayout = vulkan::VkImageLayout.DEPTH_STENCIL_READ_ONLY_OPTIMAL) : RenderPass def create_render_pass_depth_only (device: Device; depth_format: VkFormat; final_layout: VkImageLayout = vulkan::VkImageLayout.DEPTH_STENCIL_READ_ONLY_OPTIMAL) : RenderPass :Arguments: * **device** : :ref:`Device ` * **depth_format** : :ref:`VkFormat ` * **final_layout** : :ref:`VkImageLayout ` .. _function-vulkan_boost_create_render_pass_single_color_Device_VkFormat_VkImageLayout: .. das:function:: create_render_pass_single_color(device: Device; format: VkFormat; final_layout: VkImageLayout = vulkan::VkImageLayout.TRANSFER_SRC_OPTIMAL) : RenderPass def create_render_pass_single_color (device: Device; format: VkFormat; final_layout: VkImageLayout = vulkan::VkImageLayout.TRANSFER_SRC_OPTIMAL) : RenderPass :Arguments: * **device** : :ref:`Device ` * **format** : :ref:`VkFormat ` * **final_layout** : :ref:`VkImageLayout ` ++++++++ Builders ++++++++ * :ref:`build_offscreen_depth (device: Device; phys: VkPhysicalDevice; width: int; height: int; format: VkFormat = vulkan::VkFormat.D32_SFLOAT) : OffscreenDepth ` * :ref:`build_offscreen_depth (device: Device; phys: VkPhysicalDevice; width: int; height: int; format: VkFormat; extra_usage: VkImageUsageFlags) : OffscreenDepth ` * :ref:`build_offscreen_depth (device: Device; phys: VkPhysicalDevice; width: int; height: int; format: VkFormat; extra_usage: VkImageUsageFlags; samples: VkSampleCountFlags) : OffscreenDepth ` * :ref:`build_offscreen_target (device: Device; phys: VkPhysicalDevice; width: int; height: int; format: VkFormat) : OffscreenTarget ` * :ref:`build_offscreen_target (device: Device; phys: VkPhysicalDevice; width: int; height: int; format: VkFormat; samples: VkSampleCountFlags; extra_usage: VkImageUsageFlags) : OffscreenTarget ` * :ref:`compute_to_storage_image (var words: array\; w: int; h: int; srgb_encode: bool = false) : array\ ` * :ref:`create_host_buffer (device: Device; phys: VkPhysicalDevice; size: uint64) : HostBuffer ` * :ref:`create_host_buffer (device: Device; phys: VkPhysicalDevice; size: uint64; usage: VkBufferUsageFlags) : HostBuffer ` * :ref:`create_host_buffer_from_bytes (device: Device; phys: VkPhysicalDevice; usage: VkBufferUsageFlags; var data: array\) : HostBuffer ` * :ref:`create_sampler_shadow (device: Device; compare_op: VkCompareOp = vulkan::VkCompareOp.LESS) : Sampler ` build_offscreen_depth ^^^^^^^^^^^^^^^^^^^^^ .. _function-vulkan_boost_build_offscreen_depth_Device_VkPhysicalDevice_int_int_VkFormat: .. das:function:: build_offscreen_depth(device: Device; phys: VkPhysicalDevice; width: int; height: int; format: VkFormat = vulkan::VkFormat.D32_SFLOAT) : OffscreenDepth def build_offscreen_depth (device: Device; phys: VkPhysicalDevice; width: int; height: int; format: VkFormat = vulkan::VkFormat.D32_SFLOAT) : OffscreenDepth :Arguments: * **device** : :ref:`Device ` * **phys** : :ref:`VkPhysicalDevice ` * **width** : int * **height** : int * **format** : :ref:`VkFormat ` .. _function-vulkan_boost_build_offscreen_depth_Device_VkPhysicalDevice_int_int_VkFormat_VkImageUsageFlags: .. das:function:: build_offscreen_depth(device: Device; phys: VkPhysicalDevice; width: int; height: int; format: VkFormat; extra_usage: VkImageUsageFlags) : OffscreenDepth .. _function-vulkan_boost_build_offscreen_depth_Device_VkPhysicalDevice_int_int_VkFormat_VkImageUsageFlags_VkSampleCountFlags: .. das:function:: build_offscreen_depth(device: Device; phys: VkPhysicalDevice; width: int; height: int; format: VkFormat; extra_usage: VkImageUsageFlags; samples: VkSampleCountFlags) : OffscreenDepth ---- build_offscreen_target ^^^^^^^^^^^^^^^^^^^^^^ .. _function-vulkan_boost_build_offscreen_target_Device_VkPhysicalDevice_int_int_VkFormat: .. das:function:: build_offscreen_target(device: Device; phys: VkPhysicalDevice; width: int; height: int; format: VkFormat) : OffscreenTarget def build_offscreen_target (device: Device; phys: VkPhysicalDevice; width: int; height: int; format: VkFormat) : OffscreenTarget :Arguments: * **device** : :ref:`Device ` * **phys** : :ref:`VkPhysicalDevice ` * **width** : int * **height** : int * **format** : :ref:`VkFormat ` .. _function-vulkan_boost_build_offscreen_target_Device_VkPhysicalDevice_int_int_VkFormat_VkSampleCountFlags_VkImageUsageFlags: .. das:function:: build_offscreen_target(device: Device; phys: VkPhysicalDevice; width: int; height: int; format: VkFormat; samples: VkSampleCountFlags; extra_usage: VkImageUsageFlags) : OffscreenTarget ---- .. _function-vulkan_boost_compute_to_storage_image_array_ls_uint_gr__int_int_bool: .. das:function:: compute_to_storage_image(words: array; w: int; h: int; srgb_encode: bool = false) : array def compute_to_storage_image (var words: array; w: int; h: int; srgb_encode: bool = false) : array :Arguments: * **words** : array * **w** : int * **h** : int * **srgb_encode** : bool create_host_buffer ^^^^^^^^^^^^^^^^^^ .. _function-vulkan_boost_create_host_buffer_Device_VkPhysicalDevice_uint64: .. das:function:: create_host_buffer(device: Device; phys: VkPhysicalDevice; size: uint64) : HostBuffer def create_host_buffer (device: Device; phys: VkPhysicalDevice; size: uint64) : HostBuffer :Arguments: * **device** : :ref:`Device ` * **phys** : :ref:`VkPhysicalDevice ` * **size** : uint64 .. _function-vulkan_boost_create_host_buffer_Device_VkPhysicalDevice_uint64_VkBufferUsageFlags: .. das:function:: create_host_buffer(device: Device; phys: VkPhysicalDevice; size: uint64; usage: VkBufferUsageFlags) : HostBuffer ---- .. _function-vulkan_boost_create_host_buffer_from_bytes_Device_VkPhysicalDevice_VkBufferUsageFlags_array_ls_autoTT_gr_: .. das:function:: create_host_buffer_from_bytes(device: Device; phys: VkPhysicalDevice; usage: VkBufferUsageFlags; data: array) : HostBuffer def create_host_buffer_from_bytes (device: Device; phys: VkPhysicalDevice; usage: VkBufferUsageFlags; var data: array) : HostBuffer :Arguments: * **device** : :ref:`Device ` * **phys** : :ref:`VkPhysicalDevice ` * **usage** : :ref:`VkBufferUsageFlags ` * **data** : array .. _function-vulkan_boost_create_sampler_shadow_Device_VkCompareOp: .. das:function:: create_sampler_shadow(device: Device; compare_op: VkCompareOp = vulkan::VkCompareOp.LESS) : Sampler def create_sampler_shadow (device: Device; compare_op: VkCompareOp = vulkan::VkCompareOp.LESS) : Sampler :Arguments: * **device** : :ref:`Device ` * **compare_op** : :ref:`VkCompareOp ` +++++++++++++++++ Memory & brackets +++++++++++++++++ * :ref:`map_memory_to_array (device: Device; memory: DeviceMemory; size: uint64; blk: block\<(data:array\):void\>) ` * :ref:`read_memory (device: Device; memory: DeviceMemory; elem: type\; count: int) : array\ ` * :ref:`record_render_pass (cmd: CommandBuffer; render_pass: RenderPass; framebuffer: Framebuffer; area: VkRect2D; clear: VkClearValue; blk: block\<():void\>) ` * :ref:`record_render_pass (cmd: CommandBuffer; render_pass: RenderPass; framebuffer: Framebuffer; area: VkRect2D; var clears: array\; blk: block\<():void\>) ` * :ref:`record_rendering (cmd: CommandBuffer; area: VkRect2D; layer_count: uint; var color_attachments: array\; blk: block\<():void\>) ` * :ref:`record_rendering (cmd: CommandBuffer; area: VkRect2D; layer_count: uint; var color_attachments: array\; var depth_attachment: RenderingAttachmentInfo; blk: block\<():void\>) ` * :ref:`run_cmd_sync (device: Device; pool: CommandPool; queue: VkQueue; blk: block\<(cmd:CommandBuffer):void\>) ` * :ref:`upload_bytes (buf: AddressBuffer; device: Device; var data: array\) : auto ` * :ref:`upload_bytes (buf: HostBuffer; device: Device; var data: array\) : auto ` * :ref:`with_mapped_memory (device: Device; memory: DeviceMemory; blk: block\<(ptr:void?):void\>) ` * :ref:`with_push_staging (size: uint; blk: block\<(ptr:void?):void\>) ` * :ref:`write_field (ptr: void?; offset: uint; var value: auto(TT)) : auto ` .. _function-vulkan_boost_map_memory_to_array_Device_DeviceMemory_uint64_block_ls_data_c_array_ls_uint8_gr__c_void_gr_: .. das:function:: map_memory_to_array(device: Device; memory: DeviceMemory; size: uint64; blk: block<(data:array):void>) def map_memory_to_array (device: Device; memory: DeviceMemory; size: uint64; blk: block<(data:array):void>) :Arguments: * **device** : :ref:`Device ` * **memory** : :ref:`DeviceMemory ` * **size** : uint64 * **blk** : block<(data:array):void> .. _function-vulkan_boost_read_memory_Device_DeviceMemory_type_ls_autoTT_const_gr__int_0x8ff: .. das:function:: read_memory(device: Device; memory: DeviceMemory; elem: type; count: int) : array def read_memory (device: Device; memory: DeviceMemory; elem: type; count: int) : array :Arguments: * **device** : :ref:`Device ` * **memory** : :ref:`DeviceMemory ` * **elem** : auto(TT) * **count** : int record_render_pass ^^^^^^^^^^^^^^^^^^ .. _function-vulkan_boost_record_render_pass_CommandBuffer_RenderPass_Framebuffer_VkRect2D_VkClearValue_block_ls__c_void_gr_: .. das:function:: record_render_pass(cmd: CommandBuffer; render_pass: RenderPass; framebuffer: Framebuffer; area: VkRect2D; clear: VkClearValue; blk: block<():void>) def record_render_pass (cmd: CommandBuffer; render_pass: RenderPass; framebuffer: Framebuffer; area: VkRect2D; clear: VkClearValue; blk: block<():void>) :Arguments: * **cmd** : :ref:`CommandBuffer ` * **render_pass** : :ref:`RenderPass ` * **framebuffer** : :ref:`Framebuffer ` * **area** : :ref:`VkRect2D ` * **clear** : :ref:`VkClearValue ` * **blk** : block .. _function-vulkan_boost_record_render_pass_CommandBuffer_RenderPass_Framebuffer_VkRect2D_array_ls_VkClearValue_gr__block_ls__c_void_gr_: .. das:function:: record_render_pass(cmd: CommandBuffer; render_pass: RenderPass; framebuffer: Framebuffer; area: VkRect2D; clears: array; blk: block<():void>) ---- record_rendering ^^^^^^^^^^^^^^^^ .. _function-vulkan_boost_record_rendering_CommandBuffer_VkRect2D_uint_array_ls_RenderingAttachmentInfo_gr__block_ls__c_void_gr_: .. das:function:: record_rendering(cmd: CommandBuffer; area: VkRect2D; layer_count: uint; color_attachments: array; blk: block<():void>) def record_rendering (cmd: CommandBuffer; area: VkRect2D; layer_count: uint; var color_attachments: array; blk: block<():void>) :Arguments: * **cmd** : :ref:`CommandBuffer ` * **area** : :ref:`VkRect2D ` * **layer_count** : uint * **color_attachments** : array< :ref:`RenderingAttachmentInfo `> * **blk** : block .. _function-vulkan_boost_record_rendering_CommandBuffer_VkRect2D_uint_array_ls_RenderingAttachmentInfo_gr__RenderingAttachmentInfo_block_ls__c_void_gr_: .. das:function:: record_rendering(cmd: CommandBuffer; area: VkRect2D; layer_count: uint; color_attachments: array; depth_attachment: RenderingAttachmentInfo; blk: block<():void>) ---- .. _function-vulkan_boost_run_cmd_sync_Device_CommandPool_VkQueue_block_ls_cmd_c_CommandBuffer_c_void_gr_: .. das:function:: run_cmd_sync(device: Device; pool: CommandPool; queue: VkQueue; blk: block<(cmd:CommandBuffer):void>) def run_cmd_sync (device: Device; pool: CommandPool; queue: VkQueue; blk: block<(cmd:CommandBuffer):void>) :Arguments: * **device** : :ref:`Device ` * **pool** : :ref:`CommandPool ` * **queue** : :ref:`VkQueue ` * **blk** : block<(cmd: :ref:`CommandBuffer `):void> upload_bytes ^^^^^^^^^^^^ .. _function-vulkan_boost_upload_bytes_AddressBuffer_Device_array_ls_autoTT_gr_: .. das:function:: upload_bytes(buf: AddressBuffer; device: Device; data: array) : auto def upload_bytes (buf: AddressBuffer; device: Device; var data: array) : auto :Arguments: * **buf** : :ref:`AddressBuffer ` * **device** : :ref:`Device ` * **data** : array .. _function-vulkan_boost_upload_bytes_HostBuffer_Device_array_ls_autoTT_gr_: .. das:function:: upload_bytes(buf: HostBuffer; device: Device; data: array) : auto ---- .. _function-vulkan_boost_with_mapped_memory_Device_DeviceMemory_block_ls_ptr_c_void_q__c_void_gr_: .. das:function:: with_mapped_memory(device: Device; memory: DeviceMemory; blk: block<(ptr:void?):void>) def with_mapped_memory (device: Device; memory: DeviceMemory; blk: block<(ptr:void?):void>) :Arguments: * **device** : :ref:`Device ` * **memory** : :ref:`DeviceMemory ` * **blk** : block<(ptr:void?):void> .. _function-vulkan_boost_with_push_staging_uint_block_ls_ptr_c_void_q__c_void_gr_: .. das:function:: with_push_staging(size: uint; blk: block<(ptr:void?):void>) def with_push_staging (size: uint; blk: block<(ptr:void?):void>) :Arguments: * **size** : uint * **blk** : block<(ptr:void?):void> .. _function-vulkan_boost_write_field_void_q__uint_autoTT_0x8e2: .. das:function:: write_field(ptr: void?; offset: uint; value: auto(TT)) : auto def write_field (ptr: void?; offset: uint; var value: auto(TT)) : auto :Arguments: * **ptr** : void? * **offset** : uint * **value** : auto(TT) +++++++++++++++++ Command recording +++++++++++++++++ * :ref:`cmd_bind_pipeline (cmd: CommandBuffer; pipeline: Pipeline; bind_point: VkPipelineBindPoint = vulkan::VkPipelineBindPoint.GRAPHICS) ` * :ref:`cmd_bind_vertex_buffer (cmd: CommandBuffer; binding: uint; buffer: Buffer; offset: uint64 = 0x0) ` * :ref:`cmd_draw (cmd: CommandBuffer; vertex_count: uint; instance_count: uint = 0x1) ` * :ref:`cmd_push_constants (cmd: CommandBuffer; layout: PipelineLayout; stages: VkShaderStageFlags; offset: uint; var value: auto(TT)) : auto ` * :ref:`copy_image_to_buffer (cmd: CommandBuffer; image: Image; buffer: HostBuffer; width: int; height: int) ` * :ref:`transition_depth_image (cmd: CommandBuffer; image: Image; old_layout: VkImageLayout; new_layout: VkImageLayout; src_access: VkAccessFlags; dst_access: VkAccessFlags; src_stage: VkPipelineStageFlags; dst_stage: VkPipelineStageFlags) ` * :ref:`transition_image (cmd: CommandBuffer; image: Image; old_layout: VkImageLayout; new_layout: VkImageLayout; src_access: VkAccessFlags; dst_access: VkAccessFlags; src_stage: VkPipelineStageFlags; dst_stage: VkPipelineStageFlags) ` * :ref:`transition_image_aspect (cmd: CommandBuffer; image: Image; old_layout: VkImageLayout; new_layout: VkImageLayout; src_access: VkAccessFlags; dst_access: VkAccessFlags; src_stage: VkPipelineStageFlags; dst_stage: VkPipelineStageFlags; aspect: VkImageAspectFlags) ` .. _function-vulkan_boost_cmd_bind_pipeline_CommandBuffer_Pipeline_VkPipelineBindPoint: .. das:function:: cmd_bind_pipeline(cmd: CommandBuffer; pipeline: Pipeline; bind_point: VkPipelineBindPoint = vulkan::VkPipelineBindPoint.GRAPHICS) def cmd_bind_pipeline (cmd: CommandBuffer; pipeline: Pipeline; bind_point: VkPipelineBindPoint = vulkan::VkPipelineBindPoint.GRAPHICS) :Arguments: * **cmd** : :ref:`CommandBuffer ` * **pipeline** : :ref:`Pipeline ` * **bind_point** : :ref:`VkPipelineBindPoint ` .. _function-vulkan_boost_cmd_bind_vertex_buffer_CommandBuffer_uint_Buffer_uint64: .. das:function:: cmd_bind_vertex_buffer(cmd: CommandBuffer; binding: uint; buffer: Buffer; offset: uint64 = 0x0) def cmd_bind_vertex_buffer (cmd: CommandBuffer; binding: uint; buffer: Buffer; offset: uint64 = 0x0) :Arguments: * **cmd** : :ref:`CommandBuffer ` * **binding** : uint * **buffer** : :ref:`Buffer ` * **offset** : uint64 .. _function-vulkan_boost_cmd_draw_CommandBuffer_uint_uint: .. das:function:: cmd_draw(cmd: CommandBuffer; vertex_count: uint; instance_count: uint = 0x1) def cmd_draw (cmd: CommandBuffer; vertex_count: uint; instance_count: uint = 0x1) :Arguments: * **cmd** : :ref:`CommandBuffer ` * **vertex_count** : uint * **instance_count** : uint .. _function-vulkan_boost_cmd_push_constants_CommandBuffer_PipelineLayout_VkShaderStageFlags_uint_autoTT_0x950: .. das:function:: cmd_push_constants(cmd: CommandBuffer; layout: PipelineLayout; stages: VkShaderStageFlags; offset: uint; value: auto(TT)) : auto def cmd_push_constants (cmd: CommandBuffer; layout: PipelineLayout; stages: VkShaderStageFlags; offset: uint; var value: auto(TT)) : auto :Arguments: * **cmd** : :ref:`CommandBuffer ` * **layout** : :ref:`PipelineLayout ` * **stages** : :ref:`VkShaderStageFlags ` * **offset** : uint * **value** : auto(TT) .. _function-vulkan_boost_copy_image_to_buffer_CommandBuffer_Image_HostBuffer_int_int: .. das:function:: copy_image_to_buffer(cmd: CommandBuffer; image: Image; buffer: HostBuffer; width: int; height: int) def copy_image_to_buffer (cmd: CommandBuffer; image: Image; buffer: HostBuffer; width: int; height: int) :Arguments: * **cmd** : :ref:`CommandBuffer ` * **image** : :ref:`Image ` * **buffer** : :ref:`HostBuffer ` * **width** : int * **height** : int .. _function-vulkan_boost_transition_depth_image_CommandBuffer_Image_VkImageLayout_VkImageLayout_VkAccessFlags_VkAccessFlags_VkPipelineStageFlags_VkPipelineStageFlags: .. das:function:: transition_depth_image(cmd: CommandBuffer; image: Image; old_layout: VkImageLayout; new_layout: VkImageLayout; src_access: VkAccessFlags; dst_access: VkAccessFlags; src_stage: VkPipelineStageFlags; dst_stage: VkPipelineStageFlags) def transition_depth_image (cmd: CommandBuffer; image: Image; old_layout: VkImageLayout; new_layout: VkImageLayout; src_access: VkAccessFlags; dst_access: VkAccessFlags; src_stage: VkPipelineStageFlags; dst_stage: VkPipelineStageFlags) :Arguments: * **cmd** : :ref:`CommandBuffer ` * **image** : :ref:`Image ` * **old_layout** : :ref:`VkImageLayout ` * **new_layout** : :ref:`VkImageLayout ` * **src_access** : :ref:`VkAccessFlags ` * **dst_access** : :ref:`VkAccessFlags ` * **src_stage** : :ref:`VkPipelineStageFlags ` * **dst_stage** : :ref:`VkPipelineStageFlags ` .. _function-vulkan_boost_transition_image_CommandBuffer_Image_VkImageLayout_VkImageLayout_VkAccessFlags_VkAccessFlags_VkPipelineStageFlags_VkPipelineStageFlags: .. das:function:: transition_image(cmd: CommandBuffer; image: Image; old_layout: VkImageLayout; new_layout: VkImageLayout; src_access: VkAccessFlags; dst_access: VkAccessFlags; src_stage: VkPipelineStageFlags; dst_stage: VkPipelineStageFlags) def transition_image (cmd: CommandBuffer; image: Image; old_layout: VkImageLayout; new_layout: VkImageLayout; src_access: VkAccessFlags; dst_access: VkAccessFlags; src_stage: VkPipelineStageFlags; dst_stage: VkPipelineStageFlags) :Arguments: * **cmd** : :ref:`CommandBuffer ` * **image** : :ref:`Image ` * **old_layout** : :ref:`VkImageLayout ` * **new_layout** : :ref:`VkImageLayout ` * **src_access** : :ref:`VkAccessFlags ` * **dst_access** : :ref:`VkAccessFlags ` * **src_stage** : :ref:`VkPipelineStageFlags ` * **dst_stage** : :ref:`VkPipelineStageFlags ` .. _function-vulkan_boost_transition_image_aspect_CommandBuffer_Image_VkImageLayout_VkImageLayout_VkAccessFlags_VkAccessFlags_VkPipelineStageFlags_VkPipelineStageFlags_VkImageAspectFlags: .. das:function:: transition_image_aspect(cmd: CommandBuffer; image: Image; old_layout: VkImageLayout; new_layout: VkImageLayout; src_access: VkAccessFlags; dst_access: VkAccessFlags; src_stage: VkPipelineStageFlags; dst_stage: VkPipelineStageFlags; aspect: VkImageAspectFlags) def transition_image_aspect (cmd: CommandBuffer; image: Image; old_layout: VkImageLayout; new_layout: VkImageLayout; src_access: VkAccessFlags; dst_access: VkAccessFlags; src_stage: VkPipelineStageFlags; dst_stage: VkPipelineStageFlags; aspect: VkImageAspectFlags) :Arguments: * **cmd** : :ref:`CommandBuffer ` * **image** : :ref:`Image ` * **old_layout** : :ref:`VkImageLayout ` * **new_layout** : :ref:`VkImageLayout ` * **src_access** : :ref:`VkAccessFlags ` * **dst_access** : :ref:`VkAccessFlags ` * **src_stage** : :ref:`VkPipelineStageFlags ` * **dst_stage** : :ref:`VkPipelineStageFlags ` * **aspect** : :ref:`VkImageAspectFlags ` ++++++++++++ Conveniences ++++++++++++ * :ref:`clear_color (r: float; g: float; b: float; a: float) : VkClearValue ` * :ref:`clear_depth (depth: float = 1f; stencil: uint = 0x0) : VkClearValue ` * :ref:`full_area (width: int; height: int) : VkRect2D ` .. _function-vulkan_boost_clear_color_float_float_float_float: .. das:function:: clear_color(r: float; g: float; b: float; a: float) : VkClearValue def clear_color (r: float; g: float; b: float; a: float) : VkClearValue :Arguments: * **r** : float * **g** : float * **b** : float * **a** : float .. _function-vulkan_boost_clear_depth_float_uint: .. das:function:: clear_depth(depth: float = 1f; stencil: uint = 0x0) : VkClearValue def clear_depth (depth: float = 1f; stencil: uint = 0x0) : VkClearValue :Arguments: * **depth** : float * **stencil** : uint .. _function-vulkan_boost_full_area_int_int: .. das:function:: full_area(width: int; height: int) : VkRect2D def full_area (width: int; height: int) : VkRect2D :Arguments: * **width** : int * **height** : int ++++++++++++++++++++++++++++++++++ Compute tier & device capabilities ++++++++++++++++++++++++++++++++++ * :ref:`cooperative_matrix2_fa_supported (phys: VkPhysicalDevice) : bool ` * :ref:`cooperative_matrix2_properties (phys: VkPhysicalDevice) : VkPhysicalDeviceCooperativeMatrix2PropertiesNV ` * :ref:`cooperative_matrix2_supported (phys: VkPhysicalDevice) : bool ` * :ref:`cooperative_matrix_supported (phys: VkPhysicalDevice) : bool ` * :ref:`cooperative_vector_supported (phys: VkPhysicalDevice) : bool ` * :ref:`create_device_cooperative_matrix (phys: VkPhysicalDevice; queue_family: uint) : Device ` * :ref:`create_device_coopmat_full_subgroups (phys: VkPhysicalDevice; queue_family: uint) : Device ` * :ref:`create_device_storage_8_16 (phys: VkPhysicalDevice; queue_family: uint) : Device ` * :ref:`create_device_storage_8_16 (phys: VkPhysicalDevice; queue_family: uint; extensions: array\) : Device ` * :ref:`create_device_storage_8_16_int_dot (phys: VkPhysicalDevice; queue_family: uint) : Device ` * :ref:`create_device_storage_8_16_int_dot_coopmat (phys: VkPhysicalDevice; queue_family: uint; transfer_family: int = -1) : Device ` * :ref:`create_device_storage_8_16_int_dot_coopmat2 (phys: VkPhysicalDevice; queue_family: uint; transfer_family: int = -1) : Device ` * :ref:`external_memory_host_min_alignment (phys: VkPhysicalDevice) : uint64 ` * :ref:`external_memory_host_supported (phys: VkPhysicalDevice) : bool ` * :ref:`integer_dot_product_supported (phys: VkPhysicalDevice) : bool ` * :ref:`memory_priority_supported (phys: VkPhysicalDevice) : bool ` * :ref:`select_transfer_queue_family (phys: VkPhysicalDevice) : int ` * :ref:`storage_8_16_supported (phys: VkPhysicalDevice) : bool ` * :ref:`subgroup_compute_ops_supported (phys: VkPhysicalDevice) : bool ` * :ref:`subgroup_properties (phys: VkPhysicalDevice) : VkPhysicalDeviceSubgroupProperties ` * :ref:`timeline_semaphore_supported (phys: VkPhysicalDevice) : bool ` .. _function-vulkan_boost_cooperative_matrix2_fa_supported_VkPhysicalDevice: .. das:function:: cooperative_matrix2_fa_supported(phys: VkPhysicalDevice) : bool def cooperative_matrix2_fa_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_cooperative_matrix2_properties_VkPhysicalDevice: .. das:function:: cooperative_matrix2_properties(phys: VkPhysicalDevice) : VkPhysicalDeviceCooperativeMatrix2PropertiesNV def cooperative_matrix2_properties (phys: VkPhysicalDevice) : VkPhysicalDeviceCooperativeMatrix2PropertiesNV :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_cooperative_matrix2_supported_VkPhysicalDevice: .. das:function:: cooperative_matrix2_supported(phys: VkPhysicalDevice) : bool def cooperative_matrix2_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_cooperative_matrix_supported_VkPhysicalDevice: .. das:function:: cooperative_matrix_supported(phys: VkPhysicalDevice) : bool def cooperative_matrix_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_cooperative_vector_supported_VkPhysicalDevice: .. das:function:: cooperative_vector_supported(phys: VkPhysicalDevice) : bool def cooperative_vector_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_create_device_cooperative_matrix_VkPhysicalDevice_uint: .. das:function:: create_device_cooperative_matrix(phys: VkPhysicalDevice; queue_family: uint) : Device def create_device_cooperative_matrix (phys: VkPhysicalDevice; queue_family: uint) : Device :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **queue_family** : uint .. _function-vulkan_boost_create_device_coopmat_full_subgroups_VkPhysicalDevice_uint: .. das:function:: create_device_coopmat_full_subgroups(phys: VkPhysicalDevice; queue_family: uint) : Device def create_device_coopmat_full_subgroups (phys: VkPhysicalDevice; queue_family: uint) : Device :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **queue_family** : uint create_device_storage_8_16 ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _function-vulkan_boost_create_device_storage_8_16_VkPhysicalDevice_uint: .. das:function:: create_device_storage_8_16(phys: VkPhysicalDevice; queue_family: uint) : Device def create_device_storage_8_16 (phys: VkPhysicalDevice; queue_family: uint) : Device :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **queue_family** : uint .. _function-vulkan_boost_create_device_storage_8_16_VkPhysicalDevice_uint_array_ls_string_gr_: .. das:function:: create_device_storage_8_16(phys: VkPhysicalDevice; queue_family: uint; extensions: array) : Device ---- .. _function-vulkan_boost_create_device_storage_8_16_int_dot_VkPhysicalDevice_uint: .. das:function:: create_device_storage_8_16_int_dot(phys: VkPhysicalDevice; queue_family: uint) : Device def create_device_storage_8_16_int_dot (phys: VkPhysicalDevice; queue_family: uint) : Device :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **queue_family** : uint .. _function-vulkan_boost_create_device_storage_8_16_int_dot_coopmat_VkPhysicalDevice_uint_int: .. das:function:: create_device_storage_8_16_int_dot_coopmat(phys: VkPhysicalDevice; queue_family: uint; transfer_family: int = -1) : Device def create_device_storage_8_16_int_dot_coopmat (phys: VkPhysicalDevice; queue_family: uint; transfer_family: int = -1) : Device :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **queue_family** : uint * **transfer_family** : int .. _function-vulkan_boost_create_device_storage_8_16_int_dot_coopmat2_VkPhysicalDevice_uint_int: .. das:function:: create_device_storage_8_16_int_dot_coopmat2(phys: VkPhysicalDevice; queue_family: uint; transfer_family: int = -1) : Device def create_device_storage_8_16_int_dot_coopmat2 (phys: VkPhysicalDevice; queue_family: uint; transfer_family: int = -1) : Device :Arguments: * **phys** : :ref:`VkPhysicalDevice ` * **queue_family** : uint * **transfer_family** : int .. _function-vulkan_boost_external_memory_host_min_alignment_VkPhysicalDevice: .. das:function:: external_memory_host_min_alignment(phys: VkPhysicalDevice) : uint64 def external_memory_host_min_alignment (phys: VkPhysicalDevice) : uint64 :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_external_memory_host_supported_VkPhysicalDevice: .. das:function:: external_memory_host_supported(phys: VkPhysicalDevice) : bool def external_memory_host_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_integer_dot_product_supported_VkPhysicalDevice: .. das:function:: integer_dot_product_supported(phys: VkPhysicalDevice) : bool def integer_dot_product_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_memory_priority_supported_VkPhysicalDevice: .. das:function:: memory_priority_supported(phys: VkPhysicalDevice) : bool def memory_priority_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_select_transfer_queue_family_VkPhysicalDevice: .. das:function:: select_transfer_queue_family(phys: VkPhysicalDevice) : int def select_transfer_queue_family (phys: VkPhysicalDevice) : int :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_storage_8_16_supported_VkPhysicalDevice: .. das:function:: storage_8_16_supported(phys: VkPhysicalDevice) : bool def storage_8_16_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_subgroup_compute_ops_supported_VkPhysicalDevice: .. das:function:: subgroup_compute_ops_supported(phys: VkPhysicalDevice) : bool def subgroup_compute_ops_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_subgroup_properties_VkPhysicalDevice: .. das:function:: subgroup_properties(phys: VkPhysicalDevice) : VkPhysicalDeviceSubgroupProperties def subgroup_properties (phys: VkPhysicalDevice) : VkPhysicalDeviceSubgroupProperties :Arguments: * **phys** : :ref:`VkPhysicalDevice ` .. _function-vulkan_boost_timeline_semaphore_supported_VkPhysicalDevice: .. das:function:: timeline_semaphore_supported(phys: VkPhysicalDevice) : bool def timeline_semaphore_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice ` ++++++++++++++++++++++ Pipeline introspection ++++++++++++++++++++++ * :ref:`dump_pipeline_executables (device: Device; pipeline: Pipeline) : string ` * :ref:`pipeline_exec_props_supported (phys: VkPhysicalDevice) : bool ` .. _function-vulkan_boost_dump_pipeline_executables_Device_Pipeline: .. das:function:: dump_pipeline_executables(device: Device; pipeline: Pipeline) : string def dump_pipeline_executables (device: Device; pipeline: Pipeline) : string :Arguments: * **device** : :ref:`Device ` * **pipeline** : :ref:`Pipeline ` .. _function-vulkan_boost_pipeline_exec_props_supported_VkPhysicalDevice: .. das:function:: pipeline_exec_props_supported(phys: VkPhysicalDevice) : bool def pipeline_exec_props_supported (phys: VkPhysicalDevice) : bool :Arguments: * **phys** : :ref:`VkPhysicalDevice `