@@ -78,7 +78,7 @@ def prepareVertFile():
78
78
79
79
################################################################################
80
80
81
- def prepareShaders (frag ):
81
+ def prepareShaders (args , frag ):
82
82
shutil .copy (frag , 'test.frag' )
83
83
prepareVertFile ()
84
84
@@ -95,13 +95,19 @@ def prepareShaders(frag):
95
95
cmd = glslang + ' test.frag -V -o test.frag.spv'
96
96
subprocess .run (cmd , shell = True , check = True )
97
97
98
+ # Optimize
99
+ if args .spirvopt :
100
+ cmd = os .path .dirname (HERE ) + '/../../bin/' + binType + '/spirv-opt ' + args .spirvopt + ' test.frag.spv -o test.frag.spv.opt'
101
+ subprocess .run (cmd , shell = True , check = True )
102
+ shutil .move ('test.frag.spv.opt' , 'test.frag.spv' )
103
+
98
104
# Vert
99
105
cmd = glslang + ' test.vert -V -o test.vert.spv'
100
106
subprocess .run (cmd , shell = True , check = True )
101
107
102
108
################################################################################
103
109
104
- def getImageVulkanAndroid (frag ):
110
+ def getImageVulkanAndroid (args , frag ):
105
111
106
112
app = 'vulkan.samples.vulkan_worker'
107
113
@@ -111,7 +117,7 @@ def getImageVulkanAndroid(frag):
111
117
remove ('image.png' )
112
118
adb ('shell rm -rf /sdcard/graphicsfuzz/*' )
113
119
114
- prepareShaders (frag )
120
+ prepareShaders (args , frag )
115
121
116
122
# FIXME: Clean up preparation of shader files. Right now it's
117
123
# convenient to have a copy of the JSON with the original name of
@@ -186,7 +192,7 @@ def getImageVulkanAndroid(frag):
186
192
187
193
################################################################################
188
194
189
- def doImageJob (imageJob ):
195
+ def doImageJob (args , imageJob ):
190
196
name = imageJob .name .replace ('.frag' ,'' )
191
197
fragFile = name + '.frag'
192
198
jsonFile = name + '.json'
@@ -205,7 +211,7 @@ def doImageJob(imageJob):
205
211
remove (png )
206
212
remove (log )
207
213
208
- getimageResult = getImageVulkanAndroid (fragFile )
214
+ getimageResult = getImageVulkanAndroid (args , fragFile )
209
215
210
216
# Try to get our own log file in any case
211
217
if os .path .exists ('log.txt' ):
@@ -296,6 +302,10 @@ def get_service(server, args):
296
302
default = 'http://localhost:8080' ,
297
303
help = 'Server URL (default: http://localhost:8080 )' )
298
304
305
+ parser .add_argument (
306
+ '--spirvopt' ,
307
+ help = 'Enable spirv-opt with these optimisation flags (e.g. --spirvopt=-O)' )
308
+
299
309
args = parser .parse_args ()
300
310
301
311
print ('token: ' + args .token )
@@ -336,7 +346,7 @@ def get_service(server, args):
336
346
else :
337
347
assert (job .imageJob != None )
338
348
print ("#### Image job: " + job .imageJob .name )
339
- job .imageJob .result = doImageJob (job .imageJob )
349
+ job .imageJob .result = doImageJob (args , job .imageJob )
340
350
print ("Send back, results status: {}" .format (job .imageJob .result .status ))
341
351
service .jobDone (token , job )
342
352
0 commit comments