Do we really want to invent a new set of names like that for sysval? Should we just clip VKD3D_SHADER_SV from the existing enum instead?
I copied them from native `/dumpbin`. We might still want to use our existing enum, sure; my personal opinion is that it's nice to have them a bit shorter.
Ah, I should have recognized that. If there's precedent I think that's fine, I just thought we were inventing names out of nowhere.
Any reason we're leaving out patch constant signatures from this series?
No, it's just that I still have to add support for this too. My knowledge of shader signatures is still pretty young, so I'm learning while I'm doing.
Fair enough.
FWIW, patch constant signatures are pretty simple: they're output for HS and input for DS. I think you can just copy any one of the tessellation shader pairs from d3d12.c for a simple example.
From patch 4/6:
if (ret >= 0) vkd3d_string_buffer_printf(buffer, ".section SHEX\n");
This feels weird, partly because it's in dump_signatures(), also because I don't see why it's SHEX and not SHDR.
Ok, I can move this out. WRT to using fourccs, I don't have strong opinions, but I'd like to avoid overcomplicating the matter. So, for example, I would try to avoid two different tags depending on whether we're using minimum precision or not. My idea is that the directives I'm introducing specify the logical data; it's up to the assembler to decide which tags to use depending on the data. Using this point of view it might be preferable to rather use:
.section input .section output .section patch_constant .section code
However Henri explicitly suggested using fourccs, so he might have opinions here.
Hrm, I see those were in the original suggestion.
What's weird about it is mostly that SHEX is the extended 5.0 version of SHDR, whereas ISGN and OSGN are the original versions. Granted, that *is* the default you get with 5.0, if you don't have minimum precision or GS stream index, but it feels like not the most obvious arbitrary choice.