use ash::vk;
use crate::vulkan::context::VkContext;
impl VkContext {
pub(in crate::vulkan) fn begin_fullscreen_pass(
&self,
cmd: vk::CommandBuffer,
render_pass: vk::RenderPass,
framebuffer: vk::Framebuffer,
) {
self.begin_fullscreen_pass_sized(cmd, render_pass, framebuffer, self.render_extent);
}
pub(in crate::vulkan) fn begin_fullscreen_pass_sized(
&self,
cmd: vk::CommandBuffer,
render_pass: vk::RenderPass,
framebuffer: vk::Framebuffer,
extent: vk::Extent2D,
) {
let rp_begin = vk::RenderPassBeginInfo::default()
.render_pass(render_pass)
.framebuffer(framebuffer)
.render_area(vk::Rect2D::default().extent(extent));
let vp = vk::Viewport {
x: 0.0,
y: 0.0,
width: extent.width as f32,
height: extent.height as f32,
min_depth: 0.0,
max_depth: 1.0,
};
let scissor = vk::Rect2D::default().extent(extent);
unsafe {
self.device
.cmd_begin_render_pass(cmd, &rp_begin, vk::SubpassContents::INLINE);
self.device
.cmd_set_viewport(cmd, 0, std::slice::from_ref(&vp));
self.device
.cmd_set_scissor(cmd, 0, std::slice::from_ref(&scissor));
}
}
pub(in crate::vulkan) fn end_fullscreen_pass(&self, cmd: vk::CommandBuffer) {
unsafe { self.device.cmd_end_render_pass(cmd) };
}
}