Rename command buffer types (#2421)

* Rename `UnsafeCommandBuffer[Builder]`

* Rename `AutoCommandBufferBuilder`

* `finish` -> `end`

* Clarify docs

* `CommandRecorder` -> `RecordingCommandBuffer`
This commit is contained in:
marc0246 2023-12-09 12:24:52 +01:00 committed by GitHub
parent 323aa140d5
commit cee21d3f05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
65 changed files with 447 additions and 450 deletions

View File

@ -42,8 +42,8 @@ use std::{
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, BufferImageCopy, allocator::StandardCommandBufferAllocator, BufferImageCopy, ClearColorImageInfo,
ClearColorImageInfo, CommandBufferUsage, CopyBufferToImageInfo, RenderPassBeginInfo, CommandBufferUsage, CopyBufferToImageInfo, RecordingCommandBuffer, RenderPassBeginInfo,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -331,7 +331,7 @@ fn main() -> Result<(), impl Error> {
// Initialize the textures. // Initialize the textures.
{ {
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
graphics_queue.queue_family_index(), graphics_queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -342,7 +342,7 @@ fn main() -> Result<(), impl Error> {
.clear_color_image(ClearColorImageInfo::image(texture.clone())) .clear_color_image(ClearColorImageInfo::image(texture.clone()))
.unwrap(); .unwrap();
} }
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
// This waits for the queue to become idle, which is fine for startup initializations. // This waits for the queue to become idle, which is fine for startup initializations.
let _ = command_buffer.execute(graphics_queue.clone()).unwrap(); let _ = command_buffer.execute(graphics_queue.clone()).unwrap();
@ -587,7 +587,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
graphics_queue.queue_family_index(), graphics_queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -627,7 +627,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
acquire_future.wait(None).unwrap(); acquire_future.wait(None).unwrap();
previous_frame_end.as_mut().unwrap().cleanup_finished(); previous_frame_end.as_mut().unwrap().cleanup_finished();
@ -761,7 +761,7 @@ fn run_worker(
// Write to the texture that's currently not in use for rendering. // Write to the texture that's currently not in use for rendering.
let texture = textures[!current_index as usize].clone(); let texture = textures[!current_index as usize].clone();
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
transfer_queue.queue_family_index(), transfer_queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -796,7 +796,7 @@ fn run_worker(
) )
}) })
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
// We swap the texture index to use after a write, but there is no guarantee that other // We swap the texture index to use after a write, but there is no guarantee that other
// tasks have actually moved on to using the new texture. What could happen then, if // tasks have actually moved on to using the new texture. What could happen then, if

View File

@ -8,7 +8,7 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -195,7 +195,7 @@ fn main() {
.unwrap(); .unwrap();
// In order to execute our operation, we have to build a command buffer. // In order to execute our operation, we have to build a command buffer.
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator, command_buffer_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -222,7 +222,7 @@ fn main() {
.unwrap(); .unwrap();
// Finish building the command buffer by calling `build`. // Finish building the command buffer by calling `build`.
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
// Let's execute this command buffer now. // Let's execute this command buffer now.
let future = sync::now(device) let future = sync::now(device)

View File

@ -11,7 +11,7 @@ use vulkano::{
BufferContents, BufferUsage, BufferContents, BufferUsage,
}, },
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
RenderPassBeginInfo, RenderPassBeginInfo,
}, },
device::{ device::{
@ -369,7 +369,7 @@ fn main() -> Result<(), impl Error> {
let buffer = buffer_allocator.allocate_slice(data.len() as _).unwrap(); let buffer = buffer_allocator.allocate_slice(data.len() as _).unwrap();
buffer.write().unwrap().copy_from_slice(&data); buffer.write().unwrap().copy_from_slice(&data);
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -397,7 +397,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -1,8 +1,8 @@
use std::{error::Error, sync::Arc}; use std::{error::Error, sync::Arc};
use vulkano::{ use vulkano::{
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, ClearAttachment, allocator::StandardCommandBufferAllocator, ClearAttachment, ClearRect, CommandBufferUsage,
ClearRect, CommandBufferUsage, RenderPassBeginInfo, RecordingCommandBuffer, RenderPassBeginInfo,
}, },
device::{ device::{
physical::PhysicalDeviceType, Device, DeviceCreateInfo, DeviceExtensions, QueueCreateInfo, physical::PhysicalDeviceType, Device, DeviceCreateInfo, DeviceExtensions, QueueCreateInfo,
@ -207,7 +207,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -261,7 +261,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -2,8 +2,8 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer}, buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, allocator::StandardCommandBufferAllocator, CommandBufferInheritanceInfo,
CommandBufferInheritanceInfo, CommandBufferUsage, SecondaryAutoCommandBuffer, CommandBufferUsage, RecordingCommandBuffer, SecondaryAutoCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -182,7 +182,7 @@ impl AmbientLightingSystem {
depth_range: 0.0..=1.0, depth_range: 0.0..=1.0,
}; };
let mut builder = AutoCommandBufferBuilder::secondary( let mut builder = RecordingCommandBuffer::secondary(
self.command_buffer_allocator.clone(), self.command_buffer_allocator.clone(),
self.gfx_queue.queue_family_index(), self.gfx_queue.queue_family_index(),
CommandBufferUsage::MultipleSubmit, CommandBufferUsage::MultipleSubmit,
@ -210,7 +210,7 @@ impl AmbientLightingSystem {
.unwrap() .unwrap()
.draw(self.vertex_buffer.len() as u32, 1, 0, 0) .draw(self.vertex_buffer.len() as u32, 1, 0, 0)
.unwrap(); .unwrap();
builder.build().unwrap() builder.end().unwrap()
} }
} }

View File

@ -3,8 +3,8 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer}, buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, allocator::StandardCommandBufferAllocator, CommandBufferInheritanceInfo,
CommandBufferInheritanceInfo, CommandBufferUsage, SecondaryAutoCommandBuffer, CommandBufferUsage, RecordingCommandBuffer, SecondaryAutoCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -196,7 +196,7 @@ impl DirectionalLightingSystem {
depth_range: 0.0..=1.0, depth_range: 0.0..=1.0,
}; };
let mut builder = AutoCommandBufferBuilder::secondary( let mut builder = RecordingCommandBuffer::secondary(
self.command_buffer_allocator.clone(), self.command_buffer_allocator.clone(),
self.gfx_queue.queue_family_index(), self.gfx_queue.queue_family_index(),
CommandBufferUsage::MultipleSubmit, CommandBufferUsage::MultipleSubmit,
@ -224,7 +224,7 @@ impl DirectionalLightingSystem {
.unwrap() .unwrap()
.draw(self.vertex_buffer.len() as u32, 1, 0, 0) .draw(self.vertex_buffer.len() as u32, 1, 0, 0)
.unwrap(); .unwrap();
builder.build().unwrap() builder.end().unwrap()
} }
} }

View File

@ -3,8 +3,8 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer}, buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, allocator::StandardCommandBufferAllocator, CommandBufferInheritanceInfo,
CommandBufferInheritanceInfo, CommandBufferUsage, SecondaryAutoCommandBuffer, CommandBufferUsage, RecordingCommandBuffer, SecondaryAutoCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -209,7 +209,7 @@ impl PointLightingSystem {
depth_range: 0.0..=1.0, depth_range: 0.0..=1.0,
}; };
let mut builder = AutoCommandBufferBuilder::secondary( let mut builder = RecordingCommandBuffer::secondary(
self.command_buffer_allocator.clone(), self.command_buffer_allocator.clone(),
self.gfx_queue.queue_family_index(), self.gfx_queue.queue_family_index(),
CommandBufferUsage::MultipleSubmit, CommandBufferUsage::MultipleSubmit,
@ -237,7 +237,7 @@ impl PointLightingSystem {
.unwrap() .unwrap()
.draw(self.vertex_buffer.len() as u32, 1, 0, 0) .draw(self.vertex_buffer.len() as u32, 1, 0, 0)
.unwrap(); .unwrap();
builder.build().unwrap() builder.end().unwrap()
} }
} }

View File

@ -7,9 +7,9 @@ use cgmath::{Matrix4, SquareMatrix, Vector3};
use std::sync::Arc; use std::sync::Arc;
use vulkano::{ use vulkano::{
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, PrimaryAutoCommandBuffer,
PrimaryAutoCommandBuffer, RenderPassBeginInfo, SecondaryAutoCommandBuffer, RecordingCommandBuffer, RenderPassBeginInfo, SecondaryAutoCommandBuffer, SubpassBeginInfo,
SubpassBeginInfo, SubpassContents, SubpassContents,
}, },
descriptor_set::allocator::StandardDescriptorSetAllocator, descriptor_set::allocator::StandardDescriptorSetAllocator,
device::Queue, device::Queue,
@ -338,7 +338,7 @@ impl FrameSystem {
.unwrap(); .unwrap();
// Start the command buffer builder that will be filled throughout the frame handling. // Start the command buffer builder that will be filled throughout the frame handling.
let mut command_buffer_builder = AutoCommandBufferBuilder::primary( let mut command_buffer_builder = RecordingCommandBuffer::primary(
self.command_buffer_allocator.clone(), self.command_buffer_allocator.clone(),
self.gfx_queue.queue_family_index(), self.gfx_queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -394,7 +394,7 @@ pub struct Frame<'a> {
// Framebuffer that was used when starting the render pass. // Framebuffer that was used when starting the render pass.
framebuffer: Arc<Framebuffer>, framebuffer: Arc<Framebuffer>,
// The command buffer builder that will be built during the lifetime of this object. // The command buffer builder that will be built during the lifetime of this object.
command_buffer_builder: Option<AutoCommandBufferBuilder<PrimaryAutoCommandBuffer>>, command_buffer_builder: Option<RecordingCommandBuffer<PrimaryAutoCommandBuffer>>,
// Matrix that was passed to `frame()`. // Matrix that was passed to `frame()`.
world_to_framebuffer: Matrix4<f32>, world_to_framebuffer: Matrix4<f32>,
} }
@ -445,7 +445,7 @@ impl<'a> Frame<'a> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = self.command_buffer_builder.take().unwrap().build().unwrap(); let command_buffer = self.command_buffer_builder.take().unwrap().end().unwrap();
// Extract `before_main_cb_future` and append the command buffer execution to it. // Extract `before_main_cb_future` and append the command buffer execution to it.
let after_main_cb = self let after_main_cb = self

View File

@ -2,8 +2,8 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage, Subbuffer}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, allocator::StandardCommandBufferAllocator, CommandBufferInheritanceInfo,
CommandBufferInheritanceInfo, CommandBufferUsage, SecondaryAutoCommandBuffer, CommandBufferUsage, RecordingCommandBuffer, SecondaryAutoCommandBuffer,
}, },
device::Queue, device::Queue,
memory::allocator::{AllocationCreateInfo, MemoryTypeFilter, StandardMemoryAllocator}, memory::allocator::{AllocationCreateInfo, MemoryTypeFilter, StandardMemoryAllocator},
@ -128,7 +128,7 @@ impl TriangleDrawSystem {
/// Builds a secondary command buffer that draws the triangle on the current subpass. /// Builds a secondary command buffer that draws the triangle on the current subpass.
pub fn draw(&self, viewport_dimensions: [u32; 2]) -> Arc<SecondaryAutoCommandBuffer> { pub fn draw(&self, viewport_dimensions: [u32; 2]) -> Arc<SecondaryAutoCommandBuffer> {
let mut builder = AutoCommandBufferBuilder::secondary( let mut builder = RecordingCommandBuffer::secondary(
self.command_buffer_allocator.clone(), self.command_buffer_allocator.clone(),
self.gfx_queue.queue_family_index(), self.gfx_queue.queue_family_index(),
CommandBufferUsage::MultipleSubmit, CommandBufferUsage::MultipleSubmit,
@ -156,7 +156,7 @@ impl TriangleDrawSystem {
.unwrap() .unwrap()
.draw(self.vertex_buffer.len() as u32, 1, 0, 0) .draw(self.vertex_buffer.len() as u32, 1, 0, 0)
.unwrap(); .unwrap();
builder.build().unwrap() builder.end().unwrap()
} }
} }

View File

@ -8,7 +8,7 @@ use std::{iter::repeat, mem::size_of, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, layout::DescriptorType, DescriptorBufferInfo, allocator::StandardDescriptorSetAllocator, layout::DescriptorType, DescriptorBufferInfo,
@ -236,7 +236,7 @@ fn main() {
.unwrap(); .unwrap();
// Build the command buffer, using different offsets for each call. // Build the command buffer, using different offsets for each call.
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator, command_buffer_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -274,7 +274,7 @@ fn main() {
.unwrap() .unwrap()
.dispatch([12, 1, 1]) .dispatch([12, 1, 1])
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = sync::now(device) let future = sync::now(device)
.then_execute(queue, command_buffer) .then_execute(queue, command_buffer)

View File

@ -8,8 +8,8 @@ use std::{fs::File, io::BufWriter, path::Path, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, CopyImageToBufferInfo,
CopyImageToBufferInfo, RecordingCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -249,7 +249,7 @@ fn main() {
) )
.unwrap(); .unwrap();
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator, command_buffer_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -270,7 +270,7 @@ fn main() {
.unwrap() .unwrap()
.copy_image_to_buffer(CopyImageToBufferInfo::image_buffer(image, buf.clone())) .copy_image_to_buffer(CopyImageToBufferInfo::image_buffer(image, buf.clone()))
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = sync::now(device) let future = sync::now(device)
.then_execute(queue, command_buffer) .then_execute(queue, command_buffer)

View File

@ -20,8 +20,8 @@ mod linux {
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage, Subbuffer}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
CommandBufferUsage, RenderPassBeginInfo, SemaphoreSubmitInfo, SubmitInfo, RenderPassBeginInfo, SemaphoreSubmitInfo, SubmitInfo,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -389,7 +389,7 @@ mod linux {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -423,7 +423,7 @@ mod linux {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end.take().unwrap().join(acquire_future); let future = previous_frame_end.take().unwrap().join(acquire_future);

View File

@ -2,9 +2,9 @@ use std::{error::Error, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, BlitImageInfo, allocator::StandardCommandBufferAllocator, BlitImageInfo, BufferImageCopy,
BufferImageCopy, ClearColorImageInfo, CommandBufferUsage, CopyBufferToImageInfo, ClearColorImageInfo, CommandBufferUsage, CopyBufferToImageInfo, CopyImageInfo, ImageBlit,
CopyImageInfo, ImageBlit, ImageCopy, RenderPassBeginInfo, ImageCopy, RecordingCommandBuffer, RenderPassBeginInfo,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -210,7 +210,7 @@ fn main() -> Result<(), impl Error> {
Default::default(), Default::default(),
)); ));
let mut uploads = AutoCommandBufferBuilder::primary( let mut uploads = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -404,7 +404,7 @@ fn main() -> Result<(), impl Error> {
let mut recreate_swapchain = false; let mut recreate_swapchain = false;
let mut previous_frame_end = Some( let mut previous_frame_end = Some(
uploads uploads
.build() .end()
.unwrap() .unwrap()
.execute(queue.clone()) .execute(queue.clone())
.unwrap() .unwrap()
@ -470,7 +470,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -504,7 +504,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -2,8 +2,8 @@ use std::{error::Error, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, CopyBufferToImageInfo,
CopyBufferToImageInfo, RenderPassBeginInfo, RecordingCommandBuffer, RenderPassBeginInfo,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -210,7 +210,7 @@ fn main() -> Result<(), impl Error> {
Default::default(), Default::default(),
)); ));
let mut uploads = AutoCommandBufferBuilder::primary( let mut uploads = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -352,7 +352,7 @@ fn main() -> Result<(), impl Error> {
let mut recreate_swapchain = false; let mut recreate_swapchain = false;
let mut previous_frame_end = Some( let mut previous_frame_end = Some(
uploads uploads
.build() .end()
.unwrap() .unwrap()
.execute(queue.clone()) .execute(queue.clone())
.unwrap() .unwrap()
@ -418,7 +418,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -452,7 +452,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -11,8 +11,8 @@ use std::{error::Error, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, CopyBufferToImageInfo,
CopyBufferToImageInfo, RenderPassBeginInfo, RecordingCommandBuffer, RenderPassBeginInfo,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -216,7 +216,7 @@ fn main() -> Result<(), impl Error> {
Default::default(), Default::default(),
)); ));
let mut uploads = AutoCommandBufferBuilder::primary( let mut uploads = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -370,7 +370,7 @@ fn main() -> Result<(), impl Error> {
let mut recreate_swapchain = false; let mut recreate_swapchain = false;
let mut previous_frame_end = Some( let mut previous_frame_end = Some(
uploads uploads
.build() .end()
.unwrap() .unwrap()
.execute(queue.clone()) .execute(queue.clone())
.unwrap() .unwrap()
@ -436,7 +436,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -470,7 +470,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -21,8 +21,8 @@ use vulkano::{
BufferContents, BufferUsage, BufferContents, BufferUsage,
}, },
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, DrawIndirectCommand,
DrawIndirectCommand, RenderPassBeginInfo, RecordingCommandBuffer, RenderPassBeginInfo,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -467,7 +467,7 @@ fn main() -> Result<(), impl Error> {
) )
.unwrap(); .unwrap();
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -510,7 +510,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -7,7 +7,7 @@ use std::{error::Error, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
RenderPassBeginInfo, RenderPassBeginInfo,
}, },
device::{ device::{
@ -402,7 +402,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -435,7 +435,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -4,7 +4,7 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer}, buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -147,7 +147,7 @@ impl FractalComputePipeline {
[], [],
) )
.unwrap(); .unwrap();
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
self.command_buffer_allocator.clone(), self.command_buffer_allocator.clone(),
self.queue.queue_family_index(), self.queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -172,7 +172,7 @@ impl FractalComputePipeline {
.unwrap() .unwrap()
.dispatch([image_extent[0] / 8, image_extent[1] / 8, 1]) .dispatch([image_extent[0] / 8, image_extent[1] / 8, 1])
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let finished = command_buffer.execute(self.queue.clone()).unwrap(); let finished = command_buffer.execute(self.queue.clone()).unwrap();
finished.then_signal_fence_and_flush().unwrap().boxed() finished.then_signal_fence_and_flush().unwrap().boxed()
} }

View File

@ -2,8 +2,8 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage, Subbuffer}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, allocator::StandardCommandBufferAllocator, CommandBufferInheritanceInfo,
CommandBufferInheritanceInfo, CommandBufferUsage, SecondaryAutoCommandBuffer, CommandBufferUsage, RecordingCommandBuffer, SecondaryAutoCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -204,7 +204,7 @@ impl PixelsDrawPipeline {
viewport_dimensions: [u32; 2], viewport_dimensions: [u32; 2],
image: Arc<ImageView>, image: Arc<ImageView>,
) -> Arc<SecondaryAutoCommandBuffer> { ) -> Arc<SecondaryAutoCommandBuffer> {
let mut builder = AutoCommandBufferBuilder::secondary( let mut builder = RecordingCommandBuffer::secondary(
self.command_buffer_allocator.clone(), self.command_buffer_allocator.clone(),
self.gfx_queue.queue_family_index(), self.gfx_queue.queue_family_index(),
CommandBufferUsage::MultipleSubmit, CommandBufferUsage::MultipleSubmit,
@ -242,7 +242,7 @@ impl PixelsDrawPipeline {
.unwrap() .unwrap()
.draw_indexed(self.indices.len() as u32, 1, 0, 0, 0) .draw_indexed(self.indices.len() as u32, 1, 0, 0, 0)
.unwrap(); .unwrap();
builder.build().unwrap() builder.end().unwrap()
} }
} }

View File

@ -2,7 +2,7 @@ use crate::pixels_draw_pipeline::PixelsDrawPipeline;
use std::sync::Arc; use std::sync::Arc;
use vulkano::{ use vulkano::{
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
RenderPassBeginInfo, SubpassBeginInfo, SubpassContents, RenderPassBeginInfo, SubpassBeginInfo, SubpassContents,
}, },
descriptor_set::allocator::StandardDescriptorSetAllocator, descriptor_set::allocator::StandardDescriptorSetAllocator,
@ -88,7 +88,7 @@ impl RenderPassPlaceOverFrame {
.unwrap(); .unwrap();
// Create primary command buffer builder. // Create primary command buffer builder.
let mut command_buffer_builder = AutoCommandBufferBuilder::primary( let mut command_buffer_builder = RecordingCommandBuffer::primary(
self.command_buffer_allocator.clone(), self.command_buffer_allocator.clone(),
self.gfx_queue.queue_family_index(), self.gfx_queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -121,7 +121,7 @@ impl RenderPassPlaceOverFrame {
.unwrap(); .unwrap();
// Build command buffer. // Build command buffer.
let command_buffer = command_buffer_builder.build().unwrap(); let command_buffer = command_buffer_builder.end().unwrap();
// Execute primary command buffer. // Execute primary command buffer.
let after_future = before_future let after_future = before_future

View File

@ -57,8 +57,8 @@ use std::{fs::File, io::BufWriter, path::Path, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, CopyImageToBufferInfo,
CopyImageToBufferInfo, RenderPassBeginInfo, RecordingCommandBuffer, RenderPassBeginInfo,
}, },
device::{ device::{
physical::PhysicalDeviceType, Device, DeviceCreateInfo, DeviceExtensions, QueueCreateInfo, physical::PhysicalDeviceType, Device, DeviceCreateInfo, DeviceExtensions, QueueCreateInfo,
@ -380,7 +380,7 @@ fn main() {
) )
.unwrap(); .unwrap();
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator, command_buffer_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -407,7 +407,7 @@ fn main() {
.unwrap() .unwrap()
.copy_image_to_buffer(CopyImageToBufferInfo::image_buffer(image, buf.clone())) .copy_image_to_buffer(CopyImageToBufferInfo::image_buffer(image, buf.clone()))
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let finished = command_buffer.execute(queue).unwrap(); let finished = command_buffer.execute(queue).unwrap();
finished finished

View File

@ -5,8 +5,8 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer}, buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, PrimaryAutoCommandBuffer,
PrimaryAutoCommandBuffer, RecordingCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -130,7 +130,7 @@ impl GameOfLifeComputePipeline {
life_color: [f32; 4], life_color: [f32; 4],
dead_color: [f32; 4], dead_color: [f32; 4],
) -> Box<dyn GpuFuture> { ) -> Box<dyn GpuFuture> {
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
self.command_buffer_allocator.clone(), self.command_buffer_allocator.clone(),
self.compute_queue.queue_family_index(), self.compute_queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -148,7 +148,7 @@ impl GameOfLifeComputePipeline {
// Then color based on the next state. // Then color based on the next state.
self.dispatch(&mut builder, life_color, dead_color, 1); self.dispatch(&mut builder, life_color, dead_color, 1);
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let finished = before_future let finished = before_future
.then_execute(self.compute_queue.clone(), command_buffer) .then_execute(self.compute_queue.clone(), command_buffer)
.unwrap(); .unwrap();
@ -163,7 +163,7 @@ impl GameOfLifeComputePipeline {
/// Builds the command for a dispatch. /// Builds the command for a dispatch.
fn dispatch( fn dispatch(
&self, &self,
builder: &mut AutoCommandBufferBuilder<PrimaryAutoCommandBuffer>, builder: &mut RecordingCommandBuffer<PrimaryAutoCommandBuffer>,
life_color: [f32; 4], life_color: [f32; 4],
dead_color: [f32; 4], dead_color: [f32; 4],
// Step determines whether we color or compute life (see branch in the shader)s. // Step determines whether we color or compute life (see branch in the shader)s.

View File

@ -3,8 +3,8 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage, Subbuffer}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, allocator::StandardCommandBufferAllocator, CommandBufferInheritanceInfo,
CommandBufferInheritanceInfo, CommandBufferUsage, SecondaryAutoCommandBuffer, CommandBufferUsage, RecordingCommandBuffer, SecondaryAutoCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -200,7 +200,7 @@ impl PixelsDrawPipeline {
viewport_dimensions: [u32; 2], viewport_dimensions: [u32; 2],
image: Arc<ImageView>, image: Arc<ImageView>,
) -> Arc<SecondaryAutoCommandBuffer> { ) -> Arc<SecondaryAutoCommandBuffer> {
let mut builder = AutoCommandBufferBuilder::secondary( let mut builder = RecordingCommandBuffer::secondary(
self.command_buffer_allocator.clone(), self.command_buffer_allocator.clone(),
self.gfx_queue.queue_family_index(), self.gfx_queue.queue_family_index(),
CommandBufferUsage::MultipleSubmit, CommandBufferUsage::MultipleSubmit,
@ -238,7 +238,7 @@ impl PixelsDrawPipeline {
.unwrap() .unwrap()
.draw_indexed(self.indices.len() as u32, 1, 0, 0, 0) .draw_indexed(self.indices.len() as u32, 1, 0, 0, 0)
.unwrap(); .unwrap();
builder.build().unwrap() builder.end().unwrap()
} }
} }

View File

@ -2,7 +2,7 @@ use crate::{app::App, pixels_draw::PixelsDrawPipeline};
use std::sync::Arc; use std::sync::Arc;
use vulkano::{ use vulkano::{
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
RenderPassBeginInfo, SubpassBeginInfo, SubpassContents, RenderPassBeginInfo, SubpassBeginInfo, SubpassContents,
}, },
device::Queue, device::Queue,
@ -78,7 +78,7 @@ impl RenderPassPlaceOverFrame {
.unwrap(); .unwrap();
// Create a primary command buffer builder. // Create a primary command buffer builder.
let mut command_buffer_builder = AutoCommandBufferBuilder::primary( let mut command_buffer_builder = RecordingCommandBuffer::primary(
self.command_buffer_allocator.clone(), self.command_buffer_allocator.clone(),
self.gfx_queue.queue_family_index(), self.gfx_queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -111,7 +111,7 @@ impl RenderPassPlaceOverFrame {
.unwrap(); .unwrap();
// Build the command buffer. // Build the command buffer.
let command_buffer = command_buffer_builder.build().unwrap(); let command_buffer = command_buffer_builder.end().unwrap();
// Execute primary command buffer. // Execute primary command buffer.
let after_future = before_future let after_future = before_future

View File

@ -11,7 +11,7 @@ use std::{collections::HashMap, error::Error, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
RenderPassBeginInfo, RenderPassBeginInfo,
}, },
device::{ device::{
@ -447,7 +447,7 @@ fn main() -> Result<(), impl Error> {
*recreate_swapchain = true; *recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -475,7 +475,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -7,8 +7,8 @@ use std::{fs::File, io::BufWriter, path::Path, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage, Subbuffer}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, BufferImageCopy, allocator::StandardCommandBufferAllocator, BufferImageCopy, CommandBufferUsage,
CommandBufferUsage, CopyImageToBufferInfo, RenderPassBeginInfo, CopyImageToBufferInfo, RecordingCommandBuffer, RenderPassBeginInfo,
}, },
device::{ device::{
physical::PhysicalDeviceType, Device, DeviceCreateInfo, DeviceExtensions, Features, physical::PhysicalDeviceType, Device, DeviceCreateInfo, DeviceExtensions, Features,
@ -330,7 +330,7 @@ fn main() {
let buffer1 = create_buffer(); let buffer1 = create_buffer();
let buffer2 = create_buffer(); let buffer2 = create_buffer();
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator, command_buffer_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -386,7 +386,7 @@ fn main() {
}) })
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = sync::now(device) let future = sync::now(device)
.then_execute(queue, command_buffer) .then_execute(queue, command_buffer)

View File

@ -6,7 +6,7 @@ use std::{error::Error, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
RenderPassBeginInfo, RenderPassBeginInfo,
}, },
device::{ device::{
@ -426,7 +426,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -496,7 +496,7 @@ fn main() -> Result<(), impl Error> {
.unwrap(); .unwrap();
} }
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -7,7 +7,7 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -180,7 +180,7 @@ fn main() {
// //
// Note that there is no type safety for the push constant data, so be careful to only pass an // Note that there is no type safety for the push constant data, so be careful to only pass an
// instance of the struct generated by the `vulkano_shaders::shaders!` macro. // instance of the struct generated by the `vulkano_shaders::shaders!` macro.
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator, command_buffer_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -200,7 +200,7 @@ fn main() {
.unwrap() .unwrap()
.dispatch([1024, 1, 1]) .dispatch([1024, 1, 1])
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = sync::now(device) let future = sync::now(device)
.then_execute(queue, command_buffer) .then_execute(queue, command_buffer)

View File

@ -2,8 +2,8 @@ use std::{error::Error, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, CopyBufferToImageInfo,
CopyBufferToImageInfo, RenderPassBeginInfo, RecordingCommandBuffer, RenderPassBeginInfo,
}, },
descriptor_set::{layout::DescriptorSetLayoutCreateFlags, WriteDescriptorSet}, descriptor_set::{layout::DescriptorSetLayoutCreateFlags, WriteDescriptorSet},
device::{ device::{
@ -201,7 +201,7 @@ fn main() -> Result<(), impl Error> {
device.clone(), device.clone(),
Default::default(), Default::default(),
)); ));
let mut uploads = AutoCommandBufferBuilder::primary( let mut uploads = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -339,7 +339,7 @@ fn main() -> Result<(), impl Error> {
let mut recreate_swapchain = false; let mut recreate_swapchain = false;
let mut previous_frame_end = Some( let mut previous_frame_end = Some(
uploads uploads
.build() .end()
.unwrap() .unwrap()
.execute(queue.clone()) .execute(queue.clone())
.unwrap() .unwrap()
@ -405,7 +405,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -446,7 +446,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -2,8 +2,8 @@ use std::{error::Error, io::Cursor, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, CopyBufferToImageInfo,
CopyBufferToImageInfo, RenderPassBeginInfo, RecordingCommandBuffer, RenderPassBeginInfo,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, layout::DescriptorBindingFlags, DescriptorSet, allocator::StandardDescriptorSetAllocator, layout::DescriptorBindingFlags, DescriptorSet,
@ -270,7 +270,7 @@ fn main() -> Result<(), impl Error> {
Default::default(), Default::default(),
)); ));
let mut uploads = AutoCommandBufferBuilder::primary( let mut uploads = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -473,7 +473,7 @@ fn main() -> Result<(), impl Error> {
let mut recreate_swapchain = false; let mut recreate_swapchain = false;
let mut previous_frame_end = Some( let mut previous_frame_end = Some(
uploads uploads
.build() .end()
.unwrap() .unwrap()
.execute(queue.clone()) .execute(queue.clone())
.unwrap() .unwrap()
@ -539,7 +539,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -573,7 +573,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -16,7 +16,7 @@ use std::{error::Error, fs::File, io::Read, path::Path, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
RenderPassBeginInfo, RenderPassBeginInfo,
}, },
device::{ device::{
@ -348,7 +348,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::MultipleSubmit, CommandBufferUsage::MultipleSubmit,
@ -375,7 +375,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -6,8 +6,8 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, BufferCopy, allocator::StandardCommandBufferAllocator, BufferCopy, CommandBufferUsage,
CommandBufferUsage, CopyBufferInfoTyped, CopyBufferInfoTyped, RecordingCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -162,7 +162,7 @@ fn main() {
) )
.unwrap(); .unwrap();
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator, command_buffer_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -193,7 +193,7 @@ fn main() {
.unwrap() .unwrap()
.dispatch([1024, 1, 1]) .dispatch([1024, 1, 1])
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = sync::now(device) let future = sync::now(device)
.then_execute(queue, command_buffer) .then_execute(queue, command_buffer)

View File

@ -6,7 +6,7 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -166,7 +166,7 @@ fn main() {
) )
.unwrap(); .unwrap();
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator, command_buffer_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -184,7 +184,7 @@ fn main() {
.unwrap() .unwrap()
.dispatch([1024, 1, 1]) .dispatch([1024, 1, 1])
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = sync::now(device) let future = sync::now(device)
.then_execute(queue, command_buffer) .then_execute(queue, command_buffer)
.unwrap() .unwrap()

View File

@ -20,7 +20,7 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer}, buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -192,7 +192,7 @@ fn main() {
) )
.unwrap(); .unwrap();
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator, command_buffer_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -212,7 +212,7 @@ fn main() {
.unwrap() .unwrap()
.dispatch([1024, 1, 1]) .dispatch([1024, 1, 1])
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = sync::now(queue.device().clone()) let future = sync::now(queue.device().clone())
.then_execute(queue.clone(), command_buffer) .then_execute(queue.clone(), command_buffer)

View File

@ -7,8 +7,8 @@ use std::{error::Error, sync::Arc, time::SystemTime};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, CopyBufferInfo,
CopyBufferInfo, RenderPassBeginInfo, RecordingCommandBuffer, RenderPassBeginInfo,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -386,7 +386,7 @@ fn main() -> Result<(), impl Error> {
.unwrap(); .unwrap();
// Create one-time command to copy between the buffers. // Create one-time command to copy between the buffers.
let mut cbb = AutoCommandBufferBuilder::primary( let mut cbb = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -397,7 +397,7 @@ fn main() -> Result<(), impl Error> {
device_local_buffer.clone(), device_local_buffer.clone(),
)) ))
.unwrap(); .unwrap();
let cb = cbb.build().unwrap(); let cb = cbb.end().unwrap();
// Execute copy and wait for copy to complete before proceeding. // Execute copy and wait for copy to complete before proceeding.
cb.execute(queue.clone()) cb.execute(queue.clone())
@ -581,7 +581,7 @@ fn main() -> Result<(), impl Error> {
None => sync::now(device.clone()).boxed(), None => sync::now(device.clone()).boxed(),
}; };
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -622,7 +622,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_future let future = previous_future
.join(acquire_future) .join(acquire_future)

View File

@ -4,7 +4,7 @@ use std::sync::Arc;
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -167,7 +167,7 @@ fn main() {
) )
.unwrap(); .unwrap();
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator, command_buffer_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -185,7 +185,7 @@ fn main() {
.unwrap() .unwrap()
.dispatch([1024, 1, 1]) .dispatch([1024, 1, 1])
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = sync::now(device) let future = sync::now(device)
.then_execute(queue, command_buffer) .then_execute(queue, command_buffer)

View File

@ -7,7 +7,7 @@ use vulkano::{
Buffer, BufferCreateInfo, BufferUsage, Buffer, BufferCreateInfo, BufferUsage,
}, },
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
RenderPassBeginInfo, RenderPassBeginInfo,
}, },
descriptor_set::{ descriptor_set::{
@ -365,7 +365,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -402,7 +402,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -16,7 +16,7 @@ use std::{error::Error, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
RenderPassBeginInfo, RenderPassBeginInfo,
}, },
device::{ device::{
@ -466,7 +466,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -493,7 +493,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -2,8 +2,8 @@ use std::{error::Error, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, CopyBufferToImageInfo,
CopyBufferToImageInfo, RenderPassBeginInfo, RecordingCommandBuffer, RenderPassBeginInfo,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -212,7 +212,7 @@ fn main() -> Result<(), impl Error> {
Default::default(), Default::default(),
)); ));
let mut uploads = AutoCommandBufferBuilder::primary( let mut uploads = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -363,7 +363,7 @@ fn main() -> Result<(), impl Error> {
let mut recreate_swapchain = false; let mut recreate_swapchain = false;
let mut previous_frame_end = Some( let mut previous_frame_end = Some(
uploads uploads
.build() .end()
.unwrap() .unwrap()
.execute(queue.clone()) .execute(queue.clone())
.unwrap() .unwrap()
@ -429,7 +429,7 @@ fn main() -> Result<(), impl Error> {
recreate_swapchain = true; recreate_swapchain = true;
} }
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -463,7 +463,7 @@ fn main() -> Result<(), impl Error> {
.unwrap() .unwrap()
.end_render_pass(Default::default()) .end_render_pass(Default::default())
.unwrap(); .unwrap();
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -16,7 +16,7 @@ use std::{error::Error, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
RenderingAttachmentInfo, RenderingInfo, RenderingAttachmentInfo, RenderingInfo,
}, },
device::{ device::{
@ -597,7 +597,7 @@ fn main() -> Result<(), impl Error> {
// //
// Note that we have to pass a queue family when we create the command buffer. The // Note that we have to pass a queue family when we create the command buffer. The
// command buffer will only be executable on that given queue family. // command buffer will only be executable on that given queue family.
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -650,7 +650,7 @@ fn main() -> Result<(), impl Error> {
.unwrap(); .unwrap();
// Finish building the command buffer by calling `build`. // Finish building the command buffer by calling `build`.
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -11,7 +11,7 @@ use std::{error::Error, sync::Arc};
use vulkano::{ use vulkano::{
buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferContents, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
RenderPassBeginInfo, SubpassBeginInfo, SubpassContents, RenderPassBeginInfo, SubpassBeginInfo, SubpassContents,
}, },
device::{ device::{
@ -599,7 +599,7 @@ fn main() -> Result<(), impl Error> {
// //
// Note that we have to pass a queue family when we create the command buffer. The // Note that we have to pass a queue family when we create the command buffer. The
// command buffer will only be executable on that given queue family. // command buffer will only be executable on that given queue family.
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
command_buffer_allocator.clone(), command_buffer_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -649,7 +649,7 @@ fn main() -> Result<(), impl Error> {
.unwrap(); .unwrap();
// Finish building the command buffer by calling `build`. // Finish building the command buffer by calling `build`.
let command_buffer = builder.build().unwrap(); let command_buffer = builder.end().unwrap();
let future = previous_frame_end let future = previous_frame_end
.take() .take()

View File

@ -77,8 +77,8 @@
//! [`DescriptorType::AccelerationStructure`] as a descriptor type, and write the //! [`DescriptorType::AccelerationStructure`] as a descriptor type, and write the
//! acceleration structure to a descriptor set using [`WriteDescriptorSet::acceleration_structure`]. //! acceleration structure to a descriptor set using [`WriteDescriptorSet::acceleration_structure`].
//! //!
//! [`build_acceleration_structure`]: crate::command_buffer::AutoCommandBufferBuilder::build_acceleration_structure //! [`build_acceleration_structure`]: crate::command_buffer::RecordingCommandBuffer::build_acceleration_structure
//! [`build_acceleration_structure_indirect`]: crate::command_buffer::AutoCommandBufferBuilder::build_acceleration_structure_indirect //! [`build_acceleration_structure_indirect`]: crate::command_buffer::RecordingCommandBuffer::build_acceleration_structure_indirect
//! [`DescriptorType::AccelerationStructure`]: crate::descriptor_set::layout::DescriptorType::AccelerationStructure //! [`DescriptorType::AccelerationStructure`]: crate::descriptor_set::layout::DescriptorType::AccelerationStructure
//! [`WriteDescriptorSet::acceleration_structure`]: crate::descriptor_set::WriteDescriptorSet::acceleration_structure //! [`WriteDescriptorSet::acceleration_structure`]: crate::descriptor_set::WriteDescriptorSet::acceleration_structure

View File

@ -78,7 +78,7 @@ const MAX_ARENAS: usize = 32;
/// allocator::{SubbufferAllocator, SubbufferAllocatorCreateInfo}, /// allocator::{SubbufferAllocator, SubbufferAllocatorCreateInfo},
/// BufferUsage, /// BufferUsage,
/// }, /// },
/// command_buffer::{AutoCommandBufferBuilder, CommandBufferUsage}, /// command_buffer::{CommandBufferUsage, RecordingCommandBuffer},
/// memory::allocator::MemoryTypeFilter, /// memory::allocator::MemoryTypeFilter,
/// sync::GpuFuture, /// sync::GpuFuture,
/// }; /// };
@ -105,7 +105,7 @@ const MAX_ARENAS: usize = 32;
/// *subbuffer.write().unwrap() = data; /// *subbuffer.write().unwrap() = data;
/// ///
/// // You can then use `subbuffer` as if it was an entirely separate buffer. /// // You can then use `subbuffer` as if it was an entirely separate buffer.
/// AutoCommandBufferBuilder::primary( /// RecordingCommandBuffer::primary(
/// command_buffer_allocator.clone(), /// command_buffer_allocator.clone(),
/// queue.queue_family_index(), /// queue.queue_family_index(),
/// CommandBufferUsage::OneTimeSubmit, /// CommandBufferUsage::OneTimeSubmit,
@ -115,7 +115,7 @@ const MAX_ARENAS: usize = 32;
/// // it is pointless to do that. /// // it is pointless to do that.
/// .update_buffer(subbuffer.clone(), &[0.2, 0.3, 0.4, 0.5]) /// .update_buffer(subbuffer.clone(), &[0.2, 0.3, 0.4, 0.5])
/// .unwrap() /// .unwrap()
/// .build() /// .end()
/// .unwrap() /// .unwrap()
/// .execute(queue.clone()) /// .execute(queue.clone())
/// .unwrap() /// .unwrap()

View File

@ -121,7 +121,7 @@ pub mod view;
/// ``` /// ```
/// use vulkano::{ /// use vulkano::{
/// buffer::{BufferUsage, Buffer, BufferCreateInfo}, /// buffer::{BufferUsage, Buffer, BufferCreateInfo},
/// command_buffer::{AutoCommandBufferBuilder, CommandBufferUsage, CopyBufferInfo}, /// command_buffer::{CommandBufferUsage, CopyBufferInfo, RecordingCommandBuffer},
/// memory::allocator::{AllocationCreateInfo, MemoryTypeFilter}, /// memory::allocator::{AllocationCreateInfo, MemoryTypeFilter},
/// sync::GpuFuture, /// sync::GpuFuture,
/// DeviceSize, /// DeviceSize,
@ -171,7 +171,7 @@ pub mod view;
/// .unwrap(); /// .unwrap();
/// ///
/// // Create a one-time command to copy between the buffers. /// // Create a one-time command to copy between the buffers.
/// let mut cbb = AutoCommandBufferBuilder::primary( /// let mut cbb = RecordingCommandBuffer::primary(
/// command_buffer_allocator.clone(), /// command_buffer_allocator.clone(),
/// queue.queue_family_index(), /// queue.queue_family_index(),
/// CommandBufferUsage::OneTimeSubmit, /// CommandBufferUsage::OneTimeSubmit,
@ -182,7 +182,7 @@ pub mod view;
/// device_local_buffer.clone(), /// device_local_buffer.clone(),
/// )) /// ))
/// .unwrap(); /// .unwrap();
/// let cb = cbb.build().unwrap(); /// let cb = cbb.end().unwrap();
/// ///
/// // Execute the copy command and wait for completion before proceeding. /// // Execute the copy command and wait for completion before proceeding.
/// cb.execute(queue.clone()) /// cb.execute(queue.clone())

View File

@ -6,7 +6,7 @@ use crate::{
buffer::{Buffer, IndexBuffer, Subbuffer}, buffer::{Buffer, IndexBuffer, Subbuffer},
command_buffer::{ command_buffer::{
allocator::CommandBufferAllocator, allocator::CommandBufferAllocator,
sys::{CommandBufferBeginInfo, UnsafeCommandBuffer, UnsafeCommandBufferBuilder}, sys::{CommandBufferBeginInfo, RawCommandBuffer, RawRecordingCommandBuffer},
CommandBufferBufferRangeUsage, CommandBufferBufferUsage, CommandBufferImageRangeUsage, CommandBufferBufferRangeUsage, CommandBufferBufferUsage, CommandBufferImageRangeUsage,
CommandBufferImageUsage, CommandBufferInheritanceInfo, CommandBufferImageUsage, CommandBufferInheritanceInfo,
CommandBufferInheritanceRenderPassType, CommandBufferLevel, CommandBufferResourcesUsage, CommandBufferInheritanceRenderPassType, CommandBufferLevel, CommandBufferResourcesUsage,
@ -51,30 +51,33 @@ use std::{
sync::{atomic::AtomicBool, Arc}, sync::{atomic::AtomicBool, Arc},
}; };
/// Note that command buffers allocated from `StandardCommandBufferAllocator` don't implement /// A command buffer in the recording state.
/// the `Send` and `Sync` traits. If you use this allocator, then the `AutoCommandBufferBuilder` ///
/// will not implement `Send` and `Sync` either. Once a command buffer is built, however, it *does* /// Unlike [`RawRecordingCommandBuffer`], this type does resource tracking and inserts pipeline
/// implement `Send` and `Sync`. /// barriers automatically.
pub struct AutoCommandBufferBuilder<L> { ///
pub(in crate::command_buffer) inner: UnsafeCommandBufferBuilder, /// Note that command buffers in the recording state don't implement the `Send` and `Sync` traits.
/// Once a command buffer has finished recording, however, it *does* implement `Send` and `Sync`.
pub struct RecordingCommandBuffer<L> {
pub(in crate::command_buffer) inner: RawRecordingCommandBuffer,
commands: Vec<( commands: Vec<(
CommandInfo, CommandInfo,
Box<dyn Fn(&mut UnsafeCommandBufferBuilder) + Send + Sync + 'static>, Box<dyn Fn(&mut RawRecordingCommandBuffer) + Send + Sync + 'static>,
)>, )>,
pub(in crate::command_buffer) builder_state: CommandBufferBuilderState, pub(in crate::command_buffer) builder_state: CommandBufferBuilderState,
_data: PhantomData<L>, _data: PhantomData<L>,
} }
impl AutoCommandBufferBuilder<PrimaryAutoCommandBuffer> { impl RecordingCommandBuffer<PrimaryAutoCommandBuffer> {
/// Starts recording a primary command buffer. /// Starts recording a primary command buffer.
#[inline] #[inline]
pub fn primary( pub fn primary(
allocator: Arc<dyn CommandBufferAllocator>, allocator: Arc<dyn CommandBufferAllocator>,
queue_family_index: u32, queue_family_index: u32,
usage: CommandBufferUsage, usage: CommandBufferUsage,
) -> Result<AutoCommandBufferBuilder<PrimaryAutoCommandBuffer>, Validated<VulkanError>> { ) -> Result<RecordingCommandBuffer<PrimaryAutoCommandBuffer>, Validated<VulkanError>> {
unsafe { unsafe {
AutoCommandBufferBuilder::begin( RecordingCommandBuffer::begin(
allocator, allocator,
queue_family_index, queue_family_index,
CommandBufferLevel::Primary, CommandBufferLevel::Primary,
@ -93,8 +96,8 @@ impl AutoCommandBufferBuilder<PrimaryAutoCommandBuffer> {
allocator: Arc<dyn CommandBufferAllocator>, allocator: Arc<dyn CommandBufferAllocator>,
queue_family_index: u32, queue_family_index: u32,
usage: CommandBufferUsage, usage: CommandBufferUsage,
) -> Result<AutoCommandBufferBuilder<PrimaryAutoCommandBuffer>, Validated<VulkanError>> { ) -> Result<RecordingCommandBuffer<PrimaryAutoCommandBuffer>, Validated<VulkanError>> {
AutoCommandBufferBuilder::begin_unchecked( RecordingCommandBuffer::begin_unchecked(
allocator, allocator,
queue_family_index, queue_family_index,
CommandBufferLevel::Primary, CommandBufferLevel::Primary,
@ -107,7 +110,7 @@ impl AutoCommandBufferBuilder<PrimaryAutoCommandBuffer> {
} }
} }
impl AutoCommandBufferBuilder<SecondaryAutoCommandBuffer> { impl RecordingCommandBuffer<SecondaryAutoCommandBuffer> {
/// Starts recording a secondary command buffer. /// Starts recording a secondary command buffer.
#[inline] #[inline]
pub fn secondary( pub fn secondary(
@ -115,9 +118,9 @@ impl AutoCommandBufferBuilder<SecondaryAutoCommandBuffer> {
queue_family_index: u32, queue_family_index: u32,
usage: CommandBufferUsage, usage: CommandBufferUsage,
inheritance_info: CommandBufferInheritanceInfo, inheritance_info: CommandBufferInheritanceInfo,
) -> Result<AutoCommandBufferBuilder<SecondaryAutoCommandBuffer>, Validated<VulkanError>> { ) -> Result<RecordingCommandBuffer<SecondaryAutoCommandBuffer>, Validated<VulkanError>> {
unsafe { unsafe {
AutoCommandBufferBuilder::begin( RecordingCommandBuffer::begin(
allocator, allocator,
queue_family_index, queue_family_index,
CommandBufferLevel::Secondary, CommandBufferLevel::Secondary,
@ -137,8 +140,8 @@ impl AutoCommandBufferBuilder<SecondaryAutoCommandBuffer> {
queue_family_index: u32, queue_family_index: u32,
usage: CommandBufferUsage, usage: CommandBufferUsage,
inheritance_info: CommandBufferInheritanceInfo, inheritance_info: CommandBufferInheritanceInfo,
) -> Result<AutoCommandBufferBuilder<SecondaryAutoCommandBuffer>, Validated<VulkanError>> { ) -> Result<RecordingCommandBuffer<SecondaryAutoCommandBuffer>, Validated<VulkanError>> {
AutoCommandBufferBuilder::begin_unchecked( RecordingCommandBuffer::begin_unchecked(
allocator, allocator,
queue_family_index, queue_family_index,
CommandBufferLevel::Secondary, CommandBufferLevel::Secondary,
@ -151,7 +154,7 @@ impl AutoCommandBufferBuilder<SecondaryAutoCommandBuffer> {
} }
} }
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
/// Actual constructor. Private. /// Actual constructor. Private.
/// ///
/// # Safety /// # Safety
@ -162,7 +165,7 @@ impl<L> AutoCommandBufferBuilder<L> {
queue_family_index: u32, queue_family_index: u32,
level: CommandBufferLevel, level: CommandBufferLevel,
begin_info: CommandBufferBeginInfo, begin_info: CommandBufferBeginInfo,
) -> Result<AutoCommandBufferBuilder<L>, Validated<VulkanError>> { ) -> Result<RecordingCommandBuffer<L>, Validated<VulkanError>> {
Self::validate_begin(allocator.device(), queue_family_index, level, &begin_info)?; Self::validate_begin(allocator.device(), queue_family_index, level, &begin_info)?;
unsafe { Self::begin_unchecked(allocator, queue_family_index, level, begin_info) } unsafe { Self::begin_unchecked(allocator, queue_family_index, level, begin_info) }
@ -210,9 +213,9 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
let inner = let inner =
UnsafeCommandBufferBuilder::new(allocator, queue_family_index, level, begin_info)?; RawRecordingCommandBuffer::new(allocator, queue_family_index, level, begin_info)?;
Ok(AutoCommandBufferBuilder { Ok(RecordingCommandBuffer {
inner, inner,
commands: Vec::new(), commands: Vec::new(),
builder_state, builder_state,
@ -224,8 +227,8 @@ impl<L> AutoCommandBufferBuilder<L> {
mut self, mut self,
) -> Result< ) -> Result<
( (
UnsafeCommandBuffer, RawCommandBuffer,
Vec<Box<dyn Fn(&mut UnsafeCommandBufferBuilder) + Send + Sync + 'static>>, Vec<Box<dyn Fn(&mut RawRecordingCommandBuffer) + Send + Sync + 'static>>,
CommandBufferResourcesUsage, CommandBufferResourcesUsage,
SecondaryCommandBufferResourcesUsage, SecondaryCommandBufferResourcesUsage,
), ),
@ -296,7 +299,7 @@ impl<L> AutoCommandBufferBuilder<L> {
debug_assert!(barriers.is_empty()); debug_assert!(barriers.is_empty());
Ok(( Ok((
self.inner.build()?, self.inner.end()?,
self.commands self.commands
.into_iter() .into_iter()
.map(|(_, record_func)| record_func) .map(|(_, record_func)| record_func)
@ -307,9 +310,9 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
} }
impl AutoCommandBufferBuilder<PrimaryAutoCommandBuffer> { impl RecordingCommandBuffer<PrimaryAutoCommandBuffer> {
/// Builds the command buffer. /// Ends the recording, returning a command buffer which can be submitted.
pub fn build(self) -> Result<Arc<PrimaryAutoCommandBuffer>, Validated<VulkanError>> { pub fn end(self) -> Result<Arc<PrimaryAutoCommandBuffer>, Validated<VulkanError>> {
if self.builder_state.render_pass.is_some() { if self.builder_state.render_pass.is_some() {
return Err(Box::new(ValidationError { return Err(Box::new(ValidationError {
problem: "a render pass instance is still active".into(), problem: "a render pass instance is still active".into(),
@ -342,9 +345,9 @@ impl AutoCommandBufferBuilder<PrimaryAutoCommandBuffer> {
} }
} }
impl AutoCommandBufferBuilder<SecondaryAutoCommandBuffer> { impl RecordingCommandBuffer<SecondaryAutoCommandBuffer> {
/// Builds the command buffer. /// Ends the recording, returning a command buffer which can be submitted.
pub fn build(self) -> Result<Arc<SecondaryAutoCommandBuffer>, Validated<VulkanError>> { pub fn end(self) -> Result<Arc<SecondaryAutoCommandBuffer>, Validated<VulkanError>> {
if !self.builder_state.queries.is_empty() { if !self.builder_state.queries.is_empty() {
return Err(Box::new(ValidationError { return Err(Box::new(ValidationError {
problem: "a query is still active".into(), problem: "a query is still active".into(),
@ -375,12 +378,12 @@ impl AutoCommandBufferBuilder<SecondaryAutoCommandBuffer> {
} }
} }
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
pub(in crate::command_buffer) fn add_command( pub(in crate::command_buffer) fn add_command(
&mut self, &mut self,
name: &'static str, name: &'static str,
used_resources: Vec<(ResourceUseRef2, Resource)>, used_resources: Vec<(ResourceUseRef2, Resource)>,
record_func: impl Fn(&mut UnsafeCommandBufferBuilder) + Send + Sync + 'static, record_func: impl Fn(&mut RawRecordingCommandBuffer) + Send + Sync + 'static,
) { ) {
self.commands.push(( self.commands.push((
CommandInfo { CommandInfo {
@ -396,7 +399,7 @@ impl<L> AutoCommandBufferBuilder<L> {
&mut self, &mut self,
name: &'static str, name: &'static str,
used_resources: Vec<(ResourceUseRef2, Resource)>, used_resources: Vec<(ResourceUseRef2, Resource)>,
record_func: impl Fn(&mut UnsafeCommandBufferBuilder) + Send + Sync + 'static, record_func: impl Fn(&mut RawRecordingCommandBuffer) + Send + Sync + 'static,
) { ) {
self.commands.push(( self.commands.push((
CommandInfo { CommandInfo {
@ -412,7 +415,7 @@ impl<L> AutoCommandBufferBuilder<L> {
&mut self, &mut self,
name: &'static str, name: &'static str,
used_resources: Vec<(ResourceUseRef2, Resource)>, used_resources: Vec<(ResourceUseRef2, Resource)>,
record_func: impl Fn(&mut UnsafeCommandBufferBuilder) + Send + Sync + 'static, record_func: impl Fn(&mut RawRecordingCommandBuffer) + Send + Sync + 'static,
) { ) {
self.commands.push(( self.commands.push((
CommandInfo { CommandInfo {
@ -425,7 +428,7 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
} }
unsafe impl<L> DeviceOwned for AutoCommandBufferBuilder<L> { unsafe impl<L> DeviceOwned for RecordingCommandBuffer<L> {
fn device(&self) -> &Arc<Device> { fn device(&self) -> &Arc<Device> {
self.inner.device() self.inner.device()
} }

View File

@ -62,7 +62,7 @@ pub(in crate::command_buffer) use self::builder::{
RenderPassStateAttachments, RenderPassStateType, SetOrPush, RenderPassStateAttachments, RenderPassStateType, SetOrPush,
}; };
use super::{ use super::{
sys::{UnsafeCommandBuffer, UnsafeCommandBufferBuilder}, sys::{RawCommandBuffer, RawRecordingCommandBuffer},
CommandBufferInheritanceInfo, CommandBufferResourcesUsage, CommandBufferState, CommandBufferInheritanceInfo, CommandBufferResourcesUsage, CommandBufferState,
CommandBufferUsage, ResourceInCommand, SecondaryCommandBufferResourcesUsage, CommandBufferUsage, ResourceInCommand, SecondaryCommandBufferResourcesUsage,
SecondaryResourceUseRef, SecondaryResourceUseRef,
@ -87,8 +87,8 @@ use std::{
mod builder; mod builder;
pub struct PrimaryAutoCommandBuffer { pub struct PrimaryAutoCommandBuffer {
inner: UnsafeCommandBuffer, inner: RawCommandBuffer,
_keep_alive_objects: Vec<Box<dyn Fn(&mut UnsafeCommandBufferBuilder) + Send + Sync + 'static>>, _keep_alive_objects: Vec<Box<dyn Fn(&mut RawRecordingCommandBuffer) + Send + Sync + 'static>>,
resources_usage: CommandBufferResourcesUsage, resources_usage: CommandBufferResourcesUsage,
state: Mutex<CommandBufferState>, state: Mutex<CommandBufferState>,
} }
@ -140,8 +140,8 @@ impl PrimaryAutoCommandBuffer {
} }
pub struct SecondaryAutoCommandBuffer { pub struct SecondaryAutoCommandBuffer {
inner: UnsafeCommandBuffer, inner: RawCommandBuffer,
_keep_alive_objects: Vec<Box<dyn Fn(&mut UnsafeCommandBufferBuilder) + Send + Sync + 'static>>, _keep_alive_objects: Vec<Box<dyn Fn(&mut RawRecordingCommandBuffer) + Send + Sync + 'static>>,
resources_usage: SecondaryCommandBufferResourcesUsage, resources_usage: SecondaryCommandBufferResourcesUsage,
submit_state: SubmitState, submit_state: SubmitState,
} }
@ -330,7 +330,7 @@ mod tests {
buffer::{Buffer, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::{StandardCommandBufferAllocator, StandardCommandBufferAllocatorCreateInfo}, allocator::{StandardCommandBufferAllocator, StandardCommandBufferAllocatorCreateInfo},
AutoCommandBufferBuilder, BufferCopy, CommandBufferUsage, CopyBufferInfoTyped, BufferCopy, CommandBufferUsage, CopyBufferInfoTyped, RecordingCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, allocator::StandardDescriptorSetAllocator,
@ -358,7 +358,7 @@ mod tests {
Default::default(), Default::default(),
)); ));
AutoCommandBufferBuilder::primary( RecordingCommandBuffer::primary(
allocator, allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::MultipleSubmit, CommandBufferUsage::MultipleSubmit,
@ -424,7 +424,7 @@ mod tests {
device, device,
Default::default(), Default::default(),
)); ));
let mut cbb = AutoCommandBufferBuilder::primary( let mut cbb = RecordingCommandBuffer::primary(
cb_allocator, cb_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -443,7 +443,7 @@ mod tests {
}) })
.unwrap(); .unwrap();
let cb = cbb.build().unwrap(); let cb = cbb.end().unwrap();
let future = cb let future = cb
.execute(queue) .execute(queue)
@ -470,17 +470,17 @@ mod tests {
)); ));
// Make a secondary CB that doesn't support simultaneous use. // Make a secondary CB that doesn't support simultaneous use.
let builder = AutoCommandBufferBuilder::secondary( let builder = RecordingCommandBuffer::secondary(
cb_allocator.clone(), cb_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::MultipleSubmit, CommandBufferUsage::MultipleSubmit,
Default::default(), Default::default(),
) )
.unwrap(); .unwrap();
let secondary = builder.build().unwrap(); let secondary = builder.end().unwrap();
{ {
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
cb_allocator.clone(), cb_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::SimultaneousUse, CommandBufferUsage::SimultaneousUse,
@ -496,16 +496,16 @@ mod tests {
} }
{ {
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
cb_allocator.clone(), cb_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::SimultaneousUse, CommandBufferUsage::SimultaneousUse,
) )
.unwrap(); .unwrap();
builder.execute_commands(secondary.clone()).unwrap(); builder.execute_commands(secondary.clone()).unwrap();
let cb1 = builder.build().unwrap(); let cb1 = builder.end().unwrap();
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
cb_allocator, cb_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::SimultaneousUse, CommandBufferUsage::SimultaneousUse,
@ -547,7 +547,7 @@ mod tests {
device, device,
Default::default(), Default::default(),
)); ));
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
cb_allocator, cb_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -567,7 +567,7 @@ mod tests {
}) })
.unwrap(); .unwrap();
let cb = builder.build().unwrap(); let cb = builder.end().unwrap();
let future = cb let future = cb
.execute(queue) .execute(queue)
@ -605,7 +605,7 @@ mod tests {
device, device,
Default::default(), Default::default(),
)); ));
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
cb_allocator, cb_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -638,7 +638,7 @@ mod tests {
..Default::default() ..Default::default()
}, },
)); ));
let cbb = AutoCommandBufferBuilder::primary( let cbb = RecordingCommandBuffer::primary(
cb_allocator.clone(), cb_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -662,7 +662,7 @@ mod tests {
) )
.unwrap(); .unwrap();
cbb.build() cbb.end()
.unwrap() .unwrap()
.execute(queue.clone()) .execute(queue.clone())
.unwrap() .unwrap()
@ -674,7 +674,7 @@ mod tests {
// Two secondary command buffers that both write to the buffer // Two secondary command buffers that both write to the buffer
let secondary = (0..2) let secondary = (0..2)
.map(|_| { .map(|_| {
let mut builder = AutoCommandBufferBuilder::secondary( let mut builder = RecordingCommandBuffer::secondary(
cb_allocator.clone(), cb_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::SimultaneousUse, CommandBufferUsage::SimultaneousUse,
@ -684,12 +684,12 @@ mod tests {
builder builder
.fill_buffer(buffer.clone().into_slice(), 42) .fill_buffer(buffer.clone().into_slice(), 42)
.unwrap(); .unwrap();
builder.build().unwrap() builder.end().unwrap()
}) })
.collect::<Vec<_>>(); .collect::<Vec<_>>();
{ {
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
cb_allocator.clone(), cb_allocator.clone(),
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::SimultaneousUse, CommandBufferUsage::SimultaneousUse,
@ -701,7 +701,7 @@ mod tests {
builder.execute_commands_unchecked([secondary as _].into_iter().collect()); builder.execute_commands_unchecked([secondary as _].into_iter().collect());
}); });
let _primary = builder.build().unwrap(); let _primary = builder.end().unwrap();
/* /*
let names = primary._commands.iter().map(|c| c.name).collect::<Vec<_>>(); let names = primary._commands.iter().map(|c| c.name).collect::<Vec<_>>();
@ -712,7 +712,7 @@ mod tests {
} }
{ {
let mut builder = AutoCommandBufferBuilder::primary( let mut builder = RecordingCommandBuffer::primary(
cb_allocator, cb_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::SimultaneousUse, CommandBufferUsage::SimultaneousUse,
@ -739,7 +739,7 @@ mod tests {
device.clone(), device.clone(),
Default::default(), Default::default(),
)); ));
let mut sync = AutoCommandBufferBuilder::primary( let mut sync = RecordingCommandBuffer::primary(
cb_allocator, cb_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::MultipleSubmit, CommandBufferUsage::MultipleSubmit,
@ -778,7 +778,7 @@ mod tests {
device.clone(), device.clone(),
Default::default(), Default::default(),
)); ));
let mut sync = AutoCommandBufferBuilder::primary( let mut sync = RecordingCommandBuffer::primary(
cb_allocator, cb_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::MultipleSubmit, CommandBufferUsage::MultipleSubmit,

View File

@ -12,8 +12,8 @@ use crate::{
buffer::{BufferUsage, Subbuffer}, buffer::{BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
auto::{Resource, ResourceUseRef2}, auto::{Resource, ResourceUseRef2},
sys::UnsafeCommandBufferBuilder, sys::RawRecordingCommandBuffer,
AutoCommandBufferBuilder, ResourceInCommand, RecordingCommandBuffer, ResourceInCommand,
}, },
device::{DeviceOwned, QueueFlags}, device::{DeviceOwned, QueueFlags},
query::{QueryPool, QueryType}, query::{QueryPool, QueryType},
@ -24,7 +24,7 @@ use smallvec::SmallVec;
use std::{mem::size_of, sync::Arc}; use std::{mem::size_of, sync::Arc};
/// # Commands to do operations on acceleration structures. /// # Commands to do operations on acceleration structures.
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
/// Builds or updates an acceleration structure. /// Builds or updates an acceleration structure.
/// ///
/// # Safety /// # Safety
@ -119,7 +119,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"build_acceleration_structure", "build_acceleration_structure",
used_resources, used_resources,
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.build_acceleration_structure_unchecked(&info, &build_range_infos); out.build_acceleration_structure_unchecked(&info, &build_range_infos);
}, },
); );
@ -251,7 +251,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"build_acceleration_structure_indirect", "build_acceleration_structure_indirect",
used_resources, used_resources,
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.build_acceleration_structure_indirect_unchecked( out.build_acceleration_structure_indirect_unchecked(
&info, &info,
&indirect_buffer, &indirect_buffer,
@ -340,7 +340,7 @@ impl<L> AutoCommandBufferBuilder<L> {
] ]
.into_iter() .into_iter()
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.copy_acceleration_structure_unchecked(&info); out.copy_acceleration_structure_unchecked(&info);
}, },
); );
@ -424,7 +424,7 @@ impl<L> AutoCommandBufferBuilder<L> {
] ]
.into_iter() .into_iter()
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.copy_acceleration_structure_to_memory_unchecked(&info); out.copy_acceleration_structure_to_memory_unchecked(&info);
}, },
); );
@ -511,7 +511,7 @@ impl<L> AutoCommandBufferBuilder<L> {
] ]
.into_iter() .into_iter()
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.copy_memory_to_acceleration_structure_unchecked(&info); out.copy_memory_to_acceleration_structure_unchecked(&info);
}, },
); );
@ -607,7 +607,7 @@ impl<L> AutoCommandBufferBuilder<L> {
}, },
) )
}).collect(), }).collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.write_acceleration_structures_properties_unchecked( out.write_acceleration_structures_properties_unchecked(
&acceleration_structures, &acceleration_structures,
&query_pool, &query_pool,
@ -794,7 +794,7 @@ fn add_indirect_buffer_resources(
)); ));
} }
impl UnsafeCommandBufferBuilder { impl RawRecordingCommandBuffer {
#[inline] #[inline]
pub unsafe fn build_acceleration_structure( pub unsafe fn build_acceleration_structure(
&mut self, &mut self,

View File

@ -1,6 +1,6 @@
use crate::{ use crate::{
buffer::{BufferContents, BufferUsage, IndexBuffer, Subbuffer}, buffer::{BufferContents, BufferUsage, IndexBuffer, Subbuffer},
command_buffer::{auto::SetOrPush, sys::UnsafeCommandBufferBuilder, AutoCommandBufferBuilder}, command_buffer::{auto::SetOrPush, sys::RawRecordingCommandBuffer, RecordingCommandBuffer},
descriptor_set::{ descriptor_set::{
layout::{DescriptorBindingFlags, DescriptorSetLayoutCreateFlags, DescriptorType}, layout::{DescriptorBindingFlags, DescriptorSetLayoutCreateFlags, DescriptorType},
DescriptorBindingResources, DescriptorBufferInfo, DescriptorSetResources, DescriptorBindingResources, DescriptorBufferInfo, DescriptorSetResources,
@ -21,7 +21,7 @@ use std::{cmp::min, ffi::c_void, mem::size_of, ptr, sync::Arc};
/// # Commands to bind or push state for pipeline execution commands. /// # Commands to bind or push state for pipeline execution commands.
/// ///
/// These commands require a queue with a pipeline type that uses the given state. /// These commands require a queue with a pipeline type that uses the given state.
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
/// Binds descriptor sets for future dispatch or draw calls. /// Binds descriptor sets for future dispatch or draw calls.
pub fn bind_descriptor_sets( pub fn bind_descriptor_sets(
&mut self, &mut self,
@ -95,7 +95,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"bind_descriptor_sets", "bind_descriptor_sets",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.bind_descriptor_sets_unchecked( out.bind_descriptor_sets_unchecked(
pipeline_bind_point, pipeline_bind_point,
&pipeline_layout, &pipeline_layout,
@ -138,7 +138,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"bind_index_buffer", "bind_index_buffer",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.bind_index_buffer_unchecked(&index_buffer); out.bind_index_buffer_unchecked(&index_buffer);
}, },
); );
@ -174,7 +174,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"bind_pipeline_compute", "bind_pipeline_compute",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.bind_pipeline_compute_unchecked(&pipeline); out.bind_pipeline_compute_unchecked(&pipeline);
}, },
); );
@ -217,7 +217,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"bind_pipeline_graphics", "bind_pipeline_graphics",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.bind_pipeline_graphics_unchecked(&pipeline); out.bind_pipeline_graphics_unchecked(&pipeline);
}, },
); );
@ -265,7 +265,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"bind_vertex_buffers", "bind_vertex_buffers",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.bind_vertex_buffers_unchecked(first_binding, &vertex_buffers); out.bind_vertex_buffers_unchecked(first_binding, &vertex_buffers);
}, },
); );
@ -329,7 +329,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"push_constants", "push_constants",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.push_constants_unchecked(&pipeline_layout, offset, &push_constants); out.push_constants_unchecked(&pipeline_layout, offset, &push_constants);
}, },
); );
@ -414,7 +414,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"push_descriptor_set", "push_descriptor_set",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.push_descriptor_set_unchecked( out.push_descriptor_set_unchecked(
pipeline_bind_point, pipeline_bind_point,
&pipeline_layout, &pipeline_layout,
@ -428,7 +428,7 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
} }
impl UnsafeCommandBufferBuilder { impl RawRecordingCommandBuffer {
#[inline] #[inline]
pub unsafe fn bind_descriptor_sets( pub unsafe fn bind_descriptor_sets(
&mut self, &mut self,

View File

@ -1,8 +1,7 @@
use crate::{ use crate::{
buffer::{BufferContents, BufferUsage, Subbuffer}, buffer::{BufferContents, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
auto::Resource, sys::UnsafeCommandBufferBuilder, AutoCommandBufferBuilder, auto::Resource, sys::RawRecordingCommandBuffer, RecordingCommandBuffer, ResourceInCommand,
ResourceInCommand,
}, },
device::{Device, DeviceOwned, QueueFlags}, device::{Device, DeviceOwned, QueueFlags},
format::{ClearColorValue, ClearDepthStencilValue, FormatFeatures}, format::{ClearColorValue, ClearDepthStencilValue, FormatFeatures},
@ -15,7 +14,7 @@ use smallvec::{smallvec, SmallVec};
use std::{mem::size_of_val, sync::Arc}; use std::{mem::size_of_val, sync::Arc};
/// # Commands to fill resources with new data. /// # Commands to fill resources with new data.
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
/// Clears a color image with a specific value. /// Clears a color image with a specific value.
pub fn clear_color_image( pub fn clear_color_image(
&mut self, &mut self,
@ -74,7 +73,7 @@ impl<L> AutoCommandBufferBuilder<L> {
)] )]
}) })
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.clear_color_image_unchecked(&clear_info); out.clear_color_image_unchecked(&clear_info);
}, },
); );
@ -140,7 +139,7 @@ impl<L> AutoCommandBufferBuilder<L> {
)] )]
}) })
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.clear_depth_stencil_image_unchecked(&clear_info); out.clear_depth_stencil_image_unchecked(&clear_info);
}, },
); );
@ -198,7 +197,7 @@ impl<L> AutoCommandBufferBuilder<L> {
)] )]
.into_iter() .into_iter()
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.fill_buffer_unchecked(&dst_buffer, data); out.fill_buffer_unchecked(&dst_buffer, data);
}, },
); );
@ -264,7 +263,7 @@ impl<L> AutoCommandBufferBuilder<L> {
)] )]
.into_iter() .into_iter()
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.update_buffer_unchecked(&dst_buffer, &data); out.update_buffer_unchecked(&dst_buffer, &data);
}, },
); );
@ -273,7 +272,7 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
} }
impl UnsafeCommandBufferBuilder { impl RawRecordingCommandBuffer {
#[inline] #[inline]
pub unsafe fn clear_color_image( pub unsafe fn clear_color_image(
&mut self, &mut self,

View File

@ -1,8 +1,7 @@
use crate::{ use crate::{
buffer::{BufferUsage, Subbuffer}, buffer::{BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
auto::Resource, sys::UnsafeCommandBufferBuilder, AutoCommandBufferBuilder, auto::Resource, sys::RawRecordingCommandBuffer, RecordingCommandBuffer, ResourceInCommand,
ResourceInCommand,
}, },
device::{Device, DeviceOwned, QueueFlags}, device::{Device, DeviceOwned, QueueFlags},
format::{Format, FormatFeatures}, format::{Format, FormatFeatures},
@ -21,7 +20,7 @@ use std::{
}; };
/// # Commands to transfer data between resources. /// # Commands to transfer data between resources.
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
/// Copies data from a buffer to another buffer. /// Copies data from a buffer to another buffer.
/// ///
/// # Panics /// # Panics
@ -100,7 +99,7 @@ impl<L> AutoCommandBufferBuilder<L> {
] ]
}) })
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.copy_buffer_unchecked(&copy_buffer_info); out.copy_buffer_unchecked(&copy_buffer_info);
}, },
); );
@ -203,7 +202,7 @@ impl<L> AutoCommandBufferBuilder<L> {
] ]
}) })
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.copy_image_unchecked(&copy_image_info); out.copy_image_unchecked(&copy_image_info);
}, },
); );
@ -290,7 +289,7 @@ impl<L> AutoCommandBufferBuilder<L> {
] ]
}) })
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.copy_buffer_to_image_unchecked(&copy_buffer_to_image_info); out.copy_buffer_to_image_unchecked(&copy_buffer_to_image_info);
}, },
); );
@ -377,7 +376,7 @@ impl<L> AutoCommandBufferBuilder<L> {
] ]
}) })
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.copy_image_to_buffer_unchecked(&copy_image_to_buffer_info); out.copy_image_to_buffer_unchecked(&copy_image_to_buffer_info);
}, },
); );
@ -490,7 +489,7 @@ impl<L> AutoCommandBufferBuilder<L> {
] ]
}) })
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.blit_image_unchecked(&blit_image_info); out.blit_image_unchecked(&blit_image_info);
}, },
); );
@ -582,7 +581,7 @@ impl<L> AutoCommandBufferBuilder<L> {
] ]
}) })
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.resolve_image_unchecked(&resolve_image_info); out.resolve_image_unchecked(&resolve_image_info);
}, },
); );
@ -591,7 +590,7 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
} }
impl UnsafeCommandBufferBuilder { impl RawRecordingCommandBuffer {
#[inline] #[inline]
pub unsafe fn copy_buffer( pub unsafe fn copy_buffer(
&mut self, &mut self,

View File

@ -1,5 +1,5 @@
use crate::{ use crate::{
command_buffer::{sys::UnsafeCommandBufferBuilder, AutoCommandBufferBuilder}, command_buffer::{sys::RawRecordingCommandBuffer, RecordingCommandBuffer},
device::{DeviceOwned, QueueFlags}, device::{DeviceOwned, QueueFlags},
instance::debug::DebugUtilsLabel, instance::debug::DebugUtilsLabel,
Requires, RequiresAllOf, RequiresOneOf, ValidationError, VulkanObject, Requires, RequiresAllOf, RequiresOneOf, ValidationError, VulkanObject,
@ -11,7 +11,7 @@ use std::ffi::CString;
/// These commands all require the [`ext_debug_utils`] extension to be enabled on the instance. /// These commands all require the [`ext_debug_utils`] extension to be enabled on the instance.
/// ///
/// [`ext_debug_utils`]: crate::instance::InstanceExtensions::ext_debug_utils /// [`ext_debug_utils`]: crate::instance::InstanceExtensions::ext_debug_utils
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
/// Opens a command buffer debug label region. /// Opens a command buffer debug label region.
pub fn begin_debug_utils_label( pub fn begin_debug_utils_label(
&mut self, &mut self,
@ -39,7 +39,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"begin_debug_utils_label", "begin_debug_utils_label",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.begin_debug_utils_label_unchecked(&label_info); out.begin_debug_utils_label_unchecked(&label_info);
}, },
); );
@ -75,7 +75,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"end_debug_utils_label", "end_debug_utils_label",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.end_debug_utils_label_unchecked(); out.end_debug_utils_label_unchecked();
}, },
); );
@ -110,7 +110,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"insert_debug_utils_label", "insert_debug_utils_label",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.insert_debug_utils_label_unchecked(&label_info); out.insert_debug_utils_label_unchecked(&label_info);
}, },
); );
@ -119,7 +119,7 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
} }
impl UnsafeCommandBufferBuilder { impl RawRecordingCommandBuffer {
#[inline] #[inline]
pub unsafe fn begin_debug_utils_label( pub unsafe fn begin_debug_utils_label(
&mut self, &mut self,

View File

@ -1,5 +1,5 @@
use crate::{ use crate::{
command_buffer::{sys::UnsafeCommandBufferBuilder, AutoCommandBufferBuilder}, command_buffer::{sys::RawRecordingCommandBuffer, RecordingCommandBuffer},
device::{DeviceOwned, QueueFlags}, device::{DeviceOwned, QueueFlags},
pipeline::{ pipeline::{
graphics::{ graphics::{
@ -23,7 +23,7 @@ use std::ops::RangeInclusive;
/// # Commands to set dynamic state for pipelines. /// # Commands to set dynamic state for pipelines.
/// ///
/// These commands require a queue with a pipeline type that uses the given state. /// These commands require a queue with a pipeline type that uses the given state.
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
// Helper function for dynamic state setting. // Helper function for dynamic state setting.
fn validate_graphics_pipeline_fixed_state( fn validate_graphics_pipeline_fixed_state(
&self, &self,
@ -74,7 +74,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_blend_constants", "set_blend_constants",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_blend_constants_unchecked(constants); out.set_blend_constants_unchecked(constants);
}, },
); );
@ -131,7 +131,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_color_write_enable", "set_color_write_enable",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_color_write_enable_unchecked(&enables); out.set_color_write_enable_unchecked(&enables);
}, },
); );
@ -163,7 +163,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_cull_mode", "set_cull_mode",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_cull_mode_unchecked(cull_mode); out.set_cull_mode_unchecked(cull_mode);
}, },
); );
@ -212,7 +212,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_depth_bias", "set_depth_bias",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_depth_bias_unchecked(constant_factor, clamp, slope_factor); out.set_depth_bias_unchecked(constant_factor, clamp, slope_factor);
}, },
); );
@ -244,7 +244,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_depth_bias_enable", "set_depth_bias_enable",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_depth_bias_enable_unchecked(enable); out.set_depth_bias_enable_unchecked(enable);
}, },
); );
@ -279,7 +279,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_depth_bounds", "set_depth_bounds",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_depth_bounds_unchecked(bounds.clone()); out.set_depth_bounds_unchecked(bounds.clone());
}, },
); );
@ -314,7 +314,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_depth_bounds_test_enable", "set_depth_bounds_test_enable",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_depth_bounds_test_enable_unchecked(enable); out.set_depth_bounds_test_enable_unchecked(enable);
}, },
); );
@ -349,7 +349,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_depth_compare_op", "set_depth_compare_op",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_depth_compare_op_unchecked(compare_op); out.set_depth_compare_op_unchecked(compare_op);
}, },
); );
@ -381,7 +381,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_depth_test_enable", "set_depth_test_enable",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_depth_test_enable_unchecked(enable); out.set_depth_test_enable_unchecked(enable);
}, },
); );
@ -413,7 +413,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_depth_write_enable", "set_depth_write_enable",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_depth_write_enable_unchecked(enable); out.set_depth_write_enable_unchecked(enable);
}, },
); );
@ -459,7 +459,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_discard_rectangle", "set_discard_rectangle",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_discard_rectangle_unchecked(first_rectangle, &rectangles); out.set_discard_rectangle_unchecked(first_rectangle, &rectangles);
}, },
); );
@ -488,7 +488,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_front_face", "set_front_face",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_front_face_unchecked(face); out.set_front_face_unchecked(face);
}, },
); );
@ -525,7 +525,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_line_stipple", "set_line_stipple",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_line_stipple_unchecked(factor, pattern); out.set_line_stipple_unchecked(factor, pattern);
}, },
); );
@ -554,7 +554,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_line_width", "set_line_width",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_line_width_unchecked(line_width); out.set_line_width_unchecked(line_width);
}, },
); );
@ -583,7 +583,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_logic_op", "set_logic_op",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_logic_op_unchecked(logic_op); out.set_logic_op_unchecked(logic_op);
}, },
); );
@ -615,7 +615,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_patch_control_points", "set_patch_control_points",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_patch_control_points_unchecked(num); out.set_patch_control_points_unchecked(num);
}, },
); );
@ -650,7 +650,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_primitive_restart_enable", "set_primitive_restart_enable",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_primitive_restart_enable_unchecked(enable); out.set_primitive_restart_enable_unchecked(enable);
}, },
); );
@ -688,7 +688,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_primitive_topology", "set_primitive_topology",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_primitive_topology_unchecked(topology); out.set_primitive_topology_unchecked(topology);
}, },
); );
@ -723,7 +723,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_rasterizer_discard_enable", "set_rasterizer_discard_enable",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_rasterizer_discard_enable_unchecked(enable); out.set_rasterizer_discard_enable_unchecked(enable);
}, },
); );
@ -770,7 +770,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_scissor", "set_scissor",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_scissor_unchecked(first_scissor, &scissors); out.set_scissor_unchecked(first_scissor, &scissors);
}, },
); );
@ -808,7 +808,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_scissor_with_count", "set_scissor_with_count",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_scissor_with_count_unchecked(&scissors); out.set_scissor_with_count_unchecked(&scissors);
}, },
); );
@ -859,7 +859,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_stencil_compare_mask", "set_stencil_compare_mask",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_stencil_compare_mask_unchecked(faces, compare_mask); out.set_stencil_compare_mask_unchecked(faces, compare_mask);
}, },
); );
@ -931,7 +931,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_stencil_op", "set_stencil_op",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_stencil_op_unchecked(faces, fail_op, pass_op, depth_fail_op, compare_op); out.set_stencil_op_unchecked(faces, fail_op, pass_op, depth_fail_op, compare_op);
}, },
); );
@ -982,7 +982,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_stencil_reference", "set_stencil_reference",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_stencil_reference_unchecked(faces, reference); out.set_stencil_reference_unchecked(faces, reference);
}, },
); );
@ -1014,7 +1014,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_stencil_test_enable", "set_stencil_test_enable",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_stencil_test_enable_unchecked(enable); out.set_stencil_test_enable_unchecked(enable);
}, },
); );
@ -1065,7 +1065,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_stencil_write_mask", "set_stencil_write_mask",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_stencil_write_mask_unchecked(faces, write_mask); out.set_stencil_write_mask_unchecked(faces, write_mask);
}, },
); );
@ -1105,7 +1105,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_vertex_input", "set_vertex_input",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_vertex_input_unchecked(&vertex_input_state); out.set_vertex_input_unchecked(&vertex_input_state);
}, },
); );
@ -1151,7 +1151,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_viewport", "set_viewport",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_viewport_unchecked(first_viewport, &viewports); out.set_viewport_unchecked(first_viewport, &viewports);
}, },
); );
@ -1189,7 +1189,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"set_viewport", "set_viewport",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.set_viewport_with_count_unchecked(&viewports); out.set_viewport_with_count_unchecked(&viewports);
}, },
); );
@ -1198,7 +1198,7 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
} }
impl UnsafeCommandBufferBuilder { impl RawRecordingCommandBuffer {
#[inline] #[inline]
pub unsafe fn set_blend_constants( pub unsafe fn set_blend_constants(
&mut self, &mut self,

View File

@ -3,9 +3,9 @@ use crate::{
buffer::{view::BufferView, BufferUsage, Subbuffer}, buffer::{view::BufferView, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
auto::{RenderPassState, RenderPassStateType, Resource, ResourceUseRef2}, auto::{RenderPassState, RenderPassStateType, Resource, ResourceUseRef2},
sys::UnsafeCommandBufferBuilder, sys::RawRecordingCommandBuffer,
AutoCommandBufferBuilder, DispatchIndirectCommand, DrawIndexedIndirectCommand, DispatchIndirectCommand, DrawIndexedIndirectCommand, DrawIndirectCommand,
DrawIndirectCommand, ResourceInCommand, SubpassContents, RecordingCommandBuffer, ResourceInCommand, SubpassContents,
}, },
descriptor_set::{ descriptor_set::{
layout::DescriptorType, DescriptorBindingResources, DescriptorBufferInfo, layout::DescriptorType, DescriptorBindingResources, DescriptorBufferInfo,
@ -44,7 +44,7 @@ macro_rules! vuids {
/// # Commands to execute a bound pipeline. /// # Commands to execute a bound pipeline.
/// ///
/// Dispatch commands require a compute queue, draw commands require a graphics queue. /// Dispatch commands require a compute queue, draw commands require a graphics queue.
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
/// Perform a single compute operation using a compute pipeline. /// Perform a single compute operation using a compute pipeline.
/// ///
/// A compute pipeline must have been bound using /// A compute pipeline must have been bound using
@ -102,7 +102,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"dispatch", "dispatch",
used_resources, used_resources,
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.dispatch_unchecked(group_counts); out.dispatch_unchecked(group_counts);
}, },
); );
@ -178,7 +178,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"dispatch", "dispatch",
used_resources, used_resources,
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.dispatch_indirect_unchecked(&indirect_buffer); out.dispatch_indirect_unchecked(&indirect_buffer);
}, },
); );
@ -361,7 +361,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"draw", "draw",
used_resources, used_resources,
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.draw_unchecked(vertex_count, instance_count, first_vertex, first_instance); out.draw_unchecked(vertex_count, instance_count, first_vertex, first_instance);
}, },
); );
@ -463,7 +463,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"draw_indirect", "draw_indirect",
used_resources, used_resources,
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.draw_indirect_unchecked(&indirect_buffer, draw_count, stride); out.draw_indirect_unchecked(&indirect_buffer, draw_count, stride);
}, },
); );
@ -684,7 +684,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"draw_indexed", "draw_indexed",
used_resources, used_resources,
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.draw_indexed_unchecked( out.draw_indexed_unchecked(
index_count, index_count,
instance_count, instance_count,
@ -806,7 +806,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"draw_indexed_indirect", "draw_indexed_indirect",
used_resources, used_resources,
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.draw_indexed_indirect_unchecked(&indirect_buffer, draw_count, stride); out.draw_indexed_indirect_unchecked(&indirect_buffer, draw_count, stride);
}, },
); );
@ -2766,7 +2766,7 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
} }
impl UnsafeCommandBufferBuilder { impl RawRecordingCommandBuffer {
#[inline] #[inline]
pub unsafe fn dispatch( pub unsafe fn dispatch(
&mut self, &mut self,

View File

@ -2,8 +2,8 @@ use crate::{
buffer::{BufferUsage, Subbuffer}, buffer::{BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
auto::{QueryState, Resource}, auto::{QueryState, Resource},
sys::UnsafeCommandBufferBuilder, sys::RawRecordingCommandBuffer,
AutoCommandBufferBuilder, ResourceInCommand, RecordingCommandBuffer, ResourceInCommand,
}, },
device::{DeviceOwned, QueueFlags}, device::{DeviceOwned, QueueFlags},
query::{QueryControlFlags, QueryPool, QueryResultElement, QueryResultFlags, QueryType}, query::{QueryControlFlags, QueryPool, QueryResultElement, QueryResultFlags, QueryType},
@ -13,7 +13,7 @@ use crate::{
use std::{ops::Range, sync::Arc}; use std::{ops::Range, sync::Arc};
/// # Commands related to queries. /// # Commands related to queries.
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
/// Begins a query. /// Begins a query.
/// ///
/// The query will be active until [`end_query`](Self::end_query) is called for the same query. /// The query will be active until [`end_query`](Self::end_query) is called for the same query.
@ -97,7 +97,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"begin_query", "begin_query",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.begin_query_unchecked(&query_pool, query, flags); out.begin_query_unchecked(&query_pool, query, flags);
}, },
); );
@ -169,7 +169,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"end_query", "end_query",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.end_query_unchecked(&query_pool, query); out.end_query_unchecked(&query_pool, query);
}, },
); );
@ -236,7 +236,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"write_timestamp", "write_timestamp",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.write_timestamp_unchecked(&query_pool, query, stage); out.write_timestamp_unchecked(&query_pool, query, stage);
}, },
); );
@ -319,7 +319,7 @@ impl<L> AutoCommandBufferBuilder<L> {
)] )]
.into_iter() .into_iter()
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.copy_query_pool_results_unchecked( out.copy_query_pool_results_unchecked(
&query_pool, &query_pool,
queries.clone(), queries.clone(),
@ -391,7 +391,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"reset_query_pool", "reset_query_pool",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.reset_query_pool_unchecked(&query_pool, queries.clone()); out.reset_query_pool_unchecked(&query_pool, queries.clone());
}, },
); );
@ -400,7 +400,7 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
} }
impl UnsafeCommandBufferBuilder { impl RawRecordingCommandBuffer {
#[inline] #[inline]
pub unsafe fn begin_query( pub unsafe fn begin_query(
&mut self, &mut self,

View File

@ -4,8 +4,8 @@ use crate::{
BeginRenderPassState, BeginRenderingState, RenderPassState, RenderPassStateAttachments, BeginRenderPassState, BeginRenderingState, RenderPassState, RenderPassStateAttachments,
RenderPassStateType, Resource, RenderPassStateType, Resource,
}, },
sys::UnsafeCommandBufferBuilder, sys::RawRecordingCommandBuffer,
AutoCommandBufferBuilder, CommandBufferLevel, ResourceInCommand, SubpassContents, CommandBufferLevel, RecordingCommandBuffer, ResourceInCommand, SubpassContents,
}, },
device::{Device, DeviceOwned, QueueFlags}, device::{Device, DeviceOwned, QueueFlags},
format::{ClearColorValue, ClearValue, NumericType}, format::{ClearColorValue, ClearValue, NumericType},
@ -24,7 +24,7 @@ use std::{cmp::min, ops::Range, sync::Arc};
/// # Commands for render passes. /// # Commands for render passes.
/// ///
/// These commands require a graphics queue. /// These commands require a graphics queue.
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
/// Begins a render pass using a render pass object and framebuffer. /// Begins a render pass using a render pass object and framebuffer.
/// ///
/// You must call this or `begin_rendering` before you can record draw commands. /// You must call this or `begin_rendering` before you can record draw commands.
@ -136,7 +136,7 @@ impl<L> AutoCommandBufferBuilder<L> {
) )
}) })
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.begin_render_pass_unchecked(&render_pass_begin_info, &subpass_begin_info); out.begin_render_pass_unchecked(&render_pass_begin_info, &subpass_begin_info);
}, },
); );
@ -238,7 +238,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"next_subpass", "next_subpass",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.next_subpass_unchecked(&subpass_end_info, &subpass_begin_info); out.next_subpass_unchecked(&subpass_end_info, &subpass_begin_info);
}, },
); );
@ -319,7 +319,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_render_pass_end( self.add_render_pass_end(
"end_render_pass", "end_render_pass",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.end_render_pass_unchecked(&subpass_end_info); out.end_render_pass_unchecked(&subpass_end_info);
}, },
); );
@ -328,7 +328,7 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
} }
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
/// Begins a render pass without a render pass object or framebuffer. /// Begins a render pass without a render pass object or framebuffer.
/// ///
/// You must call this or `begin_render_pass` before you can record draw commands. /// You must call this or `begin_render_pass` before you can record draw commands.
@ -557,7 +557,7 @@ impl<L> AutoCommandBufferBuilder<L> {
.flatten() .flatten()
})) }))
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.begin_rendering_unchecked(&rendering_info); out.begin_rendering_unchecked(&rendering_info);
}, },
); );
@ -624,7 +624,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_render_pass_end( self.add_render_pass_end(
"end_rendering", "end_rendering",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.end_rendering_unchecked(); out.end_rendering_unchecked();
}, },
); );
@ -875,7 +875,7 @@ impl<L> AutoCommandBufferBuilder<L> {
self.add_command( self.add_command(
"clear_attachments", "clear_attachments",
Default::default(), Default::default(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.clear_attachments_unchecked(&attachments, &rects); out.clear_attachments_unchecked(&attachments, &rects);
}, },
); );
@ -884,7 +884,7 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
} }
impl UnsafeCommandBufferBuilder { impl RawRecordingCommandBuffer {
#[inline] #[inline]
pub unsafe fn begin_render_pass( pub unsafe fn begin_render_pass(
&mut self, &mut self,
@ -3124,7 +3124,7 @@ impl RenderingAttachmentResolveInfo {
/// Clear attachment type, used in [`clear_attachments`] command. /// Clear attachment type, used in [`clear_attachments`] command.
/// ///
/// [`clear_attachments`]: crate::command_buffer::AutoCommandBufferBuilder::clear_attachments /// [`clear_attachments`]: crate::command_buffer::RecordingCommandBuffer::clear_attachments
#[derive(Clone, Copy, Debug)] #[derive(Clone, Copy, Debug)]
pub enum ClearAttachment { pub enum ClearAttachment {
/// Clear the color attachment at the specified index, with the specified clear value. /// Clear the color attachment at the specified index, with the specified clear value.
@ -3210,7 +3210,7 @@ impl From<ClearAttachment> for ash::vk::ClearAttachment {
/// Specifies the clear region for the [`clear_attachments`] command. /// Specifies the clear region for the [`clear_attachments`] command.
/// ///
/// [`clear_attachments`]: crate::command_buffer::AutoCommandBufferBuilder::clear_attachments /// [`clear_attachments`]: crate::command_buffer::RecordingCommandBuffer::clear_attachments
#[derive(Clone, Debug, PartialEq, Eq)] #[derive(Clone, Debug, PartialEq, Eq)]
pub struct ClearRect { pub struct ClearRect {
/// The rectangle offset. /// The rectangle offset.

View File

@ -1,8 +1,8 @@
use crate::{ use crate::{
command_buffer::{ command_buffer::{
auto::{RenderPassStateType, Resource, ResourceUseRef2}, auto::{RenderPassStateType, Resource, ResourceUseRef2},
sys::UnsafeCommandBufferBuilder, sys::RawRecordingCommandBuffer,
AutoCommandBufferBuilder, CommandBufferInheritanceRenderPassType, CommandBufferLevel, CommandBufferInheritanceRenderPassType, CommandBufferLevel, RecordingCommandBuffer,
ResourceInCommand, SecondaryAutoCommandBuffer, SecondaryCommandBufferBufferUsage, ResourceInCommand, SecondaryAutoCommandBuffer, SecondaryCommandBufferBufferUsage,
SecondaryCommandBufferImageUsage, SecondaryCommandBufferResourcesUsage, SubpassContents, SecondaryCommandBufferImageUsage, SecondaryCommandBufferResourcesUsage, SubpassContents,
}, },
@ -17,7 +17,7 @@ use std::{cmp::min, iter, ops::Deref, sync::Arc};
/// ///
/// These commands can be called on any queue that can execute the commands recorded in the /// These commands can be called on any queue that can execute the commands recorded in the
/// secondary command buffer. /// secondary command buffer.
impl<L> AutoCommandBufferBuilder<L> { impl<L> RecordingCommandBuffer<L> {
/// Executes a secondary command buffer. /// Executes a secondary command buffer.
/// ///
/// If the `flags` that `command_buffer` was created with are more restrictive than those of /// If the `flags` that `command_buffer` was created with are more restrictive than those of
@ -539,7 +539,7 @@ impl<L> AutoCommandBufferBuilder<L> {
})) }))
}) })
.collect(), .collect(),
move |out: &mut UnsafeCommandBufferBuilder| { move |out: &mut RawRecordingCommandBuffer| {
out.execute_commands_locked(&command_buffers); out.execute_commands_locked(&command_buffers);
}, },
); );
@ -548,7 +548,7 @@ impl<L> AutoCommandBufferBuilder<L> {
} }
} }
impl UnsafeCommandBufferBuilder { impl RawRecordingCommandBuffer {
#[inline] #[inline]
pub unsafe fn execute_commands( pub unsafe fn execute_commands(
&mut self, &mut self,

View File

@ -1,5 +1,5 @@
use crate::{ use crate::{
command_buffer::sys::UnsafeCommandBufferBuilder, command_buffer::sys::RawRecordingCommandBuffer,
device::{DeviceOwned, QueueFlags}, device::{DeviceOwned, QueueFlags},
sync::{ sync::{
event::Event, BufferMemoryBarrier, DependencyFlags, DependencyInfo, ImageMemoryBarrier, event::Event, BufferMemoryBarrier, DependencyFlags, DependencyInfo, ImageMemoryBarrier,
@ -10,7 +10,7 @@ use crate::{
use smallvec::SmallVec; use smallvec::SmallVec;
use std::{ptr, sync::Arc}; use std::{ptr, sync::Arc};
impl UnsafeCommandBufferBuilder { impl RawRecordingCommandBuffer {
#[inline] #[inline]
pub unsafe fn pipeline_barrier( pub unsafe fn pipeline_barrier(
&mut self, &mut self,

View File

@ -39,8 +39,8 @@
//! # Recording a command buffer //! # Recording a command buffer
//! //!
//! To record a new command buffer, the most direct way is to create a new //! To record a new command buffer, the most direct way is to create a new
//! [`AutoCommandBufferBuilder`]. You can then call methods on this object to record new commands //! [`RecordingCommandBuffer`]. You can then call methods on this object to record new commands to
//! to the command buffer. When you are done recording, you call [`build`] to finalise the command //! the command buffer. When you are done recording, you call [`end`] to finalise the command
//! buffer and turn it into either a [`PrimaryAutoCommandBuffer`] or a //! buffer and turn it into either a [`PrimaryAutoCommandBuffer`] or a
//! [`SecondaryAutoCommandBuffer`]. //! [`SecondaryAutoCommandBuffer`].
//! //!
@ -52,9 +52,7 @@
//! on the GPU. //! on the GPU.
//! //!
//! ``` //! ```
//! use vulkano::command_buffer::{ //! use vulkano::command_buffer::{CommandBufferUsage, RecordingCommandBuffer, SubpassContents};
//! AutoCommandBufferBuilder, CommandBufferUsage, SubpassContents,
//! };
//! //!
//! # let device: std::sync::Arc<vulkano::device::Device> = return; //! # let device: std::sync::Arc<vulkano::device::Device> = return;
//! # let queue: std::sync::Arc<vulkano::device::Queue> = return; //! # let queue: std::sync::Arc<vulkano::device::Queue> = return;
@ -63,7 +61,7 @@
//! # let graphics_pipeline: std::sync::Arc<vulkano::pipeline::graphics::GraphicsPipeline> = return; //! # let graphics_pipeline: std::sync::Arc<vulkano::pipeline::graphics::GraphicsPipeline> = return;
//! # let command_buffer_allocator: std::sync::Arc<vulkano::command_buffer::allocator::StandardCommandBufferAllocator> = return; //! # let command_buffer_allocator: std::sync::Arc<vulkano::command_buffer::allocator::StandardCommandBufferAllocator> = return;
//! # //! #
//! let cb = AutoCommandBufferBuilder::primary( //! let cb = RecordingCommandBuffer::primary(
//! command_buffer_allocator.clone(), //! command_buffer_allocator.clone(),
//! queue.queue_family_index(), //! queue.queue_family_index(),
//! CommandBufferUsage::MultipleSubmit, //! CommandBufferUsage::MultipleSubmit,
@ -79,7 +77,7 @@
//! .unwrap() //! .unwrap()
//! .end_render_pass(Default::default()) //! .end_render_pass(Default::default())
//! .unwrap() //! .unwrap()
//! .build() //! .end()
//! .unwrap(); //! .unwrap();
//! //!
//! let future = cb.execute(queue.clone()); //! let future = cb.execute(queue.clone());
@ -88,12 +86,11 @@
//! [`StandardCommandBufferAllocator`]: self::allocator::StandardCommandBufferAllocator //! [`StandardCommandBufferAllocator`]: self::allocator::StandardCommandBufferAllocator
//! [`CommandBufferAllocator`]: self::allocator::CommandBufferAllocator //! [`CommandBufferAllocator`]: self::allocator::CommandBufferAllocator
//! [inherit]: CommandBufferInheritanceInfo //! [inherit]: CommandBufferInheritanceInfo
//! [`build`]: AutoCommandBufferBuilder::build //! [`end`]: RecordingCommandBuffer::end
//! [pipeline barriers]: CommandBufferBuilder::pipeline_barrier
//! [`GpuFuture`]: crate::sync::GpuFuture //! [`GpuFuture`]: crate::sync::GpuFuture
pub use self::{ pub use self::{
auto::{AutoCommandBufferBuilder, PrimaryAutoCommandBuffer, SecondaryAutoCommandBuffer}, auto::{PrimaryAutoCommandBuffer, RecordingCommandBuffer, SecondaryAutoCommandBuffer},
commands::{ commands::{
acceleration_structure::*, clear::*, copy::*, debug::*, dynamic_state::*, pipeline::*, acceleration_structure::*, clear::*, copy::*, debug::*, dynamic_state::*, pipeline::*,
query::*, render_pass::*, secondary::*, sync::*, query::*, render_pass::*, secondary::*, sync::*,

View File

@ -14,14 +14,17 @@ use crate::{
use smallvec::SmallVec; use smallvec::SmallVec;
use std::{fmt::Debug, mem::ManuallyDrop, ptr, sync::Arc}; use std::{fmt::Debug, mem::ManuallyDrop, ptr, sync::Arc};
/// Command buffer being built. /// A raw command buffer in the recording state.
/// ///
/// # Safety /// This type corresponds directly to a `VkCommandBuffer` after it has been allocated and started
/// recording. It doesn't keep track of synchronization or resource lifetimes. As such, all
/// recorded commands are unsafe and it is the user's duty to make sure that data races are
/// protected against using manual synchronization and all resources used by the recorded commands
/// outlive the command buffer.
/// ///
/// - All submitted commands must be valid and follow the requirements of the Vulkan specification. /// Note that command buffers in the recording state don't implement the `Send` and `Sync` traits.
/// - Any resources used by submitted commands must outlive the returned builder and its created /// Once a command buffer has finished recording, however, it *does* implement `Send` and `Sync`.
/// command buffer. They must be protected against data races through manual synchronization. pub struct RawRecordingCommandBuffer {
pub struct UnsafeCommandBufferBuilder {
allocation: ManuallyDrop<CommandBufferAlloc>, allocation: ManuallyDrop<CommandBufferAlloc>,
allocator: Arc<dyn CommandBufferAllocator>, allocator: Arc<dyn CommandBufferAllocator>,
queue_family_index: u32, queue_family_index: u32,
@ -30,8 +33,8 @@ pub struct UnsafeCommandBufferBuilder {
pub(super) usage: CommandBufferUsage, pub(super) usage: CommandBufferUsage,
} }
impl UnsafeCommandBufferBuilder { impl RawRecordingCommandBuffer {
/// Creates a new builder, for recording commands. /// Allocates and begins recording a new command buffer.
/// ///
/// # Safety /// # Safety
/// ///
@ -155,7 +158,7 @@ impl UnsafeCommandBufferBuilder {
.map_err(VulkanError::from)?; .map_err(VulkanError::from)?;
} }
Ok(UnsafeCommandBufferBuilder { Ok(RawRecordingCommandBuffer {
allocation: ManuallyDrop::new(allocation), allocation: ManuallyDrop::new(allocation),
allocator, allocator,
inheritance_info, inheritance_info,
@ -164,9 +167,9 @@ impl UnsafeCommandBufferBuilder {
}) })
} }
/// Turns the builder into an actual command buffer. /// Ends the recording, returning a command buffer which can be submitted.
#[inline] #[inline]
pub fn build(self) -> Result<UnsafeCommandBuffer, VulkanError> { pub fn end(self) -> Result<RawCommandBuffer, VulkanError> {
unsafe { unsafe {
let fns = self.device().fns(); let fns = self.device().fns();
(fns.v1_0.end_command_buffer)(self.handle()) (fns.v1_0.end_command_buffer)(self.handle())
@ -174,7 +177,7 @@ impl UnsafeCommandBufferBuilder {
.map_err(VulkanError::from)?; .map_err(VulkanError::from)?;
} }
Ok(UnsafeCommandBuffer { inner: self }) Ok(RawCommandBuffer { inner: self })
} }
/// Returns the queue family index that this command buffer was created for. /// Returns the queue family index that this command buffer was created for.
@ -206,7 +209,7 @@ impl UnsafeCommandBufferBuilder {
} }
} }
impl Drop for UnsafeCommandBufferBuilder { impl Drop for RawRecordingCommandBuffer {
#[inline] #[inline]
fn drop(&mut self) { fn drop(&mut self) {
let allocation = unsafe { ManuallyDrop::take(&mut self.allocation) }; let allocation = unsafe { ManuallyDrop::take(&mut self.allocation) };
@ -214,7 +217,7 @@ impl Drop for UnsafeCommandBufferBuilder {
} }
} }
unsafe impl VulkanObject for UnsafeCommandBufferBuilder { unsafe impl VulkanObject for RawRecordingCommandBuffer {
type Handle = ash::vk::CommandBuffer; type Handle = ash::vk::CommandBuffer;
#[inline] #[inline]
@ -223,16 +226,16 @@ unsafe impl VulkanObject for UnsafeCommandBufferBuilder {
} }
} }
unsafe impl DeviceOwned for UnsafeCommandBufferBuilder { unsafe impl DeviceOwned for RawRecordingCommandBuffer {
#[inline] #[inline]
fn device(&self) -> &Arc<Device> { fn device(&self) -> &Arc<Device> {
self.allocation.inner.device() self.allocation.inner.device()
} }
} }
impl Debug for UnsafeCommandBufferBuilder { impl Debug for RawRecordingCommandBuffer {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("UnsafeCommandBufferBuilder") f.debug_struct("RawRecordingCommandBuffer")
.field("handle", &self.level()) .field("handle", &self.level())
.field("level", &self.level()) .field("level", &self.level())
.field("usage", &self.usage) .field("usage", &self.usage)
@ -290,27 +293,22 @@ impl CommandBufferBeginInfo {
} }
} }
/// Command buffer that has been built. /// A raw command buffer that has finished recording.
///
/// # Safety
///
/// The command buffer must not outlive the command pool that it was created from,
/// nor the resources used by the recorded commands.
#[derive(Debug)] #[derive(Debug)]
pub struct UnsafeCommandBuffer { pub struct RawCommandBuffer {
inner: UnsafeCommandBufferBuilder, inner: RawRecordingCommandBuffer,
} }
// `UnsafeCommandBufferBuilder` is `!Send + !Sync` so that the implementation of // `RawRecordingCommandBuffer` is `!Send + !Sync` so that the implementation of
// `CommandBufferAllocator::allocate` can assume that a command buffer in the recording state // `CommandBufferAllocator::allocate` can assume that a command buffer in the recording state
// doesn't leave the thread it was allocated on. However, as the safety contract states, // doesn't leave the thread it was allocated on. However, as the safety contract states,
// `CommandBufferAllocator::deallocate` must acccount for the possibility that a command buffer is // `CommandBufferAllocator::deallocate` must acccount for the possibility that a command buffer is
// moved between threads after the recording is finished, and thus deallocated from another thread. // moved between threads after the recording is finished, and thus deallocated from another thread.
// That's why this is sound. // That's why this is sound.
unsafe impl Send for UnsafeCommandBuffer {} unsafe impl Send for RawCommandBuffer {}
unsafe impl Sync for UnsafeCommandBuffer {} unsafe impl Sync for RawCommandBuffer {}
impl UnsafeCommandBuffer { impl RawCommandBuffer {
/// Returns the queue family index that this command buffer was created for. /// Returns the queue family index that this command buffer was created for.
#[inline] #[inline]
pub fn queue_family_index(&self) -> u32 { pub fn queue_family_index(&self) -> u32 {
@ -336,7 +334,7 @@ impl UnsafeCommandBuffer {
} }
} }
unsafe impl VulkanObject for UnsafeCommandBuffer { unsafe impl VulkanObject for RawCommandBuffer {
type Handle = ash::vk::CommandBuffer; type Handle = ash::vk::CommandBuffer;
#[inline] #[inline]
@ -345,7 +343,7 @@ unsafe impl VulkanObject for UnsafeCommandBuffer {
} }
} }
unsafe impl DeviceOwned for UnsafeCommandBuffer { unsafe impl DeviceOwned for RawCommandBuffer {
#[inline] #[inline]
fn device(&self) -> &Arc<Device> { fn device(&self) -> &Arc<Device> {
self.inner.allocation.inner.device() self.inner.allocation.inner.device()

View File

@ -445,7 +445,7 @@ mod tests {
use crate::{ use crate::{
buffer::{Buffer, BufferCreateInfo, BufferUsage}, buffer::{Buffer, BufferCreateInfo, BufferUsage},
command_buffer::{ command_buffer::{
allocator::StandardCommandBufferAllocator, AutoCommandBufferBuilder, CommandBufferUsage, allocator::StandardCommandBufferAllocator, CommandBufferUsage, RecordingCommandBuffer,
}, },
descriptor_set::{ descriptor_set::{
allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet, allocator::StandardDescriptorSetAllocator, DescriptorSet, WriteDescriptorSet,
@ -556,7 +556,7 @@ mod tests {
device.clone(), device.clone(),
Default::default(), Default::default(),
)); ));
let mut cbb = AutoCommandBufferBuilder::primary( let mut cbb = RecordingCommandBuffer::primary(
cb_allocator, cb_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -573,7 +573,7 @@ mod tests {
.unwrap() .unwrap()
.dispatch([1, 1, 1]) .dispatch([1, 1, 1])
.unwrap(); .unwrap();
let cb = cbb.build().unwrap(); let cb = cbb.end().unwrap();
let future = now(device) let future = now(device)
.then_execute(queue, cb) .then_execute(queue, cb)
@ -703,7 +703,7 @@ mod tests {
device.clone(), device.clone(),
Default::default(), Default::default(),
)); ));
let mut cbb = AutoCommandBufferBuilder::primary( let mut cbb = RecordingCommandBuffer::primary(
cb_allocator, cb_allocator,
queue.queue_family_index(), queue.queue_family_index(),
CommandBufferUsage::OneTimeSubmit, CommandBufferUsage::OneTimeSubmit,
@ -720,7 +720,7 @@ mod tests {
.unwrap() .unwrap()
.dispatch([128, 1, 1]) .dispatch([128, 1, 1])
.unwrap(); .unwrap();
let cb = cbb.build().unwrap(); let cb = cbb.end().unwrap();
let future = now(device) let future = now(device)
.then_execute(queue, cb) .then_execute(queue, cb)

View File

@ -76,9 +76,7 @@
//! //!
//! An input binding is a definition of a Vulkan buffer that contains the actual data from which //! An input binding is a definition of a Vulkan buffer that contains the actual data from which
//! each input attribute is to be read. The buffer itself is referred to as a "vertex buffer", and //! each input attribute is to be read. The buffer itself is referred to as a "vertex buffer", and
//! is set during drawing with the //! is set during drawing with the [`bind_vertex_buffers`] command.
//! [`bind_vertex_buffers`](crate::command_buffer::AutoCommandBufferBuilder::bind_vertex_buffers)
//! command.
//! //!
//! The data in a vertex buffer is typically arranged into an array, where each array element //! The data in a vertex buffer is typically arranged into an array, where each array element
//! contains the data for a single vertex shader invocation. When deciding which element read from //! contains the data for a single vertex shader invocation. When deciding which element read from
@ -88,6 +86,8 @@
//! it advances to the next element for each new instance number. Different bindings can have //! it advances to the next element for each new instance number. Different bindings can have
//! different input rates, and it's also possible to have multiple bindings with the same input //! different input rates, and it's also possible to have multiple bindings with the same input
//! rate. //! rate.
//!
//! [`bind_vertex_buffers`]: crate::command_buffer::RecordingCommandBuffer::bind_vertex_buffers
#[allow(deprecated)] #[allow(deprecated)]
pub use self::{ pub use self::{

View File

@ -45,14 +45,15 @@
//! have compatible definitions, including the push constants, then descriptor sets above *N* //! have compatible definitions, including the push constants, then descriptor sets above *N*
//! remain valid. //! remain valid.
//! //!
//! [`AutoCommandBufferBuilder`](crate::command_buffer::auto::AutoCommandBufferBuilder) keeps //! [`RecordingCommandBuffer`] keeps track of this state and will automatically remove descriptor
//! track of this state and will automatically remove descriptor sets that have been invalidated //! sets that have been invalidated by incompatible layouts in subsequent binding commands.
//! by incompatible layouts in subsequent binding commands.
//! //!
//! # Creating pipeline layouts //! # Creating pipeline layouts
//! //!
//! A pipeline layout is a Vulkan object type, represented in Vulkano with the `PipelineLayout` //! A pipeline layout is a Vulkan object type, represented in Vulkano with the `PipelineLayout`
//! type. Each pipeline that you create holds a pipeline layout object. //! type. Each pipeline that you create holds a pipeline layout object.
//!
//! [`RecordingCommandBuffer`]: crate::command_buffer::auto::RecordingCommandBuffer
use super::PipelineShaderStageCreateInfo; use super::PipelineShaderStageCreateInfo;
use crate::{ use crate::{

View File

@ -311,42 +311,42 @@ vulkan_enum! {
/// [`ViewportState::viewports`](crate::pipeline::graphics::viewport::ViewportState::viewports). /// [`ViewportState::viewports`](crate::pipeline::graphics::viewport::ViewportState::viewports).
/// ///
/// Set with /// Set with
/// [`set_viewport`](crate::command_buffer::AutoCommandBufferBuilder::set_viewport). /// [`set_viewport`](crate::command_buffer::RecordingCommandBuffer::set_viewport).
Viewport = VIEWPORT, Viewport = VIEWPORT,
/// The elements, but not the count, of /// The elements, but not the count, of
/// [`ViewportState::scissors`](crate::pipeline::graphics::viewport::ViewportState::scissors). /// [`ViewportState::scissors`](crate::pipeline::graphics::viewport::ViewportState::scissors).
/// ///
/// Set with /// Set with
/// [`set_scissor`](crate::command_buffer::AutoCommandBufferBuilder::set_scissor). /// [`set_scissor`](crate::command_buffer::RecordingCommandBuffer::set_scissor).
Scissor = SCISSOR, Scissor = SCISSOR,
/// The value of /// The value of
/// [`RasterizationState::line_width`](crate::pipeline::graphics::rasterization::RasterizationState::line_width). /// [`RasterizationState::line_width`](crate::pipeline::graphics::rasterization::RasterizationState::line_width).
/// ///
/// Set with /// Set with
/// [`set_line_width`](crate::command_buffer::AutoCommandBufferBuilder::set_line_width). /// [`set_line_width`](crate::command_buffer::RecordingCommandBuffer::set_line_width).
LineWidth = LINE_WIDTH, LineWidth = LINE_WIDTH,
/// The value of /// The value of
/// [`RasterizationState::depth_bias`](crate::pipeline::graphics::rasterization::RasterizationState::depth_bias). /// [`RasterizationState::depth_bias`](crate::pipeline::graphics::rasterization::RasterizationState::depth_bias).
/// ///
/// Set with /// Set with
/// [`set_depth_bias`](crate::command_buffer::AutoCommandBufferBuilder::set_depth_bias). /// [`set_depth_bias`](crate::command_buffer::RecordingCommandBuffer::set_depth_bias).
DepthBias = DEPTH_BIAS, DepthBias = DEPTH_BIAS,
/// The value of /// The value of
/// [`ColorBlendState::blend_constants`](crate::pipeline::graphics::color_blend::ColorBlendState::blend_constants). /// [`ColorBlendState::blend_constants`](crate::pipeline::graphics::color_blend::ColorBlendState::blend_constants).
/// ///
/// Set with /// Set with
/// [`set_blend_constants`](crate::command_buffer::AutoCommandBufferBuilder::set_blend_constants). /// [`set_blend_constants`](crate::command_buffer::RecordingCommandBuffer::set_blend_constants).
BlendConstants = BLEND_CONSTANTS, BlendConstants = BLEND_CONSTANTS,
/// The value, but not the `Option` variant, of /// The value, but not the `Option` variant, of
/// [`DepthStencilState::depth_bounds`](crate::pipeline::graphics::depth_stencil::DepthStencilState::depth_bounds). /// [`DepthStencilState::depth_bounds`](crate::pipeline::graphics::depth_stencil::DepthStencilState::depth_bounds).
/// ///
/// Set with /// Set with
/// [`set_depth_bounds`](crate::command_buffer::AutoCommandBufferBuilder::set_depth_bounds). /// [`set_depth_bounds`](crate::command_buffer::RecordingCommandBuffer::set_depth_bounds).
DepthBounds = DEPTH_BOUNDS, DepthBounds = DEPTH_BOUNDS,
/// The value of /// The value of
@ -354,7 +354,7 @@ vulkan_enum! {
/// for both the front and back face. /// for both the front and back face.
/// ///
/// Set with /// Set with
/// [`set_stencil_compare_mask`](crate::command_buffer::AutoCommandBufferBuilder::set_stencil_compare_mask). /// [`set_stencil_compare_mask`](crate::command_buffer::RecordingCommandBuffer::set_stencil_compare_mask).
StencilCompareMask = STENCIL_COMPARE_MASK, StencilCompareMask = STENCIL_COMPARE_MASK,
/// The value of /// The value of
@ -362,7 +362,7 @@ vulkan_enum! {
/// for both the front and back face. /// for both the front and back face.
/// ///
/// Set with /// Set with
/// [`set_stencil_write_mask`](crate::command_buffer::AutoCommandBufferBuilder::set_stencil_write_mask). /// [`set_stencil_write_mask`](crate::command_buffer::RecordingCommandBuffer::set_stencil_write_mask).
StencilWriteMask = STENCIL_WRITE_MASK, StencilWriteMask = STENCIL_WRITE_MASK,
/// The value of /// The value of
@ -370,14 +370,14 @@ vulkan_enum! {
/// for both the front and back face. /// for both the front and back face.
/// ///
/// Set with /// Set with
/// [`set_stencil_reference`](crate::command_buffer::AutoCommandBufferBuilder::set_stencil_reference). /// [`set_stencil_reference`](crate::command_buffer::RecordingCommandBuffer::set_stencil_reference).
StencilReference = STENCIL_REFERENCE, StencilReference = STENCIL_REFERENCE,
/// The value of /// The value of
/// [`RasterizationState::cull_mode`](crate::pipeline::graphics::rasterization::RasterizationState::cull_mode). /// [`RasterizationState::cull_mode`](crate::pipeline::graphics::rasterization::RasterizationState::cull_mode).
/// ///
/// Set with /// Set with
/// [`set_cull_mode`](crate::command_buffer::AutoCommandBufferBuilder::set_cull_mode). /// [`set_cull_mode`](crate::command_buffer::RecordingCommandBuffer::set_cull_mode).
CullMode = CULL_MODE CullMode = CULL_MODE
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -388,7 +388,7 @@ vulkan_enum! {
/// [`RasterizationState::front_face`](crate::pipeline::graphics::rasterization::RasterizationState::front_face). /// [`RasterizationState::front_face`](crate::pipeline::graphics::rasterization::RasterizationState::front_face).
/// ///
/// Set with /// Set with
/// [`set_front_face`](crate::command_buffer::AutoCommandBufferBuilder::set_front_face). /// [`set_front_face`](crate::command_buffer::RecordingCommandBuffer::set_front_face).
FrontFace = FRONT_FACE FrontFace = FRONT_FACE
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -399,7 +399,7 @@ vulkan_enum! {
/// [`InputAssemblyState::topology`](crate::pipeline::graphics::input_assembly::InputAssemblyState::topology). /// [`InputAssemblyState::topology`](crate::pipeline::graphics::input_assembly::InputAssemblyState::topology).
/// ///
/// Set with /// Set with
/// [`set_primitive_topology`](crate::command_buffer::AutoCommandBufferBuilder::set_primitive_topology). /// [`set_primitive_topology`](crate::command_buffer::RecordingCommandBuffer::set_primitive_topology).
PrimitiveTopology = PRIMITIVE_TOPOLOGY PrimitiveTopology = PRIMITIVE_TOPOLOGY
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -410,7 +410,7 @@ vulkan_enum! {
/// [`ViewportState::viewports`](crate::pipeline::graphics::viewport::ViewportState::viewports). /// [`ViewportState::viewports`](crate::pipeline::graphics::viewport::ViewportState::viewports).
/// ///
/// Set with /// Set with
/// [`set_viewport_with_count`](crate::command_buffer::AutoCommandBufferBuilder::set_viewport_with_count). /// [`set_viewport_with_count`](crate::command_buffer::RecordingCommandBuffer::set_viewport_with_count).
ViewportWithCount = VIEWPORT_WITH_COUNT ViewportWithCount = VIEWPORT_WITH_COUNT
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -421,7 +421,7 @@ vulkan_enum! {
/// [`ViewportState::scissors`](crate::pipeline::graphics::viewport::ViewportState::scissors). /// [`ViewportState::scissors`](crate::pipeline::graphics::viewport::ViewportState::scissors).
/// ///
/// Set with /// Set with
/// [`set_scissor_with_count`](crate::command_buffer::AutoCommandBufferBuilder::set_scissor_with_count). /// [`set_scissor_with_count`](crate::command_buffer::RecordingCommandBuffer::set_scissor_with_count).
ScissorWithCount = SCISSOR_WITH_COUNT ScissorWithCount = SCISSOR_WITH_COUNT
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -440,7 +440,7 @@ vulkan_enum! {
/// [`DepthStencilState::depth`](crate::pipeline::graphics::depth_stencil::DepthStencilState::depth). /// [`DepthStencilState::depth`](crate::pipeline::graphics::depth_stencil::DepthStencilState::depth).
/// ///
/// Set with /// Set with
/// [`set_depth_test_enable`](crate::command_buffer::AutoCommandBufferBuilder::set_depth_test_enable). /// [`set_depth_test_enable`](crate::command_buffer::RecordingCommandBuffer::set_depth_test_enable).
DepthTestEnable = DEPTH_TEST_ENABLE DepthTestEnable = DEPTH_TEST_ENABLE
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -451,7 +451,7 @@ vulkan_enum! {
/// [`DepthState::write_enable`](crate::pipeline::graphics::depth_stencil::DepthState::write_enable). /// [`DepthState::write_enable`](crate::pipeline::graphics::depth_stencil::DepthState::write_enable).
/// ///
/// Set with /// Set with
/// [`set_depth_write_enable`](crate::command_buffer::AutoCommandBufferBuilder::set_depth_write_enable). /// [`set_depth_write_enable`](crate::command_buffer::RecordingCommandBuffer::set_depth_write_enable).
DepthWriteEnable = DEPTH_WRITE_ENABLE DepthWriteEnable = DEPTH_WRITE_ENABLE
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -462,7 +462,7 @@ vulkan_enum! {
/// [`DepthState::compare_op`](crate::pipeline::graphics::depth_stencil::DepthState::compare_op). /// [`DepthState::compare_op`](crate::pipeline::graphics::depth_stencil::DepthState::compare_op).
/// ///
/// Set with /// Set with
/// [`set_depth_compare_op`](crate::command_buffer::AutoCommandBufferBuilder::set_depth_compare_op). /// [`set_depth_compare_op`](crate::command_buffer::RecordingCommandBuffer::set_depth_compare_op).
DepthCompareOp = DEPTH_COMPARE_OP DepthCompareOp = DEPTH_COMPARE_OP
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -473,7 +473,7 @@ vulkan_enum! {
/// [`DepthStencilState::depth_bounds`](crate::pipeline::graphics::depth_stencil::DepthStencilState::depth_bounds). /// [`DepthStencilState::depth_bounds`](crate::pipeline::graphics::depth_stencil::DepthStencilState::depth_bounds).
/// ///
/// Set with /// Set with
/// [`set_depth_bounds_test_enable`](crate::command_buffer::AutoCommandBufferBuilder::set_depth_bounds_test_enable). /// [`set_depth_bounds_test_enable`](crate::command_buffer::RecordingCommandBuffer::set_depth_bounds_test_enable).
DepthBoundsTestEnable = DEPTH_BOUNDS_TEST_ENABLE DepthBoundsTestEnable = DEPTH_BOUNDS_TEST_ENABLE
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -484,7 +484,7 @@ vulkan_enum! {
/// [`DepthStencilState::stencil`](crate::pipeline::graphics::depth_stencil::DepthStencilState::stencil). /// [`DepthStencilState::stencil`](crate::pipeline::graphics::depth_stencil::DepthStencilState::stencil).
/// ///
/// Set with /// Set with
/// [`set_stencil_test_enable`](crate::command_buffer::AutoCommandBufferBuilder::set_stencil_test_enable). /// [`set_stencil_test_enable`](crate::command_buffer::RecordingCommandBuffer::set_stencil_test_enable).
StencilTestEnable = STENCIL_TEST_ENABLE StencilTestEnable = STENCIL_TEST_ENABLE
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -496,7 +496,7 @@ vulkan_enum! {
/// for both the front and back face. /// for both the front and back face.
/// ///
/// Set with /// Set with
/// [`set_stencil_op`](crate::command_buffer::AutoCommandBufferBuilder::set_stencil_op). /// [`set_stencil_op`](crate::command_buffer::RecordingCommandBuffer::set_stencil_op).
StencilOp = STENCIL_OP StencilOp = STENCIL_OP
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -507,7 +507,7 @@ vulkan_enum! {
/// [`RasterizationState::rasterizer_discard_enable`](crate::pipeline::graphics::rasterization::RasterizationState::rasterizer_discard_enable). /// [`RasterizationState::rasterizer_discard_enable`](crate::pipeline::graphics::rasterization::RasterizationState::rasterizer_discard_enable).
/// ///
/// Set with /// Set with
/// [`set_rasterizer_discard_enable`](crate::command_buffer::AutoCommandBufferBuilder::set_rasterizer_discard_enable). /// [`set_rasterizer_discard_enable`](crate::command_buffer::RecordingCommandBuffer::set_rasterizer_discard_enable).
RasterizerDiscardEnable = RASTERIZER_DISCARD_ENABLE RasterizerDiscardEnable = RASTERIZER_DISCARD_ENABLE
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -518,7 +518,7 @@ vulkan_enum! {
/// [`RasterizationState::depth_bias`](crate::pipeline::graphics::rasterization::RasterizationState::depth_bias). /// [`RasterizationState::depth_bias`](crate::pipeline::graphics::rasterization::RasterizationState::depth_bias).
/// ///
/// Set with /// Set with
/// [`set_depth_bias_enable`](crate::command_buffer::AutoCommandBufferBuilder::set_depth_bias_enable). /// [`set_depth_bias_enable`](crate::command_buffer::RecordingCommandBuffer::set_depth_bias_enable).
DepthBiasEnable = DEPTH_BIAS_ENABLE DepthBiasEnable = DEPTH_BIAS_ENABLE
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -529,7 +529,7 @@ vulkan_enum! {
/// [`InputAssemblyState::primitive_restart_enable`](crate::pipeline::graphics::input_assembly::InputAssemblyState::primitive_restart_enable). /// [`InputAssemblyState::primitive_restart_enable`](crate::pipeline::graphics::input_assembly::InputAssemblyState::primitive_restart_enable).
/// ///
/// Set with /// Set with
/// [`set_primitive_restart_enable`](crate::command_buffer::AutoCommandBufferBuilder::set_primitive_restart_enable). /// [`set_primitive_restart_enable`](crate::command_buffer::RecordingCommandBuffer::set_primitive_restart_enable).
PrimitiveRestartEnable = PRIMITIVE_RESTART_ENABLE PrimitiveRestartEnable = PRIMITIVE_RESTART_ENABLE
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([APIVersion(V1_3)]), RequiresAllOf([APIVersion(V1_3)]),
@ -547,7 +547,7 @@ vulkan_enum! {
/// [`DiscardRectangleState::rectangles`](crate::pipeline::graphics::discard_rectangle::DiscardRectangleState::rectangles). /// [`DiscardRectangleState::rectangles`](crate::pipeline::graphics::discard_rectangle::DiscardRectangleState::rectangles).
/// ///
/// Set with /// Set with
/// [`set_discard_rectangle`](crate::command_buffer::AutoCommandBufferBuilder::set_discard_rectangle). /// [`set_discard_rectangle`](crate::command_buffer::RecordingCommandBuffer::set_discard_rectangle).
DiscardRectangle = DISCARD_RECTANGLE_EXT DiscardRectangle = DISCARD_RECTANGLE_EXT
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([DeviceExtension(ext_discard_rectangles)]), RequiresAllOf([DeviceExtension(ext_discard_rectangles)]),
@ -599,7 +599,7 @@ vulkan_enum! {
/// [`RasterizationState::line_stipple`](crate::pipeline::graphics::rasterization::RasterizationState::line_stipple). /// [`RasterizationState::line_stipple`](crate::pipeline::graphics::rasterization::RasterizationState::line_stipple).
/// ///
/// Set with /// Set with
/// [`set_line_stipple`](crate::command_buffer::AutoCommandBufferBuilder::set_line_stipple). /// [`set_line_stipple`](crate::command_buffer::RecordingCommandBuffer::set_line_stipple).
LineStipple = LINE_STIPPLE_EXT LineStipple = LINE_STIPPLE_EXT
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([DeviceExtension(ext_line_rasterization)]), RequiresAllOf([DeviceExtension(ext_line_rasterization)]),
@ -609,7 +609,7 @@ vulkan_enum! {
/// [`GraphicsPipelineCreateInfo::vertex_input_state`](crate::pipeline::graphics::GraphicsPipelineCreateInfo::vertex_input_state). /// [`GraphicsPipelineCreateInfo::vertex_input_state`](crate::pipeline::graphics::GraphicsPipelineCreateInfo::vertex_input_state).
/// ///
/// Set with /// Set with
/// [`set_vertex_input`](crate::command_buffer::AutoCommandBufferBuilder::set_vertex_input). /// [`set_vertex_input`](crate::command_buffer::RecordingCommandBuffer::set_vertex_input).
VertexInput = VERTEX_INPUT_EXT VertexInput = VERTEX_INPUT_EXT
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([DeviceExtension(ext_vertex_input_dynamic_state)]), RequiresAllOf([DeviceExtension(ext_vertex_input_dynamic_state)]),
@ -619,7 +619,7 @@ vulkan_enum! {
/// [`TessellationState::patch_control_points`](crate::pipeline::graphics::tessellation::TessellationState::patch_control_points). /// [`TessellationState::patch_control_points`](crate::pipeline::graphics::tessellation::TessellationState::patch_control_points).
/// ///
/// Set with /// Set with
/// [`set_patch_control_points`](crate::command_buffer::AutoCommandBufferBuilder::set_patch_control_points). /// [`set_patch_control_points`](crate::command_buffer::RecordingCommandBuffer::set_patch_control_points).
PatchControlPoints = PATCH_CONTROL_POINTS_EXT PatchControlPoints = PATCH_CONTROL_POINTS_EXT
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([DeviceExtension(ext_extended_dynamic_state2)]), RequiresAllOf([DeviceExtension(ext_extended_dynamic_state2)]),
@ -629,7 +629,7 @@ vulkan_enum! {
/// [`ColorBlendState::logic_op`](crate::pipeline::graphics::color_blend::ColorBlendState::logic_op). /// [`ColorBlendState::logic_op`](crate::pipeline::graphics::color_blend::ColorBlendState::logic_op).
/// ///
/// Set with /// Set with
/// [`set_logic_op`](crate::command_buffer::AutoCommandBufferBuilder::set_logic_op). /// [`set_logic_op`](crate::command_buffer::RecordingCommandBuffer::set_logic_op).
LogicOp = LOGIC_OP_EXT LogicOp = LOGIC_OP_EXT
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([DeviceExtension(ext_extended_dynamic_state2)]), RequiresAllOf([DeviceExtension(ext_extended_dynamic_state2)]),
@ -640,7 +640,7 @@ vulkan_enum! {
/// for every attachment. /// for every attachment.
/// ///
/// Set with /// Set with
/// [`set_color_write_enable`](crate::command_buffer::AutoCommandBufferBuilder::set_color_write_enable). /// [`set_color_write_enable`](crate::command_buffer::RecordingCommandBuffer::set_color_write_enable).
ColorWriteEnable = COLOR_WRITE_ENABLE_EXT ColorWriteEnable = COLOR_WRITE_ENABLE_EXT
RequiresOneOf([ RequiresOneOf([
RequiresAllOf([DeviceExtension(ext_color_write_enable)]), RequiresAllOf([DeviceExtension(ext_color_write_enable)]),

View File

@ -149,7 +149,7 @@ impl QueryPool {
/// ///
/// [`self.ty().result_len()`]: QueryType::result_len /// [`self.ty().result_len()`]: QueryType::result_len
/// [`WITH_AVAILABILITY`]: QueryResultFlags::WITH_AVAILABILITY /// [`WITH_AVAILABILITY`]: QueryResultFlags::WITH_AVAILABILITY
/// [`copy_query_pool_results`]: crate::command_buffer::AutoCommandBufferBuilder::copy_query_pool_results /// [`copy_query_pool_results`]: crate::command_buffer::RecordingCommandBuffer::copy_query_pool_results
#[inline] #[inline]
pub fn get_results<T>( pub fn get_results<T>(
&self, &self,
@ -404,16 +404,16 @@ pub enum QueryType {
/// ///
/// Used with the [`begin_query`] and [`end_query`] commands. /// Used with the [`begin_query`] and [`end_query`] commands.
/// ///
/// [`begin_query`]: crate::command_buffer::AutoCommandBufferBuilder::begin_query /// [`begin_query`]: crate::command_buffer::RecordingCommandBuffer::begin_query
/// [`end_query`]: crate::command_buffer::AutoCommandBufferBuilder::end_query /// [`end_query`]: crate::command_buffer::RecordingCommandBuffer::end_query
Occlusion = ash::vk::QueryType::OCCLUSION.as_raw(), Occlusion = ash::vk::QueryType::OCCLUSION.as_raw(),
/// Tracks statistics on pipeline invocations and their input data. /// Tracks statistics on pipeline invocations and their input data.
/// ///
/// Used with the [`begin_query`] and [`end_query`] commands. /// Used with the [`begin_query`] and [`end_query`] commands.
/// ///
/// [`begin_query`]: crate::command_buffer::AutoCommandBufferBuilder::begin_query /// [`begin_query`]: crate::command_buffer::RecordingCommandBuffer::begin_query
/// [`end_query`]: crate::command_buffer::AutoCommandBufferBuilder::end_query /// [`end_query`]: crate::command_buffer::RecordingCommandBuffer::end_query
PipelineStatistics(QueryPipelineStatisticFlags) = PipelineStatistics(QueryPipelineStatisticFlags) =
ash::vk::QueryType::PIPELINE_STATISTICS.as_raw(), ash::vk::QueryType::PIPELINE_STATISTICS.as_raw(),
@ -421,7 +421,7 @@ pub enum QueryType {
/// ///
/// Used with the [`write_timestamp`] command. /// Used with the [`write_timestamp`] command.
/// ///
/// [`write_timestamp`]: crate::command_buffer::AutoCommandBufferBuilder::write_timestamp /// [`write_timestamp`]: crate::command_buffer::RecordingCommandBuffer::write_timestamp
Timestamp = ash::vk::QueryType::TIMESTAMP.as_raw(), Timestamp = ash::vk::QueryType::TIMESTAMP.as_raw(),
/// Queries the size of data resulting from a /// Queries the size of data resulting from a
@ -430,7 +430,7 @@ pub enum QueryType {
/// Used with the [`write_acceleration_structures_properties`] command. /// Used with the [`write_acceleration_structures_properties`] command.
/// ///
/// [`CopyAccelerationStructureMode::Compact`]: crate::acceleration_structure::CopyAccelerationStructureMode::Compact /// [`CopyAccelerationStructureMode::Compact`]: crate::acceleration_structure::CopyAccelerationStructureMode::Compact
/// [`write_acceleration_structures_properties`]: crate::command_buffer::AutoCommandBufferBuilder::write_acceleration_structures_properties /// [`write_acceleration_structures_properties`]: crate::command_buffer::RecordingCommandBuffer::write_acceleration_structures_properties
AccelerationStructureCompactedSize = AccelerationStructureCompactedSize =
ash::vk::QueryType::ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR.as_raw(), ash::vk::QueryType::ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR.as_raw(),
@ -440,7 +440,7 @@ pub enum QueryType {
/// Used with the [`write_acceleration_structures_properties`] command. /// Used with the [`write_acceleration_structures_properties`] command.
/// ///
/// [`CopyAccelerationStructureMode::Serialize`]: crate::acceleration_structure::CopyAccelerationStructureMode::Serialize /// [`CopyAccelerationStructureMode::Serialize`]: crate::acceleration_structure::CopyAccelerationStructureMode::Serialize
/// [`write_acceleration_structures_properties`]: crate::command_buffer::AutoCommandBufferBuilder::write_acceleration_structures_properties /// [`write_acceleration_structures_properties`]: crate::command_buffer::RecordingCommandBuffer::write_acceleration_structures_properties
AccelerationStructureSerializationSize = AccelerationStructureSerializationSize =
ash::vk::QueryType::ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR.as_raw(), ash::vk::QueryType::ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR.as_raw(),
@ -451,7 +451,7 @@ pub enum QueryType {
/// Used with the [`write_acceleration_structures_properties`] command. /// Used with the [`write_acceleration_structures_properties`] command.
/// ///
/// [`CopyAccelerationStructureMode::Serialize`]: crate::acceleration_structure::CopyAccelerationStructureMode::Serialize /// [`CopyAccelerationStructureMode::Serialize`]: crate::acceleration_structure::CopyAccelerationStructureMode::Serialize
/// [`write_acceleration_structures_properties`]: crate::command_buffer::AutoCommandBufferBuilder::write_acceleration_structures_properties /// [`write_acceleration_structures_properties`]: crate::command_buffer::RecordingCommandBuffer::write_acceleration_structures_properties
AccelerationStructureSerializationBottomLevelPointers = AccelerationStructureSerializationBottomLevelPointers =
ash::vk::QueryType::ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR.as_raw(), ash::vk::QueryType::ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR.as_raw(),
@ -459,7 +459,7 @@ pub enum QueryType {
/// ///
/// Used with the [`write_acceleration_structures_properties`] command. /// Used with the [`write_acceleration_structures_properties`] command.
/// ///
/// [`write_acceleration_structures_properties`]: crate::command_buffer::AutoCommandBufferBuilder::write_acceleration_structures_properties /// [`write_acceleration_structures_properties`]: crate::command_buffer::RecordingCommandBuffer::write_acceleration_structures_properties
AccelerationStructureSize = ash::vk::QueryType::ACCELERATION_STRUCTURE_SIZE_KHR.as_raw(), AccelerationStructureSize = ash::vk::QueryType::ACCELERATION_STRUCTURE_SIZE_KHR.as_raw(),
} }

View File

@ -10,9 +10,9 @@
//! An event can also be signaled from the host, by calling the [`set`] method directly on the //! An event can also be signaled from the host, by calling the [`set`] method directly on the
//! [`Event`]. //! [`Event`].
//! //!
//! [`set_event`]: crate::command_buffer::sys::UnsafeCommandBufferBuilder::set_event //! [`set_event`]: crate::command_buffer::sys::RawRecordingCommandBuffer::set_event
//! [pipeline barrier]: crate::command_buffer::sys::UnsafeCommandBufferBuilder::pipeline_barrier //! [pipeline barrier]: crate::command_buffer::sys::RawRecordingCommandBuffer::pipeline_barrier
//! [`wait_events`]: crate::command_buffer::sys::UnsafeCommandBufferBuilder::wait_events //! [`wait_events`]: crate::command_buffer::sys::RawRecordingCommandBuffer::wait_events
//! [`set`]: Event::set //! [`set`]: Event::set
use crate::{ use crate::{
@ -230,7 +230,7 @@ impl Event {
/// - There must be an execution dependency between `reset` and the execution of any \ /// - There must be an execution dependency between `reset` and the execution of any \
/// [`wait_events`] command that includes this event in its `events` parameter. /// [`wait_events`] command that includes this event in its `events` parameter.
/// ///
/// [`wait_events`]: crate::command_buffer::sys::UnsafeCommandBufferBuilder::wait_events /// [`wait_events`]: crate::command_buffer::sys::RawRecordingCommandBuffer::wait_events
#[inline] #[inline]
pub unsafe fn reset(&mut self) -> Result<(), Validated<VulkanError>> { pub unsafe fn reset(&mut self) -> Result<(), Validated<VulkanError>> {
self.validate_reset()?; self.validate_reset()?;