Skip to content

Commit fcbff76

Browse files
committed
Merge branch 'dev/jerrans/depfile-fix' into 'main'
Fix for shaders not rebuilding and spirv-val full path See merge request lightspeedrtx/dxvk-remix-nv!1605
2 parents 85767e5 + ef38278 commit fcbff76

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

meson.build

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ endif
250250
# Shader Compile Tools
251251
glsl_compiler = find_program('external/glslangvalidator/glslangValidator')
252252
slang_compiler = find_program('external/slang/slangc')
253+
spirv_val = find_program('external/spirv_tools/spirv-val')
253254
python_interpreter = find_program('python3', 'python')
254255
shader_compile_script = join_paths(global_src_root_norm, 'scripts-common/compile_shaders.py')
255256

@@ -307,6 +308,7 @@ rtx_shaders_command_arguments = [
307308
# See this for more info: https://mesonbuild.com/Reference-manual_returned_external_program.html#external_programfull_path
308309
'-glslang', fs.as_posix(glsl_compiler.full_path()),
309310
'-slangc', fs.as_posix(slang_compiler.full_path()),
311+
'-spirvval', fs.as_posix(spirv_val.full_path()),
310312
'-input', rtx_shader_source_directory,
311313
'-include', shader_directory,
312314
'-include', rtxdi_include_path_string,

scripts-common/compile_shaders.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def sigint_handler(signal, frame):
2525
parser = argparse.ArgumentParser(description='Compiles DXVK-RT shaders.')
2626
parser.add_argument('-glslang', required=True, type=str, dest='glslang')
2727
parser.add_argument('-slangc', required=True, type=str, dest='slangc')
28+
parser.add_argument('-spirvval', required=True, type=str, dest='spirvval')
2829
parser.add_argument('-input', required=False, type=str, dest='input', default='.')
2930
parser.add_argument('-I', '-include', action='append', type=str, dest='includes', default=[])
3031
parser.add_argument('-output', required=True, type=str, dest='output')
@@ -216,10 +217,9 @@ def createSlangTask(inputFile, variantSpec):
216217
variantName, variantType = os.path.splitext(variantSpec[0])
217218

218219
variantDefines = ' '.join([f'-D{x}' for x in variantSpec[1:]])
219-
glslFile = os.path.join(args.output, variantName + variantType)
220220
destFile = os.path.join(args.output, variantName + destExtension)
221221
depFile = os.path.join(args.output, variantName + ".d")
222-
task = createBasicTask(inputFile, destFile, glslFile, depFile)
222+
task = createBasicTask(inputFile, destFile, destFile, depFile)
223223

224224
if variantName != inputName:
225225
task.customName = f'{os.path.basename(inputFile)} ({variantName})'
@@ -242,7 +242,7 @@ def createSlangTask(inputFile, variantSpec):
242242

243243
script_dir = os.path.dirname(os.path.realpath(__file__))
244244
validate_shader_path = os.path.join(script_dir, 'validate_shader.py')
245-
command2 = f'python {validate_shader_path} {destFile}'
245+
command2 = f'python {validate_shader_path} -spirvval {args.spirvval} -input {destFile}'
246246
task.commands = [command1, command2]
247247

248248
return task

scripts-common/validate_shader.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import re
44
import struct
55
import subprocess
6+
import argparse
67

78
remove_temp_file = False
89

@@ -47,15 +48,16 @@ def validate_shader(path_to_shaders, shader_file):
4748
if remove_temp_file:
4849
os.remove(spv_file)
4950

50-
if len(sys.argv) != 2:
51-
print(sys.argv[0] + ' <path to spv files>')
52-
exit(1)
51+
parser = argparse.ArgumentParser(description='Validates SPIRV shaders.')
52+
parser.add_argument('-spirvval', required=True, type=str, dest='spirvval')
53+
parser.add_argument('-input', required=True, type=str, dest='input')
54+
args = parser.parse_args()
5355

5456
# path to spirv-val provided by a build of spirv-tools in packman
55-
spirv_val_path = os.path.join('..', 'external', 'spirv_tools', 'spirv-val.exe')
57+
spirv_val_path = args.spirvval
5658
if not os.path.exists(spirv_val_path):
57-
print('spirv-val not found at ' + spirv_val_path)
59+
print('spirv-val not found at ' + args.spirvval)
5860
exit(1)
5961

60-
if sys.argv[1].endswith('.h') or sys.argv[1].endswith('.spv'):
61-
validate_shader('', sys.argv[1])
62+
if args.input.endswith('.h') or args.input.endswith('.spv'):
63+
validate_shader('', args.input)

0 commit comments

Comments
 (0)