[PATCH v2 0/1] MR380: vkd3d-dxbc: Print section offsets.
-- v2: vkd3d-dxbc: Print section offsets. https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/380
From: Giovanni Mascellani <gmascellani(a)codeweavers.com> --- programs/vkd3d-dxbc/main.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/programs/vkd3d-dxbc/main.c b/programs/vkd3d-dxbc/main.c index ea425f099..bd99905ae 100644 --- a/programs/vkd3d-dxbc/main.c +++ b/programs/vkd3d-dxbc/main.c @@ -323,7 +323,8 @@ static void dump_data(const struct colours *colours, const char *prefix, const s printf("%s%s%08zx%s\n", prefix, colours->offset, data->size, colours->reset); } -static void dump_dxbc(const struct vkd3d_shader_dxbc_desc *dxbc_desc, const struct options *options) +static void dump_dxbc(const struct vkd3d_shader_code *dxbc, const struct vkd3d_shader_dxbc_desc *dxbc_desc, + const struct options *options) { const struct colours *colours = &options->colours; struct vkd3d_shader_dxbc_section_desc *section; @@ -341,17 +342,24 @@ static void dump_dxbc(const struct vkd3d_shader_dxbc_desc *dxbc_desc, const stru printf(" %ssize%s: %#zx (%zu) bytes\n", colours->label, colours->reset, dxbc_desc->size, dxbc_desc->size); printf(" %ssections%s: %zu\n\n", colours->label, colours->reset, dxbc_desc->section_count); - printf(" %s#%s %stag%s %ssize%s\n", + printf(" %s#%s %stag%s %ssize (bytes)%s %soffset (bytes)%s\n", + colours->label, colours->reset, colours->label, colours->reset, colours->label, colours->reset, colours->label, colours->reset); for (i = 0; i < dxbc_desc->section_count; ++i) { + char dec_size[16]; + size_t offset; + section = &dxbc_desc->sections[i]; - printf("%s%2zu%s %08x (%.4s) 0x%08zx (%zu) bytes\n", + sprintf(dec_size, "(%zu)", section->data.size); + offset = (char *)section->data.code - (char *)dxbc->code; + printf("%s%2zu%s %08x (%.4s) 0x%08zx %-13s 0x%08zx (%zu)\n", colours->index, i, colours->reset, section->tag, dump_tag(tag, section->tag), - section->data.size, section->data.size); + section->data.size, dec_size, + offset, offset); if (!options->list_data) continue; @@ -409,7 +417,7 @@ int main(int argc, char **argv) goto done; if (options.list || options.list_data) - dump_dxbc(&dxbc_desc, &options); + dump_dxbc(&dxbc, &dxbc_desc, &options); vkd3d_shader_free_dxbc(&dxbc_desc); vkd3d_shader_free_shader_code(&dxbc); -- GitLab https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/380
I suppose that's safe, but only because we happen to know that the format limits section sizes to 32 bits in practice.
Yeah, I assumed that. I also thought about first rendering all the sizes, take the maximum and then render again, but it looked like too much effort for something like that.
If we're going to do something like this anyway, we might as well do something like this:
Done, thanks. -- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/380#note_47125
participants (2)
-
Giovanni Mascellani -
Giovanni Mascellani (@giomasce)