The upload/download/decompression functions aren't all that specific to GL; I imagine we'll eventually need them for Vulkan as well.
I don't care much for "wined3d_format_conversion_func", but *shrug*.
I don't care much for the reformatting of format_texture_info[] either. It's true that the table is perhaps a bit unwieldy in its current form, but I don't think this MR makes it better. The direction we had been moving in was to simply store optional information in separate tables, e.g. format_srgb_info[], format_decompress_info[], format_block_info[], and so on. The upload/download callbacks are in that category, as are "gl_srgb_internal" and "gl_rt_internal". The (default) format flags could probably either be stored in a more compact format or be moved to a separate table as well, at which point we'd essentially be left with "gl_internal", "gl_format", and "gl_type". We could conceivably even derive "gl_format" and "gl_type" from the channel info, although it's not clear to me that it would be worth it.