Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

glam v0.33.6 breaks `Vec3A`

Geschlossen
#645 0 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

@Firestar99 arbeitet bereits daran.

Seit 22.9.2026.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Beschreibung

bug

PR https://github.com/bitshifter/glam-rs/pull/786 changed the definition of Vec3A to make it bytemuck::Pod:

  #[repr(align(16))]
  #[repr(C)]
  #[cfg_attr(target_arch = "spirv", rust_gpu::vector::v1)]
  pub struct Vec3A {
      pub x: f32,
      pub y: f32,
      pub z: f32,
+     _w: f32,
  }

So from rust-gpu's perspective, this is now a vector with 4 floats instead of 3 floats, breaking a lot of safety assumptions in our codebase.

Observed Fallout

error: error:0:0 - Expected Image Operand Grad dx to have 3 components, but given 4
         %38 = OpImageSampleDrefExplicitLod %float %37 %32 %float_1 Grad %33 %34

Mitigation

Problems:

  • glam v0.33.6 is a breaking change for rust-gpu
  • glam added _w: f32 member to get impl bytemuck::Pod for Vec3A, so reverting this is a breaking change for regular glam users
  • don't want impl Pod not to be impl on spirv

Ideas:

  • hack something in the compiler to special case glam::Vec3A
    • how do we know if a type is Vec3A? This will be a hack and not really sustainable
  • PR https://github.com/Rust-GPU/rust-gpu/pull/646 adjusts Matrix4x3 to use Vec3 instead of Vec3A. The layout of that special type is screwed up anyway, so we don't really care about it changing.
    • not a full mitigation!

Strategy:

  1. short term fix
  • special case spirv to not have _w: f32 member and not impl Pod,
  • release glam v0.33.9, fixing rust-gpu
  1. long term fix
  • glam::Vec3A:
    • remove short term fix
    • change attribute to #[spirv::vector::v1(3, f32)] to overwrite rust-gpu vector type
    • release glam v0.34.0
  • rust-gpu:
    • adjust #[spirv::vector::v1] attribute to take params to overwrite vector type
    • make rust-gpu support glam v0.34.0
    • release rust-gpu?

will update this description as I go

Vorherrschende Sprache
Rust
Sterne
3.4k
Forks
132
Ø Merge
1 T. 58 Min.
Gemergte PRs (30 T.)
12

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus Rust-GPU/rust-gpu

Alle Issues in Rust-GPU/rust-gpu

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.