No, this is all I had.
Tables of tables formats are just in anv :
https://github.com/djdeath/mesa/commit/b40dd5245cdaa5d686b8494f0e8c784b2eea4211#diff-8d7721e9d80d390ff503d2c3b4e1adc5L274
On 18/09/17 15:48, Jason Ekstrand wrote:
Did you have a patch to the enum generator to actually generate the
table of tables for the formats? I don't see that in ithe series.
On Mon, Sep 18, 2017 at 7:46 AM, Jason Ekstrand <ja...@jlekstrand.net
<mailto:ja...@jlekstrand.net>> wrote:
On Fri, Sep 15, 2017 at 7:10 AM, Lionel Landwerlin
<lionel.g.landwer...@intel.com
<mailto:lionel.g.landwer...@intel.com>> wrote:
New extensions can introduce additional enums. Most of the new
enums
will have disjoint numbers from the initial enums. For example new
formats introduced by VK_IMG_format_pvrtc :
VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
It's obvious we can't have a single table for handling those
anymore.
Fortunately the enum values actually contain the number of the
extension that introduced the new enums. So we can build an
indirection table off the extension number and then index by
subtracting the first enum of the the format enum value.
This change makes the extension number available in the
generated enum
code.
Signed-off-by: Lionel Landwerlin
<lionel.g.landwer...@intel.com
<mailto:lionel.g.landwer...@intel.com>>
---
src/vulkan/util/gen_enum_to_str.py | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/src/vulkan/util/gen_enum_to_str.py
b/src/vulkan/util/gen_enum_to_str.py
index 28bfbfde235..06d625d9ac8 100644
--- a/src/vulkan/util/gen_enum_to_str.py
+++ b/src/vulkan/util/gen_enum_to_str.py
@@ -91,6 +91,10 @@ H_TEMPLATE = Template(textwrap.dedent(u"""\
#include <vulkan/vulkan.h>
+ % for ext in extensions:
+ #define _${ext.name <http://ext.name>}_number (${ext.number})
I was about to say that this is already in the Vulkan headers but
then I looked and it isn't. :-(
+ % endfor
+
% for enum in enums:
const char * vk_${enum.name
<http://enum.name>[2:]}_to_str(${enum.name <http://enum.name>}
input);
% endfor
@@ -113,6 +117,14 @@ class NamedFactory(object):
return n
+class VkExtension(object):
+ """Simple struct-like class representing extensions"""
+
+ def __init__(self, name, number):
+ self.name <http://self.name> = name
+ self.number = number
+
+
class VkEnum(object):
"""Simple struct-like class representing a single Vulkan
Enum."""
@@ -121,6 +133,7 @@ class VkEnum(object):
self.values = values or []
+
Extra newline. Other than, LGTM
def xml_parser(filename):
"""Parse the XML file and return parsed data.
@@ -128,6 +141,7 @@ def xml_parser(filename):
of VkEnum objects.
"""
enum_factory = NamedFactory(VkEnum)
+ ext_factory = NamedFactory(VkExtension)
with open(filename, 'rb') as f:
context = iter(et.iterparse(f, events=('start', 'end')))
@@ -144,6 +158,8 @@ def xml_parser(filename):
enum = enum_factory(elem.attrib['name'])
enum.values.extend([e.attrib['name'] for e in elem
if e.tag == 'enum'])
+ elif event == 'start' and elem.tag == 'extension':
+ ext_factory(elem.attrib['name'],
int(elem.attrib['number']))
elif event == 'end' and elem.tag == 'extension':
if elem.attrib['supported'] != 'vulkan':
continue
@@ -153,7 +169,8 @@ def xml_parser(filename):
root.clear()
- return enum_factory.registry.values()
+ return (enum_factory.registry.values(),
+ ext_factory.registry.values())
def main():
@@ -165,14 +182,16 @@ def main():
args = parser.parse_args()
- enums = xml_parser(args.xml)
+ enums, extensions = xml_parser(args.xml)
enums.sort(key=lambda e: e.name <http://e.name>)
+ extensions.sort(key=lambda e: e.number)
for template, file_ in [(C_TEMPLATE,
os.path.join(args.outdir, 'vk_enum_to_str.c')),
(H_TEMPLATE,
os.path.join(args.outdir, 'vk_enum_to_str.h'))]:
with open(file_, 'wb') as f:
f.write(template.render(
file=os.path.basename(__file__),
enums=enums,
+ extensions=extensions,
copyright=COPYRIGHT))
--
2.14.1
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
<mailto:mesa-dev@lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
<https://lists.freedesktop.org/mailman/listinfo/mesa-dev>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev