Summary: | vtn_vector_construct writing out of bounds when given multiple non-zero length sources | ||
---|---|---|---|
Product: | Mesa | Reporter: | Forrest Reiling <freiling> |
Component: | Drivers/Vulkan/intel | Assignee: | Intel 3D Bugs Mailing List <intel-3d-bugs> |
Status: | RESOLVED NOTOURBUG | QA Contact: | Intel 3D Bugs Mailing List <intel-3d-bugs> |
Severity: | normal | ||
Priority: | medium | CC: | chadversary, jason |
Version: | 13.0 | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: | Invalid SPIR-V shader |
Description
Forrest Reiling
2017-01-19 23:46:31 UTC
Are you using GLSLang or generating SPIR-V directly? Can you provide me with either the GLSL or SPIR-V for an offending shader. Looking at he SPIR-V spec, it looks like we're doing the right thing but I need to inspect the shader manually to be sure. Im not sure because its skia thats generating the shader and skia isn't really my jam, but I think they are using glslang at runtime. I'll look into dumping the offending SPIR-V and/or glsl sometime next week and get back to you. Created attachment 129377 [details] Invalid SPIR-V shader I've attached the invalid shader. The second OpCompositeConstruct in the shader violates the SPIR-V spec in two ways. It constructs a vec2 from a single vec3 but > When constructing a vector, the total number of components in all the operands > must equal the number of components in Result Type. and > When constructing a vector, there must be at least two Constituent operands. Yes, we could make our SPIR-V parser handle this and it might be useful for debugging purposes, but it's definitely invalid and needs to be fixed. Ok thanks for looking into this, I'll forward this to the Skia people so they can look into the offending shader. Sorry for sending you on a goose chase. -Forrest Opened a bug with Skia to track this issue: https://bugs.chromium.org/p/skia/issues/detail?id=6210 |
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.