Update dependencies (#1904)

* Update dependencies

* MacOS fix
This commit is contained in:
Rua 2022-05-29 19:27:47 +02:00 committed by GitHub
parent 2fcfcadb9e
commit d3217d2531
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
54 changed files with 702 additions and 673 deletions

View File

@ -18,7 +18,7 @@ proc-macro = true
heck = "0.4"
proc-macro2 = "1.0"
quote = "1.0"
shaderc = "0.7.4"
shaderc = "0.8"
syn = { version = "1.0", features = ["full", "extra-traits"] }
vulkano = { version = "0.29.0", path = "../vulkano" }

View File

@ -154,7 +154,7 @@ pub fn compile(
spirv_version: Option<SpirvVersion>,
) -> Result<(CompilationArtifact, Vec<String>), String> {
let includes_tracker = RefCell::new(Vec::new());
let mut compiler = Compiler::new().ok_or("failed to create GLSL compiler")?;
let compiler = Compiler::new().ok_or("failed to create GLSL compiler")?;
let mut compile_options = CompileOptions::new().ok_or("failed to initialize compile option")?;
compile_options.set_target_env(

View File

@ -17,11 +17,11 @@ winit_ = ["winit", "metal", "cocoa", "objc"]
raw-window-handle_ = ["raw-window-handle"]
[dependencies]
winit = { version = "0.26", optional = true }
vulkano = { version = "0.29.0", path = "../vulkano" }
raw-window-handle = { version = "0.4", optional = true }
vulkano = { version = "0.29.0", path = "../vulkano" }
winit = { version = "0.26", optional = true }
[target.'cfg(target_os = "macos")'.dependencies]
metal = { version = "0.18.0", optional = true }
cocoa = { version = "0.20.0", optional = true }
objc = { version = "0.2.7", optional = true }
cocoa = { version = "0.24", optional = true }
metal = { version = "0.23", optional = true }
objc = { version = "0.2", optional = true }

View File

@ -170,7 +170,7 @@ use cocoa::{
base::id as cocoa_id,
};
#[cfg(target_os = "macos")]
use metal::CoreAnimationLayer;
use metal::MetalLayer;
#[cfg(target_os = "macos")]
use objc::runtime::YES;
#[cfg(target_os = "macos")]
@ -183,7 +183,7 @@ unsafe fn set_ca_metal_layer_to_winit<W: SafeBorrow<Window>>(win: W) {
use winit::platform::macos::WindowExtMacOS;
let wnd: cocoa_id = mem::transmute(win.borrow().ns_window());
let layer = CoreAnimationLayer::new();
let layer = MetalLayer::new();
layer.set_edge_antialiasing_mask(0);
layer.set_presents_with_transaction(false);

View File

@ -16,12 +16,12 @@ build = "build.rs"
[dependencies]
# When updating Ash, also update vk.xml to the same Vulkan patch version that Ash uses.
# All versions of vk.xml can be found at https://github.com/KhronosGroup/Vulkan-Headers/commits/main/registry/vk.xml.
ash = "0.36"
ash = "0.37"
bytemuck = { version = "1.7", features = ["derive", "extern_crate_std", "min_const_generics"] }
crossbeam-queue = "0.3"
half = "1.8"
lazy_static = "1.4"
nalgebra = { version = "0.30.0", optional = true }
nalgebra = { version = "0.31.0", optional = true }
parking_lot = { version = "0.12", features = ["send_guard"] }
rangemap = { git = "https://github.com/vulkano-rs/rangemap", branch = "range-split" }
shared_library = "0.1"

View File

@ -160,7 +160,7 @@ impl UnsafeBuffer {
let handle = unsafe {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_buffer(
check_errors((fns.v1_0.create_buffer)(
device.internal_object(),
&create_info.build(),
ptr::null(),
@ -218,21 +218,21 @@ impl UnsafeBuffer {
.khr_get_memory_requirements2
{
if self.device.api_version() >= Version::V1_1 {
fns.v1_1.get_buffer_memory_requirements2(
(fns.v1_1.get_buffer_memory_requirements2)(
self.device.internal_object(),
&buffer_memory_requirements_info2,
&mut memory_requirements2,
);
} else {
fns.khr_get_memory_requirements2
.get_buffer_memory_requirements2_khr(
self.device.internal_object(),
&buffer_memory_requirements_info2,
&mut memory_requirements2,
);
(fns.khr_get_memory_requirements2
.get_buffer_memory_requirements2_khr)(
self.device.internal_object(),
&buffer_memory_requirements_info2,
&mut memory_requirements2,
);
}
} else {
fns.v1_0.get_buffer_memory_requirements(
(fns.v1_0.get_buffer_memory_requirements)(
self.device.internal_object(),
self.handle,
&mut memory_requirements2.memory_requirements,
@ -286,7 +286,7 @@ impl UnsafeBuffer {
// We check for correctness in debug mode.
debug_assert!({
let mut mem_reqs = MaybeUninit::uninit();
fns.v1_0.get_buffer_memory_requirements(
(fns.v1_0.get_buffer_memory_requirements)(
self.device.internal_object(),
self.handle,
mem_reqs.as_mut_ptr(),
@ -312,7 +312,7 @@ impl UnsafeBuffer {
}
}
check_errors(fns.v1_0.bind_buffer_memory(
check_errors((fns.v1_0.bind_buffer_memory)(
self.device.internal_object(),
self.handle,
memory.internal_object(),
@ -349,8 +349,7 @@ impl Drop for UnsafeBuffer {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0
.destroy_buffer(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_buffer)(self.device.internal_object(), self.handle, ptr::null());
}
}
}

View File

@ -94,10 +94,11 @@ pub unsafe trait BufferAccess: DeviceOwned + Send + Sync {
buffer: inner.buffer.internal_object(),
..Default::default()
};
let ptr = device
.fns()
.ext_buffer_device_address
.get_buffer_device_address_ext(device.internal_object(), &info);
let fns = device.fns();
let ptr = (fns.ext_buffer_device_address.get_buffer_device_address_ext)(
device.internal_object(),
&info,
);
if ptr == 0 {
panic!("got null ptr from a valid GetBufferDeviceAddressEXT call");

View File

@ -207,7 +207,7 @@ where
let handle = unsafe {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_buffer_view(
check_errors((fns.v1_0.create_buffer_view)(
device.internal_object(),
&create_info,
ptr::null(),
@ -241,7 +241,7 @@ where
fn drop(&mut self) {
unsafe {
let fns = self.buffer.inner().buffer.device().fns();
fns.v1_0.destroy_buffer_view(
(fns.v1_0.destroy_buffer_view)(
self.buffer.inner().buffer.device().internal_object(),
self.handle,
ptr::null(),

View File

@ -828,7 +828,7 @@ impl UnsafeCommandBufferBuilder {
let num_bindings = sets.len() as u32;
debug_assert!(first_set + num_bindings <= pipeline_layout.set_layouts().len() as u32);
fns.v1_0.cmd_bind_descriptor_sets(
(fns.v1_0.cmd_bind_descriptor_sets)(
self.handle,
pipeline_bind_point.into(),
pipeline_layout.internal_object(),
@ -849,7 +849,7 @@ impl UnsafeCommandBufferBuilder {
debug_assert!(inner.offset < inner.buffer.size());
debug_assert!(inner.buffer.usage().index_buffer);
fns.v1_0.cmd_bind_index_buffer(
(fns.v1_0.cmd_bind_index_buffer)(
self.handle,
inner.buffer.internal_object(),
inner.offset,
@ -861,7 +861,7 @@ impl UnsafeCommandBufferBuilder {
#[inline]
pub unsafe fn bind_pipeline_compute(&mut self, pipeline: &ComputePipeline) {
let fns = self.device.fns();
fns.v1_0.cmd_bind_pipeline(
(fns.v1_0.cmd_bind_pipeline)(
self.handle,
ash::vk::PipelineBindPoint::COMPUTE,
pipeline.internal_object(),
@ -872,7 +872,7 @@ impl UnsafeCommandBufferBuilder {
#[inline]
pub unsafe fn bind_pipeline_graphics(&mut self, pipeline: &GraphicsPipeline) {
let fns = self.device.fns();
fns.v1_0.cmd_bind_pipeline(
(fns.v1_0.cmd_bind_pipeline)(
self.handle,
ash::vk::PipelineBindPoint::GRAPHICS,
pipeline.internal_object(),
@ -909,7 +909,7 @@ impl UnsafeCommandBufferBuilder {
first_binding + num_bindings <= max_bindings
});
fns.v1_0.cmd_bind_vertex_buffers(
(fns.v1_0.cmd_bind_vertex_buffers)(
self.handle,
first_binding,
num_bindings,
@ -938,7 +938,7 @@ impl UnsafeCommandBufferBuilder {
debug_assert_eq!(offset % 4, 0);
debug_assert!(size_of_val(data) >= size as usize);
fns.v1_0.cmd_push_constants(
(fns.v1_0.cmd_push_constants)(
self.handle,
pipeline_layout.internal_object(),
stages.into(),
@ -1000,7 +1000,7 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
fns.khr_push_descriptor.cmd_push_descriptor_set_khr(
(fns.khr_push_descriptor.cmd_push_descriptor_set_khr)(
self.handle,
pipeline_bind_point.into(),
pipeline_layout.internal_object(),

View File

@ -242,8 +242,7 @@ impl UnsafeCommandBufferBuilder {
};
let fns = self.device.instance().fns();
fns.ext_debug_utils
.cmd_begin_debug_utils_label_ext(self.handle, &label_info);
(fns.ext_debug_utils.cmd_begin_debug_utils_label_ext)(self.handle, &label_info);
}
/// Calls `vkCmdEndDebugUtilsLabelEXT` on the builder.
@ -254,8 +253,7 @@ impl UnsafeCommandBufferBuilder {
#[inline]
pub unsafe fn end_debug_utils_label(&mut self) {
let fns = self.device.instance().fns();
fns.ext_debug_utils
.cmd_end_debug_utils_label_ext(self.handle);
(fns.ext_debug_utils.cmd_end_debug_utils_label_ext)(self.handle);
}
/// Calls `vkCmdInsertDebugUtilsLabelEXT` on the builder.
@ -279,8 +277,7 @@ impl UnsafeCommandBufferBuilder {
};
let fns = self.device.instance().fns();
fns.ext_debug_utils
.cmd_insert_debug_utils_label_ext(self.handle, &label_info);
(fns.ext_debug_utils.cmd_insert_debug_utils_label_ext)(self.handle, &label_info);
}
}

View File

@ -1841,7 +1841,7 @@ impl UnsafeCommandBufferBuilder {
#[inline]
pub unsafe fn set_blend_constants(&mut self, constants: [f32; 4]) {
let fns = self.device.fns();
fns.v1_0.cmd_set_blend_constants(self.handle, &constants);
(fns.v1_0.cmd_set_blend_constants)(self.handle, &constants);
}
/// Calls `vkCmdSetColorWriteEnableEXT` on the builder.
@ -1861,7 +1861,7 @@ impl UnsafeCommandBufferBuilder {
}
let fns = self.device.fns();
fns.ext_color_write_enable.cmd_set_color_write_enable_ext(
(fns.ext_color_write_enable.cmd_set_color_write_enable_ext)(
self.handle,
enables.len() as u32,
enables.as_ptr(),
@ -1874,12 +1874,11 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3.cmd_set_cull_mode(self.handle, cull_mode.into());
(fns.v1_3.cmd_set_cull_mode)(self.handle, cull_mode.into());
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state);
debug_assert!(self.device.enabled_features().extended_dynamic_state);
fns.ext_extended_dynamic_state
.cmd_set_cull_mode_ext(self.handle, cull_mode.into());
(fns.ext_extended_dynamic_state.cmd_set_cull_mode_ext)(self.handle, cull_mode.into());
}
}
@ -1888,8 +1887,7 @@ impl UnsafeCommandBufferBuilder {
pub unsafe fn set_depth_bias(&mut self, constant_factor: f32, clamp: f32, slope_factor: f32) {
debug_assert!(clamp == 0.0 || self.device.enabled_features().depth_bias_clamp);
let fns = self.device.fns();
fns.v1_0
.cmd_set_depth_bias(self.handle, constant_factor, clamp, slope_factor);
(fns.v1_0.cmd_set_depth_bias)(self.handle, constant_factor, clamp, slope_factor);
}
/// Calls `vkCmdSetDepthBiasEnableEXT` on the builder.
@ -1898,13 +1896,12 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_set_depth_bias_enable(self.handle, enable.into());
(fns.v1_3.cmd_set_depth_bias_enable)(self.handle, enable.into());
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state2);
debug_assert!(self.device.enabled_features().extended_dynamic_state2);
fns.ext_extended_dynamic_state2
.cmd_set_depth_bias_enable_ext(self.handle, enable.into());
(fns.ext_extended_dynamic_state2
.cmd_set_depth_bias_enable_ext)(self.handle, enable.into());
}
}
@ -1914,7 +1911,7 @@ impl UnsafeCommandBufferBuilder {
debug_assert!(min >= 0.0 && min <= 1.0);
debug_assert!(max >= 0.0 && max <= 1.0);
let fns = self.device.fns();
fns.v1_0.cmd_set_depth_bounds(self.handle, min, max);
(fns.v1_0.cmd_set_depth_bounds)(self.handle, min, max);
}
/// Calls `vkCmdSetDepthBoundsTestEnableEXT` on the builder.
@ -1923,13 +1920,12 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_set_depth_bounds_test_enable(self.handle, enable.into());
(fns.v1_3.cmd_set_depth_bounds_test_enable)(self.handle, enable.into());
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state);
debug_assert!(self.device.enabled_features().extended_dynamic_state);
fns.ext_extended_dynamic_state
.cmd_set_depth_bounds_test_enable_ext(self.handle, enable.into());
(fns.ext_extended_dynamic_state
.cmd_set_depth_bounds_test_enable_ext)(self.handle, enable.into());
}
}
@ -1939,13 +1935,14 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_set_depth_compare_op(self.handle, compare_op.into());
(fns.v1_3.cmd_set_depth_compare_op)(self.handle, compare_op.into());
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state);
debug_assert!(self.device.enabled_features().extended_dynamic_state);
fns.ext_extended_dynamic_state
.cmd_set_depth_compare_op_ext(self.handle, compare_op.into());
(fns.ext_extended_dynamic_state.cmd_set_depth_compare_op_ext)(
self.handle,
compare_op.into(),
);
}
}
@ -1955,13 +1952,14 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_set_depth_test_enable(self.handle, enable.into());
(fns.v1_3.cmd_set_depth_test_enable)(self.handle, enable.into());
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state);
debug_assert!(self.device.enabled_features().extended_dynamic_state);
fns.ext_extended_dynamic_state
.cmd_set_depth_test_enable_ext(self.handle, enable.into());
(fns.ext_extended_dynamic_state.cmd_set_depth_test_enable_ext)(
self.handle,
enable.into(),
);
}
}
@ -1971,13 +1969,12 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_set_depth_write_enable(self.handle, enable.into());
(fns.v1_3.cmd_set_depth_write_enable)(self.handle, enable.into());
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state);
debug_assert!(self.device.enabled_features().extended_dynamic_state);
fns.ext_extended_dynamic_state
.cmd_set_depth_write_enable_ext(self.handle, enable.into());
(fns.ext_extended_dynamic_state
.cmd_set_depth_write_enable_ext)(self.handle, enable.into());
}
}
@ -2011,7 +2008,7 @@ impl UnsafeCommandBufferBuilder {
);
let fns = self.device.fns();
fns.ext_discard_rectangles.cmd_set_discard_rectangle_ext(
(fns.ext_discard_rectangles.cmd_set_discard_rectangle_ext)(
self.handle,
first_rectangle,
rectangles.len() as u32,
@ -2025,12 +2022,11 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3.cmd_set_front_face(self.handle, face.into());
(fns.v1_3.cmd_set_front_face)(self.handle, face.into());
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state);
debug_assert!(self.device.enabled_features().extended_dynamic_state);
fns.ext_extended_dynamic_state
.cmd_set_front_face_ext(self.handle, face.into());
(fns.ext_extended_dynamic_state.cmd_set_front_face_ext)(self.handle, face.into());
}
}
@ -2040,8 +2036,7 @@ impl UnsafeCommandBufferBuilder {
debug_assert!(self.device.enabled_extensions().ext_line_rasterization);
debug_assert!(factor >= 1 && factor <= 256);
let fns = self.device.fns();
fns.ext_line_rasterization
.cmd_set_line_stipple_ext(self.handle, factor, pattern);
(fns.ext_line_rasterization.cmd_set_line_stipple_ext)(self.handle, factor, pattern);
}
/// Calls `vkCmdSetLineWidth` on the builder.
@ -2049,7 +2044,7 @@ impl UnsafeCommandBufferBuilder {
pub unsafe fn set_line_width(&mut self, line_width: f32) {
debug_assert!(line_width == 1.0 || self.device.enabled_features().wide_lines);
let fns = self.device.fns();
fns.v1_0.cmd_set_line_width(self.handle, line_width);
(fns.v1_0.cmd_set_line_width)(self.handle, line_width);
}
/// Calls `vkCmdSetLogicOpEXT` on the builder.
@ -2063,8 +2058,7 @@ impl UnsafeCommandBufferBuilder {
);
let fns = self.device.fns();
fns.ext_extended_dynamic_state2
.cmd_set_logic_op_ext(self.handle, logic_op.into());
(fns.ext_extended_dynamic_state2.cmd_set_logic_op_ext)(self.handle, logic_op.into());
}
/// Calls `vkCmdSetPatchControlPointsEXT` on the builder.
@ -2086,8 +2080,8 @@ impl UnsafeCommandBufferBuilder {
.max_tessellation_patch_size
);
let fns = self.device.fns();
fns.ext_extended_dynamic_state2
.cmd_set_patch_control_points_ext(self.handle, num);
(fns.ext_extended_dynamic_state2
.cmd_set_patch_control_points_ext)(self.handle, num);
}
/// Calls `vkCmdSetPrimitiveRestartEnableEXT` on the builder.
@ -2096,13 +2090,12 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_set_primitive_restart_enable(self.handle, enable.into());
(fns.v1_3.cmd_set_primitive_restart_enable)(self.handle, enable.into());
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state2);
debug_assert!(self.device.enabled_features().extended_dynamic_state2);
fns.ext_extended_dynamic_state2
.cmd_set_primitive_restart_enable_ext(self.handle, enable.into());
(fns.ext_extended_dynamic_state2
.cmd_set_primitive_restart_enable_ext)(self.handle, enable.into());
}
}
@ -2112,13 +2105,12 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_set_primitive_topology(self.handle, topology.into());
(fns.v1_3.cmd_set_primitive_topology)(self.handle, topology.into());
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state);
debug_assert!(self.device.enabled_features().extended_dynamic_state);
fns.ext_extended_dynamic_state
.cmd_set_primitive_topology_ext(self.handle, topology.into());
(fns.ext_extended_dynamic_state
.cmd_set_primitive_topology_ext)(self.handle, topology.into());
}
}
@ -2128,13 +2120,12 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_set_rasterizer_discard_enable(self.handle, enable.into());
(fns.v1_3.cmd_set_rasterizer_discard_enable)(self.handle, enable.into());
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state2);
debug_assert!(self.device.enabled_features().extended_dynamic_state2);
fns.ext_extended_dynamic_state2
.cmd_set_rasterizer_discard_enable_ext(self.handle, enable.into());
(fns.ext_extended_dynamic_state2
.cmd_set_rasterizer_discard_enable_ext)(self.handle, enable.into());
}
}
@ -2142,8 +2133,7 @@ impl UnsafeCommandBufferBuilder {
#[inline]
pub unsafe fn set_stencil_compare_mask(&mut self, face_mask: StencilFaces, compare_mask: u32) {
let fns = self.device.fns();
fns.v1_0
.cmd_set_stencil_compare_mask(self.handle, face_mask.into(), compare_mask);
(fns.v1_0.cmd_set_stencil_compare_mask)(self.handle, face_mask.into(), compare_mask);
}
/// Calls `vkCmdSetStencilOpEXT` on the builder.
@ -2159,7 +2149,7 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3.cmd_set_stencil_op(
(fns.v1_3.cmd_set_stencil_op)(
self.handle,
face_mask.into(),
fail_op.into(),
@ -2170,7 +2160,7 @@ impl UnsafeCommandBufferBuilder {
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state);
debug_assert!(self.device.enabled_features().extended_dynamic_state);
fns.ext_extended_dynamic_state.cmd_set_stencil_op_ext(
(fns.ext_extended_dynamic_state.cmd_set_stencil_op_ext)(
self.handle,
face_mask.into(),
fail_op.into(),
@ -2185,8 +2175,7 @@ impl UnsafeCommandBufferBuilder {
#[inline]
pub unsafe fn set_stencil_reference(&mut self, face_mask: StencilFaces, reference: u32) {
let fns = self.device.fns();
fns.v1_0
.cmd_set_stencil_reference(self.handle, face_mask.into(), reference);
(fns.v1_0.cmd_set_stencil_reference)(self.handle, face_mask.into(), reference);
}
/// Calls `vkCmdSetStencilTestEnableEXT` on the builder.
@ -2195,13 +2184,12 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_set_stencil_test_enable(self.handle, enable.into());
(fns.v1_3.cmd_set_stencil_test_enable)(self.handle, enable.into());
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state);
debug_assert!(self.device.enabled_features().extended_dynamic_state);
fns.ext_extended_dynamic_state
.cmd_set_stencil_test_enable_ext(self.handle, enable.into());
(fns.ext_extended_dynamic_state
.cmd_set_stencil_test_enable_ext)(self.handle, enable.into());
}
}
@ -2209,8 +2197,7 @@ impl UnsafeCommandBufferBuilder {
#[inline]
pub unsafe fn set_stencil_write_mask(&mut self, face_mask: StencilFaces, write_mask: u32) {
let fns = self.device.fns();
fns.v1_0
.cmd_set_stencil_write_mask(self.handle, face_mask.into(), write_mask);
(fns.v1_0.cmd_set_stencil_write_mask)(self.handle, face_mask.into(), write_mask);
}
/// Calls `vkCmdSetScissor` on the builder.
@ -2247,7 +2234,7 @@ impl UnsafeCommandBufferBuilder {
);
let fns = self.device.fns();
fns.v1_0.cmd_set_scissor(
(fns.v1_0.cmd_set_scissor)(
self.handle,
first_scissor,
scissors.len() as u32,
@ -2283,7 +2270,7 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3.cmd_set_scissor_with_count(
(fns.v1_3.cmd_set_scissor_with_count)(
self.handle,
scissors.len() as u32,
scissors.as_ptr(),
@ -2291,12 +2278,12 @@ impl UnsafeCommandBufferBuilder {
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state);
debug_assert!(self.device.enabled_features().extended_dynamic_state);
fns.ext_extended_dynamic_state
.cmd_set_scissor_with_count_ext(
self.handle,
scissors.len() as u32,
scissors.as_ptr(),
);
(fns.ext_extended_dynamic_state
.cmd_set_scissor_with_count_ext)(
self.handle,
scissors.len() as u32,
scissors.as_ptr(),
);
}
}
@ -2327,7 +2314,7 @@ impl UnsafeCommandBufferBuilder {
);
let fns = self.device.fns();
fns.v1_0.cmd_set_viewport(
(fns.v1_0.cmd_set_viewport)(
self.handle,
first_viewport,
viewports.len() as u32,
@ -2359,7 +2346,7 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3.cmd_set_viewport_with_count(
(fns.v1_3.cmd_set_viewport_with_count)(
self.handle,
viewports.len() as u32,
viewports.as_ptr(),
@ -2367,12 +2354,12 @@ impl UnsafeCommandBufferBuilder {
} else {
debug_assert!(self.device.enabled_extensions().ext_extended_dynamic_state);
debug_assert!(self.device.enabled_features().extended_dynamic_state);
fns.ext_extended_dynamic_state
.cmd_set_viewport_with_count_ext(
self.handle,
viewports.len() as u32,
viewports.as_ptr(),
);
(fns.ext_extended_dynamic_state
.cmd_set_viewport_with_count_ext)(
self.handle,
viewports.len() as u32,
viewports.as_ptr(),
);
}
}
}

View File

@ -1563,10 +1563,9 @@ impl UnsafeCommandBufferBuilder {
};
if self.device.api_version() >= Version::V1_3 {
fns.v1_3.cmd_blit_image2(self.handle, &blit_image_info);
(fns.v1_3.cmd_blit_image2)(self.handle, &blit_image_info);
} else {
fns.khr_copy_commands2
.cmd_blit_image2_khr(self.handle, &blit_image_info);
(fns.khr_copy_commands2.cmd_blit_image2_khr)(self.handle, &blit_image_info);
}
} else {
let regions: SmallVec<[_; 8]> = regions
@ -1621,7 +1620,7 @@ impl UnsafeCommandBufferBuilder {
})
.collect();
fns.v1_0.cmd_blit_image(
(fns.v1_0.cmd_blit_image)(
self.handle,
src_image_inner.image.internal_object(),
src_image_layout.into(),
@ -1659,7 +1658,7 @@ impl UnsafeCommandBufferBuilder {
.collect();
let fns = self.device.fns();
fns.v1_0.cmd_clear_color_image(
(fns.v1_0.cmd_clear_color_image)(
self.handle,
image.inner().image.internal_object(),
image_layout.into(),
@ -1694,7 +1693,7 @@ impl UnsafeCommandBufferBuilder {
.collect();
let fns = self.device.fns();
fns.v1_0.cmd_clear_depth_stencil_image(
(fns.v1_0.cmd_clear_depth_stencil_image)(
self.handle,
image.inner().image.internal_object(),
image_layout.into(),
@ -1787,11 +1786,9 @@ impl UnsafeCommandBufferBuilder {
};
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_resolve_image2(self.handle, &resolve_image_info);
(fns.v1_3.cmd_resolve_image2)(self.handle, &resolve_image_info);
} else {
fns.khr_copy_commands2
.cmd_resolve_image2_khr(self.handle, &resolve_image_info);
(fns.khr_copy_commands2.cmd_resolve_image2_khr)(self.handle, &resolve_image_info);
}
} else {
let regions: SmallVec<[_; 8]> = regions
@ -1838,7 +1835,7 @@ impl UnsafeCommandBufferBuilder {
})
.collect();
fns.v1_0.cmd_resolve_image(
(fns.v1_0.cmd_resolve_image)(
self.handle,
src_image_inner.image.internal_object(),
src_image_layout.into(),

View File

@ -2239,7 +2239,7 @@ impl UnsafeCommandBufferBuilder {
});
let fns = self.device.fns();
fns.v1_0.cmd_dispatch(
(fns.v1_0.cmd_dispatch)(
self.handle,
group_counts[0],
group_counts[1],
@ -2257,8 +2257,7 @@ impl UnsafeCommandBufferBuilder {
debug_assert!(inner.buffer.usage().indirect_buffer);
debug_assert_eq!(inner.offset % 4, 0);
fns.v1_0
.cmd_dispatch_indirect(self.handle, inner.buffer.internal_object(), inner.offset);
(fns.v1_0.cmd_dispatch_indirect)(self.handle, inner.buffer.internal_object(), inner.offset);
}
/// Calls `vkCmdDraw` on the builder.
@ -2271,7 +2270,7 @@ impl UnsafeCommandBufferBuilder {
first_instance: u32,
) {
let fns = self.device.fns();
fns.v1_0.cmd_draw(
(fns.v1_0.cmd_draw)(
self.handle,
vertex_count,
instance_count,
@ -2291,7 +2290,7 @@ impl UnsafeCommandBufferBuilder {
first_instance: u32,
) {
let fns = self.device.fns();
fns.v1_0.cmd_draw_indexed(
(fns.v1_0.cmd_draw_indexed)(
self.handle,
index_count,
instance_count,
@ -2321,7 +2320,7 @@ impl UnsafeCommandBufferBuilder {
debug_assert!(inner.offset < inner.buffer.size());
debug_assert!(inner.buffer.usage().indirect_buffer);
fns.v1_0.cmd_draw_indirect(
(fns.v1_0.cmd_draw_indirect)(
self.handle,
inner.buffer.internal_object(),
inner.offset,
@ -2344,7 +2343,7 @@ impl UnsafeCommandBufferBuilder {
debug_assert!(inner.offset < inner.buffer.size());
debug_assert!(inner.buffer.usage().indirect_buffer);
fns.v1_0.cmd_draw_indexed_indirect(
(fns.v1_0.cmd_draw_indexed_indirect)(
self.handle,
inner.buffer.internal_object(),
inner.offset,

View File

@ -773,7 +773,7 @@ impl UnsafeCommandBufferBuilder {
} else {
ash::vk::QueryControlFlags::empty()
};
fns.v1_0.cmd_begin_query(
(fns.v1_0.cmd_begin_query)(
self.handle,
query.pool().internal_object(),
query.index(),
@ -785,15 +785,14 @@ impl UnsafeCommandBufferBuilder {
#[inline]
pub unsafe fn end_query(&mut self, query: Query) {
let fns = self.device.fns();
fns.v1_0
.cmd_end_query(self.handle, query.pool().internal_object(), query.index());
(fns.v1_0.cmd_end_query)(self.handle, query.pool().internal_object(), query.index());
}
/// Calls `vkCmdWriteTimestamp` on the builder.
#[inline]
pub unsafe fn write_timestamp(&mut self, query: Query, stage: PipelineStage) {
let fns = self.device.fns();
fns.v1_0.cmd_write_timestamp(
(fns.v1_0.cmd_write_timestamp)(
self.handle,
stage.into(),
query.pool().internal_object(),
@ -821,7 +820,7 @@ impl UnsafeCommandBufferBuilder {
debug_assert!(stride % size_of::<T>() as DeviceSize == 0);
let fns = self.device.fns();
fns.v1_0.cmd_copy_query_pool_results(
(fns.v1_0.cmd_copy_query_pool_results)(
self.handle,
queries.pool().internal_object(),
range.start,
@ -838,7 +837,7 @@ impl UnsafeCommandBufferBuilder {
pub unsafe fn reset_query_pool(&mut self, queries: QueriesRange) {
let range = queries.range();
let fns = self.device.fns();
fns.v1_0.cmd_reset_query_pool(
(fns.v1_0.cmd_reset_query_pool)(
self.handle,
queries.pool().internal_object(),
range.start,

View File

@ -1991,13 +1991,13 @@ impl UnsafeCommandBufferBuilder {
|| self.device.enabled_extensions().khr_create_renderpass2
{
if self.device.api_version() >= Version::V1_2 {
fns.v1_2.cmd_begin_render_pass2(
(fns.v1_2.cmd_begin_render_pass2)(
self.handle,
&render_pass_begin_info,
&subpass_begin_info,
);
} else {
fns.khr_create_renderpass2.cmd_begin_render_pass2_khr(
(fns.khr_create_renderpass2.cmd_begin_render_pass2_khr)(
self.handle,
&render_pass_begin_info,
&subpass_begin_info,
@ -2006,7 +2006,7 @@ impl UnsafeCommandBufferBuilder {
} else {
debug_assert!(subpass_begin_info.p_next.is_null());
fns.v1_0.cmd_begin_render_pass(
(fns.v1_0.cmd_begin_render_pass)(
self.handle,
&render_pass_begin_info,
subpass_begin_info.contents,
@ -2030,10 +2030,9 @@ impl UnsafeCommandBufferBuilder {
|| self.device.enabled_extensions().khr_create_renderpass2
{
if self.device.api_version() >= Version::V1_2 {
fns.v1_2
.cmd_next_subpass2(self.handle, &subpass_begin_info, &subpass_end_info);
(fns.v1_2.cmd_next_subpass2)(self.handle, &subpass_begin_info, &subpass_end_info);
} else {
fns.khr_create_renderpass2.cmd_next_subpass2_khr(
(fns.khr_create_renderpass2.cmd_next_subpass2_khr)(
self.handle,
&subpass_begin_info,
&subpass_end_info,
@ -2043,8 +2042,7 @@ impl UnsafeCommandBufferBuilder {
debug_assert!(subpass_begin_info.p_next.is_null());
debug_assert!(subpass_end_info.p_next.is_null());
fns.v1_0
.cmd_next_subpass(self.handle, subpass_begin_info.contents.into());
(fns.v1_0.cmd_next_subpass)(self.handle, subpass_begin_info.contents.into());
}
}
@ -2059,16 +2057,17 @@ impl UnsafeCommandBufferBuilder {
|| self.device.enabled_extensions().khr_create_renderpass2
{
if self.device.api_version() >= Version::V1_2 {
fns.v1_2
.cmd_end_render_pass2(self.handle, &subpass_end_info);
(fns.v1_2.cmd_end_render_pass2)(self.handle, &subpass_end_info);
} else {
fns.khr_create_renderpass2
.cmd_end_render_pass2_khr(self.handle, &subpass_end_info);
(fns.khr_create_renderpass2.cmd_end_render_pass2_khr)(
self.handle,
&subpass_end_info,
);
}
} else {
debug_assert!(subpass_end_info.p_next.is_null());
fns.v1_0.cmd_end_render_pass(self.handle);
(fns.v1_0.cmd_end_render_pass)(self.handle);
}
}
@ -2167,11 +2166,10 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3.cmd_begin_rendering(self.handle, &rendering_info);
(fns.v1_3.cmd_begin_rendering)(self.handle, &rendering_info);
} else {
debug_assert!(self.device.enabled_extensions().khr_dynamic_rendering);
fns.khr_dynamic_rendering
.cmd_begin_rendering_khr(self.handle, &rendering_info);
(fns.khr_dynamic_rendering.cmd_begin_rendering_khr)(self.handle, &rendering_info);
}
}
@ -2180,10 +2178,10 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3.cmd_end_rendering(self.handle);
(fns.v1_3.cmd_end_rendering)(self.handle);
} else {
debug_assert!(self.device.enabled_extensions().khr_dynamic_rendering);
fns.khr_dynamic_rendering.cmd_end_rendering_khr(self.handle);
(fns.khr_dynamic_rendering.cmd_end_rendering_khr)(self.handle);
}
}
@ -2221,7 +2219,7 @@ impl UnsafeCommandBufferBuilder {
}
let fns = self.device.fns();
fns.v1_0.cmd_clear_attachments(
(fns.v1_0.cmd_clear_attachments)(
self.handle,
attachments.len() as u32,
attachments.as_ptr(),

View File

@ -510,8 +510,11 @@ impl UnsafeCommandBufferBuilder {
}
let fns = self.device.fns();
fns.v1_0
.cmd_execute_commands(self.handle, cbs.raw_cbs.len() as u32, cbs.raw_cbs.as_ptr());
(fns.v1_0.cmd_execute_commands)(
self.handle,
cbs.raw_cbs.len() as u32,
cbs.raw_cbs.as_ptr(),
);
}
}

View File

@ -223,11 +223,9 @@ impl UnsafeCommandBufferBuilder {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_pipeline_barrier2(self.handle, &dependency_info);
(fns.v1_3.cmd_pipeline_barrier2)(self.handle, &dependency_info);
} else {
fns.khr_synchronization2
.cmd_pipeline_barrier2_khr(self.handle, &dependency_info);
(fns.khr_synchronization2.cmd_pipeline_barrier2_khr)(self.handle, &dependency_info);
}
} else {
let mut src_stage_mask = ash::vk::PipelineStageFlags::empty();
@ -375,7 +373,7 @@ impl UnsafeCommandBufferBuilder {
}
let fns = self.device.fns();
fns.v1_0.cmd_pipeline_barrier(
(fns.v1_0.cmd_pipeline_barrier)(
self.handle,
src_stage_mask,
dst_stage_mask,
@ -396,8 +394,7 @@ impl UnsafeCommandBufferBuilder {
debug_assert!(!stages.host);
debug_assert_ne!(stages, PipelineStages::none());
let fns = self.device.fns();
fns.v1_0
.cmd_set_event(self.handle, event.internal_object(), stages.into());
(fns.v1_0.cmd_set_event)(self.handle, event.internal_object(), stages.into());
}
/// Calls `vkCmdResetEvent` on the builder.
@ -408,7 +405,6 @@ impl UnsafeCommandBufferBuilder {
debug_assert!(!stages.host);
debug_assert_ne!(stages, PipelineStages::none());
fns.v1_0
.cmd_reset_event(self.handle, event.internal_object(), stages.into());
(fns.v1_0.cmd_reset_event)(self.handle, event.internal_object(), stages.into());
}
}

View File

@ -2500,10 +2500,9 @@ impl UnsafeCommandBufferBuilder {
};
if self.device.api_version() >= Version::V1_3 {
fns.v1_3.cmd_copy_buffer2(self.handle, &copy_buffer_info);
(fns.v1_3.cmd_copy_buffer2)(self.handle, &copy_buffer_info);
} else {
fns.khr_copy_commands2
.cmd_copy_buffer2_khr(self.handle, &copy_buffer_info);
(fns.khr_copy_commands2.cmd_copy_buffer2_khr)(self.handle, &copy_buffer_info);
}
} else {
let regions: SmallVec<[_; 8]> = regions
@ -2524,7 +2523,7 @@ impl UnsafeCommandBufferBuilder {
})
.collect();
fns.v1_0.cmd_copy_buffer(
(fns.v1_0.cmd_copy_buffer)(
self.handle,
src_buffer_inner.buffer.internal_object(),
dst_buffer_inner.buffer.internal_object(),
@ -2617,10 +2616,9 @@ impl UnsafeCommandBufferBuilder {
};
if self.device.api_version() >= Version::V1_3 {
fns.v1_3.cmd_copy_image2(self.handle, &copy_image_info);
(fns.v1_3.cmd_copy_image2)(self.handle, &copy_image_info);
} else {
fns.khr_copy_commands2
.cmd_copy_image2_khr(self.handle, &copy_image_info);
(fns.khr_copy_commands2.cmd_copy_image2_khr)(self.handle, &copy_image_info);
}
} else {
let regions: SmallVec<[_; 8]> = regions
@ -2667,7 +2665,7 @@ impl UnsafeCommandBufferBuilder {
})
.collect();
fns.v1_0.cmd_copy_image(
(fns.v1_0.cmd_copy_image)(
self.handle,
src_image_inner.image.internal_object(),
src_image_layout.into(),
@ -2756,11 +2754,12 @@ impl UnsafeCommandBufferBuilder {
};
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_copy_buffer_to_image2(self.handle, &copy_buffer_to_image_info);
(fns.v1_3.cmd_copy_buffer_to_image2)(self.handle, &copy_buffer_to_image_info);
} else {
fns.khr_copy_commands2
.cmd_copy_buffer_to_image2_khr(self.handle, &copy_buffer_to_image_info);
(fns.khr_copy_commands2.cmd_copy_buffer_to_image2_khr)(
self.handle,
&copy_buffer_to_image_info,
);
}
} else {
let regions: SmallVec<[_; 8]> = regions
@ -2800,7 +2799,7 @@ impl UnsafeCommandBufferBuilder {
})
.collect();
fns.v1_0.cmd_copy_buffer_to_image(
(fns.v1_0.cmd_copy_buffer_to_image)(
self.handle,
src_buffer_inner.buffer.internal_object(),
dst_image_inner.image.internal_object(),
@ -2888,11 +2887,12 @@ impl UnsafeCommandBufferBuilder {
};
if self.device.api_version() >= Version::V1_3 {
fns.v1_3
.cmd_copy_image_to_buffer2(self.handle, &copy_image_to_buffer_info);
(fns.v1_3.cmd_copy_image_to_buffer2)(self.handle, &copy_image_to_buffer_info);
} else {
fns.khr_copy_commands2
.cmd_copy_image_to_buffer2_khr(self.handle, &copy_image_to_buffer_info);
(fns.khr_copy_commands2.cmd_copy_image_to_buffer2_khr)(
self.handle,
&copy_image_to_buffer_info,
);
}
} else {
let regions: SmallVec<[_; 8]> = regions
@ -2931,7 +2931,7 @@ impl UnsafeCommandBufferBuilder {
})
.collect();
fns.v1_0.cmd_copy_image_to_buffer(
(fns.v1_0.cmd_copy_image_to_buffer)(
self.handle,
src_image_inner.image.internal_object(),
src_image_layout.into(),
@ -2956,7 +2956,7 @@ impl UnsafeCommandBufferBuilder {
let dst_buffer_inner = dst_buffer.inner();
let fns = self.device.fns();
fns.v1_0.cmd_fill_buffer(
(fns.v1_0.cmd_fill_buffer)(
self.handle,
dst_buffer_inner.buffer.internal_object(),
dst_offset,
@ -2978,7 +2978,7 @@ impl UnsafeCommandBufferBuilder {
let dst_buffer_inner = dst_buffer.inner();
let fns = self.device.fns();
fns.v1_0.cmd_update_buffer(
(fns.v1_0.cmd_update_buffer)(
self.handle,
dst_buffer_inner.buffer.internal_object(),
dst_buffer_inner.offset + dst_offset,

View File

@ -128,7 +128,7 @@ impl UnsafeCommandPool {
let handle = {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_command_pool(
check_errors((fns.v1_0.create_command_pool)(
device.internal_object(),
&create_info,
ptr::null(),
@ -156,7 +156,7 @@ impl UnsafeCommandPool {
};
let fns = self.device.fns();
check_errors(fns.v1_0.reset_command_pool(
check_errors((fns.v1_0.reset_command_pool)(
self.device.internal_object(),
self.handle,
flags,
@ -189,7 +189,7 @@ impl UnsafeCommandPool {
unsafe {
let fns = self.device.fns();
let mut out = Vec::with_capacity(command_buffer_count as usize);
check_errors(fns.v1_0.allocate_command_buffers(
check_errors((fns.v1_0.allocate_command_buffers)(
self.device.internal_object(),
&allocate_info,
out.as_mut_ptr(),
@ -224,7 +224,7 @@ impl UnsafeCommandPool {
let command_buffers: SmallVec<[_; 4]> =
command_buffers.into_iter().map(|cb| cb.handle).collect();
let fns = self.device.fns();
fns.v1_0.free_command_buffers(
(fns.v1_0.free_command_buffers)(
self.device.internal_object(),
self.handle,
command_buffers.len() as u32,
@ -253,13 +253,13 @@ impl UnsafeCommandPool {
let fns = self.device.fns();
if self.device.api_version() >= Version::V1_1 {
fns.v1_1.trim_command_pool(
(fns.v1_1.trim_command_pool)(
self.device.internal_object(),
self.handle,
ash::vk::CommandPoolTrimFlags::empty(),
);
} else {
fns.khr_maintenance1.trim_command_pool_khr(
(fns.khr_maintenance1.trim_command_pool_khr)(
self.device.internal_object(),
self.handle,
ash::vk::CommandPoolTrimFlagsKHR::empty(),
@ -285,8 +285,11 @@ impl Drop for UnsafeCommandPool {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0
.destroy_command_pool(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_command_pool)(
self.device.internal_object(),
self.handle,
ptr::null(),
);
}
}
}

View File

@ -239,7 +239,7 @@ impl<'a> SubmitBindSparseBuilder<'a> {
};
// Finally executing the command.
check_errors(fns.v1_0.queue_bind_sparse(
check_errors((fns.v1_0.queue_bind_sparse)(
*queue,
bs_infos.len() as u32,
bs_infos.as_ptr(),

View File

@ -177,7 +177,7 @@ impl<'a> SubmitPresentBuilder<'a> {
..Default::default()
};
check_errors(fns.khr_swapchain.queue_present_khr(*queue, &infos))?;
check_errors((fns.khr_swapchain.queue_present_khr)(*queue, &infos))?;
for result in results {
check_errors(result)?;

View File

@ -214,7 +214,7 @@ impl<'a> SubmitCommandBufferBuilder<'a> {
..Default::default()
};
check_errors(fns.v1_0.queue_submit(*queue, 1, &batch, self.fence))?;
check_errors((fns.v1_0.queue_submit)(*queue, 1, &batch, self.fence))?;
Ok(())
}
}

View File

@ -178,10 +178,10 @@ impl UnsafeCommandBufferBuilder {
let fns = device.fns();
check_errors(
fns.v1_0
.begin_command_buffer(pool_alloc.internal_object(), &begin_info_vk),
)?;
check_errors((fns.v1_0.begin_command_buffer)(
pool_alloc.internal_object(),
&begin_info_vk,
))?;
}
Ok(UnsafeCommandBufferBuilder {
@ -196,7 +196,7 @@ impl UnsafeCommandBufferBuilder {
pub fn build(self) -> Result<UnsafeCommandBuffer, OomError> {
unsafe {
let fns = self.device.fns();
check_errors(fns.v1_0.end_command_buffer(self.handle))?;
check_errors((fns.v1_0.end_command_buffer)(self.handle))?;
Ok(UnsafeCommandBuffer {
command_buffer: self.handle,

View File

@ -303,7 +303,7 @@ impl DescriptorSetLayout {
let handle = {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_descriptor_set_layout(
check_errors((fns.v1_0.create_descriptor_set_layout)(
device.internal_object(),
&create_info,
ptr::null(),
@ -371,7 +371,7 @@ impl Drop for DescriptorSetLayout {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0.destroy_descriptor_set_layout(
(fns.v1_0.destroy_descriptor_set_layout)(
self.device.internal_object(),
self.handle,
ptr::null(),

View File

@ -213,7 +213,7 @@ impl DescriptorSetInner {
unsafe {
let fns = layout.device().fns();
fns.v1_0.update_descriptor_sets(
(fns.v1_0.update_descriptor_sets)(
layout.device().internal_object(),
write_descriptor_set.len() as u32,
write_descriptor_set.as_ptr(),

View File

@ -96,7 +96,7 @@ impl UnsafeDescriptorPool {
unsafe {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_descriptor_pool(
check_errors((fns.v1_0.create_descriptor_pool)(
device.internal_object(),
&create_info,
ptr::null(),
@ -208,7 +208,7 @@ impl UnsafeDescriptorPool {
let mut output = Vec::with_capacity(layouts.len());
let fns = self.device.fns();
let ret = fns.v1_0.allocate_descriptor_sets(
let ret = (fns.v1_0.allocate_descriptor_sets)(
self.device.internal_object(),
&infos,
output.as_mut_ptr(),
@ -264,7 +264,7 @@ impl UnsafeDescriptorPool {
.collect();
if !sets.is_empty() {
let fns = self.device.fns();
check_errors(fns.v1_0.free_descriptor_sets(
check_errors((fns.v1_0.free_descriptor_sets)(
self.device.internal_object(),
self.handle,
sets.len() as u32,
@ -280,7 +280,7 @@ impl UnsafeDescriptorPool {
/// This destroys all descriptor sets and empties the pool.
pub unsafe fn reset(&mut self) -> Result<(), OomError> {
let fns = self.device.fns();
check_errors(fns.v1_0.reset_descriptor_pool(
check_errors((fns.v1_0.reset_descriptor_pool)(
self.device.internal_object(),
self.handle,
ash::vk::DescriptorPoolResetFlags::empty(),
@ -294,7 +294,7 @@ impl Drop for UnsafeDescriptorPool {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0.destroy_descriptor_pool(
(fns.v1_0.destroy_descriptor_pool)(
self.device.internal_object(),
self.handle,
ptr::null(),

View File

@ -88,7 +88,7 @@ impl UnsafeDescriptorSet {
let fns = layout.device().fns();
fns.v1_0.update_descriptor_sets(
(fns.v1_0.update_descriptor_sets)(
layout.device().internal_object(),
writes.len() as u32,
writes.as_ptr(),

View File

@ -378,7 +378,7 @@ impl Device {
let handle = unsafe {
let mut output = MaybeUninit::uninit();
check_errors(fns_i.v1_0.create_device(
check_errors((fns_i.v1_0.create_device)(
physical_device.internal_object(),
&create_info,
ptr::null(),
@ -389,7 +389,7 @@ impl Device {
// loading the function pointers of the newly-created device
let fns = DeviceFunctions::load(|name| unsafe {
mem::transmute(fns_i.v1_0.get_device_proc_addr(handle, name.as_ptr()))
mem::transmute((fns_i.v1_0.get_device_proc_addr)(handle, name.as_ptr()))
});
let device = Arc::new(Device {
@ -416,11 +416,9 @@ impl Device {
queues_to_get
.into_iter()
.map(move |QueueToGet { family, id }| unsafe {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
device
.fns()
.v1_0
.get_device_queue(handle, family, id, output.as_mut_ptr());
(fns.v1_0.get_device_queue)(handle, family, id, output.as_mut_ptr());
Arc::new(Queue {
handle: Mutex::new(output.assume_init()),
@ -462,7 +460,8 @@ impl Device {
/// while this function is waiting.
///
pub unsafe fn wait(&self) -> Result<(), OomError> {
check_errors(self.fns.v1_0.device_wait_idle(self.handle))?;
let fns = self.fns();
check_errors((fns.v1_0.device_wait_idle)(self.handle))?;
Ok(())
}
@ -615,7 +614,7 @@ impl Device {
let mut memory_fd_properties = ash::vk::MemoryFdPropertiesKHR::default();
let fns = self.fns();
check_errors(fns.khr_external_memory_fd.get_memory_fd_properties_khr(
check_errors((fns.khr_external_memory_fd.get_memory_fd_properties_khr)(
self.handle,
handle_type.into(),
file.into_raw_fd(),
@ -651,10 +650,10 @@ impl Device {
unsafe {
let fns = self.instance.fns();
check_errors(
fns.ext_debug_utils
.set_debug_utils_object_name_ext(self.handle, &info),
)?;
check_errors((fns.ext_debug_utils.set_debug_utils_object_name_ext)(
self.handle,
&info,
))?;
}
Ok(())
@ -664,23 +663,19 @@ impl Device {
impl Drop for Device {
#[inline]
fn drop(&mut self) {
let fns = self.fns();
unsafe {
for &raw_fence in self.fence_pool.lock().unwrap().iter() {
self.fns
.v1_0
.destroy_fence(self.handle, raw_fence, ptr::null());
(fns.v1_0.destroy_fence)(self.handle, raw_fence, ptr::null());
}
for &raw_sem in self.semaphore_pool.lock().unwrap().iter() {
self.fns
.v1_0
.destroy_semaphore(self.handle, raw_sem, ptr::null());
(fns.v1_0.destroy_semaphore)(self.handle, raw_sem, ptr::null());
}
for &raw_event in self.event_pool.lock().unwrap().iter() {
self.fns
.v1_0
.destroy_event(self.handle, raw_event, ptr::null());
(fns.v1_0.destroy_event)(self.handle, raw_event, ptr::null());
}
self.fns.v1_0.destroy_device(self.handle, ptr::null());
(fns.v1_0.destroy_device)(self.handle, ptr::null());
}
}
}
@ -995,7 +990,7 @@ impl Queue {
unsafe {
let fns = self.device.fns();
let handle = self.handle.lock().unwrap();
check_errors(fns.v1_0.queue_wait_idle(*handle))?;
check_errors((fns.v1_0.queue_wait_idle)(*handle))?;
Ok(())
}
}
@ -1027,8 +1022,7 @@ impl Queue {
unsafe {
let fns = self.device.instance().fns();
let handle = self.handle.lock().unwrap();
fns.ext_debug_utils
.queue_begin_debug_utils_label_ext(*handle, &label_info);
(fns.ext_debug_utils.queue_begin_debug_utils_label_ext)(*handle, &label_info);
}
Ok(())
@ -1069,7 +1063,7 @@ impl Queue {
{
let fns = self.device.instance().fns();
let handle = self.handle.lock().unwrap();
fns.ext_debug_utils.queue_end_debug_utils_label_ext(*handle);
(fns.ext_debug_utils.queue_end_debug_utils_label_ext)(*handle);
}
Ok(())
@ -1121,8 +1115,7 @@ impl Queue {
unsafe {
let fns = self.device.instance().fns();
let handle = self.handle.lock().unwrap();
fns.ext_debug_utils
.queue_insert_debug_utils_label_ext(*handle, &label_info);
(fns.ext_debug_utils.queue_insert_debug_utils_label_ext)(*handle, &label_info);
}
Ok(())

View File

@ -43,14 +43,14 @@ pub(crate) fn init_physical_devices(
let handles: Vec<ash::vk::PhysicalDevice> = unsafe {
let mut num = 0;
check_errors(fns.v1_0.enumerate_physical_devices(
check_errors((fns.v1_0.enumerate_physical_devices)(
instance.internal_object(),
&mut num,
ptr::null_mut(),
))?;
let mut handles = Vec::with_capacity(num as usize);
check_errors(fns.v1_0.enumerate_physical_devices(
check_errors((fns.v1_0.enumerate_physical_devices)(
instance.internal_object(),
&mut num,
handles.as_mut_ptr(),
@ -65,15 +65,14 @@ pub(crate) fn init_physical_devices(
.map(|(index, handle)| -> Result<_, InstanceCreationError> {
let api_version = unsafe {
let mut output = MaybeUninit::uninit();
fns.v1_0
.get_physical_device_properties(handle, output.as_mut_ptr());
(fns.v1_0.get_physical_device_properties)(handle, output.as_mut_ptr());
let api_version = Version::try_from(output.assume_init().api_version).unwrap();
std::cmp::min(instance.max_api_version(), api_version)
};
let extension_properties: Vec<ash::vk::ExtensionProperties> = unsafe {
let mut num = 0;
check_errors(fns.v1_0.enumerate_device_extension_properties(
check_errors((fns.v1_0.enumerate_device_extension_properties)(
handle,
ptr::null(),
&mut num,
@ -81,7 +80,7 @@ pub(crate) fn init_physical_devices(
))?;
let mut properties = Vec::with_capacity(num as usize);
check_errors(fns.v1_0.enumerate_device_extension_properties(
check_errors((fns.v1_0.enumerate_device_extension_properties)(
handle,
ptr::null(),
&mut num,
@ -131,8 +130,7 @@ fn init_info(instance: &Instance, info: &mut PhysicalDeviceInfo) {
info.supported_features = unsafe {
let mut output = FeaturesFfi::default();
fns.v1_0
.get_physical_device_features(info.handle, &mut output.head_as_mut().features);
(fns.v1_0.get_physical_device_features)(info.handle, &mut output.head_as_mut().features);
Features::from(&output)
};
@ -143,28 +141,29 @@ fn init_info(instance: &Instance, info: &mut PhysicalDeviceInfo) {
&info.supported_extensions,
instance.enabled_extensions(),
);
fns.v1_0
.get_physical_device_properties(info.handle, &mut output.head_as_mut().properties);
(fns.v1_0.get_physical_device_properties)(
info.handle,
&mut output.head_as_mut().properties,
);
Properties::from(&output)
};
info.memory_properties = unsafe {
let mut output = MaybeUninit::uninit();
fns.v1_0
.get_physical_device_memory_properties(info.handle, output.as_mut_ptr());
(fns.v1_0.get_physical_device_memory_properties)(info.handle, output.as_mut_ptr());
output.assume_init()
};
info.queue_families = unsafe {
let mut num = 0;
fns.v1_0.get_physical_device_queue_family_properties(
(fns.v1_0.get_physical_device_queue_family_properties)(
info.handle,
&mut num,
ptr::null_mut(),
);
let mut families = Vec::with_capacity(num as usize);
fns.v1_0.get_physical_device_queue_family_properties(
(fns.v1_0.get_physical_device_queue_family_properties)(
info.handle,
&mut num,
families.as_mut_ptr(),
@ -187,11 +186,10 @@ fn init_info2(instance: &Instance, info: &mut PhysicalDeviceInfo) {
);
if instance.api_version() >= Version::V1_1 {
fns.v1_1
.get_physical_device_features2(info.handle, output.head_as_mut());
(fns.v1_1.get_physical_device_features2)(info.handle, output.head_as_mut());
} else {
fns.khr_get_physical_device_properties2
.get_physical_device_features2_khr(info.handle, output.head_as_mut());
(fns.khr_get_physical_device_properties2
.get_physical_device_features2_khr)(info.handle, output.head_as_mut());
}
Features::from(&output)
@ -206,11 +204,10 @@ fn init_info2(instance: &Instance, info: &mut PhysicalDeviceInfo) {
);
if instance.api_version() >= Version::V1_1 {
fns.v1_1
.get_physical_device_properties2(info.handle, output.head_as_mut());
(fns.v1_1.get_physical_device_properties2)(info.handle, output.head_as_mut());
} else {
fns.khr_get_physical_device_properties2
.get_physical_device_properties2_khr(info.handle, output.head_as_mut());
(fns.khr_get_physical_device_properties2
.get_physical_device_properties2_khr)(info.handle, output.head_as_mut());
}
Properties::from(&output)
@ -220,11 +217,10 @@ fn init_info2(instance: &Instance, info: &mut PhysicalDeviceInfo) {
let mut output = ash::vk::PhysicalDeviceMemoryProperties2KHR::default();
if instance.api_version() >= Version::V1_1 {
fns.v1_1
.get_physical_device_memory_properties2(info.handle, &mut output);
(fns.v1_1.get_physical_device_memory_properties2)(info.handle, &mut output);
} else {
fns.khr_get_physical_device_properties2
.get_physical_device_memory_properties2_khr(info.handle, &mut output);
(fns.khr_get_physical_device_properties2
.get_physical_device_memory_properties2_khr)(info.handle, &mut output);
}
output.memory_properties
@ -234,35 +230,35 @@ fn init_info2(instance: &Instance, info: &mut PhysicalDeviceInfo) {
let mut num = 0;
if instance.api_version() >= Version::V1_1 {
fns.v1_1.get_physical_device_queue_family_properties2(
(fns.v1_1.get_physical_device_queue_family_properties2)(
info.handle,
&mut num,
ptr::null_mut(),
);
} else {
fns.khr_get_physical_device_properties2
.get_physical_device_queue_family_properties2_khr(
info.handle,
&mut num,
ptr::null_mut(),
);
(fns.khr_get_physical_device_properties2
.get_physical_device_queue_family_properties2_khr)(
info.handle,
&mut num,
ptr::null_mut(),
);
}
let mut families = vec![ash::vk::QueueFamilyProperties2::default(); num as usize];
if instance.api_version() >= Version::V1_1 {
fns.v1_1.get_physical_device_queue_family_properties2(
(fns.v1_1.get_physical_device_queue_family_properties2)(
info.handle,
&mut num,
families.as_mut_ptr(),
);
} else {
fns.khr_get_physical_device_properties2
.get_physical_device_queue_family_properties2_khr(
info.handle,
&mut num,
families.as_mut_ptr(),
);
(fns.khr_get_physical_device_properties2
.get_physical_device_queue_family_properties2_khr)(
info.handle,
&mut num,
families.as_mut_ptr(),
);
}
families
@ -465,18 +461,18 @@ impl<'a> PhysicalDevice<'a> {
let fns = self.instance.fns();
if self.instance.api_version() >= Version::V1_1 {
fns.v1_1.get_physical_device_external_buffer_properties(
(fns.v1_1.get_physical_device_external_buffer_properties)(
self.info.handle,
&external_buffer_info,
&mut external_buffer_properties,
)
} else {
fns.khr_external_memory_capabilities
.get_physical_device_external_buffer_properties_khr(
self.info.handle,
&external_buffer_info,
&mut external_buffer_properties,
);
(fns.khr_external_memory_capabilities
.get_physical_device_external_buffer_properties_khr)(
self.info.handle,
&external_buffer_info,
&mut external_buffer_properties,
);
}
}
@ -507,7 +503,7 @@ impl<'a> PhysicalDevice<'a> {
let fns = self.instance.fns();
if self.api_version() >= Version::V1_1 {
fns.v1_1.get_physical_device_format_properties2(
(fns.v1_1.get_physical_device_format_properties2)(
self.info.handle,
format.into(),
&mut format_properties2,
@ -517,14 +513,14 @@ impl<'a> PhysicalDevice<'a> {
.enabled_extensions()
.khr_get_physical_device_properties2
{
fns.khr_get_physical_device_properties2
.get_physical_device_format_properties2_khr(
self.info.handle,
format.into(),
&mut format_properties2,
);
(fns.khr_get_physical_device_properties2
.get_physical_device_format_properties2_khr)(
self.info.handle,
format.into(),
&mut format_properties2,
);
} else {
fns.v1_0.get_physical_device_format_properties(
(fns.v1_0.get_physical_device_format_properties)(
self.internal_object(),
format.into(),
&mut format_properties2.format_properties,
@ -595,18 +591,18 @@ impl<'a> PhysicalDevice<'a> {
let fns = self.instance.fns();
if self.instance.api_version() >= Version::V1_1 {
fns.v1_1.get_physical_device_external_semaphore_properties(
(fns.v1_1.get_physical_device_external_semaphore_properties)(
self.info.handle,
&external_semaphore_info,
&mut external_semaphore_properties,
)
} else {
fns.khr_external_semaphore_capabilities
.get_physical_device_external_semaphore_properties_khr(
self.info.handle,
&external_semaphore_info,
&mut external_semaphore_properties,
);
(fns.khr_external_semaphore_capabilities
.get_physical_device_external_semaphore_properties_khr)(
self.info.handle,
&external_semaphore_info,
&mut external_semaphore_properties,
);
}
}
@ -741,7 +737,7 @@ impl<'a> PhysicalDevice<'a> {
let fns = self.instance.fns();
check_errors(if self.api_version() >= Version::V1_1 {
fns.v1_1.get_physical_device_image_format_properties2(
(fns.v1_1.get_physical_device_image_format_properties2)(
self.info.handle,
&format_info2.build(),
&mut image_format_properties2,
@ -751,19 +747,19 @@ impl<'a> PhysicalDevice<'a> {
.enabled_extensions()
.khr_get_physical_device_properties2
{
fns.khr_get_physical_device_properties2
.get_physical_device_image_format_properties2_khr(
self.info.handle,
&format_info2.build(),
&mut image_format_properties2,
)
(fns.khr_get_physical_device_properties2
.get_physical_device_image_format_properties2_khr)(
self.info.handle,
&format_info2.build(),
&mut image_format_properties2,
)
} else {
// Can't query this, return unsupported
if !format_info2.p_next.is_null() {
return Ok(None);
}
fns.v1_0.get_physical_device_image_format_properties(
(fns.v1_0.get_physical_device_image_format_properties)(
self.info.handle,
format_info2.format,
format_info2.ty,
@ -985,23 +981,21 @@ impl<'a> PhysicalDevice<'a> {
.enabled_extensions()
.khr_get_surface_capabilities2
{
check_errors(
fns.khr_get_surface_capabilities2
.get_physical_device_surface_capabilities2_khr(
self.internal_object(),
&surface_info2,
&mut surface_capabilities2,
),
)?;
check_errors((fns
.khr_get_surface_capabilities2
.get_physical_device_surface_capabilities2_khr)(
self.internal_object(),
&surface_info2,
&mut surface_capabilities2,
))?;
} else {
check_errors(
fns.khr_surface
.get_physical_device_surface_capabilities_khr(
self.internal_object(),
surface_info2.surface,
&mut surface_capabilities2.surface_capabilities,
),
)?;
check_errors((fns
.khr_surface
.get_physical_device_surface_capabilities_khr)(
self.internal_object(),
surface_info2.surface,
&mut surface_capabilities2.surface_capabilities,
))?;
};
}
@ -1175,26 +1169,24 @@ impl<'a> PhysicalDevice<'a> {
let fns = self.instance.fns();
let mut num = 0;
check_errors(
fns.khr_get_surface_capabilities2
.get_physical_device_surface_formats2_khr(
self.internal_object(),
&surface_info2,
&mut num,
ptr::null_mut(),
),
)?;
check_errors((fns
.khr_get_surface_capabilities2
.get_physical_device_surface_formats2_khr)(
self.internal_object(),
&surface_info2,
&mut num,
ptr::null_mut(),
))?;
surface_format2s = vec![ash::vk::SurfaceFormat2KHR::default(); num as usize];
check_errors(
fns.khr_get_surface_capabilities2
.get_physical_device_surface_formats2_khr(
self.internal_object(),
&surface_info2,
&mut num,
surface_format2s.as_mut_ptr(),
),
)?;
check_errors((fns
.khr_get_surface_capabilities2
.get_physical_device_surface_formats2_khr)(
self.internal_object(),
&surface_info2,
&mut num,
surface_format2s.as_mut_ptr(),
))?;
}
Ok(surface_format2s
@ -1215,7 +1207,7 @@ impl<'a> PhysicalDevice<'a> {
let fns = self.instance.fns();
let mut num = 0;
check_errors(fns.khr_surface.get_physical_device_surface_formats_khr(
check_errors((fns.khr_surface.get_physical_device_surface_formats_khr)(
self.internal_object(),
surface.internal_object(),
&mut num,
@ -1223,7 +1215,7 @@ impl<'a> PhysicalDevice<'a> {
))?;
surface_formats = Vec::with_capacity(num as usize);
check_errors(fns.khr_surface.get_physical_device_surface_formats_khr(
check_errors((fns.khr_surface.get_physical_device_surface_formats_khr)(
self.internal_object(),
surface.internal_object(),
&mut num,
@ -1260,26 +1252,24 @@ impl<'a> PhysicalDevice<'a> {
let fns = self.instance.fns();
let mut num = 0;
check_errors(
fns.khr_surface
.get_physical_device_surface_present_modes_khr(
self.internal_object(),
surface.internal_object(),
&mut num,
ptr::null_mut(),
),
)?;
check_errors((fns
.khr_surface
.get_physical_device_surface_present_modes_khr)(
self.internal_object(),
surface.internal_object(),
&mut num,
ptr::null_mut(),
))?;
let mut modes = Vec::with_capacity(num as usize);
check_errors(
fns.khr_surface
.get_physical_device_surface_present_modes_khr(
self.internal_object(),
surface.internal_object(),
&mut num,
modes.as_mut_ptr(),
),
)?;
check_errors((fns
.khr_surface
.get_physical_device_surface_present_modes_khr)(
self.internal_object(),
surface.internal_object(),
&mut num,
modes.as_mut_ptr(),
))?;
modes.set_len(num as usize);
modes
};
@ -1581,7 +1571,7 @@ impl<'a> QueueFamily<'a> {
let fns = self.physical_device.instance.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.khr_surface.get_physical_device_surface_support_khr(
check_errors((fns.khr_surface.get_physical_device_surface_support_khr)(
self.physical_device.internal_object(),
self.id,
surface.internal_object(),

View File

@ -821,7 +821,7 @@ impl UnsafeImage {
let handle = {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_image(
check_errors((fns.v1_0.create_image)(
device.internal_object(),
&create_info.build(),
ptr::null(),
@ -931,21 +931,21 @@ impl UnsafeImage {
.khr_get_memory_requirements2
{
if self.device.api_version() >= Version::V1_1 {
fns.v1_1.get_image_memory_requirements2(
(fns.v1_1.get_image_memory_requirements2)(
self.device.internal_object(),
&image_memory_requirements_info2,
&mut memory_requirements2,
);
} else {
fns.khr_get_memory_requirements2
.get_image_memory_requirements2_khr(
self.device.internal_object(),
&image_memory_requirements_info2,
&mut memory_requirements2,
);
(fns.khr_get_memory_requirements2
.get_image_memory_requirements2_khr)(
self.device.internal_object(),
&image_memory_requirements_info2,
&mut memory_requirements2,
);
}
} else {
fns.v1_0.get_image_memory_requirements(
(fns.v1_0.get_image_memory_requirements)(
self.device.internal_object(),
self.handle,
&mut memory_requirements2.memory_requirements,
@ -970,7 +970,7 @@ impl UnsafeImage {
// We check for correctness in debug mode.
debug_assert!({
let mut mem_reqs = MaybeUninit::uninit();
fns.v1_0.get_image_memory_requirements(
(fns.v1_0.get_image_memory_requirements)(
self.device.internal_object(),
self.handle,
mem_reqs.as_mut_ptr(),
@ -982,7 +982,7 @@ impl UnsafeImage {
&& mem_reqs.memory_type_bits & (1 << memory.memory_type().id()) != 0
});
check_errors(fns.v1_0.bind_image_memory(
check_errors((fns.v1_0.bind_image_memory)(
self.device.internal_object(),
self.handle,
memory.internal_object(),
@ -1311,7 +1311,7 @@ impl UnsafeImage {
};
let mut out = MaybeUninit::uninit();
fns.v1_0.get_image_subresource_layout(
(fns.v1_0.get_image_subresource_layout)(
self.device.internal_object(),
self.handle,
&subresource,
@ -1338,8 +1338,7 @@ impl Drop for UnsafeImage {
unsafe {
let fns = self.device.fns();
fns.v1_0
.destroy_image(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_image)(self.device.internal_object(), self.handle, ptr::null());
}
}
}

View File

@ -525,7 +525,7 @@ where
let handle = {
let fns = image_inner.device().fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_image_view(
check_errors((fns.v1_0.create_image_view)(
image_inner.device().internal_object(),
&create_info,
ptr::null(),
@ -561,8 +561,7 @@ where
unsafe {
let device = self.device();
let fns = device.fns();
fns.v1_0
.destroy_image_view(device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_image_view)(device.internal_object(), self.handle, ptr::null());
}
}
}

View File

@ -151,7 +151,7 @@ impl DebugUtilsMessenger {
let handle = {
let mut output = MaybeUninit::uninit();
check_errors(fns.ext_debug_utils.create_debug_utils_messenger_ext(
check_errors((fns.ext_debug_utils.create_debug_utils_messenger_ext)(
instance.internal_object(),
&create_info,
ptr::null(),
@ -169,7 +169,7 @@ impl Drop for DebugUtilsMessenger {
fn drop(&mut self) {
unsafe {
let fns = self.instance.fns();
fns.ext_debug_utils.destroy_debug_utils_messenger_ext(
(fns.ext_debug_utils.destroy_debug_utils_messenger_ext)(
self.instance.internal_object(),
self.handle,
ptr::null(),

View File

@ -61,14 +61,14 @@ impl InstanceExtensions {
let properties: Vec<ash::vk::ExtensionProperties> = unsafe {
let mut num = 0;
check_errors(fns.v1_0.enumerate_instance_extension_properties(
check_errors((fns.v1_0.enumerate_instance_extension_properties)(
ptr::null(),
&mut num,
ptr::null_mut(),
))?;
let mut properties = Vec::with_capacity(num as usize);
check_errors(fns.v1_0.enumerate_instance_extension_properties(
check_errors((fns.v1_0.enumerate_instance_extension_properties)(
ptr::null(),
&mut num,
properties.as_mut_ptr(),

View File

@ -56,15 +56,14 @@ where
let fns = ptrs.fns();
let mut num = 0;
check_errors(
fns.v1_0
.enumerate_instance_layer_properties(&mut num, ptr::null_mut()),
)?;
check_errors((fns.v1_0.enumerate_instance_layer_properties)(
&mut num,
ptr::null_mut(),
))?;
let mut layers: Vec<ash::vk::LayerProperties> = Vec::with_capacity(num as usize);
check_errors({
fns.v1_0
.enumerate_instance_layer_properties(&mut num, layers.as_mut_ptr())
(fns.v1_0.enumerate_instance_layer_properties)(&mut num, layers.as_mut_ptr())
})?;
layers.set_len(num as usize);

View File

@ -417,10 +417,11 @@ impl Instance {
let handle = {
let mut output = MaybeUninit::uninit();
let fns = function_pointers.fns();
check_errors(
fns.v1_0
.create_instance(&create_info, ptr::null(), output.as_mut_ptr()),
)?;
check_errors((fns.v1_0.create_instance)(
&create_info,
ptr::null(),
output.as_mut_ptr(),
))?;
output.assume_init()
};
@ -488,8 +489,10 @@ impl Instance {
impl Drop for Instance {
#[inline]
fn drop(&mut self) {
let fns = self.fns();
unsafe {
self.fns.v1_0.destroy_instance(self.handle, ptr::null());
(fns.v1_0.destroy_instance)(self.handle, ptr::null());
}
}
}

View File

@ -386,7 +386,7 @@ impl DeviceMemory {
let handle = {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.allocate_memory(
check_errors((fns.v1_0.allocate_memory)(
device.internal_object(),
&allocate_info.build(),
ptr::null(),
@ -458,7 +458,7 @@ impl DeviceMemory {
};
let mut output = MaybeUninit::uninit();
check_errors(fns.khr_external_memory_fd.get_memory_fd_khr(
check_errors((fns.khr_external_memory_fd.get_memory_fd_khr)(
self.device.internal_object(),
&info,
output.as_mut_ptr(),
@ -477,8 +477,7 @@ impl Drop for DeviceMemory {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0
.free_memory(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.free_memory)(self.device.internal_object(), self.handle, ptr::null());
let mut allocation_count = self
.device
.allocation_count()
@ -1158,7 +1157,7 @@ impl MappedDeviceMemory {
let pointer = unsafe {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.map_memory(
check_errors((fns.v1_0.map_memory)(
device.internal_object(),
memory.handle,
range.start,
@ -1184,8 +1183,7 @@ impl MappedDeviceMemory {
unsafe {
let device = self.memory.device();
let fns = device.fns();
fns.v1_0
.unmap_memory(device.internal_object(), self.memory.handle);
(fns.v1_0.unmap_memory)(device.internal_object(), self.memory.handle);
}
self.memory
@ -1229,7 +1227,7 @@ impl MappedDeviceMemory {
};
let fns = self.memory.device().fns();
check_errors(fns.v1_0.invalidate_mapped_memory_ranges(
check_errors((fns.v1_0.invalidate_mapped_memory_ranges)(
self.memory.device().internal_object(),
1,
&range,
@ -1276,7 +1274,7 @@ impl MappedDeviceMemory {
};
let fns = self.device().fns();
check_errors(fns.v1_0.flush_mapped_memory_ranges(
check_errors((fns.v1_0.flush_mapped_memory_ranges)(
self.memory.device().internal_object(),
1,
&range,

View File

@ -119,7 +119,7 @@ impl PipelineCache {
};
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_pipeline_cache(
check_errors((fns.v1_0.create_pipeline_cache)(
device.internal_object(),
&infos,
ptr::null(),
@ -159,7 +159,7 @@ impl PipelineCache {
})
.collect::<Vec<_>>();
check_errors(fns.v1_0.merge_pipeline_caches(
check_errors((fns.v1_0.merge_pipeline_caches)(
self.device.internal_object(),
self.cache,
pipelines.len() as u32,
@ -203,7 +203,7 @@ impl PipelineCache {
let fns = self.device.fns();
let mut num = 0;
check_errors(fns.v1_0.get_pipeline_cache_data(
check_errors((fns.v1_0.get_pipeline_cache_data)(
self.device.internal_object(),
self.cache,
&mut num,
@ -211,7 +211,7 @@ impl PipelineCache {
))?;
let mut data: Vec<u8> = Vec::with_capacity(num as usize);
check_errors(fns.v1_0.get_pipeline_cache_data(
check_errors((fns.v1_0.get_pipeline_cache_data)(
self.device.internal_object(),
self.cache,
&mut num,
@ -238,8 +238,11 @@ impl Drop for PipelineCache {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0
.destroy_pipeline_cache(self.device.internal_object(), self.cache, ptr::null());
(fns.v1_0.destroy_pipeline_cache)(
self.device.internal_object(),
self.cache,
ptr::null(),
);
}
}
}

View File

@ -205,7 +205,7 @@ impl ComputePipeline {
};
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_compute_pipelines(
check_errors((fns.v1_0.create_compute_pipelines)(
device.internal_object(),
cache_handle,
1,
@ -307,8 +307,7 @@ impl Drop for ComputePipeline {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0
.destroy_pipeline(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_pipeline)(self.device.internal_object(), self.handle, ptr::null());
}
}
}

View File

@ -3195,7 +3195,7 @@ where
let handle = {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_graphics_pipelines(
check_errors((fns.v1_0.create_graphics_pipelines)(
device.internal_object(),
cache_handle,
1,

View File

@ -285,8 +285,7 @@ impl Drop for GraphicsPipeline {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0
.destroy_pipeline(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_pipeline)(self.device.internal_object(), self.handle, ptr::null());
}
}
}

View File

@ -497,7 +497,7 @@ impl PipelineLayout {
let handle = {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_pipeline_layout(
check_errors((fns.v1_0.create_pipeline_layout)(
device.internal_object(),
&create_info,
ptr::null(),
@ -623,7 +623,7 @@ impl Drop for PipelineLayout {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0.destroy_pipeline_layout(
(fns.v1_0.destroy_pipeline_layout)(
self.device.internal_object(),
self.handle,
ptr::null(),

View File

@ -84,7 +84,7 @@ impl QueryPool {
let handle = unsafe {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_query_pool(
check_errors((fns.v1_0.create_query_pool)(
device.internal_object(),
&create_info,
ptr::null(),
@ -146,8 +146,7 @@ impl Drop for QueryPool {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0
.destroy_query_pool(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_query_pool)(self.device.internal_object(), self.handle, ptr::null());
}
}
}
@ -339,7 +338,7 @@ impl<'a> QueriesRange<'a> {
let result = unsafe {
let fns = self.pool.device.fns();
check_errors(fns.v1_0.get_query_pool_results(
check_errors((fns.v1_0.get_query_pool_results)(
self.pool.device.internal_object(),
self.pool.internal_object(),
self.range.start,

View File

@ -1052,14 +1052,14 @@ impl RenderPass {
let mut output = MaybeUninit::uninit();
check_errors(if device.api_version() >= Version::V1_2 {
fns.v1_2.create_render_pass2(
(fns.v1_2.create_render_pass2)(
device.internal_object(),
&create_info,
ptr::null(),
output.as_mut_ptr(),
)
} else {
fns.khr_create_renderpass2.create_render_pass2_khr(
(fns.khr_create_renderpass2.create_render_pass2_khr)(
device.internal_object(),
&create_info,
ptr::null(),
@ -1318,7 +1318,7 @@ impl RenderPass {
Ok({
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_render_pass(
check_errors((fns.v1_0.create_render_pass)(
device.internal_object(),
&create_info,
ptr::null(),

View File

@ -309,7 +309,7 @@ impl Framebuffer {
let handle = unsafe {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_framebuffer(
check_errors((fns.v1_0.create_framebuffer)(
device.internal_object(),
&create_info,
ptr::null(),
@ -367,8 +367,11 @@ impl Drop for Framebuffer {
fn drop(&mut self) {
unsafe {
let fns = self.device().fns();
fns.v1_0
.destroy_framebuffer(self.device().internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_framebuffer)(
self.device().internal_object(),
self.handle,
ptr::null(),
);
}
}
}

View File

@ -151,7 +151,7 @@ impl RenderPass {
let granularity = unsafe {
let fns = device.fns();
let mut out = MaybeUninit::uninit();
fns.v1_0.get_render_area_granularity(
(fns.v1_0.get_render_area_granularity)(
device.internal_object(),
handle,
out.as_mut_ptr(),
@ -475,8 +475,7 @@ impl Drop for RenderPass {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0
.destroy_render_pass(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_render_pass)(self.device.internal_object(), self.handle, ptr::null());
}
}
}

View File

@ -393,7 +393,7 @@ impl Sampler {
let handle = unsafe {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_sampler(
check_errors((fns.v1_0.create_sampler)(
device.internal_object(),
&create_info,
ptr::null(),
@ -657,8 +657,7 @@ impl Drop for Sampler {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0
.destroy_sampler(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_sampler)(self.device.internal_object(), self.handle, ptr::null());
}
}
}

View File

@ -153,7 +153,7 @@ impl ShaderModule {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_shader_module(
check_errors((fns.v1_0.create_shader_module)(
device.internal_object(),
&infos,
ptr::null(),
@ -267,8 +267,11 @@ impl Drop for ShaderModule {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.v1_0
.destroy_shader_module(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_shader_module)(
self.device.internal_object(),
self.handle,
ptr::null(),
);
}
}
}

View File

@ -62,28 +62,26 @@ impl DisplayPlane {
let num = unsafe {
let mut num: u32 = 0;
check_errors(
fns.khr_display
.get_physical_device_display_plane_properties_khr(
device.internal_object(),
&mut num,
ptr::null_mut(),
),
)?;
check_errors((fns
.khr_display
.get_physical_device_display_plane_properties_khr)(
device.internal_object(),
&mut num,
ptr::null_mut(),
))?;
num
};
let planes: Vec<ash::vk::DisplayPlanePropertiesKHR> = unsafe {
let mut planes = Vec::with_capacity(num as usize);
let mut num = num;
check_errors(
fns.khr_display
.get_physical_device_display_plane_properties_khr(
device.internal_object(),
&mut num,
planes.as_mut_ptr(),
),
)?;
check_errors((fns
.khr_display
.get_physical_device_display_plane_properties_khr)(
device.internal_object(),
&mut num,
planes.as_mut_ptr(),
))?;
planes.set_len(num as usize);
planes
};
@ -94,7 +92,7 @@ impl DisplayPlane {
.map(|(index, prop)| {
let num = unsafe {
let mut num: u32 = 0;
check_errors(fns.khr_display.get_display_plane_supported_displays_khr(
check_errors((fns.khr_display.get_display_plane_supported_displays_khr)(
device.internal_object(),
index as u32,
&mut num,
@ -107,7 +105,7 @@ impl DisplayPlane {
let supported_displays: Vec<ash::vk::DisplayKHR> = unsafe {
let mut displays = Vec::with_capacity(num as usize);
let mut num = num;
check_errors(fns.khr_display.get_display_plane_supported_displays_khr(
check_errors((fns.khr_display.get_display_plane_supported_displays_khr)(
device.internal_object(),
index as u32,
&mut num,
@ -186,22 +184,26 @@ impl Display {
let num = unsafe {
let mut num = 0;
check_errors(fns.khr_display.get_physical_device_display_properties_khr(
device.internal_object(),
&mut num,
ptr::null_mut(),
))?;
check_errors(
(fns.khr_display.get_physical_device_display_properties_khr)(
device.internal_object(),
&mut num,
ptr::null_mut(),
),
)?;
num
};
let displays: Vec<ash::vk::DisplayPropertiesKHR> = unsafe {
let mut displays = Vec::with_capacity(num as usize);
let mut num = num;
check_errors(fns.khr_display.get_physical_device_display_properties_khr(
device.internal_object(),
&mut num,
displays.as_mut_ptr(),
))?;
check_errors(
(fns.khr_display.get_physical_device_display_properties_khr)(
device.internal_object(),
&mut num,
displays.as_mut_ptr(),
),
)?;
displays.set_len(num as usize);
displays
};
@ -286,7 +288,7 @@ impl Display {
let num = unsafe {
let mut num = 0;
check_errors(fns.khr_display.get_display_mode_properties_khr(
check_errors((fns.khr_display.get_display_mode_properties_khr)(
self.physical_device().internal_object(),
self.properties.display,
&mut num,
@ -298,7 +300,7 @@ impl Display {
let modes: Vec<ash::vk::DisplayModePropertiesKHR> = unsafe {
let mut modes = Vec::with_capacity(num as usize);
let mut num = num;
check_errors(fns.khr_display.get_display_mode_properties_khr(
check_errors((fns.khr_display.get_display_mode_properties_khr)(
self.physical_device().internal_object(),
self.properties.display,
&mut num,
@ -368,7 +370,7 @@ impl DisplayMode {
};
let mut output = mem::uninitialized();
check_errors(fns.v1_0.CreateDisplayModeKHR(display.device.internal_object(),
check_errors((fns.v1_0.CreateDisplayModeKHR)(display.device.internal_object(),
display.display, &infos, ptr::null(),
&mut output))?;
output

View File

@ -115,7 +115,7 @@ impl<W> Surface<W> {
let handle = unsafe {
let fns = instance.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.khr_display.create_display_plane_surface_khr(
check_errors((fns.khr_display.create_display_plane_surface_khr)(
instance.internal_object(),
&create_info,
ptr::null(),
@ -161,7 +161,7 @@ impl<W> Surface<W> {
let handle = {
let fns = instance.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.khr_android_surface.create_android_surface_khr(
check_errors((fns.khr_android_surface.create_android_surface_khr)(
instance.internal_object(),
&create_info,
ptr::null(),
@ -208,7 +208,7 @@ impl<W> Surface<W> {
let handle = {
let fns = instance.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.mvk_ios_surface.create_ios_surface_mvk(
check_errors((fns.mvk_ios_surface.create_ios_surface_mvk)(
instance.internal_object(),
&create_info,
ptr::null(),
@ -255,7 +255,7 @@ impl<W> Surface<W> {
let handle = {
let fns = instance.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.mvk_macos_surface.create_mac_os_surface_mvk(
check_errors((fns.mvk_macos_surface.create_mac_os_surface_mvk)(
instance.internal_object(),
&create_info,
ptr::null(),
@ -301,7 +301,7 @@ impl<W> Surface<W> {
let handle = {
let fns = instance.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.ext_metal_surface.create_metal_surface_ext(
check_errors((fns.ext_metal_surface.create_metal_surface_ext)(
instance.internal_object(),
&create_info,
ptr::null(),
@ -347,7 +347,7 @@ impl<W> Surface<W> {
let handle = {
let fns = instance.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.nn_vi_surface.create_vi_surface_nn(
check_errors((fns.nn_vi_surface.create_vi_surface_nn)(
instance.internal_object(),
&create_info,
ptr::null(),
@ -397,7 +397,7 @@ impl<W> Surface<W> {
let handle = {
let fns = instance.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.khr_wayland_surface.create_wayland_surface_khr(
check_errors((fns.khr_wayland_surface.create_wayland_surface_khr)(
instance.internal_object(),
&create_info,
ptr::null(),
@ -447,7 +447,7 @@ impl<W> Surface<W> {
let handle = {
let fns = instance.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.khr_win32_surface.create_win32_surface_khr(
check_errors((fns.khr_win32_surface.create_win32_surface_khr)(
instance.internal_object(),
&create_info,
ptr::null(),
@ -497,7 +497,7 @@ impl<W> Surface<W> {
let handle = {
let fns = instance.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.khr_xcb_surface.create_xcb_surface_khr(
check_errors((fns.khr_xcb_surface.create_xcb_surface_khr)(
instance.internal_object(),
&create_info,
ptr::null(),
@ -547,7 +547,7 @@ impl<W> Surface<W> {
let handle = {
let fns = instance.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.khr_xlib_surface.create_xlib_surface_khr(
check_errors((fns.khr_xlib_surface.create_xlib_surface_khr)(
instance.internal_object(),
&create_info,
ptr::null(),
@ -590,7 +590,7 @@ impl<W> Drop for Surface<W> {
fn drop(&mut self) {
unsafe {
let fns = self.instance.fns();
fns.khr_surface.destroy_surface_khr(
(fns.khr_surface.destroy_surface_khr)(
self.instance.internal_object(),
self.handle,
ptr::null(),

View File

@ -580,7 +580,7 @@ impl<W> Swapchain<W> {
let handle = {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.khr_swapchain.create_swapchain_khr(
check_errors((fns.khr_swapchain.create_swapchain_khr)(
device.internal_object(),
&create_info,
ptr::null(),
@ -592,7 +592,7 @@ impl<W> Swapchain<W> {
let image_handles = {
let fns = device.fns();
let mut num = 0;
check_errors(fns.khr_swapchain.get_swapchain_images_khr(
check_errors((fns.khr_swapchain.get_swapchain_images_khr)(
device.internal_object(),
handle,
&mut num,
@ -600,7 +600,7 @@ impl<W> Swapchain<W> {
))?;
let mut images = Vec::with_capacity(num as usize);
check_errors(fns.khr_swapchain.get_swapchain_images_khr(
check_errors((fns.khr_swapchain.get_swapchain_images_khr)(
device.internal_object(),
handle,
&mut num,
@ -772,15 +772,13 @@ impl<W> Swapchain<W> {
}
unsafe {
check_errors(
self.device
.fns()
.ext_full_screen_exclusive
.acquire_full_screen_exclusive_mode_ext(
self.device.internal_object(),
self.handle,
),
)?;
let fns = self.device.fns();
check_errors((fns
.ext_full_screen_exclusive
.acquire_full_screen_exclusive_mode_ext)(
self.device.internal_object(),
self.handle,
))?;
}
Ok(())
@ -803,15 +801,13 @@ impl<W> Swapchain<W> {
}
unsafe {
check_errors(
self.device
.fns()
.ext_full_screen_exclusive
.release_full_screen_exclusive_mode_ext(
self.device.internal_object(),
self.handle,
),
)?;
let fns = self.device.fns();
check_errors((fns
.ext_full_screen_exclusive
.release_full_screen_exclusive_mode_ext)(
self.device.internal_object(),
self.handle,
))?;
}
Ok(())
@ -855,7 +851,7 @@ impl<W> Drop for Swapchain<W> {
fn drop(&mut self) {
unsafe {
let fns = self.device.fns();
fns.khr_swapchain.destroy_swapchain_khr(
(fns.khr_swapchain.destroy_swapchain_khr)(
self.device.internal_object(),
self.handle,
ptr::null(),
@ -1964,20 +1960,18 @@ pub unsafe fn acquire_next_image_raw<W>(
};
let mut out = MaybeUninit::uninit();
let r = check_errors(
fns.khr_swapchain.acquire_next_image_khr(
swapchain.device.internal_object(),
swapchain.handle,
timeout_ns,
semaphore
.map(|s| s.internal_object())
.unwrap_or(ash::vk::Semaphore::null()),
fence
.map(|f| f.internal_object())
.unwrap_or(ash::vk::Fence::null()),
out.as_mut_ptr(),
),
)?;
let r = check_errors((fns.khr_swapchain.acquire_next_image_khr)(
swapchain.device.internal_object(),
swapchain.handle,
timeout_ns,
semaphore
.map(|s| s.internal_object())
.unwrap_or(ash::vk::Semaphore::null()),
fence
.map(|f| f.internal_object())
.unwrap_or(ash::vk::Fence::null()),
out.as_mut_ptr(),
))?;
let out = out.assume_init();
let (id, suboptimal) = match r {

View File

@ -43,7 +43,7 @@ impl Event {
let handle = unsafe {
let mut output = MaybeUninit::uninit();
let fns = device.fns();
check_errors(fns.v1_0.create_event(
check_errors((fns.v1_0.create_event)(
device.internal_object(),
&create_info,
ptr::null(),
@ -72,7 +72,7 @@ impl Event {
unsafe {
// Make sure the event isn't signaled
let fns = device.fns();
check_errors(fns.v1_0.reset_event(device.internal_object(), handle))?;
check_errors((fns.v1_0.reset_event)(device.internal_object(), handle))?;
}
Event {
handle,
@ -96,10 +96,10 @@ impl Event {
pub fn signaled(&self) -> Result<bool, OomError> {
unsafe {
let fns = self.device.fns();
let result = check_errors(
fns.v1_0
.get_event_status(self.device.internal_object(), self.handle),
)?;
let result = check_errors((fns.v1_0.get_event_status)(
self.device.internal_object(),
self.handle,
))?;
match result {
Success::EventSet => Ok(true),
Success::EventReset => Ok(false),
@ -113,10 +113,10 @@ impl Event {
pub fn set_raw(&mut self) -> Result<(), OomError> {
unsafe {
let fns = self.device.fns();
check_errors(
fns.v1_0
.set_event(self.device.internal_object(), self.handle),
)?;
check_errors((fns.v1_0.set_event)(
self.device.internal_object(),
self.handle,
))?;
Ok(())
}
}
@ -139,10 +139,10 @@ impl Event {
pub fn reset_raw(&mut self) -> Result<(), OomError> {
unsafe {
let fns = self.device.fns();
check_errors(
fns.v1_0
.reset_event(self.device.internal_object(), self.handle),
)?;
check_errors((fns.v1_0.reset_event)(
self.device.internal_object(),
self.handle,
))?;
Ok(())
}
}
@ -168,8 +168,7 @@ impl Drop for Event {
self.device.event_pool().lock().unwrap().push(raw_event);
} else {
let fns = self.device.fns();
fns.v1_0
.destroy_event(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_event)(self.device.internal_object(), self.handle, ptr::null());
}
}
}

View File

@ -64,7 +64,7 @@ impl Fence {
let handle = unsafe {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_fence(
check_errors((fns.v1_0.create_fence)(
device.internal_object(),
&create_info,
ptr::null(),
@ -94,7 +94,11 @@ impl Fence {
unsafe {
// Make sure the fence isn't signaled
let fns = device.fns();
check_errors(fns.v1_0.reset_fences(device.internal_object(), 1, &handle))?;
check_errors((fns.v1_0.reset_fences)(
device.internal_object(),
1,
&handle,
))?;
}
Fence {
@ -124,10 +128,10 @@ impl Fence {
}
let fns = self.device.fns();
let result = check_errors(
fns.v1_0
.get_fence_status(self.device.internal_object(), self.handle),
)?;
let result = check_errors((fns.v1_0.get_fence_status)(
self.device.internal_object(),
self.handle,
))?;
match result {
Success::Success => {
self.signaled.store(true, Ordering::Relaxed);
@ -160,7 +164,7 @@ impl Fence {
};
let fns = self.device.fns();
let r = check_errors(fns.v1_0.wait_for_fences(
let r = check_errors((fns.v1_0.wait_for_fences)(
self.device.internal_object(),
1,
&self.handle,
@ -223,7 +227,7 @@ impl Fence {
let r = if let Some(device) = device {
unsafe {
let fns = device.fns();
check_errors(fns.v1_0.wait_for_fences(
check_errors((fns.v1_0.wait_for_fences)(
device.internal_object(),
fences.len() as u32,
fences.as_ptr(),
@ -249,10 +253,11 @@ impl Fence {
pub fn reset(&mut self) -> Result<(), OomError> {
unsafe {
let fns = self.device.fns();
check_errors(
fns.v1_0
.reset_fences(self.device.internal_object(), 1, &self.handle),
)?;
check_errors((fns.v1_0.reset_fences)(
self.device.internal_object(),
1,
&self.handle,
))?;
self.signaled.store(false, Ordering::Relaxed);
Ok(())
}
@ -291,7 +296,7 @@ impl Fence {
if let Some(device) = device {
unsafe {
let fns = device.fns();
check_errors(fns.v1_0.reset_fences(
check_errors((fns.v1_0.reset_fences)(
device.internal_object(),
fences.len() as u32,
fences.as_ptr(),
@ -311,8 +316,7 @@ impl Drop for Fence {
self.device.fence_pool().lock().unwrap().push(raw_fence);
} else {
let fns = self.device.fns();
fns.v1_0
.destroy_fence(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_fence)(self.device.internal_object(), self.handle, ptr::null());
}
}
}

View File

@ -95,7 +95,7 @@ impl Semaphore {
let handle = unsafe {
let fns = device.fns();
let mut output = MaybeUninit::uninit();
check_errors(fns.v1_0.create_semaphore(
check_errors((fns.v1_0.create_semaphore)(
device.internal_object(),
&create_info.build(),
ptr::null(),
@ -174,7 +174,7 @@ impl Semaphore {
};
let mut output = MaybeUninit::uninit();
check_errors(fns.khr_external_semaphore_fd.get_semaphore_fd_khr(
check_errors((fns.khr_external_semaphore_fd.get_semaphore_fd_khr)(
self.device.internal_object(),
&info,
output.as_mut_ptr(),
@ -196,8 +196,11 @@ impl Drop for Semaphore {
self.device.semaphore_pool().lock().unwrap().push(raw_sem);
} else {
let fns = self.device.fns();
fns.v1_0
.destroy_semaphore(self.device.internal_object(), self.handle, ptr::null());
(fns.v1_0.destroy_semaphore)(
self.device.internal_object(),
self.handle,
ptr::null(),
);
}
}
}

View File

@ -56,6 +56,7 @@ branch of the member gitlab server.
<tag name="GOOGLE" author="Google LLC" contact="Jesse Hall @critsec"/>
<tag name="QCOM" author="Qualcomm Technologies, Inc." contact="Jeff Leger @jackohounhd"/>
<tag name="LUNARG" author="LunarG, Inc." contact="Karen Ghavam @karenghavam-lunarg"/>
<tag name="NZXT" author="NZXT Inc." contact="Jacob Kiesel @xaeroxe"/>
<tag name="SAMSUNG" author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/>
<tag name="SEC" author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/>
<tag name="TIZEN" author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/>
@ -72,6 +73,7 @@ branch of the member gitlab server.
<tag name="QNX" author="BlackBerry Limited" contact="Mike Gorchak @mgorchak-blackberry"/>
<tag name="JUICE" author="Juice Technologies, Inc." contact="David McCloskey @damcclos, Dean Beeler @canadacow"/>
<tag name="FB" author="Facebook, Inc" contact="Artem Bolgar @artyom17"/>
<tag name="RASTERGRID" author="RasterGrid Kft." contact="Daniel Rakos @aqnuep1"/>
</tags>
<types comment="Vulkan type definitions">
@ -157,7 +159,7 @@ branch of the member gitlab server.
<type category="define" requires="VK_MAKE_API_VERSION">// Vulkan 1.3 version number
#define <name>VK_API_VERSION_1_3</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 3, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 206</type>
#define <name>VK_HEADER_VERSION</name> 209</type>
<type category="define" requires="VK_HEADER_VERSION">// Complete version of this file
#define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 3, VK_HEADER_VERSION)</type>
@ -247,7 +249,7 @@ typedef void <name>CAMetalLayer</name>;
<type requires="VkPipelineShaderStageCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineShaderStageCreateFlags</name>;</type>
<type requires="VkDescriptorSetLayoutCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorSetLayoutCreateFlags</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkBufferViewCreateFlags</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkInstanceCreateFlags</name>;</type>
<type requires="VkInstanceCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkInstanceCreateFlags</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceCreateFlags</name>;</type>
<type requires="VkDeviceQueueCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceQueueCreateFlags</name>;</type>
<type requires="VkQueueFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkQueueFlags</name>;</type>
@ -407,14 +409,11 @@ typedef void <name>CAMetalLayer</name>;
<type requires="VkVideoCodingControlFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoCodingControlFlagsKHR</name>;</type>
<comment>Video Decode Core extension</comment>
<type requires="VkVideoDecodeCapabilityFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeCapabilityFlagsKHR</name>;</type>
<type requires="VkVideoDecodeFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeFlagsKHR</name>;</type>
<comment>Video Decode H.264 extension</comment>
<type requires="VkVideoDecodeH264PictureLayoutFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeH264PictureLayoutFlagsEXT</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeH264CreateFlagsEXT</name>;</type>
<comment>Video Decode H.265 extension</comment>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeH265CreateFlagsEXT</name>;</type>
<comment>Video Encode Core extension</comment>
<type requires="VkVideoEncodeFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeFlagsKHR</name>;</type>
@ -428,14 +427,12 @@ typedef void <name>CAMetalLayer</name>;
<type requires="VkVideoEncodeH264CapabilityFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH264CapabilityFlagsEXT</name>;</type>
<type requires="VkVideoEncodeH264InputModeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH264InputModeFlagsEXT</name>;</type>
<type requires="VkVideoEncodeH264OutputModeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH264OutputModeFlagsEXT</name>;</type>
<type requires="VkVideoEncodeH264CreateFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH264CreateFlagsEXT</name>;</type>
<type requires="VkVideoEncodeH264RateControlStructureFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH264RateControlStructureFlagsEXT</name>;</type>
<comment>Video Encode H.265 extension</comment>
<type requires="VkVideoEncodeH265CapabilityFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265CapabilityFlagsEXT</name>;</type>
<type requires="VkVideoEncodeH265InputModeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265InputModeFlagsEXT</name>;</type>
<type requires="VkVideoEncodeH265OutputModeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265OutputModeFlagsEXT</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265CreateFlagsEXT</name>;</type>
<type requires="VkVideoEncodeH265RateControlStructureFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265RateControlStructureFlagsEXT</name>;</type>
<type requires="VkVideoEncodeH265CtbSizeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265CtbSizeFlagsEXT</name>;</type>
<type requires="VkVideoEncodeH265TransformBlockSizeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265TransformBlockSizeFlagsEXT</name>;</type>
@ -746,6 +743,7 @@ typedef void <name>CAMetalLayer</name>;
<type name="VkQueryResultStatusKHR" category="enum"/>
<comment>Video Decode extensions</comment>
<type name="VkVideoDecodeCapabilityFlagBitsKHR" category="enum"/>
<type name="VkVideoDecodeFlagBitsKHR" category="enum"/>
<comment>Video H.264 Decode extensions</comment>
@ -763,7 +761,6 @@ typedef void <name>CAMetalLayer</name>;
<type name="VkVideoEncodeH264CapabilityFlagBitsEXT" category="enum"/>
<type name="VkVideoEncodeH264InputModeFlagBitsEXT" category="enum"/>
<type name="VkVideoEncodeH264OutputModeFlagBitsEXT" category="enum"/>
<type name="VkVideoEncodeH264CreateFlagBitsEXT" category="enum"/>
<type name="VkVideoEncodeH264RateControlStructureFlagBitsEXT" category="enum"/>
<comment>Video H.265 Encode extensions</comment>
@ -1744,7 +1741,7 @@ typedef void <name>CAMetalLayer</name>;
<member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>framebufferDepthSampleCounts</name><comment>supported depth sample counts for a framebuffer</comment></member>
<member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>framebufferStencilSampleCounts</name><comment>supported stencil sample counts for a framebuffer</comment></member>
<member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>framebufferNoAttachmentsSampleCounts</name><comment>supported sample counts for a subpass which uses no attachments</comment></member>
<member limittype="bitmask"><type>uint32_t</type> <name>maxColorAttachments</name><comment>max number of color attachments per subpass</comment></member>
<member limittype="max"><type>uint32_t</type> <name>maxColorAttachments</name><comment>max number of color attachments per subpass</comment></member>
<member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>sampledImageColorSampleCounts</name><comment>supported color sample counts for a non-integer sampled image</comment></member>
<member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>sampledImageIntegerSampleCounts</name><comment>supported sample counts for an integer image</comment></member>
<member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>sampledImageDepthSampleCounts</name><comment>supported depth sample counts for a sampled image</comment></member>
@ -3044,7 +3041,7 @@ typedef void <name>CAMetalLayer</name>;
<member values="VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member>const <type>VkImageCreateInfo</type>* <name>pCreateInfo</name></member>
<member><type>VkImageAspectFlagBits</type> <name>planeAspect</name></member>
<member optional="true"><type>VkImageAspectFlagBits</type> <name>planeAspect</name></member>
</type>
<type category="struct" name="VkDeviceImageMemoryRequirementsKHR" alias="VkDeviceImageMemoryRequirements"/>
<type category="struct" name="VkMemoryRequirements2" returnedonly="true">
@ -4287,7 +4284,7 @@ typedef void <name>CAMetalLayer</name>;
<member values="VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member optional="true"><type>uint32_t</type> <name>drmFormatModifierCount</name></member>
<member optional="true,false" len="drmFormatModifierCount"><type>VkDrmFormatModifierPropertiesEXT</type>* <name>pDrmFormatModifierProperties</name></member>
<member optional="true" len="drmFormatModifierCount"><type>VkDrmFormatModifierPropertiesEXT</type>* <name>pDrmFormatModifierProperties</name></member>
</type>
<type category="struct" name="VkDrmFormatModifierPropertiesEXT" returnedonly="true">
<member><type>uint64_t</type> <name>drmFormatModifier</name></member>
@ -5593,7 +5590,7 @@ typedef void <name>CAMetalLayer</name>;
<type category="struct" name="VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV" structextends="VkPhysicalDeviceProperties2">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member limittype="bitmask"><type>VkSampleCountFlagBits</type> <name>maxFragmentShadingRateInvocationCount</name></member>
<member limittype="max"><type>VkSampleCountFlagBits</type> <name>maxFragmentShadingRateInvocationCount</name></member>
</type>
<type category="struct" name="VkPipelineFragmentShadingRateEnumStateCreateInfoNV" structextends="VkGraphicsPipelineCreateInfo">
<member values="VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
@ -5780,7 +5777,7 @@ typedef void <name>CAMetalLayer</name>;
<member values="VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR"><type>VkStructureType</type><name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>profileCount</name></member>
<member>const <type>VkVideoProfileKHR</type>* <name>pProfiles</name></member>
<member len="profileCount">const <type>VkVideoProfileKHR</type>* <name>pProfiles</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceVideoFormatInfoKHR" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
@ -5803,7 +5800,7 @@ typedef void <name>CAMetalLayer</name>;
</type>
<type category="struct" name="VkVideoCapabilitiesKHR" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR"><type>VkStructureType</type><name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkVideoCapabilityFlagsKHR</type> <name>capabilityFlags</name></member>
<member><type>VkDeviceSize</type> <name>minBitstreamBufferOffsetAlignment</name></member>
<member><type>VkDeviceSize</type> <name>minBitstreamBufferSizeAlignment</name></member>
@ -5812,6 +5809,7 @@ typedef void <name>CAMetalLayer</name>;
<member><type>VkExtent2D</type> <name>maxExtent</name></member>
<member><type>uint32_t</type> <name>maxReferencePicturesSlotsCount</name></member>
<member><type>uint32_t</type> <name>maxReferencePicturesActiveCount</name></member>
<member><type>VkExtensionProperties</type> <name>stdHeaderVersion</name></member>
</type>
<type category="struct" name="VkVideoGetMemoryPropertiesKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR"><type>VkStructureType</type><name>sType</name></member>
@ -5841,6 +5839,11 @@ typedef void <name>CAMetalLayer</name>;
<member><type>int8_t</type> <name>slotIndex</name><comment>The reference slot index</comment></member>
<member>const <type>VkVideoPictureResourceKHR</type>* <name>pPictureResource</name><comment>The reference picture resource</comment></member>
</type>
<type category="struct" name="VkVideoDecodeCapabilitiesKHR" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR"><type>VkStructureType</type><name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member noautovalidity="true"><type>VkVideoDecodeCapabilityFlagsKHR</type> <name>flags</name></member>
</type>
<type category="struct" name="VkVideoDecodeInfoKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
@ -5889,18 +5892,11 @@ typedef void <name>CAMetalLayer</name>;
<member><type>StdVideoH264ProfileIdc</type> <name>stdProfileIdc</name></member>
<member noautovalidity="true"><type>VkVideoDecodeH264PictureLayoutFlagsEXT</type> <name>pictureLayout</name></member>
</type>
<type category="struct" name="VkVideoDecodeH264CapabilitiesEXT" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
<type category="struct" name="VkVideoDecodeH264CapabilitiesEXT" returnedonly="true" structextends="VkVideoDecodeCapabilitiesKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT"><type>VkStructureType</type><name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>maxLevel</name></member>
<member><type>VkOffset2D</type> <name>fieldOffsetGranularity</name></member>
<member><type>VkExtensionProperties</type> <name>stdExtensionVersion</name></member>
</type>
<type category="struct" name="VkVideoDecodeH264SessionCreateInfoEXT" structextends="VkVideoSessionCreateInfoKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkVideoDecodeH264CreateFlagsEXT</type> <name>flags</name></member>
<member>const <type>VkExtensionProperties</type>* <name>pStdExtensionVersion</name></member>
</type>
<type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264SequenceParameterSet"/>
<type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264PictureParameterSet"/>
@ -5965,21 +5961,16 @@ typedef void <name>CAMetalLayer</name>;
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>StdVideoH265ProfileIdc</type> <name>stdProfileIdc</name></member>
</type>
<type category="struct" name="VkVideoDecodeH265CapabilitiesEXT" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
<type category="struct" name="VkVideoDecodeH265CapabilitiesEXT" returnedonly="true" structextends="VkVideoDecodeCapabilitiesKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT"><type>VkStructureType</type><name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>maxLevel</name></member>
<member><type>VkExtensionProperties</type> <name>stdExtensionVersion</name></member>
</type>
<type category="struct" name="VkVideoDecodeH265SessionCreateInfoEXT" structextends="VkVideoSessionCreateInfoKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkVideoDecodeH265CreateFlagsEXT</type> <name>flags</name></member>
<member>const <type>VkExtensionProperties</type>* <name>pStdExtensionVersion</name></member>
</type>
<type category="struct" name="VkVideoDecodeH265SessionParametersAddInfoEXT" structextends="VkVideoSessionParametersUpdateInfoKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>vpsStdCount</name></member>
<member len="vpsStdCount" optional="true">const <type>StdVideoH265VideoParameterSet</type>* <name>pVpsStd</name></member>
<member><type>uint32_t</type> <name>spsStdCount</name></member>
<member len="spsStdCount" optional="true">const <type>StdVideoH265SequenceParameterSet</type>* <name>pSpsStd</name></member>
<member><type>uint32_t</type> <name>ppsStdCount</name></member>
@ -5987,7 +5978,8 @@ typedef void <name>CAMetalLayer</name>;
</type>
<type category="struct" name="VkVideoDecodeH265SessionParametersCreateInfoEXT" structextends="VkVideoSessionParametersCreateInfoKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>maxVpsStdCount</name></member>
<member><type>uint32_t</type> <name>maxSpsStdCount</name></member>
<member><type>uint32_t</type> <name>maxPpsStdCount</name></member>
<member optional="true">const <type>VkVideoDecodeH265SessionParametersAddInfoEXT</type>* <name>pParametersAddInfo</name></member>
@ -6006,7 +5998,7 @@ typedef void <name>CAMetalLayer</name>;
</type>
<type category="struct" name="VkVideoSessionCreateInfoKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>queueFamilyIndex</name></member>
<member optional="true"><type>VkVideoSessionCreateFlagsKHR</type> <name>flags</name></member>
<member>const <type>VkVideoProfileKHR</type>* <name>pVideoProfile</name></member>
@ -6015,6 +6007,7 @@ typedef void <name>CAMetalLayer</name>;
<member><type>VkFormat</type> <name>referencePicturesFormat</name></member>
<member><type>uint32_t</type> <name>maxReferencePicturesSlotsCount</name></member>
<member><type>uint32_t</type> <name>maxReferencePicturesActiveCount</name></member>
<member>const <type>VkExtensionProperties</type>* <name>pStdHeaderVersion</name></member>
</type>
<type category="struct" name="VkVideoSessionParametersCreateInfoKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
@ -6103,14 +6096,6 @@ typedef void <name>CAMetalLayer</name>;
<member><type>uint32_t</type> <name>maxBitsPerMbDenom</name></member>
<member><type>uint32_t</type> <name>log2MaxMvLengthHorizontal</name></member>
<member><type>uint32_t</type> <name>log2MaxMvLengthVertical</name></member>
<member><type>VkExtensionProperties</type> <name>stdExtensionVersion</name></member>
</type>
<type category="struct" name="VkVideoEncodeH264SessionCreateInfoEXT" structextends="VkVideoSessionCreateInfoKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkVideoEncodeH264CreateFlagsEXT</type> <name>flags</name></member>
<member><type>VkExtent2D</type> <name>maxPictureSizeInMbs</name></member>
<member>const <type>VkExtensionProperties</type>* <name>pStdExtensionVersion</name></member>
</type>
<type category="include" name="vk_video/vulkan_video_codec_h264std_encode.h">#include "vk_video/vulkan_video_codec_h264std_encode.h"</type>
<type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264SliceHeader"/>
@ -6236,13 +6221,6 @@ typedef void <name>CAMetalLayer</name>;
<member><type>uint8_t</type> <name>maxDiffCuQpDeltaDepth</name></member>
<member><type>uint8_t</type> <name>minMaxNumMergeCand</name></member>
<member><type>uint8_t</type> <name>maxMaxNumMergeCand</name></member>
<member><type>VkExtensionProperties</type> <name>stdExtensionVersion</name></member>
</type>
<type category="struct" name="VkVideoEncodeH265SessionCreateInfoEXT" structextends="VkVideoSessionCreateInfoKHR">
<member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkVideoEncodeH265CreateFlagsEXT</type> <name>flags</name></member>
<member>const <type>VkExtensionProperties</type>* <name>pStdExtensionVersion</name></member>
</type>
<type category="include" name="vk_video/vulkan_video_codec_h265std_encode.h">#include "vk_video/vulkan_video_codec_h265std_encode.h"</type>
<type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265PictureInfoFlags"/>
@ -6628,7 +6606,7 @@ typedef void <name>CAMetalLayer</name>;
<member values="VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member optional="true"><type>uint32_t</type> <name>drmFormatModifierCount</name></member>
<member optional="true,false" len="drmFormatModifierCount"><type>VkDrmFormatModifierProperties2EXT</type>* <name>pDrmFormatModifierProperties</name></member>
<member optional="true" len="drmFormatModifierCount"><type>VkDrmFormatModifierProperties2EXT</type>* <name>pDrmFormatModifierProperties</name></member>
</type>
<type category="struct" name="VkDrmFormatModifierProperties2EXT" returnedonly="true">
<member><type>uint64_t</type> <name>drmFormatModifier</name></member>
@ -6750,6 +6728,23 @@ typedef void <name>CAMetalLayer</name>;
<member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>linearColorAttachment</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>descriptorSetHostMapping</name></member>
</type>
<type category="struct" name="VkDescriptorSetBindingReferenceVALVE">
<member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkDescriptorSetLayout</type> <name>descriptorSetLayout</name></member>
<member><type>uint32_t</type> <name>binding</name></member>
</type>
<type category="struct" name="VkDescriptorSetLayoutHostMappingInfoVALVE">
<member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>size_t</type> <name>descriptorOffset</name></member>
<member><type>uint32_t</type> <name>descriptorSize</name></member>
</type>
</types>
<comment>Vulkan enumerant (token) definitions</comment>
@ -8353,6 +8348,11 @@ typedef void <name>CAMetalLayer</name>;
<enum value="0" name="VK_QUERY_RESULT_STATUS_NOT_READY_KHR"/>
<enum value="1" name="VK_QUERY_RESULT_STATUS_COMPLETE_KHR"/>
</enums>
<enums name="VkVideoDecodeCapabilityFlagBitsKHR" type="bitmask">
<enum value="0" name="VK_VIDEO_DECODE_CAPABILITY_DEFAULT_KHR"/>
<enum bitpos="0" name="VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR"/>
<enum bitpos="1" name="VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR"/>
</enums>
<enums name="VkVideoDecodeFlagBitsKHR" type="bitmask">
<enum value="0" name="VK_VIDEO_DECODE_DEFAULT_KHR"/>
<enum bitpos="0" name="VK_VIDEO_DECODE_RESERVED_0_BIT_KHR"/>
@ -8409,10 +8409,6 @@ typedef void <name>CAMetalLayer</name>;
<enum bitpos="1" name="VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT"/>
<enum bitpos="2" name="VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT"/>
</enums>
<enums name="VkVideoEncodeH264CreateFlagBitsEXT" type="bitmask">
<enum value="0" name="VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT"/>
<enum bitpos="0" name="VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT"/>
</enums>
<enums name="VkVideoEncodeH264RateControlStructureFlagBitsEXT" type="bitmask">
<enum value="0" name="VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT"/>
<enum bitpos="0" name="VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT"/>
@ -8543,6 +8539,8 @@ typedef void <name>CAMetalLayer</name>;
<enum bitpos="2" name="VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT"/>
<enum bitpos="3" name="VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT"/>
</enums>
<enums name="VkInstanceCreateFlagBits" type="bitmask">
</enums>
<commands comment="Vulkan command definitions">
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_LAYER_NOT_PRESENT,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_INCOMPATIBLE_DRIVER">
@ -11699,6 +11697,18 @@ typedef void <name>CAMetalLayer</name>;
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
</command>
<command name="vkCmdEndRenderingKHR" alias="vkCmdEndRendering"/>
<command>
<proto><type>void</type> <name>vkGetDescriptorSetLayoutHostMappingInfoVALVE</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param>const <type>VkDescriptorSetBindingReferenceVALVE</type>* <name>pBindingReference</name></param>
<param><type>VkDescriptorSetLayoutHostMappingInfoVALVE</type>* <name>pHostMapping</name></param>
</command>
<command>
<proto><type>void</type> <name>vkGetDescriptorSetHostMappingVALVE</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param><type>VkDescriptorSet</type> <name>descriptorSet</name></param>
<param><type>void</type>** <name>ppData</name></param>
</command>
</commands>
<feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions">
@ -11783,7 +11793,8 @@ typedef void <name>CAMetalLayer</name>;
<type name="VkImageUsageFlagBits"/>
<type name="VkImageUsageFlags"/>
<type name="VkInstance"/>
<type name="VkInstanceCreateFlags" comment="Will add VkInstanceCreateFlagBits when bits are defined in the future"/>
<type name="VkInstanceCreateFlags"/>
<type name="VkInstanceCreateFlagBits"/>
<type name="VkInstanceCreateInfo"/>
<type name="VkInternalAllocationType"/>
<type name="VkMemoryHeap"/>
@ -13302,7 +13313,7 @@ typedef void <name>CAMetalLayer</name>;
</extension>
<extension name="VK_KHR_video_queue" number="24" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_sampler_ycbcr_conversion" author="KHR" contact="Tony Zlatinski @tzlatinski" provisional="true" platform="provisional" supported="vulkan">
<require>
<enum value="2" name="VK_KHR_VIDEO_QUEUE_SPEC_VERSION"/>
<enum value="3" name="VK_KHR_VIDEO_QUEUE_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_video_queue&quot;" name="VK_KHR_VIDEO_QUEUE_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
@ -13385,9 +13396,10 @@ typedef void <name>CAMetalLayer</name>;
</extension>
<extension name="VK_KHR_video_decode_queue" number="25" type="device" requires="VK_KHR_video_queue,VK_KHR_synchronization2" author="KHR" contact="jake.beju@amd.com" provisional="true" platform="provisional" supported="vulkan">
<require>
<enum value="2" name="VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION"/>
<enum value="3" name="VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_video_decode_queue&quot;" name="VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum bitpos="5" extends="VkQueueFlagBits" name="VK_QUEUE_VIDEO_DECODE_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum bitpos="26" extends="VkPipelineStageFlagBits2" name="VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum bitpos="35" extends="VkAccessFlagBits2" name="VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS" />
@ -13403,6 +13415,10 @@ typedef void <name>CAMetalLayer</name>;
<enum offset="1" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="2" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<type name="VkVideoDecodeCapabilityFlagBitsKHR"/>
<type name="VkVideoDecodeCapabilityFlagsKHR"/>
<type name="VkVideoDecodeCapabilitiesKHR"/>
<type name="VkVideoDecodeFlagBitsKHR"/>
<type name="VkVideoDecodeFlagsKHR"/>
@ -13552,20 +13568,19 @@ typedef void <name>CAMetalLayer</name>;
</extension>
<extension name="VK_EXT_video_encode_h264" number="39" type="device" requires="VK_KHR_video_encode_queue" author="KHR" contact="Ahmed Abdelkhalek @aabdelkh" provisional="true" platform="provisional" supported="vulkan">
<require>
<enum value="5" name="VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION"/>
<enum value="6" name="VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_video_encode_h264&quot;" name="VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="10" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="11" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="10" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum bitpos="16" extends="VkVideoCodecOperationFlagBitsKHR" name="VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<type name="VkVideoEncodeH264CapabilityFlagBitsEXT"/>
@ -13574,10 +13589,7 @@ typedef void <name>CAMetalLayer</name>;
<type name="VkVideoEncodeH264InputModeFlagsEXT"/>
<type name="VkVideoEncodeH264OutputModeFlagBitsEXT"/>
<type name="VkVideoEncodeH264OutputModeFlagsEXT"/>
<type name="VkVideoEncodeH264CreateFlagBitsEXT"/>
<type name="VkVideoEncodeH264CreateFlagsEXT"/>
<type name="VkVideoEncodeH264CapabilitiesEXT"/>
<type name="VkVideoEncodeH264SessionCreateInfoEXT"/>
<type name="VkVideoEncodeH264SessionParametersCreateInfoEXT"/>
<type name="VkVideoEncodeH264SessionParametersAddInfoEXT"/>
<type name="VkVideoEncodeH264VclFrameInfoEXT"/>
@ -13596,20 +13608,19 @@ typedef void <name>CAMetalLayer</name>;
</extension>
<extension name="VK_EXT_video_encode_h265" number="40" type="device" requires="VK_KHR_video_encode_queue" author="KHR" contact="Ahmed Abdelkhalek @aabdelkh" provisional="true" platform="provisional" supported="vulkan">
<require>
<enum value="5" name="VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION"/>
<enum value="6" name="VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_video_encode_h265&quot;" name="VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="10" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="11" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="10" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum bitpos="17" extends="VkVideoCodecOperationFlagBitsKHR" name="VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<type name="VkVideoEncodeH265CapabilityFlagBitsEXT"/>
@ -13618,14 +13629,12 @@ typedef void <name>CAMetalLayer</name>;
<type name="VkVideoEncodeH265InputModeFlagsEXT"/>
<type name="VkVideoEncodeH265OutputModeFlagBitsEXT"/>
<type name="VkVideoEncodeH265OutputModeFlagsEXT"/>
<type name="VkVideoEncodeH265CreateFlagsEXT" comment="Will add VkVideoEncodeH265CreateFlagBitsEXT when bits are defined in the future"/>
<type name="VkVideoEncodeH265CtbSizeFlagBitsEXT"/>
<type name="VkVideoEncodeH265CtbSizeFlagsEXT"/>
<type name="VkVideoEncodeH265TransformBlockSizeFlagBitsEXT"/>
<type name="VkVideoEncodeH265TransformBlockSizeFlagsEXT"/>
<type name="VkVideoEncodeH265CapabilitiesEXT"/>
<type name="VkVideoEncodeH265SessionCreateInfoEXT"/>
<type name="VkVideoEncodeH265SessionParametersCreateInfoEXT"/>
<type name="VkVideoEncodeH265SessionParametersAddInfoEXT"/>
<type name="VkVideoEncodeH265VclFrameInfoEXT"/>
@ -13644,23 +13653,20 @@ typedef void <name>CAMetalLayer</name>;
</extension>
<extension name="VK_EXT_video_decode_h264" number="41" type="device" requires="VK_KHR_video_decode_queue" author="KHR" contact="peter.fang@amd.com" provisional="true" platform="provisional" supported="vulkan">
<require>
<enum value="3" name="VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION"/>
<enum value="4" name="VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_video_decode_h264&quot;" name="VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum bitpos="0" extends="VkVideoCodecOperationFlagBitsKHR" name="VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<type name="VkVideoDecodeH264PictureLayoutFlagBitsEXT"/>
<type name="VkVideoDecodeH264PictureLayoutFlagsEXT"/>
<type name="VkVideoDecodeH264CreateFlagsEXT"/>
<type name="VkVideoDecodeH264ProfileEXT"/>
<type name="VkVideoDecodeH264CapabilitiesEXT"/>
<type name="VkVideoDecodeH264SessionCreateInfoEXT"/>
<type name="VkVideoDecodeH264SessionParametersCreateInfoEXT"/>
<type name="VkVideoDecodeH264SessionParametersAddInfoEXT"/>
<type name="VkVideoDecodeH264PictureInfoEXT"/>
@ -14832,7 +14838,7 @@ typedef void <name>CAMetalLayer</name>;
</extension>
<extension name="VK_ANDROID_external_memory_android_hardware_buffer" number="130" type="device" author="ANDROID" requires="VK_KHR_sampler_ycbcr_conversion,VK_KHR_external_memory,VK_EXT_queue_family_foreign,VK_KHR_dedicated_allocation" platform="android" contact="Jesse Hall @critsec" supported="vulkan">
<require>
<enum value="4" name="VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION"/>
<enum value="5" name="VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION"/>
<enum value="&quot;VK_ANDROID_external_memory_android_hardware_buffer&quot;" name="VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME"/>
<enum bitpos="10" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"/>
@ -15763,21 +15769,18 @@ typedef void <name>CAMetalLayer</name>;
</extension>
<extension name="VK_EXT_video_decode_h265" number="188" type="device" requires="VK_KHR_video_decode_queue" author="KHR" contact="peter.fang@amd.com" provisional="true" platform="provisional" supported="vulkan">
<require>
<enum value="1" name="VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION"/>
<enum value="2" name="VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_video_decode_h265&quot;" name="VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<enum bitpos="1" extends="VkVideoCodecOperationFlagBitsKHR" name="VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
<type name="VkVideoDecodeH265CreateFlagsEXT"/>
<type name="VkVideoDecodeH265ProfileEXT"/>
<type name="VkVideoDecodeH265CapabilitiesEXT"/>
<type name="VkVideoDecodeH265SessionCreateInfoEXT"/>
<type name="VkVideoDecodeH265SessionParametersCreateInfoEXT"/>
<type name="VkVideoDecodeH265SessionParametersAddInfoEXT"/>
@ -16717,6 +16720,7 @@ typedef void <name>CAMetalLayer</name>;
<require>
<enum value="0" name="VK_INTEL_EXTENSION_271_SPEC_VERSION"/>
<enum value="&quot;VK_INTEL_extension_271&quot;" name="VK_INTEL_EXTENSION_271_EXTENSION_NAME"/>
<enum bitpos="22" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_22_BIT_EXT"/>
</require>
</extension>
<extension name="VK_INTEL_extension_272" number="272" type="device" author="INTEL" contact="Jason Ekstrand @jekstrand" supported="disabled">
@ -17864,6 +17868,7 @@ typedef void <name>CAMetalLayer</name>;
<require>
<enum value="0" name="VK_EXT_EXTENSION_377_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_377&quot;" name="VK_EXT_EXTENSION_377_EXTENSION_NAME"/>
<enum bitpos="18" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_RESERVED_18_BIT_EXT"/>
</require>
</extension>
<extension name="VK_EXT_extended_dynamic_state2" number="378" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Vikram Kushwaha @vkushwaha-nv" supported="vulkan" promotedto="VK_VERSION_1_3">
@ -18011,10 +18016,11 @@ typedef void <name>CAMetalLayer</name>;
<enum extends="VkImageCreateFlagBits" bitpos="17" name="VK_IMAGE_CREATE_RESERVED_394_BIT_EXT"/>
</require>
</extension>
<extension name="VK_KHR_extension_395" number="395" author="KHR" contact="Lenny Komow @lkomow" supported="disabled">
<extension name="VK_KHR_portability_enumeration" number="395" author="KHR" contact="Charles Giessen @charles-lunarg" type="instance" supported="vulkan">
<require>
<enum value="0" name="VK_KHR_EXTENSION_395_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_395&quot;" name="VK_KHR_EXTENSION_395_EXTENSION_NAME"/>
<enum value="1" name="VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_portability_enumeration&quot;" name="VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME"/>
<enum bitpos="0" extends="VkInstanceCreateFlagBits" name="VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR"/>
</require>
</extension>
<extension name="VK_KHR_extension_396" number="396" author="EXT" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
@ -18188,10 +18194,18 @@ typedef void <name>CAMetalLayer</name>;
<enum value="&quot;VK_EXT_extension_420&quot;" name="VK_EXT_EXTENSION_420_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_KHR_extension_421" number="421" author="KHR" contact="Hans-Kristian Arntzen @HansKristian-Work" supported="disabled">
<extension name="VK_VALVE_descriptor_set_host_mapping" number="421" type="device" author="VALVE" contact="Hans-Kristian Arntzen @HansKristian-Work" specialuse="d3demulation" supported="vulkan">
<require>
<enum value="0" name="VK_KHR_EXTENSION_421_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_421&quot;" name="VK_KHR_EXTENSION_421_EXTENSION_NAME"/>
<enum value="1" name="VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION"/>
<enum value="&quot;VK_VALVE_descriptor_set_host_mapping&quot;" name="VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE"/>
<type name="VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE"/>
<type name="VkDescriptorSetBindingReferenceVALVE"/>
<type name="VkDescriptorSetLayoutHostMappingInfoVALVE"/>
<command name="vkGetDescriptorSetLayoutHostMappingInfoVALVE"/>
<command name="vkGetDescriptorSetHostMappingVALVE"/>
</require>
</extension>
<extension name="VK_EXT_extension_422" number="422" author="EXT" contact="Graeme Leese @gnl21" supported="disabled">
@ -18421,6 +18435,55 @@ typedef void <name>CAMetalLayer</name>;
<enum value="&quot;VK_GOOGLE_extension_455&quot;" name="VK_GOOGLE_EXTENSION_455_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NV_extension_456" number="456" author="NV" contact="Piers Daniell @pdaniell-nv" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_456_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_456&quot;" name="VK_NV_EXTENSION_456_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_457" number="457" author="RASTERGRID" contact="Daniel Rakos @aqnuep1" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_457_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_457&quot;" name="VK_EXT_EXTENSION_457_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_458" number="458" author="RASTERGRID" contact="Daniel Rakos @aqnuep1" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_458_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_458&quot;" name="VK_EXT_EXTENSION_458_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_ARM_extension_459" number="459" author="Arm" contact="Ting Wei @catweiting" supported="disabled">
<require>
<enum value="0" name="VK_ARM_EXTENSION_459_SPEC_VERSION"/>
<enum value="&quot;VK_ARM_extension_459&quot;" name="VK_ARM_EXTENSION_459_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_460" number="460" author="EXT" contact="Charles Giessen @charles-lunarg" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_460_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_460&quot;" name="VK_EXT_EXTENSION_460_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_461" number="461" author="EXT" contact="Kevin Petit @kevinpetit" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_461_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_461&quot;" name="VK_EXT_EXTENSION_461_EXTENSION_NAME"/>
<enum bitpos="39" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_RESERVED_39_BIT_EXT"/>
</require>
</extension>
<extension name="VK_EXT_extension_462" number="462" author="EXT" contact="Joshua Ashton @Joshua-Ashton,Liam Middlebrook @liam-middlebrook" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_462_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_462&quot;" name="VK_EXT_EXTENSION_462_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_463" number="463" author="EXT" contact="Hans-Kristian Arntzen @HansKristian-Work" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_463_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_463&quot;" name="VK_EXT_EXTENSION_463_EXTENSION_NAME"/>
</require>
</extension>
</extensions>
<formats>
<format name="VK_FORMAT_R4G4_UNORM_PACK8" class="8-bit" blockSize="1" texelsPerBlock="1" packed="8">