{"record":{"id":"cc49ead1eeb154ea","repo":"gfx-rs/wgpu","slug":"not-implemented-cc49ea","errorCode":null,"errorMessage":"not implemented","messagePattern":"not implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"wgpu-hal/src/auxil/dxgi/conv.rs","lineNumber":288,"sourceCode":"        Vf::Snorm16x4 => DXGI_FORMAT_R16G16B16A16_SNORM,\n        Vf::Uint16x4 => DXGI_FORMAT_R16G16B16A16_UINT,\n        Vf::Sint16x4 => DXGI_FORMAT_R16G16B16A16_SINT,\n        Vf::Float16x4 => DXGI_FORMAT_R16G16B16A16_FLOAT,\n        Vf::Uint32 => DXGI_FORMAT_R32_UINT,\n        Vf::Sint32 => DXGI_FORMAT_R32_SINT,\n        Vf::Float32 => DXGI_FORMAT_R32_FLOAT,\n        Vf::Uint32x2 => DXGI_FORMAT_R32G32_UINT,\n        Vf::Sint32x2 => DXGI_FORMAT_R32G32_SINT,\n        Vf::Float32x2 => DXGI_FORMAT_R32G32_FLOAT,\n        Vf::Uint32x3 => DXGI_FORMAT_R32G32B32_UINT,\n        Vf::Sint32x3 => DXGI_FORMAT_R32G32B32_SINT,\n        Vf::Float32x3 => DXGI_FORMAT_R32G32B32_FLOAT,\n        Vf::Uint32x4 => DXGI_FORMAT_R32G32B32A32_UINT,\n        Vf::Sint32x4 => DXGI_FORMAT_R32G32B32A32_SINT,\n        Vf::Float32x4 => DXGI_FORMAT_R32G32B32A32_FLOAT,\n        Vf::Unorm10_10_10_2 => DXGI_FORMAT_R10G10B10A2_UNORM,\n        Vf::Unorm8x4Bgra => DXGI_FORMAT_B8G8R8A8_UNORM,\n        Vf::Float64 | Vf::Float64x2 | Vf::Float64x3 | Vf::Float64x4 => unimplemented!(),\n    }\n}\n\npub fn map_acomposite_alpha_mode(mode: wgt::CompositeAlphaMode) -> Dxgi::Common::DXGI_ALPHA_MODE {\n    match mode {\n        wgt::CompositeAlphaMode::PreMultiplied => Dxgi::Common::DXGI_ALPHA_MODE_PREMULTIPLIED,\n        wgt::CompositeAlphaMode::PostMultiplied => Dxgi::Common::DXGI_ALPHA_MODE_STRAIGHT,\n        wgt::CompositeAlphaMode::Opaque => Dxgi::Common::DXGI_ALPHA_MODE_IGNORE,\n        wgt::CompositeAlphaMode::Auto | wgt::CompositeAlphaMode::Inherit => {\n            Dxgi::Common::DXGI_ALPHA_MODE_UNSPECIFIED\n        }\n    }\n}\n","sourceCodeStart":270,"sourceCodeEnd":302,"githubUrl":"https://github.com/gfx-rs/wgpu/blob/3e11ff59bf3f9795d285ecc045014089640d7248/wgpu-hal/src/auxil/dxgi/conv.rs#L270-L302","documentation":"The DX12 backend's map_vertex_format does not map 64-bit float vertex formats (Float64, Float64x2, Float64x3, Float64x4) to DXGI formats, because DX12 input-assembly has no native double-typed vertex elements. Encountering such a vertex attribute format panics with unimplemented!().","triggerScenarios":"Creating a buffer layout (VertexBufferLayout) whose attributes use VertexFormat::Float64, Float64x2, Float64x3, or Float64x4 on the DX12 backend (or any backend routed through this conv code).","commonSituations":"Importing mesh data authored in doubles (CAD/scientific data) and using it directly as vertex attributes; porting Vulkan/GL code that allowed DOUBLE attribs.","solutions":["Convert double data to f32 on the CPU (or in a compute pass) and use Float32/Float32x2/x3/x4 vertex formats","Pack doubles into two f32 attributes if extra precision is truly needed, and recombine in the shader","Validate the vertex layout before creating the pipeline: reject formats containing Float64 on DX12","File/track an upstream issue if DX12 gains double vertex attribute support"],"exampleFix":"// before\nattributes: [wgpu::VertexAttribute { format: wgpu::VertexFormat::Float64x3, offset: 0, shader_location: 0 }]\n// after\nattributes: [wgpu::VertexAttribute { format: wgpu::VertexFormat::Float32x3, offset: 0, shader_location: 0 }]\n// (convert positions to f32 when uploading the buffer)","handlingStrategy":"validation","validationCode":"fn has_f64_vertex_attribute(layout: &wgpu::VertexBufferLayout) -> bool {\n    layout.attributes.iter().any(|a| matches!(a.format,\n        wgpu::VertexFormat::Float64 | wgpu::VertexFormat::Float64x2 | wgpu::VertexFormat::Float64x3 | wgpu::VertexFormat::Float64x4))\n}","typeGuard":"fn is_f64_format(f: wgpu::VertexFormat) -> bool {\n    matches!(f, wgpu::VertexFormat::Float64 | wgpu::VertexFormat::Float64x2\n        | wgpu::VertexFormat::Float64x3 | wgpu::VertexFormat::Float64x4)\n}","tryCatchPattern":"// this is a hard panic in HAL, not a Result; pre-validate the layout:\nassert!(!has_f64_vertex_attribute(&layout), \"Float64 vertex formats unsupported on dx12\");","preventionTips":["Never use Float64* vertex formats; convert to f32 on upload","Validate all VertexBufferLayouts at app startup","Treat f64 vertex attribs as non-portable per WebGPU spec limits"],"tags":["wgpu","dx12","vertex-format","float64"],"backgroundTag":"unsupported-vertex-format","analyzedSha":"3e11ff59bf3f9795d285ecc045014089640d7248","analyzedAt":"2026-09-03T01:43:21.459Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T07:17:11.731Z"}