Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

glam v0.33.6 breaks `Vec3A`

Fechada
#645 0 comentários 0 reações 1 responsável Ver no GitHub

Mantenedores costumam responder em até 1 dia

@Firestar99 já está trabalhando nisso.

Desde 22/9/2026.

Avaliação

Esta issue ainda não foi avaliada.

Descrição

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

Linguagem predominante
Rust
Estrelas
3.4k
Forks
132
Merge médio
1d 58min
PRs com merge (30d)
12

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de Rust-GPU/rust-gpu

Todas as issues de Rust-GPU/rust-gpu

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.