spirv: Auto-generate spirv_info.h
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com> Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Iván Briano <ivan.briano@intel.com> Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28905>
This commit is contained in:

committed by
Marge Bot

parent
c7634c25e4
commit
a09c5d55ed
@@ -25,12 +25,14 @@ vtn_gather_types_c = custom_target(
|
|||||||
command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
|
command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
|
||||||
)
|
)
|
||||||
|
|
||||||
spirv_info_c = custom_target(
|
spirv_info = custom_target(
|
||||||
'spirv_info.c',
|
'spirv_info',
|
||||||
input : files('spirv_info_c.py', 'spirv.core.grammar.json'),
|
input : files('spirv_info_gen.py', 'spirv.core.grammar.json'),
|
||||||
output : 'spirv_info.c',
|
output : ['spirv_info.h', 'spirv_info.c'],
|
||||||
command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
|
command : [prog_python, '@INPUT0@', '--json', '@INPUT1@',
|
||||||
|
'--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@'],
|
||||||
)
|
)
|
||||||
|
spirv_info_h = spirv_info[0]
|
||||||
|
|
||||||
vtn_generator_ids_h = custom_target(
|
vtn_generator_ids_h = custom_target(
|
||||||
'vtn_generator_ids.h',
|
'vtn_generator_ids.h',
|
||||||
@@ -46,7 +48,6 @@ files_libvtn = files(
|
|||||||
'gl_spirv.c',
|
'gl_spirv.c',
|
||||||
'nir_spirv.h',
|
'nir_spirv.h',
|
||||||
'spirv.h',
|
'spirv.h',
|
||||||
'spirv_info.h',
|
|
||||||
'spirv_to_nir.c',
|
'spirv_to_nir.c',
|
||||||
'vtn_alu.c',
|
'vtn_alu.c',
|
||||||
'vtn_amd.c',
|
'vtn_amd.c',
|
||||||
@@ -63,7 +64,7 @@ files_libvtn = files(
|
|||||||
libvtn = static_library(
|
libvtn = static_library(
|
||||||
'vtn',
|
'vtn',
|
||||||
[files_libvtn,
|
[files_libvtn,
|
||||||
spirv_info_c,
|
spirv_info,
|
||||||
vtn_gather_types_c,
|
vtn_gather_types_c,
|
||||||
vtn_generator_ids_h,
|
vtn_generator_ids_h,
|
||||||
],
|
],
|
||||||
|
@@ -1,43 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright © 2016 Intel Corporation
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice (including the next
|
|
||||||
* paragraph) shall be included in all copies or substantial portions of the
|
|
||||||
* Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
* IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _SPIRV_INFO_H_
|
|
||||||
#define _SPIRV_INFO_H_
|
|
||||||
|
|
||||||
#include "spirv.h"
|
|
||||||
|
|
||||||
const char *spirv_addressingmodel_to_string(SpvAddressingModel model);
|
|
||||||
const char *spirv_builtin_to_string(SpvBuiltIn builtin);
|
|
||||||
const char *spirv_capability_to_string(SpvCapability cap);
|
|
||||||
const char *spirv_decoration_to_string(SpvDecoration dec);
|
|
||||||
const char *spirv_dim_to_string(SpvDim dim);
|
|
||||||
const char *spirv_executionmode_to_string(SpvExecutionMode mode);
|
|
||||||
const char *spirv_executionmodel_to_string(SpvExecutionModel model);
|
|
||||||
const char *spirv_imageformat_to_string(SpvImageFormat format);
|
|
||||||
const char *spirv_imageoperands_to_string(SpvImageOperandsMask op);
|
|
||||||
const char *spirv_memorymodel_to_string(SpvMemoryModel cap);
|
|
||||||
const char *spirv_op_to_string(SpvOp op);
|
|
||||||
const char *spirv_storageclass_to_string(SpvStorageClass sc);
|
|
||||||
const char *spirv_fproundingmode_to_string(SpvFPRoundingMode sc);
|
|
||||||
|
|
||||||
#endif /* SPIRV_INFO_H */
|
|
@@ -63,11 +63,33 @@ def collect_opcodes(spirv):
|
|||||||
|
|
||||||
def parse_args():
|
def parse_args():
|
||||||
p = argparse.ArgumentParser()
|
p = argparse.ArgumentParser()
|
||||||
p.add_argument("json")
|
p.add_argument('--out-c', required=True, help='Output C file.')
|
||||||
p.add_argument("out")
|
p.add_argument('--out-h', required=True, help='Output H file.')
|
||||||
|
p.add_argument('--json', required=True, help='SPIR-V JSON file.')
|
||||||
return p.parse_args()
|
return p.parse_args()
|
||||||
|
|
||||||
TEMPLATE = Template("""\
|
TEMPLATE_H = Template("""\
|
||||||
|
/* DO NOT EDIT - This file is generated automatically by spirv_info_c.py script */
|
||||||
|
|
||||||
|
""" + COPYRIGHT + """\
|
||||||
|
|
||||||
|
#ifndef _SPIRV_INFO_H_
|
||||||
|
#define _SPIRV_INFO_H_
|
||||||
|
|
||||||
|
#include "spirv.h"
|
||||||
|
|
||||||
|
% for kind,values,category in info:
|
||||||
|
% if category == "BitEnum":
|
||||||
|
const char *spirv_${kind.lower()}_to_string(Spv${kind}Mask v);
|
||||||
|
% else:
|
||||||
|
const char *spirv_${kind.lower()}_to_string(Spv${kind} v);
|
||||||
|
% endif
|
||||||
|
% endfor
|
||||||
|
|
||||||
|
#endif /* SPIRV_INFO_H */
|
||||||
|
""")
|
||||||
|
|
||||||
|
TEMPLATE_C = Template("""\
|
||||||
/* DO NOT EDIT - This file is generated automatically by spirv_info_c.py script */
|
/* DO NOT EDIT - This file is generated automatically by spirv_info_c.py script */
|
||||||
|
|
||||||
""" + COPYRIGHT + """\
|
""" + COPYRIGHT + """\
|
||||||
@@ -128,5 +150,7 @@ if __name__ == "__main__":
|
|||||||
collect_opcodes(spirv_info),
|
collect_opcodes(spirv_info),
|
||||||
]
|
]
|
||||||
|
|
||||||
with open(pargs.out, 'w', encoding='utf-8') as f:
|
with open(pargs.out_h, 'w', encoding='utf-8') as f:
|
||||||
f.write(TEMPLATE.render(info=info))
|
f.write(TEMPLATE_H.render(info=info))
|
||||||
|
with open(pargs.out_c, 'w', encoding='utf-8') as f:
|
||||||
|
f.write(TEMPLATE_C.render(info=info))
|
Reference in New Issue
Block a user