Skip to content

Conflicting Output Location Assignment #481

@marstaik

Description

@marstaik

Expected Behaviour

I've used multiple vertex -> fragment outputs before with simpler data structures, but my attempt to pass two &mut Struct seem to be failing with conflicting output locations.

Example & Steps To Reproduce

Relevant source code:

pub struct BlinnPhongMaterialData {
	pub albedo:            Vec4,
	pub specular_color:    Vec4,
	pub shininess:         f32,
	pub specular_strength: f32,
}

pub struct BlinnPhongVertexData {
	pub position: Vec4,
	pub normal:   Vec4,
	pub view_dir: Vec4,
}

#[spirv(vertex)]
#[scene_descriptors]
pub fn blinn_phong_material_vert(
	#[camera] cameras: &[Camera],
	#[instance_data] instance_data: &[InstanceData],
	#[material_data] material_data: &[BlinnPhongMaterialData],
	#[spirv(instance_index)] instance_index: usize,
	// vert
	vertex: PositionNormal,
	// outputs
	out_vertex: &mut BlinnPhongVertexData,
	out_material: &mut BlinnPhongMaterialData,
	#[spirv(position)] out_pos: &mut Vec4,
) {
	// Irrelevant body, occurs even when fully commented out
}

#[spirv(fragment)]
#[scene_descriptors]
pub fn blinn_phong_material_frag(
	#[framebuffer_info] framebuffer_info: &FramebufferInfo,
	#[ambient_lights] ambient_lights: &[AmbientLight],
	#[directional_lights] directional_lights: &[DirectionalLight],
	#[point_lights] point_lights: &[PointLight],
	#[spot_lights] spot_lights: &[SpotLight],
	// outputs
	vertex: BlinnPhongVertexData,
	#[spirv(flat)] material: BlinnPhongMaterialData,
	// frag
	frag_color: &mut Vec4,
) {
	// Irrelevant
}

System Info

  • RustGpu - main e97524f6b4816056b3edaa70c3e0e0c656392c05
  • Rust: rustc 1.90.0-nightly (35f603652 2025-06-29)
  • OS: fedora
  • GPU: NVIDIA RTX 4090
  • SPIR-V: SPIRV-Tools v2025.4 v2025.4-0-g7f2d9ee9

Backtrace

error: failed to run custom build command for `rtd_scene v0.1.0 (/home/marios/proj/rtd/packages/rtd_scene)`

Caused by:
  process didn't exit successfully: `/home/marios/proj/rtd/target/debug/build/rtd_scene-c5f6f38c7d3a83ba/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-env-changed=RUSTGPU_CODEGEN_ARGS
  cargo:rerun-if-env-changed=RUSTGPU_RUSTFLAGS
  cargo:rerun-if-env-changed=RUSTGPU_CARGOFLAGS

  --- stderr
     Compiling rtd_scene_shaders v0.1.0 (/home/marios/proj/rtd/packages/rtd_scene_shaders)
  error: [VUID-StandaloneSpirv-OpEntryPoint-08722] Entry-point has conflicting output location assignment at location 1, component 0
    |
    = note: module `/home/marios/proj/rtd/target/spirv-builder/spirv-unknown-vulkan1.2/release/deps/rtd_scene_shaders.spv`

  warning: an unknown error occurred
    |
    = note: spirv-opt failed, leaving as unoptimized
    = note: module `/home/marios/proj/rtd/target/spirv-builder/spirv-unknown-vulkan1.2/release/deps/rtd_scene_shaders.spv`

  error: error:0:0 - [VUID-StandaloneSpirv-OpEntryPoint-08722] Entry-point has conflicting output location assignment at location 1, component 0
           OpEntryPoint Vertex %2 "materials::blinn_phong_material::blinn_phong_material_vert" %cameras %instance_data %material_data %instance_index %vertex %out_material %out_vertex %out_pos
    |
    = note: spirv-val failed
    = note: module `/home/marios/proj/rtd/target/spirv-builder/spirv-unknown-vulkan1.2/release/deps/rtd_scene_shaders.spv`

  warning: `rtd_scene_shaders` (lib) generated 1 warning
  error: could not compile `rtd_scene_shaders` (lib) due to 2 previous errors; 1 warning emitted
  Error: BuildFailed

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions