rt: add driver context + path context for FilterChain::load_with_path

This commit is contained in:
chyyran 2024-02-08 21:45:04 -05:00
parent a14b36e05b
commit 4da6c98655
6 changed files with 11 additions and 11 deletions

View file

@ -1,10 +1,9 @@
use nom::AsBytes;
use once_cell::sync::Lazy;
use regex::bytes::Regex;
use rustc_hash::FxHashMap;
use std::collections::VecDeque;
use std::ffi::{OsStr, OsString};
use std::fmt::{Debug, Display, Formatter, Write};
use std::fmt::{Debug, Display, Formatter};
use std::hash::Hash;
use std::ops::Add;
use std::path::{Component, Path, PathBuf};

View file

@ -4,7 +4,7 @@ use crate::{ScaleFactor, ScaleType};
use nom::bytes::complete::tag;
use nom::character::complete::digit1;
use nom::combinator::{eof, map_res};
use std::collections::{HashMap, VecDeque};
use std::collections::{VecDeque};
use nom::IResult;
use num_traits::cast::ToPrimitive;

View file

@ -39,6 +39,7 @@ use windows::Win32::Graphics::Direct3D11::{
D3D11_USAGE_DYNAMIC,
};
use windows::Win32::Graphics::Dxgi::Common::DXGI_FORMAT_R8G8B8A8_UNORM;
use librashader_presets::context::VideoDriver;
pub struct FilterMutable {
pub(crate) passes_enabled: usize,
@ -98,7 +99,7 @@ impl FilterChainD3D11 {
options: Option<&FilterChainOptionsD3D11>,
) -> error::Result<FilterChainD3D11> {
// load passes from preset
let preset = ShaderPreset::try_parse(path)?;
let preset = ShaderPreset::try_parse_with_driver_context(path, VideoDriver::Direct3D11)?;
unsafe { Self::load_from_preset(preset, device, options) }
}

View file

@ -51,6 +51,7 @@ use librashader_runtime::framebuffer::FramebufferInit;
use librashader_runtime::render_target::RenderTarget;
use librashader_runtime::scaling::ScaleFramebuffer;
use rayon::prelude::*;
use librashader_presets::context::VideoDriver;
const MIPMAP_RESERVED_WORKHEAP_DESCRIPTORS: usize = 4096;
@ -186,7 +187,7 @@ impl FilterChainD3D12 {
options: Option<&FilterChainOptionsD3D12>,
) -> error::Result<FilterChainD3D12> {
// load passes from preset
let preset = ShaderPreset::try_parse(path)?;
let preset = ShaderPreset::try_parse_with_driver_context(path, VideoDriver::Direct3D12)?;
unsafe { Self::load_from_preset(preset, device, options) }
}

View file

@ -14,6 +14,7 @@ mod parameters;
pub(crate) use filter_impl::FilterCommon;
use librashader_common::Viewport;
use librashader_presets::context::VideoDriver;
/// An OpenGL filter chain.
pub struct FilterChainGL {
@ -42,10 +43,7 @@ impl FilterChainGL {
}),
})
});
match result {
Err(_) => Err(FilterChainError::GLLoadError),
Ok(res) => res,
}
result.unwrap_or_else(|_| Err(FilterChainError::GLLoadError))
}
/// Load the shader preset at the given path into a filter chain.
@ -54,7 +52,7 @@ impl FilterChainGL {
options: Option<&FilterChainOptionsGL>,
) -> Result<Self> {
// load passes from preset
let preset = ShaderPreset::try_parse(path)?;
let preset = ShaderPreset::try_parse_with_driver_context(path, VideoDriver::GlCore)?;
unsafe { Self::load_from_preset(preset, options) }
}

View file

@ -37,6 +37,7 @@ use librashader_runtime::framebuffer::FramebufferInit;
use librashader_runtime::render_target::RenderTarget;
use librashader_runtime::scaling::ScaleFramebuffer;
use rayon::prelude::*;
use librashader_presets::context::VideoDriver;
/// A Vulkan device and metadata that is required by the shader runtime.
pub struct VulkanObjects {
@ -236,7 +237,7 @@ impl FilterChainVulkan {
FilterChainError: From<E>,
{
// load passes from preset
let preset = ShaderPreset::try_parse(path)?;
let preset = ShaderPreset::try_parse_with_driver_context(path, VideoDriver::Vulkan)?;
unsafe { Self::load_from_preset(preset, vulkan, options) }
}