It might be that this ship has already sailed, since this is probably something preceding this MR, but I feel a bit awkward about how errors are silently ignored in a number of code paths (see for example `sm6_parser_emit_dx_store_output()`, but it's not the only place). I understand that we don't want to be overly zealous with rejecting invalid shaders, because it might be that even if our translation isn't perfect the translated shader is still good enough so that, say, a certain game is playable.
However, at least from the point of view of vkd3d-shader (which doesn't know how that shader is going to be used), this doesn't really feel correct. Maybe the average game doesn't really care if a shader is broken, since the bad case scenario is that the player just decides that the game isn't fun and proceeds doing something else. But other applications might be more demanding. For example, if you allow me a rather extreme example, a medical application might be much less failure-tolerant, to the point of preferring declaring a malfunction rather than plotting wrong medical data. I'm not aware of any such usage, currently, for vkd3d-shader, but I consider this an example to infer that the decision of still using a shader even if it's known to be incorrectly translated should not belong to vkd3d-shader. It makes sense for vkd3d-shader to still report an incorrectly translated shader as a best guess, but the error code should declare what's happening, so that the client can choose mea ningfully.
What is the feeling about this issue?