/* Ignore these, since we get explicit offsets anyways */
break;
+ case SpvDecorationStream:
+ assert(dec->literals[0] == 0);
+ break;
+
default:
unreachable("Unhandled type decoration");
}
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: