Summary: | Geometry shader with double interpolators fails in LLVM | ||
---|---|---|---|
Product: | Mesa | Reporter: | Baldur Karlsson <baldurk> |
Component: | Drivers/Vulkan/radeon | Assignee: | mesa-dev |
Status: | RESOLVED FIXED | QA Contact: | mesa-dev |
Severity: | normal | ||
Priority: | not set | ||
Version: | git | ||
Hardware: | x86-64 (AMD64) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: | VkRunner test showing crash |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.
Created attachment 145427 [details] VkRunner test showing crash When compiling a geometry shader with double inputs and outputs I get an LLVM fatal error: LLVM ERROR: Cannot select: 0x55de91ee9320: v2i32 = bitcast 0x55de91ee9048 0x55de91ee9048: f32,ch = BUFFER_LOAD<(dereferenceable load 4 from custom TargetCustom7, align 1, addrspace 4)> 0x55de91dcfbc8, 0x55de91e58860, Constant:i32<0>, 0x55de91ee8a98, Constant:i32<0>, Constant:i32<0>, Constant:i32<1>, Constant:i1<0> 0x55de91e58860: v4i32,ch = load<(invariant load 16 from %ir.12, addrspace 4)> 0x55de91dcfbc8, 0x55de91e581e0, undef:i64 0x55de91e581e0: i64 = add 0x55de91e587f8, Constant:i64<32> 0x55de91e587f8: i64,ch = CopyFromReg 0x55de91dcfbc8, Register:i64 %0 0x55de91ee8e40: i64 = Register %0 0x55de91e58318: i64 = Constant<32> 0x55de91e58380: i64 = undef 0x55de91ee8b68: i32 = Constant<0> 0x55de91ee8a98: i32 = add 0x55de91e58e10, Constant:i32<4096> 0x55de91e58e10: i32 = shl 0x55de91e58998, Constant:i32<2> 0x55de91e58998: i32,ch = CopyFromReg 0x55de91dcfbc8, Register:i32 %3 0x55de91e586c0: i32 = Register %3 0x55de91e58cd8: i32 = Constant<2> 0x55de91ee8a30: i32 = Constant<4096> 0x55de91ee8b68: i32 = Constant<0> 0x55de91ee8b68: i32 = Constant<0> 0x55de91e58ad0: i32 = Constant<1> 0x55de91eeb340: i1 = Constant<0> In function: main with this geometry shader: #version 450 core layout(triangles) in; layout(triangle_strip, max_vertices = 3) out; layout(location = 0) in double InDouble[3]; layout(location = 0) out double OutDouble; void main() { gl_Position = vec4(0); for(int i = 0; i < 3; i++) { OutDouble = InDouble[i]; EmitVertex(); } EndPrimitive(); } I've attached a VkRunner test which shows the crash.