Most of this looks fine to me, but I have my doubts about 9/9. What the old code calls "immconst_type" *is* the dimension; I don't think that it's meaningfully different, and I think that we should quite possibly be making vsir look more like the hlsl_sm4 layer in this respect—that is, rename "immconst_type" to "dimension" and parse and specify it everywhere. If we do that, that takes away the impetus for putting it in a table. If we don't, we should probably get the table entries right from the beginning. Most of those entries are marked VEC4, which at least seems surprising. Also, marking IMMCONST as 0 isn't great, because 0 is NONE. Leaving that last patch it off the series for now may be prudent. -- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/281#note_41589