diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/nir/spirv_to_nir.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/glsl/nir/spirv_to_nir.c b/src/glsl/nir/spirv_to_nir.c index a3d38831267..ce191514763 100644 --- a/src/glsl/nir/spirv_to_nir.c +++ b/src/glsl/nir/spirv_to_nir.c @@ -400,6 +400,10 @@ type_decoration_cb(struct vtn_builder *b, /* Ignore these, since we get explicit offsets anyways */ break; + case SpvDecorationStream: + assert(dec->literals[0] == 0); + break; + default: unreachable("Unhandled type decoration"); } @@ -2473,12 +2477,17 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode, break; case SpvOpCapability: - /* - * TODO properly handle these and give a real error if asking for too - * much. - */ - assert(w[1] == SpvCapabilityMatrix || - w[1] == SpvCapabilityShader); + switch ((SpvCapability)w[1]) { + case SpvCapabilityMatrix: + case SpvCapabilityShader: + /* All shaders support these */ + break; + case SpvCapabilityGeometry: + assert(b->shader->stage == MESA_SHADER_GEOMETRY); + break; + default: + assert(!"Unsupported capability"); + } break; case SpvOpExtInstImport: |