mirror of
https://github.com/vulkano-rs/vulkano.git
synced 2024-11-25 00:04:15 +00:00
parent
2fcfcadb9e
commit
d3217d2531
@ -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" }
|
||||
|
||||
|
@ -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(
|
||||
|
@ -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 }
|
||||
|
@ -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);
|
||||
|
@ -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"
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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");
|
||||
|
@ -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(),
|
||||
|
@ -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(),
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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(),
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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(),
|
||||
|
@ -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(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
@ -2500,10 +2500,9 @@ impl UnsafeCommandBufferBuilder {
|
||||
};
|
||||
|
||||
if self.device.api_version() >= Version::V1_3 {
|
||||
fns.v1_3.cmd_copy_buffer2(self.handle, ©_buffer_info);
|
||||
(fns.v1_3.cmd_copy_buffer2)(self.handle, ©_buffer_info);
|
||||
} else {
|
||||
fns.khr_copy_commands2
|
||||
.cmd_copy_buffer2_khr(self.handle, ©_buffer_info);
|
||||
(fns.khr_copy_commands2.cmd_copy_buffer2_khr)(self.handle, ©_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, ©_image_info);
|
||||
(fns.v1_3.cmd_copy_image2)(self.handle, ©_image_info);
|
||||
} else {
|
||||
fns.khr_copy_commands2
|
||||
.cmd_copy_image2_khr(self.handle, ©_image_info);
|
||||
(fns.khr_copy_commands2.cmd_copy_image2_khr)(self.handle, ©_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, ©_buffer_to_image_info);
|
||||
(fns.v1_3.cmd_copy_buffer_to_image2)(self.handle, ©_buffer_to_image_info);
|
||||
} else {
|
||||
fns.khr_copy_commands2
|
||||
.cmd_copy_buffer_to_image2_khr(self.handle, ©_buffer_to_image_info);
|
||||
(fns.khr_copy_commands2.cmd_copy_buffer_to_image2_khr)(
|
||||
self.handle,
|
||||
©_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, ©_image_to_buffer_info);
|
||||
(fns.v1_3.cmd_copy_image_to_buffer2)(self.handle, ©_image_to_buffer_info);
|
||||
} else {
|
||||
fns.khr_copy_commands2
|
||||
.cmd_copy_image_to_buffer2_khr(self.handle, ©_image_to_buffer_info);
|
||||
(fns.khr_copy_commands2.cmd_copy_image_to_buffer2_khr)(
|
||||
self.handle,
|
||||
©_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,
|
||||
|
@ -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(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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(),
|
||||
|
@ -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)?;
|
||||
|
@ -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(())
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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(),
|
||||
|
@ -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(),
|
||||
|
@ -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(),
|
||||
|
@ -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(),
|
||||
|
@ -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(())
|
||||
|
@ -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(),
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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(),
|
||||
|
@ -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(),
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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(),
|
||||
|
@ -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,
|
||||
|
@ -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(),
|
||||
|
@ -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(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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(),
|
||||
|
@ -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 {
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
287
vulkano/vk.xml
287
vulkano/vk.xml
@ -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=""VK_KHR_video_queue"" 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=""VK_KHR_video_decode_queue"" 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=""VK_EXT_video_encode_h264"" 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=""VK_EXT_video_encode_h265"" 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=""VK_EXT_video_decode_h264"" 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=""VK_ANDROID_external_memory_android_hardware_buffer"" 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=""VK_EXT_video_decode_h265"" 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=""VK_INTEL_extension_271"" 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=""VK_EXT_extension_377"" 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=""VK_KHR_extension_395"" name="VK_KHR_EXTENSION_395_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_portability_enumeration"" 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=""VK_EXT_extension_420"" 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=""VK_KHR_extension_421"" name="VK_KHR_EXTENSION_421_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION"/>
|
||||
<enum value=""VK_VALVE_descriptor_set_host_mapping"" 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=""VK_GOOGLE_extension_455"" 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=""VK_NV_extension_456"" 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=""VK_EXT_extension_457"" 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=""VK_EXT_extension_458"" 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=""VK_ARM_extension_459"" 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=""VK_EXT_extension_460"" 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=""VK_EXT_extension_461"" 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=""VK_EXT_extension_462"" 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=""VK_EXT_extension_463"" 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">
|
||||
|
Loading…
Reference in New Issue
Block a user