rt(d3d9): draw final pass to output targets

This commit is contained in:
chyyran 2024-09-11 18:58:06 -04:00 committed by Ronny Chan
parent 894d19eb81
commit 336f540ce9

View file

@ -385,13 +385,30 @@ impl FilterChainD3D9 {
// try to hint the optimizer // try to hint the optimizer
assert_eq!(last.len(), 1); assert_eq!(last.len(), 1);
if let Some(pass) = last.iter_mut().next() { if let Some(pass) = last.iter_mut().next() {
let index = passes_len - 1;
source.filter = pass.config.filter; source.filter = pass.config.filter;
source.wrap = pass.config.wrap_mode; source.wrap = pass.config.wrap_mode;
source.is_srgb = pass.config.srgb_framebuffer; source.is_srgb = pass.config.srgb_framebuffer;
let feedback_target = &self.output_framebuffers[index];
let feedback_target_rtv = feedback_target.as_output()?;
pass.draw( pass.draw(
&self.common.d3d9, &self.common.d3d9,
passes_len - 1, index,
&self.common,
pass.config.get_frame_count(frame_count),
options,
viewport,
&original,
&source,
RenderTarget::viewport_with_output(&feedback_target_rtv, viewport),
QuadType::Final,
)?;
pass.draw(
&self.common.d3d9,
index,
&self.common, &self.common,
pass.config.get_frame_count(frame_count), pass.config.get_frame_count(frame_count),
options, options,