From 020fac87ba1f3eea87de35ccd737abb4647211f4 Mon Sep 17 00:00:00 2001 From: chyyran Date: Sun, 23 Apr 2023 01:13:31 -0400 Subject: [PATCH] deps: upgrade to windows 0.48.0 --- Cargo.lock | 69 +++++++++++++++++-- librashader-cache/Cargo.toml | 2 +- librashader-cache/src/d3d.rs | 3 +- librashader-capi/Cargo.toml | 2 +- librashader-capi/build.rs | 2 +- librashader-common/Cargo.toml | 2 +- librashader-presets/src/parse/token.rs | 14 ++-- librashader-presets/src/parse/value.rs | 1 - librashader-presets/tests/parse_all.rs | 4 +- librashader-runtime-d3d11/Cargo.toml | 6 +- librashader-runtime-d3d11/src/filter_pass.rs | 14 ++-- librashader-runtime-d3d11/src/framebuffer.rs | 2 +- librashader-runtime-d3d11/src/util.rs | 2 +- .../tests/hello_triangle/mod.rs | 6 +- librashader-runtime-d3d12/Cargo.toml | 6 +- librashader-runtime-d3d12/src/filter_chain.rs | 57 ++++++++++----- librashader-runtime-d3d12/src/filter_pass.rs | 2 +- librashader-runtime-d3d12/src/framebuffer.rs | 52 +++++++------- .../src/graphics_pipeline.rs | 25 ++++--- librashader-runtime-d3d12/src/luts.rs | 6 +- librashader-runtime-d3d12/src/mipmap.rs | 49 +++++++++---- librashader-runtime-d3d12/src/util.rs | 19 +++-- .../tests/hello_triangle/mod.rs | 13 ++-- librashader-runtime-d3d12/tests/triangle.rs | 6 +- librashader/Cargo.toml | 2 +- 25 files changed, 243 insertions(+), 123 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4d1ead80..c3db028a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2552,11 +2552,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.44.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets", + "windows-targets 0.48.0", ] [[package]] @@ -2578,7 +2578,7 @@ version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets", + "windows-targets 0.42.1", ] [[package]] @@ -2587,21 +2587,42 @@ version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" dependencies = [ - "windows_aarch64_gnullvm", + "windows_aarch64_gnullvm 0.42.1", "windows_aarch64_msvc 0.42.1", "windows_i686_gnu 0.42.1", "windows_i686_msvc 0.42.1", "windows_x86_64_gnu 0.42.1", - "windows_x86_64_gnullvm", + "windows_x86_64_gnullvm 0.42.1", "windows_x86_64_msvc 0.42.1", ] +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + [[package]] name = "windows_aarch64_msvc" version = "0.36.1" @@ -2614,6 +2635,12 @@ version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + [[package]] name = "windows_i686_gnu" version = "0.36.1" @@ -2626,6 +2653,12 @@ version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + [[package]] name = "windows_i686_msvc" version = "0.36.1" @@ -2638,6 +2671,12 @@ version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + [[package]] name = "windows_x86_64_gnu" version = "0.36.1" @@ -2650,12 +2689,24 @@ version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + [[package]] name = "windows_x86_64_msvc" version = "0.36.1" @@ -2668,6 +2719,12 @@ version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + [[package]] name = "winit" version = "0.27.5" diff --git a/librashader-cache/Cargo.toml b/librashader-cache/Cargo.toml index d035f492..257f8f9a 100644 --- a/librashader-cache/Cargo.toml +++ b/librashader-cache/Cargo.toml @@ -23,7 +23,7 @@ rusqlite = { version = "0.28.0", features = ["bundled"] } bytemuck = "1.13.0" [target.'cfg(windows)'.dependencies.windows] -version = "0.44.0" +version = "0.48.0" features = [ "Win32_Graphics_Direct3D", "Win32_Graphics_Direct3D_Fxc", diff --git a/librashader-cache/src/d3d.rs b/librashader-cache/src/d3d.rs index f1084fa2..17daf588 100644 --- a/librashader-cache/src/d3d.rs +++ b/librashader-cache/src/d3d.rs @@ -2,6 +2,7 @@ //! here because of the orphan rule. use crate::{CacheKey, Cacheable}; +use windows::core::ComInterface; impl CacheKey for windows::Win32::Graphics::Direct3D::ID3DBlob { fn hash_bytes(&self) -> &[u8] { @@ -52,7 +53,7 @@ impl Cacheable for windows::Win32::Graphics::Direct3D::Dxc::IDxcBlob { return None; }; - Some(blob.into()) + Some(blob.cast().ok()?) } fn to_bytes(&self) -> Option> { diff --git a/librashader-capi/Cargo.toml b/librashader-capi/Cargo.toml index 74060ec7..9b473d08 100644 --- a/librashader-capi/Cargo.toml +++ b/librashader-capi/Cargo.toml @@ -32,7 +32,7 @@ ash = { version = "0.37.2+1.3.238", optional = true } spirv_cross = { package = "librashader-spirv-cross", version = "0.23" } [target.'cfg(windows)'.dependencies.windows] -version = "0.44.0" +version = "0.48.0" optional = true [package.metadata.docs.rs] diff --git a/librashader-capi/build.rs b/librashader-capi/build.rs index 010e7029..ef63293b 100644 --- a/librashader-capi/build.rs +++ b/librashader-capi/build.rs @@ -5,4 +5,4 @@ pub fn main() { println!("cargo:rustc-link-arg=/DELAYLOAD:dxcompiler.dll"); println!("cargo:rustc-link-arg=/DELAYLOAD:d3d12.dll"); } -} \ No newline at end of file +} diff --git a/librashader-common/Cargo.toml b/librashader-common/Cargo.toml index 62121052..16e61fbc 100644 --- a/librashader-common/Cargo.toml +++ b/librashader-common/Cargo.toml @@ -27,7 +27,7 @@ num-traits = "0.2.15" [target.'cfg(windows)'.dependencies.windows] optional = true -version = "0.44.0" +version = "0.48.0" features = [ "Win32_Foundation", "Win32_Graphics_Dxgi_Common", diff --git a/librashader-presets/src/parse/token.rs b/librashader-presets/src/parse/token.rs index ab2dfab6..039ae828 100644 --- a/librashader-presets/src/parse/token.rs +++ b/librashader-presets/src/parse/token.rs @@ -1,15 +1,18 @@ -use std::ops::RangeFrom; use crate::error::ParsePresetError; use crate::parse::Span; use nom::branch::alt; use nom::bytes::complete::{is_not, take_until}; use nom::character::complete::{char, line_ending, multispace1, not_line_ending}; +use std::ops::RangeFrom; use nom::combinator::{eof, map_res, value}; use nom::error::{ErrorKind, ParseError}; use nom::sequence::delimited; -use nom::{bytes::complete::tag, character::complete::multispace0, IResult, InputIter, InputLength, InputTake, Slice, AsChar}; +use nom::{ + bytes::complete::tag, character::complete::multispace0, AsChar, IResult, InputIter, + InputLength, InputTake, Slice, +}; #[derive(Debug)] pub struct Token<'a> { @@ -51,9 +54,10 @@ fn parse_assignment(input: Span) -> IResult { } fn unbalanced_quote(input: I) -> IResult -where I: Slice> + InputIter + InputLength, - ::Item: AsChar, - I: Copy +where + I: Slice> + InputIter + InputLength, + ::Item: AsChar, + I: Copy, { if let Ok((input, _)) = eof::<_, ()>(input) { Ok((input, ())) diff --git a/librashader-presets/src/parse/value.rs b/librashader-presets/src/parse/value.rs index 3a35110e..9a3e0a04 100644 --- a/librashader-presets/src/parse/value.rs +++ b/librashader-presets/src/parse/value.rs @@ -530,7 +530,6 @@ pub fn parse_values( param_val, )); } - // very last resort, assume undeclared texture (must have extension) else if Path::new(token.value.fragment()).extension().is_some() && ["_mipmap", "_linear", "_wrap_mode", "_repeat_mode"] diff --git a/librashader-presets/tests/parse_all.rs b/librashader-presets/tests/parse_all.rs index 2ebc75ec..01375be5 100644 --- a/librashader-presets/tests/parse_all.rs +++ b/librashader-presets/tests/parse_all.rs @@ -15,7 +15,5 @@ fn parses_all_slang_presets() { #[test] fn parses_problematic() { let path = "../test/Mega_Bezel_Packs/Duimon-Mega-Bezel/Presets/Advanced/Nintendo_NDS_DREZ/NDS-[DREZ]-[Native]-[ADV]-[Guest]-[Night].slangp"; - ShaderPreset::try_parse(path) - .expect(&format!("Failed to parse {}", path)); - + ShaderPreset::try_parse(path).expect(&format!("Failed to parse {}", path)); } diff --git a/librashader-runtime-d3d11/Cargo.toml b/librashader-runtime-d3d11/Cargo.toml index ce048db3..b52e658f 100644 --- a/librashader-runtime-d3d11/Cargo.toml +++ b/librashader-runtime-d3d11/Cargo.toml @@ -27,7 +27,7 @@ rayon = "1.6.1" array-concat = "0.5.2" [target.'cfg(windows)'.dependencies.windows] -version = "0.44.0" +version = "0.48.0" features = [ "Win32_Foundation", "Win32_Graphics_Dxgi_Common", @@ -35,12 +35,11 @@ features = [ "Win32_Graphics_Direct3D11", "Win32_Graphics_Direct3D_Fxc", "Win32_System_Threading", - "Win32_System_WindowsProgramming", "Win32_Security", ] [target.'cfg(windows)'.dev-dependencies.windows] -version = "0.44.0" +version = "0.48.0" features = [ "Win32_Foundation", "Win32_Graphics_Dxgi_Common", @@ -51,7 +50,6 @@ features = [ "Win32_Security", "Win32_System_LibraryLoader", "Win32_System_Threading", - "Win32_System_WindowsProgramming", "Win32_UI_WindowsAndMessaging", ] diff --git a/librashader-runtime-d3d11/src/filter_pass.rs b/librashader-runtime-d3d11/src/filter_pass.rs index 28659b1f..f3eb22e9 100644 --- a/librashader-runtime-d3d11/src/filter_pass.rs +++ b/librashader-runtime-d3d11/src/filter_pass.rs @@ -190,10 +190,10 @@ impl FilterPass { } if ubo.stage_mask.contains(BindingStage::VERTEX) { - unsafe { ctx.VSSetConstantBuffers(ubo.binding, Some(&[ubo.buffer.clone()])) } + unsafe { ctx.VSSetConstantBuffers(ubo.binding, Some(&[Some(ubo.buffer.clone())])) } } if ubo.stage_mask.contains(BindingStage::FRAGMENT) { - unsafe { ctx.PSSetConstantBuffers(ubo.binding, Some(&[ubo.buffer.clone()])) } + unsafe { ctx.PSSetConstantBuffers(ubo.binding, Some(&[Some(ubo.buffer.clone())])) } } } @@ -211,10 +211,14 @@ impl FilterPass { } if push.stage_mask.contains(BindingStage::VERTEX) { - unsafe { ctx.VSSetConstantBuffers(push.binding, Some(&[push.buffer.clone()])) } + unsafe { + ctx.VSSetConstantBuffers(push.binding, Some(&[Some(push.buffer.clone())])) + } } if push.stage_mask.contains(BindingStage::FRAGMENT) { - unsafe { ctx.PSSetConstantBuffers(push.binding, Some(&[push.buffer.clone()])) } + unsafe { + ctx.PSSetConstantBuffers(push.binding, Some(&[Some(push.buffer.clone())])) + } } } @@ -233,7 +237,7 @@ impl FilterPass { ctx.PSSetShaderResources(0, Some(std::mem::transmute(textures.as_ref()))); ctx.PSSetSamplers(0, Some(std::mem::transmute(samplers.as_ref()))); - ctx.OMSetRenderTargets(Some(&[output.output.handle.clone()]), None); + ctx.OMSetRenderTargets(Some(&[Some(output.output.handle.clone())]), None); ctx.RSSetViewports(Some(&[D3D11_VIEWPORT { TopLeftX: output.x, TopLeftY: output.y, diff --git a/librashader-runtime-d3d11/src/framebuffer.rs b/librashader-runtime-d3d11/src/framebuffer.rs index ddf0a13f..1ddd3b2f 100644 --- a/librashader-runtime-d3d11/src/framebuffer.rs +++ b/librashader-runtime-d3d11/src/framebuffer.rs @@ -5,7 +5,7 @@ use crate::{error, D3D11OutputView}; use librashader_common::{ImageFormat, Size}; use librashader_presets::Scale2D; use librashader_runtime::scaling::{MipmapSize, ScaleFramebuffer, ViewportSize}; -use windows::core::Interface; +use windows::core::ComInterface; use windows::Win32::Graphics::Direct3D::D3D_SRV_DIMENSION_TEXTURE2D; use windows::Win32::Graphics::Direct3D11::{ ID3D11Device, ID3D11DeviceContext, ID3D11RenderTargetView, ID3D11ShaderResourceView, diff --git a/librashader-runtime-d3d11/src/util.rs b/librashader-runtime-d3d11/src/util.rs index 4b5efe06..56a8d91e 100644 --- a/librashader-runtime-d3d11/src/util.rs +++ b/librashader-runtime-d3d11/src/util.rs @@ -145,7 +145,7 @@ pub fn d3d11_compile_bound_shader<'a, T, L>( factory: ShaderFactory<'a, L, T>, ) -> error::Result where - L: Into>, + L: windows::core::IntoParam, { unsafe { // SAFETY: slice as valid for as long as vs_blob is alive. diff --git a/librashader-runtime-d3d11/tests/hello_triangle/mod.rs b/librashader-runtime-d3d11/tests/hello_triangle/mod.rs index 62431a0c..94028502 100644 --- a/librashader-runtime-d3d11/tests/hello_triangle/mod.rs +++ b/librashader-runtime-d3d11/tests/hello_triangle/mod.rs @@ -489,10 +489,10 @@ pub mod d3d11_hello_triangle { unsafe { self.context.VSSetConstantBuffers( buffer_number, - Some(&[resources.triangle_uniforms.clone()]), + Some(&[Some(resources.triangle_uniforms.clone())]), ); self.context.OMSetRenderTargets( - Some(&[resources.renderbufffer_rtv.clone()]), + Some(&[Some(resources.renderbufffer_rtv.clone())]), &resources.depth_stencil_view, ); self.context.RSSetViewports(Some(&[resources.viewport])) @@ -845,7 +845,7 @@ pub mod d3d11_hello_triangle { D3D11CreateDevice( None, D3D_DRIVER_TYPE_HARDWARE, - HINSTANCE::default(), + HMODULE::default(), D3D11_CREATE_DEVICE_DEBUG, Some(&feature_levels), D3D11_SDK_VERSION, diff --git a/librashader-runtime-d3d12/Cargo.toml b/librashader-runtime-d3d12/Cargo.toml index 61015b4e..b13e2ece 100644 --- a/librashader-runtime-d3d12/Cargo.toml +++ b/librashader-runtime-d3d12/Cargo.toml @@ -33,7 +33,7 @@ array-concat = "0.5.2" rayon = "1.6.1" [target.'cfg(windows)'.dependencies.windows] -version = "0.44.0" +version = "0.48.0" features = [ "Win32_Foundation", "Win32_Graphics_Dxgi_Common", @@ -41,12 +41,11 @@ features = [ "Win32_Graphics_Direct3D12", "Win32_Graphics_Direct3D_Dxc", "Win32_System_Threading", - "Win32_System_WindowsProgramming", "Win32_Security", ] [target.'cfg(windows)'.dev-dependencies.windows] -version = "0.44.0" +version = "0.48.0" features = [ "Win32_Foundation", "Win32_Graphics_Dxgi_Common", @@ -60,7 +59,6 @@ features = [ "Win32_System_Threading", "Win32_UI_WindowsAndMessaging", "Win32_System_Threading", - "Win32_System_WindowsProgramming", ] [[test]] diff --git a/librashader-runtime-d3d12/src/filter_chain.rs b/librashader-runtime-d3d12/src/filter_chain.rs index c7e268d5..f37e3e79 100644 --- a/librashader-runtime-d3d12/src/filter_chain.rs +++ b/librashader-runtime-d3d12/src/filter_chain.rs @@ -29,8 +29,9 @@ use librashader_runtime::uniforms::UniformStorage; use rustc_hash::FxHashMap; use spirv_cross::hlsl::ShaderModel; use std::collections::VecDeque; +use std::mem::ManuallyDrop; use std::path::Path; -use windows::core::Interface; +use windows::core::ComInterface; use windows::Win32::Foundation::CloseHandle; use windows::Win32::Graphics::Direct3D::Dxc::{ CLSID_DxcCompiler, CLSID_DxcLibrary, CLSID_DxcValidator, DxcCreateInstance, IDxcCompiler, @@ -38,13 +39,12 @@ use windows::Win32::Graphics::Direct3D::Dxc::{ }; use windows::Win32::Graphics::Direct3D12::{ ID3D12CommandAllocator, ID3D12CommandQueue, ID3D12DescriptorHeap, ID3D12Device, ID3D12Fence, - ID3D12GraphicsCommandList, D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_DESC, - D3D12_COMMAND_QUEUE_FLAG_NONE, D3D12_FENCE_FLAG_NONE, + ID3D12GraphicsCommandList, ID3D12Resource, D3D12_COMMAND_LIST_TYPE_DIRECT, + D3D12_COMMAND_QUEUE_DESC, D3D12_COMMAND_QUEUE_FLAG_NONE, D3D12_FENCE_FLAG_NONE, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE, D3D12_RESOURCE_STATE_RENDER_TARGET, }; use windows::Win32::Graphics::Dxgi::Common::DXGI_FORMAT_UNKNOWN; -use windows::Win32::System::Threading::{CreateEventA, WaitForSingleObject}; -use windows::Win32::System::WindowsProgramming::INFINITE; +use windows::Win32::System::Threading::{CreateEventA, WaitForSingleObject, INFINITE}; use librashader_cache::CachedCompilation; use librashader_runtime::framebuffer::FramebufferInit; @@ -101,6 +101,7 @@ pub(crate) struct FrameResiduals { outputs: Vec, mipmaps: Vec>, mipmap_luts: Vec, + resources: Vec>>, } impl FrameResiduals { @@ -109,6 +110,7 @@ impl FrameResiduals { outputs: Vec::new(), mipmaps: Vec::new(), mipmap_luts: Vec::new(), + resources: Vec::new(), } } @@ -127,9 +129,16 @@ impl FrameResiduals { self.mipmaps.extend(handles) } + pub fn dispose_resource(&mut self, resource: ManuallyDrop>) { + self.resources.push(resource) + } + pub fn dispose(&mut self) { self.outputs.clear(); self.mipmaps.clear(); + for resource in self.resources.drain(..) { + drop(ManuallyDrop::into_inner(resource)) + } } } @@ -178,7 +187,7 @@ impl FilterChainD3D12 { let filter_chain = Self::load_from_preset_deferred(preset, device, &cmd, options)?; cmd.Close()?; - queue.ExecuteCommandLists(&[cmd.cast()?]); + queue.ExecuteCommandLists(&[Some(cmd.cast()?)]); queue.Signal(&fence, 1)?; if fence.GetCompletedValue() < 1 { @@ -338,7 +347,7 @@ impl FilterChainD3D12 { cmd: &ID3D12GraphicsCommandList, staging_heap: &mut D3D12DescriptorHeap, mipmap_heap: &mut D3D12DescriptorHeap, - trash: &mut FrameResiduals, + gc: &mut FrameResiduals, textures: &[TextureConfig], ) -> error::Result> { // use separate mipgen to load luts. @@ -359,20 +368,26 @@ impl FilterChainD3D12 { texture.filter_mode, texture.wrap_mode, texture.mipmap, + gc )?; luts.insert(index, texture); } - let residual_mipmap = mipmap_gen.mipmapping_context(cmd, mipmap_heap, |context| { - for lut in luts.values() { - lut.generate_mipmaps(context)?; - } + let (residual_mipmap, residual_barrier) = + mipmap_gen.mipmapping_context(cmd, mipmap_heap, |context| { + for lut in luts.values() { + lut.generate_mipmaps(context)?; + } + + Ok::<(), FilterChainError>(()) + })?; - Ok::<(), FilterChainError>(()) - })?; + gc.dispose_mipmap_handles(residual_mipmap); + gc.dispose_mipmap_gen(mipmap_gen); - trash.dispose_mipmap_handles(residual_mipmap); - trash.dispose_mipmap_gen(mipmap_gen); + for barrier in residual_barrier { + gc.dispose_resource(barrier.pResource) + } Ok(luts) } @@ -530,7 +545,7 @@ impl FilterChainD3D12 { ); } unsafe { - back.copy_from(cmd, input)?; + back.copy_from(cmd, input, &mut self.residuals)?; } self.history_framebuffers.push_front(back); } @@ -644,7 +659,10 @@ impl FilterChainD3D12 { let (pass, last) = passes.split_at_mut(passes_len - 1); unsafe { - let heaps = [self.work_heap.clone(), self.sampler_heap.clone()]; + let heaps = [ + Some(self.work_heap.clone()), + Some(self.sampler_heap.clone()), + ]; cmd.SetDescriptorHeaps(&heaps); cmd.SetGraphicsRootSignature(&self.common.root_signature.handle); self.common.mipmap_gen.pin_root_signature(cmd); @@ -698,7 +716,7 @@ impl FilterChainD3D12 { ); if target.max_mipmap > 1 && !self.disable_mipmaps { - let residuals = self.common.mipmap_gen.mipmapping_context( + let (residuals, residual_uav) = self.common.mipmap_gen.mipmapping_context( cmd, &mut self.mipmap_heap, |ctx| { @@ -713,6 +731,9 @@ impl FilterChainD3D12 { )?; self.residuals.dispose_mipmap_handles(residuals); + for uav in residual_uav { + self.residuals.dispose_resource(uav.pResource) + } } self.residuals.dispose_output(view.descriptor); diff --git a/librashader-runtime-d3d12/src/filter_pass.rs b/librashader-runtime-d3d12/src/filter_pass.rs index 350f921c..63ec0cbe 100644 --- a/librashader-runtime-d3d12/src/filter_pass.rs +++ b/librashader-runtime-d3d12/src/filter_pass.rs @@ -17,7 +17,7 @@ use librashader_runtime::render_target::RenderTarget; use librashader_runtime::uniforms::{NoUniformBinder, UniformStorage}; use rustc_hash::FxHashMap; use std::ops::Deref; -use windows::core::Interface; +use windows::core::ComInterface; use windows::Win32::Foundation::RECT; use windows::Win32::Graphics::Direct3D12::{ ID3D12GraphicsCommandList, ID3D12GraphicsCommandList4, D3D12_RENDER_PASS_BEGINNING_ACCESS, diff --git a/librashader-runtime-d3d12/src/framebuffer.rs b/librashader-runtime-d3d12/src/framebuffer.rs index acbb38f5..8fd711f4 100644 --- a/librashader-runtime-d3d12/src/framebuffer.rs +++ b/librashader-runtime-d3d12/src/framebuffer.rs @@ -1,13 +1,14 @@ use crate::descriptor_heap::{CpuStagingHeap, D3D12DescriptorHeap, RenderTargetHeap}; use crate::error::{assume_d3d12_init, FilterChainError}; +use crate::filter_chain::FrameResiduals; use crate::texture::{D3D12OutputView, InputTexture}; use crate::util::d3d12_get_closest_format; use crate::{error, util}; use librashader_common::{FilterMode, ImageFormat, Size, WrapMode}; use librashader_presets::Scale2D; use librashader_runtime::scaling::{MipmapSize, ScaleFramebuffer, ViewportSize}; +use std::mem::ManuallyDrop; use std::ops::Deref; -use windows::Win32::Foundation::RECT; use windows::Win32::Graphics::Direct3D12::{ ID3D12Device, ID3D12GraphicsCommandList, ID3D12Resource, D3D12_BOX, D3D12_CPU_PAGE_PROPERTY_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING, @@ -138,6 +139,7 @@ impl OwnedImage { &self, cmd: &ID3D12GraphicsCommandList, input: &InputTexture, + gc: &mut FrameResiduals, ) -> error::Result<()> { let barriers = [ util::d3d12_get_resource_transition_subresource( @@ -157,24 +159,28 @@ impl OwnedImage { unsafe { cmd.ResourceBarrier(&barriers); - cmd.CopyTextureRegion( - &D3D12_TEXTURE_COPY_LOCATION { - pResource: windows::core::ManuallyDrop::new(&self.handle), - Type: D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX, - Anonymous: D3D12_TEXTURE_COPY_LOCATION_0 { - SubresourceIndex: 0, - }, + let dst = D3D12_TEXTURE_COPY_LOCATION { + pResource: ManuallyDrop::new(Some(self.handle.clone())), + Type: D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX, + Anonymous: D3D12_TEXTURE_COPY_LOCATION_0 { + SubresourceIndex: 0, + }, + }; + + let src = D3D12_TEXTURE_COPY_LOCATION { + pResource: ManuallyDrop::new(Some(input.resource.clone())), + Type: D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX, + Anonymous: D3D12_TEXTURE_COPY_LOCATION_0 { + SubresourceIndex: 0, }, + }; + + cmd.CopyTextureRegion( + &dst, 0, 0, 0, - &D3D12_TEXTURE_COPY_LOCATION { - pResource: windows::core::ManuallyDrop::new(&input.resource), - Type: D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX, - Anonymous: D3D12_TEXTURE_COPY_LOCATION_0 { - SubresourceIndex: 0, - }, - }, + &src, Some(&D3D12_BOX { left: 0, top: 0, @@ -184,6 +190,9 @@ impl OwnedImage { back: 1, }), ); + + gc.dispose_resource(dst.pResource); + gc.dispose_resource(src.pResource); } let barriers = [ @@ -204,6 +213,7 @@ impl OwnedImage { unsafe { cmd.ResourceBarrier(&barriers); } + Ok(()) } @@ -221,17 +231,7 @@ impl OwnedImage { let rtv = self.create_render_target_view(heap)?; - let rect = RECT { - left: 0, - top: 0, - right: self.size.width as i32, - bottom: self.size.height as i32, - }; - - unsafe { - // todo: more efficient if we don't pass the rect but.. waiting on windows-rs updates - cmd.ClearRenderTargetView(*rtv.descriptor.as_ref(), CLEAR.as_ptr(), &[rect]) - } + unsafe { cmd.ClearRenderTargetView(*rtv.descriptor.as_ref(), CLEAR.as_ptr(), None) } util::d3d12_resource_transition( cmd, diff --git a/librashader-runtime-d3d12/src/graphics_pipeline.rs b/librashader-runtime-d3d12/src/graphics_pipeline.rs index c6d834d5..d30b92c0 100644 --- a/librashader-runtime-d3d12/src/graphics_pipeline.rs +++ b/librashader-runtime-d3d12/src/graphics_pipeline.rs @@ -6,8 +6,10 @@ use librashader_cache::{cache_pipeline, cache_shader_object}; use librashader_reflect::back::cross::CrossHlslContext; use librashader_reflect::back::dxil::DxilObject; use librashader_reflect::back::ShaderCompilerOutput; +use std::mem::ManuallyDrop; use std::ops::Deref; use widestring::u16cstr; +use windows::core::ComInterface; use windows::Win32::Foundation::BOOL; use windows::Win32::Graphics::Direct3D::Dxc::{ CLSID_DxcLibrary, DxcCreateInstance, IDxcBlob, IDxcCompiler, IDxcUtils, IDxcValidator, DXC_CP, @@ -159,7 +161,7 @@ impl D3D12GraphicsPipeline { let pipeline_state: ID3D12PipelineState = unsafe { let pipeline_desc = D3D12_GRAPHICS_PIPELINE_STATE_DESC { - pRootSignature: windows::core::ManuallyDrop::new(&root_signature.handle), + pRootSignature: ManuallyDrop::new(Some(root_signature.handle.clone())), VS: D3D12_SHADER_BYTECODE { pShaderBytecode: vertex_dxil.GetBufferPointer(), BytecodeLength: vertex_dxil.GetBufferSize(), @@ -224,7 +226,7 @@ impl D3D12GraphicsPipeline { ..Default::default() }; - cache_pipeline( + let pipeline = cache_pipeline( "d3d12", &[&vertex_dxil, &fragment_dxil, &render_format.0], |cached: Option>| { @@ -234,12 +236,12 @@ impl D3D12GraphicsPipeline { pCachedBlob: cached.as_ptr().cast(), CachedBlobSizeInBytes: cached.len(), }, - pRootSignature: windows::core::ManuallyDrop::new( - &root_signature.handle, - ), + pRootSignature: ManuallyDrop::new(Some(root_signature.handle.clone())), ..pipeline_desc }; - device.CreateGraphicsPipelineState(&pipeline_desc) + let pipeline_state = device.CreateGraphicsPipelineState(&pipeline_desc); + drop(ManuallyDrop::into_inner(pipeline_desc.pRootSignature)); + pipeline_state } else { device.CreateGraphicsPipelineState(&pipeline_desc) } @@ -249,7 +251,12 @@ impl D3D12GraphicsPipeline { Ok(cached_pso) }, disable_cache, - )? + )?; + + // cleanup handle + drop(ManuallyDrop::into_inner(pipeline_desc.pRootSignature)); + + pipeline }; unsafe { @@ -293,8 +300,8 @@ impl D3D12GraphicsPipeline { }; let mut new_pipeline = Self::new_from_blobs( device, - vertex.into(), - fragment.into(), + vertex.cast()?, + fragment.cast()?, root_sig, format, self.cache_disabled, diff --git a/librashader-runtime-d3d12/src/luts.rs b/librashader-runtime-d3d12/src/luts.rs index c5575147..5298ff2c 100644 --- a/librashader-runtime-d3d12/src/luts.rs +++ b/librashader-runtime-d3d12/src/luts.rs @@ -22,6 +22,7 @@ use windows::Win32::Graphics::Direct3D12::{ D3D12_TEX2D_SRV, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, }; use windows::Win32::Graphics::Dxgi::Common::DXGI_SAMPLE_DESC; +use crate::filter_chain::FrameResiduals; pub struct LutTexture { resource: ID3D12Resource, @@ -31,7 +32,7 @@ pub struct LutTexture { } impl LutTexture { - pub fn new( + pub(crate) fn new( device: &ID3D12Device, heap: &mut D3D12DescriptorHeap, cmd: &ID3D12GraphicsCommandList, @@ -39,6 +40,7 @@ impl LutTexture { filter: FilterMode, wrap_mode: WrapMode, mipmap: bool, + gc: &mut FrameResiduals, ) -> error::Result { let miplevels = source.size.calculate_miplevels() as u16; let mut desc = D3D12_RESOURCE_DESC { @@ -170,7 +172,7 @@ impl LutTexture { D3D12_RESOURCE_STATE_COPY_DEST, ); - d3d12_update_subresources(cmd, &resource, &upload, 0, 0, 1, &subresource)?; + d3d12_update_subresources(cmd, &resource, &upload, 0, 0, 1, &subresource, gc)?; d3d12_resource_transition( cmd, diff --git a/librashader-runtime-d3d12/src/mipmap.rs b/librashader-runtime-d3d12/src/mipmap.rs index e482d0fe..618bb07c 100644 --- a/librashader-runtime-d3d12/src/mipmap.rs +++ b/librashader-runtime-d3d12/src/mipmap.rs @@ -85,6 +85,7 @@ pub struct MipmapGenContext<'a> { cmd: &'a ID3D12GraphicsCommandList, heap: &'a mut D3D12DescriptorHeap, residuals: Vec>, + residual_uav_descs: Vec, } impl<'a> MipmapGenContext<'a> { @@ -98,6 +99,7 @@ impl<'a> MipmapGenContext<'a> { cmd, heap, residuals: Vec::new(), + residual_uav_descs: Vec::new(), } } @@ -111,17 +113,23 @@ impl<'a> MipmapGenContext<'a> { format: DXGI_FORMAT, ) -> error::Result<()> { unsafe { - let residuals = self + let (residuals_heap, residual_barriers) = self .gen .generate_mipmaps(self.cmd, resource, miplevels, size, format, self.heap)?; - self.residuals.extend(residuals) + self.residuals.extend(residuals_heap); + self.residual_uav_descs.extend(residual_barriers); } Ok(()) } - fn close(self) -> Vec> { - self.residuals + fn close( + self, + ) -> ( + Vec>, + Vec, + ) { + (self.residuals, self.residual_uav_descs) } } @@ -138,7 +146,7 @@ impl D3D12MipmapGen { let root_signature: ID3D12RootSignature = device.CreateRootSignature(0, blob)?; let desc = D3D12_COMPUTE_PIPELINE_STATE_DESC { - pRootSignature: windows::core::ManuallyDrop::new(&root_signature), + pRootSignature: ManuallyDrop::new(Some(root_signature.clone())), CS: D3D12_SHADER_BYTECODE { pShaderBytecode: blob.as_ptr().cast(), BytecodeLength: blob.len(), @@ -148,7 +156,7 @@ impl D3D12MipmapGen { }; let pipeline = device.CreateComputePipelineState(&desc)?; - + drop(ManuallyDrop::into_inner(desc.pRootSignature)); Ok(D3D12MipmapGen { device: device.clone(), root_signature, @@ -184,7 +192,13 @@ impl D3D12MipmapGen { cmd: &ID3D12GraphicsCommandList, work_heap: &mut D3D12DescriptorHeap, mut f: F, - ) -> Result>, E> + ) -> Result< + ( + Vec>, + Vec, + ), + E, + > where F: FnMut(&mut MipmapGenContext) -> Result<(), E>, { @@ -194,7 +208,7 @@ impl D3D12MipmapGen { if self.own_heaps { cmd.SetComputeRootSignature(&self.root_signature); - cmd.SetDescriptorHeaps(&[heap]); + cmd.SetDescriptorHeaps(&[Some(heap)]); } } @@ -214,7 +228,10 @@ impl D3D12MipmapGen { size: Size, format: DXGI_FORMAT, work_heap: &mut D3D12DescriptorHeap, - ) -> error::Result>> { + ) -> error::Result<( + Vec>, + Vec, + )> { // create views for mipmap generation let srv = work_heap.alloc_slot()?; unsafe { @@ -265,6 +282,7 @@ impl D3D12MipmapGen { cmd.SetComputeRootDescriptorTable(0, *heap_slots[0].deref().as_ref()); } + let mut residual_uavs = Vec::new(); for i in 1..miplevels as u32 { let scaled = size.scale_mipmap(i); let mipmap_params = MipConstants { @@ -307,10 +325,8 @@ impl D3D12MipmapGen { ); } - // todo: handle manuallyDrop properly. - let uav_barrier = ManuallyDrop::new(D3D12_RESOURCE_UAV_BARRIER { - pResource: windows::core::ManuallyDrop::new(resource), + pResource: ManuallyDrop::new(Some(resource.clone())), }); let barriers = [ @@ -336,8 +352,15 @@ impl D3D12MipmapGen { unsafe { cmd.ResourceBarrier(&barriers); } + + let uav = unsafe { + let [barrier, ..] = barriers; + barrier.Anonymous.UAV + }; + + residual_uavs.push(ManuallyDrop::into_inner(uav)) } - Ok(heap_slots) + Ok((heap_slots, residual_uavs)) } } diff --git a/librashader-runtime-d3d12/src/util.rs b/librashader-runtime-d3d12/src/util.rs index 9552db20..a33e4f39 100644 --- a/librashader-runtime-d3d12/src/util.rs +++ b/librashader-runtime-d3d12/src/util.rs @@ -4,7 +4,7 @@ use crate::error::assume_d3d12_init; use std::mem::ManuallyDrop; use std::u64; use widestring::{u16cstr, U16CStr}; -use windows::core::PCWSTR; +use windows::core::{ComInterface, PCWSTR}; use windows::Win32::Graphics::Direct3D::Dxc::{ DxcValidatorFlags_InPlaceEdit, IDxcBlob, IDxcCompiler, IDxcUtils, IDxcValidator, DXC_CP, DXC_CP_UTF8, @@ -20,6 +20,7 @@ use windows::Win32::Graphics::Direct3D12::{ D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT, D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX, }; use windows::Win32::Graphics::Dxgi::Common::*; +use crate::filter_chain::FrameResiduals; /// wtf retroarch? const DXGI_FORMAT_EX_A4R4G4B4_UNORM: DXGI_FORMAT = DXGI_FORMAT(1000); @@ -166,7 +167,7 @@ pub fn dxc_validate_shader( unsafe { let _result = validator.Validate(&blob, DxcValidatorFlags_InPlaceEdit)?; - Ok(IDxcBlob::from(blob)) + Ok(blob.cast()?) } } @@ -197,7 +198,7 @@ pub fn d3d12_get_resource_transition_subresource( Flags: D3D12_RESOURCE_BARRIER_FLAG_NONE, Anonymous: D3D12_RESOURCE_BARRIER_0 { Transition: ManuallyDrop::new(D3D12_RESOURCE_TRANSITION_BARRIER { - pResource: windows::core::ManuallyDrop::new(resource), + pResource: ManuallyDrop::new(Some(resource.clone())), Subresource: subresource, StateBefore: before, StateAfter: after, @@ -223,7 +224,7 @@ pub fn d3d12_resource_transition_subresource( unsafe { cmd.ResourceBarrier(&barrier) } } -pub fn d3d12_update_subresources( +pub(crate) fn d3d12_update_subresources( cmd: &ID3D12GraphicsCommandList, destination_resource: &ID3D12Resource, intermediate_resource: &ID3D12Resource, @@ -231,6 +232,7 @@ pub fn d3d12_update_subresources( first_subresouce: u32, num_subresources: u32, source: &[D3D12_SUBRESOURCE_DATA], + gc: &mut FrameResiduals, ) -> error::Result { // let allocation_size = std::mem::size_of::() // + std::mem::size_of::() @@ -271,6 +273,7 @@ pub fn d3d12_update_subresources( &num_rows, &row_sizes_in_bytes, source, + gc ) } } @@ -287,6 +290,7 @@ fn update_subresources( num_rows: &[u32], row_sizes_in_bytes: &[u64], source_data: &[D3D12_SUBRESOURCE_DATA], + gc: &mut FrameResiduals, ) -> error::Result { // ToDo: implement validation as in the original function @@ -325,7 +329,7 @@ fn update_subresources( } else { for i in 0..num_subresources as usize { let dest_location = D3D12_TEXTURE_COPY_LOCATION { - pResource: windows::core::ManuallyDrop::new(destination_resource), + pResource: ManuallyDrop::new(Some(destination_resource.clone())), Type: D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX, Anonymous: D3D12_TEXTURE_COPY_LOCATION_0 { SubresourceIndex: i as u32 + first_subresouce, @@ -333,7 +337,7 @@ fn update_subresources( }; let source_location = D3D12_TEXTURE_COPY_LOCATION { - pResource: windows::core::ManuallyDrop::new(intermediate_resource), + pResource: ManuallyDrop::new(Some(intermediate_resource.clone())), Type: D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT, Anonymous: D3D12_TEXTURE_COPY_LOCATION_0 { PlacedFootprint: layouts[i], @@ -341,6 +345,9 @@ fn update_subresources( }; cmd.CopyTextureRegion(&dest_location, 0, 0, 0, &source_location, None); + + gc.dispose_resource(dest_location.pResource); + gc.dispose_resource(source_location.pResource); } } Ok(required_size) diff --git a/librashader-runtime-d3d12/tests/hello_triangle/mod.rs b/librashader-runtime-d3d12/tests/hello_triangle/mod.rs index 7a33dc2a..7df0627a 100644 --- a/librashader-runtime-d3d12/tests/hello_triangle/mod.rs +++ b/librashader-runtime-d3d12/tests/hello_triangle/mod.rs @@ -4,7 +4,7 @@ use windows::{ core::*, Win32::Foundation::*, Win32::Graphics::Direct3D::Fxc::*, Win32::Graphics::Direct3D::*, Win32::Graphics::Direct3D12::*, Win32::Graphics::Dxgi::Common::*, Win32::Graphics::Dxgi::*, Win32::System::LibraryLoader::*, Win32::System::Threading::*, - Win32::System::WindowsProgramming::*, Win32::UI::WindowsAndMessaging::*, + Win32::UI::WindowsAndMessaging::*, }; mod descriptor_heap; @@ -228,6 +228,7 @@ unsafe extern "system" fn debug_log( } pub mod d3d12_hello_triangle { + use std::mem::ManuallyDrop; use super::*; use crate::hello_triangle::descriptor_heap::{CpuStagingHeap, D3D12DescriptorHeap}; use librashader_common::{Size, Viewport}; @@ -511,7 +512,7 @@ pub mod d3d12_hello_triangle { .unwrap(); // Execute the command list. - let command_list = ID3D12CommandList::from(&resources.command_list); + let command_list: Option = resources.command_list.cast().ok(); unsafe { resources.command_queue.ExecuteCommandLists(&[command_list]) }; // Present the frame. @@ -570,7 +571,7 @@ pub mod d3d12_hello_triangle { // Record commands. unsafe { // TODO: workaround for https://github.com/microsoft/win32metadata/issues/1006 - command_list.ClearRenderTargetView(rtv_handle, &*[0.3, 0.4, 0.6, 1.0].as_ptr(), &[]); + command_list.ClearRenderTargetView(rtv_handle, &*[0.3, 0.4, 0.6, 1.0].as_ptr(), Some(&[])); command_list.IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); command_list.IASetVertexBuffers(0, Some(&[resources.vbv])); command_list.DrawInstanced(3, 1, 0, 0); @@ -654,8 +655,8 @@ pub mod d3d12_hello_triangle { Type: D3D12_RESOURCE_BARRIER_TYPE_TRANSITION, Flags: D3D12_RESOURCE_BARRIER_FLAG_NONE, Anonymous: D3D12_RESOURCE_BARRIER_0 { - Transition: std::mem::ManuallyDrop::new(D3D12_RESOURCE_TRANSITION_BARRIER { - pResource: ManuallyDrop::new(resource), + Transition: ManuallyDrop::new(D3D12_RESOURCE_TRANSITION_BARRIER { + pResource: ManuallyDrop::new(Some(resource.clone())), StateBefore: state_before, StateAfter: state_after, Subresource: D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES, @@ -768,7 +769,7 @@ pub mod d3d12_hello_triangle { pInputElementDescs: input_element_descs.as_mut_ptr(), NumElements: input_element_descs.len() as u32, }, - pRootSignature: ManuallyDrop::new(root_signature), + pRootSignature: ManuallyDrop::new(Some(root_signature.clone())), VS: D3D12_SHADER_BYTECODE { pShaderBytecode: unsafe { vertex_shader.GetBufferPointer() }, BytecodeLength: unsafe { vertex_shader.GetBufferSize() }, diff --git a/librashader-runtime-d3d12/tests/triangle.rs b/librashader-runtime-d3d12/tests/triangle.rs index dbdc61af..a64184f1 100644 --- a/librashader-runtime-d3d12/tests/triangle.rs +++ b/librashader-runtime-d3d12/tests/triangle.rs @@ -5,13 +5,13 @@ use crate::hello_triangle::{DXSample, SampleCommandLine}; #[test] fn triangle_d3d12() { let sample = hello_triangle::d3d12_hello_triangle::Sample::new( - // "../test/slang-shaders/crt/crt-lottes.slangp", + "../test/shaders_slang/crt/crt-lottes.slangp", // "../test/basic.slangp", // "../test/slang-shaders/handheld/console-border/gbc-lcd-grid-v2.slangp", - "../test/Mega_Bezel_Packs/Duimon-Mega-Bezel/Presets/Advanced/Nintendo_GBA_SP/GBA_SP-[ADV]-[LCD-GRID]-[Night].slangp", + // "../test/Mega_Bezel_Packs/Duimon-Mega-Bezel/Presets/Advanced/Nintendo_GBA_SP/GBA_SP-[ADV]-[LCD-GRID]-[Night].slangp", // "../test/slang-shaders/test/feedback.slangp", // "../test/slang-shaders/test/history.slangp", - // "../test/slang-shaders/crt/crt-royale.slangp", + // "../test/shaders_slang/crt/crt-royale.slangp", // "../test/slang-shaders/vhs/VHSPro.slangp", &SampleCommandLine { use_warp_device: false, diff --git a/librashader/Cargo.toml b/librashader/Cargo.toml index 5f5996fb..ab3eef80 100644 --- a/librashader/Cargo.toml +++ b/librashader/Cargo.toml @@ -28,7 +28,7 @@ librashader-cache = { path = "../librashader-cache", version = "0.1.3" } ash = { version = "0.37.1+1.3.235", optional = true } [target.'cfg(windows)'.dependencies.windows] -version = "0.44.0" +version = "0.48.0" optional = true [features]