v3d: Switch v3d_decoder.c to the XML's top min_ver/max_ver fields.

The XML zipper wants one XML per version for filling out its tables, but
we want to do more than one GPU version per XML now.  Assume that the
"gen" field will be the same as min_ver and look up our XML text assuming
that they're listed in increasing min_ver.
This commit is contained in:
Eric Anholt 2018-06-27 14:10:52 -07:00
parent f8af5c58c3
commit 725561c0b6
5 changed files with 14 additions and 6 deletions

View file

@ -467,6 +467,10 @@ start_element(void *data, const char *element_name, const char **atts)
if (ver == NULL)
fail(&ctx->loc, "no ver given");
/* Make sure that we picked an XML that matched our version.
*/
assert(ver_in_range(ctx->devinfo->ver, min_ver, max_ver));
int major, minor;
int n = sscanf(ver, "%d.%d", &major, &minor);
if (n == 0)
@ -631,10 +635,14 @@ v3d_spec_load(const struct v3d_device_info *devinfo)
uint32_t text_offset = 0, text_length = 0, total_length;
for (int i = 0; i < ARRAY_SIZE(genxml_files_table); i++) {
if (genxml_files_table[i].gen_10 == devinfo->ver) {
if (i != 0) {
assert(genxml_files_table[i - 1].gen_10 <
genxml_files_table[i].gen_10);
}
if (genxml_files_table[i].gen_10 <= devinfo->ver) {
text_offset = genxml_files_table[i].offset;
text_length = genxml_files_table[i].length;
break;
}
}

View file

@ -1,4 +1,4 @@
<vcxml gen="2.1">
<vcxml gen="2.1" min_ver="21" max_ver="21">
<enum name="Compare Function" prefix="V3D_COMPARE_FUNC">
<value name="NEVER" value="0"/>

View file

@ -1,4 +1,4 @@
<vcxml gen="3.3">
<vcxml gen="3.3" min_ver="33" max_ver="33">
<enum name="Compare Function" prefix="V3D_COMPARE_FUNC">
<value name="NEVER" value="0"/>

View file

@ -1,4 +1,4 @@
<vcxml gen="4.1">
<vcxml gen="4.1" min_ver="41" max_ver="41">
<enum name="Compare Function" prefix="V3D_COMPARE_FUNC">
<value name="NEVER" value="0"/>

View file

@ -1,4 +1,4 @@
<vcxml gen="4.2">
<vcxml gen="4.2" min_ver="42" max_ver="42">
<enum name="Compare Function" prefix="V3D_COMPARE_FUNC">
<value name="NEVER" value="0"/>