mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 22:10:10 +01:00
vk/glsl_scraper: Add a --glsl-only option
This commit is contained in:
parent
4bcf58a192
commit
e37a89136f
1 changed files with 20 additions and 13 deletions
|
|
@ -81,7 +81,7 @@ class Shader:
|
||||||
os.remove(glsl_fname)
|
os.remove(glsl_fname)
|
||||||
os.remove(spirv_fname)
|
os.remove(spirv_fname)
|
||||||
|
|
||||||
def dump_c_code(self, f):
|
def dump_c_code(self, f, glsl_only = False):
|
||||||
f.write('\n\n')
|
f.write('\n\n')
|
||||||
var_prefix = '_glsl_helpers_shader{0}'.format(self.line)
|
var_prefix = '_glsl_helpers_shader{0}'.format(self.line)
|
||||||
|
|
||||||
|
|
@ -94,6 +94,9 @@ class Shader:
|
||||||
f.write('\n"{0}\\n"'.format(line))
|
f.write('\n"{0}\\n"'.format(line))
|
||||||
f.write(';\n\n')
|
f.write(';\n\n')
|
||||||
|
|
||||||
|
if glsl_only:
|
||||||
|
return
|
||||||
|
|
||||||
# Now dump the SPIR-V source
|
# Now dump the SPIR-V source
|
||||||
f.write('static const uint32_t {0}_spir_v_src[] = {{'.format(var_prefix))
|
f.write('static const uint32_t {0}_spir_v_src[] = {{'.format(var_prefix))
|
||||||
line_start = 0
|
line_start = 0
|
||||||
|
|
@ -192,6 +195,7 @@ def open_file(name, mode):
|
||||||
infname = None
|
infname = None
|
||||||
outfname = '-'
|
outfname = '-'
|
||||||
glslang = 'glslangValidator'
|
glslang = 'glslangValidator'
|
||||||
|
glsl_only = False
|
||||||
|
|
||||||
arg_idx = 1
|
arg_idx = 1
|
||||||
while arg_idx < len(sys.argv):
|
while arg_idx < len(sys.argv):
|
||||||
|
|
@ -202,6 +206,8 @@ while arg_idx < len(sys.argv):
|
||||||
outfname = sys.argv[arg_idx]
|
outfname = sys.argv[arg_idx]
|
||||||
elif sys.argv[arg_idx].startswith('--with-glslang='):
|
elif sys.argv[arg_idx].startswith('--with-glslang='):
|
||||||
glslang = sys.argv[arg_idx][len('--with-glslang='):]
|
glslang = sys.argv[arg_idx][len('--with-glslang='):]
|
||||||
|
elif sys.argv[arg_idx] == '--glsl-only':
|
||||||
|
glsl_only = True;
|
||||||
else:
|
else:
|
||||||
infname = sys.argv[arg_idx]
|
infname = sys.argv[arg_idx]
|
||||||
break
|
break
|
||||||
|
|
@ -214,20 +220,21 @@ with open_file(infname, 'r') as infile:
|
||||||
parser = Parser(infile)
|
parser = Parser(infile)
|
||||||
parser.run()
|
parser.run()
|
||||||
|
|
||||||
# glslangValidator has an absolutely *insane* interface. We pretty much
|
if not glsl_only:
|
||||||
# have to run in a temporary directory. Sad day.
|
# glslangValidator has an absolutely *insane* interface. We pretty much
|
||||||
current_dir = os.getcwd()
|
# have to run in a temporary directory. Sad day.
|
||||||
tmpdir = tempfile.mkdtemp('glsl_scraper')
|
current_dir = os.getcwd()
|
||||||
|
tmpdir = tempfile.mkdtemp('glsl_scraper')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
os.chdir(tmpdir)
|
os.chdir(tmpdir)
|
||||||
|
|
||||||
for shader in parser.shaders:
|
for shader in parser.shaders:
|
||||||
shader.compile()
|
shader.compile()
|
||||||
|
|
||||||
os.chdir(current_dir)
|
os.chdir(current_dir)
|
||||||
finally:
|
finally:
|
||||||
shutil.rmtree(tmpdir)
|
shutil.rmtree(tmpdir)
|
||||||
|
|
||||||
with open_file(outfname, 'w') as outfile:
|
with open_file(outfname, 'w') as outfile:
|
||||||
outfile.write("""\
|
outfile.write("""\
|
||||||
|
|
@ -238,4 +245,4 @@ with open_file(outfname, 'w') as outfile:
|
||||||
#include <stdint.h>""")
|
#include <stdint.h>""")
|
||||||
|
|
||||||
for shader in parser.shaders:
|
for shader in parser.shaders:
|
||||||
shader.dump_c_code(outfile)
|
shader.dump_c_code(outfile, glsl_only)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue