From 4f9d2803bd5a5b2a06ecebb1f1fb63cd0de5c3d5 Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Wed, 8 Sep 2021 09:45:02 -0400 Subject: [PATCH] spv-out: option to skip OpName for varyings --- src/back/spv/mod.rs | 5 ++++- src/back/spv/writer.rs | 5 ++++- tests/snapshots.rs | 13 ++++++------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/back/spv/mod.rs b/src/back/spv/mod.rs index 09e98ab53a..0c89821afe 100644 --- a/src/back/spv/mod.rs +++ b/src/back/spv/mod.rs @@ -511,6 +511,9 @@ bitflags::bitflags! { const DEBUG = 0x1; /// Flip Y coordinate of `BuiltIn::Position` output. const ADJUST_COORDINATE_SPACE = 0x2; + /// Emit `OpLabel` for input/output locations. + /// Some drivers treat it as semantic, not allowing any conflicts. + const LABEL_VARYINGS = 0x4; } } @@ -535,7 +538,7 @@ pub struct Options { impl Default for Options { fn default() -> Self { - let mut flags = WriterFlags::ADJUST_COORDINATE_SPACE; + let mut flags = WriterFlags::ADJUST_COORDINATE_SPACE | WriterFlags::LABEL_VARYINGS; if cfg!(debug_assertions) { flags |= WriterFlags::DEBUG; } diff --git a/src/back/spv/writer.rs b/src/back/spv/writer.rs index 943b96dcfa..2501c91258 100644 --- a/src/back/spv/writer.rs +++ b/src/back/spv/writer.rs @@ -1038,7 +1038,10 @@ impl Writer { Instruction::variable(pointer_type_id, id, class, None) .to_words(&mut self.logical_layout.declarations); - if self.flags.contains(WriterFlags::DEBUG) { + if self + .flags + .contains(WriterFlags::DEBUG | WriterFlags::LABEL_VARYINGS) + { if let Some(name) = debug_name { self.debugs.push(Instruction::name(id, name)); } diff --git a/tests/snapshots.rs b/tests/snapshots.rs index b1b153678e..020368148c 100644 --- a/tests/snapshots.rs +++ b/tests/snapshots.rs @@ -176,13 +176,12 @@ fn write_output_spv( use naga::back::spv; use rspirv::binary::Disassemble; - let mut flags = spv::WriterFlags::empty(); - if params.spv_debug { - flags |= spv::WriterFlags::DEBUG; - } - if params.spv_adjust_coordinate_space { - flags |= spv::WriterFlags::ADJUST_COORDINATE_SPACE; - } + let mut flags = spv::WriterFlags::LABEL_VARYINGS; + flags.set(spv::WriterFlags::DEBUG, params.spv_debug); + flags.set( + spv::WriterFlags::ADJUST_COORDINATE_SPACE, + params.spv_adjust_coordinate_space, + ); let options = spv::Options { lang_version: params.spv_version, flags,