mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
msl: add invariance if supported
This commit is contained in:
@@ -381,11 +381,10 @@ impl ResolvedBinding {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn try_fmt_decorated<W: Write>(&self, out: &mut W, terminator: &str) -> Result<(), Error> {
|
||||
fn try_fmt_decorated<W: Write>(&self, out: &mut W) -> Result<(), Error> {
|
||||
write!(out, " [[")?;
|
||||
self.try_fmt(out)?;
|
||||
write!(out, "]]")?;
|
||||
write!(out, "{}", terminator)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2862,7 +2862,7 @@ impl<W: Write> Writer<W> {
|
||||
};
|
||||
let resolved = options.resolve_local_binding(binding, in_mode)?;
|
||||
write!(self.out, "{}{} {}", back::INDENT, ty_name, name)?;
|
||||
resolved.try_fmt_decorated(&mut self.out, "")?;
|
||||
resolved.try_fmt_decorated(&mut self.out)?;
|
||||
writeln!(self.out, ";")?;
|
||||
}
|
||||
writeln!(self.out, "}};")?;
|
||||
@@ -2931,11 +2931,17 @@ impl<W: Write> Writer<W> {
|
||||
};
|
||||
let resolved = options.resolve_local_binding(binding, out_mode)?;
|
||||
write!(self.out, "{}{} {}", back::INDENT, ty_name, name)?;
|
||||
resolved.try_fmt_decorated(&mut self.out, "")?;
|
||||
if let Some(array_len) = array_len {
|
||||
write!(self.out, " [{}]", array_len)?;
|
||||
}
|
||||
writeln!(self.out, ";")?;
|
||||
write!(self.out, " [[")?;
|
||||
resolved.try_fmt(&mut self.out)?;
|
||||
if options.lang_version >= (2, 3)
|
||||
&& *binding == crate::Binding::BuiltIn(crate::BuiltIn::Position)
|
||||
{
|
||||
write!(self.out, ", invariant")?;
|
||||
}
|
||||
writeln!(self.out, "]];")?;
|
||||
}
|
||||
|
||||
if pipeline_options.allow_point_size
|
||||
@@ -2986,7 +2992,8 @@ impl<W: Write> Writer<W> {
|
||||
','
|
||||
};
|
||||
write!(self.out, "{} {} {}", separator, ty_name, name)?;
|
||||
resolved.try_fmt_decorated(&mut self.out, "\n")?;
|
||||
resolved.try_fmt_decorated(&mut self.out)?;
|
||||
writeln!(self.out)?;
|
||||
}
|
||||
for (handle, var) in module.global_variables.iter() {
|
||||
let usage = fun_info[handle];
|
||||
@@ -3026,7 +3033,7 @@ impl<W: Write> Writer<W> {
|
||||
write!(self.out, "{} ", separator)?;
|
||||
tyvar.try_fmt(&mut self.out)?;
|
||||
if let Some(resolved) = resolved {
|
||||
resolved.try_fmt_decorated(&mut self.out, "")?;
|
||||
resolved.try_fmt_decorated(&mut self.out)?;
|
||||
}
|
||||
if let Some(value) = var.init {
|
||||
let coco = ConstantContext {
|
||||
@@ -3053,7 +3060,8 @@ impl<W: Write> Writer<W> {
|
||||
"{} constant _mslBufferSizes& _buffer_sizes",
|
||||
separator,
|
||||
)?;
|
||||
resolved.try_fmt_decorated(&mut self.out, "\n")?;
|
||||
resolved.try_fmt_decorated(&mut self.out)?;
|
||||
writeln!(self.out)?;
|
||||
}
|
||||
|
||||
// end of the entry point argument list
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
adjust_coordinate_space: false,
|
||||
),
|
||||
msl: (
|
||||
lang_version: (2, 1),
|
||||
lang_version: (2, 3),
|
||||
per_stage_map: (
|
||||
vs: (
|
||||
resources: {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// language: metal2.1
|
||||
// language: metal2.3
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
@@ -14,7 +14,7 @@ struct Data {
|
||||
struct vs_mainInput {
|
||||
};
|
||||
struct vs_mainOutput {
|
||||
metal::float4 position [[position]];
|
||||
metal::float4 position [[position, invariant]];
|
||||
metal::float3 uv [[user(loc0), center_perspective]];
|
||||
};
|
||||
vertex vs_mainOutput vs_main(
|
||||
|
||||
Reference in New Issue
Block a user