Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

glam v0.33.6 breaks `Vec3A`

Abierto
#645 0 comentarios 0 reacciones 1 asignado Ver en GitHub

@Firestar99 ya está trabajando en esto.

Desde el 22/9/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

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

Lenguaje dominante
Rust
Estrellas
3.4k
Forks
126
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Rust-GPU/rust-gpu

Todos los issues de Rust-GPU/rust-gpu

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.