This is largely derived from the parser in Wine/wined3d, as of wine-6.18. Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>