vk: initialize scaled framebuffers to SHADER_READ_ONLY_OPTIMAL
This commit is contained in:
parent
d9d75d760c
commit
ae2fc6b745
|
@ -7,7 +7,7 @@ use crate::options::{FilterChainOptionsVulkan, FrameOptionsVulkan};
|
||||||
use crate::queue_selection::get_graphics_queue;
|
use crate::queue_selection::get_graphics_queue;
|
||||||
use crate::render_target::{RenderTarget, DEFAULT_MVP};
|
use crate::render_target::{RenderTarget, DEFAULT_MVP};
|
||||||
use crate::samplers::SamplerSet;
|
use crate::samplers::SamplerSet;
|
||||||
use crate::texture::{InputImage, OwnedImage, VulkanImage};
|
use crate::texture::{InputImage, OwnedImage, OwnedImageLayout, VulkanImage};
|
||||||
use crate::ubo_ring::VkUboRing;
|
use crate::ubo_ring::VkUboRing;
|
||||||
use crate::vulkan_state::VulkanGraphicsPipeline;
|
use crate::vulkan_state::VulkanGraphicsPipeline;
|
||||||
use crate::{error, util};
|
use crate::{error, util};
|
||||||
|
@ -673,6 +673,12 @@ impl FilterChainVulkan {
|
||||||
.map(|(_, p)| p.config.mipmap_input)
|
.map(|(_, p)| p.config.mipmap_input)
|
||||||
.unwrap_or(false);
|
.unwrap_or(false);
|
||||||
|
|
||||||
|
// needs a barrier to SHADER_READ_ONLY_OPTIMAL otherwise any non-filled in output framebuffers
|
||||||
|
// (like the final one which is just held there and not ever written to, but needs to be
|
||||||
|
// there for indexing) will always stay in UNDEFINED.
|
||||||
|
//
|
||||||
|
// since scaling is hopefully a rare occurrence (since it's tested for if the output size
|
||||||
|
// requires changing) it should be ok.
|
||||||
self.output_framebuffers[index].scale(
|
self.output_framebuffers[index].scale(
|
||||||
pass.config.scaling.clone(),
|
pass.config.scaling.clone(),
|
||||||
pass.get_format(),
|
pass.get_format(),
|
||||||
|
@ -680,7 +686,13 @@ impl FilterChainVulkan {
|
||||||
&original,
|
&original,
|
||||||
source,
|
source,
|
||||||
should_mipmap,
|
should_mipmap,
|
||||||
None,
|
Some(OwnedImageLayout {
|
||||||
|
dst_layout: vk::ImageLayout::SHADER_READ_ONLY_OPTIMAL,
|
||||||
|
dst_access: vk::AccessFlags::SHADER_READ,
|
||||||
|
src_stage: vk::PipelineStageFlags::TOP_OF_PIPE,
|
||||||
|
dst_stage: vk::PipelineStageFlags::FRAGMENT_SHADER,
|
||||||
|
cmd,
|
||||||
|
}),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
self.feedback_framebuffers[index].scale(
|
self.feedback_framebuffers[index].scale(
|
||||||
|
@ -690,7 +702,13 @@ impl FilterChainVulkan {
|
||||||
&original,
|
&original,
|
||||||
source,
|
source,
|
||||||
should_mipmap,
|
should_mipmap,
|
||||||
None,
|
Some(OwnedImageLayout {
|
||||||
|
dst_layout: vk::ImageLayout::SHADER_READ_ONLY_OPTIMAL,
|
||||||
|
dst_access: vk::AccessFlags::SHADER_READ,
|
||||||
|
src_stage: vk::PipelineStageFlags::TOP_OF_PIPE,
|
||||||
|
dst_stage: vk::PipelineStageFlags::FRAGMENT_SHADER,
|
||||||
|
cmd,
|
||||||
|
}),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
// refresh inputs
|
// refresh inputs
|
||||||
|
|
Loading…
Reference in a new issue