diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2020-05-25 18:31:39 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2020-05-26 13:49:52 +0200 |
commit | fe42d2ea631b82974dbccbe65c6f039b837c9150 (patch) | |
tree | 0e4b7d94d169693acac72d7739744e304b0abd77 /src/quickshapes | |
parent | 90e645c7ac1d754efa90fa7be6555baa33f545e6 (diff) |
Store DXBC instead of HLSL source in the qsb files
Add the -c argument when invoking qsb. The scripts are batch files
already so they imply being run on Windows. With a standard VS prompt
one gets fxc in the PATH too so we can let qsb invoke it.
The result is that the built-in materials' qsb files do not contain HLSL
source code anymore, rather they have the intermediate format with
bytecode (conceptually this is like SPIR-V). So at run time there are
no calls to d3dCompile() anymore when these shaders are involved.
What does this mean in practice? With a few select examples:
shapes, opening the Gallery view - before: 80 ms spent on HLSL source
compilation - after: 0 ms.
imageparticle, opening the first 3 views - before: 166 ms spent on HLSL
source compilation - after: 0 ms
shadereffects - before: 77 ms spent on HLSL source compilation - after:
29 ms (because this has custom shaders that still ship HLSL source)
Long term this can hopefully be folded into qsb's to-be-implemented build
system integration, so that it can automatically invoke the appropriate
shader compiler on Windows and macOS. But for now we just do it manually
and check in the regenerated .qsb files.
Fixes: QTBUG-84268
Change-Id: Ibe2f80f99b3e52d5eb5eb808ea103cc766d22c04
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'src/quickshapes')
-rwxr-xr-x | src/quickshapes/shaders_ng/compile.bat | 15 | ||||
-rw-r--r-- | src/quickshapes/shaders_ng/conicalgradient.frag.qsb | bin | 1843 -> 2406 bytes | |||
-rw-r--r-- | src/quickshapes/shaders_ng/conicalgradient.vert.qsb | bin | 1662 -> 1961 bytes | |||
-rw-r--r-- | src/quickshapes/shaders_ng/lineargradient.frag.qsb | bin | 1363 -> 1563 bytes | |||
-rw-r--r-- | src/quickshapes/shaders_ng/lineargradient.vert.qsb | bin | 1869 -> 2214 bytes | |||
-rw-r--r-- | src/quickshapes/shaders_ng/radialgradient.frag.qsb | bin | 2539 -> 2919 bytes | |||
-rw-r--r-- | src/quickshapes/shaders_ng/radialgradient.vert.qsb | bin | 1779 -> 2100 bytes |
7 files changed, 9 insertions, 6 deletions
diff --git a/src/quickshapes/shaders_ng/compile.bat b/src/quickshapes/shaders_ng/compile.bat index 860dc7a07a..f5bd457190 100755 --- a/src/quickshapes/shaders_ng/compile.bat +++ b/src/quickshapes/shaders_ng/compile.bat @@ -37,9 +37,12 @@ :: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -qsb -b --glsl "150,120,100 es" --hlsl 50 --msl 12 -o lineargradient.vert.qsb lineargradient.vert -qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o lineargradient.frag.qsb lineargradient.frag -qsb -b --glsl "150,120,100 es" --hlsl 50 --msl 12 -o radialgradient.vert.qsb radialgradient.vert -qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o radialgradient.frag.qsb radialgradient.frag -qsb -b --glsl "150,120,100 es" --hlsl 50 --msl 12 -o conicalgradient.vert.qsb conicalgradient.vert -qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o conicalgradient.frag.qsb conicalgradient.frag +:: For HLSL we invoke fxc.exe (-c argument) and store the resulting intermediate format +:: instead of HLSL source, so this needs to be run on Windows from a developer command prompt. + +qsb -b --glsl "150,120,100 es" --hlsl 50 -c --msl 12 -o lineargradient.vert.qsb lineargradient.vert +qsb --glsl "150,120,100 es" --hlsl 50 -c --msl 12 -o lineargradient.frag.qsb lineargradient.frag +qsb -b --glsl "150,120,100 es" --hlsl 50 -c --msl 12 -o radialgradient.vert.qsb radialgradient.vert +qsb --glsl "150,120,100 es" --hlsl 50 -c --msl 12 -o radialgradient.frag.qsb radialgradient.frag +qsb -b --glsl "150,120,100 es" --hlsl 50 -c --msl 12 -o conicalgradient.vert.qsb conicalgradient.vert +qsb --glsl "150,120,100 es" --hlsl 50 -c --msl 12 -o conicalgradient.frag.qsb conicalgradient.frag diff --git a/src/quickshapes/shaders_ng/conicalgradient.frag.qsb b/src/quickshapes/shaders_ng/conicalgradient.frag.qsb Binary files differindex f82d798d87..e92dab1bfc 100644 --- a/src/quickshapes/shaders_ng/conicalgradient.frag.qsb +++ b/src/quickshapes/shaders_ng/conicalgradient.frag.qsb diff --git a/src/quickshapes/shaders_ng/conicalgradient.vert.qsb b/src/quickshapes/shaders_ng/conicalgradient.vert.qsb Binary files differindex 7d306e973b..51dc00a837 100644 --- a/src/quickshapes/shaders_ng/conicalgradient.vert.qsb +++ b/src/quickshapes/shaders_ng/conicalgradient.vert.qsb diff --git a/src/quickshapes/shaders_ng/lineargradient.frag.qsb b/src/quickshapes/shaders_ng/lineargradient.frag.qsb Binary files differindex 640c3c334f..57d921c2ba 100644 --- a/src/quickshapes/shaders_ng/lineargradient.frag.qsb +++ b/src/quickshapes/shaders_ng/lineargradient.frag.qsb diff --git a/src/quickshapes/shaders_ng/lineargradient.vert.qsb b/src/quickshapes/shaders_ng/lineargradient.vert.qsb Binary files differindex 1b5b19ded8..b7cafbc29a 100644 --- a/src/quickshapes/shaders_ng/lineargradient.vert.qsb +++ b/src/quickshapes/shaders_ng/lineargradient.vert.qsb diff --git a/src/quickshapes/shaders_ng/radialgradient.frag.qsb b/src/quickshapes/shaders_ng/radialgradient.frag.qsb Binary files differindex 1bcb8d55ef..a9372590ee 100644 --- a/src/quickshapes/shaders_ng/radialgradient.frag.qsb +++ b/src/quickshapes/shaders_ng/radialgradient.frag.qsb diff --git a/src/quickshapes/shaders_ng/radialgradient.vert.qsb b/src/quickshapes/shaders_ng/radialgradient.vert.qsb Binary files differindex 7a77792e08..3cfce054f5 100644 --- a/src/quickshapes/shaders_ng/radialgradient.vert.qsb +++ b/src/quickshapes/shaders_ng/radialgradient.vert.qsb |