update to vulkano 0.24

This commit is contained in:
2021-08-01 04:16:17 +02:00
parent 02ba2bb95a
commit 0a41daf4eb
9 changed files with 118 additions and 98 deletions

View File

@@ -3,9 +3,10 @@ use std::sync::Arc;
use vulkano::command_buffer::DynamicState;
use vulkano::device::Device;
use vulkano::format::Format;
use vulkano::framebuffer::{Framebuffer, FramebufferAbstract, RenderPassAbstract};
use vulkano::image::{AttachmentImage, ImageUsage, SwapchainImage};
use vulkano::image::view::ImageView;
use vulkano::image::{AttachmentImage, ImageUsage, SampleCount, SwapchainImage};
use vulkano::pipeline::viewport::Viewport;
use vulkano::render_pass::{Framebuffer, FramebufferAbstract, RenderPass};
use winit::window::Window;
use vulkano::swapchain::Swapchain;
@@ -13,8 +14,8 @@ use vulkano::swapchain::Swapchain;
pub fn create_framebuffers(device: Arc<Device>,
swapchain: &Arc<Swapchain<Window>>,
images: &[Arc<SwapchainImage<Window>>],
msaa_sample_count: u32,
render_pass: Arc<dyn RenderPassAbstract + Send + Sync>,
msaa_samples: Option<SampleCount>,
render_pass: Arc<RenderPass>,
dynamic_state: &mut DynamicState)
-> Vec<Arc<dyn FramebufferAbstract + Send + Sync>> {
@@ -28,13 +29,13 @@ pub fn create_framebuffers(device: Arc<Device>,
};
dynamic_state.viewports = Some(vec!(viewport));
let depth_image = if msaa_sample_count > 0 {
let depth_image = if let Some(msaa_sample_count) = msaa_samples {
AttachmentImage::multisampled_with_usage(device.clone(), dim_array, msaa_sample_count, Format::D16Unorm, ImageUsage { depth_stencil_attachment: true, ..ImageUsage::none() }).unwrap()
} else {
AttachmentImage::with_usage(device.clone(), dim_array, Format::D16Unorm, ImageUsage { depth_stencil_attachment: true, ..ImageUsage::none() }).unwrap()
};
let msaa_buffers = if msaa_sample_count > 0 {
let msaa_buffers = if let Some(msaa_sample_count) = msaa_samples {
Some(create_msaa_buffers(device.clone(), dim_array, swapchain, msaa_sample_count))
} else {
None
@@ -44,18 +45,22 @@ pub fn create_framebuffers(device: Arc<Device>,
for i in 0..images.len() {
let image_buffer = &images[i];
let image_view = ImageView::new(image_buffer.clone()).unwrap();
let depth_view = ImageView::new(depth_image.clone()).unwrap();
if let Some(msaa_buffers_exist) = &msaa_buffers {
let msaa_view = ImageView::new((&msaa_buffers_exist[i]).clone()).unwrap();
framebuffers.push(Arc::new(Framebuffer::start(render_pass.clone())
.add(image_buffer.clone()).unwrap()
.add((&msaa_buffers_exist[i]).clone()).unwrap()
.add(depth_image.clone()).unwrap()
.add(image_view).unwrap()
.add(msaa_view).unwrap()
.add(depth_view).unwrap()
.build().unwrap()
) as Arc<dyn FramebufferAbstract + Send + Sync>);
} else {
framebuffers.push(Arc::new(Framebuffer::start(render_pass.clone())
.add(image_buffer.clone()).unwrap()
.add(depth_image.clone()).unwrap()
.add(image_view).unwrap()
.add(depth_view).unwrap()
.build().unwrap()
) as Arc<dyn FramebufferAbstract + Send + Sync>);
}
@@ -64,7 +69,7 @@ pub fn create_framebuffers(device: Arc<Device>,
framebuffers
}
fn create_msaa_buffers(device: Arc<Device>, dimensions: [u32; 2], swapchain: &Arc<Swapchain<Window>>, sample_count: u32) -> Vec<Arc<AttachmentImage>> {
fn create_msaa_buffers(device: Arc<Device>, dimensions: [u32; 2], swapchain: &Arc<Swapchain<Window>>, sample_count: SampleCount) -> Vec<Arc<AttachmentImage>> {
let mut msaa_attachments = vec![];
for _ in 0..swapchain.num_images() {
msaa_attachments.push(AttachmentImage::transient_multisampled(device.clone(), dimensions, sample_count, swapchain.format()).unwrap());