rt(d3d12): replace let_chains
with stable alternatives
This commit is contained in:
parent
ab9ab6fe68
commit
b432a1e02d
|
@ -535,35 +535,41 @@ impl FilterChainD3D12 {
|
|||
.into();
|
||||
|
||||
// incredibly cursed.
|
||||
let (reflection, graphics_pipeline) =
|
||||
if let Ok(graphics_pipeline) = D3D12GraphicsPipeline::new_from_dxil(
|
||||
device,
|
||||
library,
|
||||
validator,
|
||||
&dxil,
|
||||
root_signature,
|
||||
render_format,
|
||||
disable_cache,
|
||||
) && !force_hlsl
|
||||
{
|
||||
(dxil_reflection, graphics_pipeline)
|
||||
} else {
|
||||
let hlsl_reflection = hlsl.reflect(index, semantics)?;
|
||||
let hlsl = hlsl.compile(Some(
|
||||
librashader_reflect::back::hlsl::HlslShaderModel::ShaderModel6_0,
|
||||
))?;
|
||||
let (reflection, graphics_pipeline) = 'pipeline: {
|
||||
'dxil: {
|
||||
if force_hlsl {
|
||||
break 'dxil;
|
||||
}
|
||||
|
||||
let graphics_pipeline = D3D12GraphicsPipeline::new_from_hlsl(
|
||||
if let Ok(graphics_pipeline) = D3D12GraphicsPipeline::new_from_dxil(
|
||||
device,
|
||||
library,
|
||||
compiler,
|
||||
&hlsl,
|
||||
validator,
|
||||
&dxil,
|
||||
root_signature,
|
||||
render_format,
|
||||
disable_cache,
|
||||
)?;
|
||||
(hlsl_reflection, graphics_pipeline)
|
||||
};
|
||||
) {
|
||||
break 'pipeline (dxil_reflection, graphics_pipeline);
|
||||
}
|
||||
}
|
||||
|
||||
let hlsl_reflection = hlsl.reflect(index, semantics)?;
|
||||
let hlsl = hlsl.compile(Some(
|
||||
librashader_reflect::back::hlsl::HlslShaderModel::ShaderModel6_0,
|
||||
))?;
|
||||
|
||||
let graphics_pipeline = D3D12GraphicsPipeline::new_from_hlsl(
|
||||
device,
|
||||
library,
|
||||
compiler,
|
||||
&hlsl,
|
||||
root_signature,
|
||||
render_format,
|
||||
disable_cache,
|
||||
)?;
|
||||
(hlsl_reflection, graphics_pipeline)
|
||||
};
|
||||
|
||||
// minimum size here has to be 1 byte.
|
||||
let ubo_size = reflection.ubo.as_ref().map_or(1, |ubo| ubo.size as usize);
|
||||
|
|
|
@ -160,14 +160,20 @@ impl FilterPass {
|
|||
source,
|
||||
);
|
||||
|
||||
if let Some(ubo) = &self.reflection.ubo
|
||||
&& ubo.size != 0
|
||||
if self
|
||||
.reflection
|
||||
.ubo
|
||||
.as_ref()
|
||||
.is_some_and(|ubo| ubo.size != 0)
|
||||
{
|
||||
self.uniform_storage.inner_ubo().bind_cbv(2, cmd);
|
||||
}
|
||||
|
||||
if let Some(push) = &self.reflection.push_constant
|
||||
&& push.size != 0
|
||||
if self
|
||||
.reflection
|
||||
.push_constant
|
||||
.as_ref()
|
||||
.is_some_and(|push| push.size != 0)
|
||||
{
|
||||
self.uniform_storage.inner_push().bind_cbv(3, cmd);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#![cfg(target_os = "windows")]
|
||||
#![deny(unsafe_op_in_unsafe_fn)]
|
||||
#![feature(let_chains)]
|
||||
#![feature(type_alias_impl_trait)]
|
||||
|
||||
mod buffer;
|
||||
|
|
|
@ -5,14 +5,14 @@ use crate::hello_triangle::{DXSample, SampleCommandLine};
|
|||
#[test]
|
||||
fn triangle_d3d12() {
|
||||
let sample = hello_triangle::d3d12_hello_triangle::Sample::new(
|
||||
// "../test/shaders_slang/bezel/Mega_Bezel/Presets/MBZ__0__SMOOTH-ADV.slangp",
|
||||
"../test/shaders_slang/bezel/Mega_Bezel/Presets/MBZ__0__SMOOTH-ADV.slangp",
|
||||
// "../test/shaders_slang/crt/crt-lottes.slangp",
|
||||
// "../test/basic.slangp",
|
||||
// "../test/shaders_slang/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/shaders_slang/test/feedback.slangp",
|
||||
// "../test/shaders_slang/test/history.slangp",
|
||||
"../test/shaders_slang/crt/crt-geom-deluxe.slangp",
|
||||
// "../test/shaders_slang/crt/crt-geom-deluxe.slangp",
|
||||
// "../test/slang-shaders/vhs/VHSPro.slangp",
|
||||
&SampleCommandLine {
|
||||
use_warp_device: false,
|
||||
|
|
Loading…
Reference in a new issue