mirror of
https://github.com/Ryujinx/Opentk.git
synced 2025-07-20 09:08:32 +00:00
Fixed exception while parsing the 4.3 specs.
This was caused by changes in the .spec file definitions between 4.1 and 4.3.
This commit is contained in:
parent
c49f9cd4a1
commit
df8626740a
|
@ -42,6 +42,9 @@ namespace CHeaderToXML
|
||||||
enum ParserModes { None, Enum, Func };
|
enum ParserModes { None, Enum, Func };
|
||||||
ParserModes CurrentMode;
|
ParserModes CurrentMode;
|
||||||
|
|
||||||
|
enum EntryModes { Core, Compatibility };
|
||||||
|
EntryModes CurrentEntryMode;
|
||||||
|
|
||||||
public override IEnumerable<XElement> Parse(string[] lines)
|
public override IEnumerable<XElement> Parse(string[] lines)
|
||||||
{
|
{
|
||||||
XElement current = null;
|
XElement current = null;
|
||||||
|
@ -64,6 +67,7 @@ namespace CHeaderToXML
|
||||||
new XAttribute("name", words[0]));
|
new XAttribute("name", words[0]));
|
||||||
|
|
||||||
CurrentMode = ParserModes.Enum;
|
CurrentMode = ParserModes.Enum;
|
||||||
|
CurrentEntryMode = EntryModes.Core;
|
||||||
}
|
}
|
||||||
else if (line.StartsWith(words[0] + "("))
|
else if (line.StartsWith(words[0] + "("))
|
||||||
{
|
{
|
||||||
|
@ -77,6 +81,11 @@ namespace CHeaderToXML
|
||||||
new XAttribute("name", words[0]),
|
new XAttribute("name", words[0]),
|
||||||
new XAttribute("extension", extension));
|
new XAttribute("extension", extension));
|
||||||
|
|
||||||
|
if (words[0].Contains("ShaderSource"))
|
||||||
|
{
|
||||||
|
System.Diagnostics.Debugger.Break();
|
||||||
|
}
|
||||||
|
|
||||||
CurrentMode = ParserModes.Func;
|
CurrentMode = ParserModes.Func;
|
||||||
}
|
}
|
||||||
else if (current != null)
|
else if (current != null)
|
||||||
|
@ -90,12 +99,28 @@ namespace CHeaderToXML
|
||||||
current.Add(new XElement("use",
|
current.Add(new XElement("use",
|
||||||
new XAttribute("enum", words[1]),
|
new XAttribute("enum", words[1]),
|
||||||
new XAttribute("token", words[2])));
|
new XAttribute("token", words[2])));
|
||||||
|
//new XAttribute("profile", CurrentEntryMode == EntryModes.Compatibility ?
|
||||||
|
// "compatibility" : "core")));
|
||||||
}
|
}
|
||||||
else if (words[1] == "=")
|
else if (words[1] == "=")
|
||||||
{
|
{
|
||||||
current.Add(new XElement("token",
|
current.Add(new XElement("token",
|
||||||
new XAttribute("name", words[0]),
|
new XAttribute("name", words[0]),
|
||||||
new XAttribute("value", words[2])));
|
new XAttribute("value", words[2])));
|
||||||
|
//new XAttribute("profile", CurrentEntryMode == EntryModes.Compatibility ?
|
||||||
|
// "compatibility" : "core")));
|
||||||
|
}
|
||||||
|
else if (words[0] == "profile:")
|
||||||
|
{
|
||||||
|
//CurrentEntryMode = words[1] == "compatibility" ?
|
||||||
|
// EntryModes.Compatibility : EntryModes.Core;
|
||||||
|
}
|
||||||
|
else if (words[0].Contains("future_use"))
|
||||||
|
{
|
||||||
|
// This is a bug in the 4.3 specs. Unfortunately,
|
||||||
|
// Khronos is no longer accepting bug reports for
|
||||||
|
// the .spec files.
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue