Compare commits
201 Commits
ed257e2bdf
...
master
Author | SHA1 | Date | |
---|---|---|---|
06aba7dee9 | |||
c622ed7f86 | |||
6cccd7458d | |||
41137b6df3 | |||
bb2d06b0a3 | |||
e87d0d5703 | |||
2b71254a49 | |||
b2b90e54e2 | |||
ec5a3c423e | |||
8f0a4c64db | |||
![]() |
be564292f0 | ||
![]() |
0504953b35 | ||
![]() |
48f9ed8b08 | ||
![]() |
4ce1a1a68d | ||
![]() |
277d09e679 | ||
![]() |
43ec5f13f4 | ||
![]() |
715e36a0cc | ||
![]() |
5ff0c048b7 | ||
![]() |
3f02132668 | ||
![]() |
86151772b2 | ||
![]() |
95c29a9a78 | ||
![]() |
3359d240cf | ||
![]() |
b0ed478885 | ||
![]() |
90f7810584 | ||
![]() |
2bfacdac91 | ||
![]() |
4c57db1595 | ||
![]() |
a4aceb57de | ||
![]() |
efc33d1ee5 | ||
![]() |
323836e46b | ||
![]() |
afe6e781bd | ||
![]() |
b2dc622faf | ||
![]() |
f89684110b | ||
![]() |
d3b8d91a93 | ||
![]() |
f3f23fece3 | ||
![]() |
e8d657bdbe | ||
![]() |
fb2882a3c3 | ||
![]() |
589431af5c | ||
![]() |
0bbe74c709 | ||
![]() |
ffefbcd9f3 | ||
![]() |
3787b6947f | ||
![]() |
e3a711b6fc | ||
![]() |
a1f8cd429f | ||
![]() |
adfcaba7ae | ||
![]() |
f1cb8608b3 | ||
![]() |
db8719ae07 | ||
![]() |
4e7ccd4af5 | ||
![]() |
d072aa6676 | ||
![]() |
c5117b328a | ||
![]() |
70d125b924 | ||
![]() |
98aa694422 | ||
![]() |
3805888a57 | ||
![]() |
b70669a059 | ||
![]() |
76b52ebf77 | ||
![]() |
34d4f78f03 | ||
![]() |
79a9f7f652 | ||
![]() |
bfd96d3044 | ||
![]() |
396596ca4a | ||
![]() |
171a322025 | ||
![]() |
54726b3c1c | ||
![]() |
6bc35749ec | ||
![]() |
d291b15911 | ||
![]() |
c8c669fc2a | ||
![]() |
0f873e757e | ||
![]() |
47454f5078 | ||
![]() |
3c98026a1c | ||
![]() |
4420f9b33b | ||
![]() |
a0010e27ba | ||
![]() |
775864ef74 | ||
![]() |
808c7ed17c | ||
![]() |
91a97b4c69 | ||
![]() |
29b87a4e69 | ||
![]() |
4aa56496d6 | ||
![]() |
026a9bcdb2 | ||
![]() |
c81b34fb24 | ||
![]() |
fe82779952 | ||
![]() |
65397339c5 | ||
![]() |
4f3ae4b03d | ||
![]() |
45ce545ad3 | ||
![]() |
77417d5c9e | ||
![]() |
865fe73958 | ||
![]() |
9b1a0f4d3e | ||
![]() |
2af597d1a8 | ||
![]() |
856e280502 | ||
![]() |
a9a2625416 | ||
![]() |
9afd346127 | ||
![]() |
d5f3ad6c9a | ||
![]() |
9e41635d74 | ||
![]() |
6defcb2478 | ||
![]() |
8a6a311d22 | ||
![]() |
f47028995c | ||
![]() |
d9a6fb2247 | ||
![]() |
44779f508a | ||
![]() |
4ae01c5f41 | ||
![]() |
051f18c0cc | ||
![]() |
eaa7057768 | ||
![]() |
3ebb72cc74 | ||
![]() |
d89c0b1d13 | ||
![]() |
9575e33186 | ||
![]() |
6a7ec4be7b | ||
![]() |
5793fbd624 | ||
![]() |
72713baf74 | ||
![]() |
4d95e22826 | ||
![]() |
a6662c53ce | ||
![]() |
b587425025 | ||
![]() |
48a467b413 | ||
![]() |
6f22e41e0d | ||
![]() |
9fbc561947 | ||
![]() |
a5bf69936d | ||
![]() |
e06bd35fea | ||
![]() |
4c9cc240e6 | ||
![]() |
9caca7a17b | ||
![]() |
d1517d64cf | ||
![]() |
f697b55c92 | ||
![]() |
1e4955adbc | ||
![]() |
d9c3c7538b | ||
![]() |
f202aa665e | ||
![]() |
e00517acfe | ||
![]() |
076c35863e | ||
![]() |
14e57abf26 | ||
![]() |
a02dde76f6 | ||
![]() |
49aad1361e | ||
![]() |
84d11c472a | ||
![]() |
1397890e8e | ||
![]() |
010019f93b | ||
![]() |
0bbec2e8f6 | ||
![]() |
a3310b7cff | ||
![]() |
9743480f3c | ||
![]() |
9d8c7b75c9 | ||
![]() |
d6e9d3bb4e | ||
![]() |
955f21aad2 | ||
![]() |
bc6b2bc17a | ||
![]() |
dfc97740ff | ||
![]() |
9c7fd1a33e | ||
![]() |
b8955549ef | ||
![]() |
dfdd0ed2ca | ||
![]() |
f46f4b192a | ||
![]() |
68f073b195 | ||
![]() |
4142fead74 | ||
![]() |
f766ee96f5 | ||
![]() |
a270fdae55 | ||
![]() |
9fe5223370 | ||
![]() |
bdba39bae6 | ||
![]() |
893145ead2 | ||
![]() |
1aefd184a6 | ||
![]() |
77f7cdfb1e | ||
![]() |
8ff8b45131 | ||
![]() |
adcc7e8163 | ||
![]() |
cdb350b356 | ||
![]() |
f8a2442a16 | ||
![]() |
fbabd37aca | ||
![]() |
2aca6d419c | ||
![]() |
45405e1d94 | ||
![]() |
1db9cd2854 | ||
![]() |
c43008e829 | ||
![]() |
14e5a04e70 | ||
![]() |
59abdcf912 | ||
![]() |
b34f619e1c | ||
![]() |
ef77cf3a92 | ||
![]() |
43978b7c96 | ||
![]() |
0094e47972 | ||
![]() |
cd2082e058 | ||
![]() |
204812694c | ||
![]() |
aae2a7ae08 | ||
![]() |
2ca0ee3ba4 | ||
![]() |
9cdfc5a511 | ||
![]() |
c64c98267c | ||
![]() |
f5fa593143 | ||
![]() |
6d41bb9c55 | ||
![]() |
ae55d83a88 | ||
![]() |
4386679bcd | ||
![]() |
d62ef8a20a | ||
![]() |
8329d4a44b | ||
![]() |
d604f26843 | ||
![]() |
95ad533eb0 | ||
![]() |
7341a21b34 | ||
![]() |
5137ce1a95 | ||
![]() |
58d302cfa2 | ||
![]() |
4e9cde50bb | ||
![]() |
0d3211ff7b | ||
![]() |
8504d5ae1c | ||
![]() |
51813b65e9 | ||
![]() |
ca8d07d0bc | ||
![]() |
615741f278 | ||
![]() |
42e94ee67e | ||
![]() |
1fb2f1d789 | ||
![]() |
9b67d41b85 | ||
![]() |
06a7078ce7 | ||
![]() |
1d978158de | ||
![]() |
d1fc064e79 | ||
![]() |
d38d06c03f | ||
![]() |
68935bc2c6 | ||
![]() |
bec8359bf7 | ||
![]() |
a88f674124 | ||
![]() |
dcae187376 | ||
![]() |
f9b760e6c7 | ||
![]() |
c6b3f279a7 | ||
![]() |
4fe00178c8 | ||
![]() |
6d8b00b1c6 | ||
![]() |
4fc43cd3c1 | ||
![]() |
19d816c8c9 | ||
![]() |
586baa35a4 |
108
.appveyor.yml
108
.appveyor.yml
@ -1,108 +0,0 @@
|
||||
# Windows Build Configuration for AppVeyor
|
||||
# http://www.appveyor.com/docs/appveyor-yml
|
||||
|
||||
# build version format
|
||||
version: "{build}"
|
||||
|
||||
os: Visual Studio 2015
|
||||
|
||||
platform:
|
||||
- x64
|
||||
|
||||
configuration:
|
||||
- Debug
|
||||
- Release
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
# changes to these files don't need to trigger testing
|
||||
skip_commits:
|
||||
files:
|
||||
- README.md
|
||||
- README-spirv-remap.txt
|
||||
- LICENSE.txt
|
||||
- CODE_OF_CONDUCT.md
|
||||
- BUILD.*
|
||||
- WORKSPACE
|
||||
- kokoro/*
|
||||
- make-revision
|
||||
- Android.mk
|
||||
- _config.yml
|
||||
|
||||
# Travis advances the master-tot tag to current top of the tree after
|
||||
# each push into the master branch, because it relies on that tag to
|
||||
# upload build artifacts to the master-tot release. This will cause
|
||||
# double testing for each push on Appveyor: one for the push, one for
|
||||
# the tag advance. Disable testing tags.
|
||||
skip_tags: true
|
||||
|
||||
clone_depth: 5
|
||||
|
||||
matrix:
|
||||
fast_finish: true # Show final status immediately if a test fails.
|
||||
|
||||
# scripts that run after cloning repository
|
||||
install:
|
||||
- C:/Python27/python.exe update_glslang_sources.py
|
||||
- set PATH=C:\ninja;C:\Python36;%PATH%
|
||||
- git clone https://github.com/google/googletest.git External/googletest
|
||||
|
||||
build:
|
||||
parallel: true # enable MSBuild parallel builds
|
||||
verbosity: minimal
|
||||
|
||||
build_script:
|
||||
- mkdir build && cd build
|
||||
- cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=install ..
|
||||
- cmake --build . --config %CONFIGURATION% --target install
|
||||
|
||||
test_script:
|
||||
- ctest -C %CONFIGURATION% --output-on-failure
|
||||
- cd ../Test && bash runtests
|
||||
- cd ../build
|
||||
|
||||
after_test:
|
||||
# For debug build, the generated dll has a postfix "d" in its name.
|
||||
- ps: >-
|
||||
If ($env:configuration -Match "Debug") {
|
||||
$env:SUFFIX="d"
|
||||
} Else {
|
||||
$env:SUFFIX=""
|
||||
}
|
||||
- cd install
|
||||
# Zip all glslang artifacts for uploading and deploying
|
||||
- 7z a glslang-master-windows-"%PLATFORM%"-"%CONFIGURATION%".zip
|
||||
bin\glslangValidator.exe
|
||||
bin\spirv-remap.exe
|
||||
include\glslang\*
|
||||
lib\GenericCodeGen%SUFFIX%.lib
|
||||
lib\glslang%SUFFIX%.lib
|
||||
lib\glslang-default-resource-limits%SUFFIX%.lib
|
||||
lib\HLSL%SUFFIX%.lib
|
||||
lib\MachineIndependent%SUFFIX%.lib
|
||||
lib\OGLCompiler%SUFFIX%.lib
|
||||
lib\OSDependent%SUFFIX%.lib
|
||||
lib\SPIRV%SUFFIX%.lib
|
||||
lib\SPVRemapper%SUFFIX%.lib
|
||||
lib\SPIRV-Tools%SUFFIX%.lib
|
||||
lib\SPIRV-Tools-opt%SUFFIX%.lib
|
||||
|
||||
artifacts:
|
||||
- path: build\install\*.zip
|
||||
name: artifacts-zip
|
||||
|
||||
deploy:
|
||||
- provider: GitHub
|
||||
auth_token:
|
||||
secure: YglcSYdl0TylEa59H4K6lylBEDr586NAt2EMgZquSo+iuPrwgZQuJLPCoihSm9y6
|
||||
release: master-tot
|
||||
description: "Continuous build of the latest master branch by Appveyor and Github"
|
||||
artifact: artifacts-zip
|
||||
draft: false
|
||||
prerelease: false
|
||||
force_update: true
|
||||
on:
|
||||
branch: master
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
22
.github/dependabot.yml
vendored
Normal file
22
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
# Copyright 2023 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions" # Necessary to update action hashes
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
# Allow up to 3 opened pull requests for github-actions versions
|
||||
open-pull-requests-limit: 3
|
135
.github/workflows/continuous_deployment.yml
vendored
135
.github/workflows/continuous_deployment.yml
vendored
@ -20,11 +20,26 @@ on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
paths-ignore:
|
||||
- 'README.md'
|
||||
- 'README-spirv-remap.txt'
|
||||
- 'LICENSE.txt'
|
||||
- 'CODE_OF_CONDUCT.md'
|
||||
- 'BUILD.*'
|
||||
- 'WORKSPACE'
|
||||
- 'kokoro/*'
|
||||
- 'make-revision'
|
||||
- 'Android.mk'
|
||||
- '_config.yml'
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
linux:
|
||||
runs-on: ${{matrix.os.genus}}
|
||||
permissions:
|
||||
contents: write
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@ -32,8 +47,9 @@ jobs:
|
||||
compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
|
||||
cmake_build_type: [Debug, Release]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-python@v2
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
||||
with:
|
||||
python-version: '3.7'
|
||||
- name: Install Ubuntu Package Dependencies
|
||||
@ -71,10 +87,11 @@ jobs:
|
||||
- name: Zip
|
||||
if: ${{ matrix.compiler.cc == 'clang' }}
|
||||
env:
|
||||
ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||
ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||
run: |
|
||||
cd build/install
|
||||
zip ${ARCHIVE} \
|
||||
bin/glslang \
|
||||
bin/glslangValidator \
|
||||
include/glslang/* \
|
||||
include/glslang/**/* \
|
||||
@ -92,8 +109,8 @@ jobs:
|
||||
- name: Deploy
|
||||
if: ${{ matrix.compiler.cc == 'clang' }}
|
||||
env:
|
||||
ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||
uses: actions/github-script@v5
|
||||
ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
|
||||
with:
|
||||
script: |
|
||||
const script = require('.github/workflows/deploy.js')
|
||||
@ -101,6 +118,8 @@ jobs:
|
||||
|
||||
macos:
|
||||
runs-on: ${{matrix.os.genus}}
|
||||
permissions:
|
||||
contents: write
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@ -108,8 +127,9 @@ jobs:
|
||||
compiler: [{cc: clang, cxx: clang++}]
|
||||
cmake_build_type: [Debug, Release]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-python@v2
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
||||
with:
|
||||
python-version: '3.7'
|
||||
- name: Install GoogleTest
|
||||
@ -142,10 +162,11 @@ jobs:
|
||||
cd ../Test && ./runtests
|
||||
- name: Zip
|
||||
env:
|
||||
ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||
ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||
run: |
|
||||
cd build/install
|
||||
zip ${ARCHIVE} \
|
||||
bin/glslang \
|
||||
bin/glslangValidator \
|
||||
include/glslang/* \
|
||||
include/glslang/**/* \
|
||||
@ -162,8 +183,100 @@ jobs:
|
||||
lib/libSPIRV-Tools-opt.a
|
||||
- name: Deploy
|
||||
env:
|
||||
ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||
uses: actions/github-script@v5
|
||||
ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
|
||||
with:
|
||||
script: |
|
||||
const script = require('.github/workflows/deploy.js')
|
||||
await script({github, context, core})
|
||||
|
||||
windows:
|
||||
runs-on: ${{matrix.os.genus}}
|
||||
permissions:
|
||||
contents: write
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [{genus: windows-2019, family: windows}]
|
||||
cmake_build_type: [Debug, Release]
|
||||
steps:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
||||
with:
|
||||
python-version: '3.7'
|
||||
- name: Install GoogleTest
|
||||
run: |
|
||||
# check out pre-breakage version of googletest; can be deleted when
|
||||
# issue 3128 is fixed
|
||||
# git clone --depth=1 https://github.com/google/googletest.git External/googletest
|
||||
mkdir -p External/googletest
|
||||
cd External/googletest
|
||||
git init
|
||||
git remote add origin https://github.com/google/googletest.git
|
||||
git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
|
||||
git reset --hard FETCH_HEAD
|
||||
cd ../..
|
||||
- name: Update Glslang Sources
|
||||
run: |
|
||||
python update_glslang_sources.py
|
||||
- name: Build
|
||||
run: |
|
||||
cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install"
|
||||
cmake --build build --config ${{matrix.cmake_build_type}} --target install
|
||||
- name: Test
|
||||
run: |
|
||||
cd build
|
||||
ctest -C ${{matrix.cmake_build_type}} --output-on-failure
|
||||
cd ../Test && bash runtests
|
||||
- name: Zip
|
||||
if: ${{ matrix.cmake_build_type == 'Debug' }}
|
||||
env:
|
||||
ARCHIVE: glslang-master-${{matrix.os.family}}-Debug.zip
|
||||
run: |
|
||||
cd build/install
|
||||
7z a ${{env.ARCHIVE}} `
|
||||
bin/glslang.exe `
|
||||
bin/glslangValidator.exe `
|
||||
bin/spirv-remap.exe `
|
||||
include/glslang/* `
|
||||
lib/GenericCodeGend.lib `
|
||||
lib/glslangd.lib `
|
||||
lib/glslang-default-resource-limitsd.lib `
|
||||
lib/HLSLd.lib `
|
||||
lib/MachineIndependentd.lib `
|
||||
lib/OGLCompilerd.lib `
|
||||
lib/OSDependentd.lib `
|
||||
lib/SPIRVd.lib `
|
||||
lib/SPVRemapperd.lib `
|
||||
lib/SPIRV-Toolsd.lib `
|
||||
lib/SPIRV-Tools-optd.lib
|
||||
- name: Zip
|
||||
if: ${{ matrix.cmake_build_type == 'Release' }}
|
||||
env:
|
||||
ARCHIVE: glslang-master-${{matrix.os.family}}-Release.zip
|
||||
run: |
|
||||
cd build/install
|
||||
7z a ${{env.ARCHIVE}} `
|
||||
bin/glslang.exe `
|
||||
bin/glslangValidator.exe `
|
||||
bin/spirv-remap.exe `
|
||||
include/glslang/* `
|
||||
lib/GenericCodeGen.lib `
|
||||
lib/glslang.lib `
|
||||
lib/glslang-default-resource-limits.lib `
|
||||
lib/HLSL.lib `
|
||||
lib/MachineIndependent.lib `
|
||||
lib/OGLCompiler.lib `
|
||||
lib/OSDependent.lib `
|
||||
lib/SPIRV.lib `
|
||||
lib/SPVRemapper.lib `
|
||||
lib/SPIRV-Tools.lib `
|
||||
lib/SPIRV-Tools-opt.lib
|
||||
- name: Deploy
|
||||
env:
|
||||
ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
|
||||
with:
|
||||
script: |
|
||||
const script = require('.github/workflows/deploy.js')
|
||||
|
272
.github/workflows/continuous_integration.yml
vendored
272
.github/workflows/continuous_integration.yml
vendored
@ -10,26 +10,28 @@ on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
linux:
|
||||
runs-on: ${{matrix.os}}
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-20.04]
|
||||
compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
|
||||
cmake_build_type: [Debug, Release]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-python@v2
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
||||
with:
|
||||
python-version: '3.7'
|
||||
- name: Install Ubuntu Package Dependencies
|
||||
run: |
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get install -y clang-6.0
|
||||
- name: Setup ccache
|
||||
uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10
|
||||
with:
|
||||
key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}
|
||||
- name: Install GoogleTest
|
||||
run: |
|
||||
# check out pre-breakage version of googletest; can be deleted when
|
||||
@ -43,35 +45,137 @@ jobs:
|
||||
git reset --hard FETCH_HEAD
|
||||
cd ../..
|
||||
- name: Update Glslang Sources
|
||||
run: |
|
||||
./update_glslang_sources.py
|
||||
- name: Build
|
||||
run: ./update_glslang_sources.py
|
||||
- name: Configure
|
||||
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }}
|
||||
env:
|
||||
CC: ${{matrix.compiler.cc}}
|
||||
CXX: ${{matrix.compiler.cxx}}
|
||||
run: |
|
||||
mkdir build && cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
|
||||
make -j4 install
|
||||
CC: ${{matrix.compiler.cc}}
|
||||
CXX: ${{matrix.compiler.cxx}}
|
||||
CMAKE_GENERATOR: Ninja
|
||||
CMAKE_C_COMPILER_LAUNCHER: ccache
|
||||
CMAKE_CXX_COMPILER_LAUNCHER: ccache
|
||||
- name: Build
|
||||
run: cmake --build build
|
||||
- name: Install
|
||||
run: cmake --install build --prefix build/install
|
||||
- name: Test
|
||||
run: |
|
||||
cd build
|
||||
ctest --output-on-failure &&
|
||||
cd ../Test && ./runtests
|
||||
|
||||
linux-asan:
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
compiler: [{cc: gcc, cxx: g++}]
|
||||
cmake_build_type: [Debug]
|
||||
flags: ['-fsanitize=address', '-fsanitize=thread']
|
||||
steps:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
||||
with:
|
||||
python-version: '3.7'
|
||||
- name: Setup ccache
|
||||
uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10
|
||||
with:
|
||||
key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}}
|
||||
- name: Install GoogleTest
|
||||
run: |
|
||||
# check out pre-breakage version of googletest; can be deleted when
|
||||
# issue 3128 is fixed
|
||||
# git clone --depth=1 https://github.com/google/googletest.git External/googletest
|
||||
mkdir -p External/googletest
|
||||
cd External/googletest
|
||||
git init
|
||||
git remote add origin https://github.com/google/googletest.git
|
||||
git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
|
||||
git reset --hard FETCH_HEAD
|
||||
cd ../..
|
||||
- name: Update Glslang Sources
|
||||
run: ./update_glslang_sources.py
|
||||
- name: Configure
|
||||
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }}
|
||||
env:
|
||||
CC: ${{matrix.compiler.cc}}
|
||||
CXX: ${{matrix.compiler.cxx}}
|
||||
CMAKE_GENERATOR: Ninja
|
||||
CMAKE_C_COMPILER_LAUNCHER: ccache
|
||||
CMAKE_CXX_COMPILER_LAUNCHER: ccache
|
||||
CFLAGS: ${{matrix.flags}}
|
||||
CXXFLAGS: ${{matrix.flags}}
|
||||
LDFLAGS: ${{matrix.flags}}
|
||||
- name: Build
|
||||
run: cmake --build build
|
||||
- name: Install
|
||||
run: cmake --install build --prefix build/install
|
||||
- name: Test
|
||||
run: |
|
||||
cd build
|
||||
ctest --output-on-failure &&
|
||||
cd ../Test && ./runtests
|
||||
|
||||
# Ensure we can compile/run on an older distro
|
||||
linux_min:
|
||||
name: Linux Backcompat
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
||||
with:
|
||||
python-version: '3.7'
|
||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
||||
with:
|
||||
cmakeVersion: 3.17.2
|
||||
- name: Setup ccache
|
||||
uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10
|
||||
with:
|
||||
key: linux_backcompat
|
||||
- name: Install GoogleTest
|
||||
run: |
|
||||
# check out pre-breakage version of googletest; can be deleted when
|
||||
# issue 3128 is fixed
|
||||
# git clone --depth=1 https://github.com/google/googletest.git External/googletest
|
||||
mkdir -p External/googletest
|
||||
cd External/googletest
|
||||
git init
|
||||
git remote add origin https://github.com/google/googletest.git
|
||||
git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
|
||||
git reset --hard FETCH_HEAD
|
||||
cd ../..
|
||||
- name: Update Glslang Sources
|
||||
run: ./update_glslang_sources.py
|
||||
- name: Configure
|
||||
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Release
|
||||
env:
|
||||
CMAKE_C_COMPILER_LAUNCHER: ccache
|
||||
CMAKE_CXX_COMPILER_LAUNCHER: ccache
|
||||
- name: Build
|
||||
run: cmake --build build
|
||||
- name: Install
|
||||
run: cmake --install build --prefix build/install
|
||||
- name: Test
|
||||
run: |
|
||||
cd build
|
||||
ctest --output-on-failure &&
|
||||
cd ../Test && ./runtests
|
||||
|
||||
macos:
|
||||
runs-on: ${{matrix.os}}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [macos-11]
|
||||
compiler: [{cc: clang, cxx: clang++}]
|
||||
os: [macos-11, macos-12]
|
||||
compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
|
||||
cmake_build_type: [Debug, Release]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-python@v2
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
||||
with:
|
||||
python-version: '3.7'
|
||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
||||
- name: Install GoogleTest
|
||||
run: |
|
||||
# check out pre-breakage version of googletest; can be deleted when
|
||||
@ -85,49 +189,37 @@ jobs:
|
||||
git reset --hard FETCH_HEAD
|
||||
cd ../..
|
||||
- name: Update Glslang Sources
|
||||
run: |
|
||||
./update_glslang_sources.py
|
||||
- name: Build
|
||||
run: ./update_glslang_sources.py
|
||||
- name: Configure
|
||||
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G "Ninja"
|
||||
env:
|
||||
CC: ${{matrix.compiler.cc}}
|
||||
CXX: ${{matrix.compiler.cxx}}
|
||||
run: |
|
||||
mkdir build && cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
|
||||
make -j4 install
|
||||
- name: Build
|
||||
run: cmake --build build
|
||||
- name: Install
|
||||
run: cmake --install build --prefix build/install
|
||||
- name: Test
|
||||
run: |
|
||||
cd build
|
||||
ctest --output-on-failure &&
|
||||
cd ../Test && ./runtests
|
||||
|
||||
android:
|
||||
runs-on: ${{matrix.os}}
|
||||
windows:
|
||||
runs-on: ${{matrix.os.genus}}
|
||||
permissions:
|
||||
contents: write
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-20.04]
|
||||
compiler: [{cc: clang, cxx: clang++}]
|
||||
cmake_build_type: [Release]
|
||||
os: [{genus: windows-2019, family: windows}]
|
||||
cmake_build_type: [Debug, Release]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-python@v2
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
||||
with:
|
||||
python-version: '3.7'
|
||||
- name: Install Ubuntu Package Dependencies
|
||||
if: ${{matrix.os == 'ubuntu-20.04'}}
|
||||
run: |
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get install -y clang-6.0
|
||||
- name: Install Android NDK
|
||||
run: |
|
||||
export ANDROID_NDK=$HOME/android-ndk
|
||||
git init $ANDROID_NDK
|
||||
pushd $ANDROID_NDK
|
||||
git remote add dneto0 https://github.com/dneto0/android-ndk.git
|
||||
git fetch --depth=1 dneto0 r17b-strip
|
||||
git checkout FETCH_HEAD
|
||||
popd
|
||||
- name: Install GoogleTest
|
||||
run: |
|
||||
# check out pre-breakage version of googletest; can be deleted when
|
||||
@ -142,16 +234,74 @@ jobs:
|
||||
cd ../..
|
||||
- name: Update Glslang Sources
|
||||
run: |
|
||||
./update_glslang_sources.py
|
||||
python update_glslang_sources.py
|
||||
- name: Build
|
||||
env:
|
||||
CC: ${{matrix.compiler.cc}}
|
||||
CXX: ${{matrix.compiler.cxx}}
|
||||
run: |
|
||||
export ANDROID_NDK=$HOME/android-ndk
|
||||
export TOOLCHAIN_PATH=$ANDROID_NDK/build/cmake/android.toolchain.cmake
|
||||
echo $ANDROID_NDK
|
||||
echo $TOOLCHAIN_PATH
|
||||
mkdir build && cd build
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH} -DANDROID_NATIVE_API_LEVEL=android-14 -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DANDROID_ABI="armeabi-v7a with NEON" -DBUILD_TESTING=OFF ..
|
||||
make -j4
|
||||
cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install"
|
||||
cmake --build build --config ${{matrix.cmake_build_type}} --target install
|
||||
- name: Test
|
||||
run: |
|
||||
cd build
|
||||
ctest -C ${{matrix.cmake_build_type}} --output-on-failure
|
||||
cd ../Test && bash runtests
|
||||
|
||||
android:
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
# Android NDK currently offers 2 different toolchains.
|
||||
# Test both to ensure we are compatible with either approach.
|
||||
LEGACY: [ON, OFF]
|
||||
# Oldest/newest NDK currently provided by GitHub runners
|
||||
# https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#android
|
||||
NDK: [23.2.8568313, 25.2.9519653]
|
||||
steps:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
||||
with:
|
||||
python-version: '3.7'
|
||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
||||
- name: Setup ccache
|
||||
uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10
|
||||
with:
|
||||
key: android-${{ matrix.LEGACY }}-${{ matrix.NDK }}
|
||||
- name: Update Glslang Sources
|
||||
run: ./update_glslang_sources.py
|
||||
- name: Configure
|
||||
run: |
|
||||
cmake -S . -B build/ \
|
||||
--toolchain $ANDROID_HOME/ndk/${{ matrix.NDK }}/build/cmake/android.toolchain.cmake \
|
||||
-D CMAKE_BUILD_TYPE=Release \
|
||||
-D ANDROID_ABI=armeabi-v7a \
|
||||
-D ANDROID_USE_LEGACY_TOOLCHAIN_FILE=${{ matrix.LEGACY }} \
|
||||
-D BUILD_TESTING=OFF
|
||||
env:
|
||||
CMAKE_GENERATOR: Ninja
|
||||
CMAKE_C_COMPILER_LAUNCHER: ccache
|
||||
CMAKE_CXX_COMPILER_LAUNCHER: ccache
|
||||
- name: Build
|
||||
run: cmake --build build/
|
||||
|
||||
emscripten:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
||||
with:
|
||||
python-version: '3.7'
|
||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
||||
- name: Setup ccache
|
||||
uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10
|
||||
with:
|
||||
key: ubuntu-emscripten
|
||||
- uses: mymindstorm/setup-emsdk@ab889da2abbcbb280f91ec4c215d3bb4f3a8f775 # v12
|
||||
- name: Update Glslang Sources
|
||||
run: ./update_glslang_sources.py
|
||||
- name: Configure
|
||||
run: emcmake cmake -GNinja -Bbuild/web -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON -DBUILD_TESTING=OFF -DENABLE_OPT=OFF
|
||||
env:
|
||||
CMAKE_GENERATOR: Ninja
|
||||
CMAKE_C_COMPILER_LAUNCHER: ccache
|
||||
CMAKE_CXX_COMPILER_LAUNCHER: ccache
|
||||
- name: Build
|
||||
run: cmake --build build/web
|
||||
|
10
.github/workflows/deploy.js
vendored
10
.github/workflows/deploy.js
vendored
@ -3,11 +3,11 @@ module.exports = async ({github, context, core}) => {
|
||||
await github.rest.git.updateRef({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
ref: 'tags/master-tot',
|
||||
ref: 'tags/main-tot',
|
||||
sha: context.sha
|
||||
})
|
||||
} catch (error) {
|
||||
core.setFailed(`upload master-tot tag; ${error.name}; ${error.message}`)
|
||||
core.setFailed(`upload main-tot tag; ${error.name}; ${error.message}`)
|
||||
}
|
||||
|
||||
let release
|
||||
@ -15,10 +15,10 @@ module.exports = async ({github, context, core}) => {
|
||||
release = await github.rest.repos.getReleaseByTag({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
tag: 'master-tot'
|
||||
tag: 'main-tot'
|
||||
})
|
||||
} catch (error) {
|
||||
core.setFailed(`get the master release; ${error.name}; ${error.message}`)
|
||||
core.setFailed(`get the main release; ${error.name}; ${error.message}`)
|
||||
}
|
||||
|
||||
try {
|
||||
@ -28,7 +28,7 @@ module.exports = async ({github, context, core}) => {
|
||||
release_id: release.data.id
|
||||
})
|
||||
} catch (error) {
|
||||
core.setFailed(`update the master release; ${error.name}; ${error.message}`)
|
||||
core.setFailed(`update the main release; ${error.name}; ${error.message}`)
|
||||
}
|
||||
|
||||
let release_assets
|
||||
|
53
.github/workflows/scorecard.yml
vendored
Normal file
53
.github/workflows/scorecard.yml
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
name: Scorecard supply-chain security
|
||||
on:
|
||||
# For Branch-Protection check. Only the default branch is supported. See
|
||||
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
|
||||
branch_protection_rule:
|
||||
# To guarantee Maintained check is occasionally updated. See
|
||||
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
|
||||
schedule:
|
||||
- cron: '36 17 * * 5'
|
||||
push:
|
||||
branches: [ "main" ]
|
||||
|
||||
# Declare default permissions as read only.
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
analysis:
|
||||
name: Scorecard analysis
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
security-events: write # to upload the results to code-scanning dashboard
|
||||
id-token: write # to publish results and get a badge
|
||||
|
||||
steps:
|
||||
- name: "Checkout code"
|
||||
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: "Run analysis"
|
||||
uses: ossf/scorecard-action@483ef80eb98fb506c348f7d62e28055e49fe2398 # v2.3.0
|
||||
with:
|
||||
results_file: results.sarif
|
||||
results_format: sarif
|
||||
# To enable Branch-Protection uncomment the `repo_token` line below
|
||||
# To create the Fine-grained PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-fine-grained-pat-optional.
|
||||
# repo_token: ${{ secrets.SCORECARD_TOKEN }}
|
||||
publish_results: true # allows the repo to include the Scorecard badge
|
||||
|
||||
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
||||
# format to the repository Actions tab.
|
||||
- name: "Upload artifact"
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
with:
|
||||
name: SARIF file
|
||||
path: results.sarif
|
||||
retention-days: 5
|
||||
|
||||
# Upload the results to GitHub's code scanning dashboard.
|
||||
- name: "Upload to code-scanning"
|
||||
uses: github/codeql-action/upload-sarif@2cb752a87e96af96708ab57187ab6372ee1973ab # v2.22.0
|
||||
with:
|
||||
sarif_file: results.sarif
|
9
.gitignore
vendored
9
.gitignore
vendored
@ -11,6 +11,8 @@ Test/localResults/
|
||||
External/googletest
|
||||
External/spirv-tools
|
||||
out/
|
||||
CMakeUserPresets.json
|
||||
*.obj
|
||||
|
||||
# GN generated files
|
||||
.cipd/
|
||||
@ -19,6 +21,13 @@ third_party/
|
||||
buildtools/
|
||||
tools/
|
||||
|
||||
# S++ generated files
|
||||
.spp_script_run
|
||||
|
||||
# Random OS stuff
|
||||
.DS_Store
|
||||
._*
|
||||
|
||||
# Generated files
|
||||
include/
|
||||
glslang/build_info.h
|
||||
|
3
.mailmap
Normal file
3
.mailmap
Normal file
@ -0,0 +1,3 @@
|
||||
Faith Ekstrand <faith.ekstrand@collabora.com> <jason@jlekstrand.net>
|
||||
Faith Ekstrand <faith.ekstrand@collabora.com> <jason.ekstrand@intel.com>
|
||||
Faith Ekstrand <faith.ekstrand@collabora.com> <jason.ekstrand@collabora.com>
|
14
Android.mk
14
Android.mk
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2020 The Khronos Group Inc.
|
||||
# Copyright (C) 2020-2023 The Khronos Group Inc.
|
||||
#
|
||||
# All rights reserved.
|
||||
#
|
||||
@ -53,11 +53,11 @@ $(eval $(call gen_glslang_build_info_h))
|
||||
|
||||
GLSLANG_OS_FLAGS := -DGLSLANG_OSINCLUDE_UNIX
|
||||
# AMD and NV extensions are turned on by default in upstream Glslang.
|
||||
GLSLANG_DEFINES:= -DAMD_EXTENSIONS -DNV_EXTENSIONS -DENABLE_HLSL $(GLSLANG_OS_FLAGS)
|
||||
GLSLANG_DEFINES:= -DENABLE_HLSL $(GLSLANG_OS_FLAGS)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE:=OSDependent
|
||||
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
||||
LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
||||
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
|
||||
LOCAL_SRC_FILES:=glslang/OSDependent/Unix/ossource.cpp
|
||||
LOCAL_C_INCLUDES:=$(LOCAL_PATH) $(LOCAL_PATH)/glslang/OSDependent/Unix/
|
||||
@ -66,7 +66,7 @@ include $(BUILD_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE:=OGLCompiler
|
||||
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
||||
LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
||||
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
|
||||
LOCAL_SRC_FILES:=OGLCompilersDLL/InitializeDll.cpp
|
||||
LOCAL_C_INCLUDES:=$(LOCAL_PATH)/OGLCompiler
|
||||
@ -78,7 +78,7 @@ include $(BUILD_STATIC_LIBRARY)
|
||||
# instead.
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE:=HLSL
|
||||
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
||||
LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
||||
LOCAL_SRC_FILES:= \
|
||||
hlsl/stub.cpp
|
||||
LOCAL_C_INCLUDES:=$(LOCAL_PATH) \
|
||||
@ -93,7 +93,7 @@ $(LOCAL_PATH)/glslang/MachineIndependent/ShaderLang.cpp: \
|
||||
$(GLSLANG_BUILD_INFO_H)
|
||||
|
||||
LOCAL_MODULE:=glslang
|
||||
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
||||
LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
||||
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
|
||||
LOCAL_SRC_FILES:= \
|
||||
glslang/CInterface/glslang_c_interface.cpp \
|
||||
@ -148,7 +148,7 @@ $(LOCAL_PATH)/SPIRV/GlslangToSpv.cpp: \
|
||||
$(GLSLANG_BUILD_INFO_H)
|
||||
|
||||
LOCAL_MODULE:=SPIRV
|
||||
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES)
|
||||
LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES)
|
||||
LOCAL_SRC_FILES:= \
|
||||
SPIRV/CInterface/spirv_c_interface.cpp \
|
||||
SPIRV/GlslangToSpv.cpp \
|
||||
|
313
BUILD.bazel
313
BUILD.bazel
@ -1,313 +0,0 @@
|
||||
# Copyright (C) 2020 The Khronos Group Inc.
|
||||
#
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials provided
|
||||
# with the distribution.
|
||||
#
|
||||
# Neither the name of The Khronos Group Inc. nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
package(
|
||||
default_visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
# Description:
|
||||
#
|
||||
# Khronos reference front-end for GLSL and ESSL, and sample SPIR-V generator.
|
||||
|
||||
licenses(["notice"])
|
||||
|
||||
exports_files(["LICENSE"])
|
||||
|
||||
# Build information generation script
|
||||
py_binary(
|
||||
name = "build_info",
|
||||
srcs = ["build_info.py"],
|
||||
)
|
||||
|
||||
py_binary(
|
||||
name = "gen_extension_headers",
|
||||
srcs = ["gen_extension_headers.py"],
|
||||
)
|
||||
|
||||
genrule(
|
||||
name = "gen_build_info_h",
|
||||
srcs = ["CHANGES.md", "build_info.h.tmpl"],
|
||||
outs = ["glslang/build_info.h"],
|
||||
cmd_bash = "$(location build_info) $$(dirname $(location CHANGES.md)) -i $(location build_info.h.tmpl) -o $(location glslang/build_info.h)",
|
||||
cmd_bat = "for %F in ($(location CHANGES.md)) do $(location build_info) %~dpF -i $(location build_info.h.tmpl) -o $(location glslang/build_info.h)",
|
||||
tools = [":build_info"],
|
||||
)
|
||||
|
||||
genrule(
|
||||
name = "gen_extension_headers_h",
|
||||
srcs = ["glslang/ExtensionHeaders", "gen_extension_headers.py"],
|
||||
outs = ["glslang/glsl_intrinsic_header.h"],
|
||||
cmd_bash = "$(location gen_extension_headers) -i $(location glslang/ExtensionHeaders) -o $(location glslang/glsl_intrinsic_header.h)",
|
||||
tools = [":gen_extension_headers"],
|
||||
)
|
||||
|
||||
COMMON_COPTS = select({
|
||||
"@bazel_tools//src/conditions:windows": [""],
|
||||
"//conditions:default": [
|
||||
"-Wall",
|
||||
"-Wuninitialized",
|
||||
"-Wunused",
|
||||
"-Wunused-local-typedefs",
|
||||
"-Wunused-parameter",
|
||||
"-Wunused-value",
|
||||
"-Wunused-variable",
|
||||
"-Wno-reorder",
|
||||
"-std=c++11",
|
||||
"-fvisibility=hidden",
|
||||
"-fvisibility-inlines-hidden",
|
||||
"-fno-exceptions",
|
||||
"-fno-rtti",
|
||||
],
|
||||
})
|
||||
|
||||
cc_library(
|
||||
name = "glslang",
|
||||
srcs = glob(
|
||||
[
|
||||
"glslang/GenericCodeGen/*.cpp",
|
||||
"glslang/HLSL/*.cpp",
|
||||
"glslang/MachineIndependent/*.cpp",
|
||||
"glslang/MachineIndependent/preprocessor/*.cpp",
|
||||
],
|
||||
exclude = [
|
||||
"glslang/HLSL/pch.h",
|
||||
"glslang/MachineIndependent/pch.h",
|
||||
],
|
||||
) + [
|
||||
"OGLCompilersDLL/InitializeDll.cpp",
|
||||
] + select({
|
||||
"@bazel_tools//src/conditions:windows":
|
||||
["glslang/OSDependent/Windows/ossource.cpp"],
|
||||
"//conditions:default":
|
||||
["glslang/OSDependent/Unix/ossource.cpp"],
|
||||
}),
|
||||
hdrs = glob([
|
||||
"glslang/HLSL/*.h",
|
||||
"glslang/Include/*.h",
|
||||
"glslang/MachineIndependent/*.h",
|
||||
"glslang/MachineIndependent/preprocessor/*.h",
|
||||
]) + [
|
||||
"OGLCompilersDLL/InitializeDll.h",
|
||||
"StandAlone/DirStackFileIncluder.h",
|
||||
"glslang/OSDependent/osinclude.h",
|
||||
"glslang/Public/ShaderLang.h",
|
||||
":gen_build_info_h",
|
||||
],
|
||||
copts = COMMON_COPTS,
|
||||
defines = [
|
||||
"AMD_EXTENSIONS",
|
||||
"ENABLE_HLSL=0",
|
||||
"ENABLE_OPT=0",
|
||||
"NV_EXTENSIONS",
|
||||
],
|
||||
linkopts = select({
|
||||
"@bazel_tools//src/conditions:windows": [""],
|
||||
"//conditions:default": ["-lm", "-lpthread"],
|
||||
}),
|
||||
linkstatic = 1,
|
||||
)
|
||||
|
||||
genrule(
|
||||
name = "export_spirv_headers",
|
||||
srcs = [
|
||||
"SPIRV/GLSL.ext.AMD.h",
|
||||
"SPIRV/GLSL.ext.EXT.h",
|
||||
"SPIRV/GLSL.ext.KHR.h",
|
||||
"SPIRV/GLSL.ext.NV.h",
|
||||
"SPIRV/GLSL.ext.ARM.h",
|
||||
"SPIRV/GLSL.std.450.h",
|
||||
"SPIRV/NonSemanticDebugPrintf.h",
|
||||
"SPIRV/NonSemanticShaderDebugInfo100.h",
|
||||
"SPIRV/spirv.hpp",
|
||||
],
|
||||
outs = [
|
||||
"include/SPIRV/GLSL.ext.AMD.h",
|
||||
"include/SPIRV/GLSL.ext.EXT.h",
|
||||
"include/SPIRV/GLSL.ext.KHR.h",
|
||||
"include/SPIRV/GLSL.ext.NV.h",
|
||||
"include/SPIRV/GLSL.ext.ARM.h",
|
||||
"include/SPIRV/GLSL.std.450.h",
|
||||
"include/SPIRV/NonSemanticDebugPrintf.h",
|
||||
"include/SPIRV/NonSemanticShaderDebugInfo100.h",
|
||||
"include/SPIRV/spirv.hpp",
|
||||
],
|
||||
cmd_bash = "mkdir -p $(@D)/include/SPIRV && cp $(SRCS) $(@D)/include/SPIRV/",
|
||||
cmd_bat = "(if not exist $(@D)\\include\\SPIRV mkdir $(@D)\\include\\SPIRV) && (for %S in ($(SRCS)) do @xcopy /q %S $(@D)\\include\\SPIRV\\ >NUL)",
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "SPIRV_headers",
|
||||
hdrs = [":export_spirv_headers"],
|
||||
copts = COMMON_COPTS,
|
||||
includes = [
|
||||
"include",
|
||||
"include/SPIRV",
|
||||
],
|
||||
linkstatic = 1,
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "SPIRV",
|
||||
srcs = glob(
|
||||
["SPIRV/*.cpp"],
|
||||
exclude = [
|
||||
"SPIRV/SpvTools.cpp",
|
||||
],
|
||||
),
|
||||
hdrs = [
|
||||
"SPIRV/GlslangToSpv.h",
|
||||
"SPIRV/Logger.h",
|
||||
"SPIRV/SPVRemapper.h",
|
||||
"SPIRV/SpvBuilder.h",
|
||||
"SPIRV/SpvTools.h",
|
||||
"SPIRV/bitutils.h",
|
||||
"SPIRV/disassemble.h",
|
||||
"SPIRV/doc.h",
|
||||
"SPIRV/hex_float.h",
|
||||
"SPIRV/spvIR.h",
|
||||
],
|
||||
copts = COMMON_COPTS,
|
||||
includes = ["SPIRV"],
|
||||
linkopts = select({
|
||||
"@bazel_tools//src/conditions:windows": [""],
|
||||
"//conditions:default": ["-lm"],
|
||||
}),
|
||||
linkstatic = 1,
|
||||
deps = [
|
||||
":SPIRV_headers",
|
||||
":glslang",
|
||||
],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "glslang-default-resource-limits",
|
||||
srcs = ["StandAlone/ResourceLimits.cpp"],
|
||||
hdrs = ["glslang/Public/ResourceLimits.h"],
|
||||
copts = COMMON_COPTS,
|
||||
linkstatic = 1,
|
||||
deps = [":glslang"],
|
||||
)
|
||||
|
||||
cc_binary(
|
||||
name = "glslangValidator",
|
||||
srcs = [
|
||||
"StandAlone/StandAlone.cpp",
|
||||
"StandAlone/Worklist.h",
|
||||
":glslang/glsl_intrinsic_header.h"
|
||||
],
|
||||
copts = COMMON_COPTS,
|
||||
deps = [
|
||||
":SPIRV",
|
||||
":glslang",
|
||||
":glslang-default-resource-limits",
|
||||
],
|
||||
)
|
||||
|
||||
cc_binary(
|
||||
name = "spirv-remap",
|
||||
srcs = ["StandAlone/spirv-remap.cpp"],
|
||||
copts = COMMON_COPTS,
|
||||
deps = [
|
||||
":SPIRV",
|
||||
":glslang",
|
||||
":glslang-default-resource-limits",
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "test_files",
|
||||
srcs = glob(
|
||||
["Test/**"],
|
||||
exclude = [
|
||||
"Test/bump",
|
||||
"Test/glslangValidator",
|
||||
"Test/runtests",
|
||||
],
|
||||
),
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "glslang_test_lib",
|
||||
testonly = 1,
|
||||
srcs = [
|
||||
"gtests/HexFloat.cpp",
|
||||
"gtests/Initializer.h",
|
||||
"gtests/Settings.cpp",
|
||||
"gtests/Settings.h",
|
||||
"gtests/TestFixture.cpp",
|
||||
"gtests/TestFixture.h",
|
||||
"gtests/main.cpp",
|
||||
],
|
||||
copts = COMMON_COPTS,
|
||||
data = [":test_files"],
|
||||
defines = select({
|
||||
# Unfortunately we can't use $(location) in cc_library at the moment.
|
||||
# See https://github.com/bazelbuild/bazel/issues/1023
|
||||
# So we'll specify the path manually.
|
||||
"@bazel_tools//src/conditions:windows":
|
||||
["GLSLANG_TEST_DIRECTORY='\"../../../../../Test\"'"],
|
||||
"//conditions:default":
|
||||
["GLSLANG_TEST_DIRECTORY='\"Test\"'"],
|
||||
}),
|
||||
linkstatic = 1,
|
||||
deps = [
|
||||
":SPIRV",
|
||||
":glslang",
|
||||
":glslang-default-resource-limits",
|
||||
"@com_google_googletest//:gtest",
|
||||
],
|
||||
)
|
||||
|
||||
GLSLANG_TESTS = glob(
|
||||
["gtests/*.FromFile.cpp"],
|
||||
# Since we are not building the SPIRV-Tools dependency, the following tests
|
||||
# cannot be performed.
|
||||
exclude = [
|
||||
"gtests/Hlsl.FromFile.cpp",
|
||||
"gtests/Spv.FromFile.cpp",
|
||||
],
|
||||
)
|
||||
|
||||
[cc_test(
|
||||
name = test_file.replace("gtests/", "").replace(".FromFile.cpp", "") + "_test",
|
||||
srcs = [test_file],
|
||||
copts = COMMON_COPTS,
|
||||
data = [
|
||||
":test_files",
|
||||
],
|
||||
deps = [
|
||||
":SPIRV",
|
||||
":glslang",
|
||||
":glslang_test_lib",
|
||||
],
|
||||
) for test_file in GLSLANG_TESTS]
|
3
BUILD.gn
3
BUILD.gn
@ -124,6 +124,7 @@ template("glslang_sources_common") {
|
||||
"SPIRV/GLSL.ext.KHR.h",
|
||||
"SPIRV/GLSL.ext.NV.h",
|
||||
"SPIRV/GLSL.ext.ARM.h",
|
||||
"SPIRV/GLSL.ext.QCOM.h",
|
||||
"SPIRV/GLSL.std.450.h",
|
||||
"SPIRV/GlslangToSpv.cpp",
|
||||
"SPIRV/GlslangToSpv.h",
|
||||
@ -299,7 +300,7 @@ glslang_sources_common("glslang_sources") {
|
||||
|
||||
source_set("glslang_default_resource_limits_sources") {
|
||||
sources = [
|
||||
"StandAlone/ResourceLimits.cpp",
|
||||
"glslang/ResourceLimits/ResourceLimits.cpp",
|
||||
"glslang/Public/ResourceLimits.h",
|
||||
"glslang/Include/ResourceLimits.h",
|
||||
]
|
||||
|
82
CHANGES.md
82
CHANGES.md
@ -3,6 +3,88 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
This project adheres to [Semantic Versioning](https://semver.org/).
|
||||
|
||||
## 13.1.0 2023-10-13
|
||||
* Support GL_EXT_texture_shadow_lod
|
||||
* Support GL_NV_displacement_micromap
|
||||
* Fix ByteAddressBuffer when used a function parameter
|
||||
* Add more verbose messages if SPIRV-Tools is not found
|
||||
* Fix names for explicitly sized types when emitting nonsemantic debug info
|
||||
* Emit error for r-value arguments in atomic memory operations
|
||||
* Add --no-link option
|
||||
* Beautify preprocessor output format
|
||||
* Fix race condition in glslangValidator
|
||||
* Only set LocalSizeId mode when necessary
|
||||
* Don't emit invalid debug info for buffer references
|
||||
|
||||
## 13.0.0 2023-08-23
|
||||
|
||||
### Breaking changes
|
||||
* Simplify PoolAlloc via thread_local
|
||||
* Remove InitializeDLL functions
|
||||
* Remove OSDependent TLS functions
|
||||
* Remove GLSLANG_WEB and GLSLANG_WEB_DEVEL code paths
|
||||
|
||||
### Other changes
|
||||
* Raise CMAKE minimum to 3.17.2
|
||||
* Support GL_KHR_cooperative_matrix
|
||||
* Support GL_QCOM_image_processing_support
|
||||
* Support outputting each module to a filename with spirv-remap
|
||||
* Generate an error when gl_PrimitiveShaderRateEXT is used without enabling the extension
|
||||
* Improve layout checking when GL_EXT_spirv_intrinsics is enabled
|
||||
|
||||
## 12.3.1 2023-07-20
|
||||
|
||||
### Other changes
|
||||
* Improve backward compatibility for glslangValidator rename on Windows
|
||||
|
||||
## 12.3.0 2023-07-19
|
||||
|
||||
### Other changes
|
||||
* Rename glslangValidator to glslang and create glslangValidator symlink
|
||||
* Support HLSL binary literals
|
||||
* Add missing initialization members for web
|
||||
* Improve push_constant upgrading
|
||||
* Fix race condition in spirv remap
|
||||
* Support pre and post HLSL qualifier validation
|
||||
* Force generateDebugInfo when non-semantic debug info is enabled
|
||||
* Exit with error if output file cannot be written
|
||||
* Fix struct member buffer reference decorations
|
||||
|
||||
## 12.2.0 2023-05-17
|
||||
|
||||
### Other changes
|
||||
* Support GLSL_EXT_shader_tile_image
|
||||
* Support GL_EXT_ray_tracing_position_fetch
|
||||
* Support custom include callbacks via the C API
|
||||
* Add preamble-text command-line option
|
||||
* Accept variables as parameters of spirv_decorate_id
|
||||
* Fix generation of conditionals with a struct result
|
||||
* Fix double expansion of macros
|
||||
* Fix DebugCompilationUnit scope
|
||||
* Improve line information
|
||||
|
||||
## 12.1.0 2023-03-21
|
||||
|
||||
### Other changes
|
||||
* Reject non-float inputs/outputs for version less than 120
|
||||
* Fix invalid BufferBlock decoration for SPIR-V 1.3 and above
|
||||
* Add HLSL relaxed-precision float/int matrix expansions
|
||||
* Block decorate Vulkan structs with RuntimeArrays
|
||||
* Support InterlockedAdd on float types
|
||||
|
||||
## 12.0.0 2023-01-18
|
||||
|
||||
### Breaking changes
|
||||
* An ABI was accidentally broken in #3014. Consequently, we have incremented the major revision number.
|
||||
|
||||
### Other changes
|
||||
* Add support for ARB_bindless_texture.
|
||||
* Add support for GL_NV_shader_invocation_reorder.
|
||||
* Fix const parameter debug types when using NonSemantic.Shader.DebugInfo.100.
|
||||
* Fix NonSemantic.Shader.DebugInfo.100 disassembly.
|
||||
* Fix MaxDualSourceDrawBuffersEXT usage.
|
||||
* Fix structure member reference crash.
|
||||
|
||||
## 11.13.0 2022-12-06
|
||||
|
||||
### Other changes
|
||||
|
140
CMakeLists.txt
140
CMakeLists.txt
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2020 The Khronos Group Inc.
|
||||
# Copyright (C) 2020-2023 The Khronos Group Inc.
|
||||
#
|
||||
# All rights reserved.
|
||||
#
|
||||
@ -30,24 +30,11 @@
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
# increase to 3.1 once all major distributions
|
||||
# include a version of CMake >= 3.1
|
||||
cmake_minimum_required(VERSION 3.14.0)
|
||||
if (POLICY CMP0048)
|
||||
cmake_policy(SET CMP0048 NEW)
|
||||
endif()
|
||||
if(POLICY CMP0054)
|
||||
cmake_policy(SET CMP0054 NEW)
|
||||
endif()
|
||||
|
||||
project(glslang LANGUAGES CXX)
|
||||
cmake_minimum_required(VERSION 3.17.2)
|
||||
project(glslang)
|
||||
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
# Enable compile commands database
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
# Adhere to GNU filesystem layout conventions
|
||||
include(GNUInstallDirs)
|
||||
include(CMakePackageConfigHelpers)
|
||||
@ -78,18 +65,10 @@ if(NOT ${SKIP_GLSLANG_INSTALL})
|
||||
endif()
|
||||
option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON)
|
||||
|
||||
option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON)
|
||||
option(ENABLE_GLSLANG_BINARIES "Builds glslang and spirv-remap" ON)
|
||||
|
||||
option(ENABLE_GLSLANG_JS
|
||||
"If using Emscripten, build glslang.js. Otherwise, builds a sample executable for binary-size testing." OFF)
|
||||
CMAKE_DEPENDENT_OPTION(ENABLE_GLSLANG_WEBMIN
|
||||
"Reduces glslang to minimum needed for web use"
|
||||
OFF "ENABLE_GLSLANG_JS"
|
||||
OFF)
|
||||
CMAKE_DEPENDENT_OPTION(ENABLE_GLSLANG_WEBMIN_DEVEL
|
||||
"For ENABLE_GLSLANG_WEBMIN builds, enables compilation error messages"
|
||||
OFF "ENABLE_GLSLANG_WEBMIN"
|
||||
OFF)
|
||||
CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_SINGLE_FILE
|
||||
"If using Emscripten, enables SINGLE_FILE build"
|
||||
OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN"
|
||||
@ -99,11 +78,7 @@ CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE
|
||||
OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN"
|
||||
OFF)
|
||||
|
||||
CMAKE_DEPENDENT_OPTION(ENABLE_HLSL
|
||||
"Enables HLSL input support"
|
||||
ON "NOT ENABLE_GLSLANG_WEBMIN"
|
||||
OFF)
|
||||
|
||||
option(ENABLE_HLSL "Enables HLSL input support" ON)
|
||||
option(ENABLE_RTTI "Enables RTTI" OFF)
|
||||
option(ENABLE_EXCEPTIONS "Enables Exceptions" OFF)
|
||||
option(ENABLE_OPT "Enables spirv-opt capability if present" ON)
|
||||
@ -117,18 +92,6 @@ else()
|
||||
endif()
|
||||
option(ENABLE_CTEST "Enables testing" ON)
|
||||
|
||||
if(ENABLE_GLSLANG_INSTALL AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32)
|
||||
set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE)
|
||||
endif()
|
||||
|
||||
option(USE_CCACHE "Use ccache" OFF)
|
||||
if(USE_CCACHE)
|
||||
find_program(CCACHE_FOUND ccache)
|
||||
if(CCACHE_FOUND)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(ENABLE_CTEST)
|
||||
include(CTest)
|
||||
endif()
|
||||
@ -137,13 +100,6 @@ if(ENABLE_HLSL)
|
||||
add_definitions(-DENABLE_HLSL)
|
||||
endif()
|
||||
|
||||
if(ENABLE_GLSLANG_WEBMIN)
|
||||
add_definitions(-DGLSLANG_WEB)
|
||||
if(ENABLE_GLSLANG_WEBMIN_DEVEL)
|
||||
add_definitions(-DGLSLANG_WEB_DEVEL)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(CMAKE_DEBUG_POSTFIX "d")
|
||||
option(OVERRIDE_MSVCCRT "Overrides runtime of MSVC " ON)
|
||||
@ -151,7 +107,7 @@ if(WIN32)
|
||||
include(ChooseMSVCCRT.cmake)
|
||||
endif()
|
||||
add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
|
||||
elseif(UNIX)
|
||||
elseif(UNIX OR ANDROID)
|
||||
add_definitions(-DGLSLANG_OSINCLUDE_UNIX)
|
||||
else()
|
||||
message("unknown platform")
|
||||
@ -160,7 +116,6 @@ endif()
|
||||
if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
|
||||
add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs
|
||||
-Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions)
|
||||
add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over.
|
||||
if(NOT ENABLE_RTTI)
|
||||
add_compile_options(-fno-rtti)
|
||||
endif()
|
||||
@ -171,16 +126,13 @@ if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
|
||||
add_compile_options(-Werror=deprecated-copy)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_VERSION VERSION_LESS "3.13" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
if(NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
# Error if there's symbols that are not found at link time.
|
||||
# add_link_options() was added in CMake 3.13 - if using an earlier
|
||||
# version don't set this - it should be caught by presubmits anyway.
|
||||
add_link_options("-Wl,--no-undefined")
|
||||
endif()
|
||||
elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC)
|
||||
add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs
|
||||
-Wunused-parameter -Wunused-value -Wunused-variable)
|
||||
add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over.
|
||||
if(NOT ENABLE_RTTI)
|
||||
add_compile_options(-fno-rtti)
|
||||
endif()
|
||||
@ -188,14 +140,12 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC)
|
||||
add_compile_options(-fno-exceptions)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_VERSION VERSION_LESS "3.13")
|
||||
# Error if there's symbols that are not found at link time.
|
||||
# add_link_options() was added in CMake 3.13 - if using an earlier
|
||||
# version don't set this - it should be caught by presubmits anyway.
|
||||
if (WIN32)
|
||||
add_link_options("-Wl,--no-undefined")
|
||||
else()
|
||||
if(NOT (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD" OR CMAKE_SYSTEM_NAME STREQUAL "Emscripten"))
|
||||
# Error if there's symbols that are not found at link time. Some linkers do not support this flag.
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
||||
add_link_options("-Wl,-undefined,error")
|
||||
elseif(NOT APPLE)
|
||||
add_link_options("-Wl,--no-undefined")
|
||||
endif()
|
||||
endif()
|
||||
elseif(MSVC)
|
||||
@ -227,21 +177,16 @@ if(ENABLE_GLSLANG_JS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Request C++11
|
||||
if(${CMAKE_VERSION} VERSION_LESS 3.1)
|
||||
# CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD
|
||||
# remove this block once CMake >=3.1 has fixated in the ecosystem
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
else()
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
endif()
|
||||
# Request C++17
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
function(glslang_set_link_args TARGET)
|
||||
# For MinGW compiles, statically link against the GCC and C++ runtimes.
|
||||
# This avoids the need to ship those runtimes as DLLs.
|
||||
if(WIN32 AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
|
||||
# This is supported by GCC and Clang.
|
||||
if(WIN32 AND NOT MSVC)
|
||||
set_target_properties(${TARGET} PROPERTIES
|
||||
LINK_FLAGS "-static -static-libgcc -static-libstdc++")
|
||||
endif()
|
||||
@ -289,10 +234,9 @@ endfunction()
|
||||
function(glslang_only_export_explicit_symbols target)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
target_compile_definitions(${target} PUBLIC "GLSLANG_IS_SHARED_LIBRARY=1")
|
||||
set_target_properties(${target} PROPERTIES CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||
if(WIN32)
|
||||
target_compile_definitions(${target} PRIVATE "GLSLANG_EXPORTING=1")
|
||||
else()
|
||||
target_compile_options(${target} PRIVATE "-fvisibility=hidden")
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
@ -313,14 +257,30 @@ else()
|
||||
endif()
|
||||
|
||||
if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External)
|
||||
find_host_package(PythonInterp 3 REQUIRED)
|
||||
find_host_package(Python3 REQUIRED)
|
||||
|
||||
# We depend on these for later projects, so they should come first.
|
||||
add_subdirectory(External)
|
||||
endif()
|
||||
|
||||
option(ALLOW_EXTERNAL_SPIRV_TOOLS "Allows to build against installed SPIRV-Tools-opt" OFF)
|
||||
if(NOT TARGET SPIRV-Tools-opt)
|
||||
set(ENABLE_OPT OFF)
|
||||
if(ALLOW_EXTERNAL_SPIRV_TOOLS)
|
||||
# Look for external SPIR-V Tools build, if not building in-tree
|
||||
message(STATUS "Trying to find local SPIR-V tools")
|
||||
find_package(SPIRV-Tools-opt)
|
||||
if(NOT TARGET SPIRV-Tools-opt)
|
||||
if(ENABLE_OPT)
|
||||
message(WARNING "ENABLE_OPT set but SPIR-V tools not found! Disabling SPIR-V optimization.")
|
||||
endif()
|
||||
set(ENABLE_OPT OFF)
|
||||
endif()
|
||||
else()
|
||||
if(ENABLE_OPT)
|
||||
message(SEND_ERROR "ENABLE_OPT set but SPIR-V tools not found. Please run update_glslang_sources.py, "
|
||||
"set the ALLOW_EXTERNAL_SPIRV_TOOLS option to use a local install of SPIRV-Tools, or set ENABLE_OPT=0.")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(ENABLE_OPT)
|
||||
@ -355,12 +315,12 @@ if(ENABLE_CTEST AND BUILD_TESTING)
|
||||
endif()
|
||||
|
||||
if (CMAKE_CONFIGURATION_TYPES)
|
||||
set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/localResults)
|
||||
set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/glslangValidator)
|
||||
set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/spirv-remap)
|
||||
set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/localResults)
|
||||
set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIG>/glslang)
|
||||
set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIG>/spirv-remap)
|
||||
else()
|
||||
set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults)
|
||||
set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator)
|
||||
set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslang)
|
||||
set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap)
|
||||
endif()
|
||||
|
||||
@ -372,10 +332,18 @@ endif()
|
||||
if(ENABLE_GLSLANG_INSTALL)
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[
|
||||
@PACKAGE_INIT@
|
||||
@INSTALL_CONFIG_UNIX@
|
||||
include("@PACKAGE_PATH_EXPORT_TARGETS@")
|
||||
]=])
|
||||
|
||||
|
||||
set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake")
|
||||
if(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia")
|
||||
set(INSTALL_CONFIG_UNIX [=[
|
||||
include(CMakeFindDependencyMacro)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_dependency(Threads REQUIRED)
|
||||
]=])
|
||||
endif()
|
||||
configure_package_config_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake"
|
||||
@ -383,18 +351,18 @@ if(ENABLE_GLSLANG_INSTALL)
|
||||
PATH_EXPORT_TARGETS
|
||||
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||
)
|
||||
|
||||
|
||||
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glslang-config-version.cmake"
|
||||
VERSION ${GLSLANG_VERSION}
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
|
||||
|
||||
install(
|
||||
EXPORT glslang-targets
|
||||
NAMESPACE "glslang::"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
|
||||
)
|
||||
|
||||
|
||||
install(
|
||||
FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake"
|
||||
@ -402,4 +370,4 @@ if(ENABLE_GLSLANG_INSTALL)
|
||||
DESTINATION
|
||||
"${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
@ -49,7 +49,7 @@ if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS)
|
||||
message(WARNING \"Using `OGLCompilerTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
||||
|
||||
if (NOT TARGET glslang::OGLCompiler)
|
||||
include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||
include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||
endif()
|
||||
|
||||
add_library(OGLCompiler ALIAS glslang::OGLCompiler)
|
||||
|
@ -32,134 +32,6 @@
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
|
||||
#define SH_EXPORTING
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#include "InitializeDll.h"
|
||||
#include "../glslang/Include/InitializeGlobals.h"
|
||||
#include "../glslang/Public/ShaderLang.h"
|
||||
#include "../glslang/Include/PoolAlloc.h"
|
||||
|
||||
namespace glslang {
|
||||
|
||||
OS_TLSIndex ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
|
||||
|
||||
// Per-process initialization.
|
||||
// Needs to be called at least once before parsing, etc. is done.
|
||||
// Will also do thread initialization for the calling thread; other
|
||||
// threads will need to do that explicitly.
|
||||
bool InitProcess()
|
||||
{
|
||||
glslang::GetGlobalLock();
|
||||
|
||||
if (ThreadInitializeIndex != OS_INVALID_TLS_INDEX) {
|
||||
//
|
||||
// Function is re-entrant.
|
||||
//
|
||||
|
||||
glslang::ReleaseGlobalLock();
|
||||
return true;
|
||||
}
|
||||
|
||||
ThreadInitializeIndex = OS_AllocTLSIndex();
|
||||
|
||||
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
|
||||
assert(0 && "InitProcess(): Failed to allocate TLS area for init flag");
|
||||
|
||||
glslang::ReleaseGlobalLock();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (! InitializePoolIndex()) {
|
||||
assert(0 && "InitProcess(): Failed to initialize global pool");
|
||||
|
||||
glslang::ReleaseGlobalLock();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (! InitThread()) {
|
||||
assert(0 && "InitProcess(): Failed to initialize thread");
|
||||
|
||||
glslang::ReleaseGlobalLock();
|
||||
return false;
|
||||
}
|
||||
|
||||
glslang::ReleaseGlobalLock();
|
||||
return true;
|
||||
}
|
||||
|
||||
// Per-thread scoped initialization.
|
||||
// Must be called at least once by each new thread sharing the
|
||||
// symbol tables, etc., needed to parse.
|
||||
bool InitThread()
|
||||
{
|
||||
//
|
||||
// This function is re-entrant
|
||||
//
|
||||
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
|
||||
assert(0 && "InitThread(): Process hasn't been initalised.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (OS_GetTLSValue(ThreadInitializeIndex) != nullptr)
|
||||
return true;
|
||||
|
||||
if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) {
|
||||
assert(0 && "InitThread(): Unable to set init flag.");
|
||||
return false;
|
||||
}
|
||||
|
||||
glslang::SetThreadPoolAllocator(nullptr);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Not necessary to call this: InitThread() is reentrant, and the need
|
||||
// to do per thread tear down has been removed.
|
||||
//
|
||||
// This is kept, with memory management removed, to satisfy any exiting
|
||||
// calls to it that rely on it.
|
||||
bool DetachThread()
|
||||
{
|
||||
bool success = true;
|
||||
|
||||
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
|
||||
return true;
|
||||
|
||||
//
|
||||
// Function is re-entrant and this thread may not have been initialized.
|
||||
//
|
||||
if (OS_GetTLSValue(ThreadInitializeIndex) != nullptr) {
|
||||
if (!OS_SetTLSValue(ThreadInitializeIndex, nullptr)) {
|
||||
assert(0 && "DetachThread(): Unable to clear init flag.");
|
||||
success = false;
|
||||
}
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
// Not necessary to call this: InitProcess() is reentrant.
|
||||
//
|
||||
// This is kept, with memory management removed, to satisfy any exiting
|
||||
// calls to it that rely on it.
|
||||
//
|
||||
// Users of glslang should call shFinalize() or glslang::FinalizeProcess() for
|
||||
// process-scoped memory tear down.
|
||||
bool DetachProcess()
|
||||
{
|
||||
bool success = true;
|
||||
|
||||
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
|
||||
return true;
|
||||
|
||||
success = DetachThread();
|
||||
|
||||
OS_FreeTLSIndex(ThreadInitializeIndex);
|
||||
ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
} // end namespace glslang
|
||||
|
@ -38,10 +38,10 @@
|
||||
|
||||
namespace glslang {
|
||||
|
||||
bool InitProcess();
|
||||
bool InitThread();
|
||||
bool DetachThread(); // not called from standalone, perhaps other tools rely on parts of it
|
||||
bool DetachProcess(); // not called from standalone, perhaps other tools rely on parts of it
|
||||
inline bool InitProcess() { return true; } // DEPRECATED
|
||||
inline bool InitThread() { return true; } // DEPRECATED
|
||||
inline bool DetachThread() { return true; } // DEPRECATED
|
||||
inline bool DetachProcess() { return true; } // DEPRECATED
|
||||
|
||||
} // end namespace glslang
|
||||
|
||||
|
@ -112,7 +112,7 @@ BUILD DEPENDENCIES:
|
||||
|
||||
BUILDING
|
||||
--------------------------------------------------------------------------------
|
||||
The standalone remapper is built along side glslangValidator through its
|
||||
The standalone remapper is built along side glslang through its
|
||||
normal build process.
|
||||
|
||||
|
||||
|
90
README.md
90
README.md
@ -1,26 +1,19 @@
|
||||
# News
|
||||
|
||||
1. Visual Studio 2013 is no longer supported
|
||||
1. [As discussed in #3107](https://github.com/KhronosGroup/glslang/issues/3107), the default branch of this repository is now 'main'. This change should be transparent to repository users, since github rewrites many references to the old 'master' branch to 'main'. However, if you have a checked-out local clone, you may wish to take the following steps as recommended by github:
|
||||
|
||||
[As scheduled](https://github.com/KhronosGroup/glslang/blob/9eef54b2513ca6b40b47b07d24f453848b65c0df/README.md#planned-deprecationsremovals),
|
||||
Microsoft Visual Studio 2013 is no longer officially supported. \
|
||||
Please upgrade to at least Visual Studio 2015.
|
||||
```sh
|
||||
git branch -m master main
|
||||
git fetch origin
|
||||
git branch -u origin/main main
|
||||
git remote set-head origin -a
|
||||
```
|
||||
|
||||
2. The versioning scheme is being improved, and you might notice some differences. This is currently WIP, but will be coming soon. See, for example, PR #2277.
|
||||
2. C++17 (all platforms) and Visual Studio 2019 (Windows) are now required. This change was driven by the external dependency on SPIRV-Tools.
|
||||
|
||||
3. If you get a new **compilation error due to a missing header**, it might be caused by this planned removal:
|
||||
|
||||
**SPIRV Folder, 1-May, 2020.** Glslang, when installed through CMake,
|
||||
will install a `SPIRV` folder into `${CMAKE_INSTALL_INCLUDEDIR}`.
|
||||
This `SPIRV` folder is being moved to `glslang/SPIRV`.
|
||||
During the transition the `SPIRV` folder will be installed into both locations.
|
||||
The old install of `SPIRV/` will be removed as a CMake install target no sooner than May 1, 2020.
|
||||
See issue #1964.
|
||||
|
||||
If people are only using this location to get spirv.hpp, I recommend they get that from [SPIRV-Headers](https://github.com/KhronosGroup/SPIRV-Headers) instead.
|
||||
|
||||
[](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/master)
|
||||

|
||||

|
||||
[](https://securityscorecards.dev/viewer/?uri=github.com/KhronosGroup/glslang)
|
||||
|
||||
# Glslang Components and Status
|
||||
|
||||
@ -55,7 +48,7 @@ An API for getting reflection information from the AST, reflection types/variabl
|
||||
|
||||
### Standalone Wrapper
|
||||
|
||||
`glslangValidator` is command-line tool for accessing the functionality above.
|
||||
`glslang` is command-line tool for accessing the functionality above.
|
||||
|
||||
Status: Complete.
|
||||
|
||||
@ -73,7 +66,7 @@ The above page, while not kept up to date, includes additional information regar
|
||||
|
||||
## Execution of Standalone Wrapper
|
||||
|
||||
To use the standalone binary form, execute `glslangValidator`, and it will print
|
||||
To use the standalone binary form, execute `glslang`, and it will print
|
||||
a usage statement. Basic operation is to give it a file containing a shader,
|
||||
and it will print out warnings/errors and optionally an AST.
|
||||
|
||||
@ -99,15 +92,15 @@ There is also a non-shader extension:
|
||||
## Building (CMake)
|
||||
|
||||
Instead of building manually, you can also download the binaries for your
|
||||
platform directly from the [master-tot release][master-tot-release] on GitHub.
|
||||
platform directly from the [main-tot release][main-tot-release] on GitHub.
|
||||
Those binaries are automatically uploaded by the buildbots after successful
|
||||
testing and they always reflect the current top of the tree of the master
|
||||
testing and they always reflect the current top of the tree of the main
|
||||
branch.
|
||||
|
||||
### Dependencies
|
||||
|
||||
* A C++11 compiler.
|
||||
(For MSVS: use 2015 or later.)
|
||||
* A C++17 compiler.
|
||||
(For MSVS: use 2019 or later.)
|
||||
* [CMake][cmake]: for generating compilation targets.
|
||||
* make: _Linux_, ninja is an alternative, if configured.
|
||||
* [Python 3.x][python]: for executing SPIRV-Tools scripts. (Optional if not using SPIRV-Tools and the 'External' subdirectory does not exist.)
|
||||
@ -242,16 +235,13 @@ changes are quite infrequent. For windows you can get binaries from
|
||||
The command to rebuild is:
|
||||
|
||||
```bash
|
||||
m4 -P MachineIndependent/glslang.m4 > MachineIndependent/glslang.y
|
||||
bison --defines=MachineIndependent/glslang_tab.cpp.h
|
||||
-t MachineIndependent/glslang.y
|
||||
-o MachineIndependent/glslang_tab.cpp
|
||||
```
|
||||
|
||||
The above commands are also available in the bash script in `updateGrammar`,
|
||||
The above command is also available in the bash script in `updateGrammar`,
|
||||
when executed from the glslang subdirectory of the glslang repository.
|
||||
With no arguments it builds the full grammar, and with a "web" argument,
|
||||
the web grammar subset (see more about the web subset in the next section).
|
||||
|
||||
### Building to WASM for the Web and Node
|
||||
### Building a standalone JS/WASM library for the Web and Node
|
||||
@ -261,15 +251,9 @@ Use the steps in [Build Steps](#build-steps), with the following notes/exception
|
||||
Bash-like environments:
|
||||
+ [Instructions located here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install)
|
||||
* Wrap cmake call: `emcmake cmake`
|
||||
* Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF`.
|
||||
* Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF`.
|
||||
* Set `-DENABLE_HLSL=OFF` if HLSL is not needed.
|
||||
* For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`.
|
||||
* For building a minimum-size web subset of core glslang:
|
||||
+ turn on `-DENABLE_GLSLANG_WEBMIN=ON` (disables HLSL)
|
||||
+ execute `updateGrammar web` from the glslang subdirectory
|
||||
(or if using your own scripts, `m4` needs a `-DGLSLANG_WEB` argument)
|
||||
+ optionally, for GLSL compilation error messages, turn on
|
||||
`-DENABLE_GLSLANG_WEBMIN_DEVEL=ON`
|
||||
* To get a fully minimized build, make sure to use `brotli` to compress the .js
|
||||
and .wasm files
|
||||
|
||||
@ -277,7 +261,7 @@ Example:
|
||||
|
||||
```sh
|
||||
emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON \
|
||||
-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF ..
|
||||
-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF ..
|
||||
```
|
||||
|
||||
## Building glslang - Using vcpkg
|
||||
@ -433,9 +417,18 @@ warning/error and other options for controlling compilation.
|
||||
|
||||
This interface is located `glslang_c_interface.h` and exposes functionality similar to the C++ interface. The following snippet is a complete example showing how to compile GLSL into SPIR-V 1.5 for Vulkan 1.2.
|
||||
|
||||
```cxx
|
||||
std::vector<uint32_t> compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shaderSource, const char* fileName)
|
||||
{
|
||||
```c
|
||||
#include <glslang/Include/glslang_c_interface.h>
|
||||
|
||||
// Required for use of glslang_default_resource
|
||||
#include <glslang/Public/resource_limits_c.h>
|
||||
|
||||
typedef struct SpirVBinary {
|
||||
uint32_t *words; // SPIR-V words
|
||||
int size; // number of words in SPIR-V binary
|
||||
} SpirVBinary;
|
||||
|
||||
SpirVBinary compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shaderSource, const char* fileName) {
|
||||
const glslang_input_t input = {
|
||||
.language = GLSLANG_SOURCE_GLSL,
|
||||
.stage = stage,
|
||||
@ -449,18 +442,22 @@ std::vector<uint32_t> compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const c
|
||||
.force_default_version_and_profile = false,
|
||||
.forward_compatible = false,
|
||||
.messages = GLSLANG_MSG_DEFAULT_BIT,
|
||||
.resource = reinterpret_cast<const glslang_resource_t*>(&glslang::DefaultTBuiltInResource),
|
||||
.resource = glslang_default_resource(),
|
||||
};
|
||||
|
||||
glslang_shader_t* shader = glslang_shader_create(&input);
|
||||
|
||||
SpirVBinary bin = {
|
||||
.words = NULL,
|
||||
.size = 0,
|
||||
};
|
||||
if (!glslang_shader_preprocess(shader, &input)) {
|
||||
printf("GLSL preprocessing failed %s\n", fileName);
|
||||
printf("%s\n", glslang_shader_get_info_log(shader));
|
||||
printf("%s\n", glslang_shader_get_info_debug_log(shader));
|
||||
printf("%s\n", input.code);
|
||||
glslang_shader_delete(shader);
|
||||
return std::vector<uint32_t>();
|
||||
return bin;
|
||||
}
|
||||
|
||||
if (!glslang_shader_parse(shader, &input)) {
|
||||
@ -469,7 +466,7 @@ std::vector<uint32_t> compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const c
|
||||
printf("%s\n", glslang_shader_get_info_debug_log(shader));
|
||||
printf("%s\n", glslang_shader_get_preprocessed_code(shader));
|
||||
glslang_shader_delete(shader);
|
||||
return std::vector<uint32_t>();
|
||||
return bin;
|
||||
}
|
||||
|
||||
glslang_program_t* program = glslang_program_create();
|
||||
@ -481,13 +478,14 @@ std::vector<uint32_t> compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const c
|
||||
printf("%s\n", glslang_program_get_info_debug_log(program));
|
||||
glslang_program_delete(program);
|
||||
glslang_shader_delete(shader);
|
||||
return std::vector<uint32_t>();
|
||||
return bin;
|
||||
}
|
||||
|
||||
glslang_program_SPIRV_generate(program, stage);
|
||||
|
||||
std::vector<uint32_t> outShaderModule(glslang_program_SPIRV_get_size(program));
|
||||
glslang_program_SPIRV_get(program, outShaderModule.data());
|
||||
bin.size = glslang_program_SPIRV_get_size(program);
|
||||
bin.words = malloc(bin.size * sizeof(uint32_t));
|
||||
glslang_program_SPIRV_get(program, bin.words);
|
||||
|
||||
const char* spirv_messages = glslang_program_SPIRV_get_messages(program);
|
||||
if (spirv_messages)
|
||||
@ -496,7 +494,7 @@ std::vector<uint32_t> compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const c
|
||||
glslang_program_delete(program);
|
||||
glslang_shader_delete(shader);
|
||||
|
||||
return outShaderModule;
|
||||
return bin;
|
||||
}
|
||||
```
|
||||
|
||||
@ -555,4 +553,4 @@ std::vector<uint32_t> compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const c
|
||||
[bison]: https://www.gnu.org/software/bison/
|
||||
[googletest]: https://github.com/google/googletest
|
||||
[bison-gnu-win32]: http://gnuwin32.sourceforge.net/packages/bison.htm
|
||||
[master-tot-release]: https://github.com/KhronosGroup/glslang/releases/tag/master-tot
|
||||
[main-tot-release]: https://github.com/KhronosGroup/glslang/releases/tag/main-tot
|
||||
|
6
SECURITY.md
Normal file
6
SECURITY.md
Normal file
@ -0,0 +1,6 @@
|
||||
# Security Policy
|
||||
|
||||
To report a security issue, please disclose it at [security advisory](https://github.com/KhronosGroup/glslang/security/advisories/new).
|
||||
|
||||
This project is maintained by a team of volunteers on a reasonable-effort basis. As
|
||||
such, please give us at least 90 days to work on a fix before public exposure.
|
@ -71,8 +71,11 @@ set(SPVREMAP_HEADERS
|
||||
doc.h)
|
||||
|
||||
add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS})
|
||||
set_property(TARGET SPIRV PROPERTY FOLDER glslang)
|
||||
set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
set_target_properties(SPIRV PROPERTIES
|
||||
FOLDER glslang
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
VERSION "${GLSLANG_VERSION}"
|
||||
SOVERSION "${GLSLANG_VERSION_MAJOR}")
|
||||
target_include_directories(SPIRV PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
||||
@ -81,8 +84,11 @@ glslang_add_build_info_dependency(SPIRV)
|
||||
|
||||
if (ENABLE_SPVREMAPPER)
|
||||
add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
|
||||
set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
|
||||
set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
set_target_properties(SPVRemapper PROPERTIES
|
||||
FOLDER glslang
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
VERSION "${GLSLANG_VERSION}"
|
||||
SOVERSION "${GLSLANG_VERSION_MAJOR}")
|
||||
endif()
|
||||
|
||||
if(WIN32 AND BUILD_SHARED_LIBS)
|
||||
@ -123,7 +129,7 @@ if(ENABLE_GLSLANG_INSTALL)
|
||||
message(WARNING \"Using `SPVRemapperTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
||||
|
||||
if (NOT TARGET glslang::SPVRemapper)
|
||||
include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||
include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||
endif()
|
||||
|
||||
add_library(SPVRemapper ALIAS glslang::SPVRemapper)
|
||||
@ -135,7 +141,7 @@ if(ENABLE_GLSLANG_INSTALL)
|
||||
message(WARNING \"Using `SPIRVTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
||||
|
||||
if (NOT TARGET glslang::SPIRV)
|
||||
include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||
include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||
endif()
|
||||
|
||||
add_library(SPIRV ALIAS glslang::SPIRV)
|
||||
|
@ -39,6 +39,7 @@ static const char* const E_SPV_EXT_shader_atomic_float_add = "SPV_EXT_shader_ato
|
||||
static const char* const E_SPV_EXT_shader_atomic_float16_add = "SPV_EXT_shader_atomic_float16_add";
|
||||
static const char* const E_SPV_EXT_shader_atomic_float_min_max = "SPV_EXT_shader_atomic_float_min_max";
|
||||
static const char* const E_SPV_EXT_shader_image_int64 = "SPV_EXT_shader_image_int64";
|
||||
static const char* const E_SPV_EXT_shader_tile_image = "SPV_EXT_shader_tile_image";
|
||||
static const char* const E_SPV_EXT_mesh_shader = "SPV_EXT_mesh_shader";
|
||||
|
||||
#endif // #ifndef GLSLextEXT_H
|
||||
|
@ -54,5 +54,7 @@ static const char* const E_SPV_KHR_workgroup_memory_explicit_layout = "SPV_KHR_w
|
||||
static const char* const E_SPV_KHR_subgroup_uniform_control_flow = "SPV_KHR_subgroup_uniform_control_flow";
|
||||
static const char* const E_SPV_KHR_fragment_shader_barycentric = "SPV_KHR_fragment_shader_barycentric";
|
||||
static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_AMD_shader_early_and_late_fragment_tests";
|
||||
static const char* const E_SPV_KHR_ray_tracing_position_fetch = "SPV_KHR_ray_tracing_position_fetch";
|
||||
static const char* const E_SPV_KHR_cooperative_matrix = "SPV_KHR_cooperative_matrix";
|
||||
|
||||
#endif // #ifndef GLSLextKHR_H
|
||||
|
@ -81,4 +81,10 @@ const char* const E_SPV_NV_cooperative_matrix = "SPV_NV_cooperative_matrix";
|
||||
//SPV_NV_shader_sm_builtins
|
||||
const char* const E_SPV_NV_shader_sm_builtins = "SPV_NV_shader_sm_builtins";
|
||||
|
||||
//SPV_NV_shader_execution_reorder
|
||||
const char* const E_SPV_NV_shader_invocation_reorder = "SPV_NV_shader_invocation_reorder";
|
||||
|
||||
//SPV_NV_displacement_micromap
|
||||
const char* const E_SPV_NV_displacement_micromap = "SPV_NV_displacement_micromap";
|
||||
|
||||
#endif // #ifndef GLSLextNV_H
|
||||
|
41
SPIRV/GLSL.ext.QCOM.h
Normal file
41
SPIRV/GLSL.ext.QCOM.h
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
** Copyright (c) 2021 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
** of this software and/or associated documentation files (the "Materials"),
|
||||
** to deal in the Materials without restriction, including without limitation
|
||||
** the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
** and/or sell copies of the Materials, and to permit persons to whom the
|
||||
** Materials are furnished to do so, subject to the following conditions:
|
||||
**
|
||||
** The above copyright notice and this permission notice shall be included in
|
||||
** all copies or substantial portions of the Materials.
|
||||
**
|
||||
** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
||||
** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
||||
** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||
**
|
||||
** THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS
|
||||
** IN THE MATERIALS.
|
||||
*/
|
||||
|
||||
#ifndef GLSLextQCOM_H
|
||||
#define GLSLextQCOM_H
|
||||
|
||||
enum BuiltIn;
|
||||
enum Decoration;
|
||||
enum Op;
|
||||
enum Capability;
|
||||
|
||||
static const int GLSLextQCOMVersion = 100;
|
||||
static const int GLSLextQCOMRevision = 1;
|
||||
|
||||
//SPV_QCOM_image_processing
|
||||
const char* const E_SPV_QCOM_image_processing = "SPV_QCOM_image_processing";
|
||||
|
||||
#endif // #ifndef GLSLextQCOM_H
|
@ -13,7 +13,7 @@
|
||||
**
|
||||
** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
||||
** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
||||
** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||
** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||
**
|
||||
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
|
1271
SPIRV/GlslangToSpv.cpp
Normal file → Executable file
1271
SPIRV/GlslangToSpv.cpp
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
@ -55,7 +55,7 @@ void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsign
|
||||
SpvOptions* options = nullptr);
|
||||
void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
|
||||
spv::SpvBuildLogger* logger, SpvOptions* options = nullptr);
|
||||
void OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName);
|
||||
void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName);
|
||||
bool OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName);
|
||||
bool OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName);
|
||||
|
||||
}
|
||||
|
@ -32,8 +32,6 @@
|
||||
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
|
||||
#include "Logger.h"
|
||||
|
||||
#include <algorithm>
|
||||
@ -68,5 +66,3 @@ std::string SpvBuildLogger::getAllMessages() const {
|
||||
}
|
||||
|
||||
} // end spv namespace
|
||||
|
||||
#endif
|
||||
|
@ -46,14 +46,6 @@ class SpvBuildLogger {
|
||||
public:
|
||||
SpvBuildLogger() {}
|
||||
|
||||
#ifdef GLSLANG_WEB
|
||||
void tbdFunctionality(const std::string& f) { }
|
||||
void missingFunctionality(const std::string& f) { }
|
||||
void warning(const std::string& w) { }
|
||||
void error(const std::string& e) { errors.push_back(e); }
|
||||
std::string getAllMessages() { return ""; }
|
||||
#else
|
||||
|
||||
// Registers a TBD functionality.
|
||||
void tbdFunctionality(const std::string& f);
|
||||
// Registers a missing functionality.
|
||||
@ -67,7 +59,6 @@ public:
|
||||
// Returns all messages accumulated in the order of:
|
||||
// TBD functionalities, missing functionalities, warnings, errors.
|
||||
std::string getAllMessages() const;
|
||||
#endif
|
||||
|
||||
private:
|
||||
SpvBuildLogger(const SpvBuildLogger&);
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Copyright (c) 2020 The Khronos Group Inc.
|
||||
//
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and/or associated documentation files (the
|
||||
// "Materials"), to deal in the Materials without restriction, including
|
||||
@ -7,15 +7,15 @@
|
||||
// distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
// permit persons to whom the Materials are furnished to do so, subject to
|
||||
// the following conditions:
|
||||
//
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Materials.
|
||||
//
|
||||
//
|
||||
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||
// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
|
||||
// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
|
||||
// https://www.khronos.org/registry/
|
||||
//
|
||||
//
|
||||
// THE MATERIALS ARE 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.
|
||||
@ -23,7 +23,7 @@
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
|
||||
#define SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
|
||||
|
@ -1,19 +1,19 @@
|
||||
// Copyright (c) 2018 The Khronos Group Inc.
|
||||
//
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and/or associated documentation files (the "Materials"),
|
||||
// to deal in the Materials without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Materials, and to permit persons to whom the
|
||||
// Materials are furnished to do so, subject to the following conditions:
|
||||
//
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Materials.
|
||||
//
|
||||
//
|
||||
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
||||
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
||||
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||
//
|
||||
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||
//
|
||||
// THE MATERIALS ARE 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
|
||||
|
@ -36,10 +36,6 @@
|
||||
#include "SPVRemapper.h"
|
||||
#include "doc.h"
|
||||
|
||||
#if !defined (use_cpp11)
|
||||
// ... not supported before C++11
|
||||
#else // defined (use_cpp11)
|
||||
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
#include "../glslang/Include/Common.h"
|
||||
@ -316,14 +312,16 @@ namespace spv {
|
||||
literal.reserve(16);
|
||||
|
||||
do {
|
||||
spirword_t word = *pos;
|
||||
// BEGIN @MEWIN - 2024-06-26 - Fixed shadowing warning.
|
||||
spirword_t posWord = *pos;
|
||||
for (int i = 0; i < 4; i++) {
|
||||
char c = word & 0xff;
|
||||
char c = posWord & 0xff;
|
||||
if (c == '\0')
|
||||
return literal;
|
||||
literal += c;
|
||||
word >>= 8;
|
||||
posWord >>= 8;
|
||||
}
|
||||
// END @MEWIN
|
||||
pos++;
|
||||
} while (true);
|
||||
}
|
||||
@ -684,6 +682,7 @@ namespace spv {
|
||||
case spv::OperandKernelEnqueueFlags:
|
||||
case spv::OperandKernelProfilingInfo:
|
||||
case spv::OperandCapability:
|
||||
case spv::OperandCooperativeMatrixOperands:
|
||||
++word;
|
||||
break;
|
||||
|
||||
@ -1528,5 +1527,3 @@ namespace spv {
|
||||
|
||||
} // namespace SPV
|
||||
|
||||
#endif // defined (use_cpp11)
|
||||
|
||||
|
@ -43,12 +43,6 @@
|
||||
|
||||
namespace spv {
|
||||
|
||||
// MSVC defines __cplusplus as an older value, even when it supports almost all of 11.
|
||||
// We handle that here by making our own symbol.
|
||||
#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1700)
|
||||
# define use_cpp11 1
|
||||
#endif
|
||||
|
||||
class spirvbin_base_t
|
||||
{
|
||||
public:
|
||||
@ -74,27 +68,6 @@ public:
|
||||
|
||||
} // namespace SPV
|
||||
|
||||
#if !defined (use_cpp11)
|
||||
#include <cstdio>
|
||||
#include <cstdint>
|
||||
|
||||
namespace spv {
|
||||
class spirvbin_t : public spirvbin_base_t
|
||||
{
|
||||
public:
|
||||
spirvbin_t(int /*verbose = 0*/) { }
|
||||
|
||||
void remap(std::vector<std::uint32_t>& /*spv*/, unsigned int /*opts = 0*/)
|
||||
{
|
||||
printf("Tool not compiled for C++11, which is required for SPIR-V remapping.\n");
|
||||
exit(5);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace SPV
|
||||
|
||||
#else // defined (use_cpp11)
|
||||
|
||||
#include <functional>
|
||||
#include <cstdint>
|
||||
#include <unordered_map>
|
||||
@ -308,5 +281,4 @@ private:
|
||||
|
||||
} // namespace SPV
|
||||
|
||||
#endif // defined (use_cpp11)
|
||||
#endif // SPIRVREMAPPER_H
|
||||
|
@ -46,10 +46,7 @@
|
||||
#include <algorithm>
|
||||
|
||||
#include "SpvBuilder.h"
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
#include "hex_float.h"
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32
|
||||
#include <cstdio>
|
||||
@ -144,6 +141,7 @@ void Builder::addLine(Id fileName, int lineNum, int column)
|
||||
|
||||
void Builder::addDebugScopeAndLine(Id fileName, int lineNum, int column)
|
||||
{
|
||||
assert(!currentDebugScopeId.empty());
|
||||
if (currentDebugScopeId.top() != lastDebugScopeId) {
|
||||
spv::Id resultId = getUniqueId();
|
||||
Instruction* scopeInst = new Instruction(resultId, makeVoidType(), OpExtInst);
|
||||
@ -282,11 +280,6 @@ Id Builder::makePointerFromForwardPointer(StorageClass storageClass, Id forwardP
|
||||
|
||||
Id Builder::makeIntegerType(int width, bool hasSign)
|
||||
{
|
||||
#ifdef GLSLANG_WEB
|
||||
assert(width == 32);
|
||||
width = 32;
|
||||
#endif
|
||||
|
||||
// try to find it
|
||||
Instruction* type;
|
||||
for (int t = 0; t < (int)groupedTypes[OpTypeInt].size(); ++t) {
|
||||
@ -328,11 +321,6 @@ Id Builder::makeIntegerType(int width, bool hasSign)
|
||||
|
||||
Id Builder::makeFloatType(int width)
|
||||
{
|
||||
#ifdef GLSLANG_WEB
|
||||
assert(width == 32);
|
||||
width = 32;
|
||||
#endif
|
||||
|
||||
// try to find it
|
||||
Instruction* type;
|
||||
for (int t = 0; t < (int)groupedTypes[OpTypeFloat].size(); ++t) {
|
||||
@ -480,15 +468,41 @@ Id Builder::makeMatrixType(Id component, int cols, int rows)
|
||||
return type->getResultId();
|
||||
}
|
||||
|
||||
Id Builder::makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols)
|
||||
Id Builder::makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id cols, Id use)
|
||||
{
|
||||
// try to find it
|
||||
Instruction* type;
|
||||
for (int t = 0; t < (int)groupedTypes[OpTypeCooperativeMatrixKHR].size(); ++t) {
|
||||
type = groupedTypes[OpTypeCooperativeMatrixKHR][t];
|
||||
if (type->getIdOperand(0) == component &&
|
||||
type->getIdOperand(1) == scope &&
|
||||
type->getIdOperand(2) == rows &&
|
||||
type->getIdOperand(3) == cols &&
|
||||
type->getIdOperand(4) == use)
|
||||
return type->getResultId();
|
||||
}
|
||||
|
||||
// not found, make it
|
||||
type = new Instruction(getUniqueId(), NoType, OpTypeCooperativeMatrixKHR);
|
||||
type->addIdOperand(component);
|
||||
type->addIdOperand(scope);
|
||||
type->addIdOperand(rows);
|
||||
type->addIdOperand(cols);
|
||||
type->addIdOperand(use);
|
||||
groupedTypes[OpTypeCooperativeMatrixKHR].push_back(type);
|
||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||
module.mapInstruction(type);
|
||||
|
||||
return type->getResultId();
|
||||
}
|
||||
|
||||
Id Builder::makeCooperativeMatrixTypeNV(Id component, Id scope, Id rows, Id cols)
|
||||
{
|
||||
// try to find it
|
||||
Instruction* type;
|
||||
for (int t = 0; t < (int)groupedTypes[OpTypeCooperativeMatrixNV].size(); ++t) {
|
||||
type = groupedTypes[OpTypeCooperativeMatrixNV][t];
|
||||
if (type->getIdOperand(0) == component &&
|
||||
type->getIdOperand(1) == scope &&
|
||||
type->getIdOperand(2) == rows &&
|
||||
if (type->getIdOperand(0) == component && type->getIdOperand(1) == scope && type->getIdOperand(2) == rows &&
|
||||
type->getIdOperand(3) == cols)
|
||||
return type->getResultId();
|
||||
}
|
||||
@ -506,6 +520,17 @@ Id Builder::makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols)
|
||||
return type->getResultId();
|
||||
}
|
||||
|
||||
Id Builder::makeCooperativeMatrixTypeWithSameShape(Id component, Id otherType)
|
||||
{
|
||||
Instruction* instr = module.getInstruction(otherType);
|
||||
if (instr->getOpCode() == OpTypeCooperativeMatrixNV) {
|
||||
return makeCooperativeMatrixTypeNV(component, instr->getIdOperand(1), instr->getIdOperand(2), instr->getIdOperand(3));
|
||||
} else {
|
||||
assert(instr->getOpCode() == OpTypeCooperativeMatrixKHR);
|
||||
return makeCooperativeMatrixTypeKHR(component, instr->getIdOperand(1), instr->getIdOperand(2), instr->getIdOperand(3), instr->getIdOperand(4));
|
||||
}
|
||||
}
|
||||
|
||||
Id Builder::makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands)
|
||||
{
|
||||
// try to find it
|
||||
@ -650,8 +675,12 @@ Id Builder::makeDebugFunctionType(Id returnType, const std::vector<Id>& paramTyp
|
||||
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic));
|
||||
type->addIdOperand(debugId[returnType]);
|
||||
for (auto const paramType : paramTypes) {
|
||||
assert(isPointerType(paramType) || isArrayType(paramType));
|
||||
type->addIdOperand(debugId[getContainedTypeId(paramType)]);
|
||||
if (isPointerType(paramType) || isArrayType(paramType)) {
|
||||
type->addIdOperand(debugId[getContainedTypeId(paramType)]);
|
||||
}
|
||||
else {
|
||||
type->addIdOperand(debugId[paramType]);
|
||||
}
|
||||
}
|
||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||
module.mapInstruction(type);
|
||||
@ -691,7 +720,6 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo
|
||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||
module.mapInstruction(type);
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
// deal with capabilities
|
||||
switch (dim) {
|
||||
case DimBuffer:
|
||||
@ -737,7 +765,6 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo
|
||||
addCapability(CapabilityImageMSArray);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (emitNonSemanticShaderDebugInfo)
|
||||
{
|
||||
@ -832,13 +859,21 @@ Id Builder::makeBoolDebugType(int const size)
|
||||
|
||||
Id Builder::makeIntegerDebugType(int const width, bool const hasSign)
|
||||
{
|
||||
const char* typeName = nullptr;
|
||||
switch (width) {
|
||||
case 8: typeName = hasSign ? "int8_t" : "uint8_t"; break;
|
||||
case 16: typeName = hasSign ? "int16_t" : "uint16_t"; break;
|
||||
case 64: typeName = hasSign ? "int64_t" : "uint64_t"; break;
|
||||
default: typeName = hasSign ? "int" : "uint";
|
||||
}
|
||||
auto nameId = getStringId(typeName);
|
||||
// try to find it
|
||||
Instruction* type;
|
||||
for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) {
|
||||
type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t];
|
||||
if (type->getIdOperand(0) == (hasSign ? getStringId("int") : getStringId("uint")) &&
|
||||
if (type->getIdOperand(0) == nameId &&
|
||||
type->getIdOperand(1) == static_cast<unsigned int>(width) &&
|
||||
type->getIdOperand(2) == (hasSign ? NonSemanticShaderDebugInfo100Signed : NonSemanticShaderDebugInfo100Unsigned))
|
||||
type->getIdOperand(2) == static_cast<unsigned int>(hasSign ? NonSemanticShaderDebugInfo100Signed : NonSemanticShaderDebugInfo100Unsigned)) // @MEWIN - 2024-06-26 - Fixed comparison warning.
|
||||
return type->getResultId();
|
||||
}
|
||||
|
||||
@ -846,11 +881,7 @@ Id Builder::makeIntegerDebugType(int const width, bool const hasSign)
|
||||
type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic);
|
||||
if(hasSign == true) {
|
||||
type->addIdOperand(getStringId("int")); // name id
|
||||
} else {
|
||||
type->addIdOperand(getStringId("uint")); // name id
|
||||
}
|
||||
type->addIdOperand(nameId); // name id
|
||||
type->addIdOperand(makeUintConstant(width)); // size id
|
||||
if(hasSign == true) {
|
||||
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Signed)); // encoding id
|
||||
@ -868,11 +899,18 @@ Id Builder::makeIntegerDebugType(int const width, bool const hasSign)
|
||||
|
||||
Id Builder::makeFloatDebugType(int const width)
|
||||
{
|
||||
const char* typeName = nullptr;
|
||||
switch (width) {
|
||||
case 16: typeName = "float16_t"; break;
|
||||
case 64: typeName = "double"; break;
|
||||
default: typeName = "float"; break;
|
||||
}
|
||||
auto nameId = getStringId(typeName);
|
||||
// try to find it
|
||||
Instruction* type;
|
||||
for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) {
|
||||
type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t];
|
||||
if (type->getIdOperand(0) == getStringId("float") &&
|
||||
if (type->getIdOperand(0) == nameId &&
|
||||
type->getIdOperand(1) == static_cast<unsigned int>(width) &&
|
||||
type->getIdOperand(2) == NonSemanticShaderDebugInfo100Float)
|
||||
return type->getResultId();
|
||||
@ -882,7 +920,7 @@ Id Builder::makeFloatDebugType(int const width)
|
||||
type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic);
|
||||
type->addIdOperand(getStringId("float")); // name id
|
||||
type->addIdOperand(nameId); // name id
|
||||
type->addIdOperand(makeUintConstant(width)); // size id
|
||||
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Float)); // encoding id
|
||||
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id
|
||||
@ -929,7 +967,7 @@ Id Builder::makeArrayDebugType(Id const baseType, Id const componentCount)
|
||||
|
||||
Id Builder::makeVectorDebugType(Id const baseType, int const componentCount)
|
||||
{
|
||||
return makeSequentialDebugType(baseType, makeUintConstant(componentCount), NonSemanticShaderDebugInfo100DebugTypeVector);;
|
||||
return makeSequentialDebugType(baseType, makeUintConstant(componentCount), NonSemanticShaderDebugInfo100DebugTypeVector);
|
||||
}
|
||||
|
||||
Id Builder::makeMatrixDebugType(Id const vectorType, int const vectorCount, bool columnMajor)
|
||||
@ -991,7 +1029,10 @@ Id Builder::makeCompositeDebugType(std::vector<Id> const& memberTypes, char cons
|
||||
for(auto const memberType : memberTypes) {
|
||||
assert(debugTypeLocs.find(memberType) != debugTypeLocs.end());
|
||||
|
||||
memberDebugTypes.emplace_back(makeMemberDebugType(memberType, debugTypeLocs[memberType]));
|
||||
// There _should_ be debug types for all the member types but currently buffer references
|
||||
// do not have member debug info generated.
|
||||
if (debugId[memberType])
|
||||
memberDebugTypes.emplace_back(makeMemberDebugType(memberType, debugTypeLocs[memberType]));
|
||||
|
||||
// TODO: Need to rethink this method of passing location information.
|
||||
// debugTypeLocs.erase(memberType);
|
||||
@ -1067,6 +1108,12 @@ Id Builder::makeDebugCompilationUnit() {
|
||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(sourceInst));
|
||||
module.mapInstruction(sourceInst);
|
||||
nonSemanticShaderCompilationUnitId = resultId;
|
||||
|
||||
// We can reasonably assume that makeDebugCompilationUnit will be called before any of
|
||||
// debug-scope stack. Function scopes and lexical scopes will occur afterward.
|
||||
assert(currentDebugScopeId.empty());
|
||||
currentDebugScopeId.push(nonSemanticShaderCompilationUnitId);
|
||||
|
||||
return resultId;
|
||||
}
|
||||
|
||||
@ -1096,6 +1143,8 @@ Id Builder::createDebugGlobalVariable(Id const type, char const*const name, Id c
|
||||
Id Builder::createDebugLocalVariable(Id type, char const*const name, size_t const argNumber)
|
||||
{
|
||||
assert(name != nullptr);
|
||||
assert(!currentDebugScopeId.empty());
|
||||
|
||||
Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||
inst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||
inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLocalVariable);
|
||||
@ -1107,7 +1156,7 @@ Id Builder::createDebugLocalVariable(Id type, char const*const name, size_t cons
|
||||
inst->addIdOperand(currentDebugScopeId.top()); // scope id
|
||||
inst->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsLocal)); // flags id
|
||||
if(argNumber != 0) {
|
||||
inst->addIdOperand(makeUintConstant(argNumber));
|
||||
inst->addIdOperand(makeUintConstant(static_cast<unsigned>(argNumber))); // @MEWIN - 2024-06-26 - Fixed cast warning.
|
||||
}
|
||||
|
||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(inst));
|
||||
@ -1146,7 +1195,6 @@ Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const localVariable
|
||||
return inst->getResultId();
|
||||
}
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
Id Builder::makeAccelerationStructureType()
|
||||
{
|
||||
Instruction *type;
|
||||
@ -1176,7 +1224,21 @@ Id Builder::makeRayQueryType()
|
||||
|
||||
return type->getResultId();
|
||||
}
|
||||
#endif
|
||||
|
||||
Id Builder::makeHitObjectNVType()
|
||||
{
|
||||
Instruction *type;
|
||||
if (groupedTypes[OpTypeHitObjectNV].size() == 0) {
|
||||
type = new Instruction(getUniqueId(), NoType, OpTypeHitObjectNV);
|
||||
groupedTypes[OpTypeHitObjectNV].push_back(type);
|
||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||
module.mapInstruction(type);
|
||||
} else {
|
||||
type = groupedTypes[OpTypeHitObjectNV].back();
|
||||
}
|
||||
|
||||
return type->getResultId();
|
||||
}
|
||||
|
||||
Id Builder::getDerefTypeId(Id resultId) const
|
||||
{
|
||||
@ -1226,6 +1288,7 @@ int Builder::getNumTypeConstituents(Id typeId) const
|
||||
}
|
||||
case OpTypeStruct:
|
||||
return instr->getNumOperands();
|
||||
case OpTypeCooperativeMatrixKHR:
|
||||
case OpTypeCooperativeMatrixNV:
|
||||
// has only one constituent when used with OpCompositeConstruct.
|
||||
return 1;
|
||||
@ -1275,6 +1338,7 @@ Id Builder::getContainedTypeId(Id typeId, int member) const
|
||||
case OpTypeMatrix:
|
||||
case OpTypeArray:
|
||||
case OpTypeRuntimeArray:
|
||||
case OpTypeCooperativeMatrixKHR:
|
||||
case OpTypeCooperativeMatrixNV:
|
||||
return instr->getIdOperand(0);
|
||||
case OpTypePointer:
|
||||
@ -1345,7 +1409,7 @@ bool Builder::containsType(Id typeId, spv::Op typeOp, unsigned int width) const
|
||||
}
|
||||
|
||||
// return true if the type is a pointer to PhysicalStorageBufferEXT or an
|
||||
// array of such pointers. These require restrict/aliased decorations.
|
||||
// contains such a pointer. These require restrict/aliased decorations.
|
||||
bool Builder::containsPhysicalStorageBufferOrArray(Id typeId) const
|
||||
{
|
||||
const Instruction& instr = *module.getInstruction(typeId);
|
||||
@ -1357,6 +1421,12 @@ bool Builder::containsPhysicalStorageBufferOrArray(Id typeId) const
|
||||
return getTypeStorageClass(typeId) == StorageClassPhysicalStorageBufferEXT;
|
||||
case OpTypeArray:
|
||||
return containsPhysicalStorageBufferOrArray(getContainedTypeId(typeId));
|
||||
case OpTypeStruct:
|
||||
for (int m = 0; m < instr.getNumOperands(); ++m) {
|
||||
if (containsPhysicalStorageBufferOrArray(instr.getIdOperand(m)))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@ -1570,10 +1640,6 @@ Id Builder::makeFloatConstant(float f, bool specConstant)
|
||||
|
||||
Id Builder::makeDoubleConstant(double d, bool specConstant)
|
||||
{
|
||||
#ifdef GLSLANG_WEB
|
||||
assert(0);
|
||||
return NoResult;
|
||||
#else
|
||||
Op opcode = specConstant ? OpSpecConstant : OpConstant;
|
||||
Id typeId = makeFloatType(64);
|
||||
union { double db; unsigned long long ull; } u;
|
||||
@ -1598,15 +1664,10 @@ Id Builder::makeDoubleConstant(double d, bool specConstant)
|
||||
module.mapInstruction(c);
|
||||
|
||||
return c->getResultId();
|
||||
#endif
|
||||
}
|
||||
|
||||
Id Builder::makeFloat16Constant(float f16, bool specConstant)
|
||||
{
|
||||
#ifdef GLSLANG_WEB
|
||||
assert(0);
|
||||
return NoResult;
|
||||
#else
|
||||
Op opcode = specConstant ? OpSpecConstant : OpConstant;
|
||||
Id typeId = makeFloatType(16);
|
||||
|
||||
@ -1631,17 +1692,11 @@ Id Builder::makeFloat16Constant(float f16, bool specConstant)
|
||||
module.mapInstruction(c);
|
||||
|
||||
return c->getResultId();
|
||||
#endif
|
||||
}
|
||||
|
||||
Id Builder::makeFpConstant(Id type, double d, bool specConstant)
|
||||
{
|
||||
#ifdef GLSLANG_WEB
|
||||
const int width = 32;
|
||||
assert(width == getScalarTypeWidth(type));
|
||||
#else
|
||||
const int width = getScalarTypeWidth(type);
|
||||
#endif
|
||||
|
||||
assert(isFloatType(type));
|
||||
|
||||
@ -1735,6 +1790,7 @@ Id Builder::makeCompositeConstant(Id typeId, const std::vector<Id>& members, boo
|
||||
case OpTypeVector:
|
||||
case OpTypeArray:
|
||||
case OpTypeMatrix:
|
||||
case OpTypeCooperativeMatrixKHR:
|
||||
case OpTypeCooperativeMatrixNV:
|
||||
if (! specConstant) {
|
||||
Id existing = findCompositeConstant(typeClass, typeId, members);
|
||||
@ -1782,6 +1838,10 @@ Instruction* Builder::addEntryPoint(ExecutionModel model, Function* function, co
|
||||
// Currently relying on the fact that all 'value' of interest are small non-negative values.
|
||||
void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, int value1, int value2, int value3)
|
||||
{
|
||||
// entryPoint can be null if we are in compile-only mode
|
||||
if (!entryPoint)
|
||||
return;
|
||||
|
||||
Instruction* instr = new Instruction(OpExecutionMode);
|
||||
instr->addIdOperand(entryPoint->getId());
|
||||
instr->addImmediateOperand(mode);
|
||||
@ -1797,6 +1857,10 @@ void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, int val
|
||||
|
||||
void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, const std::vector<unsigned>& literals)
|
||||
{
|
||||
// entryPoint can be null if we are in compile-only mode
|
||||
if (!entryPoint)
|
||||
return;
|
||||
|
||||
Instruction* instr = new Instruction(OpExecutionMode);
|
||||
instr->addIdOperand(entryPoint->getId());
|
||||
instr->addImmediateOperand(mode);
|
||||
@ -1808,6 +1872,10 @@ void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, const s
|
||||
|
||||
void Builder::addExecutionModeId(Function* entryPoint, ExecutionMode mode, const std::vector<Id>& operandIds)
|
||||
{
|
||||
// entryPoint can be null if we are in compile-only mode
|
||||
if (!entryPoint)
|
||||
return;
|
||||
|
||||
Instruction* instr = new Instruction(OpExecutionModeId);
|
||||
instr->addIdOperand(entryPoint->getId());
|
||||
instr->addImmediateOperand(mode);
|
||||
@ -1877,7 +1945,7 @@ void Builder::addDecoration(Id id, Decoration decoration, const std::vector<unsi
|
||||
decorations.push_back(std::unique_ptr<Instruction>(dec));
|
||||
}
|
||||
|
||||
void Builder::addDecoration(Id id, Decoration decoration, const std::vector<const char*>& strings)
|
||||
void Builder::addDecoration(Id id, Decoration decoration, const std::vector<const char*>& stringOps) // @MEWIN - 2024-06-26 - Fixed shadowing warning.
|
||||
{
|
||||
if (decoration == spv::DecorationMax)
|
||||
return;
|
||||
@ -1885,8 +1953,20 @@ void Builder::addDecoration(Id id, Decoration decoration, const std::vector<cons
|
||||
Instruction* dec = new Instruction(OpDecorateString);
|
||||
dec->addIdOperand(id);
|
||||
dec->addImmediateOperand(decoration);
|
||||
for (auto string : strings)
|
||||
dec->addStringOperand(string);
|
||||
// BEGIN @MEWIN - 2024-06-26 - Fixed shadowing warning.
|
||||
for (auto stringOp : stringOps)
|
||||
dec->addStringOperand(stringOp);
|
||||
// END @MEWIN
|
||||
|
||||
decorations.push_back(std::unique_ptr<Instruction>(dec));
|
||||
}
|
||||
|
||||
void Builder::addLinkageDecoration(Id id, const char* name, spv::LinkageType linkType) {
|
||||
Instruction* dec = new Instruction(OpDecorate);
|
||||
dec->addIdOperand(id);
|
||||
dec->addImmediateOperand(spv::DecorationLinkageAttributes);
|
||||
dec->addStringOperand(name);
|
||||
dec->addImmediateOperand(linkType);
|
||||
|
||||
decorations.push_back(std::unique_ptr<Instruction>(dec));
|
||||
}
|
||||
@ -1963,7 +2043,7 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat
|
||||
decorations.push_back(std::unique_ptr<Instruction>(dec));
|
||||
}
|
||||
|
||||
void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const std::vector<const char*>& strings)
|
||||
void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const std::vector<const char*>& stringOps) // @MEWIN - 2024-06-26 - Fixed shadowing warning.
|
||||
{
|
||||
if (decoration == spv::DecorationMax)
|
||||
return;
|
||||
@ -1972,8 +2052,10 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat
|
||||
dec->addIdOperand(id);
|
||||
dec->addImmediateOperand(member);
|
||||
dec->addImmediateOperand(decoration);
|
||||
for (auto string : strings)
|
||||
dec->addStringOperand(string);
|
||||
// BEGIN @MEWIN - 2024-06-26 - Fixed shadowing warning.
|
||||
for (auto stringOp : stringOps)
|
||||
dec->addStringOperand(stringOp);
|
||||
// END @MEWIN
|
||||
|
||||
decorations.push_back(std::unique_ptr<Instruction>(dec));
|
||||
}
|
||||
@ -1986,7 +2068,7 @@ Function* Builder::makeEntryPoint(const char* entryPoint)
|
||||
Block* entry;
|
||||
std::vector<Id> paramsTypes;
|
||||
std::vector<char const*> paramNames;
|
||||
std::vector<std::vector<Decoration>> decorations;
|
||||
std::vector<std::vector<Decoration>> decos; // @MEWIN - 2024-06-26 - Fixed shadowing warning.
|
||||
|
||||
auto const returnType = makeVoidType();
|
||||
|
||||
@ -1995,7 +2077,7 @@ Function* Builder::makeEntryPoint(const char* entryPoint)
|
||||
emitNonSemanticShaderDebugInfo = false;
|
||||
}
|
||||
|
||||
entryPointFunction = makeFunctionEntry(NoPrecision, returnType, entryPoint, paramsTypes, paramNames, decorations, &entry);
|
||||
entryPointFunction = makeFunctionEntry(NoPrecision, returnType, entryPoint, LinkageTypeMax, paramsTypes, paramNames, decos, &entry); // @MEWIN - 2024-06-26 - Fixed shadowing warning.
|
||||
|
||||
emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo;
|
||||
|
||||
@ -2003,23 +2085,25 @@ Function* Builder::makeEntryPoint(const char* entryPoint)
|
||||
}
|
||||
|
||||
// Comments in header
|
||||
Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name,
|
||||
Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name, LinkageType linkType,
|
||||
const std::vector<Id>& paramTypes, const std::vector<char const*>& paramNames,
|
||||
const std::vector<std::vector<Decoration>>& decorations, Block **entry)
|
||||
const std::vector<std::vector<Decoration>>& decos, Block **entry) // @MEWIN - 2024-06-26 - Fixed shadowing warning.
|
||||
{
|
||||
// Make the function and initial instructions in it
|
||||
Id typeId = makeFunctionType(returnType, paramTypes);
|
||||
Id firstParamId = paramTypes.size() == 0 ? 0 : getUniqueIds((int)paramTypes.size());
|
||||
Id funcId = getUniqueId();
|
||||
Function* function = new Function(funcId, returnType, typeId, firstParamId, module);
|
||||
Function* function = new Function(funcId, returnType, typeId, firstParamId, linkType, name, module);
|
||||
|
||||
// Set up the precisions
|
||||
setPrecision(function->getId(), precision);
|
||||
function->setReturnPrecision(precision);
|
||||
for (unsigned p = 0; p < (unsigned)decorations.size(); ++p) {
|
||||
for (int d = 0; d < (int)decorations[p].size(); ++d) {
|
||||
addDecoration(firstParamId + p, decorations[p][d]);
|
||||
function->addParamPrecision(p, decorations[p][d]);
|
||||
// BEGIN @MEWIN - 2024-06-26 - Fixed shadowing warning.
|
||||
for (unsigned p = 0; p < (unsigned)decos.size(); ++p) {
|
||||
for (int d = 0; d < (int)decos[p].size(); ++d) {
|
||||
addDecoration(firstParamId + p, decos[p][d]);
|
||||
function->addParamPrecision(p, decos[p][d]);
|
||||
// END @MEWIN
|
||||
}
|
||||
}
|
||||
|
||||
@ -2047,14 +2131,19 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const
|
||||
assert(paramTypes.size() == paramNames.size());
|
||||
for(size_t p = 0; p < paramTypes.size(); ++p)
|
||||
{
|
||||
auto const& paramType = paramTypes[p];
|
||||
assert(isPointerType(paramType) || isArrayType(paramType));
|
||||
assert(debugId[getContainedTypeId(paramType)] != 0);
|
||||
auto getParamTypeId = [this](Id const& typeId) {
|
||||
if (isPointerType(typeId) || isArrayType(typeId)) {
|
||||
return getContainedTypeId(typeId);
|
||||
}
|
||||
else {
|
||||
return typeId;
|
||||
}
|
||||
};
|
||||
auto const& paramName = paramNames[p];
|
||||
auto const debugLocalVariableId = createDebugLocalVariable(debugId[getContainedTypeId(paramType)], paramName, p+1);
|
||||
debugId[firstParamId + p] = debugLocalVariableId;
|
||||
auto const debugLocalVariableId = createDebugLocalVariable(debugId[getParamTypeId(paramTypes[p])], paramName, p+1);
|
||||
debugId[static_cast<unsigned>(firstParamId + p)] = debugLocalVariableId; // @MEWIN - 2024-06-26 - Fixed cast warning.
|
||||
|
||||
makeDebugDeclare(debugLocalVariableId, firstParamId + p);
|
||||
makeDebugDeclare(debugLocalVariableId, static_cast<spv::Id>(firstParamId + p)); // @MEWIN - 2024-06-26 - Fixed cast warning.
|
||||
}
|
||||
}
|
||||
|
||||
@ -2070,7 +2159,8 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const
|
||||
return function;
|
||||
}
|
||||
|
||||
Id Builder::makeDebugFunction(Function* function, Id nameId, Id funcTypeId) {
|
||||
Id Builder::makeDebugFunction([[maybe_unused]] Function* function, Id nameId, Id funcTypeId)
|
||||
{
|
||||
assert(function != nullptr);
|
||||
assert(nameId != 0);
|
||||
assert(funcTypeId != 0);
|
||||
@ -2095,6 +2185,8 @@ Id Builder::makeDebugFunction(Function* function, Id nameId, Id funcTypeId) {
|
||||
}
|
||||
|
||||
Id Builder::makeDebugLexicalBlock(uint32_t line) {
|
||||
assert(!currentDebugScopeId.empty());
|
||||
|
||||
Id lexId = getUniqueId();
|
||||
auto lex = new Instruction(lexId, makeVoidType(), OpExtInst);
|
||||
lex->addIdOperand(nonSemanticShaderDebugInfo);
|
||||
@ -2173,6 +2265,12 @@ void Builder::enterFunction(Function const* function)
|
||||
defInst->addIdOperand(funcId);
|
||||
buildPoint->addInstruction(std::unique_ptr<Instruction>(defInst));
|
||||
}
|
||||
|
||||
if (auto linkType = function->getLinkType(); linkType != LinkageTypeMax) {
|
||||
Id funcId = function->getFuncId();
|
||||
addCapability(CapabilityLinkage);
|
||||
addLinkageDecoration(funcId, function->getExportName(), linkType);
|
||||
}
|
||||
}
|
||||
|
||||
// Comments in header
|
||||
@ -2363,7 +2461,24 @@ Id Builder::createArrayLength(Id base, unsigned int member)
|
||||
return length->getResultId();
|
||||
}
|
||||
|
||||
Id Builder::createCooperativeMatrixLength(Id type)
|
||||
Id Builder::createCooperativeMatrixLengthKHR(Id type)
|
||||
{
|
||||
spv::Id intType = makeUintType(32);
|
||||
|
||||
// Generate code for spec constants if in spec constant operation
|
||||
// generation mode.
|
||||
if (generatingOpCodeForSpecConst) {
|
||||
return createSpecConstantOp(OpCooperativeMatrixLengthKHR, intType, std::vector<Id>(1, type), std::vector<Id>());
|
||||
}
|
||||
|
||||
Instruction* length = new Instruction(getUniqueId(), intType, OpCooperativeMatrixLengthKHR);
|
||||
length->addIdOperand(type);
|
||||
buildPoint->addInstruction(std::unique_ptr<Instruction>(length));
|
||||
|
||||
return length->getResultId();
|
||||
}
|
||||
|
||||
Id Builder::createCooperativeMatrixLengthNV(Id type)
|
||||
{
|
||||
spv::Id intType = makeUintType(32);
|
||||
|
||||
@ -2734,52 +2849,47 @@ Id Builder::createBuiltinCall(Id resultType, Id builtins, int entryPoint, const
|
||||
Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, bool fetch, bool proj, bool gather,
|
||||
bool noImplicitLod, const TextureParameters& parameters, ImageOperandsMask signExtensionMask)
|
||||
{
|
||||
static const int maxTextureArgs = 10;
|
||||
Id texArgs[maxTextureArgs] = {};
|
||||
std::vector<Id> texArgs;
|
||||
|
||||
//
|
||||
// Set up the fixed arguments
|
||||
//
|
||||
int numArgs = 0;
|
||||
bool explicitLod = false;
|
||||
texArgs[numArgs++] = parameters.sampler;
|
||||
texArgs[numArgs++] = parameters.coords;
|
||||
texArgs.push_back(parameters.sampler);
|
||||
texArgs.push_back(parameters.coords);
|
||||
if (parameters.Dref != NoResult)
|
||||
texArgs[numArgs++] = parameters.Dref;
|
||||
texArgs.push_back(parameters.Dref);
|
||||
if (parameters.component != NoResult)
|
||||
texArgs[numArgs++] = parameters.component;
|
||||
texArgs.push_back(parameters.component);
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
if (parameters.granularity != NoResult)
|
||||
texArgs[numArgs++] = parameters.granularity;
|
||||
texArgs.push_back(parameters.granularity);
|
||||
if (parameters.coarse != NoResult)
|
||||
texArgs[numArgs++] = parameters.coarse;
|
||||
#endif
|
||||
texArgs.push_back(parameters.coarse);
|
||||
|
||||
//
|
||||
// Set up the optional arguments
|
||||
//
|
||||
int optArgNum = numArgs; // track which operand, if it exists, is the mask of optional arguments
|
||||
++numArgs; // speculatively make room for the mask operand
|
||||
size_t optArgNum = texArgs.size(); // the position of the mask for the optional arguments, if any.
|
||||
ImageOperandsMask mask = ImageOperandsMaskNone; // the mask operand
|
||||
if (parameters.bias) {
|
||||
mask = (ImageOperandsMask)(mask | ImageOperandsBiasMask);
|
||||
texArgs[numArgs++] = parameters.bias;
|
||||
texArgs.push_back(parameters.bias);
|
||||
}
|
||||
if (parameters.lod) {
|
||||
mask = (ImageOperandsMask)(mask | ImageOperandsLodMask);
|
||||
texArgs[numArgs++] = parameters.lod;
|
||||
texArgs.push_back(parameters.lod);
|
||||
explicitLod = true;
|
||||
} else if (parameters.gradX) {
|
||||
mask = (ImageOperandsMask)(mask | ImageOperandsGradMask);
|
||||
texArgs[numArgs++] = parameters.gradX;
|
||||
texArgs[numArgs++] = parameters.gradY;
|
||||
texArgs.push_back(parameters.gradX);
|
||||
texArgs.push_back(parameters.gradY);
|
||||
explicitLod = true;
|
||||
} else if (noImplicitLod && ! fetch && ! gather) {
|
||||
// have to explicitly use lod of 0 if not allowed to have them be implicit, and
|
||||
// we would otherwise be about to issue an implicit instruction
|
||||
mask = (ImageOperandsMask)(mask | ImageOperandsLodMask);
|
||||
texArgs[numArgs++] = makeFloatConstant(0.0);
|
||||
texArgs.push_back(makeFloatConstant(0.0));
|
||||
explicitLod = true;
|
||||
}
|
||||
if (parameters.offset) {
|
||||
@ -2789,24 +2899,23 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
|
||||
addCapability(CapabilityImageGatherExtended);
|
||||
mask = (ImageOperandsMask)(mask | ImageOperandsOffsetMask);
|
||||
}
|
||||
texArgs[numArgs++] = parameters.offset;
|
||||
texArgs.push_back(parameters.offset);
|
||||
}
|
||||
if (parameters.offsets) {
|
||||
addCapability(CapabilityImageGatherExtended);
|
||||
mask = (ImageOperandsMask)(mask | ImageOperandsConstOffsetsMask);
|
||||
texArgs[numArgs++] = parameters.offsets;
|
||||
texArgs.push_back(parameters.offsets);
|
||||
}
|
||||
#ifndef GLSLANG_WEB
|
||||
if (parameters.sample) {
|
||||
mask = (ImageOperandsMask)(mask | ImageOperandsSampleMask);
|
||||
texArgs[numArgs++] = parameters.sample;
|
||||
texArgs.push_back(parameters.sample);
|
||||
}
|
||||
if (parameters.lodClamp) {
|
||||
// capability if this bit is used
|
||||
addCapability(CapabilityMinLod);
|
||||
|
||||
mask = (ImageOperandsMask)(mask | ImageOperandsMinLodMask);
|
||||
texArgs[numArgs++] = parameters.lodClamp;
|
||||
texArgs.push_back(parameters.lodClamp);
|
||||
}
|
||||
if (parameters.nonprivate) {
|
||||
mask = mask | ImageOperandsNonPrivateTexelKHRMask;
|
||||
@ -2814,12 +2923,10 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
|
||||
if (parameters.volatil) {
|
||||
mask = mask | ImageOperandsVolatileTexelKHRMask;
|
||||
}
|
||||
#endif
|
||||
mask = mask | signExtensionMask;
|
||||
if (mask == ImageOperandsMaskNone)
|
||||
--numArgs; // undo speculative reservation for the mask argument
|
||||
else
|
||||
texArgs[optArgNum] = mask;
|
||||
// insert the operand for the mask, if any bits were set.
|
||||
if (mask != ImageOperandsMaskNone)
|
||||
texArgs.insert(texArgs.begin() + optArgNum, mask);
|
||||
|
||||
//
|
||||
// Set up the instruction
|
||||
@ -2830,7 +2937,6 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
|
||||
opCode = OpImageSparseFetch;
|
||||
else
|
||||
opCode = OpImageFetch;
|
||||
#ifndef GLSLANG_WEB
|
||||
} else if (parameters.granularity && parameters.coarse) {
|
||||
opCode = OpImageSampleFootprintNV;
|
||||
} else if (gather) {
|
||||
@ -2844,7 +2950,6 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
|
||||
opCode = OpImageSparseGather;
|
||||
else
|
||||
opCode = OpImageGather;
|
||||
#endif
|
||||
} else if (explicitLod) {
|
||||
if (parameters.Dref) {
|
||||
if (proj)
|
||||
@ -2923,11 +3028,11 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
|
||||
|
||||
// Build the SPIR-V instruction
|
||||
Instruction* textureInst = new Instruction(getUniqueId(), resultType, opCode);
|
||||
for (int op = 0; op < optArgNum; ++op)
|
||||
for (size_t op = 0; op < optArgNum; ++op)
|
||||
textureInst->addIdOperand(texArgs[op]);
|
||||
if (optArgNum < numArgs)
|
||||
if (optArgNum < texArgs.size())
|
||||
textureInst->addImmediateOperand(texArgs[optArgNum]);
|
||||
for (int op = optArgNum + 1; op < numArgs; ++op)
|
||||
for (size_t op = optArgNum + 1; op < texArgs.size(); ++op)
|
||||
textureInst->addIdOperand(texArgs[op]);
|
||||
setPrecision(textureInst->getResultId(), precision);
|
||||
buildPoint->addInstruction(std::unique_ptr<Instruction>(textureInst));
|
||||
@ -3207,12 +3312,7 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector<Id>&
|
||||
int numRows = getTypeNumRows(resultTypeId);
|
||||
|
||||
Instruction* instr = module.getInstruction(componentTypeId);
|
||||
#ifdef GLSLANG_WEB
|
||||
const unsigned bitCount = 32;
|
||||
assert(bitCount == instr->getImmediateOperand(0));
|
||||
#else
|
||||
const unsigned bitCount = instr->getImmediateOperand(0);
|
||||
#endif
|
||||
|
||||
// Optimize matrix constructed from a bigger matrix
|
||||
if (isMatrix(sources[0]) && getNumColumns(sources[0]) >= numCols && getNumRows(sources[0]) >= numRows) {
|
||||
@ -4033,4 +4133,4 @@ void Builder::dumpModuleProcesses(std::vector<unsigned int>& out) const
|
||||
}
|
||||
}
|
||||
|
||||
}; // end spv namespace
|
||||
} // end spv namespace
|
||||
|
@ -103,7 +103,7 @@ public:
|
||||
stringIds[file_c_str] = strId;
|
||||
return strId;
|
||||
}
|
||||
spv::Id getSourceFile() const
|
||||
spv::Id getSourceFile() const
|
||||
{
|
||||
return sourceFileStringId;
|
||||
}
|
||||
@ -203,7 +203,9 @@ public:
|
||||
Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format);
|
||||
Id makeSamplerType();
|
||||
Id makeSampledImageType(Id imageType);
|
||||
Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols);
|
||||
Id makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id cols, Id use);
|
||||
Id makeCooperativeMatrixTypeNV(Id component, Id scope, Id rows, Id cols);
|
||||
Id makeCooperativeMatrixTypeWithSameShape(Id component, Id otherType);
|
||||
Id makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands);
|
||||
|
||||
// SPIR-V NonSemantic Shader DebugInfo Instructions
|
||||
@ -240,6 +242,8 @@ public:
|
||||
Id makeAccelerationStructureType();
|
||||
// rayQueryEXT type
|
||||
Id makeRayQueryType();
|
||||
// hitObjectNV type
|
||||
Id makeHitObjectNVType();
|
||||
|
||||
// For querying about types.
|
||||
Id getTypeId(Id resultId) const { return module.getTypeId(resultId); }
|
||||
@ -257,6 +261,7 @@ public:
|
||||
ImageFormat getImageTypeFormat(Id typeId) const
|
||||
{ return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6); }
|
||||
Id getResultingAccessChainType() const;
|
||||
Id getIdOperand(Id resultId, int idx) { return module.getInstruction(resultId)->getIdOperand(idx); }
|
||||
|
||||
bool isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); }
|
||||
bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); }
|
||||
@ -281,11 +286,10 @@ public:
|
||||
bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == OpTypeMatrix; }
|
||||
bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; }
|
||||
bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; }
|
||||
#ifdef GLSLANG_WEB
|
||||
bool isCooperativeMatrixType(Id typeId)const { return false; }
|
||||
#else
|
||||
bool isCooperativeMatrixType(Id typeId)const { return getTypeClass(typeId) == OpTypeCooperativeMatrixNV; }
|
||||
#endif
|
||||
bool isCooperativeMatrixType(Id typeId)const
|
||||
{
|
||||
return getTypeClass(typeId) == OpTypeCooperativeMatrixKHR || getTypeClass(typeId) == OpTypeCooperativeMatrixNV;
|
||||
}
|
||||
bool isAggregateType(Id typeId) const
|
||||
{ return isArrayType(typeId) || isStructType(typeId) || isCooperativeMatrixType(typeId); }
|
||||
bool isImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeImage; }
|
||||
@ -389,6 +393,7 @@ public:
|
||||
void addDecoration(Id, Decoration, const char*);
|
||||
void addDecoration(Id, Decoration, const std::vector<unsigned>& literals);
|
||||
void addDecoration(Id, Decoration, const std::vector<const char*>& strings);
|
||||
void addLinkageDecoration(Id id, const char* name, spv::LinkageType linkType);
|
||||
void addDecorationId(Id id, Decoration, Id idDecoration);
|
||||
void addDecorationId(Id id, Decoration, const std::vector<Id>& operandIds);
|
||||
void addMemberDecoration(Id, unsigned int member, Decoration, int num = -1);
|
||||
@ -413,7 +418,8 @@ public:
|
||||
// Return the function, pass back the entry.
|
||||
// The returned pointer is only valid for the lifetime of this builder.
|
||||
Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name,
|
||||
const std::vector<Id>& paramTypes, const std::vector<char const*>& paramNames,
|
||||
LinkageType linkType, const std::vector<Id>& paramTypes,
|
||||
const std::vector<char const*>& paramNames,
|
||||
const std::vector<std::vector<Decoration>>& precisions, Block **entry = nullptr);
|
||||
|
||||
// Create a return. An 'implicit' return is one not appearing in the source
|
||||
@ -462,8 +468,10 @@ public:
|
||||
// Create an OpArrayLength instruction
|
||||
Id createArrayLength(Id base, unsigned int member);
|
||||
|
||||
// Create an OpCooperativeMatrixLengthKHR instruction
|
||||
Id createCooperativeMatrixLengthKHR(Id type);
|
||||
// Create an OpCooperativeMatrixLengthNV instruction
|
||||
Id createCooperativeMatrixLength(Id type);
|
||||
Id createCooperativeMatrixLengthNV(Id type);
|
||||
|
||||
// Create an OpCompositeExtract instruction
|
||||
Id createCompositeExtract(Id composite, Id typeId, unsigned index);
|
||||
@ -698,11 +706,6 @@ public:
|
||||
// Accumulate whether anything in the chain of structures has coherent decorations.
|
||||
struct CoherentFlags {
|
||||
CoherentFlags() { clear(); }
|
||||
#ifdef GLSLANG_WEB
|
||||
void clear() { }
|
||||
bool isVolatile() const { return false; }
|
||||
CoherentFlags operator |=(const CoherentFlags &other) { return *this; }
|
||||
#else
|
||||
bool isVolatile() const { return volatil; }
|
||||
bool isNonUniform() const { return nonUniform; }
|
||||
bool anyCoherent() const {
|
||||
@ -747,7 +750,6 @@ public:
|
||||
nonUniform |= other.nonUniform;
|
||||
return *this;
|
||||
}
|
||||
#endif
|
||||
};
|
||||
CoherentFlags coherentFlags;
|
||||
};
|
||||
@ -828,19 +830,17 @@ public:
|
||||
|
||||
// Add capabilities, extensions, remove unneeded decorations, etc.,
|
||||
// based on the resulting SPIR-V.
|
||||
void postProcess();
|
||||
void postProcess(bool compileOnly);
|
||||
|
||||
// Prune unreachable blocks in the CFG and remove unneeded decorations.
|
||||
void postProcessCFG();
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
// Add capabilities, extensions based on instructions in the module.
|
||||
void postProcessFeatures();
|
||||
// Hook to visit each instruction in a block in a function
|
||||
void postProcess(Instruction&);
|
||||
// Hook to visit each non-32-bit sized float/int operation in a block.
|
||||
void postProcessType(const Instruction&, spv::Id typeId);
|
||||
#endif
|
||||
|
||||
void dump(std::vector<unsigned int>&) const;
|
||||
|
||||
|
@ -53,11 +53,11 @@ namespace spv {
|
||||
#include "GLSL.ext.AMD.h"
|
||||
#include "GLSL.ext.NV.h"
|
||||
#include "GLSL.ext.ARM.h"
|
||||
#include "GLSL.ext.QCOM.h"
|
||||
}
|
||||
|
||||
namespace spv {
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
// Hook to visit each operand type and result type of an instruction.
|
||||
// Will be called multiple times for one instruction, once for each typed
|
||||
// operand and the result.
|
||||
@ -181,6 +181,7 @@ void Builder::postProcessType(const Instruction& inst, Id typeId)
|
||||
else if (width == 8)
|
||||
addCapability(CapabilityInt8);
|
||||
}
|
||||
[[fallthrough]]; // @MEWIN - 2022-12-07 - Added this to get rid of implicit-fallthrough warning.
|
||||
default:
|
||||
if (basicTypeOp == OpTypeInt) {
|
||||
if (width == 16)
|
||||
@ -245,9 +246,11 @@ void Builder::postProcess(Instruction& inst)
|
||||
// (set via Builder::AccessChain::alignment) only accounts for the base of
|
||||
// the reference type and any scalar component selection in the accesschain,
|
||||
// and this function computes the rest from the SPIR-V Offset decorations.
|
||||
Instruction *accessChain = module.getInstruction(inst.getIdOperand(0));
|
||||
if (accessChain->getOpCode() == OpAccessChain) {
|
||||
Instruction *base = module.getInstruction(accessChain->getIdOperand(0));
|
||||
// BEGIN @MEWIN - 2024-06-26 - Fixed shadowing warning.
|
||||
Instruction *accChain = module.getInstruction(inst.getIdOperand(0));
|
||||
if (accChain->getOpCode() == OpAccessChain) {
|
||||
Instruction *base = module.getInstruction(accChain->getIdOperand(0));
|
||||
// END @MEWIN
|
||||
// Get the type of the base of the access chain. It must be a pointer type.
|
||||
Id typeId = base->getTypeId();
|
||||
Instruction *type = module.getInstruction(typeId);
|
||||
@ -263,8 +266,10 @@ void Builder::postProcess(Instruction& inst)
|
||||
// Offset/ArrayStride/MatrixStride decorations, and bitwise OR them all
|
||||
// together.
|
||||
int alignment = 0;
|
||||
for (int i = 1; i < accessChain->getNumOperands(); ++i) {
|
||||
Instruction *idx = module.getInstruction(accessChain->getIdOperand(i));
|
||||
// BEGIN @MEWIN - 2024-06-26 - Fixed shadowing warning.
|
||||
for (int i = 1; i < accChain->getNumOperands(); ++i) {
|
||||
Instruction *idx = module.getInstruction(accChain->getIdOperand(i));
|
||||
// END @MEWIN
|
||||
if (type->getOpCode() == OpTypeStruct) {
|
||||
assert(idx->getOpCode() == OpConstant);
|
||||
unsigned int c = idx->getImmediateOperand(0);
|
||||
@ -334,7 +339,6 @@ void Builder::postProcess(Instruction& inst)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// comment in header
|
||||
void Builder::postProcessCFG()
|
||||
@ -395,7 +399,6 @@ void Builder::postProcessCFG()
|
||||
decorations.end());
|
||||
}
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
// comment in header
|
||||
void Builder::postProcessFeatures() {
|
||||
// Add per-instruction capabilities, extensions, etc.,
|
||||
@ -483,14 +486,15 @@ void Builder::postProcessFeatures() {
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// comment in header
|
||||
void Builder::postProcess() {
|
||||
postProcessCFG();
|
||||
#ifndef GLSLANG_WEB
|
||||
postProcessFeatures();
|
||||
#endif
|
||||
void Builder::postProcess(bool compileOnly)
|
||||
{
|
||||
// postProcessCFG needs an entrypoint to determine what is reachable, but if we are not creating an "executable" shader, we don't have an entrypoint
|
||||
if (!compileOnly)
|
||||
postProcessCFG();
|
||||
|
||||
postProcessFeatures();
|
||||
}
|
||||
|
||||
}; // end spv namespace
|
||||
|
@ -226,7 +226,7 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector
|
||||
bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector<unsigned int>& spirv,
|
||||
std::unordered_set<uint32_t>* live_locs,
|
||||
std::unordered_set<uint32_t>* live_builtins,
|
||||
spv::SpvBuildLogger* logger)
|
||||
spv::SpvBuildLogger*)
|
||||
{
|
||||
spvtools::Optimizer optimizer(target_env);
|
||||
optimizer.SetMessageConsumer(OptimizerMesssageConsumer);
|
||||
@ -242,7 +242,7 @@ bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector<un
|
||||
void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector<unsigned int>& spirv,
|
||||
std::unordered_set<uint32_t>* live_locs,
|
||||
std::unordered_set<uint32_t>* live_builtins,
|
||||
spv::SpvBuildLogger* logger)
|
||||
spv::SpvBuildLogger*)
|
||||
{
|
||||
spvtools::Optimizer optimizer(target_env);
|
||||
optimizer.SetMessageConsumer(OptimizerMesssageConsumer);
|
||||
@ -259,7 +259,7 @@ void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector<
|
||||
}
|
||||
|
||||
void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector<unsigned int>& spirv,
|
||||
spv::SpvBuildLogger* logger)
|
||||
spv::SpvBuildLogger*)
|
||||
{
|
||||
spvtools::Optimizer optimizer(target_env);
|
||||
optimizer.SetMessageConsumer(OptimizerMesssageConsumer);
|
||||
|
@ -61,6 +61,7 @@ struct SpvOptions {
|
||||
bool validate {false};
|
||||
bool emitNonSemanticShaderDebugInfo {false};
|
||||
bool emitNonSemanticShaderDebugSource{ false };
|
||||
bool compileOnly{false};
|
||||
};
|
||||
|
||||
#if ENABLE_OPT
|
||||
|
@ -55,6 +55,8 @@ namespace spv {
|
||||
#include "GLSL.ext.AMD.h"
|
||||
#include "GLSL.ext.NV.h"
|
||||
#include "GLSL.ext.ARM.h"
|
||||
#include "NonSemanticShaderDebugInfo100.h"
|
||||
#include "GLSL.ext.QCOM.h"
|
||||
}
|
||||
}
|
||||
const char* GlslStd450DebugNames[spv::GLSLstd450Count];
|
||||
@ -63,6 +65,7 @@ namespace spv {
|
||||
|
||||
static const char* GLSLextAMDGetDebugNames(const char*, unsigned);
|
||||
static const char* GLSLextNVGetDebugNames(const char*, unsigned);
|
||||
static const char* NonSemanticShaderDebugInfo100GetDebugNames(unsigned);
|
||||
|
||||
static void Kill(std::ostream& out, const char* message)
|
||||
{
|
||||
@ -77,6 +80,7 @@ enum ExtInstSet {
|
||||
GLSLextNVInst,
|
||||
OpenCLExtInst,
|
||||
NonSemanticDebugPrintfExtInst,
|
||||
NonSemanticShaderDebugInfo100
|
||||
};
|
||||
|
||||
// Container class for a single instance of a SPIR-V stream, with methods for disassembly.
|
||||
@ -502,6 +506,8 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
|
||||
extInstSet = OpenCLExtInst;
|
||||
} else if (strcmp("NonSemantic.DebugPrintf", name) == 0) {
|
||||
extInstSet = NonSemanticDebugPrintfExtInst;
|
||||
} else if (strcmp("NonSemantic.Shader.DebugInfo.100", name) == 0) {
|
||||
extInstSet = NonSemanticShaderDebugInfo100;
|
||||
} else if (strcmp(spv::E_SPV_AMD_shader_ballot, name) == 0 ||
|
||||
strcmp(spv::E_SPV_AMD_shader_trinary_minmax, name) == 0 ||
|
||||
strcmp(spv::E_SPV_AMD_shader_explicit_vertex_parameter, name) == 0 ||
|
||||
@ -510,7 +516,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
|
||||
} else if (strcmp(spv::E_SPV_NV_sample_mask_override_coverage, name) == 0 ||
|
||||
strcmp(spv::E_SPV_NV_geometry_shader_passthrough, name) == 0 ||
|
||||
strcmp(spv::E_SPV_NV_viewport_array2, name) == 0 ||
|
||||
strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 ||
|
||||
strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 ||
|
||||
strcmp(spv::E_SPV_NV_fragment_shader_barycentric, name) == 0 ||
|
||||
strcmp(spv::E_SPV_NV_mesh_shader, name) == 0) {
|
||||
extInstSet = GLSLextNVInst;
|
||||
@ -527,6 +533,8 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
|
||||
out << "(" << GLSLextNVGetDebugNames(name, entrypoint) << ")";
|
||||
} else if (extInstSet == NonSemanticDebugPrintfExtInst) {
|
||||
out << "(DebugPrintf)";
|
||||
} else if (extInstSet == NonSemanticShaderDebugInfo100) {
|
||||
out << "(" << NonSemanticShaderDebugInfo100GetDebugNames(entrypoint) << ")";
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -750,6 +758,59 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
|
||||
return "Bad";
|
||||
}
|
||||
|
||||
static const char* NonSemanticShaderDebugInfo100GetDebugNames(unsigned entrypoint)
|
||||
{
|
||||
switch (entrypoint) {
|
||||
case NonSemanticShaderDebugInfo100DebugInfoNone: return "DebugInfoNone";
|
||||
case NonSemanticShaderDebugInfo100DebugCompilationUnit: return "DebugCompilationUnit";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeBasic: return "DebugTypeBasic";
|
||||
case NonSemanticShaderDebugInfo100DebugTypePointer: return "DebugTypePointer";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeQualifier: return "DebugTypeQualifier";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeArray: return "DebugTypeArray";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeVector: return "DebugTypeVector";
|
||||
case NonSemanticShaderDebugInfo100DebugTypedef: return "DebugTypedef";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeFunction: return "DebugTypeFunction";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeEnum: return "DebugTypeEnum";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeComposite: return "DebugTypeComposite";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeMember: return "DebugTypeMember";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeInheritance: return "DebugTypeInheritance";
|
||||
case NonSemanticShaderDebugInfo100DebugTypePtrToMember: return "DebugTypePtrToMember";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeTemplate: return "DebugTypeTemplate";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeTemplateParameter: return "DebugTypeTemplateParameter";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeTemplateTemplateParameter: return "DebugTypeTemplateTemplateParameter";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeTemplateParameterPack: return "DebugTypeTemplateParameterPack";
|
||||
case NonSemanticShaderDebugInfo100DebugGlobalVariable: return "DebugGlobalVariable";
|
||||
case NonSemanticShaderDebugInfo100DebugFunctionDeclaration: return "DebugFunctionDeclaration";
|
||||
case NonSemanticShaderDebugInfo100DebugFunction: return "DebugFunction";
|
||||
case NonSemanticShaderDebugInfo100DebugLexicalBlock: return "DebugLexicalBlock";
|
||||
case NonSemanticShaderDebugInfo100DebugLexicalBlockDiscriminator: return "DebugLexicalBlockDiscriminator";
|
||||
case NonSemanticShaderDebugInfo100DebugScope: return "DebugScope";
|
||||
case NonSemanticShaderDebugInfo100DebugNoScope: return "DebugNoScope";
|
||||
case NonSemanticShaderDebugInfo100DebugInlinedAt: return "DebugInlinedAt";
|
||||
case NonSemanticShaderDebugInfo100DebugLocalVariable: return "DebugLocalVariable";
|
||||
case NonSemanticShaderDebugInfo100DebugInlinedVariable: return "DebugInlinedVariable";
|
||||
case NonSemanticShaderDebugInfo100DebugDeclare: return "DebugDeclare";
|
||||
case NonSemanticShaderDebugInfo100DebugValue: return "DebugValue";
|
||||
case NonSemanticShaderDebugInfo100DebugOperation: return "DebugOperation";
|
||||
case NonSemanticShaderDebugInfo100DebugExpression: return "DebugExpression";
|
||||
case NonSemanticShaderDebugInfo100DebugMacroDef: return "DebugMacroDef";
|
||||
case NonSemanticShaderDebugInfo100DebugMacroUndef: return "DebugMacroUndef";
|
||||
case NonSemanticShaderDebugInfo100DebugImportedEntity: return "DebugImportedEntity";
|
||||
case NonSemanticShaderDebugInfo100DebugSource: return "DebugSource";
|
||||
case NonSemanticShaderDebugInfo100DebugFunctionDefinition: return "DebugFunctionDefinition";
|
||||
case NonSemanticShaderDebugInfo100DebugSourceContinued: return "DebugSourceContinued";
|
||||
case NonSemanticShaderDebugInfo100DebugLine: return "DebugLine";
|
||||
case NonSemanticShaderDebugInfo100DebugNoLine: return "DebugNoLine";
|
||||
case NonSemanticShaderDebugInfo100DebugBuildIdentifier: return "DebugBuildIdentifier";
|
||||
case NonSemanticShaderDebugInfo100DebugStoragePath: return "DebugStoragePath";
|
||||
case NonSemanticShaderDebugInfo100DebugEntryPoint: return "DebugEntryPoint";
|
||||
case NonSemanticShaderDebugInfo100DebugTypeMatrix: return "DebugTypeMatrix";
|
||||
default: return "Bad";
|
||||
}
|
||||
|
||||
return "Bad";
|
||||
}
|
||||
|
||||
void Disassemble(std::ostream& out, const std::vector<unsigned int>& stream)
|
||||
{
|
||||
SpirvStream SpirvStream(out, stream);
|
||||
|
3079
SPIRV/doc.cpp
Normal file → Executable file
3079
SPIRV/doc.cpp
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
@ -156,6 +156,7 @@ enum OperandClass {
|
||||
OperandKernelEnqueueFlags,
|
||||
OperandKernelProfilingInfo,
|
||||
OperandCapability,
|
||||
OperandCooperativeMatrixOperands,
|
||||
|
||||
OperandOpcode,
|
||||
|
||||
@ -197,7 +198,7 @@ public:
|
||||
// Parameterize a set of enumerants that form an enum
|
||||
class EnumDefinition : public EnumParameters {
|
||||
public:
|
||||
EnumDefinition() :
|
||||
EnumDefinition() :
|
||||
ceiling(0), bitmask(false), getName(nullptr), enumParams(nullptr), operandParams(nullptr) { }
|
||||
void set(int ceil, const char* (*name)(int), EnumParameters* ep, bool mask = false)
|
||||
{
|
||||
@ -239,8 +240,8 @@ public:
|
||||
OperandParameters operands;
|
||||
|
||||
protected:
|
||||
int typePresent : 1;
|
||||
int resultPresent : 1;
|
||||
unsigned typePresent : 1; // @MEWIN - 2022-12-07 - Changed to unsigned to get rid of -Woverflow warnings.
|
||||
unsigned resultPresent : 1; // @MEWIN - 2022-12-07 - Changed to unsigned to get rid of -Woverflow warnings.
|
||||
};
|
||||
|
||||
// The set of objects that hold all the instruction/operand
|
||||
|
@ -23,19 +23,6 @@
|
||||
#include <limits>
|
||||
#include <sstream>
|
||||
|
||||
#if defined(_MSC_VER) && _MSC_VER < 1800
|
||||
namespace std {
|
||||
bool isnan(double f)
|
||||
{
|
||||
return ::_isnan(f) != 0;
|
||||
}
|
||||
bool isinf(double f)
|
||||
{
|
||||
return ::_finite(f) == 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#include "bitutils.h"
|
||||
|
||||
namespace spvutils {
|
||||
|
267
SPIRV/spirv.hpp
267
SPIRV/spirv.hpp
@ -26,7 +26,7 @@
|
||||
// the Binary Section of the SPIR-V specification.
|
||||
|
||||
// Enumeration tokens for SPIR-V, in various styles:
|
||||
// C, C++, C++11, JSON, Lua, Python, C#, D
|
||||
// C, C++, C++11, JSON, Lua, Python, C#, D, Beef
|
||||
//
|
||||
// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
|
||||
// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
|
||||
@ -36,6 +36,8 @@
|
||||
// - C# will use enum classes in the Specification class located in the "Spv" namespace,
|
||||
// e.g.: Spv.Specification.SourceLanguage.GLSL
|
||||
// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
|
||||
// - Beef will use enum classes in the Specification class located in the "Spv" namespace,
|
||||
// e.g.: Spv.Specification.SourceLanguage.GLSL
|
||||
//
|
||||
// Some tokens act like mask values, which can be OR'd together,
|
||||
// while others are mutually exclusive. The mask-like ones have
|
||||
@ -66,6 +68,7 @@ enum SourceLanguage {
|
||||
SourceLanguageOpenCL_CPP = 4,
|
||||
SourceLanguageHLSL = 5,
|
||||
SourceLanguageCPP_for_OpenCL = 6,
|
||||
SourceLanguageSYCL = 7,
|
||||
SourceLanguageMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@ -153,6 +156,9 @@ enum ExecutionMode {
|
||||
ExecutionModeSubgroupsPerWorkgroupId = 37,
|
||||
ExecutionModeLocalSizeId = 38,
|
||||
ExecutionModeLocalSizeHintId = 39,
|
||||
ExecutionModeNonCoherentColorAttachmentReadEXT = 4169,
|
||||
ExecutionModeNonCoherentDepthAttachmentReadEXT = 4170,
|
||||
ExecutionModeNonCoherentStencilAttachmentReadEXT = 4171,
|
||||
ExecutionModeSubgroupUniformControlFlowKHR = 4421,
|
||||
ExecutionModePostDepthCoverage = 4446,
|
||||
ExecutionModeDenormPreserve = 4459,
|
||||
@ -192,6 +198,8 @@ enum ExecutionMode {
|
||||
ExecutionModeNoGlobalOffsetINTEL = 5895,
|
||||
ExecutionModeNumSIMDWorkitemsINTEL = 5896,
|
||||
ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
|
||||
ExecutionModeStreamingInterfaceINTEL = 6154,
|
||||
ExecutionModeNamedBarrierCountINTEL = 6417,
|
||||
ExecutionModeMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@ -209,6 +217,7 @@ enum StorageClass {
|
||||
StorageClassAtomicCounter = 10,
|
||||
StorageClassImage = 11,
|
||||
StorageClassStorageBuffer = 12,
|
||||
StorageClassTileImageEXT = 4172,
|
||||
StorageClassCallableDataKHR = 5328,
|
||||
StorageClassCallableDataNV = 5328,
|
||||
StorageClassIncomingCallableDataKHR = 5329,
|
||||
@ -223,6 +232,7 @@ enum StorageClass {
|
||||
StorageClassShaderRecordBufferNV = 5343,
|
||||
StorageClassPhysicalStorageBuffer = 5349,
|
||||
StorageClassPhysicalStorageBufferEXT = 5349,
|
||||
StorageClassHitObjectAttributeNV = 5385,
|
||||
StorageClassTaskPayloadWorkgroupEXT = 5402,
|
||||
StorageClassCodeSectionINTEL = 5605,
|
||||
StorageClassDeviceOnlyINTEL = 5936,
|
||||
@ -238,6 +248,7 @@ enum Dim {
|
||||
DimRect = 4,
|
||||
DimBuffer = 5,
|
||||
DimSubpassData = 6,
|
||||
DimTileImageDataEXT = 4173,
|
||||
DimMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@ -448,6 +459,7 @@ enum FunctionParameterAttribute {
|
||||
FunctionParameterAttributeNoCapture = 5,
|
||||
FunctionParameterAttributeNoWrite = 6,
|
||||
FunctionParameterAttributeNoReadWrite = 7,
|
||||
FunctionParameterAttributeRuntimeAlignedINTEL = 5940,
|
||||
FunctionParameterAttributeMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@ -501,6 +513,8 @@ enum Decoration {
|
||||
DecorationMaxByteOffsetId = 47,
|
||||
DecorationNoSignedWrap = 4469,
|
||||
DecorationNoUnsignedWrap = 4470,
|
||||
DecorationWeightTextureQCOM = 4487,
|
||||
DecorationBlockMatchTextureQCOM = 4488,
|
||||
DecorationExplicitInterpAMD = 4999,
|
||||
DecorationOverrideCoverageNV = 5248,
|
||||
DecorationPassthroughNV = 5250,
|
||||
@ -518,6 +532,7 @@ enum Decoration {
|
||||
DecorationRestrictPointerEXT = 5355,
|
||||
DecorationAliasedPointer = 5356,
|
||||
DecorationAliasedPointerEXT = 5356,
|
||||
DecorationHitObjectShaderRecordBufferNV = 5386,
|
||||
DecorationBindlessSamplerNV = 5398,
|
||||
DecorationBindlessImageNV = 5399,
|
||||
DecorationBoundSamplerNV = 5400,
|
||||
@ -556,12 +571,27 @@ enum Decoration {
|
||||
DecorationPrefetchINTEL = 5902,
|
||||
DecorationStallEnableINTEL = 5905,
|
||||
DecorationFuseLoopsInFunctionINTEL = 5907,
|
||||
DecorationMathOpDSPModeINTEL = 5909,
|
||||
DecorationAliasScopeINTEL = 5914,
|
||||
DecorationNoAliasINTEL = 5915,
|
||||
DecorationInitiationIntervalINTEL = 5917,
|
||||
DecorationMaxConcurrencyINTEL = 5918,
|
||||
DecorationPipelineEnableINTEL = 5919,
|
||||
DecorationBufferLocationINTEL = 5921,
|
||||
DecorationIOPipeStorageINTEL = 5944,
|
||||
DecorationFunctionFloatingPointModeINTEL = 6080,
|
||||
DecorationSingleElementVectorINTEL = 6085,
|
||||
DecorationVectorComputeCallableFunctionINTEL = 6087,
|
||||
DecorationMediaBlockIOINTEL = 6140,
|
||||
DecorationConduitKernelArgumentINTEL = 6175,
|
||||
DecorationRegisterMapKernelArgumentINTEL = 6176,
|
||||
DecorationMMHostInterfaceAddressWidthINTEL = 6177,
|
||||
DecorationMMHostInterfaceDataWidthINTEL = 6178,
|
||||
DecorationMMHostInterfaceLatencyINTEL = 6179,
|
||||
DecorationMMHostInterfaceReadWriteModeINTEL = 6180,
|
||||
DecorationMMHostInterfaceMaxBurstINTEL = 6181,
|
||||
DecorationMMHostInterfaceWaitRequestINTEL = 6182,
|
||||
DecorationStableKernelArgumentINTEL = 6183,
|
||||
DecorationMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@ -607,8 +637,8 @@ enum BuiltIn {
|
||||
BuiltInSubgroupLocalInvocationId = 41,
|
||||
BuiltInVertexIndex = 42,
|
||||
BuiltInInstanceIndex = 43,
|
||||
BuiltInCoreCountARM = 4161,
|
||||
BuiltInCoreIDARM = 4160,
|
||||
BuiltInCoreCountARM = 4161,
|
||||
BuiltInCoreMaxIDARM = 4162,
|
||||
BuiltInWarpIDARM = 4163,
|
||||
BuiltInWarpMaxIDARM = 4164,
|
||||
@ -689,6 +719,11 @@ enum BuiltIn {
|
||||
BuiltInHitKindKHR = 5333,
|
||||
BuiltInHitKindNV = 5333,
|
||||
BuiltInCurrentRayTimeNV = 5334,
|
||||
BuiltInHitTriangleVertexPositionsKHR = 5335,
|
||||
BuiltInHitMicroTriangleVertexPositionsNV = 5337,
|
||||
BuiltInHitMicroTriangleVertexBarycentricsNV = 5344,
|
||||
BuiltInHitKindFrontFacingMicroTriangleNV = 5405,
|
||||
BuiltInHitKindBackFacingMicroTriangleNV = 5406,
|
||||
BuiltInIncomingRayFlagsKHR = 5351,
|
||||
BuiltInIncomingRayFlagsNV = 5351,
|
||||
BuiltInRayGeometryIndexKHR = 5352,
|
||||
@ -730,6 +765,8 @@ enum LoopControlShift {
|
||||
LoopControlMaxInterleavingINTELShift = 21,
|
||||
LoopControlSpeculatedIterationsINTELShift = 22,
|
||||
LoopControlNoFusionINTELShift = 23,
|
||||
LoopControlLoopCountINTELShift = 24,
|
||||
LoopControlMaxReinvocationDelayINTELShift = 25,
|
||||
LoopControlMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@ -752,6 +789,8 @@ enum LoopControlMask {
|
||||
LoopControlMaxInterleavingINTELMask = 0x00200000,
|
||||
LoopControlSpeculatedIterationsINTELMask = 0x00400000,
|
||||
LoopControlNoFusionINTELMask = 0x00800000,
|
||||
LoopControlLoopCountINTELMask = 0x01000000,
|
||||
LoopControlMaxReinvocationDelayINTELMask = 0x02000000,
|
||||
};
|
||||
|
||||
enum FunctionControlShift {
|
||||
@ -824,6 +863,8 @@ enum MemoryAccessShift {
|
||||
MemoryAccessMakePointerVisibleKHRShift = 4,
|
||||
MemoryAccessNonPrivatePointerShift = 5,
|
||||
MemoryAccessNonPrivatePointerKHRShift = 5,
|
||||
MemoryAccessAliasScopeINTELMaskShift = 16,
|
||||
MemoryAccessNoAliasINTELMaskShift = 17,
|
||||
MemoryAccessMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@ -838,6 +879,8 @@ enum MemoryAccessMask {
|
||||
MemoryAccessMakePointerVisibleKHRMask = 0x00000010,
|
||||
MemoryAccessNonPrivatePointerMask = 0x00000020,
|
||||
MemoryAccessNonPrivatePointerKHRMask = 0x00000020,
|
||||
MemoryAccessAliasScopeINTELMaskMask = 0x00010000,
|
||||
MemoryAccessNoAliasINTELMaskMask = 0x00020000,
|
||||
};
|
||||
|
||||
enum Scope {
|
||||
@ -952,6 +995,9 @@ enum Capability {
|
||||
CapabilityShaderViewportIndex = 70,
|
||||
CapabilityUniformDecoration = 71,
|
||||
CapabilityCoreBuiltinsARM = 4165,
|
||||
CapabilityTileImageColorReadAccessEXT = 4166,
|
||||
CapabilityTileImageDepthReadAccessEXT = 4167,
|
||||
CapabilityTileImageStencilReadAccessEXT = 4168,
|
||||
CapabilityFragmentShadingRateKHR = 4422,
|
||||
CapabilitySubgroupBallotKHR = 4423,
|
||||
CapabilityDrawParameters = 4427,
|
||||
@ -983,6 +1029,9 @@ enum Capability {
|
||||
CapabilityRayQueryKHR = 4472,
|
||||
CapabilityRayTraversalPrimitiveCullingKHR = 4478,
|
||||
CapabilityRayTracingKHR = 4479,
|
||||
CapabilityTextureSampleWeightedQCOM = 4484,
|
||||
CapabilityTextureBoxFilterQCOM = 4485,
|
||||
CapabilityTextureBlockMatchQCOM = 4486,
|
||||
CapabilityFloat16ImageAMD = 5008,
|
||||
CapabilityImageGatherBiasLodAMD = 5009,
|
||||
CapabilityFragmentMaskAMD = 5010,
|
||||
@ -1001,7 +1050,7 @@ enum Capability {
|
||||
CapabilityMeshShadingNV = 5266,
|
||||
CapabilityImageFootprintNV = 5282,
|
||||
CapabilityMeshShadingEXT = 5283,
|
||||
CapabilityFragmentBarycentricKHR = 5284,
|
||||
CapabilityFragmentBarycentricKHR = 5284,
|
||||
CapabilityFragmentBarycentricNV = 5284,
|
||||
CapabilityComputeDerivativeGroupQuadsNV = 5288,
|
||||
CapabilityFragmentDensityEXT = 5291,
|
||||
@ -1031,6 +1080,7 @@ enum Capability {
|
||||
CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
||||
CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
|
||||
CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
||||
CapabilityRayTracingPositionFetchKHR = 5336,
|
||||
CapabilityRayTracingNV = 5340,
|
||||
CapabilityRayTracingMotionBlurNV = 5341,
|
||||
CapabilityVulkanMemoryModel = 5345,
|
||||
@ -1048,7 +1098,12 @@ enum Capability {
|
||||
CapabilityFragmentShaderPixelInterlockEXT = 5378,
|
||||
CapabilityDemoteToHelperInvocation = 5379,
|
||||
CapabilityDemoteToHelperInvocationEXT = 5379,
|
||||
CapabilityDisplacementMicromapNV = 5380,
|
||||
CapabilityRayTracingDisplacementMicromapNV = 5409,
|
||||
CapabilityRayTracingOpacityMicromapEXT = 5381,
|
||||
CapabilityShaderInvocationReorderNV = 5383,
|
||||
CapabilityBindlessTextureNV = 5390,
|
||||
CapabilityRayQueryPositionFetchKHR = 5391,
|
||||
CapabilitySubgroupShuffleINTEL = 5568,
|
||||
CapabilitySubgroupBufferBlockIOINTEL = 5569,
|
||||
CapabilitySubgroupImageBlockIOINTEL = 5570,
|
||||
@ -1081,9 +1136,13 @@ enum Capability {
|
||||
CapabilityFPGAMemoryAccessesINTEL = 5898,
|
||||
CapabilityFPGAClusterAttributesINTEL = 5904,
|
||||
CapabilityLoopFuseINTEL = 5906,
|
||||
CapabilityFPGADSPControlINTEL = 5908,
|
||||
CapabilityMemoryAccessAliasingINTEL = 5910,
|
||||
CapabilityFPGAInvocationPipeliningAttributesINTEL = 5916,
|
||||
CapabilityFPGABufferLocationINTEL = 5920,
|
||||
CapabilityArbitraryPrecisionFixedPointINTEL = 5922,
|
||||
CapabilityUSMStorageClassesINTEL = 5935,
|
||||
CapabilityRuntimeAlignedAttributeINTEL = 5939,
|
||||
CapabilityIOPipesINTEL = 5943,
|
||||
CapabilityBlockingPipesINTEL = 5945,
|
||||
CapabilityFPGARegINTEL = 5948,
|
||||
@ -1096,13 +1155,18 @@ enum Capability {
|
||||
CapabilityDotProduct = 6019,
|
||||
CapabilityDotProductKHR = 6019,
|
||||
CapabilityRayCullMaskKHR = 6020,
|
||||
CapabilityCooperativeMatrixKHR = 6022,
|
||||
CapabilityBitInstructions = 6025,
|
||||
CapabilityGroupNonUniformRotateKHR = 6026,
|
||||
CapabilityAtomicFloat32AddEXT = 6033,
|
||||
CapabilityAtomicFloat64AddEXT = 6034,
|
||||
CapabilityLongConstantCompositeINTEL = 6089,
|
||||
CapabilityOptNoneINTEL = 6094,
|
||||
CapabilityAtomicFloat16AddEXT = 6095,
|
||||
CapabilityDebugInfoModuleINTEL = 6114,
|
||||
CapabilitySplitBarrierINTEL = 6141,
|
||||
CapabilityFPGAArgumentInterfacesINTEL = 6174,
|
||||
CapabilityGroupUniformArithmeticKHR = 6400,
|
||||
CapabilityMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@ -1117,6 +1181,7 @@ enum RayFlagsShift {
|
||||
RayFlagsCullNoOpaqueKHRShift = 7,
|
||||
RayFlagsSkipTrianglesKHRShift = 8,
|
||||
RayFlagsSkipAABBsKHRShift = 9,
|
||||
RayFlagsForceOpacityMicromap2StateEXTShift = 10,
|
||||
RayFlagsMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@ -1132,6 +1197,7 @@ enum RayFlagsMask {
|
||||
RayFlagsCullNoOpaqueKHRMask = 0x00000080,
|
||||
RayFlagsSkipTrianglesKHRMask = 0x00000100,
|
||||
RayFlagsSkipAABBsKHRMask = 0x00000200,
|
||||
RayFlagsForceOpacityMicromap2StateEXTMask = 0x00000400,
|
||||
};
|
||||
|
||||
enum RayQueryIntersection {
|
||||
@ -1207,6 +1273,37 @@ enum PackedVectorFormat {
|
||||
PackedVectorFormatMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum CooperativeMatrixOperandsShift {
|
||||
CooperativeMatrixOperandsMatrixASignedComponentsShift = 0,
|
||||
CooperativeMatrixOperandsMatrixBSignedComponentsShift = 1,
|
||||
CooperativeMatrixOperandsMatrixCSignedComponentsShift = 2,
|
||||
CooperativeMatrixOperandsMatrixResultSignedComponentsShift = 3,
|
||||
CooperativeMatrixOperandsSaturatingAccumulationShift = 4,
|
||||
CooperativeMatrixOperandsMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum CooperativeMatrixOperandsMask {
|
||||
CooperativeMatrixOperandsMaskNone = 0,
|
||||
CooperativeMatrixOperandsMatrixASignedComponentsMask = 0x00000001,
|
||||
CooperativeMatrixOperandsMatrixBSignedComponentsMask = 0x00000002,
|
||||
CooperativeMatrixOperandsMatrixCSignedComponentsMask = 0x00000004,
|
||||
CooperativeMatrixOperandsMatrixResultSignedComponentsMask = 0x00000008,
|
||||
CooperativeMatrixOperandsSaturatingAccumulationMask = 0x00000010,
|
||||
};
|
||||
|
||||
enum CooperativeMatrixLayout {
|
||||
CooperativeMatrixLayoutCooperativeMatrixRowMajorKHR = 0,
|
||||
CooperativeMatrixLayoutCooperativeMatrixColumnMajorKHR = 1,
|
||||
CooperativeMatrixLayoutMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum CooperativeMatrixUse {
|
||||
CooperativeMatrixUseMatrixAKHR = 0,
|
||||
CooperativeMatrixUseMatrixBKHR = 1,
|
||||
CooperativeMatrixUseMatrixAccumulatorKHR = 2,
|
||||
CooperativeMatrixUseMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum Op {
|
||||
OpNop = 0,
|
||||
OpUndef = 1,
|
||||
@ -1552,12 +1649,16 @@ enum Op {
|
||||
OpPtrEqual = 401,
|
||||
OpPtrNotEqual = 402,
|
||||
OpPtrDiff = 403,
|
||||
OpColorAttachmentReadEXT = 4160,
|
||||
OpDepthAttachmentReadEXT = 4161,
|
||||
OpStencilAttachmentReadEXT = 4162,
|
||||
OpTerminateInvocation = 4416,
|
||||
OpSubgroupBallotKHR = 4421,
|
||||
OpSubgroupFirstInvocationKHR = 4422,
|
||||
OpSubgroupAllKHR = 4428,
|
||||
OpSubgroupAnyKHR = 4429,
|
||||
OpSubgroupAllEqualKHR = 4430,
|
||||
OpGroupNonUniformRotateKHR = 4431,
|
||||
OpSubgroupReadInvocationKHR = 4432,
|
||||
OpTraceRayKHR = 4445,
|
||||
OpExecuteCallableKHR = 4446,
|
||||
@ -1576,6 +1677,11 @@ enum Op {
|
||||
OpUDotAccSatKHR = 4454,
|
||||
OpSUDotAccSat = 4455,
|
||||
OpSUDotAccSatKHR = 4455,
|
||||
OpTypeCooperativeMatrixKHR = 4456,
|
||||
OpCooperativeMatrixLoadKHR = 4457,
|
||||
OpCooperativeMatrixStoreKHR = 4458,
|
||||
OpCooperativeMatrixMulAddKHR = 4459,
|
||||
OpCooperativeMatrixLengthKHR = 4460,
|
||||
OpTypeRayQueryKHR = 4472,
|
||||
OpRayQueryInitializeKHR = 4473,
|
||||
OpRayQueryTerminateKHR = 4474,
|
||||
@ -1583,6 +1689,10 @@ enum Op {
|
||||
OpRayQueryConfirmIntersectionKHR = 4476,
|
||||
OpRayQueryProceedKHR = 4477,
|
||||
OpRayQueryGetIntersectionTypeKHR = 4479,
|
||||
OpImageSampleWeightedQCOM = 4480,
|
||||
OpImageBoxFilterQCOM = 4481,
|
||||
OpImageBlockMatchSSDQCOM = 4482,
|
||||
OpImageBlockMatchSADQCOM = 4483,
|
||||
OpGroupIAddNonUniformAMD = 5000,
|
||||
OpGroupFAddNonUniformAMD = 5001,
|
||||
OpGroupFMinNonUniformAMD = 5002,
|
||||
@ -1594,11 +1704,46 @@ enum Op {
|
||||
OpFragmentMaskFetchAMD = 5011,
|
||||
OpFragmentFetchAMD = 5012,
|
||||
OpReadClockKHR = 5056,
|
||||
OpHitObjectRecordHitMotionNV = 5249,
|
||||
OpHitObjectRecordHitWithIndexMotionNV = 5250,
|
||||
OpHitObjectRecordMissMotionNV = 5251,
|
||||
OpHitObjectGetWorldToObjectNV = 5252,
|
||||
OpHitObjectGetObjectToWorldNV = 5253,
|
||||
OpHitObjectGetObjectRayDirectionNV = 5254,
|
||||
OpHitObjectGetObjectRayOriginNV = 5255,
|
||||
OpHitObjectTraceRayMotionNV = 5256,
|
||||
OpHitObjectGetShaderRecordBufferHandleNV = 5257,
|
||||
OpHitObjectGetShaderBindingTableRecordIndexNV = 5258,
|
||||
OpHitObjectRecordEmptyNV = 5259,
|
||||
OpHitObjectTraceRayNV = 5260,
|
||||
OpHitObjectRecordHitNV = 5261,
|
||||
OpHitObjectRecordHitWithIndexNV = 5262,
|
||||
OpHitObjectRecordMissNV = 5263,
|
||||
OpHitObjectExecuteShaderNV = 5264,
|
||||
OpHitObjectGetCurrentTimeNV = 5265,
|
||||
OpHitObjectGetAttributesNV = 5266,
|
||||
OpHitObjectGetHitKindNV = 5267,
|
||||
OpHitObjectGetPrimitiveIndexNV = 5268,
|
||||
OpHitObjectGetGeometryIndexNV = 5269,
|
||||
OpHitObjectGetInstanceIdNV = 5270,
|
||||
OpHitObjectGetInstanceCustomIndexNV = 5271,
|
||||
OpHitObjectGetWorldRayDirectionNV = 5272,
|
||||
OpHitObjectGetWorldRayOriginNV = 5273,
|
||||
OpHitObjectGetRayTMaxNV = 5274,
|
||||
OpHitObjectGetRayTMinNV = 5275,
|
||||
OpHitObjectIsEmptyNV = 5276,
|
||||
OpHitObjectIsHitNV = 5277,
|
||||
OpHitObjectIsMissNV = 5278,
|
||||
OpReorderThreadWithHitObjectNV = 5279,
|
||||
OpReorderThreadWithHintNV = 5280,
|
||||
OpTypeHitObjectNV = 5281,
|
||||
OpImageSampleFootprintNV = 5283,
|
||||
OpEmitMeshTasksEXT = 5294,
|
||||
OpSetMeshOutputsEXT = 5295,
|
||||
OpGroupNonUniformPartitionNV = 5296,
|
||||
OpWritePackedPrimitiveIndices4x8NV = 5299,
|
||||
OpFetchMicroTriangleVertexPositionNV = 5300,
|
||||
OpFetchMicroTriangleVertexBarycentricNV = 5301,
|
||||
OpReportIntersectionKHR = 5334,
|
||||
OpReportIntersectionNV = 5334,
|
||||
OpIgnoreIntersectionNV = 5335,
|
||||
@ -1606,6 +1751,7 @@ enum Op {
|
||||
OpTraceNV = 5337,
|
||||
OpTraceMotionNV = 5338,
|
||||
OpTraceRayMotionNV = 5339,
|
||||
OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
|
||||
OpTypeAccelerationStructureKHR = 5341,
|
||||
OpTypeAccelerationStructureNV = 5341,
|
||||
OpExecuteCallableNV = 5344,
|
||||
@ -1826,6 +1972,9 @@ enum Op {
|
||||
OpArbitraryFloatPowRINTEL = 5881,
|
||||
OpArbitraryFloatPowNINTEL = 5882,
|
||||
OpLoopControlINTEL = 5887,
|
||||
OpAliasDomainDeclINTEL = 5911,
|
||||
OpAliasScopeDeclINTEL = 5912,
|
||||
OpAliasScopeListDeclINTEL = 5913,
|
||||
OpFixedSqrtINTEL = 5923,
|
||||
OpFixedRecipINTEL = 5924,
|
||||
OpFixedRsqrtINTEL = 5925,
|
||||
@ -1864,10 +2013,23 @@ enum Op {
|
||||
OpTypeStructContinuedINTEL = 6090,
|
||||
OpConstantCompositeContinuedINTEL = 6091,
|
||||
OpSpecConstantCompositeContinuedINTEL = 6092,
|
||||
OpControlBarrierArriveINTEL = 6142,
|
||||
OpControlBarrierWaitINTEL = 6143,
|
||||
OpGroupIMulKHR = 6401,
|
||||
OpGroupFMulKHR = 6402,
|
||||
OpGroupBitwiseAndKHR = 6403,
|
||||
OpGroupBitwiseOrKHR = 6404,
|
||||
OpGroupBitwiseXorKHR = 6405,
|
||||
OpGroupLogicalAndKHR = 6406,
|
||||
OpGroupLogicalOrKHR = 6407,
|
||||
OpGroupLogicalXorKHR = 6408,
|
||||
OpMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
#ifdef SPV_ENABLE_UTILITY_CODE
|
||||
#ifndef __cplusplus
|
||||
#include <stdbool.h>
|
||||
#endif
|
||||
inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
*hasResult = *hasResultType = false;
|
||||
switch (opcode) {
|
||||
@ -2216,12 +2378,16 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
|
||||
case OpColorAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
|
||||
case OpDepthAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
|
||||
case OpStencilAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
|
||||
case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformRotateKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break;
|
||||
@ -2234,6 +2400,11 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpSDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||
case OpUDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTypeCooperativeMatrixKHR: *hasResult = true; *hasResultType = false; break;
|
||||
case OpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case OpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
|
||||
case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
|
||||
@ -2241,6 +2412,10 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSampleWeightedQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
@ -2252,10 +2427,43 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectRecordHitMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectRecordHitWithIndexMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectRecordMissMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectGetWorldToObjectNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetObjectToWorldNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetObjectRayDirectionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetObjectRayOriginNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectGetShaderRecordBufferHandleNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetShaderBindingTableRecordIndexNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectRecordEmptyNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectTraceRayNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectRecordHitNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectRecordHitWithIndexNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectRecordMissNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectExecuteShaderNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectGetCurrentTimeNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetAttributesNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectGetHitKindNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetPrimitiveIndexNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetGeometryIndexNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetInstanceIdNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetInstanceCustomIndexNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetWorldRayDirectionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetWorldRayOriginNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetRayTMaxNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectGetRayTMinNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectIsEmptyNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectIsHitNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectIsMissNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpReorderThreadWithHitObjectNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpReorderThreadWithHintNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTypeHitObjectNV: *hasResult = true; *hasResultType = false; break;
|
||||
case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpEmitMeshTasksEXT: *hasResult = false; *hasResultType = false; break;
|
||||
case OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break;
|
||||
case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
|
||||
@ -2263,6 +2471,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpTraceNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpRayQueryGetIntersectionTriangleVertexPositionsKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
|
||||
case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
|
||||
@ -2479,6 +2688,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpAliasDomainDeclINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpAliasScopeDeclINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpAliasScopeListDeclINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
@ -2517,23 +2729,68 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpControlBarrierArriveINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpControlBarrierWaitINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpGroupIMulKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupFMulKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupBitwiseAndKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupBitwiseOrKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupBitwiseXorKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupLogicalAndKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupLogicalOrKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupLogicalXorKHR: *hasResult = true; *hasResultType = true; break;
|
||||
}
|
||||
}
|
||||
#endif /* SPV_ENABLE_UTILITY_CODE */
|
||||
|
||||
// Overload operator| for mask bit combining
|
||||
// Overload bitwise operators for mask bit combining
|
||||
|
||||
inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
|
||||
inline ImageOperandsMask operator&(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) & unsigned(b)); }
|
||||
inline ImageOperandsMask operator^(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline ImageOperandsMask operator~(ImageOperandsMask a) { return ImageOperandsMask(~unsigned(a)); }
|
||||
inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
|
||||
inline FPFastMathModeMask operator&(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) & unsigned(b)); }
|
||||
inline FPFastMathModeMask operator^(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline FPFastMathModeMask operator~(FPFastMathModeMask a) { return FPFastMathModeMask(~unsigned(a)); }
|
||||
inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
|
||||
inline SelectionControlMask operator&(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) & unsigned(b)); }
|
||||
inline SelectionControlMask operator^(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline SelectionControlMask operator~(SelectionControlMask a) { return SelectionControlMask(~unsigned(a)); }
|
||||
inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
|
||||
inline LoopControlMask operator&(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) & unsigned(b)); }
|
||||
inline LoopControlMask operator^(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline LoopControlMask operator~(LoopControlMask a) { return LoopControlMask(~unsigned(a)); }
|
||||
inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
|
||||
inline FunctionControlMask operator&(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) & unsigned(b)); }
|
||||
inline FunctionControlMask operator^(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline FunctionControlMask operator~(FunctionControlMask a) { return FunctionControlMask(~unsigned(a)); }
|
||||
inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
|
||||
inline MemorySemanticsMask operator&(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) & unsigned(b)); }
|
||||
inline MemorySemanticsMask operator^(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline MemorySemanticsMask operator~(MemorySemanticsMask a) { return MemorySemanticsMask(~unsigned(a)); }
|
||||
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
|
||||
inline MemoryAccessMask operator&(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) & unsigned(b)); }
|
||||
inline MemoryAccessMask operator^(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline MemoryAccessMask operator~(MemoryAccessMask a) { return MemoryAccessMask(~unsigned(a)); }
|
||||
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
|
||||
inline KernelProfilingInfoMask operator&(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) & unsigned(b)); }
|
||||
inline KernelProfilingInfoMask operator^(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline KernelProfilingInfoMask operator~(KernelProfilingInfoMask a) { return KernelProfilingInfoMask(~unsigned(a)); }
|
||||
inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
|
||||
inline RayFlagsMask operator&(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) & unsigned(b)); }
|
||||
inline RayFlagsMask operator^(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline RayFlagsMask operator~(RayFlagsMask a) { return RayFlagsMask(~unsigned(a)); }
|
||||
inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
|
||||
inline FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) & unsigned(b)); }
|
||||
inline FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline FragmentShadingRateMask operator~(FragmentShadingRateMask a) { return FragmentShadingRateMask(~unsigned(a)); }
|
||||
inline CooperativeMatrixOperandsMask operator|(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) | unsigned(b)); }
|
||||
inline CooperativeMatrixOperandsMask operator&(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) & unsigned(b)); }
|
||||
inline CooperativeMatrixOperandsMask operator^(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline CooperativeMatrixOperandsMask operator~(CooperativeMatrixOperandsMask a) { return CooperativeMatrixOperandsMask(~unsigned(a)); }
|
||||
|
||||
} // end namespace spv
|
||||
|
||||
#endif // #ifndef spirv_HPP
|
||||
|
||||
|
@ -97,6 +97,8 @@ public:
|
||||
explicit Instruction(Op opCode) : resultId(NoResult), typeId(NoType), opCode(opCode), block(nullptr) { }
|
||||
virtual ~Instruction() {}
|
||||
void addIdOperand(Id id) {
|
||||
// ids can't be 0
|
||||
assert(id);
|
||||
operands.push_back(id);
|
||||
idOperand.push_back(true);
|
||||
}
|
||||
@ -321,7 +323,7 @@ void inReadableOrder(Block* root, std::function<void(Block*, ReachReason, Block*
|
||||
|
||||
class Function {
|
||||
public:
|
||||
Function(Id id, Id resultType, Id functionType, Id firstParam, Module& parent);
|
||||
Function(Id id, Id resultType, Id functionType, Id firstParam, LinkageType linkage, const std::string& name, Module& parent);
|
||||
virtual ~Function()
|
||||
{
|
||||
for (int i = 0; i < (int)parameterInstructions.size(); ++i)
|
||||
@ -386,7 +388,7 @@ public:
|
||||
if (lineInstruction != nullptr) {
|
||||
lineInstruction->dump(out);
|
||||
}
|
||||
|
||||
|
||||
// OpFunction
|
||||
functionInstruction.dump(out);
|
||||
|
||||
@ -400,6 +402,9 @@ public:
|
||||
end.dump(out);
|
||||
}
|
||||
|
||||
LinkageType getLinkType() const { return linkType; }
|
||||
const char* getExportName() const { return exportName.c_str(); }
|
||||
|
||||
protected:
|
||||
Function(const Function&);
|
||||
Function& operator=(Function&);
|
||||
@ -412,6 +417,8 @@ protected:
|
||||
bool implicitThis; // true if this is a member function expecting to be passed a 'this' as the first argument
|
||||
bool reducedPrecisionReturn;
|
||||
std::set<int> reducedPrecisionParams; // list of parameter indexes that need a relaxed precision arg
|
||||
LinkageType linkType;
|
||||
std::string exportName;
|
||||
};
|
||||
|
||||
//
|
||||
@ -471,10 +478,11 @@ protected:
|
||||
// Add both
|
||||
// - the OpFunction instruction
|
||||
// - all the OpFunctionParameter instructions
|
||||
__inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, Module& parent)
|
||||
__inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, LinkageType linkage, const std::string& name, Module& parent)
|
||||
: parent(parent), lineInstruction(nullptr),
|
||||
functionInstruction(id, resultType, OpFunction), implicitThis(false),
|
||||
reducedPrecisionReturn(false)
|
||||
reducedPrecisionReturn(false),
|
||||
linkType(linkage)
|
||||
{
|
||||
// OpFunction
|
||||
functionInstruction.addImmediateOperand(FunctionControlMaskNone);
|
||||
@ -490,6 +498,11 @@ __inline Function::Function(Id id, Id resultType, Id functionType, Id firstParam
|
||||
parent.mapInstruction(param);
|
||||
parameterInstructions.push_back(param);
|
||||
}
|
||||
|
||||
// If importing/exporting, save the function name (without the mangled parameters) for the linkage decoration
|
||||
if (linkType != LinkageTypeMax) {
|
||||
exportName = name.substr(0, name.find_first_of('('));
|
||||
}
|
||||
}
|
||||
|
||||
__inline void Function::addLocalVariable(std::unique_ptr<Instruction> inst)
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2020 The Khronos Group Inc.
|
||||
# Copyright (C) 2020-2023 The Khronos Group Inc.
|
||||
#
|
||||
# All rights reserved.
|
||||
#
|
||||
@ -31,7 +31,7 @@
|
||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
find_host_package(PythonInterp 3 REQUIRED)
|
||||
find_host_package(Python3 REQUIRED)
|
||||
|
||||
set(GLSLANG_INTRINSIC_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/glsl_intrinsic_header.h")
|
||||
set(GLSLANG_INTRINSIC_PY "${CMAKE_CURRENT_SOURCE_DIR}/../gen_extension_headers.py")
|
||||
@ -39,54 +39,40 @@ set(GLSLANG_INTRINSIC_HEADER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../glslang/Extensi
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${GLSLANG_INTRINSIC_H}
|
||||
COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_INTRINSIC_PY}"
|
||||
COMMAND Python3::Interpreter "${GLSLANG_INTRINSIC_PY}"
|
||||
"-i" ${GLSLANG_INTRINSIC_HEADER_DIR}
|
||||
"-o" ${GLSLANG_INTRINSIC_H}
|
||||
DEPENDS ${GLSLANG_INTRINSIC_PY}
|
||||
COMMENT "Generating ${GLSLANG_INTRINSIC_H}")
|
||||
|
||||
#add_custom_target(glslangValidator DEPENDS ${GLSLANG_INTRINSIC_H})
|
||||
|
||||
add_library(glslang-default-resource-limits
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/resource_limits_c.cpp)
|
||||
set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang)
|
||||
set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
target_include_directories(glslang-default-resource-limits
|
||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>)
|
||||
|
||||
set(SOURCES StandAlone.cpp DirStackFileIncluder.h ${GLSLANG_INTRINSIC_H})
|
||||
|
||||
add_executable(glslangValidator ${SOURCES})
|
||||
set_property(TARGET glslangValidator PROPERTY FOLDER tools)
|
||||
glslang_set_link_args(glslangValidator)
|
||||
add_executable(glslang-standalone ${SOURCES})
|
||||
set_property(TARGET glslang-standalone PROPERTY FOLDER tools)
|
||||
set_property(TARGET glslang-standalone PROPERTY OUTPUT_NAME glslang)
|
||||
glslang_set_link_args(glslang-standalone)
|
||||
|
||||
set(LIBRARIES
|
||||
glslang
|
||||
OSDependent
|
||||
SPIRV
|
||||
glslang-default-resource-limits)
|
||||
|
||||
if(ENABLE_SPVREMAPPER)
|
||||
set(LIBRARIES ${LIBRARIES} SPVRemapper)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(LIBRARIES ${LIBRARIES} psapi)
|
||||
elseif(UNIX)
|
||||
if(NOT ANDROID)
|
||||
if(NOT ANDROID AND NOT QNX)
|
||||
set(LIBRARIES ${LIBRARIES} pthread)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
target_link_libraries(glslangValidator ${LIBRARIES})
|
||||
target_include_directories(glslangValidator PUBLIC
|
||||
target_link_libraries(glslang-standalone ${LIBRARIES})
|
||||
target_include_directories(glslang-standalone PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
|
||||
|
||||
if(ENABLE_OPT)
|
||||
target_include_directories(glslangValidator
|
||||
target_include_directories(glslang-standalone
|
||||
PRIVATE ${spirv-tools_SOURCE_DIR}/include
|
||||
)
|
||||
endif()
|
||||
@ -96,7 +82,7 @@ if(ENABLE_SPVREMAPPER)
|
||||
add_executable(spirv-remap ${REMAPPER_SOURCES})
|
||||
set_property(TARGET spirv-remap PROPERTY FOLDER tools)
|
||||
glslang_set_link_args(spirv-remap)
|
||||
target_link_libraries(spirv-remap ${LIBRARIES})
|
||||
target_link_libraries(spirv-remap SPVRemapper ${LIBRARIES})
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
@ -104,19 +90,35 @@ if(WIN32)
|
||||
endif()
|
||||
|
||||
if(ENABLE_GLSLANG_INSTALL)
|
||||
install(TARGETS glslangValidator EXPORT glslang-targets)
|
||||
install(TARGETS glslang-standalone EXPORT glslang-targets)
|
||||
|
||||
# Backward compatibility
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangValidatorTargets.cmake" "
|
||||
message(WARNING \"Using `glslangValidatorTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-standaloneTargets.cmake" "
|
||||
message(WARNING \"Using `glslang-standaloneTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
||||
|
||||
if (NOT TARGET glslang::glslangValidator)
|
||||
include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||
if (NOT TARGET glslang::glslang-standalone)
|
||||
include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||
endif()
|
||||
|
||||
add_library(glslangValidator ALIAS glslang::glslangValidator)
|
||||
add_library(glslang-standalone ALIAS glslang::glslang-standalone)
|
||||
")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangValidatorTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslang-standaloneTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
||||
|
||||
# Create a symbolic link to glslang named glslangValidator for backwards compatibility
|
||||
set(legacy_glslang_name "glslangValidator${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
set(link_method create_symlink)
|
||||
if (WIN32 OR MINGW)
|
||||
set(link_method copy_if_different)
|
||||
endif()
|
||||
add_custom_command(TARGET glslang-standalone
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E ${link_method} $<TARGET_FILE_NAME:glslang-standalone> ${legacy_glslang_name}
|
||||
WORKING_DIRECTORY $<TARGET_FILE_DIR:glslang-standalone>)
|
||||
|
||||
# Create the same symlink at install time
|
||||
install(CODE "execute_process( \
|
||||
COMMAND ${CMAKE_COMMAND} -E ${link_method} $<TARGET_FILE_NAME:glslang-standalone> ${legacy_glslang_name} \
|
||||
WORKING_DIRECTORY \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})")
|
||||
|
||||
if(ENABLE_SPVREMAPPER)
|
||||
install(TARGETS spirv-remap EXPORT glslang-targets)
|
||||
@ -126,7 +128,7 @@ if(ENABLE_GLSLANG_INSTALL)
|
||||
message(WARNING \"Using `spirv-remapTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
||||
|
||||
if (NOT TARGET glslang::spirv-remap)
|
||||
include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||
include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||
endif()
|
||||
|
||||
add_library(spirv-remap ALIAS glslang::spirv-remap)
|
||||
@ -134,18 +136,4 @@ if(ENABLE_GLSLANG_INSTALL)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/spirv-remapTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
||||
endif()
|
||||
|
||||
install(TARGETS glslang-default-resource-limits EXPORT glslang-targets)
|
||||
|
||||
# Backward compatibility
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" "
|
||||
message(WARNING \"Using `glslang-default-resource-limitsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
||||
|
||||
if (NOT TARGET glslang::glslang-default-resource-limits)
|
||||
include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||
endif()
|
||||
|
||||
add_library(glslang-default-resource-limits ALIAS glslang::glslang-default-resource-limits)
|
||||
")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
||||
|
||||
endif()
|
||||
|
@ -51,15 +51,16 @@
|
||||
#include "../SPIRV/doc.h"
|
||||
#include "../SPIRV/disassemble.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <cstdlib>
|
||||
#include <array>
|
||||
#include <atomic>
|
||||
#include <cctype>
|
||||
#include <cmath>
|
||||
#include <array>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <thread>
|
||||
#include <set>
|
||||
#include <thread>
|
||||
|
||||
#include "../glslang/OSDependent/osinclude.h"
|
||||
|
||||
@ -73,40 +74,41 @@ extern "C" {
|
||||
}
|
||||
|
||||
// Command-line options
|
||||
enum TOptions {
|
||||
EOptionNone = 0,
|
||||
EOptionIntermediate = (1 << 0),
|
||||
EOptionSuppressInfolog = (1 << 1),
|
||||
EOptionMemoryLeakMode = (1 << 2),
|
||||
EOptionRelaxedErrors = (1 << 3),
|
||||
EOptionGiveWarnings = (1 << 4),
|
||||
EOptionLinkProgram = (1 << 5),
|
||||
EOptionMultiThreaded = (1 << 6),
|
||||
EOptionDumpConfig = (1 << 7),
|
||||
EOptionDumpReflection = (1 << 8),
|
||||
EOptionSuppressWarnings = (1 << 9),
|
||||
EOptionDumpVersions = (1 << 10),
|
||||
EOptionSpv = (1 << 11),
|
||||
EOptionHumanReadableSpv = (1 << 12),
|
||||
EOptionVulkanRules = (1 << 13),
|
||||
EOptionDefaultDesktop = (1 << 14),
|
||||
EOptionOutputPreprocessed = (1 << 15),
|
||||
EOptionOutputHexadecimal = (1 << 16),
|
||||
EOptionReadHlsl = (1 << 17),
|
||||
EOptionCascadingErrors = (1 << 18),
|
||||
EOptionAutoMapBindings = (1 << 19),
|
||||
EOptionFlattenUniformArrays = (1 << 20),
|
||||
EOptionNoStorageFormat = (1 << 21),
|
||||
EOptionKeepUncalled = (1 << 22),
|
||||
EOptionHlslOffsets = (1 << 23),
|
||||
EOptionHlslIoMapping = (1 << 24),
|
||||
EOptionAutoMapLocations = (1 << 25),
|
||||
EOptionDebug = (1 << 26),
|
||||
EOptionStdin = (1 << 27),
|
||||
EOptionOptimizeDisable = (1 << 28),
|
||||
EOptionOptimizeSize = (1 << 29),
|
||||
EOptionInvertY = (1 << 30),
|
||||
EOptionDumpBareVersion = (1 << 31),
|
||||
enum TOptions : uint64_t {
|
||||
EOptionNone = 0,
|
||||
EOptionIntermediate = (1ull << 0),
|
||||
EOptionSuppressInfolog = (1ull << 1),
|
||||
EOptionMemoryLeakMode = (1ull << 2),
|
||||
EOptionRelaxedErrors = (1ull << 3),
|
||||
EOptionGiveWarnings = (1ull << 4),
|
||||
EOptionLinkProgram = (1ull << 5),
|
||||
EOptionMultiThreaded = (1ull << 6),
|
||||
EOptionDumpConfig = (1ull << 7),
|
||||
EOptionDumpReflection = (1ull << 8),
|
||||
EOptionSuppressWarnings = (1ull << 9),
|
||||
EOptionDumpVersions = (1ull << 10),
|
||||
EOptionSpv = (1ull << 11),
|
||||
EOptionHumanReadableSpv = (1ull << 12),
|
||||
EOptionVulkanRules = (1ull << 13),
|
||||
EOptionDefaultDesktop = (1ull << 14),
|
||||
EOptionOutputPreprocessed = (1ull << 15),
|
||||
EOptionOutputHexadecimal = (1ull << 16),
|
||||
EOptionReadHlsl = (1ull << 17),
|
||||
EOptionCascadingErrors = (1ull << 18),
|
||||
EOptionAutoMapBindings = (1ull << 19),
|
||||
EOptionFlattenUniformArrays = (1ull << 20),
|
||||
EOptionNoStorageFormat = (1ull << 21),
|
||||
EOptionKeepUncalled = (1ull << 22),
|
||||
EOptionHlslOffsets = (1ull << 23),
|
||||
EOptionHlslIoMapping = (1ull << 24),
|
||||
EOptionAutoMapLocations = (1ull << 25),
|
||||
EOptionDebug = (1ull << 26),
|
||||
EOptionStdin = (1ull << 27),
|
||||
EOptionOptimizeDisable = (1ull << 28),
|
||||
EOptionOptimizeSize = (1ull << 29),
|
||||
EOptionInvertY = (1ull << 30),
|
||||
EOptionDumpBareVersion = (1ull << 31),
|
||||
EOptionCompileOnly = (1ull << 32),
|
||||
};
|
||||
bool targetHlslFunctionality1 = false;
|
||||
bool SpvToolsDisassembler = false;
|
||||
@ -143,8 +145,9 @@ void FreeFileData(char* data);
|
||||
void InfoLogMsg(const char* msg, const char* name, const int num);
|
||||
|
||||
// Globally track if any compile or link failure.
|
||||
bool CompileFailed = false;
|
||||
bool LinkFailed = false;
|
||||
std::atomic<int8_t> CompileFailed{0};
|
||||
std::atomic<int8_t> LinkFailed{0};
|
||||
std::atomic<int8_t> CompileOrLinkFailed{0};
|
||||
|
||||
// array of unique places to leave the shader names and infologs for the asynchronous compiles
|
||||
std::vector<std::unique_ptr<glslang::TWorkItem>> WorkItems;
|
||||
@ -158,17 +161,15 @@ void ProcessConfigFile()
|
||||
{
|
||||
if (ConfigFile.size() == 0)
|
||||
*GetResources() = *GetDefaultResources();
|
||||
#ifndef GLSLANG_WEB
|
||||
else {
|
||||
char* configString = ReadFileData(ConfigFile.c_str());
|
||||
DecodeResourceLimits(GetResources(), configString);
|
||||
FreeFileData(configString);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
int ReflectOptions = EShReflectionDefault;
|
||||
int Options = 0;
|
||||
std::underlying_type_t<TOptions> Options = EOptionNone;
|
||||
const char* ExecutableName = nullptr;
|
||||
const char* binaryFileName = nullptr;
|
||||
const char* depencyFileName = nullptr;
|
||||
@ -258,6 +259,17 @@ public:
|
||||
text.append("\n");
|
||||
}
|
||||
|
||||
void addText(std::string preambleText)
|
||||
{
|
||||
fixLine(preambleText);
|
||||
|
||||
Processes.push_back("preamble-text");
|
||||
Processes.back().append(preambleText);
|
||||
|
||||
text.append(preambleText);
|
||||
text.append("\n");
|
||||
}
|
||||
|
||||
protected:
|
||||
void fixLine(std::string& line)
|
||||
{
|
||||
@ -714,7 +726,7 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
HlslDxPositionW = true;
|
||||
} else if (lowerword == "enhanced-msgs") {
|
||||
EnhancedMsgs = true;
|
||||
} else if (lowerword == "auto-sampled-textures") {
|
||||
} else if (lowerword == "auto-sampled-textures") {
|
||||
autoSampledTextures = true;
|
||||
} else if (lowerword == "invert-y" || // synonyms
|
||||
lowerword == "iy") {
|
||||
@ -727,6 +739,13 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
} else if (lowerword == "no-storage-format" || // synonyms
|
||||
lowerword == "nsf") {
|
||||
Options |= EOptionNoStorageFormat;
|
||||
} else if (lowerword == "preamble-text" ||
|
||||
lowerword == "p") {
|
||||
if (argc > 1)
|
||||
UserPreamble.addText(argv[1]);
|
||||
else
|
||||
Error("expects <text>", argv[0]);
|
||||
bumpArg();
|
||||
} else if (lowerword == "relaxed-errors") {
|
||||
Options |= EOptionRelaxedErrors;
|
||||
} else if (lowerword == "reflect-strict-array-suffix") {
|
||||
@ -873,6 +892,8 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
bumpArg();
|
||||
} else if (lowerword == "version") {
|
||||
Options |= EOptionDumpVersions;
|
||||
} else if (lowerword == "no-link") {
|
||||
Options |= EOptionCompileOnly;
|
||||
} else if (lowerword == "help") {
|
||||
usage();
|
||||
break;
|
||||
@ -926,6 +947,9 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
||||
else
|
||||
Error("unknown -O option");
|
||||
break;
|
||||
case 'P':
|
||||
UserPreamble.addText(getStringOperand("-P<text>"));
|
||||
break;
|
||||
case 'R':
|
||||
VulkanRulesRelaxed = true;
|
||||
break;
|
||||
@ -1144,6 +1168,7 @@ void CompileShaders(glslang::TWorklist& worklist)
|
||||
if (Options & EOptionDebug)
|
||||
Error("cannot generate debug information unless linking to generate code");
|
||||
|
||||
// NOTE: TWorkList::remove is thread-safe
|
||||
glslang::TWorkItem* workItem;
|
||||
if (Options & EOptionStdin) {
|
||||
if (worklist.remove(workItem)) {
|
||||
@ -1291,6 +1316,7 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
||||
//
|
||||
|
||||
glslang::TProgram& program = *new glslang::TProgram;
|
||||
const bool compileOnly = (Options & EOptionCompileOnly) != 0;
|
||||
for (auto it = compUnits.cbegin(); it != compUnits.cend(); ++it) {
|
||||
const auto &compUnit = *it;
|
||||
for (int i = 0; i < compUnit.count; i++) {
|
||||
@ -1307,6 +1333,9 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
||||
shader->setSourceEntryPoint(sourceEntryPointName);
|
||||
}
|
||||
|
||||
if (compileOnly)
|
||||
shader->setCompileOnly();
|
||||
|
||||
shader->setOverrideVersion(GlslVersion);
|
||||
|
||||
std::string intrinsicString = getIntrinsic(compUnit.text, compUnit.count);
|
||||
@ -1321,7 +1350,6 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
||||
shader->setPreamble(PreambleString.c_str());
|
||||
shader->addProcesses(Processes);
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
// Set IO mapper binding shift values
|
||||
for (int r = 0; r < glslang::EResCount; ++r) {
|
||||
const glslang::TResourceType res = glslang::TResourceType(r);
|
||||
@ -1353,7 +1381,6 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
||||
}
|
||||
|
||||
shader->setUniformLocationBase(uniformBase);
|
||||
#endif
|
||||
|
||||
if (VulkanRulesRelaxed) {
|
||||
for (auto& storageOverride : blockStorageOverrides) {
|
||||
@ -1413,24 +1440,23 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
||||
|
||||
const int defaultVersion = Options & EOptionDefaultDesktop ? 110 : 100;
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
if (Options & EOptionOutputPreprocessed) {
|
||||
std::string str;
|
||||
if (shader->preprocess(GetResources(), defaultVersion, ENoProfile, false, false, messages, &str, includer)) {
|
||||
PutsIfNonEmpty(str.c_str());
|
||||
} else {
|
||||
CompileFailed = true;
|
||||
CompileFailed = 1;
|
||||
}
|
||||
StderrIfNonEmpty(shader->getInfoLog());
|
||||
StderrIfNonEmpty(shader->getInfoDebugLog());
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (! shader->parse(GetResources(), defaultVersion, false, messages, includer))
|
||||
CompileFailed = true;
|
||||
CompileFailed = 1;
|
||||
|
||||
program.addShader(shader);
|
||||
if (!compileOnly)
|
||||
program.addShader(shader);
|
||||
|
||||
if (! (Options & EOptionSuppressInfolog) &&
|
||||
! (Options & EOptionMemoryLeakMode)) {
|
||||
@ -1445,83 +1471,98 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
||||
// Program-level processing...
|
||||
//
|
||||
|
||||
// Link
|
||||
if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages))
|
||||
LinkFailed = true;
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
// Map IO
|
||||
if (Options & EOptionSpv) {
|
||||
if (!program.mapIO())
|
||||
if (!compileOnly) {
|
||||
// Link
|
||||
if (!(Options & EOptionOutputPreprocessed) && !program.link(messages))
|
||||
LinkFailed = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Report
|
||||
if (! (Options & EOptionSuppressInfolog) &&
|
||||
! (Options & EOptionMemoryLeakMode)) {
|
||||
PutsIfNonEmpty(program.getInfoLog());
|
||||
PutsIfNonEmpty(program.getInfoDebugLog());
|
||||
}
|
||||
// Map IO
|
||||
if (Options & EOptionSpv) {
|
||||
if (!program.mapIO())
|
||||
LinkFailed = true;
|
||||
}
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
// Reflect
|
||||
if (Options & EOptionDumpReflection) {
|
||||
program.buildReflection(ReflectOptions);
|
||||
program.dumpReflection();
|
||||
// Report
|
||||
if (!(Options & EOptionSuppressInfolog) && !(Options & EOptionMemoryLeakMode)) {
|
||||
PutsIfNonEmpty(program.getInfoLog());
|
||||
PutsIfNonEmpty(program.getInfoDebugLog());
|
||||
}
|
||||
|
||||
// Reflect
|
||||
if (Options & EOptionDumpReflection) {
|
||||
program.buildReflection(ReflectOptions);
|
||||
program.dumpReflection();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
std::vector<std::string> outputFiles;
|
||||
|
||||
// Dump SPIR-V
|
||||
if (Options & EOptionSpv) {
|
||||
if (CompileFailed || LinkFailed)
|
||||
CompileOrLinkFailed.fetch_or(CompileFailed);
|
||||
CompileOrLinkFailed.fetch_or(LinkFailed);
|
||||
if (static_cast<bool>(CompileOrLinkFailed.load()))
|
||||
printf("SPIR-V is not generated for failed compile or link\n");
|
||||
else {
|
||||
for (int stage = 0; stage < EShLangCount; ++stage) {
|
||||
if (program.getIntermediate((EShLanguage)stage)) {
|
||||
std::vector<unsigned int> spirv;
|
||||
spv::SpvBuildLogger logger;
|
||||
glslang::SpvOptions spvOptions;
|
||||
if (Options & EOptionDebug) {
|
||||
spvOptions.generateDebugInfo = true;
|
||||
if (emitNonSemanticShaderDebugInfo) {
|
||||
spvOptions.emitNonSemanticShaderDebugInfo = true;
|
||||
if (emitNonSemanticShaderDebugSource) {
|
||||
spvOptions.emitNonSemanticShaderDebugSource = true;
|
||||
}
|
||||
}
|
||||
} else if (stripDebugInfo)
|
||||
spvOptions.stripDebugInfo = true;
|
||||
spvOptions.disableOptimizer = (Options & EOptionOptimizeDisable) != 0;
|
||||
spvOptions.optimizeSize = (Options & EOptionOptimizeSize) != 0;
|
||||
spvOptions.disassemble = SpvToolsDisassembler;
|
||||
spvOptions.validate = SpvToolsValidate;
|
||||
glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv, &logger, &spvOptions);
|
||||
|
||||
// Dump the spv to a file or stdout, etc., but only if not doing
|
||||
// memory/perf testing, as it's not internal to programmatic use.
|
||||
if (! (Options & EOptionMemoryLeakMode)) {
|
||||
printf("%s", logger.getAllMessages().c_str());
|
||||
if (Options & EOptionOutputHexadecimal) {
|
||||
glslang::OutputSpvHex(spirv, GetBinaryName((EShLanguage)stage), variableName);
|
||||
} else {
|
||||
glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage));
|
||||
}
|
||||
|
||||
outputFiles.push_back(GetBinaryName((EShLanguage)stage));
|
||||
#ifndef GLSLANG_WEB
|
||||
if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv))
|
||||
spv::Disassemble(std::cout, spirv);
|
||||
#endif
|
||||
std::vector<glslang::TIntermediate*> intermediates;
|
||||
if (!compileOnly) {
|
||||
for (int stage = 0; stage < EShLangCount; ++stage) {
|
||||
if (auto* i = program.getIntermediate((EShLanguage)stage)) {
|
||||
intermediates.emplace_back(i);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (const auto* shader : shaders) {
|
||||
if (auto* i = shader->getIntermediate()) {
|
||||
intermediates.emplace_back(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (auto* intermediate : intermediates) {
|
||||
std::vector<unsigned int> spirv;
|
||||
spv::SpvBuildLogger logger;
|
||||
glslang::SpvOptions spvOptions;
|
||||
if (Options & EOptionDebug) {
|
||||
spvOptions.generateDebugInfo = true;
|
||||
if (emitNonSemanticShaderDebugInfo) {
|
||||
spvOptions.emitNonSemanticShaderDebugInfo = true;
|
||||
if (emitNonSemanticShaderDebugSource) {
|
||||
spvOptions.emitNonSemanticShaderDebugSource = true;
|
||||
}
|
||||
}
|
||||
} else if (stripDebugInfo)
|
||||
spvOptions.stripDebugInfo = true;
|
||||
spvOptions.disableOptimizer = (Options & EOptionOptimizeDisable) != 0;
|
||||
spvOptions.optimizeSize = (Options & EOptionOptimizeSize) != 0;
|
||||
spvOptions.disassemble = SpvToolsDisassembler;
|
||||
spvOptions.validate = SpvToolsValidate;
|
||||
spvOptions.compileOnly = compileOnly;
|
||||
glslang::GlslangToSpv(*intermediate, spirv, &logger, &spvOptions);
|
||||
|
||||
// Dump the spv to a file or stdout, etc., but only if not doing
|
||||
// memory/perf testing, as it's not internal to programmatic use.
|
||||
if (!(Options & EOptionMemoryLeakMode)) {
|
||||
printf("%s", logger.getAllMessages().c_str());
|
||||
const auto filename = GetBinaryName(intermediate->getStage());
|
||||
if (Options & EOptionOutputHexadecimal) {
|
||||
if (!glslang::OutputSpvHex(spirv, filename, variableName))
|
||||
exit(EFailUsage);
|
||||
} else {
|
||||
if (!glslang::OutputSpvBin(spirv, filename))
|
||||
exit(EFailUsage);
|
||||
}
|
||||
|
||||
outputFiles.push_back(filename);
|
||||
if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv))
|
||||
spv::Disassemble(std::cout, spirv);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (depencyFileName && !(CompileFailed || LinkFailed)) {
|
||||
CompileOrLinkFailed.fetch_or(CompileFailed);
|
||||
CompileOrLinkFailed.fetch_or(LinkFailed);
|
||||
if (depencyFileName && !static_cast<bool>(CompileOrLinkFailed.load())) {
|
||||
std::set<std::string> includedFiles = includer.getIncludedFiles();
|
||||
sources.insert(sources.end(), includedFiles.begin(), includedFiles.end());
|
||||
|
||||
@ -1609,13 +1650,11 @@ int singleMain()
|
||||
workList.add(item.get());
|
||||
});
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
if (Options & EOptionDumpConfig) {
|
||||
printf("%s", GetDefaultTBuiltInResourceString().c_str());
|
||||
if (workList.empty())
|
||||
return ESuccess;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (Options & EOptionDumpBareVersion) {
|
||||
printf("%d:%d.%d.%d%s\n", glslang::GetSpirvGeneratorVersion(), GLSLANG_VERSION_MAJOR, GLSLANG_VERSION_MINOR,
|
||||
@ -1699,9 +1738,9 @@ int singleMain()
|
||||
ShFinalize();
|
||||
}
|
||||
|
||||
if (CompileFailed)
|
||||
if (CompileFailed.load())
|
||||
return EFailCompile;
|
||||
if (LinkFailed)
|
||||
if (LinkFailed.load())
|
||||
return EFailLink;
|
||||
|
||||
return 0;
|
||||
@ -1832,7 +1871,7 @@ void CompileFile(const char* fileName, ShHandle compiler)
|
||||
SetMessageOptions(messages);
|
||||
|
||||
if (UserPreamble.isSet())
|
||||
Error("-D and -U options require -l (linking)\n");
|
||||
Error("-D, -U and -P options require -l (linking)\n");
|
||||
|
||||
for (int i = 0; i < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++i) {
|
||||
for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j) {
|
||||
@ -1861,7 +1900,7 @@ void CompileFile(const char* fileName, ShHandle compiler)
|
||||
//
|
||||
void usage()
|
||||
{
|
||||
printf("Usage: glslangValidator [option]... [file]...\n"
|
||||
printf("Usage: glslang [option]... [file]...\n"
|
||||
"\n"
|
||||
"'file' can end in .<stage> for auto-stage classification, where <stage> is:\n"
|
||||
" .conf to provide a config file that replaces the default configuration\n"
|
||||
@ -1902,6 +1941,9 @@ void usage()
|
||||
" is searched first, followed by left-to-right order of -I\n"
|
||||
" -Od disables optimization; may cause illegal SPIR-V for HLSL\n"
|
||||
" -Os optimizes SPIR-V to minimize size\n"
|
||||
" -P<text> | --preamble-text <text> | --P <text>\n"
|
||||
" inject custom preamble text, which is treated as if it\n"
|
||||
" appeared immediately after the version declaration (if any).\n"
|
||||
" -R use relaxed verification rules for generating Vulkan SPIR-V,\n"
|
||||
" allowing the use of default uniforms, atomic_uints, and\n"
|
||||
" gl_VertexID and gl_InstanceID keywords.\n"
|
||||
@ -1949,7 +1991,7 @@ void usage()
|
||||
" without explicit bindings\n"
|
||||
" --auto-map-locations | --aml automatically locate input/output lacking\n"
|
||||
" 'location' (fragile, not cross stage)\n"
|
||||
" --auto-sampled-textures Removes sampler variables and converts\n"
|
||||
" --auto-sampled-textures Removes sampler variables and converts\n"
|
||||
" existing textures to sampled textures\n"
|
||||
" --client {vulkan<ver>|opengl<ver>} see -V and -G\n"
|
||||
" --depfile <file> writes depfile for build systems\n"
|
||||
@ -2064,7 +2106,9 @@ void usage()
|
||||
" --vn <name> creates a C header file that contains a\n"
|
||||
" uint32_t array named <name>\n"
|
||||
" initialized with the shader binary code\n"
|
||||
);
|
||||
" --no-link Only compile shader; do not link (GLSL-only)\n"
|
||||
" NOTE: this option will set the export linkage\n"
|
||||
" attribute on all functions\n");
|
||||
|
||||
exit(EFailUsage);
|
||||
}
|
||||
|
@ -37,7 +37,11 @@
|
||||
#include <fstream>
|
||||
#include <cstring>
|
||||
#include <stdexcept>
|
||||
#include <filesystem>
|
||||
|
||||
//
|
||||
// Include remapper
|
||||
//
|
||||
#include "../SPIRV/SPVRemapper.h"
|
||||
|
||||
namespace {
|
||||
@ -172,7 +176,7 @@ namespace {
|
||||
<< " [--strip-all | --strip all | -s]"
|
||||
<< " [--strip-white-list]"
|
||||
<< " [--do-everything]"
|
||||
<< " --input | -i file1 [file2...] --output|-o DESTDIR"
|
||||
<< " --input | -i file1 [file2...] --output|-o DESTDIR | destfile1 [destfile2...]"
|
||||
<< std::endl;
|
||||
|
||||
std::cout << " " << basename(name) << " [--version | -V]" << std::endl;
|
||||
@ -182,32 +186,45 @@ namespace {
|
||||
}
|
||||
|
||||
// grind through each SPIR in turn
|
||||
void execute(const std::vector<std::string>& inputFile, const std::string& outputDir,
|
||||
const std::string& whiteListFile, int opts, int verbosity)
|
||||
void execute(const std::vector<std::string>& inputFiles,
|
||||
const std::vector<std::string>& outputDirOrFiles,
|
||||
const bool isSingleOutputDir,
|
||||
const std::string& whiteListFile,
|
||||
int opts,
|
||||
int verbosity)
|
||||
{
|
||||
std::vector<std::string> whiteListStrings;
|
||||
if(!whiteListFile.empty())
|
||||
if (!whiteListFile.empty())
|
||||
read(whiteListStrings, whiteListFile, verbosity);
|
||||
|
||||
for (auto it = inputFile.cbegin(); it != inputFile.cend(); ++it) {
|
||||
const std::string &filename = *it;
|
||||
for (std::size_t ii=0; ii<inputFiles.size(); ii++) {
|
||||
std::vector<SpvWord> spv;
|
||||
read(spv, filename, verbosity);
|
||||
read(spv, inputFiles[ii], verbosity);
|
||||
|
||||
spv::spirvbin_t(verbosity).remap(spv, whiteListStrings, opts);
|
||||
const std::string outfile = outputDir + path_sep_char() + basename(filename);
|
||||
write(spv, outfile, verbosity);
|
||||
|
||||
if (isSingleOutputDir) {
|
||||
// write all outputs to same directory
|
||||
const std::string outFile = outputDirOrFiles[0] + path_sep_char() + basename(inputFiles[ii]);
|
||||
write(spv, outFile, verbosity);
|
||||
} else {
|
||||
// write each input to its associated output
|
||||
write(spv, outputDirOrFiles[ii], verbosity);
|
||||
}
|
||||
}
|
||||
|
||||
if (verbosity > 0)
|
||||
std::cout << "Done: " << inputFile.size() << " file(s) processed" << std::endl;
|
||||
std::cout << "Done: " << inputFiles.size() << " file(s) processed" << std::endl;
|
||||
}
|
||||
|
||||
// Parse command line options
|
||||
void parseCmdLine(int argc, char** argv, std::vector<std::string>& inputFile,
|
||||
std::string& outputDir,
|
||||
std::string& stripWhiteListFile,
|
||||
int& options,
|
||||
int& verbosity)
|
||||
void parseCmdLine(int argc,
|
||||
char** argv,
|
||||
std::vector<std::string>& inputFiles,
|
||||
std::vector<std::string>& outputDirOrFiles,
|
||||
std::string& stripWhiteListFile,
|
||||
int& options,
|
||||
int& verbosity)
|
||||
{
|
||||
if (argc < 2)
|
||||
usage(argv[0]);
|
||||
@ -222,18 +239,19 @@ namespace {
|
||||
const std::string arg = argv[a];
|
||||
|
||||
if (arg == "--output" || arg == "-o") {
|
||||
// Output directory
|
||||
if (++a >= argc)
|
||||
// Collect output dirs or files
|
||||
for (++a; a < argc && argv[a][0] != '-'; ++a)
|
||||
outputDirOrFiles.push_back(argv[a]);
|
||||
|
||||
if (outputDirOrFiles.size() == 0)
|
||||
usage(argv[0], "--output requires an argument");
|
||||
if (!outputDir.empty())
|
||||
usage(argv[0], "--output can be provided only once");
|
||||
|
||||
outputDir = argv[a++];
|
||||
|
||||
// Remove trailing directory separator characters
|
||||
while (!outputDir.empty() && outputDir.back() == path_sep_char())
|
||||
outputDir.pop_back();
|
||||
|
||||
// Remove trailing directory separator characters from all paths
|
||||
for (std::size_t ii=0; ii<outputDirOrFiles.size(); ii++) {
|
||||
auto path = outputDirOrFiles[ii];
|
||||
while (!path.empty() && path.back() == path_sep_char())
|
||||
path.pop_back();
|
||||
}
|
||||
}
|
||||
else if (arg == "-vv") { verbosity = 2; ++a; } // verbosity shortcuts
|
||||
else if (arg == "-vvv") { verbosity = 3; ++a; } // ...
|
||||
@ -262,7 +280,7 @@ namespace {
|
||||
} else if (arg == "--input" || arg == "-i") {
|
||||
// Collect input files
|
||||
for (++a; a < argc && argv[a][0] != '-'; ++a)
|
||||
inputFile.push_back(argv[a]);
|
||||
inputFiles.push_back(argv[a]);
|
||||
} else if (arg == "--do-everything") {
|
||||
++a;
|
||||
options = options | spv::spirvbin_t::DO_EVERYTHING;
|
||||
@ -346,30 +364,39 @@ namespace {
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
std::vector<std::string> inputFile;
|
||||
std::string outputDir;
|
||||
std::vector<std::string> inputFiles;
|
||||
std::vector<std::string> outputDirOrFiles;
|
||||
std::string whiteListFile;
|
||||
int opts;
|
||||
int verbosity;
|
||||
|
||||
#ifdef use_cpp11
|
||||
// handle errors by exiting
|
||||
spv::spirvbin_t::registerErrorHandler(errHandler);
|
||||
|
||||
// Log messages to std::cout
|
||||
spv::spirvbin_t::registerLogHandler(logHandler);
|
||||
#endif
|
||||
|
||||
if (argc < 2)
|
||||
usage(argv[0]);
|
||||
|
||||
parseCmdLine(argc, argv, inputFile, outputDir, whiteListFile, opts, verbosity);
|
||||
parseCmdLine(argc, argv, inputFiles, outputDirOrFiles, whiteListFile, opts, verbosity);
|
||||
|
||||
if (outputDir.empty())
|
||||
usage(argv[0], "Output directory required");
|
||||
if (outputDirOrFiles.empty())
|
||||
usage(argv[0], "Output directory or file(s) required.");
|
||||
|
||||
const bool isMultiInput = inputFiles.size() > 1;
|
||||
const bool isMultiOutput = outputDirOrFiles.size() > 1;
|
||||
const bool isSingleOutputDir = !isMultiOutput && std::filesystem::is_directory(outputDirOrFiles[0]);
|
||||
|
||||
if (isMultiInput && !isMultiOutput && !isSingleOutputDir)
|
||||
usage(argv[0], "Output is not a directory.");
|
||||
|
||||
|
||||
if (isMultiInput && isMultiOutput && (outputDirOrFiles.size() != inputFiles.size()))
|
||||
usage(argv[0], "Output must be either a single directory or one output file per input.");
|
||||
|
||||
// Main operations: read, remap, and write.
|
||||
execute(inputFile, outputDir, whiteListFile, opts, verbosity);
|
||||
execute(inputFiles, outputDirOrFiles, isSingleOutputDir, whiteListFile, opts, verbosity);
|
||||
|
||||
// If we get here, everything went OK! Nothing more to be done.
|
||||
}
|
||||
|
@ -46,6 +46,7 @@ ERROR: 0:108: 'overloadE' : no matching overloaded function found
|
||||
ERROR: 0:111: 'overloadE' : no matching overloaded function found
|
||||
ERROR: 0:117: 'overloadF' : no matching overloaded function found
|
||||
ERROR: 0:121: 'gl_TexCoord array size' : must be less than or equal to gl_MaxTextureCoords (32)
|
||||
ERROR: 0:154: 'non-float shader input/output' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:165: 'switch' : Reserved word.
|
||||
ERROR: 0:171: 'default' : Reserved word.
|
||||
ERROR: 0:165: 'switch statements' : not supported for this version or the enabled extensions
|
||||
@ -80,7 +81,7 @@ ERROR: 0:195: 'gl_ModelViewMatrix' : identifiers starting with "gl_" are reserve
|
||||
ERROR: 0:200: 'token pasting (##)' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:203: 'token pasting (##)' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:205: '' : syntax error, unexpected IDENTIFIER
|
||||
ERROR: 81 compilation errors. No code generated.
|
||||
ERROR: 82 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 120
|
||||
|
@ -1,6 +1,6 @@
|
||||
300layout.vert
|
||||
ERROR: 0:7: 'vertex input arrays' : not supported with this profile: es
|
||||
ERROR: 0:8: 'in' : cannot be a structure or array
|
||||
ERROR: 0:8: 'in' : cannot be a structure
|
||||
ERROR: 0:8: 's' : A structure containing an array is not allowed as input in ES
|
||||
ERROR: 0:8: 'vertex input arrays' : not supported with this profile: es
|
||||
ERROR: 0:8: 'location' : overlapping use of location 10
|
||||
|
@ -1,7 +1,7 @@
|
||||
440.frag
|
||||
ERROR: 0:11: 'location' : overlapping use of location 4
|
||||
ERROR: 0:13: 'component' : type overflows the available 4 components
|
||||
ERROR: 0:22: 'location' : fragment outputs sharing the same location must be the same basic type 30
|
||||
ERROR: 0:22: 'location' : fragment outputs or tileImageEXTs sharing the same location 30 must be the same basic type
|
||||
ERROR: 0:24: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type)
|
||||
ERROR: 0:25: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type)
|
||||
ERROR: 0:26: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type)
|
||||
@ -43,11 +43,11 @@ ERROR: 0:62: 'layout' : offset/align can only be used on a uniform or buffer
|
||||
ERROR: 0:63: 'layout' : offset/align can only be used on a uniform or buffer
|
||||
ERROR: 0:84: 'align' : must be a power of 2
|
||||
ERROR: 0:83: 'offset' : cannot lie in previous members
|
||||
ERROR: 0:85: 'offset' : must be a multiple of the member's alignment
|
||||
ERROR: 0:85: 'offset' : must be a multiple of the member's alignment (layout offset = 68 | member alignment = 8)
|
||||
ERROR: 0:103: 'align' : must be a power of 2
|
||||
ERROR: 0:105: 'align' : must be a power of 2
|
||||
ERROR: 0:102: 'offset' : cannot lie in previous members
|
||||
ERROR: 0:104: 'offset' : must be a multiple of the member's alignment
|
||||
ERROR: 0:104: 'offset' : must be a multiple of the member's alignment (layout offset = 68 | member alignment = 8)
|
||||
ERROR: 49 compilation errors. No code generated.
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
atomicAdd.comp
|
||||
ERROR: 0:18: 'atomicAdd' : Atomic memory function can only be used for shader storage block member or shared variable.
|
||||
ERROR: 0:18: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions.
|
||||
ERROR: 1 compilation errors. No code generated.
|
||||
|
||||
|
||||
|
35
Test/baseResults/glsl.-P.frag.out
Normal file
35
Test/baseResults/glsl.-P.frag.out
Normal file
@ -0,0 +1,35 @@
|
||||
glsl.-P.frag
|
||||
Shader version: 450
|
||||
0:? Sequence
|
||||
0:5 Function Definition: main( ( global void)
|
||||
0:5 Function Parameters:
|
||||
0:19 Sequence
|
||||
0:19 move second child to first child ( temp 4-component vector of float)
|
||||
0:19 'color' (layout( location=0) out 4-component vector of float)
|
||||
0:19 Constant:
|
||||
0:19 1.000000
|
||||
0:19 1.000000
|
||||
0:19 1.000000
|
||||
0:19 1.000000
|
||||
0:? Linker Objects
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
0:? Sequence
|
||||
0:5 Function Definition: main( ( global void)
|
||||
0:5 Function Parameters:
|
||||
0:19 Sequence
|
||||
0:19 move second child to first child ( temp 4-component vector of float)
|
||||
0:19 'color' (layout( location=0) out 4-component vector of float)
|
||||
0:19 Constant:
|
||||
0:19 1.000000
|
||||
0:19 1.000000
|
||||
0:19 1.000000
|
||||
0:19 1.000000
|
||||
0:? Linker Objects
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
|
45
Test/baseResults/glsl.-P.function.frag.out
Normal file
45
Test/baseResults/glsl.-P.function.frag.out
Normal file
@ -0,0 +1,45 @@
|
||||
glsl.-P.function.frag
|
||||
Shader version: 450
|
||||
0:? Sequence
|
||||
-1:1 Function Definition: getColor( ( global 4-component vector of float)
|
||||
-1:1 Function Parameters:
|
||||
-1:1 Sequence
|
||||
-1:1 Branch: Return with expression
|
||||
-1:1 Constant:
|
||||
-1:1 1.000000
|
||||
-1:1 1.000000
|
||||
-1:1 1.000000
|
||||
-1:1 1.000000
|
||||
0:5 Function Definition: main( ( global void)
|
||||
0:5 Function Parameters:
|
||||
0:7 Sequence
|
||||
0:7 move second child to first child ( temp 4-component vector of float)
|
||||
0:7 'color' (layout( location=0) out 4-component vector of float)
|
||||
0:7 Function Call: getColor( ( global 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
0:? Sequence
|
||||
-1:1 Function Definition: getColor( ( global 4-component vector of float)
|
||||
-1:1 Function Parameters:
|
||||
-1:1 Sequence
|
||||
-1:1 Branch: Return with expression
|
||||
-1:1 Constant:
|
||||
-1:1 1.000000
|
||||
-1:1 1.000000
|
||||
-1:1 1.000000
|
||||
-1:1 1.000000
|
||||
0:5 Function Definition: main( ( global void)
|
||||
0:5 Function Parameters:
|
||||
0:7 Sequence
|
||||
0:7 move second child to first child ( temp 4-component vector of float)
|
||||
0:7 'color' (layout( location=0) out 4-component vector of float)
|
||||
0:7 Function Call: getColor( ( global 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
|
49
Test/baseResults/glsl.-P.include.frag.out
Normal file
49
Test/baseResults/glsl.-P.include.frag.out
Normal file
@ -0,0 +1,49 @@
|
||||
glsl.-P.include.frag
|
||||
Shader version: 450
|
||||
Requested GL_GOOGLE_cpp_style_line_directive
|
||||
Requested GL_GOOGLE_include_directive
|
||||
0:? Sequence
|
||||
0:1 Function Definition: getColor( ( global 4-component vector of float)
|
||||
0:1 Function Parameters:
|
||||
0:3 Sequence
|
||||
0:3 Branch: Return with expression
|
||||
0:3 Constant:
|
||||
0:3 1.000000
|
||||
0:3 1.000000
|
||||
0:3 1.000000
|
||||
0:3 1.000000
|
||||
0:7 Function Definition: main( ( global void)
|
||||
0:7 Function Parameters:
|
||||
0:9 Sequence
|
||||
0:9 move second child to first child ( temp 4-component vector of float)
|
||||
0:9 'color' (layout( location=0) out 4-component vector of float)
|
||||
0:9 Function Call: getColor( ( global 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_GOOGLE_cpp_style_line_directive
|
||||
Requested GL_GOOGLE_include_directive
|
||||
0:? Sequence
|
||||
0:1 Function Definition: getColor( ( global 4-component vector of float)
|
||||
0:1 Function Parameters:
|
||||
0:3 Sequence
|
||||
0:3 Branch: Return with expression
|
||||
0:3 Constant:
|
||||
0:3 1.000000
|
||||
0:3 1.000000
|
||||
0:3 1.000000
|
||||
0:3 1.000000
|
||||
0:7 Function Definition: main( ( global void)
|
||||
0:7 Function Parameters:
|
||||
0:9 Sequence
|
||||
0:9 move second child to first child ( temp 4-component vector of float)
|
||||
0:9 'color' (layout( location=0) out 4-component vector of float)
|
||||
0:9 Function Call: getColor( ( global 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
|
149
Test/baseResults/glsl.es320.extTextureShadowLod.frag.out
Normal file
149
Test/baseResults/glsl.es320.extTextureShadowLod.frag.out
Normal file
@ -0,0 +1,149 @@
|
||||
glsl.es320.extTextureShadowLod.frag
|
||||
Shader version: 320
|
||||
Requested GL_EXT_texture_shadow_lod
|
||||
0:? Sequence
|
||||
0:12 Function Definition: main( ( global void)
|
||||
0:12 Function Parameters:
|
||||
0:14 Sequence
|
||||
0:14 move second child to first child ( temp lowp float)
|
||||
0:14 'c' ( out lowp float)
|
||||
0:14 texture ( global lowp float)
|
||||
0:14 's2da' ( uniform lowp sampler2DArrayShadow)
|
||||
0:14 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:14 Constant:
|
||||
0:14 0.000000
|
||||
0:15 move second child to first child ( temp lowp float)
|
||||
0:15 'c' ( out lowp float)
|
||||
0:15 texture ( global lowp float)
|
||||
0:15 'sca' ( uniform lowp samplerCubeArrayShadow)
|
||||
0:15 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:15 Constant:
|
||||
0:15 0.000000
|
||||
0:15 Constant:
|
||||
0:15 0.000000
|
||||
0:16 move second child to first child ( temp lowp float)
|
||||
0:16 'c' ( out lowp float)
|
||||
0:16 textureOffset ( global lowp float)
|
||||
0:16 's2da' ( uniform lowp sampler2DArrayShadow)
|
||||
0:16 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:16 Constant:
|
||||
0:16 0 (const int)
|
||||
0:16 0 (const int)
|
||||
0:16 Constant:
|
||||
0:16 0.000000
|
||||
0:17 move second child to first child ( temp lowp float)
|
||||
0:17 'c' ( out lowp float)
|
||||
0:17 textureLod ( global lowp float)
|
||||
0:17 's2da' ( uniform lowp sampler2DArrayShadow)
|
||||
0:17 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:17 Constant:
|
||||
0:17 0.000000
|
||||
0:18 move second child to first child ( temp lowp float)
|
||||
0:18 'c' ( out lowp float)
|
||||
0:18 textureLod ( global lowp float)
|
||||
0:18 'sc' ( uniform lowp samplerCubeShadow)
|
||||
0:18 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:18 Constant:
|
||||
0:18 0.000000
|
||||
0:19 move second child to first child ( temp lowp float)
|
||||
0:19 'c' ( out lowp float)
|
||||
0:19 textureLod ( global lowp float)
|
||||
0:19 'sca' ( uniform lowp samplerCubeArrayShadow)
|
||||
0:19 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:19 Constant:
|
||||
0:19 0.000000
|
||||
0:19 Constant:
|
||||
0:19 0.000000
|
||||
0:20 move second child to first child ( temp lowp float)
|
||||
0:20 'c' ( out lowp float)
|
||||
0:20 textureLodOffset ( global lowp float)
|
||||
0:20 's2da' ( uniform lowp sampler2DArrayShadow)
|
||||
0:20 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:20 Constant:
|
||||
0:20 0.000000
|
||||
0:20 Constant:
|
||||
0:20 0 (const int)
|
||||
0:20 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 's2da' ( uniform lowp sampler2DArrayShadow)
|
||||
0:? 'sca' ( uniform lowp samplerCubeArrayShadow)
|
||||
0:? 'sc' ( uniform lowp samplerCubeShadow)
|
||||
0:? 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:? 'c' ( out lowp float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 320
|
||||
Requested GL_EXT_texture_shadow_lod
|
||||
0:? Sequence
|
||||
0:12 Function Definition: main( ( global void)
|
||||
0:12 Function Parameters:
|
||||
0:14 Sequence
|
||||
0:14 move second child to first child ( temp lowp float)
|
||||
0:14 'c' ( out lowp float)
|
||||
0:14 texture ( global lowp float)
|
||||
0:14 's2da' ( uniform lowp sampler2DArrayShadow)
|
||||
0:14 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:14 Constant:
|
||||
0:14 0.000000
|
||||
0:15 move second child to first child ( temp lowp float)
|
||||
0:15 'c' ( out lowp float)
|
||||
0:15 texture ( global lowp float)
|
||||
0:15 'sca' ( uniform lowp samplerCubeArrayShadow)
|
||||
0:15 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:15 Constant:
|
||||
0:15 0.000000
|
||||
0:15 Constant:
|
||||
0:15 0.000000
|
||||
0:16 move second child to first child ( temp lowp float)
|
||||
0:16 'c' ( out lowp float)
|
||||
0:16 textureOffset ( global lowp float)
|
||||
0:16 's2da' ( uniform lowp sampler2DArrayShadow)
|
||||
0:16 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:16 Constant:
|
||||
0:16 0 (const int)
|
||||
0:16 0 (const int)
|
||||
0:16 Constant:
|
||||
0:16 0.000000
|
||||
0:17 move second child to first child ( temp lowp float)
|
||||
0:17 'c' ( out lowp float)
|
||||
0:17 textureLod ( global lowp float)
|
||||
0:17 's2da' ( uniform lowp sampler2DArrayShadow)
|
||||
0:17 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:17 Constant:
|
||||
0:17 0.000000
|
||||
0:18 move second child to first child ( temp lowp float)
|
||||
0:18 'c' ( out lowp float)
|
||||
0:18 textureLod ( global lowp float)
|
||||
0:18 'sc' ( uniform lowp samplerCubeShadow)
|
||||
0:18 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:18 Constant:
|
||||
0:18 0.000000
|
||||
0:19 move second child to first child ( temp lowp float)
|
||||
0:19 'c' ( out lowp float)
|
||||
0:19 textureLod ( global lowp float)
|
||||
0:19 'sca' ( uniform lowp samplerCubeArrayShadow)
|
||||
0:19 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:19 Constant:
|
||||
0:19 0.000000
|
||||
0:19 Constant:
|
||||
0:19 0.000000
|
||||
0:20 move second child to first child ( temp lowp float)
|
||||
0:20 'c' ( out lowp float)
|
||||
0:20 textureLodOffset ( global lowp float)
|
||||
0:20 's2da' ( uniform lowp sampler2DArrayShadow)
|
||||
0:20 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:20 Constant:
|
||||
0:20 0.000000
|
||||
0:20 Constant:
|
||||
0:20 0 (const int)
|
||||
0:20 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 's2da' ( uniform lowp sampler2DArrayShadow)
|
||||
0:? 'sca' ( uniform lowp samplerCubeArrayShadow)
|
||||
0:? 'sc' ( uniform lowp samplerCubeShadow)
|
||||
0:? 'tc' ( smooth in lowp 4-component vector of float)
|
||||
0:? 'c' ( out lowp float)
|
||||
|
160
Test/baseResults/glsl.ext.textureShadowLod.frag.out
Normal file
160
Test/baseResults/glsl.ext.textureShadowLod.frag.out
Normal file
@ -0,0 +1,160 @@
|
||||
glsl.ext.textureShadowLod.frag
|
||||
ERROR: 0:24: 'texture(..., float bias)' : required extension not requested: GL_EXT_texture_shadow_lod
|
||||
ERROR: 0:25: 'texture(..., float bias)' : required extension not requested: GL_EXT_texture_shadow_lod
|
||||
ERROR: 0:26: 'textureOffset for sampler2DArrayShadow' : required extension not requested: GL_EXT_texture_shadow_lod
|
||||
ERROR: 0:27: 'textureLod(..., float lod)' : required extension not requested: GL_EXT_texture_shadow_lod
|
||||
ERROR: 0:28: 'textureLod(..., float lod)' : required extension not requested: GL_EXT_texture_shadow_lod
|
||||
ERROR: 0:29: 'textureLod(..., float lod)' : required extension not requested: GL_EXT_texture_shadow_lod
|
||||
ERROR: 0:30: 'textureLodOffset for sampler2DArrayShadow' : required extension not requested: GL_EXT_texture_shadow_lod
|
||||
ERROR: 7 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_EXT_texture_shadow_lod
|
||||
ERROR: node is still EOpNull!
|
||||
0:11 Function Definition: pass( ( global void)
|
||||
0:11 Function Parameters:
|
||||
0:12 Sequence
|
||||
0:12 move second child to first child ( temp float)
|
||||
0:12 'c' ( out float)
|
||||
0:12 texture ( global float)
|
||||
0:12 's2da' ( uniform sampler2DArrayShadow)
|
||||
0:12 'tc' ( smooth in 4-component vector of float)
|
||||
0:12 Constant:
|
||||
0:12 0.000000
|
||||
0:13 move second child to first child ( temp float)
|
||||
0:13 'c' ( out float)
|
||||
0:13 texture ( global float)
|
||||
0:13 'sca' ( uniform samplerCubeArrayShadow)
|
||||
0:13 'tc' ( smooth in 4-component vector of float)
|
||||
0:13 Constant:
|
||||
0:13 0.000000
|
||||
0:13 Constant:
|
||||
0:13 0.000000
|
||||
0:14 move second child to first child ( temp float)
|
||||
0:14 'c' ( out float)
|
||||
0:14 textureOffset ( global float)
|
||||
0:14 's2da' ( uniform sampler2DArrayShadow)
|
||||
0:14 'tc' ( smooth in 4-component vector of float)
|
||||
0:14 Constant:
|
||||
0:14 0 (const int)
|
||||
0:14 0 (const int)
|
||||
0:14 Constant:
|
||||
0:14 0.000000
|
||||
0:15 move second child to first child ( temp float)
|
||||
0:15 'c' ( out float)
|
||||
0:15 textureLod ( global float)
|
||||
0:15 's2da' ( uniform sampler2DArrayShadow)
|
||||
0:15 'tc' ( smooth in 4-component vector of float)
|
||||
0:15 Constant:
|
||||
0:15 0.000000
|
||||
0:16 move second child to first child ( temp float)
|
||||
0:16 'c' ( out float)
|
||||
0:16 textureLod ( global float)
|
||||
0:16 'sc' ( uniform samplerCubeShadow)
|
||||
0:16 'tc' ( smooth in 4-component vector of float)
|
||||
0:16 Constant:
|
||||
0:16 0.000000
|
||||
0:17 move second child to first child ( temp float)
|
||||
0:17 'c' ( out float)
|
||||
0:17 textureLod ( global float)
|
||||
0:17 'sca' ( uniform samplerCubeArrayShadow)
|
||||
0:17 'tc' ( smooth in 4-component vector of float)
|
||||
0:17 Constant:
|
||||
0:17 0.000000
|
||||
0:17 Constant:
|
||||
0:17 0.000000
|
||||
0:18 move second child to first child ( temp float)
|
||||
0:18 'c' ( out float)
|
||||
0:18 textureLodOffset ( global float)
|
||||
0:18 's2da' ( uniform sampler2DArrayShadow)
|
||||
0:18 'tc' ( smooth in 4-component vector of float)
|
||||
0:18 Constant:
|
||||
0:18 0.000000
|
||||
0:18 Constant:
|
||||
0:18 0 (const int)
|
||||
0:18 0 (const int)
|
||||
0:22 Function Definition: fail( ( global void)
|
||||
0:22 Function Parameters:
|
||||
0:24 Sequence
|
||||
0:24 move second child to first child ( temp float)
|
||||
0:24 'c' ( out float)
|
||||
0:24 texture ( global float)
|
||||
0:24 's2da' ( uniform sampler2DArrayShadow)
|
||||
0:24 'tc' ( smooth in 4-component vector of float)
|
||||
0:24 Constant:
|
||||
0:24 0.000000
|
||||
0:25 move second child to first child ( temp float)
|
||||
0:25 'c' ( out float)
|
||||
0:25 texture ( global float)
|
||||
0:25 'sca' ( uniform samplerCubeArrayShadow)
|
||||
0:25 'tc' ( smooth in 4-component vector of float)
|
||||
0:25 Constant:
|
||||
0:25 0.000000
|
||||
0:25 Constant:
|
||||
0:25 0.000000
|
||||
0:26 move second child to first child ( temp float)
|
||||
0:26 'c' ( out float)
|
||||
0:26 textureOffset ( global float)
|
||||
0:26 's2da' ( uniform sampler2DArrayShadow)
|
||||
0:26 'tc' ( smooth in 4-component vector of float)
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 0.000000
|
||||
0:27 move second child to first child ( temp float)
|
||||
0:27 'c' ( out float)
|
||||
0:27 textureLod ( global float)
|
||||
0:27 's2da' ( uniform sampler2DArrayShadow)
|
||||
0:27 'tc' ( smooth in 4-component vector of float)
|
||||
0:27 Constant:
|
||||
0:27 0.000000
|
||||
0:28 move second child to first child ( temp float)
|
||||
0:28 'c' ( out float)
|
||||
0:28 textureLod ( global float)
|
||||
0:28 'sc' ( uniform samplerCubeShadow)
|
||||
0:28 'tc' ( smooth in 4-component vector of float)
|
||||
0:28 Constant:
|
||||
0:28 0.000000
|
||||
0:29 move second child to first child ( temp float)
|
||||
0:29 'c' ( out float)
|
||||
0:29 textureLod ( global float)
|
||||
0:29 'sca' ( uniform samplerCubeArrayShadow)
|
||||
0:29 'tc' ( smooth in 4-component vector of float)
|
||||
0:29 Constant:
|
||||
0:29 0.000000
|
||||
0:29 Constant:
|
||||
0:29 0.000000
|
||||
0:30 move second child to first child ( temp float)
|
||||
0:30 'c' ( out float)
|
||||
0:30 textureLodOffset ( global float)
|
||||
0:30 's2da' ( uniform sampler2DArrayShadow)
|
||||
0:30 'tc' ( smooth in 4-component vector of float)
|
||||
0:30 Constant:
|
||||
0:30 0.000000
|
||||
0:30 Constant:
|
||||
0:30 0 (const int)
|
||||
0:30 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 's2da' ( uniform sampler2DArrayShadow)
|
||||
0:? 'sca' ( uniform samplerCubeArrayShadow)
|
||||
0:? 'sc' ( uniform samplerCubeShadow)
|
||||
0:? 'c' ( out float)
|
||||
0:? 'tc' ( smooth in 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_EXT_texture_shadow_lod
|
||||
ERROR: node is still EOpNull!
|
||||
0:? Linker Objects
|
||||
0:? 's2da' ( uniform sampler2DArrayShadow)
|
||||
0:? 'sca' ( uniform samplerCubeArrayShadow)
|
||||
0:? 'sc' ( uniform samplerCubeShadow)
|
||||
0:? 'c' ( out float)
|
||||
0:? 'tc' ( smooth in 4-component vector of float)
|
||||
|
390
Test/baseResults/hlsl.buffer_ref_parameter.comp.out
Normal file
390
Test/baseResults/hlsl.buffer_ref_parameter.comp.out
Normal file
@ -0,0 +1,390 @@
|
||||
hlsl.buffer_ref_parameter.comp
|
||||
Shader version: 500
|
||||
local_size = (64, 1, 1)
|
||||
0:? Sequence
|
||||
0:4 Function Definition: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float)
|
||||
0:4 Function Parameters:
|
||||
0:4 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:4 'vertex_id' ( in uint)
|
||||
0:? Sequence
|
||||
0:5 Branch: Return with expression
|
||||
0:? intBitsToFloat ( temp 3-component vector of float)
|
||||
0:? Sequence
|
||||
0:5 move second child to first child ( temp int)
|
||||
0:5 'byteAddrTemp' ( temp int)
|
||||
0:5 right-shift ( temp int)
|
||||
0:5 component-wise multiply ( temp uint)
|
||||
0:5 component-wise multiply ( temp uint)
|
||||
0:5 'vertex_id' ( in uint)
|
||||
0:5 Constant:
|
||||
0:5 3 (const uint)
|
||||
0:5 Constant:
|
||||
0:5 4 (const uint)
|
||||
0:5 Constant:
|
||||
0:5 2 (const int)
|
||||
0:? Construct vec3 ( temp 3-component vector of uint)
|
||||
0:5 indirect index ( temp uint)
|
||||
0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
||||
0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:5 Constant:
|
||||
0:5 0 (const uint)
|
||||
0:5 'byteAddrTemp' ( temp int)
|
||||
0:5 indirect index ( temp uint)
|
||||
0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
||||
0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:5 Constant:
|
||||
0:5 0 (const uint)
|
||||
0:5 add ( temp int)
|
||||
0:5 'byteAddrTemp' ( temp int)
|
||||
0:5 Constant:
|
||||
0:5 1 (const int)
|
||||
0:5 indirect index ( temp uint)
|
||||
0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
||||
0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:5 Constant:
|
||||
0:5 0 (const uint)
|
||||
0:5 add ( temp int)
|
||||
0:5 'byteAddrTemp' ( temp int)
|
||||
0:5 Constant:
|
||||
0:5 2 (const int)
|
||||
0:9 Function Definition: @main(u1; ( temp void)
|
||||
0:9 Function Parameters:
|
||||
0:9 'gi' ( in uint)
|
||||
0:? Sequence
|
||||
0:10 Sequence
|
||||
0:10 move second child to first child ( temp 3-component vector of float)
|
||||
0:10 'position_ms' ( temp 3-component vector of float)
|
||||
0:10 Function Call: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float)
|
||||
0:10 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:10 'gi' ( in uint)
|
||||
0:? Sequence
|
||||
0:12 move second child to first child ( temp int)
|
||||
0:12 'byteAddrTemp' ( temp int)
|
||||
0:12 right-shift ( temp int)
|
||||
0:12 Constant:
|
||||
0:12 0 (const int)
|
||||
0:12 Constant:
|
||||
0:12 2 (const int)
|
||||
0:12 move second child to first child ( temp uint)
|
||||
0:12 indirect index (layout( row_major std430) buffer uint)
|
||||
0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
||||
0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 'byteAddrTemp' ( temp int)
|
||||
0:12 direct index ( temp uint)
|
||||
0:12 floatBitsToUint ( temp 3-component vector of uint)
|
||||
0:12 'position_ms' ( temp 3-component vector of float)
|
||||
0:12 Constant:
|
||||
0:12 0 (const int)
|
||||
0:12 move second child to first child ( temp uint)
|
||||
0:12 indirect index (layout( row_major std430) buffer uint)
|
||||
0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
||||
0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 add ( temp int)
|
||||
0:12 'byteAddrTemp' ( temp int)
|
||||
0:12 Constant:
|
||||
0:12 1 (const int)
|
||||
0:12 direct index ( temp uint)
|
||||
0:12 floatBitsToUint ( temp 3-component vector of uint)
|
||||
0:12 'position_ms' ( temp 3-component vector of float)
|
||||
0:12 Constant:
|
||||
0:12 1 (const int)
|
||||
0:12 move second child to first child ( temp uint)
|
||||
0:12 indirect index (layout( row_major std430) buffer uint)
|
||||
0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
||||
0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 add ( temp int)
|
||||
0:12 'byteAddrTemp' ( temp int)
|
||||
0:12 Constant:
|
||||
0:12 2 (const int)
|
||||
0:12 direct index ( temp uint)
|
||||
0:12 floatBitsToUint ( temp 3-component vector of uint)
|
||||
0:12 'position_ms' ( temp 3-component vector of float)
|
||||
0:12 Constant:
|
||||
0:12 2 (const int)
|
||||
0:9 Function Definition: main( ( temp void)
|
||||
0:9 Function Parameters:
|
||||
0:? Sequence
|
||||
0:9 move second child to first child ( temp uint)
|
||||
0:? 'gi' ( temp uint)
|
||||
0:? 'gi' ( in uint LocalInvocationIndex)
|
||||
0:9 Function Call: @main(u1; ( temp void)
|
||||
0:? 'gi' ( temp uint)
|
||||
0:? Linker Objects
|
||||
0:? 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:? 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:? 'gi' ( in uint LocalInvocationIndex)
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 500
|
||||
local_size = (64, 1, 1)
|
||||
0:? Sequence
|
||||
0:4 Function Definition: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float)
|
||||
0:4 Function Parameters:
|
||||
0:4 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:4 'vertex_id' ( in uint)
|
||||
0:? Sequence
|
||||
0:5 Branch: Return with expression
|
||||
0:? intBitsToFloat ( temp 3-component vector of float)
|
||||
0:? Sequence
|
||||
0:5 move second child to first child ( temp int)
|
||||
0:5 'byteAddrTemp' ( temp int)
|
||||
0:5 right-shift ( temp int)
|
||||
0:5 component-wise multiply ( temp uint)
|
||||
0:5 component-wise multiply ( temp uint)
|
||||
0:5 'vertex_id' ( in uint)
|
||||
0:5 Constant:
|
||||
0:5 3 (const uint)
|
||||
0:5 Constant:
|
||||
0:5 4 (const uint)
|
||||
0:5 Constant:
|
||||
0:5 2 (const int)
|
||||
0:? Construct vec3 ( temp 3-component vector of uint)
|
||||
0:5 indirect index ( temp uint)
|
||||
0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
||||
0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:5 Constant:
|
||||
0:5 0 (const uint)
|
||||
0:5 'byteAddrTemp' ( temp int)
|
||||
0:5 indirect index ( temp uint)
|
||||
0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
||||
0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:5 Constant:
|
||||
0:5 0 (const uint)
|
||||
0:5 add ( temp int)
|
||||
0:5 'byteAddrTemp' ( temp int)
|
||||
0:5 Constant:
|
||||
0:5 1 (const int)
|
||||
0:5 indirect index ( temp uint)
|
||||
0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
||||
0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:5 Constant:
|
||||
0:5 0 (const uint)
|
||||
0:5 add ( temp int)
|
||||
0:5 'byteAddrTemp' ( temp int)
|
||||
0:5 Constant:
|
||||
0:5 2 (const int)
|
||||
0:9 Function Definition: @main(u1; ( temp void)
|
||||
0:9 Function Parameters:
|
||||
0:9 'gi' ( in uint)
|
||||
0:? Sequence
|
||||
0:10 Sequence
|
||||
0:10 move second child to first child ( temp 3-component vector of float)
|
||||
0:10 'position_ms' ( temp 3-component vector of float)
|
||||
0:10 Function Call: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float)
|
||||
0:10 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:10 'gi' ( in uint)
|
||||
0:? Sequence
|
||||
0:12 move second child to first child ( temp int)
|
||||
0:12 'byteAddrTemp' ( temp int)
|
||||
0:12 right-shift ( temp int)
|
||||
0:12 Constant:
|
||||
0:12 0 (const int)
|
||||
0:12 Constant:
|
||||
0:12 2 (const int)
|
||||
0:12 move second child to first child ( temp uint)
|
||||
0:12 indirect index (layout( row_major std430) buffer uint)
|
||||
0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
||||
0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 'byteAddrTemp' ( temp int)
|
||||
0:12 direct index ( temp uint)
|
||||
0:12 floatBitsToUint ( temp 3-component vector of uint)
|
||||
0:12 'position_ms' ( temp 3-component vector of float)
|
||||
0:12 Constant:
|
||||
0:12 0 (const int)
|
||||
0:12 move second child to first child ( temp uint)
|
||||
0:12 indirect index (layout( row_major std430) buffer uint)
|
||||
0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
||||
0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 add ( temp int)
|
||||
0:12 'byteAddrTemp' ( temp int)
|
||||
0:12 Constant:
|
||||
0:12 1 (const int)
|
||||
0:12 direct index ( temp uint)
|
||||
0:12 floatBitsToUint ( temp 3-component vector of uint)
|
||||
0:12 'position_ms' ( temp 3-component vector of float)
|
||||
0:12 Constant:
|
||||
0:12 1 (const int)
|
||||
0:12 move second child to first child ( temp uint)
|
||||
0:12 indirect index (layout( row_major std430) buffer uint)
|
||||
0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
||||
0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 add ( temp int)
|
||||
0:12 'byteAddrTemp' ( temp int)
|
||||
0:12 Constant:
|
||||
0:12 2 (const int)
|
||||
0:12 direct index ( temp uint)
|
||||
0:12 floatBitsToUint ( temp 3-component vector of uint)
|
||||
0:12 'position_ms' ( temp 3-component vector of float)
|
||||
0:12 Constant:
|
||||
0:12 2 (const int)
|
||||
0:9 Function Definition: main( ( temp void)
|
||||
0:9 Function Parameters:
|
||||
0:? Sequence
|
||||
0:9 move second child to first child ( temp uint)
|
||||
0:? 'gi' ( temp uint)
|
||||
0:? 'gi' ( in uint LocalInvocationIndex)
|
||||
0:9 Function Call: @main(u1; ( temp void)
|
||||
0:? 'gi' ( temp uint)
|
||||
0:? Linker Objects
|
||||
0:? 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:? 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
||||
0:? 'gi' ( in uint LocalInvocationIndex)
|
||||
|
||||
// Module Version 10400
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 90
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 53 62 85
|
||||
ExecutionMode 4 LocalSize 64 1 1
|
||||
Source HLSL 500
|
||||
Name 4 "main"
|
||||
Name 8 ""
|
||||
MemberName 8 0 "@data"
|
||||
Name 16 "pull_position(block--u1[0]1;u1;"
|
||||
Name 14 "buffer_position"
|
||||
Name 15 "vertex_id"
|
||||
Name 20 "@main(u1;"
|
||||
Name 19 "gi"
|
||||
Name 24 "byteAddrTemp"
|
||||
Name 52 "position_ms"
|
||||
Name 53 "buffer_position_ms"
|
||||
Name 54 "param"
|
||||
Name 57 "byteAddrTemp"
|
||||
Name 60 "r"
|
||||
MemberName 60(r) 0 "@data"
|
||||
Name 62 "r"
|
||||
Name 83 "gi"
|
||||
Name 85 "gi"
|
||||
Name 87 "param"
|
||||
Decorate 7 ArrayStride 4
|
||||
MemberDecorate 8 0 NonWritable
|
||||
MemberDecorate 8 0 Offset 0
|
||||
Decorate 8 Block
|
||||
Decorate 14(buffer_position) NonWritable
|
||||
Decorate 53(buffer_position_ms) DescriptorSet 0
|
||||
Decorate 53(buffer_position_ms) Binding 0
|
||||
Decorate 59 ArrayStride 4
|
||||
MemberDecorate 60(r) 0 Offset 0
|
||||
Decorate 60(r) Block
|
||||
Decorate 62(r) DescriptorSet 0
|
||||
Decorate 62(r) Binding 1
|
||||
Decorate 85(gi) BuiltIn LocalInvocationIndex
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
7: TypeRuntimeArray 6(int)
|
||||
8: TypeStruct 7
|
||||
9: TypePointer StorageBuffer 8(struct)
|
||||
10: TypePointer Function 6(int)
|
||||
11: TypeFloat 32
|
||||
12: TypeVector 11(float) 3
|
||||
13: TypeFunction 12(fvec3) 9(ptr) 10(ptr)
|
||||
18: TypeFunction 2 10(ptr)
|
||||
22: TypeInt 32 1
|
||||
23: TypePointer Function 22(int)
|
||||
26: 6(int) Constant 3
|
||||
28: 6(int) Constant 4
|
||||
30: 22(int) Constant 2
|
||||
32: 22(int) Constant 0
|
||||
34: TypePointer StorageBuffer 6(int)
|
||||
38: 22(int) Constant 1
|
||||
46: TypeVector 6(int) 3
|
||||
51: TypePointer Function 12(fvec3)
|
||||
53(buffer_position_ms): 9(ptr) Variable StorageBuffer
|
||||
59: TypeRuntimeArray 6(int)
|
||||
60(r): TypeStruct 59
|
||||
61: TypePointer StorageBuffer 60(r)
|
||||
62(r): 61(ptr) Variable StorageBuffer
|
||||
66: 6(int) Constant 0
|
||||
73: 6(int) Constant 1
|
||||
80: 6(int) Constant 2
|
||||
84: TypePointer Input 6(int)
|
||||
85(gi): 84(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
83(gi): 10(ptr) Variable Function
|
||||
87(param): 10(ptr) Variable Function
|
||||
86: 6(int) Load 85(gi)
|
||||
Store 83(gi) 86
|
||||
88: 6(int) Load 83(gi)
|
||||
Store 87(param) 88
|
||||
89: 2 FunctionCall 20(@main(u1;) 87(param)
|
||||
Return
|
||||
FunctionEnd
|
||||
16(pull_position(block--u1[0]1;u1;): 12(fvec3) Function None 13
|
||||
14(buffer_position): 9(ptr) FunctionParameter
|
||||
15(vertex_id): 10(ptr) FunctionParameter
|
||||
17: Label
|
||||
24(byteAddrTemp): 23(ptr) Variable Function
|
||||
25: 6(int) Load 15(vertex_id)
|
||||
27: 6(int) IMul 25 26
|
||||
29: 6(int) IMul 27 28
|
||||
31: 22(int) ShiftRightLogical 29 30
|
||||
Store 24(byteAddrTemp) 31
|
||||
33: 22(int) Load 24(byteAddrTemp)
|
||||
35: 34(ptr) AccessChain 14(buffer_position) 32 33
|
||||
36: 6(int) Load 35
|
||||
37: 22(int) Load 24(byteAddrTemp)
|
||||
39: 22(int) IAdd 37 38
|
||||
40: 34(ptr) AccessChain 14(buffer_position) 32 39
|
||||
41: 6(int) Load 40
|
||||
42: 22(int) Load 24(byteAddrTemp)
|
||||
43: 22(int) IAdd 42 30
|
||||
44: 34(ptr) AccessChain 14(buffer_position) 32 43
|
||||
45: 6(int) Load 44
|
||||
47: 46(ivec3) CompositeConstruct 36 41 45
|
||||
48: 12(fvec3) Bitcast 47
|
||||
ReturnValue 48
|
||||
FunctionEnd
|
||||
20(@main(u1;): 2 Function None 18
|
||||
19(gi): 10(ptr) FunctionParameter
|
||||
21: Label
|
||||
52(position_ms): 51(ptr) Variable Function
|
||||
54(param): 10(ptr) Variable Function
|
||||
57(byteAddrTemp): 23(ptr) Variable Function
|
||||
55: 6(int) Load 19(gi)
|
||||
Store 54(param) 55
|
||||
56: 12(fvec3) FunctionCall 16(pull_position(block--u1[0]1;u1;) 53(buffer_position_ms) 54(param)
|
||||
Store 52(position_ms) 56
|
||||
58: 22(int) ShiftRightArithmetic 32 30
|
||||
Store 57(byteAddrTemp) 58
|
||||
63: 22(int) Load 57(byteAddrTemp)
|
||||
64: 12(fvec3) Load 52(position_ms)
|
||||
65: 46(ivec3) Bitcast 64
|
||||
67: 6(int) CompositeExtract 65 0
|
||||
68: 34(ptr) AccessChain 62(r) 32 63
|
||||
Store 68 67
|
||||
69: 22(int) Load 57(byteAddrTemp)
|
||||
70: 22(int) IAdd 69 38
|
||||
71: 12(fvec3) Load 52(position_ms)
|
||||
72: 46(ivec3) Bitcast 71
|
||||
74: 6(int) CompositeExtract 72 1
|
||||
75: 34(ptr) AccessChain 62(r) 32 70
|
||||
Store 75 74
|
||||
76: 22(int) Load 57(byteAddrTemp)
|
||||
77: 22(int) IAdd 76 30
|
||||
78: 12(fvec3) Load 52(position_ms)
|
||||
79: 46(ivec3) Bitcast 78
|
||||
81: 6(int) CompositeExtract 79 2
|
||||
82: 34(ptr) AccessChain 62(r) 32 77
|
||||
Store 82 81
|
||||
Return
|
||||
FunctionEnd
|
@ -216,33 +216,98 @@ gl_FragCoord origin is upper left
|
||||
0:39 Convert int to float ( temp float)
|
||||
0:39 'd' ( temp int)
|
||||
0:39 'input' ( in 4-component vector of float)
|
||||
0:41 Branch: Return with expression
|
||||
0:40 add ( temp 4-component vector of float)
|
||||
0:40 add ( temp 4-component vector of float)
|
||||
0:40 add ( temp 4-component vector of float)
|
||||
0:40 add ( temp 4-component vector of float)
|
||||
0:40 vector-scale ( temp 4-component vector of float)
|
||||
0:40 Convert int to float ( temp float)
|
||||
0:40 'e' ( temp int)
|
||||
0:40 'ret' ( temp 4-component vector of float)
|
||||
0:40 'f' ( temp 4-component vector of float)
|
||||
0:40 Function Call: vectorCond( ( temp 4-component vector of float)
|
||||
0:40 Function Call: scalarCond( ( temp 4-component vector of float)
|
||||
0:41 Construct vec4 ( temp 4-component vector of float)
|
||||
0:41 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float)
|
||||
0:40 Sequence
|
||||
0:40 move second child to first child ( temp uint)
|
||||
0:40 'g' ( temp uint)
|
||||
0:40 Test condition and select ( temp uint): no shortcircuit
|
||||
0:40 Condition
|
||||
0:40 Compare Greater Than ( temp bool)
|
||||
0:40 Convert int to float ( temp float)
|
||||
0:40 'd' ( temp int)
|
||||
0:40 Constant:
|
||||
0:40 0.000000
|
||||
0:40 true case
|
||||
0:40 Constant:
|
||||
0:40 21 (const uint)
|
||||
0:40 false case
|
||||
0:40 Constant:
|
||||
0:40 0 (const uint)
|
||||
0:41 Sequence
|
||||
0:41 move second child to first child ( temp uint)
|
||||
0:41 'h' ( temp uint)
|
||||
0:41 Test condition and select ( temp uint): no shortcircuit
|
||||
0:41 Condition
|
||||
0:41 Compare Greater Than ( temp bool)
|
||||
0:41 Convert uint to float ( temp float)
|
||||
0:41 'g' ( temp uint)
|
||||
0:41 Constant:
|
||||
0:41 true (const bool)
|
||||
0:41 false (const bool)
|
||||
0:41 Constant:
|
||||
0:41 1.000000
|
||||
0:41 2.000000
|
||||
0:41 Constant:
|
||||
0:41 3.000000
|
||||
0:41 4.000000
|
||||
0:41 0.000000
|
||||
0:41 true case
|
||||
0:41 Constant:
|
||||
0:41 10.000000
|
||||
0:41 63 (const uint)
|
||||
0:41 false case
|
||||
0:41 Constant:
|
||||
0:41 10.000000
|
||||
0:41 0 (const uint)
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child ( temp uint)
|
||||
0:42 'i' ( temp uint)
|
||||
0:42 Test condition and select ( temp uint): no shortcircuit
|
||||
0:42 Condition
|
||||
0:42 Compare Greater Than ( temp bool)
|
||||
0:42 Convert uint to float ( temp float)
|
||||
0:42 'h' ( temp uint)
|
||||
0:42 Constant:
|
||||
0:42 0.000000
|
||||
0:42 true case
|
||||
0:42 Constant:
|
||||
0:42 5 (const uint)
|
||||
0:42 false case
|
||||
0:42 Constant:
|
||||
0:42 1 (const uint)
|
||||
0:43 Sequence
|
||||
0:43 move second child to first child ( temp uint)
|
||||
0:43 'j' ( temp uint)
|
||||
0:43 Convert int to uint ( temp uint)
|
||||
0:43 Test condition and select ( temp int): no shortcircuit
|
||||
0:43 Condition
|
||||
0:43 Compare Greater Than ( temp bool)
|
||||
0:43 Convert uint to float ( temp float)
|
||||
0:43 'i' ( temp uint)
|
||||
0:43 Constant:
|
||||
0:43 0.000000
|
||||
0:43 true case
|
||||
0:43 Constant:
|
||||
0:43 43981 (const int)
|
||||
0:43 false case
|
||||
0:43 Constant:
|
||||
0:43 48346 (const int)
|
||||
0:45 Branch: Return with expression
|
||||
0:44 add ( temp 4-component vector of float)
|
||||
0:44 add ( temp 4-component vector of float)
|
||||
0:44 add ( temp 4-component vector of float)
|
||||
0:44 add ( temp 4-component vector of float)
|
||||
0:44 vector-scale ( temp 4-component vector of float)
|
||||
0:44 Convert int to float ( temp float)
|
||||
0:44 'e' ( temp int)
|
||||
0:44 'ret' ( temp 4-component vector of float)
|
||||
0:44 'f' ( temp 4-component vector of float)
|
||||
0:44 Function Call: vectorCond( ( temp 4-component vector of float)
|
||||
0:44 Function Call: scalarCond( ( temp 4-component vector of float)
|
||||
0:45 Construct vec4 ( temp 4-component vector of float)
|
||||
0:45 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float)
|
||||
0:45 Constant:
|
||||
0:45 true (const bool)
|
||||
0:45 false (const bool)
|
||||
0:45 Constant:
|
||||
0:45 1.000000
|
||||
0:45 2.000000
|
||||
0:45 Constant:
|
||||
0:45 3.000000
|
||||
0:45 4.000000
|
||||
0:45 Constant:
|
||||
0:45 10.000000
|
||||
0:45 Constant:
|
||||
0:45 10.000000
|
||||
0:27 Function Definition: PixelShaderFunction( ( temp void)
|
||||
0:27 Function Parameters:
|
||||
0:? Sequence
|
||||
@ -479,33 +544,98 @@ gl_FragCoord origin is upper left
|
||||
0:39 Convert int to float ( temp float)
|
||||
0:39 'd' ( temp int)
|
||||
0:39 'input' ( in 4-component vector of float)
|
||||
0:41 Branch: Return with expression
|
||||
0:40 add ( temp 4-component vector of float)
|
||||
0:40 add ( temp 4-component vector of float)
|
||||
0:40 add ( temp 4-component vector of float)
|
||||
0:40 add ( temp 4-component vector of float)
|
||||
0:40 vector-scale ( temp 4-component vector of float)
|
||||
0:40 Convert int to float ( temp float)
|
||||
0:40 'e' ( temp int)
|
||||
0:40 'ret' ( temp 4-component vector of float)
|
||||
0:40 'f' ( temp 4-component vector of float)
|
||||
0:40 Function Call: vectorCond( ( temp 4-component vector of float)
|
||||
0:40 Function Call: scalarCond( ( temp 4-component vector of float)
|
||||
0:41 Construct vec4 ( temp 4-component vector of float)
|
||||
0:41 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float)
|
||||
0:40 Sequence
|
||||
0:40 move second child to first child ( temp uint)
|
||||
0:40 'g' ( temp uint)
|
||||
0:40 Test condition and select ( temp uint): no shortcircuit
|
||||
0:40 Condition
|
||||
0:40 Compare Greater Than ( temp bool)
|
||||
0:40 Convert int to float ( temp float)
|
||||
0:40 'd' ( temp int)
|
||||
0:40 Constant:
|
||||
0:40 0.000000
|
||||
0:40 true case
|
||||
0:40 Constant:
|
||||
0:40 21 (const uint)
|
||||
0:40 false case
|
||||
0:40 Constant:
|
||||
0:40 0 (const uint)
|
||||
0:41 Sequence
|
||||
0:41 move second child to first child ( temp uint)
|
||||
0:41 'h' ( temp uint)
|
||||
0:41 Test condition and select ( temp uint): no shortcircuit
|
||||
0:41 Condition
|
||||
0:41 Compare Greater Than ( temp bool)
|
||||
0:41 Convert uint to float ( temp float)
|
||||
0:41 'g' ( temp uint)
|
||||
0:41 Constant:
|
||||
0:41 true (const bool)
|
||||
0:41 false (const bool)
|
||||
0:41 Constant:
|
||||
0:41 1.000000
|
||||
0:41 2.000000
|
||||
0:41 Constant:
|
||||
0:41 3.000000
|
||||
0:41 4.000000
|
||||
0:41 0.000000
|
||||
0:41 true case
|
||||
0:41 Constant:
|
||||
0:41 10.000000
|
||||
0:41 63 (const uint)
|
||||
0:41 false case
|
||||
0:41 Constant:
|
||||
0:41 10.000000
|
||||
0:41 0 (const uint)
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child ( temp uint)
|
||||
0:42 'i' ( temp uint)
|
||||
0:42 Test condition and select ( temp uint): no shortcircuit
|
||||
0:42 Condition
|
||||
0:42 Compare Greater Than ( temp bool)
|
||||
0:42 Convert uint to float ( temp float)
|
||||
0:42 'h' ( temp uint)
|
||||
0:42 Constant:
|
||||
0:42 0.000000
|
||||
0:42 true case
|
||||
0:42 Constant:
|
||||
0:42 5 (const uint)
|
||||
0:42 false case
|
||||
0:42 Constant:
|
||||
0:42 1 (const uint)
|
||||
0:43 Sequence
|
||||
0:43 move second child to first child ( temp uint)
|
||||
0:43 'j' ( temp uint)
|
||||
0:43 Convert int to uint ( temp uint)
|
||||
0:43 Test condition and select ( temp int): no shortcircuit
|
||||
0:43 Condition
|
||||
0:43 Compare Greater Than ( temp bool)
|
||||
0:43 Convert uint to float ( temp float)
|
||||
0:43 'i' ( temp uint)
|
||||
0:43 Constant:
|
||||
0:43 0.000000
|
||||
0:43 true case
|
||||
0:43 Constant:
|
||||
0:43 43981 (const int)
|
||||
0:43 false case
|
||||
0:43 Constant:
|
||||
0:43 48346 (const int)
|
||||
0:45 Branch: Return with expression
|
||||
0:44 add ( temp 4-component vector of float)
|
||||
0:44 add ( temp 4-component vector of float)
|
||||
0:44 add ( temp 4-component vector of float)
|
||||
0:44 add ( temp 4-component vector of float)
|
||||
0:44 vector-scale ( temp 4-component vector of float)
|
||||
0:44 Convert int to float ( temp float)
|
||||
0:44 'e' ( temp int)
|
||||
0:44 'ret' ( temp 4-component vector of float)
|
||||
0:44 'f' ( temp 4-component vector of float)
|
||||
0:44 Function Call: vectorCond( ( temp 4-component vector of float)
|
||||
0:44 Function Call: scalarCond( ( temp 4-component vector of float)
|
||||
0:45 Construct vec4 ( temp 4-component vector of float)
|
||||
0:45 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float)
|
||||
0:45 Constant:
|
||||
0:45 true (const bool)
|
||||
0:45 false (const bool)
|
||||
0:45 Constant:
|
||||
0:45 1.000000
|
||||
0:45 2.000000
|
||||
0:45 Constant:
|
||||
0:45 3.000000
|
||||
0:45 4.000000
|
||||
0:45 Constant:
|
||||
0:45 10.000000
|
||||
0:45 Constant:
|
||||
0:45 10.000000
|
||||
0:27 Function Definition: PixelShaderFunction( ( temp void)
|
||||
0:27 Function Parameters:
|
||||
0:? Sequence
|
||||
@ -523,12 +653,12 @@ gl_FragCoord origin is upper left
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 206
|
||||
// Id's are bound by 233
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 199 202
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 226 229
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source HLSL 500
|
||||
Name 4 "PixelShaderFunction"
|
||||
@ -555,13 +685,17 @@ gl_FragCoord origin is upper left
|
||||
Name 117 "ret"
|
||||
Name 137 "e"
|
||||
Name 150 "f"
|
||||
Name 186 "param"
|
||||
Name 187 "param"
|
||||
Name 188 "param"
|
||||
Name 197 "input"
|
||||
Name 199 "input"
|
||||
Name 202 "@entryPointOutput"
|
||||
Name 203 "param"
|
||||
Name 169 "g"
|
||||
Name 175 "h"
|
||||
Name 181 "i"
|
||||
Name 187 "j"
|
||||
Name 213 "param"
|
||||
Name 214 "param"
|
||||
Name 215 "param"
|
||||
Name 224 "input"
|
||||
Name 226 "input"
|
||||
Name 229 "@entryPointOutput"
|
||||
Name 230 "param"
|
||||
MemberDecorate 29($Global) 0 Offset 0
|
||||
MemberDecorate 29($Global) 1 Offset 16
|
||||
MemberDecorate 29($Global) 2 Offset 32
|
||||
@ -570,8 +704,8 @@ gl_FragCoord origin is upper left
|
||||
Decorate 29($Global) Block
|
||||
Decorate 31 DescriptorSet 0
|
||||
Decorate 31 Binding 0
|
||||
Decorate 199(input) Location 0
|
||||
Decorate 202(@entryPointOutput) Location 0
|
||||
Decorate 226(input) Location 0
|
||||
Decorate 229(@entryPointOutput) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
@ -611,29 +745,35 @@ gl_FragCoord origin is upper left
|
||||
148: 32(int) Constant 11
|
||||
151: TypePointer Function 6(float)
|
||||
154: 139(int) Constant 1
|
||||
178: 13(bool) ConstantTrue
|
||||
179: 13(bool) ConstantFalse
|
||||
180: 14(bvec2) ConstantComposite 178 179
|
||||
181: 6(float) Constant 1073741824
|
||||
182: 16(fvec2) ConstantComposite 96 181
|
||||
183: 6(float) Constant 1077936128
|
||||
184: 6(float) Constant 1082130432
|
||||
185: 16(fvec2) ConstantComposite 183 184
|
||||
190: 6(float) Constant 1092616192
|
||||
198: TypePointer Input 7(fvec4)
|
||||
199(input): 198(ptr) Variable Input
|
||||
201: TypePointer Output 7(fvec4)
|
||||
202(@entryPointOutput): 201(ptr) Variable Output
|
||||
168: TypePointer Function 139(int)
|
||||
173: 139(int) Constant 21
|
||||
179: 139(int) Constant 63
|
||||
185: 139(int) Constant 5
|
||||
191: 32(int) Constant 43981
|
||||
192: 32(int) Constant 48346
|
||||
205: 13(bool) ConstantTrue
|
||||
206: 13(bool) ConstantFalse
|
||||
207: 14(bvec2) ConstantComposite 205 206
|
||||
208: 6(float) Constant 1073741824
|
||||
209: 16(fvec2) ConstantComposite 96 208
|
||||
210: 6(float) Constant 1077936128
|
||||
211: 6(float) Constant 1082130432
|
||||
212: 16(fvec2) ConstantComposite 210 211
|
||||
217: 6(float) Constant 1092616192
|
||||
225: TypePointer Input 7(fvec4)
|
||||
226(input): 225(ptr) Variable Input
|
||||
228: TypePointer Output 7(fvec4)
|
||||
229(@entryPointOutput): 228(ptr) Variable Output
|
||||
4(PixelShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
197(input): 24(ptr) Variable Function
|
||||
203(param): 24(ptr) Variable Function
|
||||
200: 7(fvec4) Load 199(input)
|
||||
Store 197(input) 200
|
||||
204: 7(fvec4) Load 197(input)
|
||||
Store 203(param) 204
|
||||
205: 7(fvec4) FunctionCall 27(@PixelShaderFunction(vf4;) 203(param)
|
||||
Store 202(@entryPointOutput) 205
|
||||
224(input): 24(ptr) Variable Function
|
||||
230(param): 24(ptr) Variable Function
|
||||
227: 7(fvec4) Load 226(input)
|
||||
Store 224(input) 227
|
||||
231: 7(fvec4) Load 224(input)
|
||||
Store 230(param) 231
|
||||
232: 7(fvec4) FunctionCall 27(@PixelShaderFunction(vf4;) 230(param)
|
||||
Store 229(@entryPointOutput) 232
|
||||
Return
|
||||
FunctionEnd
|
||||
9(vectorCond(): 7(fvec4) Function None 8
|
||||
@ -720,9 +860,13 @@ gl_FragCoord origin is upper left
|
||||
117(ret): 24(ptr) Variable Function
|
||||
137(e): 109(ptr) Variable Function
|
||||
150(f): 24(ptr) Variable Function
|
||||
186(param): 15(ptr) Variable Function
|
||||
187(param): 17(ptr) Variable Function
|
||||
188(param): 17(ptr) Variable Function
|
||||
169(g): 168(ptr) Variable Function
|
||||
175(h): 168(ptr) Variable Function
|
||||
181(i): 168(ptr) Variable Function
|
||||
187(j): 168(ptr) Variable Function
|
||||
213(param): 15(ptr) Variable Function
|
||||
214(param): 17(ptr) Variable Function
|
||||
215(param): 17(ptr) Variable Function
|
||||
Store 110(a) 111
|
||||
Store 112(b) 113
|
||||
Store 114(c) 115
|
||||
@ -776,23 +920,44 @@ gl_FragCoord origin is upper left
|
||||
166: 43(bvec4) CompositeConstruct 157 157 157 157
|
||||
167: 7(fvec4) Select 166 161 165
|
||||
Store 150(f) 167
|
||||
168: 32(int) Load 137(e)
|
||||
169: 6(float) ConvertSToF 168
|
||||
170: 7(fvec4) Load 117(ret)
|
||||
171: 7(fvec4) VectorTimesScalar 170 169
|
||||
172: 7(fvec4) Load 150(f)
|
||||
173: 7(fvec4) FAdd 171 172
|
||||
174: 7(fvec4) FunctionCall 9(vectorCond()
|
||||
175: 7(fvec4) FAdd 173 174
|
||||
176: 7(fvec4) FunctionCall 11(scalarCond()
|
||||
177: 7(fvec4) FAdd 175 176
|
||||
Store 186(param) 180
|
||||
Store 187(param) 182
|
||||
Store 188(param) 185
|
||||
189: 16(fvec2) FunctionCall 22(fbSelect(vb2;vf2;vf2;) 186(param) 187(param) 188(param)
|
||||
191: 6(float) CompositeExtract 189 0
|
||||
192: 6(float) CompositeExtract 189 1
|
||||
193: 7(fvec4) CompositeConstruct 191 192 190 190
|
||||
194: 7(fvec4) FAdd 177 193
|
||||
ReturnValue 194
|
||||
170: 32(int) Load 116(d)
|
||||
171: 6(float) ConvertSToF 170
|
||||
172: 13(bool) FOrdGreaterThan 171 44
|
||||
174: 139(int) Select 172 173 140
|
||||
Store 169(g) 174
|
||||
176: 139(int) Load 169(g)
|
||||
177: 6(float) ConvertUToF 176
|
||||
178: 13(bool) FOrdGreaterThan 177 44
|
||||
180: 139(int) Select 178 179 140
|
||||
Store 175(h) 180
|
||||
182: 139(int) Load 175(h)
|
||||
183: 6(float) ConvertUToF 182
|
||||
184: 13(bool) FOrdGreaterThan 183 44
|
||||
186: 139(int) Select 184 185 154
|
||||
Store 181(i) 186
|
||||
188: 139(int) Load 181(i)
|
||||
189: 6(float) ConvertUToF 188
|
||||
190: 13(bool) FOrdGreaterThan 189 44
|
||||
193: 32(int) Select 190 191 192
|
||||
194: 139(int) Bitcast 193
|
||||
Store 187(j) 194
|
||||
195: 32(int) Load 137(e)
|
||||
196: 6(float) ConvertSToF 195
|
||||
197: 7(fvec4) Load 117(ret)
|
||||
198: 7(fvec4) VectorTimesScalar 197 196
|
||||
199: 7(fvec4) Load 150(f)
|
||||
200: 7(fvec4) FAdd 198 199
|
||||
201: 7(fvec4) FunctionCall 9(vectorCond()
|
||||
202: 7(fvec4) FAdd 200 201
|
||||
203: 7(fvec4) FunctionCall 11(scalarCond()
|
||||
204: 7(fvec4) FAdd 202 203
|
||||
Store 213(param) 207
|
||||
Store 214(param) 209
|
||||
Store 215(param) 212
|
||||
216: 16(fvec2) FunctionCall 22(fbSelect(vb2;vf2;vf2;) 213(param) 214(param) 215(param)
|
||||
218: 6(float) CompositeExtract 216 0
|
||||
219: 6(float) CompositeExtract 216 1
|
||||
220: 7(fvec4) CompositeConstruct 218 219 217 217
|
||||
221: 7(fvec4) FAdd 204 220
|
||||
ReturnValue 221
|
||||
FunctionEnd
|
||||
|
606
Test/baseResults/hlsl.emptystructreturn.tesc.out
Normal file
606
Test/baseResults/hlsl.emptystructreturn.tesc.out
Normal file
@ -0,0 +1,606 @@
|
||||
hlsl.emptystructreturn.tesc
|
||||
Shader version: 500
|
||||
vertices = 3
|
||||
vertex spacing = equal_spacing
|
||||
triangle order = cw
|
||||
0:? Sequence
|
||||
0:16 Function Definition: blob(struct-HullInputType-vf41[3]; ( temp void)
|
||||
0:16 Function Parameters:
|
||||
0:16 'patch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:20 Function Definition: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:20 Function Parameters:
|
||||
0:20 'inputPatch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:20 'patchId' ( in uint)
|
||||
0:? Sequence
|
||||
0:24 move second child to first child ( temp float)
|
||||
0:24 direct index ( temp float)
|
||||
0:24 edges: direct index for structure ( temp 3-element array of float)
|
||||
0:24 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 2.000000
|
||||
0:25 move second child to first child ( temp float)
|
||||
0:25 direct index ( temp float)
|
||||
0:25 edges: direct index for structure ( temp 3-element array of float)
|
||||
0:25 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Constant:
|
||||
0:25 2.000000
|
||||
0:26 move second child to first child ( temp float)
|
||||
0:26 direct index ( temp float)
|
||||
0:26 edges: direct index for structure ( temp 3-element array of float)
|
||||
0:26 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 2 (const int)
|
||||
0:26 Constant:
|
||||
0:26 2.000000
|
||||
0:29 move second child to first child ( temp float)
|
||||
0:29 inside: direct index for structure ( temp float)
|
||||
0:29 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Constant:
|
||||
0:29 2.000000
|
||||
0:31 Branch: Return with expression
|
||||
0:31 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:42 Function Definition: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{})
|
||||
0:42 Function Parameters:
|
||||
0:42 'stage_input' ( in structure{})
|
||||
0:42 'patch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:42 'pointId' ( in uint)
|
||||
0:42 'patchId' ( in uint)
|
||||
0:? Sequence
|
||||
0:44 Function Call: blob(struct-HullInputType-vf41[3]; ( temp void)
|
||||
0:44 'patch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:46 Branch: Return with expression
|
||||
0:46 'output' ( temp structure{})
|
||||
0:42 Function Definition: main( ( temp void)
|
||||
0:42 Function Parameters:
|
||||
0:? Sequence
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child ( temp structure{})
|
||||
0:? 'stage_input' ( temp structure{})
|
||||
0:? 'stage_input' ( in structure{})
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child ( temp 4-component vector of float)
|
||||
0:42 position: direct index for structure ( temp 4-component vector of float)
|
||||
0:42 direct index ( temp structure{ temp 4-component vector of float position})
|
||||
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:42 Constant:
|
||||
0:42 0 (const int)
|
||||
0:42 Constant:
|
||||
0:42 0 (const int)
|
||||
0:42 direct index ( in 4-component vector of float Position)
|
||||
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||
0:42 Constant:
|
||||
0:42 0 (const int)
|
||||
0:42 move second child to first child ( temp 4-component vector of float)
|
||||
0:42 position: direct index for structure ( temp 4-component vector of float)
|
||||
0:42 direct index ( temp structure{ temp 4-component vector of float position})
|
||||
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:42 Constant:
|
||||
0:42 1 (const int)
|
||||
0:42 Constant:
|
||||
0:42 0 (const int)
|
||||
0:42 direct index ( in 4-component vector of float Position)
|
||||
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||
0:42 Constant:
|
||||
0:42 1 (const int)
|
||||
0:42 move second child to first child ( temp 4-component vector of float)
|
||||
0:42 position: direct index for structure ( temp 4-component vector of float)
|
||||
0:42 direct index ( temp structure{ temp 4-component vector of float position})
|
||||
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:42 Constant:
|
||||
0:42 2 (const int)
|
||||
0:42 Constant:
|
||||
0:42 0 (const int)
|
||||
0:42 direct index ( in 4-component vector of float Position)
|
||||
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||
0:42 Constant:
|
||||
0:42 2 (const int)
|
||||
0:42 move second child to first child ( temp uint)
|
||||
0:? 'pointId' ( temp uint)
|
||||
0:? 'pointId' ( in uint InvocationID)
|
||||
0:42 move second child to first child ( temp uint)
|
||||
0:? 'patchId' ( temp uint)
|
||||
0:? 'patchId' ( in uint PrimitiveID)
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child ( temp structure{})
|
||||
0:42 indirect index ( out structure{})
|
||||
0:? '@entryPointOutput' ( out 3-element array of structure{})
|
||||
0:? 'pointId' ( in uint InvocationID)
|
||||
0:42 Function Call: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{})
|
||||
0:? 'stage_input' ( temp structure{})
|
||||
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:? 'pointId' ( temp uint)
|
||||
0:? 'patchId' ( temp uint)
|
||||
0:? Barrier ( temp void)
|
||||
0:? Test condition and select ( temp void)
|
||||
0:? Condition
|
||||
0:? Compare Equal ( temp bool)
|
||||
0:? 'pointId' ( in uint InvocationID)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? true case
|
||||
0:? Sequence
|
||||
0:? move second child to first child ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? Function Call: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:? 'patchId' ( in uint PrimitiveID)
|
||||
0:? Sequence
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? direct index ( temp float)
|
||||
0:? edges: direct index for structure ( temp 3-element array of float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? direct index ( temp float)
|
||||
0:? edges: direct index for structure ( temp 3-element array of float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 2 (const int)
|
||||
0:? direct index ( temp float)
|
||||
0:? edges: direct index for structure ( temp 3-element array of float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Constant:
|
||||
0:? 2 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelInner)
|
||||
0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? inside: direct index for structure ( temp float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||
0:? 'pointId' ( in uint InvocationID)
|
||||
0:? 'patchId' ( in uint PrimitiveID)
|
||||
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
|
||||
|
||||
|
||||
Linked tessellation control stage:
|
||||
|
||||
|
||||
Shader version: 500
|
||||
vertices = 3
|
||||
vertex spacing = equal_spacing
|
||||
triangle order = cw
|
||||
0:? Sequence
|
||||
0:16 Function Definition: blob(struct-HullInputType-vf41[3]; ( temp void)
|
||||
0:16 Function Parameters:
|
||||
0:16 'patch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:20 Function Definition: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:20 Function Parameters:
|
||||
0:20 'inputPatch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:20 'patchId' ( in uint)
|
||||
0:? Sequence
|
||||
0:24 move second child to first child ( temp float)
|
||||
0:24 direct index ( temp float)
|
||||
0:24 edges: direct index for structure ( temp 3-element array of float)
|
||||
0:24 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 2.000000
|
||||
0:25 move second child to first child ( temp float)
|
||||
0:25 direct index ( temp float)
|
||||
0:25 edges: direct index for structure ( temp 3-element array of float)
|
||||
0:25 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Constant:
|
||||
0:25 2.000000
|
||||
0:26 move second child to first child ( temp float)
|
||||
0:26 direct index ( temp float)
|
||||
0:26 edges: direct index for structure ( temp 3-element array of float)
|
||||
0:26 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 2 (const int)
|
||||
0:26 Constant:
|
||||
0:26 2.000000
|
||||
0:29 move second child to first child ( temp float)
|
||||
0:29 inside: direct index for structure ( temp float)
|
||||
0:29 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Constant:
|
||||
0:29 2.000000
|
||||
0:31 Branch: Return with expression
|
||||
0:31 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:42 Function Definition: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{})
|
||||
0:42 Function Parameters:
|
||||
0:42 'stage_input' ( in structure{})
|
||||
0:42 'patch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:42 'pointId' ( in uint)
|
||||
0:42 'patchId' ( in uint)
|
||||
0:? Sequence
|
||||
0:44 Function Call: blob(struct-HullInputType-vf41[3]; ( temp void)
|
||||
0:44 'patch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:46 Branch: Return with expression
|
||||
0:46 'output' ( temp structure{})
|
||||
0:42 Function Definition: main( ( temp void)
|
||||
0:42 Function Parameters:
|
||||
0:? Sequence
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child ( temp structure{})
|
||||
0:? 'stage_input' ( temp structure{})
|
||||
0:? 'stage_input' ( in structure{})
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child ( temp 4-component vector of float)
|
||||
0:42 position: direct index for structure ( temp 4-component vector of float)
|
||||
0:42 direct index ( temp structure{ temp 4-component vector of float position})
|
||||
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:42 Constant:
|
||||
0:42 0 (const int)
|
||||
0:42 Constant:
|
||||
0:42 0 (const int)
|
||||
0:42 direct index ( in 4-component vector of float Position)
|
||||
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||
0:42 Constant:
|
||||
0:42 0 (const int)
|
||||
0:42 move second child to first child ( temp 4-component vector of float)
|
||||
0:42 position: direct index for structure ( temp 4-component vector of float)
|
||||
0:42 direct index ( temp structure{ temp 4-component vector of float position})
|
||||
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:42 Constant:
|
||||
0:42 1 (const int)
|
||||
0:42 Constant:
|
||||
0:42 0 (const int)
|
||||
0:42 direct index ( in 4-component vector of float Position)
|
||||
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||
0:42 Constant:
|
||||
0:42 1 (const int)
|
||||
0:42 move second child to first child ( temp 4-component vector of float)
|
||||
0:42 position: direct index for structure ( temp 4-component vector of float)
|
||||
0:42 direct index ( temp structure{ temp 4-component vector of float position})
|
||||
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:42 Constant:
|
||||
0:42 2 (const int)
|
||||
0:42 Constant:
|
||||
0:42 0 (const int)
|
||||
0:42 direct index ( in 4-component vector of float Position)
|
||||
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||
0:42 Constant:
|
||||
0:42 2 (const int)
|
||||
0:42 move second child to first child ( temp uint)
|
||||
0:? 'pointId' ( temp uint)
|
||||
0:? 'pointId' ( in uint InvocationID)
|
||||
0:42 move second child to first child ( temp uint)
|
||||
0:? 'patchId' ( temp uint)
|
||||
0:? 'patchId' ( in uint PrimitiveID)
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child ( temp structure{})
|
||||
0:42 indirect index ( out structure{})
|
||||
0:? '@entryPointOutput' ( out 3-element array of structure{})
|
||||
0:? 'pointId' ( in uint InvocationID)
|
||||
0:42 Function Call: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{})
|
||||
0:? 'stage_input' ( temp structure{})
|
||||
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:? 'pointId' ( temp uint)
|
||||
0:? 'patchId' ( temp uint)
|
||||
0:? Barrier ( temp void)
|
||||
0:? Test condition and select ( temp void)
|
||||
0:? Condition
|
||||
0:? Compare Equal ( temp bool)
|
||||
0:? 'pointId' ( in uint InvocationID)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? true case
|
||||
0:? Sequence
|
||||
0:? move second child to first child ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? Function Call: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||
0:? 'patchId' ( in uint PrimitiveID)
|
||||
0:? Sequence
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? direct index ( temp float)
|
||||
0:? edges: direct index for structure ( temp 3-element array of float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? direct index ( temp float)
|
||||
0:? edges: direct index for structure ( temp 3-element array of float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 2 (const int)
|
||||
0:? direct index ( temp float)
|
||||
0:? edges: direct index for structure ( temp 3-element array of float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Constant:
|
||||
0:? 2 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelInner)
|
||||
0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? inside: direct index for structure ( temp float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||
0:? 'pointId' ( in uint InvocationID)
|
||||
0:? 'patchId' ( in uint PrimitiveID)
|
||||
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
|
||||
|
||||
Validation failed
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 132
|
||||
|
||||
Capability Tessellation
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint TessellationControl 4 "main" 65 79 82 115 128
|
||||
ExecutionMode 4 OutputVertices 3
|
||||
ExecutionMode 4 Triangles
|
||||
ExecutionMode 4 SpacingEqual
|
||||
ExecutionMode 4 VertexOrderCw
|
||||
Source HLSL 500
|
||||
Name 4 "main"
|
||||
Name 8 "HullInputType"
|
||||
MemberName 8(HullInputType) 0 "position"
|
||||
Name 15 "blob(struct-HullInputType-vf41[3];"
|
||||
Name 14 "patch"
|
||||
Name 19 "ConstantOutputType"
|
||||
MemberName 19(ConstantOutputType) 0 "edges"
|
||||
MemberName 19(ConstantOutputType) 1 "inside"
|
||||
Name 23 "ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1;"
|
||||
Name 21 "inputPatch"
|
||||
Name 22 "patchId"
|
||||
Name 25 "EmptyStruct"
|
||||
Name 27 "HullOutputType"
|
||||
Name 33 "@main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1;"
|
||||
Name 29 "stage_input"
|
||||
Name 30 "patch"
|
||||
Name 31 "pointId"
|
||||
Name 32 "patchId"
|
||||
Name 36 "output"
|
||||
Name 50 "param"
|
||||
Name 54 "output"
|
||||
Name 58 "stage_input"
|
||||
Name 60 "stage_input"
|
||||
Name 62 "patch"
|
||||
Name 65 "patch.position"
|
||||
Name 77 "pointId"
|
||||
Name 79 "pointId"
|
||||
Name 81 "patchId"
|
||||
Name 82 "patchId"
|
||||
Name 86 "@entryPointOutput"
|
||||
Name 88 "param"
|
||||
Name 90 "param"
|
||||
Name 92 "param"
|
||||
Name 94 "param"
|
||||
Name 107 "@patchConstantResult"
|
||||
Name 108 "param"
|
||||
Name 110 "param"
|
||||
Name 115 "@patchConstantOutput.edges"
|
||||
Name 128 "@patchConstantOutput.inside"
|
||||
Decorate 65(patch.position) BuiltIn Position
|
||||
Decorate 79(pointId) BuiltIn InvocationId
|
||||
Decorate 82(patchId) BuiltIn PrimitiveId
|
||||
Decorate 115(@patchConstantOutput.edges) Patch
|
||||
Decorate 115(@patchConstantOutput.edges) BuiltIn TessLevelOuter
|
||||
Decorate 128(@patchConstantOutput.inside) Patch
|
||||
Decorate 128(@patchConstantOutput.inside) BuiltIn TessLevelInner
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8(HullInputType): TypeStruct 7(fvec4)
|
||||
9: TypeInt 32 0
|
||||
10: 9(int) Constant 3
|
||||
11: TypeArray 8(HullInputType) 10
|
||||
12: TypePointer Function 11
|
||||
13: TypeFunction 2 12(ptr)
|
||||
17: TypePointer Function 9(int)
|
||||
18: TypeArray 6(float) 10
|
||||
19(ConstantOutputType): TypeStruct 18 6(float)
|
||||
20: TypeFunction 19(ConstantOutputType) 12(ptr) 17(ptr)
|
||||
25(EmptyStruct): TypeStruct
|
||||
26: TypePointer Function 25(EmptyStruct)
|
||||
27(HullOutputType): TypeStruct
|
||||
28: TypeFunction 27(HullOutputType) 26(ptr) 12(ptr) 17(ptr) 17(ptr)
|
||||
35: TypePointer Function 19(ConstantOutputType)
|
||||
37: TypeInt 32 1
|
||||
38: 37(int) Constant 0
|
||||
39: 6(float) Constant 1073741824
|
||||
40: TypePointer Function 6(float)
|
||||
42: 37(int) Constant 1
|
||||
44: 37(int) Constant 2
|
||||
53: TypePointer Function 27(HullOutputType)
|
||||
59: TypePointer Input 25(EmptyStruct)
|
||||
60(stage_input): 59(ptr) Variable Input
|
||||
63: TypeArray 7(fvec4) 10
|
||||
64: TypePointer Input 63
|
||||
65(patch.position): 64(ptr) Variable Input
|
||||
66: TypePointer Input 7(fvec4)
|
||||
69: TypePointer Function 7(fvec4)
|
||||
78: TypePointer Input 9(int)
|
||||
79(pointId): 78(ptr) Variable Input
|
||||
82(patchId): 78(ptr) Variable Input
|
||||
84: TypeArray 27(HullOutputType) 10
|
||||
85: TypePointer Output 84
|
||||
86(@entryPointOutput): 85(ptr) Variable Output
|
||||
97: TypePointer Output 27(HullOutputType)
|
||||
99: 9(int) Constant 2
|
||||
100: 9(int) Constant 4
|
||||
101: 9(int) Constant 0
|
||||
103: TypeBool
|
||||
113: TypeArray 6(float) 100
|
||||
114: TypePointer Output 113
|
||||
115(@patchConstantOutput.edges): 114(ptr) Variable Output
|
||||
118: TypePointer Output 6(float)
|
||||
126: TypeArray 6(float) 99
|
||||
127: TypePointer Output 126
|
||||
128(@patchConstantOutput.inside): 127(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
58(stage_input): 26(ptr) Variable Function
|
||||
62(patch): 12(ptr) Variable Function
|
||||
77(pointId): 17(ptr) Variable Function
|
||||
81(patchId): 17(ptr) Variable Function
|
||||
88(param): 26(ptr) Variable Function
|
||||
90(param): 12(ptr) Variable Function
|
||||
92(param): 17(ptr) Variable Function
|
||||
94(param): 17(ptr) Variable Function
|
||||
107(@patchConstantResult): 35(ptr) Variable Function
|
||||
108(param): 12(ptr) Variable Function
|
||||
110(param): 17(ptr) Variable Function
|
||||
61:25(EmptyStruct) Load 60(stage_input)
|
||||
Store 58(stage_input) 61
|
||||
67: 66(ptr) AccessChain 65(patch.position) 38
|
||||
68: 7(fvec4) Load 67
|
||||
70: 69(ptr) AccessChain 62(patch) 38 38
|
||||
Store 70 68
|
||||
71: 66(ptr) AccessChain 65(patch.position) 42
|
||||
72: 7(fvec4) Load 71
|
||||
73: 69(ptr) AccessChain 62(patch) 42 38
|
||||
Store 73 72
|
||||
74: 66(ptr) AccessChain 65(patch.position) 44
|
||||
75: 7(fvec4) Load 74
|
||||
76: 69(ptr) AccessChain 62(patch) 44 38
|
||||
Store 76 75
|
||||
80: 9(int) Load 79(pointId)
|
||||
Store 77(pointId) 80
|
||||
83: 9(int) Load 82(patchId)
|
||||
Store 81(patchId) 83
|
||||
87: 9(int) Load 79(pointId)
|
||||
89:25(EmptyStruct) Load 58(stage_input)
|
||||
Store 88(param) 89
|
||||
91: 11 Load 62(patch)
|
||||
Store 90(param) 91
|
||||
93: 9(int) Load 77(pointId)
|
||||
Store 92(param) 93
|
||||
95: 9(int) Load 81(patchId)
|
||||
Store 94(param) 95
|
||||
96:27(HullOutputType) FunctionCall 33(@main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1;) 88(param) 90(param) 92(param) 94(param)
|
||||
98: 97(ptr) AccessChain 86(@entryPointOutput) 87
|
||||
Store 98 96
|
||||
ControlBarrier 99 100 101
|
||||
102: 9(int) Load 79(pointId)
|
||||
104: 103(bool) IEqual 102 38
|
||||
SelectionMerge 106 None
|
||||
BranchConditional 104 105 106
|
||||
105: Label
|
||||
109: 11 Load 62(patch)
|
||||
Store 108(param) 109
|
||||
111: 9(int) Load 82(patchId)
|
||||
Store 110(param) 111
|
||||
112:19(ConstantOutputType) FunctionCall 23(ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1;) 108(param) 110(param)
|
||||
Store 107(@patchConstantResult) 112
|
||||
116: 40(ptr) AccessChain 107(@patchConstantResult) 38 38
|
||||
117: 6(float) Load 116
|
||||
119: 118(ptr) AccessChain 115(@patchConstantOutput.edges) 38
|
||||
Store 119 117
|
||||
120: 40(ptr) AccessChain 107(@patchConstantResult) 38 42
|
||||
121: 6(float) Load 120
|
||||
122: 118(ptr) AccessChain 115(@patchConstantOutput.edges) 42
|
||||
Store 122 121
|
||||
123: 40(ptr) AccessChain 107(@patchConstantResult) 38 44
|
||||
124: 6(float) Load 123
|
||||
125: 118(ptr) AccessChain 115(@patchConstantOutput.edges) 44
|
||||
Store 125 124
|
||||
129: 40(ptr) AccessChain 107(@patchConstantResult) 42
|
||||
130: 6(float) Load 129
|
||||
131: 118(ptr) AccessChain 128(@patchConstantOutput.inside) 38
|
||||
Store 131 130
|
||||
Branch 106
|
||||
106: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
15(blob(struct-HullInputType-vf41[3];): 2 Function None 13
|
||||
14(patch): 12(ptr) FunctionParameter
|
||||
16: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
23(ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1;):19(ConstantOutputType) Function None 20
|
||||
21(inputPatch): 12(ptr) FunctionParameter
|
||||
22(patchId): 17(ptr) FunctionParameter
|
||||
24: Label
|
||||
36(output): 35(ptr) Variable Function
|
||||
41: 40(ptr) AccessChain 36(output) 38 38
|
||||
Store 41 39
|
||||
43: 40(ptr) AccessChain 36(output) 38 42
|
||||
Store 43 39
|
||||
45: 40(ptr) AccessChain 36(output) 38 44
|
||||
Store 45 39
|
||||
46: 40(ptr) AccessChain 36(output) 42
|
||||
Store 46 39
|
||||
47:19(ConstantOutputType) Load 36(output)
|
||||
ReturnValue 47
|
||||
FunctionEnd
|
||||
33(@main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1;):27(HullOutputType) Function None 28
|
||||
29(stage_input): 26(ptr) FunctionParameter
|
||||
30(patch): 12(ptr) FunctionParameter
|
||||
31(pointId): 17(ptr) FunctionParameter
|
||||
32(patchId): 17(ptr) FunctionParameter
|
||||
34: Label
|
||||
50(param): 12(ptr) Variable Function
|
||||
54(output): 53(ptr) Variable Function
|
||||
51: 11 Load 30(patch)
|
||||
Store 50(param) 51
|
||||
52: 2 FunctionCall 15(blob(struct-HullInputType-vf41[3];) 50(param)
|
||||
55:27(HullOutputType) Load 54(output)
|
||||
ReturnValue 55
|
||||
FunctionEnd
|
@ -1,6 +1,6 @@
|
||||
hlsl.function.frag
|
||||
ERROR: 0:24: 'fun1' : unknown variable
|
||||
ERROR: 0:24: 'return' : type does not match, or is not convertible to, the function's return type
|
||||
ERROR: 0:29: 'fun1' : unknown variable
|
||||
ERROR: 0:29: 'return' : type does not match, or is not convertible to, the function's return type
|
||||
ERROR: 2 compilation errors. No code generated.
|
||||
|
||||
|
||||
@ -16,45 +16,63 @@ ERROR: node is still EOpNull!
|
||||
0:3 1.000000
|
||||
0:3 1.000000
|
||||
0:3 1.000000
|
||||
0:7 Function Definition: fun2(vf4; ( temp uint)
|
||||
0:7 Function Definition: fun2(vf4; ( temp 4-component vector of float)
|
||||
0:7 Function Parameters:
|
||||
0:7 'col' ( in 4-component vector of float)
|
||||
0:7 'col' ( const (read only) 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:8 Branch: Return with expression
|
||||
0:8 Constant:
|
||||
0:8 7 (const uint)
|
||||
0:12 Function Definition: fun4(u1;u1; ( temp 4-component vector of float)
|
||||
0:8 Construct vec4 ( temp 4-component vector of float)
|
||||
0:8 Comma ( temp float)
|
||||
0:8 Comma ( temp float)
|
||||
0:8 Comma ( temp float)
|
||||
0:8 Constant:
|
||||
0:8 1.000000
|
||||
0:8 Constant:
|
||||
0:8 2.000000
|
||||
0:8 Constant:
|
||||
0:8 3.000000
|
||||
0:8 Constant:
|
||||
0:8 4.000000
|
||||
0:12 Function Definition: fun3(vf4; ( temp uint)
|
||||
0:12 Function Parameters:
|
||||
0:12 'id1' ( in uint)
|
||||
0:12 'id2' ( uniform uint)
|
||||
0:12 'col' ( const (read only) 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:13 Branch: Return with expression
|
||||
0:13 Construct vec4 ( temp 4-component vector of float)
|
||||
0:13 Convert uint to float ( temp float)
|
||||
0:13 component-wise multiply ( temp uint)
|
||||
0:13 'id1' ( in uint)
|
||||
0:13 'id2' ( uniform uint)
|
||||
0:17 Function Definition: fun1(i1; ( temp 4-component vector of float)
|
||||
0:13 Constant:
|
||||
0:13 7 (const uint)
|
||||
0:17 Function Definition: fun4(u1;u1; ( temp 4-component vector of float)
|
||||
0:17 Function Parameters:
|
||||
0:17 'index' ( in int)
|
||||
0:17 'id1' ( in uint)
|
||||
0:17 'id2' ( uniform uint)
|
||||
0:? Sequence
|
||||
0:18 Sequence
|
||||
0:18 move second child to first child ( temp uint)
|
||||
0:18 'entityId' ( temp uint)
|
||||
0:18 Function Call: fun2(vf4; ( temp uint)
|
||||
0:18 Function Call: fun0( ( temp 4-component vector of float)
|
||||
0:19 Branch: Return with expression
|
||||
0:19 Function Call: fun4(u1;u1; ( temp 4-component vector of float)
|
||||
0:19 'entityId' ( temp uint)
|
||||
0:19 'entityId' ( temp uint)
|
||||
0:23 Function Definition: @main( ( temp int)
|
||||
0:23 Function Parameters:
|
||||
0:23 Function Definition: main( ( temp void)
|
||||
0:23 Function Parameters:
|
||||
0:18 Branch: Return with expression
|
||||
0:18 Construct vec4 ( temp 4-component vector of float)
|
||||
0:18 Convert uint to float ( temp float)
|
||||
0:18 component-wise multiply ( temp uint)
|
||||
0:18 'id1' ( in uint)
|
||||
0:18 'id2' ( uniform uint)
|
||||
0:22 Function Definition: fun1(i1; ( temp 4-component vector of float)
|
||||
0:22 Function Parameters:
|
||||
0:22 'index' ( in int)
|
||||
0:? Sequence
|
||||
0:23 move second child to first child ( temp int)
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp uint)
|
||||
0:23 'entityId' ( temp uint)
|
||||
0:23 Function Call: fun3(vf4; ( temp uint)
|
||||
0:23 Function Call: fun2(vf4; ( temp 4-component vector of float)
|
||||
0:23 Function Call: fun0( ( temp 4-component vector of float)
|
||||
0:24 Branch: Return with expression
|
||||
0:24 Function Call: fun4(u1;u1; ( temp 4-component vector of float)
|
||||
0:24 'entityId' ( temp uint)
|
||||
0:24 'entityId' ( temp uint)
|
||||
0:28 Function Definition: @main( ( temp int)
|
||||
0:28 Function Parameters:
|
||||
0:28 Function Definition: main( ( temp void)
|
||||
0:28 Function Parameters:
|
||||
0:? Sequence
|
||||
0:28 move second child to first child ( temp int)
|
||||
0:? '@entryPointOutput' (layout( location=0) out int)
|
||||
0:23 Function Call: @main( ( temp int)
|
||||
0:28 Function Call: @main( ( temp int)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out int)
|
||||
|
||||
@ -74,45 +92,63 @@ ERROR: node is still EOpNull!
|
||||
0:3 1.000000
|
||||
0:3 1.000000
|
||||
0:3 1.000000
|
||||
0:7 Function Definition: fun2(vf4; ( temp uint)
|
||||
0:7 Function Definition: fun2(vf4; ( temp 4-component vector of float)
|
||||
0:7 Function Parameters:
|
||||
0:7 'col' ( in 4-component vector of float)
|
||||
0:7 'col' ( const (read only) 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:8 Branch: Return with expression
|
||||
0:8 Constant:
|
||||
0:8 7 (const uint)
|
||||
0:12 Function Definition: fun4(u1;u1; ( temp 4-component vector of float)
|
||||
0:8 Construct vec4 ( temp 4-component vector of float)
|
||||
0:8 Comma ( temp float)
|
||||
0:8 Comma ( temp float)
|
||||
0:8 Comma ( temp float)
|
||||
0:8 Constant:
|
||||
0:8 1.000000
|
||||
0:8 Constant:
|
||||
0:8 2.000000
|
||||
0:8 Constant:
|
||||
0:8 3.000000
|
||||
0:8 Constant:
|
||||
0:8 4.000000
|
||||
0:12 Function Definition: fun3(vf4; ( temp uint)
|
||||
0:12 Function Parameters:
|
||||
0:12 'id1' ( in uint)
|
||||
0:12 'id2' ( uniform uint)
|
||||
0:12 'col' ( const (read only) 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:13 Branch: Return with expression
|
||||
0:13 Construct vec4 ( temp 4-component vector of float)
|
||||
0:13 Convert uint to float ( temp float)
|
||||
0:13 component-wise multiply ( temp uint)
|
||||
0:13 'id1' ( in uint)
|
||||
0:13 'id2' ( uniform uint)
|
||||
0:17 Function Definition: fun1(i1; ( temp 4-component vector of float)
|
||||
0:13 Constant:
|
||||
0:13 7 (const uint)
|
||||
0:17 Function Definition: fun4(u1;u1; ( temp 4-component vector of float)
|
||||
0:17 Function Parameters:
|
||||
0:17 'index' ( in int)
|
||||
0:17 'id1' ( in uint)
|
||||
0:17 'id2' ( uniform uint)
|
||||
0:? Sequence
|
||||
0:18 Sequence
|
||||
0:18 move second child to first child ( temp uint)
|
||||
0:18 'entityId' ( temp uint)
|
||||
0:18 Function Call: fun2(vf4; ( temp uint)
|
||||
0:18 Function Call: fun0( ( temp 4-component vector of float)
|
||||
0:19 Branch: Return with expression
|
||||
0:19 Function Call: fun4(u1;u1; ( temp 4-component vector of float)
|
||||
0:19 'entityId' ( temp uint)
|
||||
0:19 'entityId' ( temp uint)
|
||||
0:23 Function Definition: @main( ( temp int)
|
||||
0:23 Function Parameters:
|
||||
0:23 Function Definition: main( ( temp void)
|
||||
0:23 Function Parameters:
|
||||
0:18 Branch: Return with expression
|
||||
0:18 Construct vec4 ( temp 4-component vector of float)
|
||||
0:18 Convert uint to float ( temp float)
|
||||
0:18 component-wise multiply ( temp uint)
|
||||
0:18 'id1' ( in uint)
|
||||
0:18 'id2' ( uniform uint)
|
||||
0:22 Function Definition: fun1(i1; ( temp 4-component vector of float)
|
||||
0:22 Function Parameters:
|
||||
0:22 'index' ( in int)
|
||||
0:? Sequence
|
||||
0:23 move second child to first child ( temp int)
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp uint)
|
||||
0:23 'entityId' ( temp uint)
|
||||
0:23 Function Call: fun3(vf4; ( temp uint)
|
||||
0:23 Function Call: fun2(vf4; ( temp 4-component vector of float)
|
||||
0:23 Function Call: fun0( ( temp 4-component vector of float)
|
||||
0:24 Branch: Return with expression
|
||||
0:24 Function Call: fun4(u1;u1; ( temp 4-component vector of float)
|
||||
0:24 'entityId' ( temp uint)
|
||||
0:24 'entityId' ( temp uint)
|
||||
0:28 Function Definition: @main( ( temp int)
|
||||
0:28 Function Parameters:
|
||||
0:28 Function Definition: main( ( temp void)
|
||||
0:28 Function Parameters:
|
||||
0:? Sequence
|
||||
0:28 move second child to first child ( temp int)
|
||||
0:? '@entryPointOutput' (layout( location=0) out int)
|
||||
0:23 Function Call: @main( ( temp int)
|
||||
0:28 Function Call: @main( ( temp int)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out int)
|
||||
|
||||
|
@ -31,29 +31,20 @@ gl_FragCoord origin is upper left
|
||||
0:20 10.000000
|
||||
0:22 Constant:
|
||||
0:22 10.000000
|
||||
0:25 Sequence
|
||||
0:25 move second child to first child ( temp float)
|
||||
0:25 'n' ( temp float)
|
||||
0:25 Constant:
|
||||
0:25 0.000000
|
||||
0:26 Sequence
|
||||
0:26 move second child to first child ( temp 8-element array of 3-component vector of float)
|
||||
0:26 'a' ( const (read only) 8-element array of 3-component vector of float)
|
||||
0:26 Construct vec3 ( temp 8-element array of 3-component vector of float)
|
||||
0:27 vector-scale ( temp 3-component vector of float)
|
||||
0:27 Constant:
|
||||
0:27 0.577350
|
||||
0:27 0.577350
|
||||
0:27 0.577350
|
||||
0:27 add second child into first child ( temp float)
|
||||
0:27 'n' ( temp float)
|
||||
0:27 Constant:
|
||||
0:27 1.000000
|
||||
0:26 move second child to first child ( temp float)
|
||||
0:26 'n' ( temp float)
|
||||
0:26 Constant:
|
||||
0:26 0.000000
|
||||
0:27 Sequence
|
||||
0:27 move second child to first child ( temp 8-element array of 3-component vector of float)
|
||||
0:27 'a' ( const (read only) 8-element array of 3-component vector of float)
|
||||
0:27 Construct vec3 ( temp 8-element array of 3-component vector of float)
|
||||
0:28 vector-scale ( temp 3-component vector of float)
|
||||
0:28 Constant:
|
||||
0:28 -0.577350
|
||||
0:28 -0.577350
|
||||
0:28 -0.577350
|
||||
0:28 0.577350
|
||||
0:28 0.577350
|
||||
0:28 0.577350
|
||||
0:28 add second child into first child ( temp float)
|
||||
0:28 'n' ( temp float)
|
||||
0:28 Constant:
|
||||
@ -62,7 +53,7 @@ gl_FragCoord origin is upper left
|
||||
0:29 Constant:
|
||||
0:29 -0.577350
|
||||
0:29 -0.577350
|
||||
0:29 0.577350
|
||||
0:29 -0.577350
|
||||
0:29 add second child into first child ( temp float)
|
||||
0:29 'n' ( temp float)
|
||||
0:29 Constant:
|
||||
@ -70,8 +61,8 @@ gl_FragCoord origin is upper left
|
||||
0:30 vector-scale ( temp 3-component vector of float)
|
||||
0:30 Constant:
|
||||
0:30 -0.577350
|
||||
0:30 0.577350
|
||||
0:30 -0.577350
|
||||
0:30 0.577350
|
||||
0:30 add second child into first child ( temp float)
|
||||
0:30 'n' ( temp float)
|
||||
0:30 Constant:
|
||||
@ -80,16 +71,16 @@ gl_FragCoord origin is upper left
|
||||
0:31 Constant:
|
||||
0:31 -0.577350
|
||||
0:31 0.577350
|
||||
0:31 0.577350
|
||||
0:31 -0.577350
|
||||
0:31 add second child into first child ( temp float)
|
||||
0:31 'n' ( temp float)
|
||||
0:31 Constant:
|
||||
0:31 1.000000
|
||||
0:32 vector-scale ( temp 3-component vector of float)
|
||||
0:32 Constant:
|
||||
0:32 -0.577350
|
||||
0:32 0.577350
|
||||
0:32 0.577350
|
||||
0:32 -0.577350
|
||||
0:32 -0.577350
|
||||
0:32 add second child into first child ( temp float)
|
||||
0:32 'n' ( temp float)
|
||||
0:32 Constant:
|
||||
@ -98,7 +89,7 @@ gl_FragCoord origin is upper left
|
||||
0:33 Constant:
|
||||
0:33 0.577350
|
||||
0:33 -0.577350
|
||||
0:33 0.577350
|
||||
0:33 -0.577350
|
||||
0:33 add second child into first child ( temp float)
|
||||
0:33 'n' ( temp float)
|
||||
0:33 Constant:
|
||||
@ -106,38 +97,38 @@ gl_FragCoord origin is upper left
|
||||
0:34 vector-scale ( temp 3-component vector of float)
|
||||
0:34 Constant:
|
||||
0:34 0.577350
|
||||
0:34 0.577350
|
||||
0:34 -0.577350
|
||||
0:34 0.577350
|
||||
0:34 add second child into first child ( temp float)
|
||||
0:34 'n' ( temp float)
|
||||
0:34 Constant:
|
||||
0:34 1.000000
|
||||
0:36 Sequence
|
||||
0:36 move second child to first child ( temp structure{ temp 3-component vector of float a})
|
||||
0:36 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
|
||||
0:36 Construct structure ( temp structure{ temp 3-component vector of float a})
|
||||
0:36 vector-scale ( temp 3-component vector of float)
|
||||
0:36 Constant:
|
||||
0:36 -0.577350
|
||||
0:36 0.577350
|
||||
0:36 0.577350
|
||||
0:36 add second child into first child ( temp float)
|
||||
0:36 'n' ( temp float)
|
||||
0:36 Constant:
|
||||
0:36 1.000000
|
||||
0:38 Sequence
|
||||
0:38 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||
0:38 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||
0:38 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||
0:38 vector-scale ( temp 3-component vector of float)
|
||||
0:38 Constant:
|
||||
0:38 -0.577350
|
||||
0:38 0.577350
|
||||
0:38 0.577350
|
||||
0:38 add second child into first child ( temp float)
|
||||
0:38 'n' ( temp float)
|
||||
0:38 Constant:
|
||||
0:38 1.000000
|
||||
0:35 vector-scale ( temp 3-component vector of float)
|
||||
0:35 Constant:
|
||||
0:35 0.577350
|
||||
0:35 0.577350
|
||||
0:35 -0.577350
|
||||
0:35 add second child into first child ( temp float)
|
||||
0:35 'n' ( temp float)
|
||||
0:35 Constant:
|
||||
0:35 1.000000
|
||||
0:37 Sequence
|
||||
0:37 move second child to first child ( temp structure{ temp 3-component vector of float a})
|
||||
0:37 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
|
||||
0:37 Construct structure ( temp structure{ temp 3-component vector of float a})
|
||||
0:37 vector-scale ( temp 3-component vector of float)
|
||||
0:37 Constant:
|
||||
0:37 -0.577350
|
||||
0:37 0.577350
|
||||
0:37 0.577350
|
||||
0:37 add second child into first child ( temp float)
|
||||
0:37 'n' ( temp float)
|
||||
0:37 Constant:
|
||||
0:37 1.000000
|
||||
0:39 Sequence
|
||||
0:39 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||
0:39 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||
0:39 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||
0:39 vector-scale ( temp 3-component vector of float)
|
||||
0:39 Constant:
|
||||
0:39 -0.577350
|
||||
@ -147,32 +138,41 @@ gl_FragCoord origin is upper left
|
||||
0:39 'n' ( temp float)
|
||||
0:39 Constant:
|
||||
0:39 1.000000
|
||||
0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:45 Function Parameters:
|
||||
0:40 vector-scale ( temp 3-component vector of float)
|
||||
0:40 Constant:
|
||||
0:40 -0.577350
|
||||
0:40 0.577350
|
||||
0:40 0.577350
|
||||
0:40 add second child into first child ( temp float)
|
||||
0:40 'n' ( temp float)
|
||||
0:40 Constant:
|
||||
0:40 1.000000
|
||||
0:46 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:46 Function Parameters:
|
||||
0:? Sequence
|
||||
0:46 Function Call: Test1( ( temp void)
|
||||
0:49 move second child to first child ( temp 4-component vector of float)
|
||||
0:49 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:49 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:49 Constant:
|
||||
0:49 0 (const int)
|
||||
0:49 Constant:
|
||||
0:49 1.000000
|
||||
0:49 1.000000
|
||||
0:49 1.000000
|
||||
0:49 1.000000
|
||||
0:50 Branch: Return with expression
|
||||
0:50 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:45 Function Definition: main( ( temp void)
|
||||
0:45 Function Parameters:
|
||||
0:47 Function Call: Test1( ( temp void)
|
||||
0:50 move second child to first child ( temp 4-component vector of float)
|
||||
0:50 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:50 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:50 Constant:
|
||||
0:50 0 (const int)
|
||||
0:50 Constant:
|
||||
0:50 1.000000
|
||||
0:50 1.000000
|
||||
0:50 1.000000
|
||||
0:50 1.000000
|
||||
0:51 Branch: Return with expression
|
||||
0:51 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:46 Function Definition: main( ( temp void)
|
||||
0:46 Function Parameters:
|
||||
0:? Sequence
|
||||
0:45 Sequence
|
||||
0:45 move second child to first child ( temp 4-component vector of float)
|
||||
0:46 Sequence
|
||||
0:46 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||
0:45 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:45 Constant:
|
||||
0:45 0 (const int)
|
||||
0:46 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:46 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:46 Constant:
|
||||
0:46 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
@ -212,29 +212,20 @@ gl_FragCoord origin is upper left
|
||||
0:20 10.000000
|
||||
0:22 Constant:
|
||||
0:22 10.000000
|
||||
0:25 Sequence
|
||||
0:25 move second child to first child ( temp float)
|
||||
0:25 'n' ( temp float)
|
||||
0:25 Constant:
|
||||
0:25 0.000000
|
||||
0:26 Sequence
|
||||
0:26 move second child to first child ( temp 8-element array of 3-component vector of float)
|
||||
0:26 'a' ( const (read only) 8-element array of 3-component vector of float)
|
||||
0:26 Construct vec3 ( temp 8-element array of 3-component vector of float)
|
||||
0:27 vector-scale ( temp 3-component vector of float)
|
||||
0:27 Constant:
|
||||
0:27 0.577350
|
||||
0:27 0.577350
|
||||
0:27 0.577350
|
||||
0:27 add second child into first child ( temp float)
|
||||
0:27 'n' ( temp float)
|
||||
0:27 Constant:
|
||||
0:27 1.000000
|
||||
0:26 move second child to first child ( temp float)
|
||||
0:26 'n' ( temp float)
|
||||
0:26 Constant:
|
||||
0:26 0.000000
|
||||
0:27 Sequence
|
||||
0:27 move second child to first child ( temp 8-element array of 3-component vector of float)
|
||||
0:27 'a' ( const (read only) 8-element array of 3-component vector of float)
|
||||
0:27 Construct vec3 ( temp 8-element array of 3-component vector of float)
|
||||
0:28 vector-scale ( temp 3-component vector of float)
|
||||
0:28 Constant:
|
||||
0:28 -0.577350
|
||||
0:28 -0.577350
|
||||
0:28 -0.577350
|
||||
0:28 0.577350
|
||||
0:28 0.577350
|
||||
0:28 0.577350
|
||||
0:28 add second child into first child ( temp float)
|
||||
0:28 'n' ( temp float)
|
||||
0:28 Constant:
|
||||
@ -243,7 +234,7 @@ gl_FragCoord origin is upper left
|
||||
0:29 Constant:
|
||||
0:29 -0.577350
|
||||
0:29 -0.577350
|
||||
0:29 0.577350
|
||||
0:29 -0.577350
|
||||
0:29 add second child into first child ( temp float)
|
||||
0:29 'n' ( temp float)
|
||||
0:29 Constant:
|
||||
@ -251,8 +242,8 @@ gl_FragCoord origin is upper left
|
||||
0:30 vector-scale ( temp 3-component vector of float)
|
||||
0:30 Constant:
|
||||
0:30 -0.577350
|
||||
0:30 0.577350
|
||||
0:30 -0.577350
|
||||
0:30 0.577350
|
||||
0:30 add second child into first child ( temp float)
|
||||
0:30 'n' ( temp float)
|
||||
0:30 Constant:
|
||||
@ -261,16 +252,16 @@ gl_FragCoord origin is upper left
|
||||
0:31 Constant:
|
||||
0:31 -0.577350
|
||||
0:31 0.577350
|
||||
0:31 0.577350
|
||||
0:31 -0.577350
|
||||
0:31 add second child into first child ( temp float)
|
||||
0:31 'n' ( temp float)
|
||||
0:31 Constant:
|
||||
0:31 1.000000
|
||||
0:32 vector-scale ( temp 3-component vector of float)
|
||||
0:32 Constant:
|
||||
0:32 -0.577350
|
||||
0:32 0.577350
|
||||
0:32 0.577350
|
||||
0:32 -0.577350
|
||||
0:32 -0.577350
|
||||
0:32 add second child into first child ( temp float)
|
||||
0:32 'n' ( temp float)
|
||||
0:32 Constant:
|
||||
@ -279,7 +270,7 @@ gl_FragCoord origin is upper left
|
||||
0:33 Constant:
|
||||
0:33 0.577350
|
||||
0:33 -0.577350
|
||||
0:33 0.577350
|
||||
0:33 -0.577350
|
||||
0:33 add second child into first child ( temp float)
|
||||
0:33 'n' ( temp float)
|
||||
0:33 Constant:
|
||||
@ -287,38 +278,38 @@ gl_FragCoord origin is upper left
|
||||
0:34 vector-scale ( temp 3-component vector of float)
|
||||
0:34 Constant:
|
||||
0:34 0.577350
|
||||
0:34 0.577350
|
||||
0:34 -0.577350
|
||||
0:34 0.577350
|
||||
0:34 add second child into first child ( temp float)
|
||||
0:34 'n' ( temp float)
|
||||
0:34 Constant:
|
||||
0:34 1.000000
|
||||
0:36 Sequence
|
||||
0:36 move second child to first child ( temp structure{ temp 3-component vector of float a})
|
||||
0:36 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
|
||||
0:36 Construct structure ( temp structure{ temp 3-component vector of float a})
|
||||
0:36 vector-scale ( temp 3-component vector of float)
|
||||
0:36 Constant:
|
||||
0:36 -0.577350
|
||||
0:36 0.577350
|
||||
0:36 0.577350
|
||||
0:36 add second child into first child ( temp float)
|
||||
0:36 'n' ( temp float)
|
||||
0:36 Constant:
|
||||
0:36 1.000000
|
||||
0:38 Sequence
|
||||
0:38 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||
0:38 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||
0:38 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||
0:38 vector-scale ( temp 3-component vector of float)
|
||||
0:38 Constant:
|
||||
0:38 -0.577350
|
||||
0:38 0.577350
|
||||
0:38 0.577350
|
||||
0:38 add second child into first child ( temp float)
|
||||
0:38 'n' ( temp float)
|
||||
0:38 Constant:
|
||||
0:38 1.000000
|
||||
0:35 vector-scale ( temp 3-component vector of float)
|
||||
0:35 Constant:
|
||||
0:35 0.577350
|
||||
0:35 0.577350
|
||||
0:35 -0.577350
|
||||
0:35 add second child into first child ( temp float)
|
||||
0:35 'n' ( temp float)
|
||||
0:35 Constant:
|
||||
0:35 1.000000
|
||||
0:37 Sequence
|
||||
0:37 move second child to first child ( temp structure{ temp 3-component vector of float a})
|
||||
0:37 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
|
||||
0:37 Construct structure ( temp structure{ temp 3-component vector of float a})
|
||||
0:37 vector-scale ( temp 3-component vector of float)
|
||||
0:37 Constant:
|
||||
0:37 -0.577350
|
||||
0:37 0.577350
|
||||
0:37 0.577350
|
||||
0:37 add second child into first child ( temp float)
|
||||
0:37 'n' ( temp float)
|
||||
0:37 Constant:
|
||||
0:37 1.000000
|
||||
0:39 Sequence
|
||||
0:39 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||
0:39 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||
0:39 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||
0:39 vector-scale ( temp 3-component vector of float)
|
||||
0:39 Constant:
|
||||
0:39 -0.577350
|
||||
@ -328,32 +319,41 @@ gl_FragCoord origin is upper left
|
||||
0:39 'n' ( temp float)
|
||||
0:39 Constant:
|
||||
0:39 1.000000
|
||||
0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:45 Function Parameters:
|
||||
0:40 vector-scale ( temp 3-component vector of float)
|
||||
0:40 Constant:
|
||||
0:40 -0.577350
|
||||
0:40 0.577350
|
||||
0:40 0.577350
|
||||
0:40 add second child into first child ( temp float)
|
||||
0:40 'n' ( temp float)
|
||||
0:40 Constant:
|
||||
0:40 1.000000
|
||||
0:46 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:46 Function Parameters:
|
||||
0:? Sequence
|
||||
0:46 Function Call: Test1( ( temp void)
|
||||
0:49 move second child to first child ( temp 4-component vector of float)
|
||||
0:49 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:49 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:49 Constant:
|
||||
0:49 0 (const int)
|
||||
0:49 Constant:
|
||||
0:49 1.000000
|
||||
0:49 1.000000
|
||||
0:49 1.000000
|
||||
0:49 1.000000
|
||||
0:50 Branch: Return with expression
|
||||
0:50 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:45 Function Definition: main( ( temp void)
|
||||
0:45 Function Parameters:
|
||||
0:47 Function Call: Test1( ( temp void)
|
||||
0:50 move second child to first child ( temp 4-component vector of float)
|
||||
0:50 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:50 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:50 Constant:
|
||||
0:50 0 (const int)
|
||||
0:50 Constant:
|
||||
0:50 1.000000
|
||||
0:50 1.000000
|
||||
0:50 1.000000
|
||||
0:50 1.000000
|
||||
0:51 Branch: Return with expression
|
||||
0:51 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:46 Function Definition: main( ( temp void)
|
||||
0:46 Function Parameters:
|
||||
0:? Sequence
|
||||
0:45 Sequence
|
||||
0:45 move second child to first child ( temp 4-component vector of float)
|
||||
0:46 Sequence
|
||||
0:46 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||
0:45 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:45 Constant:
|
||||
0:45 0 (const int)
|
||||
0:46 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:46 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:46 Constant:
|
||||
0:46 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -5,33 +5,69 @@ gl_FragCoord origin is upper left
|
||||
0:9 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
|
||||
0:9 Function Parameters:
|
||||
0:? Sequence
|
||||
0:40 add ( temp mediump 2-component vector of float)
|
||||
0:40 'mf16_2' ( temp mediump 2-component vector of float)
|
||||
0:40 'mf16' ( temp mediump float)
|
||||
0:41 add ( temp mediump 2-component vector of float)
|
||||
0:41 'mf10_2' ( temp mediump 2-component vector of float)
|
||||
0:41 'mf10' ( temp mediump float)
|
||||
0:42 add ( temp mediump 2-component vector of int)
|
||||
0:42 'mi16_2' ( temp mediump 2-component vector of int)
|
||||
0:42 'mi16' ( temp mediump int)
|
||||
0:43 add ( temp mediump 2-component vector of int)
|
||||
0:43 'mi12_2' ( temp mediump 2-component vector of int)
|
||||
0:43 'mi12' ( temp mediump int)
|
||||
0:44 add ( temp mediump 2-component vector of uint)
|
||||
0:44 'mu16_2' ( temp mediump 2-component vector of uint)
|
||||
0:44 'mu16' ( temp mediump uint)
|
||||
0:47 move second child to first child ( temp 4-component vector of float)
|
||||
0:47 Color: direct index for structure ( temp 4-component vector of float)
|
||||
0:47 'psout' ( temp structure{ temp 4-component vector of float Color})
|
||||
0:47 Constant:
|
||||
0:47 0 (const int)
|
||||
0:47 Constant:
|
||||
0:47 0.000000
|
||||
0:47 0.000000
|
||||
0:47 0.000000
|
||||
0:47 0.000000
|
||||
0:48 Branch: Return with expression
|
||||
0:48 'psout' ( temp structure{ temp 4-component vector of float Color})
|
||||
0:85 add ( temp mediump 2-component vector of float)
|
||||
0:85 'mf16_2' ( temp mediump 2-component vector of float)
|
||||
0:85 'mf16' ( temp mediump float)
|
||||
0:86 add ( temp mediump 2-component vector of float)
|
||||
0:86 'mf10_2' ( temp mediump 2-component vector of float)
|
||||
0:86 'mf10' ( temp mediump float)
|
||||
0:87 add ( temp mediump 2-component vector of int)
|
||||
0:87 'mi16_2' ( temp mediump 2-component vector of int)
|
||||
0:87 'mi16' ( temp mediump int)
|
||||
0:88 add ( temp mediump 2-component vector of int)
|
||||
0:88 'mi12_2' ( temp mediump 2-component vector of int)
|
||||
0:88 'mi12' ( temp mediump int)
|
||||
0:89 add ( temp mediump 2-component vector of uint)
|
||||
0:89 'mu16_2' ( temp mediump 2-component vector of uint)
|
||||
0:89 'mu16' ( temp mediump uint)
|
||||
0:91 matrix-times-vector ( temp mediump 4-component vector of float)
|
||||
0:91 'mf16_2x4' ( temp mediump 2X4 matrix of float)
|
||||
0:91 'mf16_2' ( temp mediump 2-component vector of float)
|
||||
0:92 matrix-times-vector ( temp mediump 4-component vector of float)
|
||||
0:92 'mf16_3x4' ( temp mediump 3X4 matrix of float)
|
||||
0:92 'mf16_3' ( temp mediump 3-component vector of float)
|
||||
0:93 matrix-times-vector ( temp mediump 4-component vector of float)
|
||||
0:93 'mf16_4x4' ( temp mediump 4X4 matrix of float)
|
||||
0:93 'mf16_4' ( temp mediump 4-component vector of float)
|
||||
0:94 vector-times-matrix ( temp mediump 4-component vector of float)
|
||||
0:94 'mf16_2' ( temp mediump 2-component vector of float)
|
||||
0:94 'mf16_4x2' ( temp mediump 4X2 matrix of float)
|
||||
0:95 vector-times-matrix ( temp mediump 4-component vector of float)
|
||||
0:95 'mf16_3' ( temp mediump 3-component vector of float)
|
||||
0:95 'mf16_4x3' ( temp mediump 4X3 matrix of float)
|
||||
0:96 vector-times-matrix ( temp mediump 4-component vector of float)
|
||||
0:96 'mf16_4' ( temp mediump 4-component vector of float)
|
||||
0:96 'mf16_4x4' ( temp mediump 4X4 matrix of float)
|
||||
0:98 matrix-times-vector ( temp mediump 4-component vector of float)
|
||||
0:98 'mf10_2x4' ( temp mediump 2X4 matrix of float)
|
||||
0:98 'mf10_2' ( temp mediump 2-component vector of float)
|
||||
0:99 matrix-times-vector ( temp mediump 4-component vector of float)
|
||||
0:99 'mf10_3x4' ( temp mediump 3X4 matrix of float)
|
||||
0:99 'mf10_3' ( temp mediump 3-component vector of float)
|
||||
0:100 matrix-times-vector ( temp mediump 4-component vector of float)
|
||||
0:100 'mf10_4x4' ( temp mediump 4X4 matrix of float)
|
||||
0:100 'mf10_4' ( temp mediump 4-component vector of float)
|
||||
0:101 vector-times-matrix ( temp mediump 4-component vector of float)
|
||||
0:101 'mf10_2' ( temp mediump 2-component vector of float)
|
||||
0:101 'mf10_4x2' ( temp mediump 4X2 matrix of float)
|
||||
0:102 vector-times-matrix ( temp mediump 4-component vector of float)
|
||||
0:102 'mf10_3' ( temp mediump 3-component vector of float)
|
||||
0:102 'mf10_4x3' ( temp mediump 4X3 matrix of float)
|
||||
0:103 vector-times-matrix ( temp mediump 4-component vector of float)
|
||||
0:103 'mf10_4' ( temp mediump 4-component vector of float)
|
||||
0:103 'mf10_4x4' ( temp mediump 4X4 matrix of float)
|
||||
0:106 move second child to first child ( temp 4-component vector of float)
|
||||
0:106 Color: direct index for structure ( temp 4-component vector of float)
|
||||
0:106 'psout' ( temp structure{ temp 4-component vector of float Color})
|
||||
0:106 Constant:
|
||||
0:106 0 (const int)
|
||||
0:106 Constant:
|
||||
0:106 0.000000
|
||||
0:106 0.000000
|
||||
0:106 0.000000
|
||||
0:106 0.000000
|
||||
0:107 Branch: Return with expression
|
||||
0:107 'psout' ( temp structure{ temp 4-component vector of float Color})
|
||||
0:9 Function Definition: main( ( temp void)
|
||||
0:9 Function Parameters:
|
||||
0:? Sequence
|
||||
@ -56,33 +92,69 @@ gl_FragCoord origin is upper left
|
||||
0:9 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
|
||||
0:9 Function Parameters:
|
||||
0:? Sequence
|
||||
0:40 add ( temp mediump 2-component vector of float)
|
||||
0:40 'mf16_2' ( temp mediump 2-component vector of float)
|
||||
0:40 'mf16' ( temp mediump float)
|
||||
0:41 add ( temp mediump 2-component vector of float)
|
||||
0:41 'mf10_2' ( temp mediump 2-component vector of float)
|
||||
0:41 'mf10' ( temp mediump float)
|
||||
0:42 add ( temp mediump 2-component vector of int)
|
||||
0:42 'mi16_2' ( temp mediump 2-component vector of int)
|
||||
0:42 'mi16' ( temp mediump int)
|
||||
0:43 add ( temp mediump 2-component vector of int)
|
||||
0:43 'mi12_2' ( temp mediump 2-component vector of int)
|
||||
0:43 'mi12' ( temp mediump int)
|
||||
0:44 add ( temp mediump 2-component vector of uint)
|
||||
0:44 'mu16_2' ( temp mediump 2-component vector of uint)
|
||||
0:44 'mu16' ( temp mediump uint)
|
||||
0:47 move second child to first child ( temp 4-component vector of float)
|
||||
0:47 Color: direct index for structure ( temp 4-component vector of float)
|
||||
0:47 'psout' ( temp structure{ temp 4-component vector of float Color})
|
||||
0:47 Constant:
|
||||
0:47 0 (const int)
|
||||
0:47 Constant:
|
||||
0:47 0.000000
|
||||
0:47 0.000000
|
||||
0:47 0.000000
|
||||
0:47 0.000000
|
||||
0:48 Branch: Return with expression
|
||||
0:48 'psout' ( temp structure{ temp 4-component vector of float Color})
|
||||
0:85 add ( temp mediump 2-component vector of float)
|
||||
0:85 'mf16_2' ( temp mediump 2-component vector of float)
|
||||
0:85 'mf16' ( temp mediump float)
|
||||
0:86 add ( temp mediump 2-component vector of float)
|
||||
0:86 'mf10_2' ( temp mediump 2-component vector of float)
|
||||
0:86 'mf10' ( temp mediump float)
|
||||
0:87 add ( temp mediump 2-component vector of int)
|
||||
0:87 'mi16_2' ( temp mediump 2-component vector of int)
|
||||
0:87 'mi16' ( temp mediump int)
|
||||
0:88 add ( temp mediump 2-component vector of int)
|
||||
0:88 'mi12_2' ( temp mediump 2-component vector of int)
|
||||
0:88 'mi12' ( temp mediump int)
|
||||
0:89 add ( temp mediump 2-component vector of uint)
|
||||
0:89 'mu16_2' ( temp mediump 2-component vector of uint)
|
||||
0:89 'mu16' ( temp mediump uint)
|
||||
0:91 matrix-times-vector ( temp mediump 4-component vector of float)
|
||||
0:91 'mf16_2x4' ( temp mediump 2X4 matrix of float)
|
||||
0:91 'mf16_2' ( temp mediump 2-component vector of float)
|
||||
0:92 matrix-times-vector ( temp mediump 4-component vector of float)
|
||||
0:92 'mf16_3x4' ( temp mediump 3X4 matrix of float)
|
||||
0:92 'mf16_3' ( temp mediump 3-component vector of float)
|
||||
0:93 matrix-times-vector ( temp mediump 4-component vector of float)
|
||||
0:93 'mf16_4x4' ( temp mediump 4X4 matrix of float)
|
||||
0:93 'mf16_4' ( temp mediump 4-component vector of float)
|
||||
0:94 vector-times-matrix ( temp mediump 4-component vector of float)
|
||||
0:94 'mf16_2' ( temp mediump 2-component vector of float)
|
||||
0:94 'mf16_4x2' ( temp mediump 4X2 matrix of float)
|
||||
0:95 vector-times-matrix ( temp mediump 4-component vector of float)
|
||||
0:95 'mf16_3' ( temp mediump 3-component vector of float)
|
||||
0:95 'mf16_4x3' ( temp mediump 4X3 matrix of float)
|
||||
0:96 vector-times-matrix ( temp mediump 4-component vector of float)
|
||||
0:96 'mf16_4' ( temp mediump 4-component vector of float)
|
||||
0:96 'mf16_4x4' ( temp mediump 4X4 matrix of float)
|
||||
0:98 matrix-times-vector ( temp mediump 4-component vector of float)
|
||||
0:98 'mf10_2x4' ( temp mediump 2X4 matrix of float)
|
||||
0:98 'mf10_2' ( temp mediump 2-component vector of float)
|
||||
0:99 matrix-times-vector ( temp mediump 4-component vector of float)
|
||||
0:99 'mf10_3x4' ( temp mediump 3X4 matrix of float)
|
||||
0:99 'mf10_3' ( temp mediump 3-component vector of float)
|
||||
0:100 matrix-times-vector ( temp mediump 4-component vector of float)
|
||||
0:100 'mf10_4x4' ( temp mediump 4X4 matrix of float)
|
||||
0:100 'mf10_4' ( temp mediump 4-component vector of float)
|
||||
0:101 vector-times-matrix ( temp mediump 4-component vector of float)
|
||||
0:101 'mf10_2' ( temp mediump 2-component vector of float)
|
||||
0:101 'mf10_4x2' ( temp mediump 4X2 matrix of float)
|
||||
0:102 vector-times-matrix ( temp mediump 4-component vector of float)
|
||||
0:102 'mf10_3' ( temp mediump 3-component vector of float)
|
||||
0:102 'mf10_4x3' ( temp mediump 4X3 matrix of float)
|
||||
0:103 vector-times-matrix ( temp mediump 4-component vector of float)
|
||||
0:103 'mf10_4' ( temp mediump 4-component vector of float)
|
||||
0:103 'mf10_4x4' ( temp mediump 4X4 matrix of float)
|
||||
0:106 move second child to first child ( temp 4-component vector of float)
|
||||
0:106 Color: direct index for structure ( temp 4-component vector of float)
|
||||
0:106 'psout' ( temp structure{ temp 4-component vector of float Color})
|
||||
0:106 Constant:
|
||||
0:106 0 (const int)
|
||||
0:106 Constant:
|
||||
0:106 0.000000
|
||||
0:106 0.000000
|
||||
0:106 0.000000
|
||||
0:106 0.000000
|
||||
0:107 Branch: Return with expression
|
||||
0:107 'psout' ( temp structure{ temp 4-component vector of float Color})
|
||||
0:9 Function Definition: main( ( temp void)
|
||||
0:9 Function Parameters:
|
||||
0:? Sequence
|
||||
@ -99,12 +171,12 @@ gl_FragCoord origin is upper left
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 70
|
||||
// Id's are bound by 132
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 64
|
||||
EntryPoint Fragment 4 "main" 126
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source HLSL 500
|
||||
Name 4 "main"
|
||||
@ -121,12 +193,26 @@ gl_FragCoord origin is upper left
|
||||
Name 39 "mi12"
|
||||
Name 46 "mu16_2"
|
||||
Name 49 "mu16"
|
||||
Name 54 "psout"
|
||||
Name 64 "@entryPointOutput.Color"
|
||||
Name 67 "$Global"
|
||||
MemberName 67($Global) 0 "b1a"
|
||||
MemberName 67($Global) 1 "b1b"
|
||||
Name 69 ""
|
||||
Name 55 "mf16_2x4"
|
||||
Name 61 "mf16_3x4"
|
||||
Name 65 "mf16_3"
|
||||
Name 70 "mf16_4x4"
|
||||
Name 73 "mf16_4"
|
||||
Name 79 "mf16_4x2"
|
||||
Name 85 "mf16_4x3"
|
||||
Name 91 "mf10_2x4"
|
||||
Name 95 "mf10_3x4"
|
||||
Name 97 "mf10_3"
|
||||
Name 100 "mf10_4x4"
|
||||
Name 102 "mf10_4"
|
||||
Name 106 "mf10_4x2"
|
||||
Name 110 "mf10_4x3"
|
||||
Name 117 "psout"
|
||||
Name 126 "@entryPointOutput.Color"
|
||||
Name 129 "$Global"
|
||||
MemberName 129($Global) 0 "b1a"
|
||||
MemberName 129($Global) 1 "b1b"
|
||||
Name 131 ""
|
||||
Decorate 14(mf16_2) RelaxedPrecision
|
||||
Decorate 15 RelaxedPrecision
|
||||
Decorate 17(mf16) RelaxedPrecision
|
||||
@ -157,14 +243,64 @@ gl_FragCoord origin is upper left
|
||||
Decorate 50 RelaxedPrecision
|
||||
Decorate 51 RelaxedPrecision
|
||||
Decorate 52 RelaxedPrecision
|
||||
Decorate 64(@entryPointOutput.Color) Location 0
|
||||
MemberDecorate 67($Global) 0 RelaxedPrecision
|
||||
MemberDecorate 67($Global) 0 Offset 0
|
||||
MemberDecorate 67($Global) 1 RelaxedPrecision
|
||||
MemberDecorate 67($Global) 1 Offset 4
|
||||
Decorate 67($Global) Block
|
||||
Decorate 69 DescriptorSet 0
|
||||
Decorate 69 Binding 0
|
||||
Decorate 55(mf16_2x4) RelaxedPrecision
|
||||
Decorate 56 RelaxedPrecision
|
||||
Decorate 57 RelaxedPrecision
|
||||
Decorate 58 RelaxedPrecision
|
||||
Decorate 61(mf16_3x4) RelaxedPrecision
|
||||
Decorate 62 RelaxedPrecision
|
||||
Decorate 65(mf16_3) RelaxedPrecision
|
||||
Decorate 66 RelaxedPrecision
|
||||
Decorate 67 RelaxedPrecision
|
||||
Decorate 70(mf16_4x4) RelaxedPrecision
|
||||
Decorate 71 RelaxedPrecision
|
||||
Decorate 73(mf16_4) RelaxedPrecision
|
||||
Decorate 74 RelaxedPrecision
|
||||
Decorate 75 RelaxedPrecision
|
||||
Decorate 76 RelaxedPrecision
|
||||
Decorate 79(mf16_4x2) RelaxedPrecision
|
||||
Decorate 80 RelaxedPrecision
|
||||
Decorate 81 RelaxedPrecision
|
||||
Decorate 82 RelaxedPrecision
|
||||
Decorate 85(mf16_4x3) RelaxedPrecision
|
||||
Decorate 86 RelaxedPrecision
|
||||
Decorate 87 RelaxedPrecision
|
||||
Decorate 88 RelaxedPrecision
|
||||
Decorate 89 RelaxedPrecision
|
||||
Decorate 90 RelaxedPrecision
|
||||
Decorate 91(mf10_2x4) RelaxedPrecision
|
||||
Decorate 92 RelaxedPrecision
|
||||
Decorate 93 RelaxedPrecision
|
||||
Decorate 94 RelaxedPrecision
|
||||
Decorate 95(mf10_3x4) RelaxedPrecision
|
||||
Decorate 96 RelaxedPrecision
|
||||
Decorate 97(mf10_3) RelaxedPrecision
|
||||
Decorate 98 RelaxedPrecision
|
||||
Decorate 99 RelaxedPrecision
|
||||
Decorate 100(mf10_4x4) RelaxedPrecision
|
||||
Decorate 101 RelaxedPrecision
|
||||
Decorate 102(mf10_4) RelaxedPrecision
|
||||
Decorate 103 RelaxedPrecision
|
||||
Decorate 104 RelaxedPrecision
|
||||
Decorate 105 RelaxedPrecision
|
||||
Decorate 106(mf10_4x2) RelaxedPrecision
|
||||
Decorate 107 RelaxedPrecision
|
||||
Decorate 108 RelaxedPrecision
|
||||
Decorate 109 RelaxedPrecision
|
||||
Decorate 110(mf10_4x3) RelaxedPrecision
|
||||
Decorate 111 RelaxedPrecision
|
||||
Decorate 112 RelaxedPrecision
|
||||
Decorate 113 RelaxedPrecision
|
||||
Decorate 114 RelaxedPrecision
|
||||
Decorate 115 RelaxedPrecision
|
||||
Decorate 126(@entryPointOutput.Color) Location 0
|
||||
MemberDecorate 129($Global) 0 RelaxedPrecision
|
||||
MemberDecorate 129($Global) 0 Offset 0
|
||||
MemberDecorate 129($Global) 1 RelaxedPrecision
|
||||
MemberDecorate 129($Global) 1 Offset 4
|
||||
Decorate 129($Global) Block
|
||||
Decorate 131 DescriptorSet 0
|
||||
Decorate 131 Binding 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
@ -182,21 +318,33 @@ gl_FragCoord origin is upper left
|
||||
44: TypeVector 43(int) 2
|
||||
45: TypePointer Function 44(ivec2)
|
||||
48: TypePointer Function 43(int)
|
||||
53: TypePointer Function 8(PS_OUTPUT)
|
||||
55: 27(int) Constant 0
|
||||
56: 6(float) Constant 0
|
||||
57: 7(fvec4) ConstantComposite 56 56 56 56
|
||||
58: TypePointer Function 7(fvec4)
|
||||
63: TypePointer Output 7(fvec4)
|
||||
64(@entryPointOutput.Color): 63(ptr) Variable Output
|
||||
67($Global): TypeStruct 6(float) 6(float)
|
||||
68: TypePointer Uniform 67($Global)
|
||||
69: 68(ptr) Variable Uniform
|
||||
53: TypeMatrix 7(fvec4) 2
|
||||
54: TypePointer Function 53
|
||||
59: TypeMatrix 7(fvec4) 3
|
||||
60: TypePointer Function 59
|
||||
63: TypeVector 6(float) 3
|
||||
64: TypePointer Function 63(fvec3)
|
||||
68: TypeMatrix 7(fvec4) 4
|
||||
69: TypePointer Function 68
|
||||
72: TypePointer Function 7(fvec4)
|
||||
77: TypeMatrix 12(fvec2) 4
|
||||
78: TypePointer Function 77
|
||||
83: TypeMatrix 63(fvec3) 4
|
||||
84: TypePointer Function 83
|
||||
116: TypePointer Function 8(PS_OUTPUT)
|
||||
118: 27(int) Constant 0
|
||||
119: 6(float) Constant 0
|
||||
120: 7(fvec4) ConstantComposite 119 119 119 119
|
||||
125: TypePointer Output 7(fvec4)
|
||||
126(@entryPointOutput.Color): 125(ptr) Variable Output
|
||||
129($Global): TypeStruct 6(float) 6(float)
|
||||
130: TypePointer Uniform 129($Global)
|
||||
131: 130(ptr) Variable Uniform
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
65:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
66: 7(fvec4) CompositeExtract 65 0
|
||||
Store 64(@entryPointOutput.Color) 66
|
||||
127:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
128: 7(fvec4) CompositeExtract 127 0
|
||||
Store 126(@entryPointOutput.Color) 128
|
||||
Return
|
||||
FunctionEnd
|
||||
10(@main():8(PS_OUTPUT) Function None 9
|
||||
@ -211,7 +359,21 @@ gl_FragCoord origin is upper left
|
||||
39(mi12): 32(ptr) Variable Function
|
||||
46(mu16_2): 45(ptr) Variable Function
|
||||
49(mu16): 48(ptr) Variable Function
|
||||
54(psout): 53(ptr) Variable Function
|
||||
55(mf16_2x4): 54(ptr) Variable Function
|
||||
61(mf16_3x4): 60(ptr) Variable Function
|
||||
65(mf16_3): 64(ptr) Variable Function
|
||||
70(mf16_4x4): 69(ptr) Variable Function
|
||||
73(mf16_4): 72(ptr) Variable Function
|
||||
79(mf16_4x2): 78(ptr) Variable Function
|
||||
85(mf16_4x3): 84(ptr) Variable Function
|
||||
91(mf10_2x4): 54(ptr) Variable Function
|
||||
95(mf10_3x4): 60(ptr) Variable Function
|
||||
97(mf10_3): 64(ptr) Variable Function
|
||||
100(mf10_4x4): 69(ptr) Variable Function
|
||||
102(mf10_4): 72(ptr) Variable Function
|
||||
106(mf10_4x2): 78(ptr) Variable Function
|
||||
110(mf10_4x3): 84(ptr) Variable Function
|
||||
117(psout): 116(ptr) Variable Function
|
||||
15: 12(fvec2) Load 14(mf16_2)
|
||||
18: 6(float) Load 17(mf16)
|
||||
19: 12(fvec2) CompositeConstruct 18 18
|
||||
@ -232,8 +394,44 @@ gl_FragCoord origin is upper left
|
||||
50: 43(int) Load 49(mu16)
|
||||
51: 44(ivec2) CompositeConstruct 50 50
|
||||
52: 44(ivec2) IAdd 47 51
|
||||
59: 58(ptr) AccessChain 54(psout) 55
|
||||
Store 59 57
|
||||
60:8(PS_OUTPUT) Load 54(psout)
|
||||
ReturnValue 60
|
||||
56: 53 Load 55(mf16_2x4)
|
||||
57: 12(fvec2) Load 14(mf16_2)
|
||||
58: 7(fvec4) MatrixTimesVector 56 57
|
||||
62: 59 Load 61(mf16_3x4)
|
||||
66: 63(fvec3) Load 65(mf16_3)
|
||||
67: 7(fvec4) MatrixTimesVector 62 66
|
||||
71: 68 Load 70(mf16_4x4)
|
||||
74: 7(fvec4) Load 73(mf16_4)
|
||||
75: 7(fvec4) MatrixTimesVector 71 74
|
||||
76: 12(fvec2) Load 14(mf16_2)
|
||||
80: 77 Load 79(mf16_4x2)
|
||||
81: 7(fvec4) VectorTimesMatrix 76 80
|
||||
82: 63(fvec3) Load 65(mf16_3)
|
||||
86: 83 Load 85(mf16_4x3)
|
||||
87: 7(fvec4) VectorTimesMatrix 82 86
|
||||
88: 7(fvec4) Load 73(mf16_4)
|
||||
89: 68 Load 70(mf16_4x4)
|
||||
90: 7(fvec4) VectorTimesMatrix 88 89
|
||||
92: 53 Load 91(mf10_2x4)
|
||||
93: 12(fvec2) Load 21(mf10_2)
|
||||
94: 7(fvec4) MatrixTimesVector 92 93
|
||||
96: 59 Load 95(mf10_3x4)
|
||||
98: 63(fvec3) Load 97(mf10_3)
|
||||
99: 7(fvec4) MatrixTimesVector 96 98
|
||||
101: 68 Load 100(mf10_4x4)
|
||||
103: 7(fvec4) Load 102(mf10_4)
|
||||
104: 7(fvec4) MatrixTimesVector 101 103
|
||||
105: 12(fvec2) Load 21(mf10_2)
|
||||
107: 77 Load 106(mf10_4x2)
|
||||
108: 7(fvec4) VectorTimesMatrix 105 107
|
||||
109: 63(fvec3) Load 97(mf10_3)
|
||||
111: 83 Load 110(mf10_4x3)
|
||||
112: 7(fvec4) VectorTimesMatrix 109 111
|
||||
113: 7(fvec4) Load 102(mf10_4)
|
||||
114: 68 Load 100(mf10_4x4)
|
||||
115: 7(fvec4) VectorTimesMatrix 113 114
|
||||
121: 72(ptr) AccessChain 117(psout) 118
|
||||
Store 121 120
|
||||
122:8(PS_OUTPUT) Load 117(psout)
|
||||
ReturnValue 122
|
||||
FunctionEnd
|
||||
|
119
Test/baseResults/hlsl.nested-runtimeArray.frag.out
Normal file
119
Test/baseResults/hlsl.nested-runtimeArray.frag.out
Normal file
@ -0,0 +1,119 @@
|
||||
hlsl.nested-runtimeArray.frag
|
||||
Shader version: 500
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:7 Function Definition: @main( ( temp float)
|
||||
0:7 Function Parameters:
|
||||
0:? Sequence
|
||||
0:8 Branch: Return with expression
|
||||
0:8 direct index ( temp float)
|
||||
0:8 a: direct index for structure ( temp unsized 1-element array of float)
|
||||
0:8 direct index (layout( row_major std430) buffer structure{ temp unsized 1-element array of float a})
|
||||
0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a})
|
||||
0:8 'B' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a} @data})
|
||||
0:8 Constant:
|
||||
0:8 0 (const uint)
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:7 Function Definition: main( ( temp void)
|
||||
0:7 Function Parameters:
|
||||
0:? Sequence
|
||||
0:7 move second child to first child ( temp float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out float)
|
||||
0:7 Function Call: @main( ( temp float)
|
||||
0:? Linker Objects
|
||||
0:? 'B' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a} @data})
|
||||
0:? '@entryPointOutput' (layout( location=0) out float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 500
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:7 Function Definition: @main( ( temp float)
|
||||
0:7 Function Parameters:
|
||||
0:? Sequence
|
||||
0:8 Branch: Return with expression
|
||||
0:8 direct index ( temp float)
|
||||
0:8 a: direct index for structure ( temp unsized 1-element array of float)
|
||||
0:8 direct index (layout( row_major std430) buffer structure{ temp unsized 1-element array of float a})
|
||||
0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a})
|
||||
0:8 'B' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a} @data})
|
||||
0:8 Constant:
|
||||
0:8 0 (const uint)
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:7 Function Definition: main( ( temp void)
|
||||
0:7 Function Parameters:
|
||||
0:? Sequence
|
||||
0:7 move second child to first child ( temp float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out float)
|
||||
0:7 Function Call: @main( ( temp float)
|
||||
0:? Linker Objects
|
||||
0:? 'B' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a} @data})
|
||||
0:? '@entryPointOutput' (layout( location=0) out float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 26
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 24
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source HLSL 500
|
||||
Name 4 "main"
|
||||
Name 8 "@main("
|
||||
Name 11 "A"
|
||||
MemberName 11(A) 0 "a"
|
||||
Name 13 "B"
|
||||
MemberName 13(B) 0 "@data"
|
||||
Name 15 "B"
|
||||
Name 24 "@entryPointOutput"
|
||||
Decorate 10 ArrayStride 4
|
||||
MemberDecorate 11(A) 0 Offset 0
|
||||
Decorate 11(A) BufferBlock
|
||||
Decorate 12 ArrayStride 4
|
||||
MemberDecorate 13(B) 0 Offset 0
|
||||
Decorate 13(B) BufferBlock
|
||||
Decorate 15(B) DescriptorSet 0
|
||||
Decorate 15(B) Binding 0
|
||||
Decorate 24(@entryPointOutput) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeFunction 6(float)
|
||||
10: TypeRuntimeArray 6(float)
|
||||
11(A): TypeStruct 10
|
||||
12: TypeRuntimeArray 11(A)
|
||||
13(B): TypeStruct 12
|
||||
14: TypePointer Uniform 13(B)
|
||||
15(B): 14(ptr) Variable Uniform
|
||||
16: TypeInt 32 1
|
||||
17: 16(int) Constant 0
|
||||
18: TypePointer Uniform 6(float)
|
||||
23: TypePointer Output 6(float)
|
||||
24(@entryPointOutput): 23(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
25: 6(float) FunctionCall 8(@main()
|
||||
Store 24(@entryPointOutput) 25
|
||||
Return
|
||||
FunctionEnd
|
||||
8(@main(): 6(float) Function None 7
|
||||
9: Label
|
||||
19: 18(ptr) AccessChain 15(B) 17 17 17 17
|
||||
20: 6(float) Load 19
|
||||
ReturnValue 20
|
||||
FunctionEnd
|
@ -2,94 +2,124 @@ hlsl.numericsuffixes.frag
|
||||
Shader version: 500
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:5 Function Parameters:
|
||||
0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:8 Function Parameters:
|
||||
0:? Sequence
|
||||
0:7 Sequence
|
||||
0:7 move second child to first child ( temp float)
|
||||
0:7 'r00' ( temp float)
|
||||
0:7 Constant:
|
||||
0:7 1.000000
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child ( temp uint)
|
||||
0:8 'r01' ( temp uint)
|
||||
0:8 Constant:
|
||||
0:8 1 (const uint)
|
||||
0:9 Sequence
|
||||
0:9 move second child to first child ( temp uint)
|
||||
0:9 'r02' ( temp uint)
|
||||
0:9 Constant:
|
||||
0:9 2 (const uint)
|
||||
0:10 Sequence
|
||||
0:10 move second child to first child ( temp uint)
|
||||
0:10 'r03' ( temp uint)
|
||||
0:10 move second child to first child ( temp float)
|
||||
0:10 'r00' ( temp float)
|
||||
0:10 Constant:
|
||||
0:10 2748 (const uint)
|
||||
0:10 1.000000
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp uint)
|
||||
0:11 'r04' ( temp uint)
|
||||
0:11 'r01' ( temp uint)
|
||||
0:11 Constant:
|
||||
0:11 2748 (const uint)
|
||||
0:11 1 (const uint)
|
||||
0:12 Sequence
|
||||
0:12 move second child to first child ( temp int)
|
||||
0:12 'r05' ( temp int)
|
||||
0:12 move second child to first child ( temp uint)
|
||||
0:12 'r02' ( temp uint)
|
||||
0:12 Constant:
|
||||
0:12 5 (const int)
|
||||
0:12 2 (const uint)
|
||||
0:13 Sequence
|
||||
0:13 move second child to first child ( temp int)
|
||||
0:13 'r06' ( temp int)
|
||||
0:13 move second child to first child ( temp uint)
|
||||
0:13 'r03' ( temp uint)
|
||||
0:13 Constant:
|
||||
0:13 6 (const int)
|
||||
0:13 2748 (const uint)
|
||||
0:14 Sequence
|
||||
0:14 move second child to first child ( temp int)
|
||||
0:14 'r07' ( temp int)
|
||||
0:14 move second child to first child ( temp uint)
|
||||
0:14 'r04' ( temp uint)
|
||||
0:14 Constant:
|
||||
0:14 57 (const int)
|
||||
0:14 2748 (const uint)
|
||||
0:15 Sequence
|
||||
0:15 move second child to first child ( temp uint)
|
||||
0:15 'r08' ( temp uint)
|
||||
0:15 move second child to first child ( temp int)
|
||||
0:15 'r05' ( temp int)
|
||||
0:15 Constant:
|
||||
0:15 58 (const uint)
|
||||
0:15 5 (const int)
|
||||
0:16 Sequence
|
||||
0:16 move second child to first child ( temp float)
|
||||
0:16 'r09' ( temp float)
|
||||
0:16 move second child to first child ( temp int)
|
||||
0:16 'r06' ( temp int)
|
||||
0:16 Constant:
|
||||
0:16 1.000000
|
||||
0:16 6 (const int)
|
||||
0:17 Sequence
|
||||
0:17 move second child to first child ( temp float)
|
||||
0:17 'r10' ( temp float)
|
||||
0:17 move second child to first child ( temp int)
|
||||
0:17 'r07' ( temp int)
|
||||
0:17 Constant:
|
||||
0:17 1.000000
|
||||
0:17 57 (const int)
|
||||
0:18 Sequence
|
||||
0:18 move second child to first child ( temp float)
|
||||
0:18 'r11' ( temp float)
|
||||
0:18 move second child to first child ( temp uint)
|
||||
0:18 'r08' ( temp uint)
|
||||
0:18 Constant:
|
||||
0:18 1.100000
|
||||
0:18 58 (const uint)
|
||||
0:19 Sequence
|
||||
0:19 move second child to first child ( temp float)
|
||||
0:19 'r12' ( temp float)
|
||||
0:19 'r09' ( temp float)
|
||||
0:19 Constant:
|
||||
0:19 1.100000
|
||||
0:22 move second child to first child ( temp 4-component vector of float)
|
||||
0:22 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:22 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:19 1.000000
|
||||
0:20 Sequence
|
||||
0:20 move second child to first child ( temp float)
|
||||
0:20 'r10' ( temp float)
|
||||
0:20 Constant:
|
||||
0:20 1.000000
|
||||
0:21 Sequence
|
||||
0:21 move second child to first child ( temp float)
|
||||
0:21 'r11' ( temp float)
|
||||
0:21 Constant:
|
||||
0:21 1.100000
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:22 'r12' ( temp float)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Construct vec4 ( temp 4-component vector of float)
|
||||
0:22 Convert int to float ( temp float)
|
||||
0:22 'r07' ( temp int)
|
||||
0:23 Branch: Return with expression
|
||||
0:23 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:5 Function Definition: main( ( temp void)
|
||||
0:5 Function Parameters:
|
||||
0:22 1.100000
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp uint)
|
||||
0:23 'r13' ( temp uint)
|
||||
0:23 Constant:
|
||||
0:23 1 (const uint)
|
||||
0:24 Sequence
|
||||
0:24 move second child to first child ( temp uint)
|
||||
0:24 'r14' ( temp uint)
|
||||
0:24 Constant:
|
||||
0:24 2 (const uint)
|
||||
0:25 Sequence
|
||||
0:25 move second child to first child ( temp int)
|
||||
0:25 'r15' ( temp int)
|
||||
0:25 Constant:
|
||||
0:25 3 (const int)
|
||||
0:26 Sequence
|
||||
0:26 move second child to first child ( temp int)
|
||||
0:26 'r16' ( temp int)
|
||||
0:26 Constant:
|
||||
0:26 4 (const int)
|
||||
0:27 Sequence
|
||||
0:27 move second child to first child ( temp uint)
|
||||
0:27 'r17' ( temp uint)
|
||||
0:27 Constant:
|
||||
0:27 1 (const uint)
|
||||
0:28 Sequence
|
||||
0:28 move second child to first child ( temp int)
|
||||
0:28 'r18' ( temp int)
|
||||
0:28 Constant:
|
||||
0:28 3 (const int)
|
||||
0:31 move second child to first child ( temp 4-component vector of float)
|
||||
0:31 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:31 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Construct vec4 ( temp 4-component vector of float)
|
||||
0:31 Convert int to float ( temp float)
|
||||
0:31 'r07' ( temp int)
|
||||
0:32 Branch: Return with expression
|
||||
0:32 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:8 Function Definition: main( ( temp void)
|
||||
0:8 Function Parameters:
|
||||
0:? Sequence
|
||||
0:5 Sequence
|
||||
0:5 move second child to first child ( temp 4-component vector of float)
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||
0:5 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:5 Constant:
|
||||
0:5 0 (const int)
|
||||
0:8 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
@ -100,105 +130,135 @@ Linked fragment stage:
|
||||
Shader version: 500
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:5 Function Parameters:
|
||||
0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:8 Function Parameters:
|
||||
0:? Sequence
|
||||
0:7 Sequence
|
||||
0:7 move second child to first child ( temp float)
|
||||
0:7 'r00' ( temp float)
|
||||
0:7 Constant:
|
||||
0:7 1.000000
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child ( temp uint)
|
||||
0:8 'r01' ( temp uint)
|
||||
0:8 Constant:
|
||||
0:8 1 (const uint)
|
||||
0:9 Sequence
|
||||
0:9 move second child to first child ( temp uint)
|
||||
0:9 'r02' ( temp uint)
|
||||
0:9 Constant:
|
||||
0:9 2 (const uint)
|
||||
0:10 Sequence
|
||||
0:10 move second child to first child ( temp uint)
|
||||
0:10 'r03' ( temp uint)
|
||||
0:10 move second child to first child ( temp float)
|
||||
0:10 'r00' ( temp float)
|
||||
0:10 Constant:
|
||||
0:10 2748 (const uint)
|
||||
0:10 1.000000
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp uint)
|
||||
0:11 'r04' ( temp uint)
|
||||
0:11 'r01' ( temp uint)
|
||||
0:11 Constant:
|
||||
0:11 2748 (const uint)
|
||||
0:11 1 (const uint)
|
||||
0:12 Sequence
|
||||
0:12 move second child to first child ( temp int)
|
||||
0:12 'r05' ( temp int)
|
||||
0:12 move second child to first child ( temp uint)
|
||||
0:12 'r02' ( temp uint)
|
||||
0:12 Constant:
|
||||
0:12 5 (const int)
|
||||
0:12 2 (const uint)
|
||||
0:13 Sequence
|
||||
0:13 move second child to first child ( temp int)
|
||||
0:13 'r06' ( temp int)
|
||||
0:13 move second child to first child ( temp uint)
|
||||
0:13 'r03' ( temp uint)
|
||||
0:13 Constant:
|
||||
0:13 6 (const int)
|
||||
0:13 2748 (const uint)
|
||||
0:14 Sequence
|
||||
0:14 move second child to first child ( temp int)
|
||||
0:14 'r07' ( temp int)
|
||||
0:14 move second child to first child ( temp uint)
|
||||
0:14 'r04' ( temp uint)
|
||||
0:14 Constant:
|
||||
0:14 57 (const int)
|
||||
0:14 2748 (const uint)
|
||||
0:15 Sequence
|
||||
0:15 move second child to first child ( temp uint)
|
||||
0:15 'r08' ( temp uint)
|
||||
0:15 move second child to first child ( temp int)
|
||||
0:15 'r05' ( temp int)
|
||||
0:15 Constant:
|
||||
0:15 58 (const uint)
|
||||
0:15 5 (const int)
|
||||
0:16 Sequence
|
||||
0:16 move second child to first child ( temp float)
|
||||
0:16 'r09' ( temp float)
|
||||
0:16 move second child to first child ( temp int)
|
||||
0:16 'r06' ( temp int)
|
||||
0:16 Constant:
|
||||
0:16 1.000000
|
||||
0:16 6 (const int)
|
||||
0:17 Sequence
|
||||
0:17 move second child to first child ( temp float)
|
||||
0:17 'r10' ( temp float)
|
||||
0:17 move second child to first child ( temp int)
|
||||
0:17 'r07' ( temp int)
|
||||
0:17 Constant:
|
||||
0:17 1.000000
|
||||
0:17 57 (const int)
|
||||
0:18 Sequence
|
||||
0:18 move second child to first child ( temp float)
|
||||
0:18 'r11' ( temp float)
|
||||
0:18 move second child to first child ( temp uint)
|
||||
0:18 'r08' ( temp uint)
|
||||
0:18 Constant:
|
||||
0:18 1.100000
|
||||
0:18 58 (const uint)
|
||||
0:19 Sequence
|
||||
0:19 move second child to first child ( temp float)
|
||||
0:19 'r12' ( temp float)
|
||||
0:19 'r09' ( temp float)
|
||||
0:19 Constant:
|
||||
0:19 1.100000
|
||||
0:22 move second child to first child ( temp 4-component vector of float)
|
||||
0:22 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:22 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:19 1.000000
|
||||
0:20 Sequence
|
||||
0:20 move second child to first child ( temp float)
|
||||
0:20 'r10' ( temp float)
|
||||
0:20 Constant:
|
||||
0:20 1.000000
|
||||
0:21 Sequence
|
||||
0:21 move second child to first child ( temp float)
|
||||
0:21 'r11' ( temp float)
|
||||
0:21 Constant:
|
||||
0:21 1.100000
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:22 'r12' ( temp float)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Construct vec4 ( temp 4-component vector of float)
|
||||
0:22 Convert int to float ( temp float)
|
||||
0:22 'r07' ( temp int)
|
||||
0:23 Branch: Return with expression
|
||||
0:23 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:5 Function Definition: main( ( temp void)
|
||||
0:5 Function Parameters:
|
||||
0:22 1.100000
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp uint)
|
||||
0:23 'r13' ( temp uint)
|
||||
0:23 Constant:
|
||||
0:23 1 (const uint)
|
||||
0:24 Sequence
|
||||
0:24 move second child to first child ( temp uint)
|
||||
0:24 'r14' ( temp uint)
|
||||
0:24 Constant:
|
||||
0:24 2 (const uint)
|
||||
0:25 Sequence
|
||||
0:25 move second child to first child ( temp int)
|
||||
0:25 'r15' ( temp int)
|
||||
0:25 Constant:
|
||||
0:25 3 (const int)
|
||||
0:26 Sequence
|
||||
0:26 move second child to first child ( temp int)
|
||||
0:26 'r16' ( temp int)
|
||||
0:26 Constant:
|
||||
0:26 4 (const int)
|
||||
0:27 Sequence
|
||||
0:27 move second child to first child ( temp uint)
|
||||
0:27 'r17' ( temp uint)
|
||||
0:27 Constant:
|
||||
0:27 1 (const uint)
|
||||
0:28 Sequence
|
||||
0:28 move second child to first child ( temp int)
|
||||
0:28 'r18' ( temp int)
|
||||
0:28 Constant:
|
||||
0:28 3 (const int)
|
||||
0:31 move second child to first child ( temp 4-component vector of float)
|
||||
0:31 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:31 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Construct vec4 ( temp 4-component vector of float)
|
||||
0:31 Convert int to float ( temp float)
|
||||
0:31 'r07' ( temp int)
|
||||
0:32 Branch: Return with expression
|
||||
0:32 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:8 Function Definition: main( ( temp void)
|
||||
0:8 Function Parameters:
|
||||
0:? Sequence
|
||||
0:5 Sequence
|
||||
0:5 move second child to first child ( temp 4-component vector of float)
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||
0:5 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:5 Constant:
|
||||
0:5 0 (const int)
|
||||
0:8 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 54
|
||||
// Id's are bound by 62
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 51
|
||||
EntryPoint Fragment 4 "main" 59
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source HLSL 500
|
||||
Name 4 "main"
|
||||
@ -218,9 +278,15 @@ gl_FragCoord origin is upper left
|
||||
Name 35 "r10"
|
||||
Name 36 "r11"
|
||||
Name 38 "r12"
|
||||
Name 40 "ps_output"
|
||||
Name 51 "@entryPointOutput.color"
|
||||
Decorate 51(@entryPointOutput.color) Location 0
|
||||
Name 39 "r13"
|
||||
Name 40 "r14"
|
||||
Name 41 "r15"
|
||||
Name 43 "r16"
|
||||
Name 45 "r17"
|
||||
Name 46 "r18"
|
||||
Name 48 "ps_output"
|
||||
Name 59 "@entryPointOutput.color"
|
||||
Decorate 59(@entryPointOutput.color) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
@ -241,16 +307,18 @@ gl_FragCoord origin is upper left
|
||||
31: 24(int) Constant 57
|
||||
33: 15(int) Constant 58
|
||||
37: 6(float) Constant 1066192077
|
||||
39: TypePointer Function 8(PS_OUTPUT)
|
||||
41: 24(int) Constant 0
|
||||
45: TypePointer Function 7(fvec4)
|
||||
50: TypePointer Output 7(fvec4)
|
||||
51(@entryPointOutput.color): 50(ptr) Variable Output
|
||||
42: 24(int) Constant 3
|
||||
44: 24(int) Constant 4
|
||||
47: TypePointer Function 8(PS_OUTPUT)
|
||||
49: 24(int) Constant 0
|
||||
53: TypePointer Function 7(fvec4)
|
||||
58: TypePointer Output 7(fvec4)
|
||||
59(@entryPointOutput.color): 58(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
52:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
53: 7(fvec4) CompositeExtract 52 0
|
||||
Store 51(@entryPointOutput.color) 53
|
||||
60:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
61: 7(fvec4) CompositeExtract 60 0
|
||||
Store 59(@entryPointOutput.color) 61
|
||||
Return
|
||||
FunctionEnd
|
||||
10(@main():8(PS_OUTPUT) Function None 9
|
||||
@ -268,7 +336,13 @@ gl_FragCoord origin is upper left
|
||||
35(r10): 12(ptr) Variable Function
|
||||
36(r11): 12(ptr) Variable Function
|
||||
38(r12): 12(ptr) Variable Function
|
||||
40(ps_output): 39(ptr) Variable Function
|
||||
39(r13): 16(ptr) Variable Function
|
||||
40(r14): 16(ptr) Variable Function
|
||||
41(r15): 25(ptr) Variable Function
|
||||
43(r16): 25(ptr) Variable Function
|
||||
45(r17): 16(ptr) Variable Function
|
||||
46(r18): 25(ptr) Variable Function
|
||||
48(ps_output): 47(ptr) Variable Function
|
||||
Store 13(r00) 14
|
||||
Store 17(r01) 18
|
||||
Store 19(r02) 20
|
||||
@ -282,11 +356,17 @@ gl_FragCoord origin is upper left
|
||||
Store 35(r10) 14
|
||||
Store 36(r11) 37
|
||||
Store 38(r12) 37
|
||||
42: 24(int) Load 30(r07)
|
||||
43: 6(float) ConvertSToF 42
|
||||
44: 7(fvec4) CompositeConstruct 43 43 43 43
|
||||
46: 45(ptr) AccessChain 40(ps_output) 41
|
||||
Store 46 44
|
||||
47:8(PS_OUTPUT) Load 40(ps_output)
|
||||
ReturnValue 47
|
||||
Store 39(r13) 18
|
||||
Store 40(r14) 20
|
||||
Store 41(r15) 42
|
||||
Store 43(r16) 44
|
||||
Store 45(r17) 18
|
||||
Store 46(r18) 42
|
||||
50: 24(int) Load 30(r07)
|
||||
51: 6(float) ConvertSToF 50
|
||||
52: 7(fvec4) CompositeConstruct 51 51 51 51
|
||||
54: 53(ptr) AccessChain 48(ps_output) 49
|
||||
Store 54 52
|
||||
55:8(PS_OUTPUT) Load 48(ps_output)
|
||||
ReturnValue 55
|
||||
FunctionEnd
|
||||
|
109
Test/baseResults/hlsl.numericsuffixes.negative.frag.out
Normal file
109
Test/baseResults/hlsl.numericsuffixes.negative.frag.out
Normal file
@ -0,0 +1,109 @@
|
||||
hlsl.numericsuffixes.negative.frag
|
||||
ERROR: 0:7: '' : bad digit in binary literal
|
||||
ERROR: 0:8: '' : binary literal too big
|
||||
ERROR: 0:9: '' : bad digit in hexadecimal literal
|
||||
ERROR: 0:10: '' : hexadecimal literal too big
|
||||
ERROR: 4 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 500
|
||||
gl_FragCoord origin is upper left
|
||||
ERROR: node is still EOpNull!
|
||||
0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:5 Function Parameters:
|
||||
0:? Sequence
|
||||
0:7 Sequence
|
||||
0:7 move second child to first child ( temp uint)
|
||||
0:7 'r01' ( temp uint)
|
||||
0:7 Constant:
|
||||
0:7 0 (const uint)
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child ( temp uint)
|
||||
0:8 'r02' ( temp uint)
|
||||
0:8 Constant:
|
||||
0:8 4294967295 (const uint)
|
||||
0:10 Sequence
|
||||
0:9 move second child to first child ( temp uint)
|
||||
0:9 'r03' ( temp uint)
|
||||
0:9 Constant:
|
||||
0:9 0 (const uint)
|
||||
0:10 move second child to first child ( temp uint)
|
||||
0:10 'r04' ( temp uint)
|
||||
0:10 Constant:
|
||||
0:10 4294967295 (const uint)
|
||||
0:13 move second child to first child ( temp 4-component vector of float)
|
||||
0:13 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:13 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:13 Constant:
|
||||
0:13 0 (const int)
|
||||
0:13 Construct vec4 ( temp 4-component vector of float)
|
||||
0:13 Convert uint to float ( temp float)
|
||||
0:13 'r01' ( temp uint)
|
||||
0:14 Branch: Return with expression
|
||||
0:14 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:5 Function Definition: main( ( temp void)
|
||||
0:5 Function Parameters:
|
||||
0:? Sequence
|
||||
0:5 Sequence
|
||||
0:5 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||
0:5 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:5 Constant:
|
||||
0:5 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 500
|
||||
gl_FragCoord origin is upper left
|
||||
ERROR: node is still EOpNull!
|
||||
0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:5 Function Parameters:
|
||||
0:? Sequence
|
||||
0:7 Sequence
|
||||
0:7 move second child to first child ( temp uint)
|
||||
0:7 'r01' ( temp uint)
|
||||
0:7 Constant:
|
||||
0:7 0 (const uint)
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child ( temp uint)
|
||||
0:8 'r02' ( temp uint)
|
||||
0:8 Constant:
|
||||
0:8 4294967295 (const uint)
|
||||
0:10 Sequence
|
||||
0:9 move second child to first child ( temp uint)
|
||||
0:9 'r03' ( temp uint)
|
||||
0:9 Constant:
|
||||
0:9 0 (const uint)
|
||||
0:10 move second child to first child ( temp uint)
|
||||
0:10 'r04' ( temp uint)
|
||||
0:10 Constant:
|
||||
0:10 4294967295 (const uint)
|
||||
0:13 move second child to first child ( temp 4-component vector of float)
|
||||
0:13 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:13 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:13 Constant:
|
||||
0:13 0 (const int)
|
||||
0:13 Construct vec4 ( temp 4-component vector of float)
|
||||
0:13 Convert uint to float ( temp float)
|
||||
0:13 'r01' ( temp uint)
|
||||
0:14 Branch: Return with expression
|
||||
0:14 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:5 Function Definition: main( ( temp void)
|
||||
0:5 Function Parameters:
|
||||
0:? Sequence
|
||||
0:5 Sequence
|
||||
0:5 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||
0:5 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:5 Constant:
|
||||
0:5 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
@ -9,7 +9,7 @@ struct A
|
||||
float4 a;
|
||||
float4 b;
|
||||
float4 c = { 1, 2, 3, 4 };
|
||||
float4 d = {({ {(({ 1, 2, 3, 4 }))} })}, { { 1, 2, 3, 4 } };
|
||||
float4 d = { ({ { ( ({ 1, 2, 3, 4 })) } }) }, { { 1, 2, 3, 4 } };
|
||||
};
|
||||
|
||||
void main()
|
||||
|
402
Test/baseResults/hlsl.structcopy.comp.out
Normal file
402
Test/baseResults/hlsl.structcopy.comp.out
Normal file
@ -0,0 +1,402 @@
|
||||
hlsl.structcopy.comp
|
||||
Shader version: 500
|
||||
local_size = (128, 1, 1)
|
||||
0:? Sequence
|
||||
0:20 Function Definition: @main(u1; ( temp void)
|
||||
0:20 Function Parameters:
|
||||
0:20 'id' ( in uint)
|
||||
0:? Sequence
|
||||
0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 1 (const uint)
|
||||
0:21 2 (const uint)
|
||||
0:21 3 (const uint)
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp uint)
|
||||
0:22 'count' ( temp uint)
|
||||
0:22 count: direct index for structure ( temp uint)
|
||||
0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
|
||||
0:22 Constant:
|
||||
0:22 0 (const uint)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit
|
||||
0:23 Condition
|
||||
0:23 Compare Greater Than ( temp bool)
|
||||
0:23 'id' ( in uint)
|
||||
0:23 'count' ( temp uint)
|
||||
0:23 true case
|
||||
0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 subtract ( temp uint)
|
||||
0:23 'id' ( in uint)
|
||||
0:23 'count' ( temp uint)
|
||||
0:23 false case
|
||||
0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
|
||||
0:23 Constant:
|
||||
0:23 0 (const uint)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:23 'id' ( in uint)
|
||||
0:25 AtomicAdd ( temp uint)
|
||||
0:25 a: direct index for structure ( temp uint)
|
||||
0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:25 Constant:
|
||||
0:25 0 (const uint)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 a: direct index for structure ( temp uint)
|
||||
0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:26 AtomicAdd ( temp uint)
|
||||
0:26 b: direct index for structure ( temp uint)
|
||||
0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:26 Constant:
|
||||
0:26 0 (const uint)
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 b: direct index for structure ( temp uint)
|
||||
0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:27 AtomicAdd ( temp uint)
|
||||
0:27 c: direct index for structure ( temp uint)
|
||||
0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:27 Constant:
|
||||
0:27 0 (const uint)
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 c: direct index for structure ( temp uint)
|
||||
0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:20 Function Definition: main( ( temp void)
|
||||
0:20 Function Parameters:
|
||||
0:? Sequence
|
||||
0:20 move second child to first child ( temp uint)
|
||||
0:? 'id' ( temp uint)
|
||||
0:? 'id' ( in uint LocalInvocationIndex)
|
||||
0:20 Function Call: @main(u1; ( temp void)
|
||||
0:? 'id' ( temp uint)
|
||||
0:? Linker Objects
|
||||
0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
|
||||
0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:? 1 (const uint)
|
||||
0:? 2 (const uint)
|
||||
0:? 3 (const uint)
|
||||
0:? 'id' ( in uint LocalInvocationIndex)
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 500
|
||||
local_size = (128, 1, 1)
|
||||
0:? Sequence
|
||||
0:20 Function Definition: @main(u1; ( temp void)
|
||||
0:20 Function Parameters:
|
||||
0:20 'id' ( in uint)
|
||||
0:? Sequence
|
||||
0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 1 (const uint)
|
||||
0:21 2 (const uint)
|
||||
0:21 3 (const uint)
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp uint)
|
||||
0:22 'count' ( temp uint)
|
||||
0:22 count: direct index for structure ( temp uint)
|
||||
0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
|
||||
0:22 Constant:
|
||||
0:22 0 (const uint)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit
|
||||
0:23 Condition
|
||||
0:23 Compare Greater Than ( temp bool)
|
||||
0:23 'id' ( in uint)
|
||||
0:23 'count' ( temp uint)
|
||||
0:23 true case
|
||||
0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 subtract ( temp uint)
|
||||
0:23 'id' ( in uint)
|
||||
0:23 'count' ( temp uint)
|
||||
0:23 false case
|
||||
0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
|
||||
0:23 Constant:
|
||||
0:23 0 (const uint)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:23 'id' ( in uint)
|
||||
0:25 AtomicAdd ( temp uint)
|
||||
0:25 a: direct index for structure ( temp uint)
|
||||
0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:25 Constant:
|
||||
0:25 0 (const uint)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 a: direct index for structure ( temp uint)
|
||||
0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:26 AtomicAdd ( temp uint)
|
||||
0:26 b: direct index for structure ( temp uint)
|
||||
0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:26 Constant:
|
||||
0:26 0 (const uint)
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 b: direct index for structure ( temp uint)
|
||||
0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:27 AtomicAdd ( temp uint)
|
||||
0:27 c: direct index for structure ( temp uint)
|
||||
0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:27 Constant:
|
||||
0:27 0 (const uint)
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 c: direct index for structure ( temp uint)
|
||||
0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:20 Function Definition: main( ( temp void)
|
||||
0:20 Function Parameters:
|
||||
0:? Sequence
|
||||
0:20 move second child to first child ( temp uint)
|
||||
0:? 'id' ( temp uint)
|
||||
0:? 'id' ( in uint LocalInvocationIndex)
|
||||
0:20 Function Call: @main(u1; ( temp void)
|
||||
0:? 'id' ( temp uint)
|
||||
0:? Linker Objects
|
||||
0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
|
||||
0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:? 1 (const uint)
|
||||
0:? 2 (const uint)
|
||||
0:? 3 (const uint)
|
||||
0:? 'id' ( in uint LocalInvocationIndex)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 88
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 83
|
||||
ExecutionMode 4 LocalSize 128 1 1
|
||||
Source HLSL 500
|
||||
Name 4 "main"
|
||||
Name 10 "@main(u1;"
|
||||
Name 9 "id"
|
||||
Name 12 "MyStruct"
|
||||
MemberName 12(MyStruct) 0 "a"
|
||||
MemberName 12(MyStruct) 1 "b"
|
||||
MemberName 12(MyStruct) 2 "c"
|
||||
Name 16 "s"
|
||||
Name 25 "count"
|
||||
Name 26 "MyStruct"
|
||||
MemberName 26(MyStruct) 0 "a"
|
||||
MemberName 26(MyStruct) 1 "b"
|
||||
MemberName 26(MyStruct) 2 "c"
|
||||
Name 28 "MyStructs"
|
||||
MemberName 28(MyStructs) 0 "count"
|
||||
MemberName 28(MyStructs) 1 "data"
|
||||
Name 30 "sb"
|
||||
MemberName 30(sb) 0 "@data"
|
||||
Name 32 "sb"
|
||||
Name 37 "ms"
|
||||
Name 65 "o"
|
||||
MemberName 65(o) 0 "@data"
|
||||
Name 67 "o"
|
||||
Name 81 "id"
|
||||
Name 83 "id"
|
||||
Name 85 "param"
|
||||
MemberDecorate 26(MyStruct) 0 Offset 0
|
||||
MemberDecorate 26(MyStruct) 1 Offset 4
|
||||
MemberDecorate 26(MyStruct) 2 Offset 8
|
||||
Decorate 27 ArrayStride 12
|
||||
MemberDecorate 28(MyStructs) 0 Offset 0
|
||||
MemberDecorate 28(MyStructs) 1 Offset 4
|
||||
Decorate 28(MyStructs) BufferBlock
|
||||
Decorate 29 ArrayStride 16
|
||||
MemberDecorate 30(sb) 0 NonWritable
|
||||
MemberDecorate 30(sb) 0 Offset 0
|
||||
Decorate 30(sb) BufferBlock
|
||||
Decorate 32(sb) DescriptorSet 0
|
||||
Decorate 32(sb) Binding 0
|
||||
Decorate 64 ArrayStride 12
|
||||
MemberDecorate 65(o) 0 NonWritable
|
||||
MemberDecorate 65(o) 0 Offset 0
|
||||
Decorate 65(o) BufferBlock
|
||||
Decorate 67(o) DescriptorSet 0
|
||||
Decorate 67(o) Binding 1
|
||||
Decorate 83(id) BuiltIn LocalInvocationIndex
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
7: TypePointer Function 6(int)
|
||||
8: TypeFunction 2 7(ptr)
|
||||
12(MyStruct): TypeStruct 6(int) 6(int) 6(int)
|
||||
13: 6(int) Constant 128
|
||||
14: TypeArray 12(MyStruct) 13
|
||||
15: TypePointer Workgroup 14
|
||||
16(s): 15(ptr) Variable Workgroup
|
||||
17: TypeInt 32 1
|
||||
18: 17(int) Constant 0
|
||||
19: 6(int) Constant 1
|
||||
20: 6(int) Constant 2
|
||||
21: 6(int) Constant 3
|
||||
22:12(MyStruct) ConstantComposite 19 20 21
|
||||
23: TypePointer Workgroup 12(MyStruct)
|
||||
26(MyStruct): TypeStruct 6(int) 6(int) 6(int)
|
||||
27: TypeRuntimeArray 26(MyStruct)
|
||||
28(MyStructs): TypeStruct 6(int) 27
|
||||
29: TypeRuntimeArray 28(MyStructs)
|
||||
30(sb): TypeStruct 29
|
||||
31: TypePointer Uniform 30(sb)
|
||||
32(sb): 31(ptr) Variable Uniform
|
||||
33: TypePointer Uniform 6(int)
|
||||
36: TypePointer Function 12(MyStruct)
|
||||
40: TypeBool
|
||||
47: 17(int) Constant 1
|
||||
49: TypePointer Uniform 26(MyStruct)
|
||||
61: 17(int) Constant 2
|
||||
64: TypeRuntimeArray 26(MyStruct)
|
||||
65(o): TypeStruct 64
|
||||
66: TypePointer Uniform 65(o)
|
||||
67(o): 66(ptr) Variable Uniform
|
||||
71: 6(int) Constant 0
|
||||
82: TypePointer Input 6(int)
|
||||
83(id): 82(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
81(id): 7(ptr) Variable Function
|
||||
85(param): 7(ptr) Variable Function
|
||||
84: 6(int) Load 83(id)
|
||||
Store 81(id) 84
|
||||
86: 6(int) Load 81(id)
|
||||
Store 85(param) 86
|
||||
87: 2 FunctionCall 10(@main(u1;) 85(param)
|
||||
Return
|
||||
FunctionEnd
|
||||
10(@main(u1;): 2 Function None 8
|
||||
9(id): 7(ptr) FunctionParameter
|
||||
11: Label
|
||||
25(count): 7(ptr) Variable Function
|
||||
37(ms): 36(ptr) Variable Function
|
||||
52: 36(ptr) Variable Function
|
||||
24: 23(ptr) AccessChain 16(s) 18
|
||||
Store 24 22
|
||||
34: 33(ptr) AccessChain 32(sb) 18 18 18
|
||||
35: 6(int) Load 34
|
||||
Store 25(count) 35
|
||||
38: 6(int) Load 9(id)
|
||||
39: 6(int) Load 25(count)
|
||||
41: 40(bool) UGreaterThan 38 39
|
||||
42: 6(int) Load 9(id)
|
||||
43: 6(int) Load 25(count)
|
||||
44: 6(int) ISub 42 43
|
||||
45: 23(ptr) AccessChain 16(s) 44
|
||||
46:12(MyStruct) Load 45
|
||||
48: 6(int) Load 9(id)
|
||||
50: 49(ptr) AccessChain 32(sb) 18 18 47 48
|
||||
51:26(MyStruct) Load 50
|
||||
SelectionMerge 54 None
|
||||
BranchConditional 41 53 55
|
||||
53: Label
|
||||
Store 52 46
|
||||
Branch 54
|
||||
55: Label
|
||||
56: 6(int) CompositeExtract 51 0
|
||||
57: 7(ptr) AccessChain 52 18
|
||||
Store 57 56
|
||||
58: 6(int) CompositeExtract 51 1
|
||||
59: 7(ptr) AccessChain 52 47
|
||||
Store 59 58
|
||||
60: 6(int) CompositeExtract 51 2
|
||||
62: 7(ptr) AccessChain 52 61
|
||||
Store 62 60
|
||||
Branch 54
|
||||
54: Label
|
||||
63:12(MyStruct) Load 52
|
||||
Store 37(ms) 63
|
||||
68: 33(ptr) AccessChain 67(o) 18 18 18
|
||||
69: 7(ptr) AccessChain 37(ms) 18
|
||||
70: 6(int) Load 69
|
||||
72: 6(int) AtomicIAdd 68 19 71 70
|
||||
73: 33(ptr) AccessChain 67(o) 18 18 47
|
||||
74: 7(ptr) AccessChain 37(ms) 47
|
||||
75: 6(int) Load 74
|
||||
76: 6(int) AtomicIAdd 73 19 71 75
|
||||
77: 33(ptr) AccessChain 67(o) 18 18 61
|
||||
78: 7(ptr) AccessChain 37(ms) 61
|
||||
79: 6(int) Load 78
|
||||
80: 6(int) AtomicIAdd 77 19 71 79
|
||||
Return
|
||||
FunctionEnd
|
385
Test/baseResults/hlsl.structcopylogical.comp.out
Normal file
385
Test/baseResults/hlsl.structcopylogical.comp.out
Normal file
@ -0,0 +1,385 @@
|
||||
hlsl.structcopylogical.comp
|
||||
Shader version: 500
|
||||
local_size = (128, 1, 1)
|
||||
0:? Sequence
|
||||
0:20 Function Definition: @main(u1; ( temp void)
|
||||
0:20 Function Parameters:
|
||||
0:20 'id' ( in uint)
|
||||
0:? Sequence
|
||||
0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 1 (const uint)
|
||||
0:21 2 (const uint)
|
||||
0:21 3 (const uint)
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp uint)
|
||||
0:22 'count' ( temp uint)
|
||||
0:22 count: direct index for structure ( temp uint)
|
||||
0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
|
||||
0:22 Constant:
|
||||
0:22 0 (const uint)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit
|
||||
0:23 Condition
|
||||
0:23 Compare Greater Than ( temp bool)
|
||||
0:23 'id' ( in uint)
|
||||
0:23 'count' ( temp uint)
|
||||
0:23 true case
|
||||
0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 subtract ( temp uint)
|
||||
0:23 'id' ( in uint)
|
||||
0:23 'count' ( temp uint)
|
||||
0:23 false case
|
||||
0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
|
||||
0:23 Constant:
|
||||
0:23 0 (const uint)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:23 'id' ( in uint)
|
||||
0:25 AtomicAdd ( temp uint)
|
||||
0:25 a: direct index for structure ( temp uint)
|
||||
0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:25 Constant:
|
||||
0:25 0 (const uint)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 a: direct index for structure ( temp uint)
|
||||
0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:26 AtomicAdd ( temp uint)
|
||||
0:26 b: direct index for structure ( temp uint)
|
||||
0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:26 Constant:
|
||||
0:26 0 (const uint)
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 b: direct index for structure ( temp uint)
|
||||
0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:27 AtomicAdd ( temp uint)
|
||||
0:27 c: direct index for structure ( temp uint)
|
||||
0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:27 Constant:
|
||||
0:27 0 (const uint)
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 c: direct index for structure ( temp uint)
|
||||
0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:20 Function Definition: main( ( temp void)
|
||||
0:20 Function Parameters:
|
||||
0:? Sequence
|
||||
0:20 move second child to first child ( temp uint)
|
||||
0:? 'id' ( temp uint)
|
||||
0:? 'id' ( in uint LocalInvocationIndex)
|
||||
0:20 Function Call: @main(u1; ( temp void)
|
||||
0:? 'id' ( temp uint)
|
||||
0:? Linker Objects
|
||||
0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
|
||||
0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:? 1 (const uint)
|
||||
0:? 2 (const uint)
|
||||
0:? 3 (const uint)
|
||||
0:? 'id' ( in uint LocalInvocationIndex)
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 500
|
||||
local_size = (128, 1, 1)
|
||||
0:? Sequence
|
||||
0:20 Function Definition: @main(u1; ( temp void)
|
||||
0:20 Function Parameters:
|
||||
0:20 'id' ( in uint)
|
||||
0:? Sequence
|
||||
0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 1 (const uint)
|
||||
0:21 2 (const uint)
|
||||
0:21 3 (const uint)
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp uint)
|
||||
0:22 'count' ( temp uint)
|
||||
0:22 count: direct index for structure ( temp uint)
|
||||
0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
|
||||
0:22 Constant:
|
||||
0:22 0 (const uint)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit
|
||||
0:23 Condition
|
||||
0:23 Compare Greater Than ( temp bool)
|
||||
0:23 'id' ( in uint)
|
||||
0:23 'count' ( temp uint)
|
||||
0:23 true case
|
||||
0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 subtract ( temp uint)
|
||||
0:23 'id' ( in uint)
|
||||
0:23 'count' ( temp uint)
|
||||
0:23 false case
|
||||
0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
|
||||
0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
|
||||
0:23 Constant:
|
||||
0:23 0 (const uint)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:23 'id' ( in uint)
|
||||
0:25 AtomicAdd ( temp uint)
|
||||
0:25 a: direct index for structure ( temp uint)
|
||||
0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:25 Constant:
|
||||
0:25 0 (const uint)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 a: direct index for structure ( temp uint)
|
||||
0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:26 AtomicAdd ( temp uint)
|
||||
0:26 b: direct index for structure ( temp uint)
|
||||
0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:26 Constant:
|
||||
0:26 0 (const uint)
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 b: direct index for structure ( temp uint)
|
||||
0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:27 AtomicAdd ( temp uint)
|
||||
0:27 c: direct index for structure ( temp uint)
|
||||
0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:27 Constant:
|
||||
0:27 0 (const uint)
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 c: direct index for structure ( temp uint)
|
||||
0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:20 Function Definition: main( ( temp void)
|
||||
0:20 Function Parameters:
|
||||
0:? Sequence
|
||||
0:20 move second child to first child ( temp uint)
|
||||
0:? 'id' ( temp uint)
|
||||
0:? 'id' ( in uint LocalInvocationIndex)
|
||||
0:20 Function Call: @main(u1; ( temp void)
|
||||
0:? 'id' ( temp uint)
|
||||
0:? Linker Objects
|
||||
0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
|
||||
0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
|
||||
0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c})
|
||||
0:? 1 (const uint)
|
||||
0:? 2 (const uint)
|
||||
0:? 3 (const uint)
|
||||
0:? 'id' ( in uint LocalInvocationIndex)
|
||||
|
||||
// Module Version 10600
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 79
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 16 32 57 74
|
||||
ExecutionMode 4 LocalSize 128 1 1
|
||||
Source HLSL 500
|
||||
Name 4 "main"
|
||||
Name 10 "@main(u1;"
|
||||
Name 9 "id"
|
||||
Name 12 "MyStruct"
|
||||
MemberName 12(MyStruct) 0 "a"
|
||||
MemberName 12(MyStruct) 1 "b"
|
||||
MemberName 12(MyStruct) 2 "c"
|
||||
Name 16 "s"
|
||||
Name 25 "count"
|
||||
Name 26 "MyStruct"
|
||||
MemberName 26(MyStruct) 0 "a"
|
||||
MemberName 26(MyStruct) 1 "b"
|
||||
MemberName 26(MyStruct) 2 "c"
|
||||
Name 28 "MyStructs"
|
||||
MemberName 28(MyStructs) 0 "count"
|
||||
MemberName 28(MyStructs) 1 "data"
|
||||
Name 30 "sb"
|
||||
MemberName 30(sb) 0 "@data"
|
||||
Name 32 "sb"
|
||||
Name 37 "ms"
|
||||
Name 55 "o"
|
||||
MemberName 55(o) 0 "@data"
|
||||
Name 57 "o"
|
||||
Name 72 "id"
|
||||
Name 74 "id"
|
||||
Name 76 "param"
|
||||
MemberDecorate 26(MyStruct) 0 Offset 0
|
||||
MemberDecorate 26(MyStruct) 1 Offset 4
|
||||
MemberDecorate 26(MyStruct) 2 Offset 8
|
||||
Decorate 27 ArrayStride 12
|
||||
MemberDecorate 28(MyStructs) 0 Offset 0
|
||||
MemberDecorate 28(MyStructs) 1 Offset 4
|
||||
Decorate 28(MyStructs) Block
|
||||
Decorate 29 ArrayStride 16
|
||||
MemberDecorate 30(sb) 0 NonWritable
|
||||
MemberDecorate 30(sb) 0 Offset 0
|
||||
Decorate 30(sb) Block
|
||||
Decorate 32(sb) DescriptorSet 0
|
||||
Decorate 32(sb) Binding 0
|
||||
Decorate 54 ArrayStride 12
|
||||
MemberDecorate 55(o) 0 NonWritable
|
||||
MemberDecorate 55(o) 0 Offset 0
|
||||
Decorate 55(o) Block
|
||||
Decorate 57(o) DescriptorSet 0
|
||||
Decorate 57(o) Binding 1
|
||||
Decorate 74(id) BuiltIn LocalInvocationIndex
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
7: TypePointer Function 6(int)
|
||||
8: TypeFunction 2 7(ptr)
|
||||
12(MyStruct): TypeStruct 6(int) 6(int) 6(int)
|
||||
13: 6(int) Constant 128
|
||||
14: TypeArray 12(MyStruct) 13
|
||||
15: TypePointer Workgroup 14
|
||||
16(s): 15(ptr) Variable Workgroup
|
||||
17: TypeInt 32 1
|
||||
18: 17(int) Constant 0
|
||||
19: 6(int) Constant 1
|
||||
20: 6(int) Constant 2
|
||||
21: 6(int) Constant 3
|
||||
22:12(MyStruct) ConstantComposite 19 20 21
|
||||
23: TypePointer Workgroup 12(MyStruct)
|
||||
26(MyStruct): TypeStruct 6(int) 6(int) 6(int)
|
||||
27: TypeRuntimeArray 26(MyStruct)
|
||||
28(MyStructs): TypeStruct 6(int) 27
|
||||
29: TypeRuntimeArray 28(MyStructs)
|
||||
30(sb): TypeStruct 29
|
||||
31: TypePointer StorageBuffer 30(sb)
|
||||
32(sb): 31(ptr) Variable StorageBuffer
|
||||
33: TypePointer StorageBuffer 6(int)
|
||||
36: TypePointer Function 12(MyStruct)
|
||||
40: TypeBool
|
||||
47: 17(int) Constant 1
|
||||
49: TypePointer StorageBuffer 26(MyStruct)
|
||||
54: TypeRuntimeArray 26(MyStruct)
|
||||
55(o): TypeStruct 54
|
||||
56: TypePointer StorageBuffer 55(o)
|
||||
57(o): 56(ptr) Variable StorageBuffer
|
||||
61: 6(int) Constant 0
|
||||
67: 17(int) Constant 2
|
||||
73: TypePointer Input 6(int)
|
||||
74(id): 73(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
72(id): 7(ptr) Variable Function
|
||||
76(param): 7(ptr) Variable Function
|
||||
75: 6(int) Load 74(id)
|
||||
Store 72(id) 75
|
||||
77: 6(int) Load 72(id)
|
||||
Store 76(param) 77
|
||||
78: 2 FunctionCall 10(@main(u1;) 76(param)
|
||||
Return
|
||||
FunctionEnd
|
||||
10(@main(u1;): 2 Function None 8
|
||||
9(id): 7(ptr) FunctionParameter
|
||||
11: Label
|
||||
25(count): 7(ptr) Variable Function
|
||||
37(ms): 36(ptr) Variable Function
|
||||
24: 23(ptr) AccessChain 16(s) 18
|
||||
Store 24 22
|
||||
34: 33(ptr) AccessChain 32(sb) 18 18 18
|
||||
35: 6(int) Load 34
|
||||
Store 25(count) 35
|
||||
38: 6(int) Load 9(id)
|
||||
39: 6(int) Load 25(count)
|
||||
41: 40(bool) UGreaterThan 38 39
|
||||
42: 6(int) Load 9(id)
|
||||
43: 6(int) Load 25(count)
|
||||
44: 6(int) ISub 42 43
|
||||
45: 23(ptr) AccessChain 16(s) 44
|
||||
46:12(MyStruct) Load 45
|
||||
48: 6(int) Load 9(id)
|
||||
50: 49(ptr) AccessChain 32(sb) 18 18 47 48
|
||||
51:26(MyStruct) Load 50
|
||||
52:12(MyStruct) CopyLogical 51
|
||||
53:12(MyStruct) Select 41 46 52
|
||||
Store 37(ms) 53
|
||||
58: 33(ptr) AccessChain 57(o) 18 18 18
|
||||
59: 7(ptr) AccessChain 37(ms) 18
|
||||
60: 6(int) Load 59
|
||||
62: 6(int) AtomicIAdd 58 19 61 60
|
||||
63: 33(ptr) AccessChain 57(o) 18 18 47
|
||||
64: 7(ptr) AccessChain 37(ms) 47
|
||||
65: 6(int) Load 64
|
||||
66: 6(int) AtomicIAdd 63 19 61 65
|
||||
68: 33(ptr) AccessChain 57(o) 18 18 67
|
||||
69: 7(ptr) AccessChain 37(ms) 67
|
||||
70: 6(int) Load 69
|
||||
71: 6(int) AtomicIAdd 68 19 61 70
|
||||
Return
|
||||
FunctionEnd
|
@ -2331,7 +2331,7 @@ local_size = (32, 16, 1)
|
||||
MemberDecorate 20(Types) 3 Offset 64
|
||||
Decorate 21 ArrayStride 96
|
||||
MemberDecorate 22(data) 0 Offset 0
|
||||
Decorate 22(data) BufferBlock
|
||||
Decorate 22(data) Block
|
||||
Decorate 24(data) DescriptorSet 0
|
||||
Decorate 24(data) Binding 0
|
||||
Decorate 388(dti) BuiltIn GlobalInvocationId
|
||||
@ -2351,31 +2351,31 @@ local_size = (32, 16, 1)
|
||||
20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
|
||||
21: TypeRuntimeArray 20(Types)
|
||||
22(data): TypeStruct 21
|
||||
23: TypePointer Uniform 22(data)
|
||||
24(data): 23(ptr) Variable Uniform
|
||||
23: TypePointer StorageBuffer 22(data)
|
||||
24(data): 23(ptr) Variable StorageBuffer
|
||||
25: 14(int) Constant 0
|
||||
26: 6(int) Constant 0
|
||||
27: TypePointer Function 6(int)
|
||||
32: TypePointer Uniform 13(ivec4)
|
||||
32: TypePointer StorageBuffer 13(ivec4)
|
||||
35: 6(int) Constant 13
|
||||
36: 6(int) Constant 3
|
||||
43: TypePointer Uniform 6(int)
|
||||
43: TypePointer StorageBuffer 6(int)
|
||||
52: TypeVector 6(int) 2
|
||||
59: 6(int) Constant 1
|
||||
74: 6(int) Constant 2
|
||||
79: 14(int) Constant 1
|
||||
82: TypePointer Uniform 15(ivec4)
|
||||
91: TypePointer Uniform 14(int)
|
||||
82: TypePointer StorageBuffer 15(ivec4)
|
||||
91: TypePointer StorageBuffer 14(int)
|
||||
100: TypeVector 14(int) 2
|
||||
113: TypeVector 14(int) 3
|
||||
126: 14(int) Constant 2
|
||||
129: TypePointer Uniform 17(fvec4)
|
||||
138: TypePointer Uniform 16(float)
|
||||
129: TypePointer StorageBuffer 17(fvec4)
|
||||
138: TypePointer StorageBuffer 16(float)
|
||||
147: TypeVector 16(float) 2
|
||||
160: TypeVector 16(float) 3
|
||||
173: 14(int) Constant 3
|
||||
176: TypePointer Uniform 19(f64vec4)
|
||||
185: TypePointer Uniform 18(float64_t)
|
||||
176: TypePointer StorageBuffer 19(f64vec4)
|
||||
185: TypePointer StorageBuffer 18(float64_t)
|
||||
194: TypeVector 18(float64_t) 2
|
||||
207: TypeVector 18(float64_t) 3
|
||||
387: TypePointer Input 7(ivec3)
|
||||
|
@ -2355,7 +2355,7 @@ local_size = (32, 16, 1)
|
||||
MemberDecorate 20(Types) 3 Offset 64
|
||||
Decorate 21 ArrayStride 96
|
||||
MemberDecorate 22(data) 0 Offset 0
|
||||
Decorate 22(data) BufferBlock
|
||||
Decorate 22(data) Block
|
||||
Decorate 24(data) DescriptorSet 0
|
||||
Decorate 24(data) Binding 0
|
||||
Decorate 398(dti) BuiltIn GlobalInvocationId
|
||||
@ -2375,30 +2375,30 @@ local_size = (32, 16, 1)
|
||||
20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
|
||||
21: TypeRuntimeArray 20(Types)
|
||||
22(data): TypeStruct 21
|
||||
23: TypePointer Uniform 22(data)
|
||||
24(data): 23(ptr) Variable Uniform
|
||||
23: TypePointer StorageBuffer 22(data)
|
||||
24(data): 23(ptr) Variable StorageBuffer
|
||||
25: 14(int) Constant 0
|
||||
26: 6(int) Constant 0
|
||||
27: TypePointer Function 6(int)
|
||||
32: TypePointer Uniform 13(ivec4)
|
||||
32: TypePointer StorageBuffer 13(ivec4)
|
||||
35: 6(int) Constant 3
|
||||
42: TypePointer Uniform 6(int)
|
||||
42: TypePointer StorageBuffer 6(int)
|
||||
51: TypeVector 6(int) 2
|
||||
58: 6(int) Constant 1
|
||||
73: 6(int) Constant 2
|
||||
78: 14(int) Constant 1
|
||||
81: TypePointer Uniform 15(ivec4)
|
||||
90: TypePointer Uniform 14(int)
|
||||
81: TypePointer StorageBuffer 15(ivec4)
|
||||
90: TypePointer StorageBuffer 14(int)
|
||||
99: TypeVector 14(int) 2
|
||||
112: TypeVector 14(int) 3
|
||||
125: 14(int) Constant 2
|
||||
128: TypePointer Uniform 17(fvec4)
|
||||
137: TypePointer Uniform 16(float)
|
||||
128: TypePointer StorageBuffer 17(fvec4)
|
||||
137: TypePointer StorageBuffer 16(float)
|
||||
146: TypeVector 16(float) 2
|
||||
159: TypeVector 16(float) 3
|
||||
172: 14(int) Constant 3
|
||||
175: TypePointer Uniform 19(f64vec4)
|
||||
184: TypePointer Uniform 18(float64_t)
|
||||
175: TypePointer StorageBuffer 19(f64vec4)
|
||||
184: TypePointer StorageBuffer 18(float64_t)
|
||||
193: TypeVector 18(float64_t) 2
|
||||
206: TypeVector 18(float64_t) 3
|
||||
391: TypeBool
|
||||
|
@ -8058,7 +8058,7 @@ local_size = (32, 16, 1)
|
||||
MemberDecorate 20(Types) 3 Offset 64
|
||||
Decorate 21 ArrayStride 96
|
||||
MemberDecorate 22(data) 0 Offset 0
|
||||
Decorate 22(data) BufferBlock
|
||||
Decorate 22(data) Block
|
||||
Decorate 24(data) DescriptorSet 0
|
||||
Decorate 24(data) Binding 0
|
||||
Decorate 1227(dti) BuiltIn GlobalInvocationId
|
||||
@ -8078,30 +8078,30 @@ local_size = (32, 16, 1)
|
||||
20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
|
||||
21: TypeRuntimeArray 20(Types)
|
||||
22(data): TypeStruct 21
|
||||
23: TypePointer Uniform 22(data)
|
||||
24(data): 23(ptr) Variable Uniform
|
||||
23: TypePointer StorageBuffer 22(data)
|
||||
24(data): 23(ptr) Variable StorageBuffer
|
||||
25: 14(int) Constant 0
|
||||
26: 6(int) Constant 0
|
||||
27: TypePointer Function 6(int)
|
||||
32: TypePointer Uniform 13(ivec4)
|
||||
32: TypePointer StorageBuffer 13(ivec4)
|
||||
35: 6(int) Constant 3
|
||||
42: TypePointer Uniform 6(int)
|
||||
42: TypePointer StorageBuffer 6(int)
|
||||
51: TypeVector 6(int) 2
|
||||
58: 6(int) Constant 1
|
||||
73: 6(int) Constant 2
|
||||
78: 14(int) Constant 1
|
||||
81: TypePointer Uniform 15(ivec4)
|
||||
90: TypePointer Uniform 14(int)
|
||||
81: TypePointer StorageBuffer 15(ivec4)
|
||||
90: TypePointer StorageBuffer 14(int)
|
||||
99: TypeVector 14(int) 2
|
||||
112: TypeVector 14(int) 3
|
||||
125: 14(int) Constant 2
|
||||
128: TypePointer Uniform 17(fvec4)
|
||||
137: TypePointer Uniform 16(float)
|
||||
128: TypePointer StorageBuffer 17(fvec4)
|
||||
137: TypePointer StorageBuffer 16(float)
|
||||
146: TypeVector 16(float) 2
|
||||
159: TypeVector 16(float) 3
|
||||
172: 14(int) Constant 3
|
||||
175: TypePointer Uniform 19(f64vec4)
|
||||
184: TypePointer Uniform 18(float64_t)
|
||||
175: TypePointer StorageBuffer 19(f64vec4)
|
||||
184: TypePointer StorageBuffer 18(float64_t)
|
||||
193: TypeVector 18(float64_t) 2
|
||||
206: TypeVector 18(float64_t) 3
|
||||
1226: TypePointer Input 7(ivec3)
|
||||
|
@ -79,7 +79,7 @@ local_size = (32, 16, 1)
|
||||
Name 21 "@gl_SubgroupSize"
|
||||
Decorate 9 ArrayStride 4
|
||||
MemberDecorate 10(data) 0 Offset 0
|
||||
Decorate 10(data) BufferBlock
|
||||
Decorate 10(data) Block
|
||||
Decorate 12(data) DescriptorSet 0
|
||||
Decorate 12(data) Binding 0
|
||||
Decorate 16(@gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
|
||||
@ -89,8 +89,8 @@ local_size = (32, 16, 1)
|
||||
8: TypeInt 32 0
|
||||
9: TypeRuntimeArray 8(int)
|
||||
10(data): TypeStruct 9
|
||||
11: TypePointer Uniform 10(data)
|
||||
12(data): 11(ptr) Variable Uniform
|
||||
11: TypePointer StorageBuffer 10(data)
|
||||
12(data): 11(ptr) Variable StorageBuffer
|
||||
13: TypeInt 32 1
|
||||
14: 13(int) Constant 0
|
||||
15: TypePointer Input 8(int)
|
||||
@ -99,7 +99,7 @@ local_size = (32, 16, 1)
|
||||
19: 8(int) Constant 3
|
||||
21(@gl_SubgroupSize): 15(ptr) Variable Input
|
||||
23: 8(int) Constant 0
|
||||
25: TypePointer Uniform 8(int)
|
||||
25: TypePointer StorageBuffer 8(int)
|
||||
4(CSMain): 2 Function None 3
|
||||
5: Label
|
||||
27: 2 FunctionCall 6(@CSMain()
|
||||
|
@ -6219,7 +6219,7 @@ local_size = (32, 16, 1)
|
||||
MemberDecorate 20(Types) 3 Offset 64
|
||||
Decorate 21 ArrayStride 96
|
||||
MemberDecorate 22(data) 0 Offset 0
|
||||
Decorate 22(data) BufferBlock
|
||||
Decorate 22(data) Block
|
||||
Decorate 24(data) DescriptorSet 0
|
||||
Decorate 24(data) Binding 0
|
||||
Decorate 986(dti) BuiltIn GlobalInvocationId
|
||||
@ -6239,30 +6239,30 @@ local_size = (32, 16, 1)
|
||||
20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
|
||||
21: TypeRuntimeArray 20(Types)
|
||||
22(data): TypeStruct 21
|
||||
23: TypePointer Uniform 22(data)
|
||||
24(data): 23(ptr) Variable Uniform
|
||||
23: TypePointer StorageBuffer 22(data)
|
||||
24(data): 23(ptr) Variable StorageBuffer
|
||||
25: 14(int) Constant 0
|
||||
26: 6(int) Constant 0
|
||||
27: TypePointer Function 6(int)
|
||||
32: TypePointer Uniform 13(ivec4)
|
||||
32: TypePointer StorageBuffer 13(ivec4)
|
||||
35: 6(int) Constant 3
|
||||
42: TypePointer Uniform 6(int)
|
||||
42: TypePointer StorageBuffer 6(int)
|
||||
51: TypeVector 6(int) 2
|
||||
58: 6(int) Constant 1
|
||||
73: 6(int) Constant 2
|
||||
78: 14(int) Constant 1
|
||||
81: TypePointer Uniform 15(ivec4)
|
||||
90: TypePointer Uniform 14(int)
|
||||
81: TypePointer StorageBuffer 15(ivec4)
|
||||
90: TypePointer StorageBuffer 14(int)
|
||||
99: TypeVector 14(int) 2
|
||||
112: TypeVector 14(int) 3
|
||||
125: 14(int) Constant 2
|
||||
128: TypePointer Uniform 17(fvec4)
|
||||
137: TypePointer Uniform 16(float)
|
||||
128: TypePointer StorageBuffer 17(fvec4)
|
||||
137: TypePointer StorageBuffer 16(float)
|
||||
146: TypeVector 16(float) 2
|
||||
159: TypeVector 16(float) 3
|
||||
172: 14(int) Constant 3
|
||||
175: TypePointer Uniform 19(f64vec4)
|
||||
184: TypePointer Uniform 18(float64_t)
|
||||
175: TypePointer StorageBuffer 19(f64vec4)
|
||||
184: TypePointer StorageBuffer 18(float64_t)
|
||||
193: TypeVector 18(float64_t) 2
|
||||
206: TypeVector 18(float64_t) 3
|
||||
979: TypeBool
|
||||
|
@ -228,7 +228,7 @@ local_size = (32, 16, 1)
|
||||
Name 72 "param"
|
||||
Decorate 14 ArrayStride 8
|
||||
MemberDecorate 15(data) 0 Offset 0
|
||||
Decorate 15(data) BufferBlock
|
||||
Decorate 15(data) Block
|
||||
Decorate 17(data) DescriptorSet 0
|
||||
Decorate 17(data) Binding 0
|
||||
Decorate 70(dti) BuiltIn GlobalInvocationId
|
||||
@ -241,8 +241,8 @@ local_size = (32, 16, 1)
|
||||
13: TypeInt 64 0
|
||||
14: TypeRuntimeArray 13(int64_t)
|
||||
15(data): TypeStruct 14
|
||||
16: TypePointer Uniform 15(data)
|
||||
17(data): 16(ptr) Variable Uniform
|
||||
16: TypePointer StorageBuffer 15(data)
|
||||
17(data): 16(ptr) Variable StorageBuffer
|
||||
18: TypeInt 32 1
|
||||
19: 18(int) Constant 0
|
||||
20: 6(int) Constant 0
|
||||
@ -251,7 +251,7 @@ local_size = (32, 16, 1)
|
||||
28: 6(int) Constant 3
|
||||
30: TypeVector 6(int) 4
|
||||
32: TypeVector 13(int64_t) 4
|
||||
35: TypePointer Uniform 13(int64_t)
|
||||
35: TypePointer StorageBuffer 13(int64_t)
|
||||
37: 6(int) Constant 1
|
||||
48: 6(int) Constant 2
|
||||
69: TypePointer Input 7(ivec3)
|
||||
|
115
Test/baseResults/implicitArraySize.vert.out
Normal file
115
Test/baseResults/implicitArraySize.vert.out
Normal file
@ -0,0 +1,115 @@
|
||||
implicitArraySize.vert
|
||||
Shader version: 460
|
||||
0:? Sequence
|
||||
0:5 Function Definition: main( ( global void)
|
||||
0:5 Function Parameters:
|
||||
0:6 Sequence
|
||||
0:6 move second child to first child ( temp float)
|
||||
0:6 direct index ( smooth temp float)
|
||||
0:6 'a' ( smooth out unsized 1-element array of float)
|
||||
0:6 Constant:
|
||||
0:6 0 (const int)
|
||||
0:6 Constant:
|
||||
0:6 0.100000
|
||||
0:7 move second child to first child ( temp float)
|
||||
0:7 direct index ( smooth temp float)
|
||||
0:7 'c' ( smooth out unsized 6-element array of float)
|
||||
0:7 Constant:
|
||||
0:7 5 (const int)
|
||||
0:7 Constant:
|
||||
0:7 0.100000
|
||||
0:? Linker Objects
|
||||
0:? 'a' ( smooth out unsized 1-element array of float)
|
||||
0:? 'c' ( smooth out unsized 6-element array of float)
|
||||
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
|
||||
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
|
||||
|
||||
implicitArraySize.frag
|
||||
Shader version: 460
|
||||
0:? Sequence
|
||||
0:6 Function Definition: main( ( global void)
|
||||
0:6 Function Parameters:
|
||||
0:7 Sequence
|
||||
0:7 move second child to first child ( temp float)
|
||||
0:7 direct index ( temp float)
|
||||
0:7 'b' ( out 5-element array of float)
|
||||
0:7 Constant:
|
||||
0:7 0 (const int)
|
||||
0:7 direct index ( smooth temp float)
|
||||
0:7 'a' ( smooth in unsized 2-element array of float)
|
||||
0:7 Constant:
|
||||
0:7 1 (const int)
|
||||
0:8 move second child to first child ( temp float)
|
||||
0:8 direct index ( temp float)
|
||||
0:8 'b' ( out 5-element array of float)
|
||||
0:8 Constant:
|
||||
0:8 1 (const int)
|
||||
0:8 direct index ( smooth temp float)
|
||||
0:8 'c' ( smooth in 3-element array of float)
|
||||
0:8 Constant:
|
||||
0:8 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'a' ( smooth in unsized 2-element array of float)
|
||||
0:? 'c' ( smooth in 3-element array of float)
|
||||
0:? 'b' ( out 5-element array of float)
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
ERROR: Linking vertex stage: Implicit size of unsized array doesn't match same symbol among multiple shaders.
|
||||
|
||||
Shader version: 460
|
||||
0:? Sequence
|
||||
0:5 Function Definition: main( ( global void)
|
||||
0:5 Function Parameters:
|
||||
0:6 Sequence
|
||||
0:6 move second child to first child ( temp float)
|
||||
0:6 direct index ( smooth temp float)
|
||||
0:6 'a' ( smooth out 1-element array of float)
|
||||
0:6 Constant:
|
||||
0:6 0 (const int)
|
||||
0:6 Constant:
|
||||
0:6 0.100000
|
||||
0:7 move second child to first child ( temp float)
|
||||
0:7 direct index ( smooth temp float)
|
||||
0:7 'c' ( smooth out 6-element array of float)
|
||||
0:7 Constant:
|
||||
0:7 5 (const int)
|
||||
0:7 Constant:
|
||||
0:7 0.100000
|
||||
0:? Linker Objects
|
||||
0:? 'a' ( smooth out 1-element array of float)
|
||||
0:? 'c' ( smooth out 6-element array of float)
|
||||
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
|
||||
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
|
||||
Shader version: 460
|
||||
0:? Sequence
|
||||
0:6 Function Definition: main( ( global void)
|
||||
0:6 Function Parameters:
|
||||
0:7 Sequence
|
||||
0:7 move second child to first child ( temp float)
|
||||
0:7 direct index ( temp float)
|
||||
0:7 'b' ( out 5-element array of float)
|
||||
0:7 Constant:
|
||||
0:7 0 (const int)
|
||||
0:7 direct index ( smooth temp float)
|
||||
0:7 'a' ( smooth in 2-element array of float)
|
||||
0:7 Constant:
|
||||
0:7 1 (const int)
|
||||
0:8 move second child to first child ( temp float)
|
||||
0:8 direct index ( temp float)
|
||||
0:8 'b' ( out 5-element array of float)
|
||||
0:8 Constant:
|
||||
0:8 1 (const int)
|
||||
0:8 direct index ( smooth temp float)
|
||||
0:8 'c' ( smooth in 3-element array of float)
|
||||
0:8 Constant:
|
||||
0:8 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'a' ( smooth in 2-element array of float)
|
||||
0:? 'c' ( smooth in 3-element array of float)
|
||||
0:? 'b' ( out 5-element array of float)
|
||||
|
99
Test/baseResults/implicitArraySize1.geom.out
Normal file
99
Test/baseResults/implicitArraySize1.geom.out
Normal file
@ -0,0 +1,99 @@
|
||||
implicitArraySize1.geom
|
||||
Shader version: 460
|
||||
invocations = -1
|
||||
max_vertices = 204
|
||||
input primitive = triangles
|
||||
output primitive = line_strip
|
||||
0:? Sequence
|
||||
0:11 Function Definition: main( ( global void)
|
||||
0:11 Function Parameters:
|
||||
0:12 Sequence
|
||||
0:12 Function Call: f( ( global void)
|
||||
0:13 move second child to first child ( temp float)
|
||||
0:13 direct index (layout( stream=0) temp float)
|
||||
0:13 'o' (layout( stream=0) out 3-element array of float)
|
||||
0:13 Constant:
|
||||
0:13 1 (const int)
|
||||
0:13 direct index ( temp float)
|
||||
0:13 direct index ( temp 3-element array of float)
|
||||
0:13 'g' ( in 3-element array of 3-element array of float)
|
||||
0:13 Constant:
|
||||
0:13 2 (const int)
|
||||
0:13 Constant:
|
||||
0:13 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'g' ( in 3-element array of 3-element array of float)
|
||||
0:? 'o' (layout( stream=0) out 3-element array of float)
|
||||
|
||||
implicitArraySize2.geom
|
||||
Shader version: 460
|
||||
invocations = -1
|
||||
max_vertices = -1
|
||||
input primitive = none
|
||||
output primitive = none
|
||||
0:? Sequence
|
||||
0:6 Function Definition: f( ( global void)
|
||||
0:6 Function Parameters:
|
||||
0:7 Sequence
|
||||
0:7 move second child to first child ( temp float)
|
||||
0:7 direct index (layout( stream=0) temp float)
|
||||
0:7 'o' (layout( stream=0) out unsized 2-element array of float)
|
||||
0:7 Constant:
|
||||
0:7 1 (const int)
|
||||
0:7 direct index ( temp float)
|
||||
0:7 direct index ( temp 3-element array of float)
|
||||
0:7 'g' ( in unsized 2-element array of 3-element array of float)
|
||||
0:7 Constant:
|
||||
0:7 1 (const int)
|
||||
0:7 Constant:
|
||||
0:7 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'g' ( in unsized 2-element array of 3-element array of float)
|
||||
0:? 'o' (layout( stream=0) out unsized 2-element array of float)
|
||||
|
||||
|
||||
Linked geometry stage:
|
||||
|
||||
ERROR: Linking geometry stage: Not all array sizes match across all geometry shaders in the program
|
||||
|
||||
Shader version: 460
|
||||
invocations = 1
|
||||
max_vertices = 204
|
||||
input primitive = triangles
|
||||
output primitive = line_strip
|
||||
0:? Sequence
|
||||
0:11 Function Definition: main( ( global void)
|
||||
0:11 Function Parameters:
|
||||
0:12 Sequence
|
||||
0:12 Function Call: f( ( global void)
|
||||
0:13 move second child to first child ( temp float)
|
||||
0:13 direct index (layout( stream=0) temp float)
|
||||
0:13 'o' (layout( stream=0) out 3-element array of float)
|
||||
0:13 Constant:
|
||||
0:13 1 (const int)
|
||||
0:13 direct index ( temp float)
|
||||
0:13 direct index ( temp 3-element array of float)
|
||||
0:13 'g' ( in 3-element array of 3-element array of float)
|
||||
0:13 Constant:
|
||||
0:13 2 (const int)
|
||||
0:13 Constant:
|
||||
0:13 1 (const int)
|
||||
0:6 Function Definition: f( ( global void)
|
||||
0:6 Function Parameters:
|
||||
0:7 Sequence
|
||||
0:7 move second child to first child ( temp float)
|
||||
0:7 direct index (layout( stream=0) temp float)
|
||||
0:7 'o' (layout( stream=0) out 2-element array of float)
|
||||
0:7 Constant:
|
||||
0:7 1 (const int)
|
||||
0:7 direct index ( temp float)
|
||||
0:7 direct index ( temp 3-element array of float)
|
||||
0:7 'g' ( in 2-element array of 3-element array of float)
|
||||
0:7 Constant:
|
||||
0:7 1 (const int)
|
||||
0:7 Constant:
|
||||
0:7 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'g' ( in 3-element array of 3-element array of float)
|
||||
0:? 'o' (layout( stream=0) out 3-element array of float)
|
||||
|
176
Test/baseResults/implicitArraySizeBuiltin.vert.out
Normal file
176
Test/baseResults/implicitArraySizeBuiltin.vert.out
Normal file
@ -0,0 +1,176 @@
|
||||
implicitArraySizeBuiltin.vert
|
||||
Shader version: 460
|
||||
0:? Sequence
|
||||
0:3 Function Definition: f1(f1; ( global void)
|
||||
0:3 Function Parameters:
|
||||
0:3 'x' ( in float)
|
||||
0:5 Sequence
|
||||
0:5 move second child to first child ( temp float)
|
||||
0:5 direct index ( temp float ClipDistance)
|
||||
0:5 gl_ClipDistance: direct index for structure ( out unsized 7-element array of float ClipDistance)
|
||||
0:5 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 7-element array of float ClipDistance gl_ClipDistance, out unsized 2-element array of float CullDistance gl_CullDistance})
|
||||
0:5 Constant:
|
||||
0:5 2 (const uint)
|
||||
0:5 Constant:
|
||||
0:5 6 (const int)
|
||||
0:5 'x' ( in float)
|
||||
0:6 move second child to first child ( temp float)
|
||||
0:6 direct index ( temp float CullDistance)
|
||||
0:6 gl_CullDistance: direct index for structure ( out unsized 2-element array of float CullDistance)
|
||||
0:6 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 7-element array of float ClipDistance gl_ClipDistance, out unsized 2-element array of float CullDistance gl_CullDistance})
|
||||
0:6 Constant:
|
||||
0:6 3 (const uint)
|
||||
0:6 Constant:
|
||||
0:6 1 (const int)
|
||||
0:6 'x' ( in float)
|
||||
0:9 Function Definition: main( ( global void)
|
||||
0:9 Function Parameters:
|
||||
0:10 Sequence
|
||||
0:10 Function Call: f1(f1; ( global void)
|
||||
0:10 Constant:
|
||||
0:10 0.100000
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 7-element array of float ClipDistance gl_ClipDistance, out unsized 2-element array of float CullDistance gl_CullDistance})
|
||||
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
|
||||
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
|
||||
|
||||
implicitArraySizeBuiltin.geom
|
||||
Shader version: 460
|
||||
invocations = -1
|
||||
max_vertices = 204
|
||||
input primitive = triangles
|
||||
output primitive = line_strip
|
||||
0:? Sequence
|
||||
0:6 Function Definition: f2(f1; ( global void)
|
||||
0:6 Function Parameters:
|
||||
0:6 'x' ( in float)
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child ( temp float)
|
||||
0:8 direct index (layout( stream=0) temp float ClipDistance)
|
||||
0:8 gl_ClipDistance: direct index for structure (layout( stream=0) out unsized 7-element array of float ClipDistance)
|
||||
0:8 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 2-element array of float CullDistance gl_CullDistance})
|
||||
0:8 Constant:
|
||||
0:8 2 (const uint)
|
||||
0:8 Constant:
|
||||
0:8 6 (const int)
|
||||
0:8 direct index ( temp float ClipDistance)
|
||||
0:8 gl_ClipDistance: direct index for structure ( in unsized 7-element array of float ClipDistance)
|
||||
0:8 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
|
||||
0:8 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:8 Constant:
|
||||
0:8 2 (const int)
|
||||
0:8 Constant:
|
||||
0:8 6 (const int)
|
||||
0:10 Function Definition: f3(f1; ( global void)
|
||||
0:10 Function Parameters:
|
||||
0:10 'x' ( in float)
|
||||
0:12 Sequence
|
||||
0:12 move second child to first child ( temp float)
|
||||
0:12 direct index (layout( stream=0) temp float CullDistance)
|
||||
0:12 gl_CullDistance: direct index for structure (layout( stream=0) out unsized 2-element array of float CullDistance)
|
||||
0:12 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 2-element array of float CullDistance gl_CullDistance})
|
||||
0:12 Constant:
|
||||
0:12 3 (const uint)
|
||||
0:12 Constant:
|
||||
0:12 1 (const int)
|
||||
0:12 direct index ( temp float CullDistance)
|
||||
0:12 gl_CullDistance: direct index for structure ( in unsized 2-element array of float CullDistance)
|
||||
0:12 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
|
||||
0:12 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
|
||||
0:12 Constant:
|
||||
0:12 0 (const int)
|
||||
0:12 Constant:
|
||||
0:12 3 (const int)
|
||||
0:12 Constant:
|
||||
0:12 1 (const int)
|
||||
0:15 Function Definition: main( ( global void)
|
||||
0:15 Function Parameters:
|
||||
0:19 Sequence
|
||||
0:19 Function Call: f3(f1; ( global void)
|
||||
0:19 Constant:
|
||||
0:19 0.100000
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 2-element array of float CullDistance gl_CullDistance})
|
||||
0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
|
||||
|
||||
Linked geometry stage:
|
||||
|
||||
|
||||
Shader version: 460
|
||||
0:? Sequence
|
||||
0:3 Function Definition: f1(f1; ( global void)
|
||||
0:3 Function Parameters:
|
||||
0:3 'x' ( in float)
|
||||
0:5 Sequence
|
||||
0:5 move second child to first child ( temp float)
|
||||
0:5 direct index ( temp float ClipDistance)
|
||||
0:5 gl_ClipDistance: direct index for structure ( out 7-element array of float ClipDistance)
|
||||
0:5 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 7-element array of float ClipDistance gl_ClipDistance, out 2-element array of float CullDistance gl_CullDistance})
|
||||
0:5 Constant:
|
||||
0:5 2 (const uint)
|
||||
0:5 Constant:
|
||||
0:5 6 (const int)
|
||||
0:5 'x' ( in float)
|
||||
0:6 move second child to first child ( temp float)
|
||||
0:6 direct index ( temp float CullDistance)
|
||||
0:6 gl_CullDistance: direct index for structure ( out 2-element array of float CullDistance)
|
||||
0:6 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 7-element array of float ClipDistance gl_ClipDistance, out 2-element array of float CullDistance gl_CullDistance})
|
||||
0:6 Constant:
|
||||
0:6 3 (const uint)
|
||||
0:6 Constant:
|
||||
0:6 1 (const int)
|
||||
0:6 'x' ( in float)
|
||||
0:9 Function Definition: main( ( global void)
|
||||
0:9 Function Parameters:
|
||||
0:10 Sequence
|
||||
0:10 Function Call: f1(f1; ( global void)
|
||||
0:10 Constant:
|
||||
0:10 0.100000
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 7-element array of float ClipDistance gl_ClipDistance, out 2-element array of float CullDistance gl_CullDistance})
|
||||
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
|
||||
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
|
||||
Shader version: 460
|
||||
invocations = 1
|
||||
max_vertices = 204
|
||||
input primitive = triangles
|
||||
output primitive = line_strip
|
||||
0:? Sequence
|
||||
0:10 Function Definition: f3(f1; ( global void)
|
||||
0:10 Function Parameters:
|
||||
0:10 'x' ( in float)
|
||||
0:12 Sequence
|
||||
0:12 move second child to first child ( temp float)
|
||||
0:12 direct index (layout( stream=0) temp float CullDistance)
|
||||
0:12 gl_CullDistance: direct index for structure (layout( stream=0) out 2-element array of float CullDistance)
|
||||
0:12 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out 2-element array of float CullDistance gl_CullDistance})
|
||||
0:12 Constant:
|
||||
0:12 3 (const uint)
|
||||
0:12 Constant:
|
||||
0:12 1 (const int)
|
||||
0:12 direct index ( temp float CullDistance)
|
||||
0:12 gl_CullDistance: direct index for structure ( in 2-element array of float CullDistance)
|
||||
0:12 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 7-element array of float ClipDistance gl_ClipDistance, in 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
|
||||
0:12 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 7-element array of float ClipDistance gl_ClipDistance, in 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
|
||||
0:12 Constant:
|
||||
0:12 0 (const int)
|
||||
0:12 Constant:
|
||||
0:12 3 (const int)
|
||||
0:12 Constant:
|
||||
0:12 1 (const int)
|
||||
0:15 Function Definition: main( ( global void)
|
||||
0:15 Function Parameters:
|
||||
0:19 Sequence
|
||||
0:19 Function Call: f3(f1; ( global void)
|
||||
0:19 Constant:
|
||||
0:19 0.100000
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out 2-element array of float CullDistance gl_CullDistance})
|
||||
0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 7-element array of float ClipDistance gl_ClipDistance, in 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
|
||||
|
||||
void main(){
|
||||
void main() {
|
||||
gl_Position = vec4(3 + 2 + 2 * 4 + 2 + 3 * 2);
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,6 @@
|
||||
|
||||
#extension unknown_extension : require
|
||||
|
||||
int main(){
|
||||
int main() {
|
||||
}
|
||||
|
||||
|
@ -13,9 +13,12 @@
|
||||
|
||||
|
||||
|
||||
int main(){
|
||||
|
||||
|
||||
int main() {
|
||||
gl_Position = vec4(3 + 1, 3 + 4, 3 + 1);
|
||||
gl_Position = vec4(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12);
|
||||
gl_Position = vec4(4 + 3 + 3);
|
||||
gl_Position = 4 + 3 + F.a;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#version 310 es
|
||||
#line 1 2
|
||||
#pragma something
|
||||
void main(){ }
|
||||
void main() { }
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
#line 8
|
||||
|
||||
void main(){
|
||||
void main() {
|
||||
gl_Position = vec4(10);
|
||||
}
|
||||
|
||||
|
@ -9,6 +9,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
int main(){
|
||||
int main() {
|
||||
}
|
||||
|
||||
|
@ -11,15 +11,15 @@
|
||||
|
||||
|
||||
|
||||
float fn(float x){ return x + 4.0;}
|
||||
float fn(float x) { return x + 4.0; }
|
||||
|
||||
int main(){
|
||||
int main() {
|
||||
gl_Position = vec4(1);
|
||||
gl_Position = clamp(1, 2, 3);
|
||||
gl_Position = vec4(1);
|
||||
gl_Position = vec4(1, 2);
|
||||
gl_Position = vec4(fn(3));
|
||||
[]. ++ --
|
||||
[].++ --
|
||||
+ - * % / - ! ~
|
||||
<< >> < > <= >=
|
||||
== !=
|
||||
@ -46,16 +46,21 @@ struct S {
|
||||
|
||||
|
||||
|
||||
void bar(int x) { }
|
||||
|
||||
void foo()
|
||||
{
|
||||
S s;
|
||||
s . member2 + s . member1;
|
||||
s . member3 . zyx;
|
||||
s . member2 . xxyz;
|
||||
s . member2 . yyz;
|
||||
s . member2 . xxyz();
|
||||
s . member2 . yzy;
|
||||
vec3 a = vec3(0);vec3 b = a . zxyz;vec3 b = a . xxyz;vec3 b = a . yyz;vec3 b = a . xxyz();vec3 b = a . yzy;vec3 b = a . z;
|
||||
s.member2 + s.member1;
|
||||
s.member3.zyx;
|
||||
s.member2.xxyz;
|
||||
s.member2.yyz;
|
||||
s.member2.xxyz();
|
||||
s.member2.yzy;
|
||||
for (int i = 0; i < 100; i = i + 1) {
|
||||
bar(i)
|
||||
}
|
||||
vec3 a = vec3(0); vec3 b = a.zxyz; vec3 b = a.xxyz; vec3 b = a.yyz; vec3 b = a.xxyz(); vec3 b = a.yzy; vec3 b = a.z;
|
||||
|
||||
|
||||
yyz;
|
||||
|
@ -1,4 +1,4 @@
|
||||
int x(){
|
||||
int x() {
|
||||
something that shouldnt compile;
|
||||
}
|
||||
|
||||
|
@ -1,12 +1,14 @@
|
||||
rayQuery-allOps.comp
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 258
|
||||
// Id's are bound by 275
|
||||
|
||||
Capability Shader
|
||||
Capability RayQueryKHR
|
||||
Capability RayTraversalPrimitiveCullingKHR
|
||||
Capability RayQueryPositionFetchKHR
|
||||
Extension "SPV_KHR_ray_query"
|
||||
Extension "SPV_KHR_ray_tracing_position_fetch"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main"
|
||||
@ -14,6 +16,7 @@ rayQuery-allOps.comp
|
||||
Source GLSL 460
|
||||
SourceExtension "GL_EXT_ray_flags_primitive_culling"
|
||||
SourceExtension "GL_EXT_ray_query"
|
||||
SourceExtension "GL_EXT_ray_tracing_position_fetch"
|
||||
Name 4 "main"
|
||||
Name 6 "doSomething("
|
||||
Name 10 "Ray"
|
||||
@ -35,16 +38,17 @@ rayQuery-allOps.comp
|
||||
Name 83 "_mat3x4"
|
||||
Name 143 "t"
|
||||
Name 156 "committedStatus"
|
||||
Name 241 "o"
|
||||
Name 243 "d"
|
||||
Name 253 "Ray"
|
||||
MemberName 253(Ray) 0 "pos"
|
||||
MemberName 253(Ray) 1 "tmin"
|
||||
MemberName 253(Ray) 2 "dir"
|
||||
MemberName 253(Ray) 3 "tmax"
|
||||
Name 255 "Rays"
|
||||
MemberName 255(Rays) 0 "rays"
|
||||
Name 257 ""
|
||||
Name 184 "positions"
|
||||
Name 258 "o"
|
||||
Name 260 "d"
|
||||
Name 270 "Ray"
|
||||
MemberName 270(Ray) 0 "pos"
|
||||
MemberName 270(Ray) 1 "tmin"
|
||||
MemberName 270(Ray) 2 "dir"
|
||||
MemberName 270(Ray) 3 "tmax"
|
||||
Name 272 "Rays"
|
||||
MemberName 272(Rays) 0 "rays"
|
||||
Name 274 ""
|
||||
MemberDecorate 15(Log) 0 Offset 0
|
||||
MemberDecorate 15(Log) 1 Offset 4
|
||||
Decorate 15(Log) BufferBlock
|
||||
@ -52,15 +56,15 @@ rayQuery-allOps.comp
|
||||
Decorate 17 Binding 0
|
||||
Decorate 50(rtas) DescriptorSet 0
|
||||
Decorate 50(rtas) Binding 1
|
||||
MemberDecorate 253(Ray) 0 Offset 0
|
||||
MemberDecorate 253(Ray) 1 Offset 12
|
||||
MemberDecorate 253(Ray) 2 Offset 16
|
||||
MemberDecorate 253(Ray) 3 Offset 28
|
||||
Decorate 254 ArrayStride 32
|
||||
MemberDecorate 255(Rays) 0 Offset 0
|
||||
Decorate 255(Rays) BufferBlock
|
||||
Decorate 257 DescriptorSet 0
|
||||
Decorate 257 Binding 2
|
||||
MemberDecorate 270(Ray) 0 Offset 0
|
||||
MemberDecorate 270(Ray) 1 Offset 12
|
||||
MemberDecorate 270(Ray) 2 Offset 16
|
||||
MemberDecorate 270(Ray) 3 Offset 28
|
||||
Decorate 271 ArrayStride 32
|
||||
MemberDecorate 272(Rays) 0 Offset 0
|
||||
Decorate 272(Rays) BufferBlock
|
||||
Decorate 274 DescriptorSet 0
|
||||
Decorate 274 Binding 2
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
8: TypeFloat 32
|
||||
@ -105,13 +109,16 @@ rayQuery-allOps.comp
|
||||
91: TypeVector 8(float) 2
|
||||
144: 8(float) Constant 1056964608
|
||||
175: 14(int) Constant 1
|
||||
198: 14(int) Constant 2
|
||||
231: 14(int) Constant 256
|
||||
253(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float)
|
||||
254: TypeRuntimeArray 253(Ray)
|
||||
255(Rays): TypeStruct 254
|
||||
256: TypePointer Uniform 255(Rays)
|
||||
257: 256(ptr) Variable Uniform
|
||||
181: 14(int) Constant 3
|
||||
182: TypeArray 9(fvec3) 181
|
||||
183: TypePointer Function 182
|
||||
215: 14(int) Constant 2
|
||||
248: 14(int) Constant 256
|
||||
270(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float)
|
||||
271: TypeRuntimeArray 270(Ray)
|
||||
272(Rays): TypeStruct 271
|
||||
273: TypePointer Uniform 272(Rays)
|
||||
274: 273(ptr) Variable Uniform
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
43(ray): 25(ptr) Variable Function
|
||||
@ -120,8 +127,9 @@ rayQuery-allOps.comp
|
||||
83(_mat3x4): 82(ptr) Variable Function
|
||||
143(t): 35(ptr) Variable Function
|
||||
156(committedStatus): 68(ptr) Variable Function
|
||||
241(o): 29(ptr) Variable Function
|
||||
243(d): 29(ptr) Variable Function
|
||||
184(positions): 183(ptr) Variable Function
|
||||
258(o): 29(ptr) Variable Function
|
||||
260(d): 29(ptr) Variable Function
|
||||
44: 10(Ray) FunctionCall 12(makeRayDesc()
|
||||
Store 43(ray) 44
|
||||
51: 48 Load 50(rtas)
|
||||
@ -303,110 +311,130 @@ rayQuery-allOps.comp
|
||||
180: 2 FunctionCall 6(doSomething()
|
||||
Branch 179
|
||||
179: Label
|
||||
Branch 162
|
||||
161: Label
|
||||
182: 18(int) RayQueryGetIntersectionGeometryIndexKHR 47(rayQuery) 23
|
||||
183: 66(bool) SGreaterThan 182 19
|
||||
SelectionMerge 185 None
|
||||
BranchConditional 183 184 185
|
||||
184: Label
|
||||
186: 2 FunctionCall 6(doSomething()
|
||||
Branch 185
|
||||
185: Label
|
||||
187: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23
|
||||
188: 66(bool) SGreaterThan 187 19
|
||||
185: 182 RayQueryGetIntersectionTriangleVertexPositionsKHR 47(rayQuery) 23
|
||||
Store 184(positions) 185
|
||||
186: 35(ptr) AccessChain 184(positions) 19 20
|
||||
187: 8(float) Load 186
|
||||
188: 66(bool) FOrdLessThan 187 27
|
||||
SelectionMerge 190 None
|
||||
BranchConditional 188 189 190
|
||||
189: Label
|
||||
191: 2 FunctionCall 6(doSomething()
|
||||
191: 35(ptr) AccessChain 184(positions) 31 175
|
||||
192: 8(float) Load 191
|
||||
193: 66(bool) FOrdGreaterThan 192 27
|
||||
Branch 190
|
||||
190: Label
|
||||
192: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23
|
||||
193: 66(bool) SGreaterThan 192 19
|
||||
SelectionMerge 195 None
|
||||
BranchConditional 193 194 195
|
||||
194: Label
|
||||
196: 2 FunctionCall 6(doSomething()
|
||||
Branch 195
|
||||
195: Label
|
||||
197: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23
|
||||
199: 8(float) CompositeExtract 197 2
|
||||
200: 66(bool) FOrdGreaterThan 199 27
|
||||
194: 66(bool) Phi 188 179 193 189
|
||||
SelectionMerge 196 None
|
||||
BranchConditional 194 195 196
|
||||
195: Label
|
||||
197: 2 FunctionCall 6(doSomething()
|
||||
Branch 196
|
||||
196: Label
|
||||
Branch 162
|
||||
161: Label
|
||||
199: 18(int) RayQueryGetIntersectionGeometryIndexKHR 47(rayQuery) 23
|
||||
200: 66(bool) SGreaterThan 199 19
|
||||
SelectionMerge 202 None
|
||||
BranchConditional 200 201 202
|
||||
201: Label
|
||||
203: 2 FunctionCall 6(doSomething()
|
||||
Branch 202
|
||||
202: Label
|
||||
204: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23
|
||||
205: 8(float) CompositeExtract 204 0
|
||||
206: 66(bool) FOrdGreaterThan 205 27
|
||||
SelectionMerge 208 None
|
||||
BranchConditional 206 207 208
|
||||
207: Label
|
||||
209: 2 FunctionCall 6(doSomething()
|
||||
Branch 208
|
||||
208: Label
|
||||
210: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23
|
||||
211: 66(bool) SGreaterThan 210 19
|
||||
SelectionMerge 213 None
|
||||
BranchConditional 211 212 213
|
||||
212: Label
|
||||
214: 2 FunctionCall 6(doSomething()
|
||||
Branch 213
|
||||
213: Label
|
||||
215: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23
|
||||
216: 66(bool) FOrdGreaterThan 215 27
|
||||
SelectionMerge 218 None
|
||||
BranchConditional 216 217 218
|
||||
217: Label
|
||||
219: 2 FunctionCall 6(doSomething()
|
||||
Branch 218
|
||||
218: Label
|
||||
204: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23
|
||||
205: 66(bool) SGreaterThan 204 19
|
||||
SelectionMerge 207 None
|
||||
BranchConditional 205 206 207
|
||||
206: Label
|
||||
208: 2 FunctionCall 6(doSomething()
|
||||
Branch 207
|
||||
207: Label
|
||||
209: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23
|
||||
210: 66(bool) SGreaterThan 209 19
|
||||
SelectionMerge 212 None
|
||||
BranchConditional 210 211 212
|
||||
211: Label
|
||||
213: 2 FunctionCall 6(doSomething()
|
||||
Branch 212
|
||||
212: Label
|
||||
214: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23
|
||||
216: 8(float) CompositeExtract 214 2
|
||||
217: 66(bool) FOrdGreaterThan 216 27
|
||||
SelectionMerge 219 None
|
||||
BranchConditional 217 218 219
|
||||
218: Label
|
||||
220: 2 FunctionCall 6(doSomething()
|
||||
Branch 219
|
||||
219: Label
|
||||
221: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23
|
||||
222: 8(float) CompositeExtract 221 0
|
||||
223: 66(bool) FOrdGreaterThan 222 27
|
||||
SelectionMerge 225 None
|
||||
BranchConditional 223 224 225
|
||||
224: Label
|
||||
226: 2 FunctionCall 6(doSomething()
|
||||
Branch 225
|
||||
225: Label
|
||||
227: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23
|
||||
228: 66(bool) SGreaterThan 227 19
|
||||
SelectionMerge 230 None
|
||||
BranchConditional 228 229 230
|
||||
229: Label
|
||||
231: 2 FunctionCall 6(doSomething()
|
||||
Branch 230
|
||||
230: Label
|
||||
232: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23
|
||||
233: 66(bool) FOrdGreaterThan 232 27
|
||||
SelectionMerge 235 None
|
||||
BranchConditional 233 234 235
|
||||
234: Label
|
||||
236: 2 FunctionCall 6(doSomething()
|
||||
Branch 235
|
||||
235: Label
|
||||
Branch 162
|
||||
162: Label
|
||||
222: 35(ptr) AccessChain 83(_mat3x4) 19 20
|
||||
223: 8(float) Load 222
|
||||
224: 35(ptr) AccessChain 78(_mat4x3) 19 20
|
||||
225: 8(float) Load 224
|
||||
226: 66(bool) FOrdEqual 223 225
|
||||
SelectionMerge 228 None
|
||||
BranchConditional 226 227 228
|
||||
227: Label
|
||||
229: 2 FunctionCall 6(doSomething()
|
||||
Branch 228
|
||||
228: Label
|
||||
230: 14(int) RayQueryGetRayFlagsKHR 47(rayQuery)
|
||||
232: 66(bool) UGreaterThan 230 231
|
||||
SelectionMerge 234 None
|
||||
BranchConditional 232 233 234
|
||||
233: Label
|
||||
235: 2 FunctionCall 6(doSomething()
|
||||
Branch 234
|
||||
234: Label
|
||||
236: 8(float) RayQueryGetRayTMinKHR 47(rayQuery)
|
||||
237: 66(bool) FOrdGreaterThan 236 27
|
||||
SelectionMerge 239 None
|
||||
BranchConditional 237 238 239
|
||||
238: Label
|
||||
240: 2 FunctionCall 6(doSomething()
|
||||
Branch 239
|
||||
239: Label
|
||||
242: 9(fvec3) RayQueryGetWorldRayOriginKHR 47(rayQuery)
|
||||
Store 241(o) 242
|
||||
244: 9(fvec3) RayQueryGetWorldRayDirectionKHR 47(rayQuery)
|
||||
Store 243(d) 244
|
||||
245: 35(ptr) AccessChain 241(o) 20
|
||||
246: 8(float) Load 245
|
||||
247: 35(ptr) AccessChain 243(d) 198
|
||||
248: 8(float) Load 247
|
||||
249: 66(bool) FOrdEqual 246 248
|
||||
239: 35(ptr) AccessChain 83(_mat3x4) 19 20
|
||||
240: 8(float) Load 239
|
||||
241: 35(ptr) AccessChain 78(_mat4x3) 19 20
|
||||
242: 8(float) Load 241
|
||||
243: 66(bool) FOrdEqual 240 242
|
||||
SelectionMerge 245 None
|
||||
BranchConditional 243 244 245
|
||||
244: Label
|
||||
246: 2 FunctionCall 6(doSomething()
|
||||
Branch 245
|
||||
245: Label
|
||||
247: 14(int) RayQueryGetRayFlagsKHR 47(rayQuery)
|
||||
249: 66(bool) UGreaterThan 247 248
|
||||
SelectionMerge 251 None
|
||||
BranchConditional 249 250 251
|
||||
250: Label
|
||||
252: 2 FunctionCall 6(doSomething()
|
||||
Branch 251
|
||||
251: Label
|
||||
253: 8(float) RayQueryGetRayTMinKHR 47(rayQuery)
|
||||
254: 66(bool) FOrdGreaterThan 253 27
|
||||
SelectionMerge 256 None
|
||||
BranchConditional 254 255 256
|
||||
255: Label
|
||||
257: 2 FunctionCall 6(doSomething()
|
||||
Branch 256
|
||||
256: Label
|
||||
259: 9(fvec3) RayQueryGetWorldRayOriginKHR 47(rayQuery)
|
||||
Store 258(o) 259
|
||||
261: 9(fvec3) RayQueryGetWorldRayDirectionKHR 47(rayQuery)
|
||||
Store 260(d) 261
|
||||
262: 35(ptr) AccessChain 258(o) 20
|
||||
263: 8(float) Load 262
|
||||
264: 35(ptr) AccessChain 260(d) 215
|
||||
265: 8(float) Load 264
|
||||
266: 66(bool) FOrdEqual 263 265
|
||||
SelectionMerge 268 None
|
||||
BranchConditional 266 267 268
|
||||
267: Label
|
||||
269: 2 FunctionCall 6(doSomething()
|
||||
Branch 268
|
||||
268: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
6(doSomething(): 2 Function None 3
|
||||
|
@ -1 +1 @@
|
||||
399360 ../build/install/bin/glslangValidator.exe
|
||||
399360 ../build/install/bin/glslang.exe
|
||||
|
@ -13,10 +13,8 @@ spv.460.subgroupEXT.mesh
|
||||
Capability GroupNonUniformShuffleRelative
|
||||
Capability GroupNonUniformClustered
|
||||
Capability GroupNonUniformQuad
|
||||
Capability FragmentShadingRateKHR
|
||||
Capability MeshShadingEXT
|
||||
Extension "SPV_EXT_mesh_shader"
|
||||
Extension "SPV_KHR_fragment_shading_rate"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint MeshEXT 4 "main" 35 41 57 109 147 161 162 167 168 171 172 173 174 175
|
||||
@ -65,7 +63,6 @@ spv.460.subgroupEXT.mesh
|
||||
MemberName 106(gl_MeshPerPrimitiveEXT) 1 "gl_Layer"
|
||||
MemberName 106(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex"
|
||||
MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
|
||||
MemberName 106(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT"
|
||||
Name 109 "gl_MeshPrimitivesEXT"
|
||||
Name 147 "gl_PrimitiveTriangleIndicesEXT"
|
||||
Name 161 "gl_SubgroupSize"
|
||||
@ -95,8 +92,6 @@ spv.460.subgroupEXT.mesh
|
||||
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex
|
||||
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV
|
||||
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT
|
||||
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV
|
||||
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR
|
||||
Decorate 106(gl_MeshPerPrimitiveEXT) Block
|
||||
Decorate 147(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT
|
||||
Decorate 161(gl_SubgroupSize) RelaxedPrecision
|
||||
@ -151,7 +146,7 @@ spv.460.subgroupEXT.mesh
|
||||
79: 30(int) Constant 264
|
||||
80: 30(int) Constant 2
|
||||
105: TypeBool
|
||||
106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool) 59(int)
|
||||
106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool)
|
||||
107: TypeArray 106(gl_MeshPerPrimitiveEXT) 47
|
||||
108: TypePointer Output 107
|
||||
109(gl_MeshPrimitivesEXT): 108(ptr) Variable Output
|
||||
|
9
Test/baseResults/spv.atomicRvalue.error.vert.out
Normal file
9
Test/baseResults/spv.atomicRvalue.error.vert.out
Normal file
@ -0,0 +1,9 @@
|
||||
spv.atomicRvalue.error.vert
|
||||
ERROR: 0:5: 'assign' : l-value required
|
||||
ERROR: 0:5: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters.
|
||||
ERROR: 0:5: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions.
|
||||
ERROR: 0:6: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions.
|
||||
ERROR: 4 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
@ -1,7 +1,7 @@
|
||||
spv.bufferhandle8.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 27
|
||||
// Id's are bound by 39
|
||||
|
||||
Capability Shader
|
||||
Capability PhysicalStorageBufferAddressesEXT
|
||||
@ -21,41 +21,46 @@ spv.bufferhandle8.frag
|
||||
MemberName 10(T1) 0 "x"
|
||||
Name 11 "T2"
|
||||
MemberName 11(T2) 0 "x"
|
||||
Name 13 "T3"
|
||||
MemberName 13(T3) 0 "Bindings"
|
||||
Name 15 "t3"
|
||||
Name 23 "t2"
|
||||
MemberName 23(t2) 0 "f"
|
||||
MemberName 23(t2) 1 "g"
|
||||
Name 24 "blockType"
|
||||
MemberName 24(blockType) 0 "a"
|
||||
MemberName 24(blockType) 1 "b"
|
||||
MemberName 24(blockType) 2 "c"
|
||||
MemberName 24(blockType) 3 "d"
|
||||
MemberName 24(blockType) 4 "e"
|
||||
Name 26 "t"
|
||||
MemberDecorate 8(Blah) 0 Offset 0
|
||||
MemberDecorate 8(Blah) 1 Offset 8
|
||||
Name 13 "x"
|
||||
Name 14 "Blah"
|
||||
MemberName 14(Blah) 0 "t1"
|
||||
MemberName 14(Blah) 1 "t2"
|
||||
Name 16 "T3"
|
||||
MemberName 16(T3) 0 "Bindings"
|
||||
Name 18 "t3"
|
||||
Name 35 "t2"
|
||||
MemberName 35(t2) 0 "f"
|
||||
MemberName 35(t2) 1 "g"
|
||||
Name 36 "blockType"
|
||||
MemberName 36(blockType) 0 "a"
|
||||
MemberName 36(blockType) 1 "b"
|
||||
MemberName 36(blockType) 2 "c"
|
||||
MemberName 36(blockType) 3 "d"
|
||||
MemberName 36(blockType) 4 "e"
|
||||
Name 38 "t"
|
||||
MemberDecorate 10(T1) 0 Offset 0
|
||||
Decorate 10(T1) Block
|
||||
MemberDecorate 11(T2) 0 Offset 0
|
||||
Decorate 11(T2) Block
|
||||
Decorate 12 ArrayStride 16
|
||||
MemberDecorate 13(T3) 0 Offset 0
|
||||
Decorate 13(T3) Block
|
||||
Decorate 15(t3) DescriptorSet 0
|
||||
Decorate 15(t3) Binding 0
|
||||
MemberDecorate 23(t2) 0 Offset 0
|
||||
MemberDecorate 23(t2) 1 Offset 8
|
||||
Decorate 23(t2) Block
|
||||
MemberDecorate 24(blockType) 0 Offset 0
|
||||
MemberDecorate 24(blockType) 1 Offset 4
|
||||
MemberDecorate 24(blockType) 2 Offset 8
|
||||
MemberDecorate 24(blockType) 3 Offset 12
|
||||
MemberDecorate 24(blockType) 4 Offset 16
|
||||
Decorate 24(blockType) Block
|
||||
Decorate 26(t) DescriptorSet 0
|
||||
Decorate 26(t) Binding 0
|
||||
MemberDecorate 14(Blah) 0 Offset 0
|
||||
MemberDecorate 14(Blah) 1 Offset 8
|
||||
Decorate 15 ArrayStride 16
|
||||
MemberDecorate 16(T3) 0 Offset 0
|
||||
Decorate 16(T3) Block
|
||||
Decorate 18(t3) DescriptorSet 0
|
||||
Decorate 18(t3) Binding 0
|
||||
MemberDecorate 35(t2) 0 Offset 0
|
||||
MemberDecorate 35(t2) 1 Offset 8
|
||||
Decorate 35(t2) Block
|
||||
MemberDecorate 36(blockType) 0 Offset 0
|
||||
MemberDecorate 36(blockType) 1 Offset 4
|
||||
MemberDecorate 36(blockType) 2 Offset 8
|
||||
MemberDecorate 36(blockType) 3 Offset 12
|
||||
MemberDecorate 36(blockType) 4 Offset 16
|
||||
Decorate 36(blockType) Block
|
||||
Decorate 38(t) DescriptorSet 0
|
||||
Decorate 38(t) Binding 0
|
||||
Decorate 13(x) DecorationAliasedPointerEXT
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
TypeForwardPointer 6 PhysicalStorageBufferEXT
|
||||
@ -66,24 +71,38 @@ spv.bufferhandle8.frag
|
||||
6: TypePointer PhysicalStorageBufferEXT 10(T1)
|
||||
11(T2): TypeStruct 9(int)
|
||||
7: TypePointer PhysicalStorageBufferEXT 11(T2)
|
||||
12: TypeRuntimeArray 8(Blah)
|
||||
13(T3): TypeStruct 12
|
||||
14: TypePointer StorageBuffer 13(T3)
|
||||
15(t3): 14(ptr) Variable StorageBuffer
|
||||
16: 9(int) Constant 0
|
||||
17: 9(int) Constant 1
|
||||
18: TypePointer StorageBuffer 8(Blah)
|
||||
TypeForwardPointer 22 PhysicalStorageBufferEXT
|
||||
23(t2): TypeStruct 22 22
|
||||
24(blockType): TypeStruct 9(int) 9(int) 9(int) 9(int) 9(int)
|
||||
22: TypePointer PhysicalStorageBufferEXT 24(blockType)
|
||||
25: TypePointer StorageBuffer 23(t2)
|
||||
26(t): 25(ptr) Variable StorageBuffer
|
||||
12: TypePointer Function 8(Blah)
|
||||
14(Blah): TypeStruct 6(ptr) 7(ptr)
|
||||
15: TypeRuntimeArray 14(Blah)
|
||||
16(T3): TypeStruct 15
|
||||
17: TypePointer StorageBuffer 16(T3)
|
||||
18(t3): 17(ptr) Variable StorageBuffer
|
||||
19: 9(int) Constant 0
|
||||
20: 9(int) Constant 2
|
||||
21: TypePointer StorageBuffer 14(Blah)
|
||||
25: TypePointer Function 6(ptr)
|
||||
28: 9(int) Constant 1
|
||||
29: TypePointer Function 7(ptr)
|
||||
TypeForwardPointer 34 PhysicalStorageBufferEXT
|
||||
35(t2): TypeStruct 34 34
|
||||
36(blockType): TypeStruct 9(int) 9(int) 9(int) 9(int) 9(int)
|
||||
34: TypePointer PhysicalStorageBufferEXT 36(blockType)
|
||||
37: TypePointer StorageBuffer 35(t2)
|
||||
38(t): 37(ptr) Variable StorageBuffer
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
19: 18(ptr) AccessChain 15(t3) 16 17
|
||||
20: 8(Blah) Load 19
|
||||
21: 18(ptr) AccessChain 15(t3) 16 16
|
||||
Store 21 20
|
||||
13(x): 12(ptr) Variable Function
|
||||
22: 21(ptr) AccessChain 18(t3) 19 20
|
||||
23: 14(Blah) Load 22
|
||||
24: 6(ptr) CompositeExtract 23 0
|
||||
26: 25(ptr) AccessChain 13(x) 19
|
||||
Store 26 24
|
||||
27: 7(ptr) CompositeExtract 23 1
|
||||
30: 29(ptr) AccessChain 13(x) 28
|
||||
Store 30 27
|
||||
31: 21(ptr) AccessChain 18(t3) 19 28
|
||||
32: 14(Blah) Load 31
|
||||
33: 21(ptr) AccessChain 18(t3) 19 19
|
||||
Store 33 32
|
||||
Return
|
||||
FunctionEnd
|
||||
|
402
Test/baseResults/spv.coopmatKHR.comp.out
Normal file
402
Test/baseResults/spv.coopmatKHR.comp.out
Normal file
@ -0,0 +1,402 @@
|
||||
spv.coopmatKHR.comp
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 250
|
||||
|
||||
Capability Shader
|
||||
Capability Float16
|
||||
Capability Int16
|
||||
Capability Int8
|
||||
Capability StorageUniformBufferBlock16
|
||||
Capability VulkanMemoryModelKHR
|
||||
Capability PhysicalStorageBufferAddressesEXT
|
||||
Capability CooperativeMatrixKHR
|
||||
Extension "SPV_KHR_16bit_storage"
|
||||
Extension "SPV_KHR_cooperative_matrix"
|
||||
Extension "SPV_KHR_physical_storage_buffer"
|
||||
Extension "SPV_KHR_storage_buffer_storage_class"
|
||||
Extension "SPV_KHR_vulkan_memory_model"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel PhysicalStorageBuffer64EXT VulkanKHR
|
||||
EntryPoint GLCompute 4 "main"
|
||||
ExecutionMode 4 LocalSize 64 1 1
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_EXT_buffer_reference"
|
||||
SourceExtension "GL_EXT_shader_explicit_arithmetic_types"
|
||||
SourceExtension "GL_KHR_cooperative_matrix"
|
||||
SourceExtension "GL_KHR_memory_scope_semantics"
|
||||
Name 4 "main"
|
||||
Name 15 "f16(f161;"
|
||||
Name 14 "m"
|
||||
Name 22 "f32(f1;"
|
||||
Name 21 "m"
|
||||
Name 35 "m"
|
||||
Name 53 "m2"
|
||||
Name 57 "x"
|
||||
Name 65 "tempArg"
|
||||
Name 69 "Block"
|
||||
MemberName 69(Block) 0 "y"
|
||||
MemberName 69(Block) 1 "x"
|
||||
Name 71 "block"
|
||||
Name 80 "tempArg"
|
||||
Name 85 "Block16"
|
||||
MemberName 85(Block16) 0 "y"
|
||||
MemberName 85(Block16) 1 "x"
|
||||
MemberName 85(Block16) 2 "b"
|
||||
Name 88 "Block"
|
||||
MemberName 88(Block) 0 "y"
|
||||
MemberName 88(Block) 1 "x"
|
||||
Name 90 "block16"
|
||||
Name 97 "tempArg"
|
||||
Name 110 "D"
|
||||
Name 114 "A"
|
||||
Name 118 "B"
|
||||
Name 120 "C"
|
||||
Name 124 "l"
|
||||
Name 128 "Y"
|
||||
Name 129 "Z"
|
||||
Name 132 "F"
|
||||
Name 137 "a"
|
||||
Name 141 "md1"
|
||||
Name 152 "mC2"
|
||||
Name 157 "tempArg"
|
||||
Name 163 "tempArg"
|
||||
Name 169 "p1"
|
||||
Name 170 "param"
|
||||
Name 173 "p2"
|
||||
Name 174 "param"
|
||||
Name 188 "tempArg"
|
||||
Name 193 "shmatrix"
|
||||
Name 197 "ms"
|
||||
Name 204 "ms8A"
|
||||
Name 208 "ms8B"
|
||||
Name 212 "ms8C"
|
||||
Name 227 "m16"
|
||||
Name 233 "mC"
|
||||
Name 234 "F"
|
||||
Name 239 "S"
|
||||
MemberName 239(S) 0 "a"
|
||||
MemberName 239(S) 1 "b"
|
||||
MemberName 239(S) 2 "c"
|
||||
Name 244 "SC"
|
||||
Name 249 "scm"
|
||||
Decorate 67 ArrayStride 4
|
||||
Decorate 68 ArrayStride 4
|
||||
MemberDecorate 69(Block) 0 Offset 0
|
||||
MemberDecorate 69(Block) 1 Offset 4194304
|
||||
Decorate 69(Block) Block
|
||||
Decorate 71(block) DescriptorSet 0
|
||||
Decorate 71(block) Binding 0
|
||||
Decorate 81 ArrayStride 2
|
||||
Decorate 83 ArrayStride 2
|
||||
MemberDecorate 85(Block16) 0 Offset 0
|
||||
MemberDecorate 85(Block16) 1 Offset 2097152
|
||||
MemberDecorate 85(Block16) 2 Offset 2097160
|
||||
Decorate 85(Block16) Block
|
||||
Decorate 86 ArrayStride 4
|
||||
Decorate 87 ArrayStride 4
|
||||
MemberDecorate 88(Block) 0 Offset 0
|
||||
MemberDecorate 88(Block) 1 Offset 4194304
|
||||
Decorate 88(Block) Block
|
||||
Decorate 90(block16) DescriptorSet 0
|
||||
Decorate 90(block16) Binding 0
|
||||
Decorate 128(Y) SpecId 0
|
||||
Decorate 232 BuiltIn WorkgroupSize
|
||||
Decorate 234(F) SpecId 1
|
||||
Decorate 244(SC) SpecId 2
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 16
|
||||
7: TypeInt 32 0
|
||||
8: 7(int) Constant 3
|
||||
9: 7(int) Constant 8
|
||||
10: 7(int) Constant 2
|
||||
11: TypeCooperativeMatrixKHR 6(float16_t) 8 9 9 10
|
||||
12: TypePointer Function 11
|
||||
13: TypeFunction 11 12(ptr)
|
||||
17: TypeFloat 32
|
||||
18: TypeCooperativeMatrixKHR 17(float) 8 9 9 10
|
||||
19: TypePointer Function 18
|
||||
20: TypeFunction 18 19(ptr)
|
||||
32: 7(int) Constant 16
|
||||
33: TypeCooperativeMatrixKHR 17(float) 8 32 9 10
|
||||
34: TypePointer Function 33
|
||||
36: 17(float) Constant 0
|
||||
37: 33 ConstantComposite 36
|
||||
46: 17(float) Constant 1073741824
|
||||
51: TypeCooperativeMatrixKHR 6(float16_t) 8 32 9 10
|
||||
52: TypePointer Function 51
|
||||
56: TypePointer Function 17(float)
|
||||
58: TypeInt 32 1
|
||||
59: 58(int) Constant 1
|
||||
62: 58(int) Constant 0
|
||||
66: 7(int) Constant 1048576
|
||||
67: TypeArray 17(float) 66
|
||||
68: TypeRuntimeArray 17(float)
|
||||
69(Block): TypeStruct 67 68
|
||||
70: TypePointer StorageBuffer 69(Block)
|
||||
71(block): 70(ptr) Variable StorageBuffer
|
||||
72: 7(int) Constant 5
|
||||
73: TypePointer StorageBuffer 17(float)
|
||||
75: 7(int) Constant 128
|
||||
81: TypeArray 6(float16_t) 66
|
||||
82: 7(int) Constant 1
|
||||
83: TypeArray 6(float16_t) 82
|
||||
TypeForwardPointer 84 PhysicalStorageBufferEXT
|
||||
85(Block16): TypeStruct 81 83 84
|
||||
86: TypeArray 17(float) 66
|
||||
87: TypeRuntimeArray 17(float)
|
||||
88(Block): TypeStruct 86 87
|
||||
84: TypePointer PhysicalStorageBufferEXT 88(Block)
|
||||
89: TypePointer StorageBuffer 85(Block16)
|
||||
90(block16): 89(ptr) Variable StorageBuffer
|
||||
91: TypePointer StorageBuffer 6(float16_t)
|
||||
98: 58(int) Constant 2
|
||||
99: TypePointer StorageBuffer 84(ptr)
|
||||
102: TypePointer PhysicalStorageBufferEXT 17(float)
|
||||
111: 7(int) Constant 0
|
||||
112: TypeCooperativeMatrixKHR 6(float16_t) 8 32 9 111
|
||||
113: TypePointer Function 112
|
||||
116: TypeCooperativeMatrixKHR 6(float16_t) 8 9 9 82
|
||||
117: TypePointer Function 116
|
||||
123: TypePointer Function 58(int)
|
||||
127: 58(int) Constant 8
|
||||
128(Y): 58(int) SpecConstant 2
|
||||
129(Z): 58(int) SpecConstantOp 132 127 128(Y)
|
||||
130: TypeCooperativeMatrixKHR 6(float16_t) 8 129(Z) 129(Z) 10
|
||||
131: TypePointer Function 130
|
||||
133:6(float16_t) Constant 0
|
||||
134: 130 ConstantComposite 133
|
||||
135: TypeArray 33 72
|
||||
136: TypePointer Function 135
|
||||
138: 58(int) Constant 3
|
||||
139: 17(float) Constant 1065353216
|
||||
145: 58(int) Constant 1234
|
||||
149: TypeCooperativeMatrixKHR 6(float16_t) 8 129(Z) 9 10
|
||||
150: TypeArray 149 8
|
||||
151: TypePointer Private 150
|
||||
152(mC2): 151(ptr) Variable Private
|
||||
153: TypePointer Private 149
|
||||
177: 11 ConstantComposite 133
|
||||
178: 18 ConstantComposite 36
|
||||
182:6(float16_t) Constant 16384
|
||||
185: 17(float) Constant 1082130432
|
||||
189: TypeVector 7(int) 4
|
||||
190: 7(int) Constant 32
|
||||
191: TypeArray 189(ivec4) 190
|
||||
192: TypePointer Workgroup 191
|
||||
193(shmatrix): 192(ptr) Variable Workgroup
|
||||
194: TypePointer Workgroup 189(ivec4)
|
||||
201: TypeInt 8 1
|
||||
202: TypeCooperativeMatrixKHR 201(int8_t) 8 9 9 111
|
||||
203: TypePointer Function 202
|
||||
206: TypeCooperativeMatrixKHR 201(int8_t) 8 9 9 82
|
||||
207: TypePointer Function 206
|
||||
210: TypeCooperativeMatrixKHR 201(int8_t) 8 9 9 10
|
||||
211: TypePointer Function 210
|
||||
222: 58(int) Constant 16
|
||||
224: TypeInt 16 1
|
||||
225: TypeCooperativeMatrixKHR 224(int16_t) 8 9 9 111
|
||||
226: TypePointer Function 225
|
||||
230: TypeVector 7(int) 3
|
||||
231: 7(int) Constant 64
|
||||
232: 230(ivec3) ConstantComposite 231 82 82
|
||||
233(mC): 153(ptr) Variable Private
|
||||
234(F): 17(float) SpecConstant 1077936128
|
||||
235: TypeCooperativeMatrixKHR 17(float) 8 129(Z) 9 10
|
||||
236: 235 ConstantComposite 36
|
||||
237:6(float16_t) Constant 15360
|
||||
238: 11 ConstantComposite 237
|
||||
239(S): TypeStruct 58(int) 58(int) 58(int)
|
||||
240: 58(int) Constant 12
|
||||
241: 58(int) Constant 23
|
||||
242: 58(int) Constant 34
|
||||
243: 239(S) ConstantComposite 240 241 242
|
||||
244(SC): 58(int) SpecConstant 1
|
||||
245: TypeCooperativeMatrixKHR 6(float16_t) 8 244(SC) 244(SC) 10
|
||||
246: TypeArray 245 244(SC)
|
||||
247: TypeArray 246 244(SC)
|
||||
248: TypePointer Private 247
|
||||
249(scm): 248(ptr) Variable Private
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
35(m): 34(ptr) Variable Function
|
||||
53(m2): 52(ptr) Variable Function
|
||||
57(x): 56(ptr) Variable Function
|
||||
65(tempArg): 34(ptr) Variable Function
|
||||
80(tempArg): 52(ptr) Variable Function
|
||||
97(tempArg): 34(ptr) Variable Function
|
||||
110(D): 34(ptr) Variable Function
|
||||
114(A): 113(ptr) Variable Function
|
||||
118(B): 117(ptr) Variable Function
|
||||
120(C): 34(ptr) Variable Function
|
||||
124(l): 123(ptr) Variable Function
|
||||
132(F): 131(ptr) Variable Function
|
||||
137(a): 136(ptr) Variable Function
|
||||
141(md1): 56(ptr) Variable Function
|
||||
157(tempArg): 34(ptr) Variable Function
|
||||
163(tempArg): 52(ptr) Variable Function
|
||||
169(p1): 12(ptr) Variable Function
|
||||
170(param): 12(ptr) Variable Function
|
||||
173(p2): 19(ptr) Variable Function
|
||||
174(param): 19(ptr) Variable Function
|
||||
188(tempArg): 52(ptr) Variable Function
|
||||
197(ms): 52(ptr) Variable Function
|
||||
204(ms8A): 203(ptr) Variable Function
|
||||
208(ms8B): 207(ptr) Variable Function
|
||||
212(ms8C): 211(ptr) Variable Function
|
||||
227(m16): 226(ptr) Variable Function
|
||||
Store 35(m) 37
|
||||
38: 33 Load 35(m)
|
||||
39: 33 Load 35(m)
|
||||
40: 33 FAdd 38 39
|
||||
Store 35(m) 40
|
||||
41: 33 Load 35(m)
|
||||
42: 33 Load 35(m)
|
||||
43: 33 FSub 41 42
|
||||
Store 35(m) 43
|
||||
44: 33 Load 35(m)
|
||||
45: 33 FNegate 44
|
||||
Store 35(m) 45
|
||||
47: 33 Load 35(m)
|
||||
48: 33 MatrixTimesScalar 47 46
|
||||
Store 35(m) 48
|
||||
49: 33 Load 35(m)
|
||||
50: 33 MatrixTimesScalar 49 46
|
||||
Store 35(m) 50
|
||||
54: 33 Load 35(m)
|
||||
55: 51 FConvert 54
|
||||
Store 53(m2) 55
|
||||
60: 56(ptr) AccessChain 35(m) 59
|
||||
61: 17(float) Load 60
|
||||
Store 57(x) 61
|
||||
63: 17(float) Load 57(x)
|
||||
64: 56(ptr) AccessChain 35(m) 62
|
||||
Store 64 63
|
||||
74: 73(ptr) AccessChain 71(block) 59 32
|
||||
76: 33 CooperativeMatrixLoadKHR 74 62 75 MakePointerVisibleKHR NonPrivatePointerKHR 72
|
||||
Store 65(tempArg) 76
|
||||
77: 33 Load 65(tempArg)
|
||||
Store 35(m) 77
|
||||
78: 33 Load 35(m)
|
||||
79: 73(ptr) AccessChain 71(block) 59 32
|
||||
CooperativeMatrixStoreKHR 79 78 62 75 MakePointerAvailableKHR NonPrivatePointerKHR 72
|
||||
92: 91(ptr) AccessChain 90(block16) 59 32
|
||||
93: 51 CooperativeMatrixLoadKHR 92 62 75 MakePointerVisibleKHR NonPrivatePointerKHR 72
|
||||
Store 80(tempArg) 93
|
||||
94: 51 Load 80(tempArg)
|
||||
Store 53(m2) 94
|
||||
95: 51 Load 53(m2)
|
||||
96: 91(ptr) AccessChain 90(block16) 59 32
|
||||
CooperativeMatrixStoreKHR 96 95 62 75 MakePointerAvailableKHR NonPrivatePointerKHR 72
|
||||
100: 99(ptr) AccessChain 90(block16) 98
|
||||
101: 84(ptr) Load 100 MakePointerVisibleKHR NonPrivatePointerKHR 72
|
||||
103: 102(ptr) AccessChain 101 59 32
|
||||
104: 33 CooperativeMatrixLoadKHR 103 62 75 Aligned MakePointerVisibleKHR NonPrivatePointerKHR 16 72
|
||||
Store 97(tempArg) 104
|
||||
105: 33 Load 97(tempArg)
|
||||
Store 35(m) 105
|
||||
106: 33 Load 35(m)
|
||||
107: 99(ptr) AccessChain 90(block16) 98
|
||||
108: 84(ptr) Load 107 MakePointerVisibleKHR NonPrivatePointerKHR 72
|
||||
109: 102(ptr) AccessChain 108 59 32
|
||||
CooperativeMatrixStoreKHR 109 106 62 75 Aligned MakePointerAvailableKHR NonPrivatePointerKHR 16 72
|
||||
115: 112 Load 114(A)
|
||||
119: 116 Load 118(B)
|
||||
121: 33 Load 120(C)
|
||||
122: 33 CooperativeMatrixMulAddKHR 115 119 121
|
||||
Store 110(D) 122
|
||||
125: 7(int) CooperativeMatrixLengthKHR 33
|
||||
126: 58(int) Bitcast 125
|
||||
Store 124(l) 126
|
||||
Store 132(F) 134
|
||||
140: 56(ptr) AccessChain 137(a) 138 62
|
||||
Store 140 139
|
||||
Store 141(md1) 36
|
||||
142: 33 Load 35(m)
|
||||
143: 33 Load 35(m)
|
||||
144: 33 FAdd 143 142
|
||||
Store 35(m) 144
|
||||
146: 17(float) CompositeExtract 144 1234
|
||||
147: 17(float) Load 141(md1)
|
||||
148: 17(float) FAdd 147 146
|
||||
Store 141(md1) 148
|
||||
154: 153(ptr) AccessChain 152(mC2) 98
|
||||
155: 149 Load 154
|
||||
156: 153(ptr) AccessChain 152(mC2) 59
|
||||
Store 156 155
|
||||
158: 73(ptr) AccessChain 71(block) 62 32
|
||||
159: 33 CooperativeMatrixLoadKHR 158 62 75 MakePointerVisibleKHR NonPrivatePointerKHR 72
|
||||
Store 157(tempArg) 159
|
||||
160: 33 Load 157(tempArg)
|
||||
Store 35(m) 160
|
||||
161: 33 Load 35(m)
|
||||
162: 73(ptr) AccessChain 71(block) 62 32
|
||||
CooperativeMatrixStoreKHR 162 161 62 75 MakePointerAvailableKHR NonPrivatePointerKHR 72
|
||||
164: 91(ptr) AccessChain 90(block16) 62 32
|
||||
165: 51 CooperativeMatrixLoadKHR 164 62 75 MakePointerVisibleKHR NonPrivatePointerKHR 72
|
||||
Store 163(tempArg) 165
|
||||
166: 51 Load 163(tempArg)
|
||||
Store 53(m2) 166
|
||||
167: 51 Load 53(m2)
|
||||
168: 91(ptr) AccessChain 90(block16) 62 32
|
||||
CooperativeMatrixStoreKHR 168 167 62 75 MakePointerAvailableKHR NonPrivatePointerKHR 72
|
||||
171: 11 Load 169(p1)
|
||||
Store 170(param) 171
|
||||
172: 11 FunctionCall 15(f16(f161;) 170(param)
|
||||
Store 169(p1) 172
|
||||
175: 18 Load 173(p2)
|
||||
Store 174(param) 175
|
||||
176: 18 FunctionCall 22(f32(f1;) 174(param)
|
||||
Store 173(p2) 176
|
||||
Store 169(p1) 177
|
||||
Store 173(p2) 178
|
||||
179: 11 Load 169(p1)
|
||||
180: 11 Load 169(p1)
|
||||
181: 11 FDiv 180 179
|
||||
Store 169(p1) 181
|
||||
183: 11 Load 169(p1)
|
||||
184: 11 MatrixTimesScalar 183 182
|
||||
Store 169(p1) 184
|
||||
186: 18 Load 173(p2)
|
||||
187: 18 MatrixTimesScalar 186 185
|
||||
Store 173(p2) 187
|
||||
195: 194(ptr) AccessChain 193(shmatrix) 82
|
||||
196: 51 CooperativeMatrixLoadKHR 195 62 10 MakePointerVisibleKHR NonPrivatePointerKHR 10
|
||||
Store 188(tempArg) 196
|
||||
198: 51 Load 188(tempArg)
|
||||
Store 197(ms) 198
|
||||
199: 51 Load 197(ms)
|
||||
200: 194(ptr) AccessChain 193(shmatrix) 82
|
||||
CooperativeMatrixStoreKHR 200 199 62 10 MakePointerAvailableKHR NonPrivatePointerKHR 10
|
||||
205: 202 Load 204(ms8A)
|
||||
209: 206 Load 208(ms8B)
|
||||
213: 210 Load 212(ms8C)
|
||||
214: 210 CooperativeMatrixMulAddKHR 205 209 213 ASignedComponents BSignedComponents CSignedComponents ResultSignedComponents
|
||||
215: 202 Load 204(ms8A)
|
||||
216: 206 Load 208(ms8B)
|
||||
217: 210 Load 212(ms8C)
|
||||
218: 210 CooperativeMatrixMulAddKHR 215 216 217 ASignedComponents BSignedComponents CSignedComponents ResultSignedComponents
|
||||
219: 202 Load 204(ms8A)
|
||||
220: 206 Load 208(ms8B)
|
||||
221: 210 Load 212(ms8C)
|
||||
223: 210 CooperativeMatrixMulAddKHR 219 220 221 ASignedComponents BSignedComponents CSignedComponents ResultSignedComponents SaturatingAccumulation
|
||||
228: 225 Load 227(m16)
|
||||
229: 194(ptr) AccessChain 193(shmatrix) 82
|
||||
CooperativeMatrixStoreKHR 229 228 62 10 MakePointerAvailableKHR NonPrivatePointerKHR 10
|
||||
Return
|
||||
FunctionEnd
|
||||
15(f16(f161;): 11 Function None 13
|
||||
14(m): 12(ptr) FunctionParameter
|
||||
16: Label
|
||||
24: 11 Load 14(m)
|
||||
25: 11 FNegate 24
|
||||
ReturnValue 25
|
||||
FunctionEnd
|
||||
22(f32(f1;): 18 Function None 20
|
||||
21(m): 19(ptr) FunctionParameter
|
||||
23: Label
|
||||
28: 18 Load 21(m)
|
||||
29: 18 FNegate 28
|
||||
ReturnValue 29
|
||||
FunctionEnd
|
38
Test/baseResults/spv.coopmatKHR_Error.comp.out
Normal file
38
Test/baseResults/spv.coopmatKHR_Error.comp.out
Normal file
@ -0,0 +1,38 @@
|
||||
spv.coopmatKHR_Error.comp
|
||||
ERROR: 0:8: 'ftemplate16' : unexpected type parameters
|
||||
ERROR: 0:10: '' : coopmat missing type parameters
|
||||
ERROR: 0:10: 'fnoparams' : unexpected number type parameters
|
||||
ERROR: 0:17: 'void' : coopmat invalid basic type
|
||||
ERROR: 0:17: 'fbadtype' : expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type
|
||||
ERROR: 0:17: 'fbadtype' : illegal use of type 'void'
|
||||
ERROR: 0:18: '' : type parameter must be a constant integer expression
|
||||
ERROR: 0:18: 'void' : coopmat invalid basic type
|
||||
ERROR: 0:18: '' : coopmat incorrect number of type parameters
|
||||
ERROR: 0:18: 'fbadtype2' : unexpected number type parameters
|
||||
ERROR: 0:18: 'fbadtype2' : expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type
|
||||
ERROR: 0:18: 'fbadtype2' : illegal use of type 'void'
|
||||
ERROR: 0:19: 'void' : coopmat invalid basic type
|
||||
ERROR: 0:19: '' : coopmat incorrect number of type parameters
|
||||
ERROR: 0:19: 'fbadtype3' : unexpected number type parameters
|
||||
ERROR: 0:19: 'fbadtype3' : expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type
|
||||
ERROR: 0:19: 'fbadtype3' : illegal use of type 'void'
|
||||
ERROR: 0:21: '' : coopmat incorrect number of type parameters
|
||||
ERROR: 0:25: '' : type parameter must be a constant integer expression
|
||||
ERROR: 0:29: '' : coopmat incorrect number of type parameters
|
||||
ERROR: 0:29: 'Cooperative matrix types must not be used in shared memory' : qualifier
|
||||
ERROR: 0:32: 'bufmat' : member of block cannot be or contain a cooperative matrix type
|
||||
ERROR: 0:41: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float16_t' to ' temp coopmat<3, 16, 8, 0> float'
|
||||
ERROR: 0:42: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float16_t' to ' temp coopmat<3, 16, 8, 0> float'
|
||||
ERROR: 0:47: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 16, 8, 0> float16_t'
|
||||
ERROR: 0:53: 'assign' : cannot convert from ' temp coopmat<3, 8, 1, 0> float16_t' to ' temp coopmat<3, 8, 1, 0> float16_t'
|
||||
ERROR: 0:56: 'constructor' : too many arguments
|
||||
ERROR: 0:56: 'assign' : cannot convert from ' const float' to ' temp coopmat<3, 8, 8, 0> float16_t'
|
||||
ERROR: 0:60: 'constructor' : Cooperative matrix constructor argument must be scalar or cooperative matrix
|
||||
ERROR: 0:60: '=' : cannot convert from ' const float' to ' temp coopmat<3, 4, 4, 0> float'
|
||||
ERROR: 0:63: 'expression' : left of '[' is not of type array, matrix, or vector
|
||||
ERROR: 0:66: '.' : cannot apply to a cooperative matrix type: x
|
||||
ERROR: 0:68: 'transpose' : no matching overloaded function found
|
||||
ERROR: 33 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
248
Test/baseResults/spv.coopmatKHR_arithmetic.comp.out
Normal file
248
Test/baseResults/spv.coopmatKHR_arithmetic.comp.out
Normal file
@ -0,0 +1,248 @@
|
||||
spv.coopmatKHR_arithmetic.comp
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 196
|
||||
|
||||
Capability Shader
|
||||
Capability Float16
|
||||
Capability Int8
|
||||
Capability VulkanMemoryModelKHR
|
||||
Capability CooperativeMatrixKHR
|
||||
Extension "SPV_KHR_cooperative_matrix"
|
||||
Extension "SPV_KHR_vulkan_memory_model"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical VulkanKHR
|
||||
EntryPoint GLCompute 4 "main"
|
||||
ExecutionMode 4 LocalSize 64 1 1
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_EXT_shader_explicit_arithmetic_types"
|
||||
SourceExtension "GL_KHR_cooperative_matrix"
|
||||
SourceExtension "GL_KHR_memory_scope_semantics"
|
||||
Name 4 "main"
|
||||
Name 13 "f"
|
||||
Name 48 "f16"
|
||||
Name 82 "u32"
|
||||
Name 117 "u8"
|
||||
Name 152 "i8"
|
||||
Decorate 195 BuiltIn WorkgroupSize
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeInt 32 0
|
||||
8: 7(int) Constant 3
|
||||
9: 7(int) Constant 8
|
||||
10: 7(int) Constant 0
|
||||
11: TypeCooperativeMatrixKHR 6(float) 8 9 9 10
|
||||
12: TypePointer Function 11
|
||||
39: 6(float) Constant 1073741824
|
||||
45: TypeFloat 16
|
||||
46: TypeCooperativeMatrixKHR 45(float16_t) 8 9 9 10
|
||||
47: TypePointer Function 46
|
||||
74:45(float16_t) Constant 16384
|
||||
80: TypeCooperativeMatrixKHR 7(int) 8 9 9 10
|
||||
81: TypePointer Function 80
|
||||
108: 7(int) Constant 2
|
||||
114: TypeInt 8 0
|
||||
115: TypeCooperativeMatrixKHR 114(int8_t) 8 9 9 10
|
||||
116: TypePointer Function 115
|
||||
143: 114(int8_t) Constant 2
|
||||
149: TypeInt 8 1
|
||||
150: TypeCooperativeMatrixKHR 149(int8_t) 8 9 9 10
|
||||
151: TypePointer Function 150
|
||||
178: 149(int8_t) Constant 2
|
||||
192: TypeVector 7(int) 3
|
||||
193: 7(int) Constant 64
|
||||
194: 7(int) Constant 1
|
||||
195: 192(ivec3) ConstantComposite 193 194 194
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
13(f): 12(ptr) Variable Function
|
||||
48(f16): 47(ptr) Variable Function
|
||||
82(u32): 81(ptr) Variable Function
|
||||
117(u8): 116(ptr) Variable Function
|
||||
152(i8): 151(ptr) Variable Function
|
||||
14: 11 Load 13(f)
|
||||
15: 11 Load 13(f)
|
||||
16: 11 FAdd 14 15
|
||||
17: 11 Load 13(f)
|
||||
18: 11 Load 13(f)
|
||||
19: 11 FSub 17 18
|
||||
20: 11 Load 13(f)
|
||||
21: 11 Load 13(f)
|
||||
22: 11 FMul 20 21
|
||||
23: 11 Load 13(f)
|
||||
24: 11 Load 13(f)
|
||||
25: 11 FDiv 23 24
|
||||
26: 11 Load 13(f)
|
||||
27: 11 Load 13(f)
|
||||
28: 11 FAdd 27 26
|
||||
Store 13(f) 28
|
||||
29: 11 Load 13(f)
|
||||
30: 11 Load 13(f)
|
||||
31: 11 FSub 30 29
|
||||
Store 13(f) 31
|
||||
32: 11 Load 13(f)
|
||||
33: 11 Load 13(f)
|
||||
34: 11 FMul 33 32
|
||||
Store 13(f) 34
|
||||
35: 11 Load 13(f)
|
||||
36: 11 Load 13(f)
|
||||
37: 11 FDiv 36 35
|
||||
Store 13(f) 37
|
||||
38: 11 Load 13(f)
|
||||
40: 11 MatrixTimesScalar 38 39
|
||||
41: 11 Load 13(f)
|
||||
42: 11 MatrixTimesScalar 41 39
|
||||
43: 11 Load 13(f)
|
||||
44: 11 MatrixTimesScalar 43 39
|
||||
Store 13(f) 44
|
||||
49: 46 Load 48(f16)
|
||||
50: 46 Load 48(f16)
|
||||
51: 46 FAdd 49 50
|
||||
52: 46 Load 48(f16)
|
||||
53: 46 Load 48(f16)
|
||||
54: 46 FSub 52 53
|
||||
55: 46 Load 48(f16)
|
||||
56: 46 Load 48(f16)
|
||||
57: 46 FMul 55 56
|
||||
58: 46 Load 48(f16)
|
||||
59: 46 Load 48(f16)
|
||||
60: 46 FDiv 58 59
|
||||
61: 46 Load 48(f16)
|
||||
62: 46 Load 48(f16)
|
||||
63: 46 FAdd 62 61
|
||||
Store 48(f16) 63
|
||||
64: 46 Load 48(f16)
|
||||
65: 46 Load 48(f16)
|
||||
66: 46 FSub 65 64
|
||||
Store 48(f16) 66
|
||||
67: 46 Load 48(f16)
|
||||
68: 46 Load 48(f16)
|
||||
69: 46 FMul 68 67
|
||||
Store 48(f16) 69
|
||||
70: 46 Load 48(f16)
|
||||
71: 46 Load 48(f16)
|
||||
72: 46 FDiv 71 70
|
||||
Store 48(f16) 72
|
||||
73: 46 Load 48(f16)
|
||||
75: 46 MatrixTimesScalar 73 74
|
||||
76: 46 Load 48(f16)
|
||||
77: 46 MatrixTimesScalar 76 74
|
||||
78: 46 Load 48(f16)
|
||||
79: 46 MatrixTimesScalar 78 74
|
||||
Store 48(f16) 79
|
||||
83: 80 Load 82(u32)
|
||||
84: 80 Load 82(u32)
|
||||
85: 80 IAdd 83 84
|
||||
86: 80 Load 82(u32)
|
||||
87: 80 Load 82(u32)
|
||||
88: 80 ISub 86 87
|
||||
89: 80 Load 82(u32)
|
||||
90: 80 Load 82(u32)
|
||||
91: 80 IMul 89 90
|
||||
92: 80 Load 82(u32)
|
||||
93: 80 Load 82(u32)
|
||||
94: 80 UDiv 92 93
|
||||
95: 80 Load 82(u32)
|
||||
96: 80 Load 82(u32)
|
||||
97: 80 IAdd 96 95
|
||||
Store 82(u32) 97
|
||||
98: 80 Load 82(u32)
|
||||
99: 80 Load 82(u32)
|
||||
100: 80 ISub 99 98
|
||||
Store 82(u32) 100
|
||||
101: 80 Load 82(u32)
|
||||
102: 80 Load 82(u32)
|
||||
103: 80 IMul 102 101
|
||||
Store 82(u32) 103
|
||||
104: 80 Load 82(u32)
|
||||
105: 80 Load 82(u32)
|
||||
106: 80 UDiv 105 104
|
||||
Store 82(u32) 106
|
||||
107: 80 Load 82(u32)
|
||||
109: 80 MatrixTimesScalar 107 108
|
||||
110: 80 Load 82(u32)
|
||||
111: 80 MatrixTimesScalar 110 108
|
||||
112: 80 Load 82(u32)
|
||||
113: 80 MatrixTimesScalar 112 108
|
||||
Store 82(u32) 113
|
||||
118: 115 Load 117(u8)
|
||||
119: 115 Load 117(u8)
|
||||
120: 115 IAdd 118 119
|
||||
121: 115 Load 117(u8)
|
||||
122: 115 Load 117(u8)
|
||||
123: 115 ISub 121 122
|
||||
124: 115 Load 117(u8)
|
||||
125: 115 Load 117(u8)
|
||||
126: 115 IMul 124 125
|
||||
127: 115 Load 117(u8)
|
||||
128: 115 Load 117(u8)
|
||||
129: 115 UDiv 127 128
|
||||
130: 115 Load 117(u8)
|
||||
131: 115 Load 117(u8)
|
||||
132: 115 IAdd 131 130
|
||||
Store 117(u8) 132
|
||||
133: 115 Load 117(u8)
|
||||
134: 115 Load 117(u8)
|
||||
135: 115 ISub 134 133
|
||||
Store 117(u8) 135
|
||||
136: 115 Load 117(u8)
|
||||
137: 115 Load 117(u8)
|
||||
138: 115 IMul 137 136
|
||||
Store 117(u8) 138
|
||||
139: 115 Load 117(u8)
|
||||
140: 115 Load 117(u8)
|
||||
141: 115 UDiv 140 139
|
||||
Store 117(u8) 141
|
||||
142: 115 Load 117(u8)
|
||||
144: 115 MatrixTimesScalar 142 143
|
||||
145: 115 Load 117(u8)
|
||||
146: 115 MatrixTimesScalar 145 143
|
||||
147: 115 Load 117(u8)
|
||||
148: 115 MatrixTimesScalar 147 143
|
||||
Store 117(u8) 148
|
||||
153: 150 Load 152(i8)
|
||||
154: 150 Load 152(i8)
|
||||
155: 150 IAdd 153 154
|
||||
156: 150 Load 152(i8)
|
||||
157: 150 Load 152(i8)
|
||||
158: 150 ISub 156 157
|
||||
159: 150 Load 152(i8)
|
||||
160: 150 Load 152(i8)
|
||||
161: 150 IMul 159 160
|
||||
162: 150 Load 152(i8)
|
||||
163: 150 Load 152(i8)
|
||||
164: 150 SDiv 162 163
|
||||
165: 150 Load 152(i8)
|
||||
166: 150 Load 152(i8)
|
||||
167: 150 IAdd 166 165
|
||||
Store 152(i8) 167
|
||||
168: 150 Load 152(i8)
|
||||
169: 150 Load 152(i8)
|
||||
170: 150 ISub 169 168
|
||||
Store 152(i8) 170
|
||||
171: 150 Load 152(i8)
|
||||
172: 150 Load 152(i8)
|
||||
173: 150 IMul 172 171
|
||||
Store 152(i8) 173
|
||||
174: 150 Load 152(i8)
|
||||
175: 150 Load 152(i8)
|
||||
176: 150 SDiv 175 174
|
||||
Store 152(i8) 176
|
||||
177: 150 Load 152(i8)
|
||||
179: 150 MatrixTimesScalar 177 178
|
||||
180: 150 Load 152(i8)
|
||||
181: 150 MatrixTimesScalar 180 178
|
||||
182: 150 Load 152(i8)
|
||||
183: 150 MatrixTimesScalar 182 178
|
||||
Store 152(i8) 183
|
||||
184: 11 Load 13(f)
|
||||
185: 11 FNegate 184
|
||||
186: 46 Load 48(f16)
|
||||
187: 46 FNegate 186
|
||||
188: 150 Load 152(i8)
|
||||
189: 150 SNegate 188
|
||||
190: 115 Load 117(u8)
|
||||
191: 115 SNegate 190
|
||||
Return
|
||||
FunctionEnd
|
64
Test/baseResults/spv.coopmatKHR_arithmeticError.comp.out
Normal file
64
Test/baseResults/spv.coopmatKHR_arithmeticError.comp.out
Normal file
@ -0,0 +1,64 @@
|
||||
spv.coopmatKHR_arithmeticError.comp
|
||||
ERROR: 0:21: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' const float' (or there is no acceptable conversion)
|
||||
ERROR: 0:22: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' const float' (or there is no acceptable conversion)
|
||||
ERROR: 0:23: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' const float' (or there is no acceptable conversion)
|
||||
ERROR: 0:24: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' const float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float' (or there is no acceptable conversion)
|
||||
ERROR: 0:25: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' const float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float' (or there is no acceptable conversion)
|
||||
ERROR: 0:26: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' const float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float' (or there is no acceptable conversion)
|
||||
ERROR: 0:27: 'assign' : cannot convert from ' const float' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:28: 'assign' : cannot convert from ' const float' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:29: 'assign' : cannot convert from ' const float' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:31: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float16_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:32: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float16_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:33: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float16_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:34: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float16_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:35: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:36: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:37: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:38: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:40: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 1> float' (or there is no acceptable conversion)
|
||||
ERROR: 0:41: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 1> float' (or there is no acceptable conversion)
|
||||
ERROR: 0:42: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 1> float' (or there is no acceptable conversion)
|
||||
ERROR: 0:43: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 1> float' (or there is no acceptable conversion)
|
||||
ERROR: 0:44: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 1> float' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:45: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 1> float' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:46: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 1> float' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:47: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 1> float' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:49: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 16, 8, 0> float' (or there is no acceptable conversion)
|
||||
ERROR: 0:50: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 16, 8, 0> float' (or there is no acceptable conversion)
|
||||
ERROR: 0:51: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 16, 8, 0> float' (or there is no acceptable conversion)
|
||||
ERROR: 0:52: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 16, 8, 0> float' (or there is no acceptable conversion)
|
||||
ERROR: 0:53: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:54: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:55: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:56: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float' to ' temp coopmat<3, 8, 8, 0> float'
|
||||
ERROR: 0:58: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' temp coopmat<3, 8, 8, 0> int8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:59: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' temp coopmat<3, 8, 8, 0> int8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:60: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' temp coopmat<3, 8, 8, 0> int8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:61: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' temp coopmat<3, 8, 8, 0> int8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:62: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> int8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t'
|
||||
ERROR: 0:63: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> int8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t'
|
||||
ERROR: 0:64: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> int8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t'
|
||||
ERROR: 0:65: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> int8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t'
|
||||
ERROR: 0:67: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' const uint8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:68: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' const uint8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:69: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' const uint8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:70: 'assign' : cannot convert from ' const uint8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t'
|
||||
ERROR: 0:71: 'assign' : cannot convert from ' const uint8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t'
|
||||
ERROR: 0:72: 'assign' : cannot convert from ' const uint8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t'
|
||||
ERROR: 0:74: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int8_t' and a right operand of type ' const int8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:75: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int8_t' and a right operand of type ' const int8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:76: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int8_t' and a right operand of type ' const int8_t' (or there is no acceptable conversion)
|
||||
ERROR: 0:77: 'assign' : cannot convert from ' const int8_t' to ' temp coopmat<3, 8, 8, 0> int8_t'
|
||||
ERROR: 0:78: 'assign' : cannot convert from ' const int8_t' to ' temp coopmat<3, 8, 8, 0> int8_t'
|
||||
ERROR: 0:79: 'assign' : cannot convert from ' const int8_t' to ' temp coopmat<3, 8, 8, 0> int8_t'
|
||||
ERROR: 0:81: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int' and a right operand of type ' const int' (or there is no acceptable conversion)
|
||||
ERROR: 0:82: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int' and a right operand of type ' const int' (or there is no acceptable conversion)
|
||||
ERROR: 0:83: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int' and a right operand of type ' const int' (or there is no acceptable conversion)
|
||||
ERROR: 0:84: 'assign' : cannot convert from ' const int' to ' temp coopmat<3, 8, 8, 0> int'
|
||||
ERROR: 0:85: 'assign' : cannot convert from ' const int' to ' temp coopmat<3, 8, 8, 0> int'
|
||||
ERROR: 0:86: 'assign' : cannot convert from ' const int' to ' temp coopmat<3, 8, 8, 0> int'
|
||||
ERROR: 59 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
632
Test/baseResults/spv.coopmatKHR_constructor.comp.out
Normal file
632
Test/baseResults/spv.coopmatKHR_constructor.comp.out
Normal file
@ -0,0 +1,632 @@
|
||||
spv.coopmatKHR_constructor.comp
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 481
|
||||
|
||||
Capability Shader
|
||||
Capability Float16
|
||||
Capability Int16
|
||||
Capability Int8
|
||||
Capability VulkanMemoryModelKHR
|
||||
Capability CooperativeMatrixKHR
|
||||
Extension "SPV_KHR_cooperative_matrix"
|
||||
Extension "SPV_KHR_vulkan_memory_model"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical VulkanKHR
|
||||
EntryPoint GLCompute 4 "main"
|
||||
ExecutionMode 4 LocalSize 64 1 1
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_EXT_shader_explicit_arithmetic_types"
|
||||
SourceExtension "GL_KHR_cooperative_matrix"
|
||||
SourceExtension "GL_KHR_memory_scope_semantics"
|
||||
Name 4 "main"
|
||||
Name 154 "v"
|
||||
Name 158 "v"
|
||||
Name 164 "v"
|
||||
Name 170 "v"
|
||||
Name 176 "v"
|
||||
Name 182 "v"
|
||||
Name 188 "v"
|
||||
Name 194 "v"
|
||||
Name 199 "v"
|
||||
Name 204 "v"
|
||||
Name 207 "v"
|
||||
Name 212 "v"
|
||||
Name 217 "v"
|
||||
Name 222 "v"
|
||||
Name 227 "v"
|
||||
Name 232 "v"
|
||||
Name 237 "v"
|
||||
Name 242 "v"
|
||||
Name 247 "v"
|
||||
Name 250 "v"
|
||||
Name 255 "v"
|
||||
Name 260 "v"
|
||||
Name 265 "v"
|
||||
Name 271 "v"
|
||||
Name 277 "v"
|
||||
Name 282 "v"
|
||||
Name 287 "v"
|
||||
Name 292 "v"
|
||||
Name 295 "v"
|
||||
Name 300 "v"
|
||||
Name 306 "v"
|
||||
Name 311 "v"
|
||||
Name 317 "v"
|
||||
Name 322 "v"
|
||||
Name 327 "v"
|
||||
Name 332 "v"
|
||||
Name 337 "v"
|
||||
Name 340 "v"
|
||||
Name 346 "v"
|
||||
Name 352 "v"
|
||||
Name 357 "v"
|
||||
Name 362 "v"
|
||||
Name 367 "v"
|
||||
Name 372 "v"
|
||||
Name 378 "v"
|
||||
Name 384 "v"
|
||||
Name 387 "v"
|
||||
Name 392 "v"
|
||||
Name 397 "v"
|
||||
Name 402 "v"
|
||||
Name 407 "v"
|
||||
Name 413 "v"
|
||||
Name 418 "v"
|
||||
Name 424 "v"
|
||||
Name 429 "v"
|
||||
Name 432 "v"
|
||||
Name 437 "v"
|
||||
Name 442 "v"
|
||||
Name 447 "v"
|
||||
Name 453 "v"
|
||||
Name 459 "v"
|
||||
Name 464 "v"
|
||||
Name 469 "v"
|
||||
Name 474 "v"
|
||||
Decorate 480 BuiltIn WorkgroupSize
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeInt 32 0
|
||||
8: 7(int) Constant 3
|
||||
9: 7(int) Constant 8
|
||||
10: 7(int) Constant 0
|
||||
11: TypeCooperativeMatrixKHR 6(float) 8 9 9 10
|
||||
12: 6(float) Constant 1065353216
|
||||
13: 11 ConstantComposite 12
|
||||
14: 6(float) Constant 1073741824
|
||||
15: 11 ConstantComposite 14
|
||||
16: 6(float) Constant 1077936128
|
||||
17: 11 ConstantComposite 16
|
||||
18: 6(float) Constant 1082130432
|
||||
19: 11 ConstantComposite 18
|
||||
20: 6(float) Constant 1084227584
|
||||
21: 11 ConstantComposite 20
|
||||
22: 6(float) Constant 1086324736
|
||||
23: 11 ConstantComposite 22
|
||||
24: 6(float) Constant 1088421888
|
||||
25: 11 ConstantComposite 24
|
||||
26: 6(float) Constant 1090519040
|
||||
27: 11 ConstantComposite 26
|
||||
28: TypeFloat 16
|
||||
29: TypeCooperativeMatrixKHR 28(float16_t) 8 9 9 10
|
||||
30:28(float16_t) Constant 18816
|
||||
31: 29 ConstantComposite 30
|
||||
32:28(float16_t) Constant 18944
|
||||
33: 29 ConstantComposite 32
|
||||
34:28(float16_t) Constant 19072
|
||||
35: 29 ConstantComposite 34
|
||||
36:28(float16_t) Constant 19200
|
||||
37: 29 ConstantComposite 36
|
||||
38:28(float16_t) Constant 19328
|
||||
39: 29 ConstantComposite 38
|
||||
40:28(float16_t) Constant 19456
|
||||
41: 29 ConstantComposite 40
|
||||
42:28(float16_t) Constant 19520
|
||||
43: 29 ConstantComposite 42
|
||||
44:28(float16_t) Constant 19584
|
||||
45: 29 ConstantComposite 44
|
||||
46: TypeCooperativeMatrixKHR 7(int) 8 9 9 10
|
||||
47: 7(int) Constant 21
|
||||
48: 46 ConstantComposite 47
|
||||
49: 7(int) Constant 22
|
||||
50: 46 ConstantComposite 49
|
||||
51: 7(int) Constant 23
|
||||
52: 46 ConstantComposite 51
|
||||
53: 7(int) Constant 24
|
||||
54: 46 ConstantComposite 53
|
||||
55: 7(int) Constant 25
|
||||
56: 46 ConstantComposite 55
|
||||
57: 7(int) Constant 26
|
||||
58: 46 ConstantComposite 57
|
||||
59: 7(int) Constant 27
|
||||
60: 46 ConstantComposite 59
|
||||
61: 7(int) Constant 28
|
||||
62: 46 ConstantComposite 61
|
||||
63: TypeInt 16 0
|
||||
64: TypeCooperativeMatrixKHR 63(int16_t) 8 9 9 10
|
||||
65: 63(int16_t) Constant 31
|
||||
66: 64 ConstantComposite 65
|
||||
67: 63(int16_t) Constant 32
|
||||
68: 64 ConstantComposite 67
|
||||
69: 63(int16_t) Constant 33
|
||||
70: 64 ConstantComposite 69
|
||||
71: 63(int16_t) Constant 34
|
||||
72: 64 ConstantComposite 71
|
||||
73: 63(int16_t) Constant 35
|
||||
74: 64 ConstantComposite 73
|
||||
75: 63(int16_t) Constant 36
|
||||
76: 64 ConstantComposite 75
|
||||
77: 63(int16_t) Constant 37
|
||||
78: 64 ConstantComposite 77
|
||||
79: 63(int16_t) Constant 38
|
||||
80: 64 ConstantComposite 79
|
||||
81: TypeInt 8 0
|
||||
82: TypeCooperativeMatrixKHR 81(int8_t) 8 9 9 10
|
||||
83: 81(int8_t) Constant 41
|
||||
84: 82 ConstantComposite 83
|
||||
85: 81(int8_t) Constant 42
|
||||
86: 82 ConstantComposite 85
|
||||
87: 81(int8_t) Constant 43
|
||||
88: 82 ConstantComposite 87
|
||||
89: 81(int8_t) Constant 44
|
||||
90: 82 ConstantComposite 89
|
||||
91: 81(int8_t) Constant 45
|
||||
92: 82 ConstantComposite 91
|
||||
93: 81(int8_t) Constant 46
|
||||
94: 82 ConstantComposite 93
|
||||
95: 81(int8_t) Constant 47
|
||||
96: 82 ConstantComposite 95
|
||||
97: 81(int8_t) Constant 48
|
||||
98: 82 ConstantComposite 97
|
||||
99: TypeInt 32 1
|
||||
100: TypeCooperativeMatrixKHR 99(int) 8 9 9 10
|
||||
101: 99(int) Constant 51
|
||||
102: 100 ConstantComposite 101
|
||||
103: 99(int) Constant 52
|
||||
104: 100 ConstantComposite 103
|
||||
105: 99(int) Constant 53
|
||||
106: 100 ConstantComposite 105
|
||||
107: 99(int) Constant 54
|
||||
108: 100 ConstantComposite 107
|
||||
109: 99(int) Constant 55
|
||||
110: 100 ConstantComposite 109
|
||||
111: 99(int) Constant 56
|
||||
112: 100 ConstantComposite 111
|
||||
113: 99(int) Constant 57
|
||||
114: 100 ConstantComposite 113
|
||||
115: 99(int) Constant 58
|
||||
116: 100 ConstantComposite 115
|
||||
117: TypeInt 16 1
|
||||
118: TypeCooperativeMatrixKHR 117(int16_t) 8 9 9 10
|
||||
119:117(int16_t) Constant 61
|
||||
120: 118 ConstantComposite 119
|
||||
121:117(int16_t) Constant 62
|
||||
122: 118 ConstantComposite 121
|
||||
123:117(int16_t) Constant 63
|
||||
124: 118 ConstantComposite 123
|
||||
125:117(int16_t) Constant 64
|
||||
126: 118 ConstantComposite 125
|
||||
127:117(int16_t) Constant 65
|
||||
128: 118 ConstantComposite 127
|
||||
129:117(int16_t) Constant 66
|
||||
130: 118 ConstantComposite 129
|
||||
131:117(int16_t) Constant 67
|
||||
132: 118 ConstantComposite 131
|
||||
133:117(int16_t) Constant 68
|
||||
134: 118 ConstantComposite 133
|
||||
135: TypeInt 8 1
|
||||
136: TypeCooperativeMatrixKHR 135(int8_t) 8 9 9 10
|
||||
137: 135(int8_t) Constant 71
|
||||
138: 136 ConstantComposite 137
|
||||
139: 135(int8_t) Constant 72
|
||||
140: 136 ConstantComposite 139
|
||||
141: 135(int8_t) Constant 73
|
||||
142: 136 ConstantComposite 141
|
||||
143: 135(int8_t) Constant 74
|
||||
144: 136 ConstantComposite 143
|
||||
145: 135(int8_t) Constant 75
|
||||
146: 136 ConstantComposite 145
|
||||
147: 135(int8_t) Constant 76
|
||||
148: 136 ConstantComposite 147
|
||||
149: 135(int8_t) Constant 77
|
||||
150: 136 ConstantComposite 149
|
||||
151: 135(int8_t) Constant 78
|
||||
152: 136 ConstantComposite 151
|
||||
153: TypePointer Function 11
|
||||
155: 6(float) Constant 1120534528
|
||||
156: 11 ConstantComposite 155
|
||||
157: TypePointer Function 29
|
||||
159:28(float16_t) Constant 22112
|
||||
160: 29 ConstantComposite 159
|
||||
163: TypePointer Function 46
|
||||
165: 7(int) Constant 103
|
||||
166: 46 ConstantComposite 165
|
||||
169: TypePointer Function 64
|
||||
171: 63(int16_t) Constant 104
|
||||
172: 64 ConstantComposite 171
|
||||
175: TypePointer Function 82
|
||||
177: 81(int8_t) Constant 105
|
||||
178: 82 ConstantComposite 177
|
||||
181: TypePointer Function 100
|
||||
183: 99(int) Constant 106
|
||||
184: 100 ConstantComposite 183
|
||||
187: TypePointer Function 118
|
||||
189:117(int16_t) Constant 107
|
||||
190: 118 ConstantComposite 189
|
||||
193: TypePointer Function 136
|
||||
195: 135(int8_t) Constant 108
|
||||
196: 136 ConstantComposite 195
|
||||
200: 6(float) Constant 1121845248
|
||||
201: 11 ConstantComposite 200
|
||||
205:28(float16_t) Constant 22272
|
||||
206: 29 ConstantComposite 205
|
||||
208: 7(int) Constant 113
|
||||
209: 46 ConstantComposite 208
|
||||
213: 63(int16_t) Constant 114
|
||||
214: 64 ConstantComposite 213
|
||||
218: 81(int8_t) Constant 115
|
||||
219: 82 ConstantComposite 218
|
||||
223: 99(int) Constant 116
|
||||
224: 100 ConstantComposite 223
|
||||
228:117(int16_t) Constant 117
|
||||
229: 118 ConstantComposite 228
|
||||
233: 135(int8_t) Constant 118
|
||||
234: 136 ConstantComposite 233
|
||||
238: 6(float) Constant 1123155968
|
||||
239: 11 ConstantComposite 238
|
||||
243:28(float16_t) Constant 22432
|
||||
244: 29 ConstantComposite 243
|
||||
248: 7(int) Constant 123
|
||||
249: 46 ConstantComposite 248
|
||||
251: 63(int16_t) Constant 124
|
||||
252: 64 ConstantComposite 251
|
||||
256: 81(int8_t) Constant 125
|
||||
257: 82 ConstantComposite 256
|
||||
261: 99(int) Constant 126
|
||||
262: 100 ConstantComposite 261
|
||||
266:117(int16_t) Constant 127
|
||||
267: 118 ConstantComposite 266
|
||||
272: 135(int8_t) Constant 4294967168
|
||||
273: 136 ConstantComposite 272
|
||||
278: 6(float) Constant 1124270080
|
||||
279: 11 ConstantComposite 278
|
||||
283:28(float16_t) Constant 22560
|
||||
284: 29 ConstantComposite 283
|
||||
288: 7(int) Constant 133
|
||||
289: 46 ConstantComposite 288
|
||||
293: 63(int16_t) Constant 134
|
||||
294: 64 ConstantComposite 293
|
||||
296: 81(int8_t) Constant 135
|
||||
297: 82 ConstantComposite 296
|
||||
301: 99(int) Constant 136
|
||||
302: 100 ConstantComposite 301
|
||||
307:117(int16_t) Constant 137
|
||||
308: 118 ConstantComposite 307
|
||||
312: 135(int8_t) Constant 4294967178
|
||||
313: 136 ConstantComposite 312
|
||||
318: 6(float) Constant 1124925440
|
||||
319: 11 ConstantComposite 318
|
||||
323:28(float16_t) Constant 22640
|
||||
324: 29 ConstantComposite 323
|
||||
328: 7(int) Constant 143
|
||||
329: 46 ConstantComposite 328
|
||||
333: 63(int16_t) Constant 144
|
||||
334: 64 ConstantComposite 333
|
||||
338: 81(int8_t) Constant 145
|
||||
339: 82 ConstantComposite 338
|
||||
341: 99(int) Constant 146
|
||||
342: 100 ConstantComposite 341
|
||||
347:117(int16_t) Constant 147
|
||||
348: 118 ConstantComposite 347
|
||||
353: 135(int8_t) Constant 4294967188
|
||||
354: 136 ConstantComposite 353
|
||||
358: 6(float) Constant 1125580800
|
||||
359: 11 ConstantComposite 358
|
||||
363:28(float16_t) Constant 22720
|
||||
364: 29 ConstantComposite 363
|
||||
368: 7(int) Constant 153
|
||||
369: 46 ConstantComposite 368
|
||||
373: 63(int16_t) Constant 154
|
||||
374: 64 ConstantComposite 373
|
||||
379: 81(int8_t) Constant 155
|
||||
380: 82 ConstantComposite 379
|
||||
385: 99(int) Constant 156
|
||||
386: 100 ConstantComposite 385
|
||||
388:117(int16_t) Constant 157
|
||||
389: 118 ConstantComposite 388
|
||||
393: 135(int8_t) Constant 4294967198
|
||||
394: 136 ConstantComposite 393
|
||||
398: 6(float) Constant 1126236160
|
||||
399: 11 ConstantComposite 398
|
||||
403:28(float16_t) Constant 22800
|
||||
404: 29 ConstantComposite 403
|
||||
408: 7(int) Constant 163
|
||||
409: 46 ConstantComposite 408
|
||||
414: 63(int16_t) Constant 164
|
||||
415: 64 ConstantComposite 414
|
||||
419: 81(int8_t) Constant 165
|
||||
420: 82 ConstantComposite 419
|
||||
425: 99(int) Constant 166
|
||||
426: 100 ConstantComposite 425
|
||||
430:117(int16_t) Constant 167
|
||||
431: 118 ConstantComposite 430
|
||||
433: 135(int8_t) Constant 4294967208
|
||||
434: 136 ConstantComposite 433
|
||||
438: 6(float) Constant 1126891520
|
||||
439: 11 ConstantComposite 438
|
||||
443:28(float16_t) Constant 22880
|
||||
444: 29 ConstantComposite 443
|
||||
448: 7(int) Constant 173
|
||||
449: 46 ConstantComposite 448
|
||||
454: 63(int16_t) Constant 174
|
||||
455: 64 ConstantComposite 454
|
||||
460: 81(int8_t) Constant 175
|
||||
461: 82 ConstantComposite 460
|
||||
465: 99(int) Constant 176
|
||||
466: 100 ConstantComposite 465
|
||||
470:117(int16_t) Constant 177
|
||||
471: 118 ConstantComposite 470
|
||||
475: 135(int8_t) Constant 4294967218
|
||||
476: 136 ConstantComposite 475
|
||||
477: TypeVector 7(int) 3
|
||||
478: 7(int) Constant 64
|
||||
479: 7(int) Constant 1
|
||||
480: 477(ivec3) ConstantComposite 478 479 479
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
154(v): 153(ptr) Variable Function
|
||||
158(v): 157(ptr) Variable Function
|
||||
164(v): 163(ptr) Variable Function
|
||||
170(v): 169(ptr) Variable Function
|
||||
176(v): 175(ptr) Variable Function
|
||||
182(v): 181(ptr) Variable Function
|
||||
188(v): 187(ptr) Variable Function
|
||||
194(v): 193(ptr) Variable Function
|
||||
199(v): 153(ptr) Variable Function
|
||||
204(v): 157(ptr) Variable Function
|
||||
207(v): 163(ptr) Variable Function
|
||||
212(v): 169(ptr) Variable Function
|
||||
217(v): 175(ptr) Variable Function
|
||||
222(v): 181(ptr) Variable Function
|
||||
227(v): 187(ptr) Variable Function
|
||||
232(v): 193(ptr) Variable Function
|
||||
237(v): 153(ptr) Variable Function
|
||||
242(v): 157(ptr) Variable Function
|
||||
247(v): 163(ptr) Variable Function
|
||||
250(v): 169(ptr) Variable Function
|
||||
255(v): 175(ptr) Variable Function
|
||||
260(v): 181(ptr) Variable Function
|
||||
265(v): 187(ptr) Variable Function
|
||||
271(v): 193(ptr) Variable Function
|
||||
277(v): 153(ptr) Variable Function
|
||||
282(v): 157(ptr) Variable Function
|
||||
287(v): 163(ptr) Variable Function
|
||||
292(v): 169(ptr) Variable Function
|
||||
295(v): 175(ptr) Variable Function
|
||||
300(v): 181(ptr) Variable Function
|
||||
306(v): 187(ptr) Variable Function
|
||||
311(v): 193(ptr) Variable Function
|
||||
317(v): 153(ptr) Variable Function
|
||||
322(v): 157(ptr) Variable Function
|
||||
327(v): 163(ptr) Variable Function
|
||||
332(v): 169(ptr) Variable Function
|
||||
337(v): 175(ptr) Variable Function
|
||||
340(v): 181(ptr) Variable Function
|
||||
346(v): 187(ptr) Variable Function
|
||||
352(v): 193(ptr) Variable Function
|
||||
357(v): 153(ptr) Variable Function
|
||||
362(v): 157(ptr) Variable Function
|
||||
367(v): 163(ptr) Variable Function
|
||||
372(v): 169(ptr) Variable Function
|
||||
378(v): 175(ptr) Variable Function
|
||||
384(v): 181(ptr) Variable Function
|
||||
387(v): 187(ptr) Variable Function
|
||||
392(v): 193(ptr) Variable Function
|
||||
397(v): 153(ptr) Variable Function
|
||||
402(v): 157(ptr) Variable Function
|
||||
407(v): 163(ptr) Variable Function
|
||||
413(v): 169(ptr) Variable Function
|
||||
418(v): 175(ptr) Variable Function
|
||||
424(v): 181(ptr) Variable Function
|
||||
429(v): 187(ptr) Variable Function
|
||||
432(v): 193(ptr) Variable Function
|
||||
437(v): 153(ptr) Variable Function
|
||||
442(v): 157(ptr) Variable Function
|
||||
447(v): 163(ptr) Variable Function
|
||||
453(v): 169(ptr) Variable Function
|
||||
459(v): 175(ptr) Variable Function
|
||||
464(v): 181(ptr) Variable Function
|
||||
469(v): 187(ptr) Variable Function
|
||||
474(v): 193(ptr) Variable Function
|
||||
Store 154(v) 156
|
||||
Store 158(v) 160
|
||||
161: 29 Load 158(v)
|
||||
162: 11 FConvert 161
|
||||
Store 164(v) 166
|
||||
167: 46 Load 164(v)
|
||||
168: 11 ConvertUToF 167
|
||||
Store 170(v) 172
|
||||
173: 64 Load 170(v)
|
||||
174: 11 ConvertUToF 173
|
||||
Store 176(v) 178
|
||||
179: 82 Load 176(v)
|
||||
180: 11 ConvertUToF 179
|
||||
Store 182(v) 184
|
||||
185: 100 Load 182(v)
|
||||
186: 11 ConvertSToF 185
|
||||
Store 188(v) 190
|
||||
191: 118 Load 188(v)
|
||||
192: 11 ConvertSToF 191
|
||||
Store 194(v) 196
|
||||
197: 136 Load 194(v)
|
||||
198: 11 ConvertSToF 197
|
||||
Store 199(v) 201
|
||||
202: 11 Load 199(v)
|
||||
203: 29 FConvert 202
|
||||
Store 204(v) 206
|
||||
Store 207(v) 209
|
||||
210: 46 Load 207(v)
|
||||
211: 29 ConvertUToF 210
|
||||
Store 212(v) 214
|
||||
215: 64 Load 212(v)
|
||||
216: 29 ConvertUToF 215
|
||||
Store 217(v) 219
|
||||
220: 82 Load 217(v)
|
||||
221: 29 ConvertUToF 220
|
||||
Store 222(v) 224
|
||||
225: 100 Load 222(v)
|
||||
226: 29 ConvertSToF 225
|
||||
Store 227(v) 229
|
||||
230: 118 Load 227(v)
|
||||
231: 29 ConvertSToF 230
|
||||
Store 232(v) 234
|
||||
235: 136 Load 232(v)
|
||||
236: 29 ConvertSToF 235
|
||||
Store 237(v) 239
|
||||
240: 11 Load 237(v)
|
||||
241: 46 ConvertFToU 240
|
||||
Store 242(v) 244
|
||||
245: 29 Load 242(v)
|
||||
246: 46 ConvertFToU 245
|
||||
Store 247(v) 249
|
||||
Store 250(v) 252
|
||||
253: 64 Load 250(v)
|
||||
254: 46 UConvert 253
|
||||
Store 255(v) 257
|
||||
258: 82 Load 255(v)
|
||||
259: 46 UConvert 258
|
||||
Store 260(v) 262
|
||||
263: 100 Load 260(v)
|
||||
264: 46 Bitcast 263
|
||||
Store 265(v) 267
|
||||
268: 118 Load 265(v)
|
||||
269: 100 SConvert 268
|
||||
270: 46 Bitcast 269
|
||||
Store 271(v) 273
|
||||
274: 136 Load 271(v)
|
||||
275: 100 SConvert 274
|
||||
276: 46 Bitcast 275
|
||||
Store 277(v) 279
|
||||
280: 11 Load 277(v)
|
||||
281: 64 ConvertFToU 280
|
||||
Store 282(v) 284
|
||||
285: 29 Load 282(v)
|
||||
286: 64 ConvertFToU 285
|
||||
Store 287(v) 289
|
||||
290: 46 Load 287(v)
|
||||
291: 64 UConvert 290
|
||||
Store 292(v) 294
|
||||
Store 295(v) 297
|
||||
298: 82 Load 295(v)
|
||||
299: 64 UConvert 298
|
||||
Store 300(v) 302
|
||||
303: 100 Load 300(v)
|
||||
304: 118 SConvert 303
|
||||
305: 64 Bitcast 304
|
||||
Store 306(v) 308
|
||||
309: 118 Load 306(v)
|
||||
310: 64 Bitcast 309
|
||||
Store 311(v) 313
|
||||
314: 136 Load 311(v)
|
||||
315: 118 SConvert 314
|
||||
316: 64 Bitcast 315
|
||||
Store 317(v) 319
|
||||
320: 11 Load 317(v)
|
||||
321: 82 ConvertFToU 320
|
||||
Store 322(v) 324
|
||||
325: 29 Load 322(v)
|
||||
326: 82 ConvertFToU 325
|
||||
Store 327(v) 329
|
||||
330: 46 Load 327(v)
|
||||
331: 82 UConvert 330
|
||||
Store 332(v) 334
|
||||
335: 64 Load 332(v)
|
||||
336: 82 UConvert 335
|
||||
Store 337(v) 339
|
||||
Store 340(v) 342
|
||||
343: 100 Load 340(v)
|
||||
344: 136 SConvert 343
|
||||
345: 82 Bitcast 344
|
||||
Store 346(v) 348
|
||||
349: 118 Load 346(v)
|
||||
350: 136 SConvert 349
|
||||
351: 82 Bitcast 350
|
||||
Store 352(v) 354
|
||||
355: 136 Load 352(v)
|
||||
356: 82 Bitcast 355
|
||||
Store 357(v) 359
|
||||
360: 11 Load 357(v)
|
||||
361: 100 ConvertFToS 360
|
||||
Store 362(v) 364
|
||||
365: 29 Load 362(v)
|
||||
366: 100 ConvertFToS 365
|
||||
Store 367(v) 369
|
||||
370: 46 Load 367(v)
|
||||
371: 100 Bitcast 370
|
||||
Store 372(v) 374
|
||||
375: 64 Load 372(v)
|
||||
376: 46 UConvert 375
|
||||
377: 100 Bitcast 376
|
||||
Store 378(v) 380
|
||||
381: 82 Load 378(v)
|
||||
382: 46 UConvert 381
|
||||
383: 100 Bitcast 382
|
||||
Store 384(v) 386
|
||||
Store 387(v) 389
|
||||
390: 118 Load 387(v)
|
||||
391: 100 SConvert 390
|
||||
Store 392(v) 394
|
||||
395: 136 Load 392(v)
|
||||
396: 100 SConvert 395
|
||||
Store 397(v) 399
|
||||
400: 11 Load 397(v)
|
||||
401: 118 ConvertFToS 400
|
||||
Store 402(v) 404
|
||||
405: 29 Load 402(v)
|
||||
406: 118 ConvertFToS 405
|
||||
Store 407(v) 409
|
||||
410: 46 Load 407(v)
|
||||
411: 64 UConvert 410
|
||||
412: 118 Bitcast 411
|
||||
Store 413(v) 415
|
||||
416: 64 Load 413(v)
|
||||
417: 118 Bitcast 416
|
||||
Store 418(v) 420
|
||||
421: 82 Load 418(v)
|
||||
422: 64 UConvert 421
|
||||
423: 118 Bitcast 422
|
||||
Store 424(v) 426
|
||||
427: 100 Load 424(v)
|
||||
428: 118 SConvert 427
|
||||
Store 429(v) 431
|
||||
Store 432(v) 434
|
||||
435: 136 Load 432(v)
|
||||
436: 118 SConvert 435
|
||||
Store 437(v) 439
|
||||
440: 11 Load 437(v)
|
||||
441: 136 ConvertFToS 440
|
||||
Store 442(v) 444
|
||||
445: 29 Load 442(v)
|
||||
446: 136 ConvertFToS 445
|
||||
Store 447(v) 449
|
||||
450: 46 Load 447(v)
|
||||
451: 82 UConvert 450
|
||||
452: 136 Bitcast 451
|
||||
Store 453(v) 455
|
||||
456: 64 Load 453(v)
|
||||
457: 82 UConvert 456
|
||||
458: 136 Bitcast 457
|
||||
Store 459(v) 461
|
||||
462: 82 Load 459(v)
|
||||
463: 136 Bitcast 462
|
||||
Store 464(v) 466
|
||||
467: 100 Load 464(v)
|
||||
468: 136 SConvert 467
|
||||
Store 469(v) 471
|
||||
472: 118 Load 469(v)
|
||||
473: 136 SConvert 472
|
||||
Store 474(v) 476
|
||||
Return
|
||||
FunctionEnd
|
@ -0,0 +1,9 @@
|
||||
spv.coopmatKHR_constructorError.comp
|
||||
ERROR: 0:12: 'constructor' : Cooperative matrix type parameters mismatch
|
||||
ERROR: 0:13: 'constructor' : Cooperative matrix type parameters mismatch
|
||||
ERROR: 0:14: 'constructor' : Cooperative matrix type parameters mismatch
|
||||
ERROR: 0:15: 'constructor' : Cooperative matrix type parameters mismatch
|
||||
ERROR: 4 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
@ -1,12 +1,12 @@
|
||||
spv.debugInfo.frag
|
||||
// Module Version 10300
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 124
|
||||
// Id's are bound by 187
|
||||
|
||||
Capability Shader
|
||||
2: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 5 "main" 24 52
|
||||
EntryPoint Fragment 5 "main" 30 104
|
||||
ExecutionMode 5 OriginUpperLeft
|
||||
1: String "spv.debugInfo.frag"
|
||||
Source GLSL 450 1 "#version 450
|
||||
@ -36,9 +36,40 @@ vec4 foo(S s)
|
||||
return r;
|
||||
}
|
||||
|
||||
float testBranch(float x, float y)
|
||||
{
|
||||
float result = 0;
|
||||
bool b = x > 0;
|
||||
|
||||
// branch with load
|
||||
if (b) {
|
||||
result += 1;
|
||||
}
|
||||
else {
|
||||
result -= 1;
|
||||
}
|
||||
|
||||
// branch with expression
|
||||
if (x > y) {
|
||||
result += x - y;
|
||||
}
|
||||
|
||||
// selection with load
|
||||
result += b ?
|
||||
1 : -1;
|
||||
|
||||
// selection with expression
|
||||
result += x < y ?
|
||||
y :
|
||||
float(b);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
outv = foo(s);
|
||||
outv += testBranch(inv.x, inv.y);
|
||||
outv += texture(s2d, vec2(0.5));
|
||||
|
||||
switch (s.a) {
|
||||
@ -66,17 +97,24 @@ void main()
|
||||
MemberName 8(S) 0 "a"
|
||||
Name 14 "foo(struct-S-i11;"
|
||||
Name 13 "s"
|
||||
Name 17 "r"
|
||||
Name 24 "inv"
|
||||
Name 52 "outv"
|
||||
Name 53 "S"
|
||||
MemberName 53(S) 0 "a"
|
||||
Name 54 "ubuf"
|
||||
MemberName 54(ubuf) 0 "s"
|
||||
Name 56 ""
|
||||
Name 57 "param"
|
||||
Name 67 "s2d"
|
||||
Name 97 "i"
|
||||
Name 20 "testBranch(f1;f1;"
|
||||
Name 18 "x"
|
||||
Name 19 "y"
|
||||
Name 23 "r"
|
||||
Name 30 "inv"
|
||||
Name 56 "result"
|
||||
Name 59 "b"
|
||||
Name 104 "outv"
|
||||
Name 105 "S"
|
||||
MemberName 105(S) 0 "a"
|
||||
Name 106 "ubuf"
|
||||
MemberName 106(ubuf) 0 "s"
|
||||
Name 108 ""
|
||||
Name 109 "param"
|
||||
Name 116 "param"
|
||||
Name 120 "param"
|
||||
Name 131 "s2d"
|
||||
Name 161 "i"
|
||||
ModuleProcessed "no-storage-format"
|
||||
ModuleProcessed "resource-set-binding 3"
|
||||
ModuleProcessed "auto-map-bindings"
|
||||
@ -88,15 +126,15 @@ void main()
|
||||
ModuleProcessed "suppress-warnings"
|
||||
ModuleProcessed "hlsl-offsets"
|
||||
ModuleProcessed "entry-point main"
|
||||
Decorate 24(inv) Location 0
|
||||
Decorate 52(outv) Location 0
|
||||
MemberDecorate 53(S) 0 Offset 0
|
||||
MemberDecorate 54(ubuf) 0 Offset 0
|
||||
Decorate 54(ubuf) Block
|
||||
Decorate 56 DescriptorSet 3
|
||||
Decorate 56 Binding 0
|
||||
Decorate 67(s2d) DescriptorSet 3
|
||||
Decorate 67(s2d) Binding 1
|
||||
Decorate 30(inv) Location 0
|
||||
Decorate 104(outv) Location 0
|
||||
MemberDecorate 105(S) 0 Offset 0
|
||||
MemberDecorate 106(ubuf) 0 Offset 0
|
||||
Decorate 106(ubuf) Block
|
||||
Decorate 108 DescriptorSet 3
|
||||
Decorate 108 Binding 0
|
||||
Decorate 131(s2d) DescriptorSet 3
|
||||
Decorate 131(s2d) Binding 1
|
||||
3: TypeVoid
|
||||
4: TypeFunction 3
|
||||
7: TypeInt 32 1
|
||||
@ -105,179 +143,280 @@ void main()
|
||||
10: TypeFloat 32
|
||||
11: TypeVector 10(float) 4
|
||||
12: TypeFunction 11(fvec4) 9(ptr)
|
||||
16: TypePointer Function 11(fvec4)
|
||||
18: 7(int) Constant 0
|
||||
19: TypePointer Function 7(int)
|
||||
23: TypePointer Input 11(fvec4)
|
||||
24(inv): 23(ptr) Variable Input
|
||||
28: 10(float) Constant 1065353216
|
||||
31: TypeInt 32 0
|
||||
32: 31(int) Constant 0
|
||||
33: TypePointer Function 10(float)
|
||||
36: 10(float) Constant 1077936128
|
||||
37: TypeBool
|
||||
45: 10(float) Constant 1073741824
|
||||
51: TypePointer Output 11(fvec4)
|
||||
52(outv): 51(ptr) Variable Output
|
||||
53(S): TypeStruct 7(int)
|
||||
54(ubuf): TypeStruct 53(S)
|
||||
55: TypePointer Uniform 54(ubuf)
|
||||
56: 55(ptr) Variable Uniform
|
||||
58: TypePointer Uniform 53(S)
|
||||
64: TypeImage 10(float) 2D sampled format:Unknown
|
||||
65: TypeSampledImage 64
|
||||
66: TypePointer UniformConstant 65
|
||||
67(s2d): 66(ptr) Variable UniformConstant
|
||||
69: TypeVector 10(float) 2
|
||||
70: 10(float) Constant 1056964608
|
||||
71: 69(fvec2) ConstantComposite 70 70
|
||||
75: TypePointer Uniform 7(int)
|
||||
104: 7(int) Constant 10
|
||||
109: 7(int) Constant 1
|
||||
111: TypePointer Output 10(float)
|
||||
114: 10(float) Constant 1092616192
|
||||
Line 1 28 11
|
||||
16: TypePointer Function 10(float)
|
||||
17: TypeFunction 10(float) 16(ptr) 16(ptr)
|
||||
22: TypePointer Function 11(fvec4)
|
||||
24: 7(int) Constant 0
|
||||
25: TypePointer Function 7(int)
|
||||
29: TypePointer Input 11(fvec4)
|
||||
30(inv): 29(ptr) Variable Input
|
||||
34: 10(float) Constant 1065353216
|
||||
37: TypeInt 32 0
|
||||
38: 37(int) Constant 0
|
||||
41: 10(float) Constant 1077936128
|
||||
42: TypeBool
|
||||
50: 10(float) Constant 1073741824
|
||||
57: 10(float) Constant 0
|
||||
58: TypePointer Function 42(bool)
|
||||
81: 7(int) Constant 1
|
||||
82: 7(int) Constant 4294967295
|
||||
103: TypePointer Output 11(fvec4)
|
||||
104(outv): 103(ptr) Variable Output
|
||||
105(S): TypeStruct 7(int)
|
||||
106(ubuf): TypeStruct 105(S)
|
||||
107: TypePointer Uniform 106(ubuf)
|
||||
108: 107(ptr) Variable Uniform
|
||||
110: TypePointer Uniform 105(S)
|
||||
117: TypePointer Input 10(float)
|
||||
121: 37(int) Constant 1
|
||||
128: TypeImage 10(float) 2D sampled format:Unknown
|
||||
129: TypeSampledImage 128
|
||||
130: TypePointer UniformConstant 129
|
||||
131(s2d): 130(ptr) Variable UniformConstant
|
||||
133: TypeVector 10(float) 2
|
||||
134: 10(float) Constant 1056964608
|
||||
135: 133(fvec2) ConstantComposite 134 134
|
||||
139: TypePointer Uniform 7(int)
|
||||
168: 7(int) Constant 10
|
||||
174: TypePointer Output 10(float)
|
||||
177: 10(float) Constant 1092616192
|
||||
Line 1 58 11
|
||||
5(main): 3 Function None 4
|
||||
6: Label
|
||||
57(param): 9(ptr) Variable Function
|
||||
97(i): 19(ptr) Variable Function
|
||||
116: 16(ptr) Variable Function
|
||||
Line 1 30 0
|
||||
59: 58(ptr) AccessChain 56 18
|
||||
60: 53(S) Load 59
|
||||
61: 7(int) CompositeExtract 60 0
|
||||
62: 19(ptr) AccessChain 57(param) 18
|
||||
Store 62 61
|
||||
63: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 57(param)
|
||||
Store 52(outv) 63
|
||||
Line 1 31 0
|
||||
68: 65 Load 67(s2d)
|
||||
72: 11(fvec4) ImageSampleImplicitLod 68 71
|
||||
73: 11(fvec4) Load 52(outv)
|
||||
74: 11(fvec4) FAdd 73 72
|
||||
Store 52(outv) 74
|
||||
Line 1 33 0
|
||||
76: 75(ptr) AccessChain 56 18 18
|
||||
77: 7(int) Load 76
|
||||
SelectionMerge 81 None
|
||||
Switch 77 80
|
||||
case 10: 78
|
||||
case 20: 79
|
||||
80: Label
|
||||
Line 1 42 0
|
||||
92: 11(fvec4) Load 52(outv)
|
||||
93: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||
94: 11(fvec4) FSub 92 93
|
||||
Store 52(outv) 94
|
||||
Line 1 43 0
|
||||
Branch 81
|
||||
78: Label
|
||||
Line 1 35 0
|
||||
82: 11(fvec4) Load 52(outv)
|
||||
83: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||
84: 11(fvec4) FAdd 82 83
|
||||
Store 52(outv) 84
|
||||
Line 1 36 0
|
||||
Branch 81
|
||||
79: Label
|
||||
Line 1 38 0
|
||||
86: 11(fvec4) Load 52(outv)
|
||||
87: 11(fvec4) VectorTimesScalar 86 45
|
||||
Store 52(outv) 87
|
||||
Line 1 39 0
|
||||
88: 11(fvec4) Load 52(outv)
|
||||
89: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||
90: 11(fvec4) FAdd 88 89
|
||||
Store 52(outv) 90
|
||||
Line 1 40 0
|
||||
Branch 81
|
||||
81: Label
|
||||
Line 1 46 0
|
||||
Store 97(i) 18
|
||||
Branch 98
|
||||
98: Label
|
||||
Line 1 46 0
|
||||
LoopMerge 100 101 None
|
||||
Branch 102
|
||||
102: Label
|
||||
Line 1 46 0
|
||||
103: 7(int) Load 97(i)
|
||||
105: 37(bool) SLessThan 103 104
|
||||
BranchConditional 105 99 100
|
||||
99: Label
|
||||
Line 1 47 0
|
||||
106: 11(fvec4) Load 52(outv)
|
||||
107: 11(fvec4) VectorTimesScalar 106 36
|
||||
Store 52(outv) 107
|
||||
Branch 101
|
||||
101: Label
|
||||
Line 1 46 0
|
||||
108: 7(int) Load 97(i)
|
||||
110: 7(int) IAdd 108 109
|
||||
Store 97(i) 110
|
||||
Branch 98
|
||||
100: Label
|
||||
Line 1 49 0
|
||||
112: 111(ptr) AccessChain 52(outv) 32
|
||||
113: 10(float) Load 112
|
||||
115: 37(bool) FOrdLessThan 113 114
|
||||
SelectionMerge 118 None
|
||||
BranchConditional 115 117 121
|
||||
117: Label
|
||||
Line 1 50 0
|
||||
119: 11(fvec4) Load 52(outv)
|
||||
120: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 119
|
||||
Store 52(outv) 120
|
||||
Store 116 120
|
||||
Branch 118
|
||||
121: Label
|
||||
Line 1 51 0
|
||||
122: 11(fvec4) Load 52(outv)
|
||||
123: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 122
|
||||
Store 52(outv) 123
|
||||
Store 116 123
|
||||
Branch 118
|
||||
118: Label
|
||||
109(param): 9(ptr) Variable Function
|
||||
116(param): 16(ptr) Variable Function
|
||||
120(param): 16(ptr) Variable Function
|
||||
161(i): 25(ptr) Variable Function
|
||||
179: 22(ptr) Variable Function
|
||||
Line 1 60 0
|
||||
111: 110(ptr) AccessChain 108 24
|
||||
112: 105(S) Load 111
|
||||
113: 7(int) CompositeExtract 112 0
|
||||
114: 25(ptr) AccessChain 109(param) 24
|
||||
Store 114 113
|
||||
115: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 109(param)
|
||||
Store 104(outv) 115
|
||||
Line 1 61 0
|
||||
118: 117(ptr) AccessChain 30(inv) 38
|
||||
119: 10(float) Load 118
|
||||
Store 116(param) 119
|
||||
122: 117(ptr) AccessChain 30(inv) 121
|
||||
123: 10(float) Load 122
|
||||
Store 120(param) 123
|
||||
124: 10(float) FunctionCall 20(testBranch(f1;f1;) 116(param) 120(param)
|
||||
125: 11(fvec4) Load 104(outv)
|
||||
126: 11(fvec4) CompositeConstruct 124 124 124 124
|
||||
127: 11(fvec4) FAdd 125 126
|
||||
Store 104(outv) 127
|
||||
Line 1 62 0
|
||||
132: 129 Load 131(s2d)
|
||||
136: 11(fvec4) ImageSampleImplicitLod 132 135
|
||||
137: 11(fvec4) Load 104(outv)
|
||||
138: 11(fvec4) FAdd 137 136
|
||||
Store 104(outv) 138
|
||||
Line 1 64 0
|
||||
140: 139(ptr) AccessChain 108 24 24
|
||||
141: 7(int) Load 140
|
||||
SelectionMerge 145 None
|
||||
Switch 141 144
|
||||
case 10: 142
|
||||
case 20: 143
|
||||
144: Label
|
||||
Line 1 73 0
|
||||
156: 11(fvec4) Load 104(outv)
|
||||
157: 11(fvec4) CompositeConstruct 34 34 34 34
|
||||
158: 11(fvec4) FSub 156 157
|
||||
Store 104(outv) 158
|
||||
Line 1 74 0
|
||||
Branch 145
|
||||
142: Label
|
||||
Line 1 66 0
|
||||
146: 11(fvec4) Load 104(outv)
|
||||
147: 11(fvec4) CompositeConstruct 34 34 34 34
|
||||
148: 11(fvec4) FAdd 146 147
|
||||
Store 104(outv) 148
|
||||
Line 1 67 0
|
||||
Branch 145
|
||||
143: Label
|
||||
Line 1 69 0
|
||||
150: 11(fvec4) Load 104(outv)
|
||||
151: 11(fvec4) VectorTimesScalar 150 50
|
||||
Store 104(outv) 151
|
||||
Line 1 70 0
|
||||
152: 11(fvec4) Load 104(outv)
|
||||
153: 11(fvec4) CompositeConstruct 34 34 34 34
|
||||
154: 11(fvec4) FAdd 152 153
|
||||
Store 104(outv) 154
|
||||
Line 1 71 0
|
||||
Branch 145
|
||||
145: Label
|
||||
Line 1 77 0
|
||||
Store 161(i) 24
|
||||
Branch 162
|
||||
162: Label
|
||||
Line 1 77 0
|
||||
LoopMerge 164 165 None
|
||||
Branch 166
|
||||
166: Label
|
||||
Line 1 77 0
|
||||
167: 7(int) Load 161(i)
|
||||
169: 42(bool) SLessThan 167 168
|
||||
BranchConditional 169 163 164
|
||||
163: Label
|
||||
Line 1 78 0
|
||||
170: 11(fvec4) Load 104(outv)
|
||||
171: 11(fvec4) VectorTimesScalar 170 41
|
||||
Store 104(outv) 171
|
||||
Branch 165
|
||||
165: Label
|
||||
Line 1 77 0
|
||||
172: 7(int) Load 161(i)
|
||||
173: 7(int) IAdd 172 81
|
||||
Store 161(i) 173
|
||||
Branch 162
|
||||
164: Label
|
||||
Line 1 80 0
|
||||
175: 174(ptr) AccessChain 104(outv) 38
|
||||
176: 10(float) Load 175
|
||||
178: 42(bool) FOrdLessThan 176 177
|
||||
SelectionMerge 181 None
|
||||
BranchConditional 178 180 184
|
||||
180: Label
|
||||
Line 1 81 0
|
||||
182: 11(fvec4) Load 104(outv)
|
||||
183: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 182
|
||||
Store 104(outv) 183
|
||||
Store 179 183
|
||||
Branch 181
|
||||
184: Label
|
||||
Line 1 82 0
|
||||
185: 11(fvec4) Load 104(outv)
|
||||
186: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 185
|
||||
Store 104(outv) 186
|
||||
Store 179 186
|
||||
Branch 181
|
||||
181: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
Line 1 16 13
|
||||
14(foo(struct-S-i11;): 11(fvec4) Function None 12
|
||||
13(s): 9(ptr) FunctionParameter
|
||||
15: Label
|
||||
17(r): 16(ptr) Variable Function
|
||||
23(r): 22(ptr) Variable Function
|
||||
Line 1 18 0
|
||||
20: 19(ptr) AccessChain 13(s) 18
|
||||
21: 7(int) Load 20
|
||||
22: 10(float) ConvertSToF 21
|
||||
25: 11(fvec4) Load 24(inv)
|
||||
26: 11(fvec4) VectorTimesScalar 25 22
|
||||
Store 17(r) 26
|
||||
26: 25(ptr) AccessChain 13(s) 24
|
||||
27: 7(int) Load 26
|
||||
28: 10(float) ConvertSToF 27
|
||||
31: 11(fvec4) Load 30(inv)
|
||||
32: 11(fvec4) VectorTimesScalar 31 28
|
||||
Store 23(r) 32
|
||||
Line 1 19 0
|
||||
27: 11(fvec4) Load 17(r)
|
||||
29: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||
30: 11(fvec4) FAdd 27 29
|
||||
Store 17(r) 30
|
||||
33: 11(fvec4) Load 23(r)
|
||||
35: 11(fvec4) CompositeConstruct 34 34 34 34
|
||||
36: 11(fvec4) FAdd 33 35
|
||||
Store 23(r) 36
|
||||
Line 1 20 0
|
||||
34: 33(ptr) AccessChain 17(r) 32
|
||||
35: 10(float) Load 34
|
||||
38: 37(bool) FOrdGreaterThan 35 36
|
||||
SelectionMerge 40 None
|
||||
BranchConditional 38 39 44
|
||||
39: Label
|
||||
Line 1 21 0
|
||||
41: 11(fvec4) Load 17(r)
|
||||
42: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||
43: 11(fvec4) FSub 41 42
|
||||
Store 17(r) 43
|
||||
Branch 40
|
||||
39: 16(ptr) AccessChain 23(r) 38
|
||||
40: 10(float) Load 39
|
||||
43: 42(bool) FOrdGreaterThan 40 41
|
||||
SelectionMerge 45 None
|
||||
BranchConditional 43 44 49
|
||||
44: Label
|
||||
Line 1 21 0
|
||||
46: 11(fvec4) Load 23(r)
|
||||
47: 11(fvec4) CompositeConstruct 34 34 34 34
|
||||
48: 11(fvec4) FSub 46 47
|
||||
Store 23(r) 48
|
||||
Branch 45
|
||||
49: Label
|
||||
Line 1 23 0
|
||||
46: 11(fvec4) Load 17(r)
|
||||
47: 11(fvec4) VectorTimesScalar 46 45
|
||||
Store 17(r) 47
|
||||
Branch 40
|
||||
40: Label
|
||||
51: 11(fvec4) Load 23(r)
|
||||
52: 11(fvec4) VectorTimesScalar 51 50
|
||||
Store 23(r) 52
|
||||
Branch 45
|
||||
45: Label
|
||||
Line 1 25 0
|
||||
48: 11(fvec4) Load 17(r)
|
||||
ReturnValue 48
|
||||
53: 11(fvec4) Load 23(r)
|
||||
ReturnValue 53
|
||||
FunctionEnd
|
||||
Line 1 28 34
|
||||
20(testBranch(f1;f1;): 10(float) Function None 17
|
||||
18(x): 16(ptr) FunctionParameter
|
||||
19(y): 16(ptr) FunctionParameter
|
||||
21: Label
|
||||
56(result): 16(ptr) Variable Function
|
||||
59(b): 58(ptr) Variable Function
|
||||
90: 16(ptr) Variable Function
|
||||
Line 1 30 0
|
||||
Store 56(result) 57
|
||||
Line 1 31 0
|
||||
60: 10(float) Load 18(x)
|
||||
61: 42(bool) FOrdGreaterThan 60 57
|
||||
Store 59(b) 61
|
||||
Line 1 34 0
|
||||
62: 42(bool) Load 59(b)
|
||||
SelectionMerge 64 None
|
||||
BranchConditional 62 63 67
|
||||
63: Label
|
||||
Line 1 35 0
|
||||
65: 10(float) Load 56(result)
|
||||
66: 10(float) FAdd 65 34
|
||||
Store 56(result) 66
|
||||
Branch 64
|
||||
67: Label
|
||||
Line 1 38 0
|
||||
68: 10(float) Load 56(result)
|
||||
69: 10(float) FSub 68 34
|
||||
Store 56(result) 69
|
||||
Branch 64
|
||||
64: Label
|
||||
Line 1 42 0
|
||||
70: 10(float) Load 18(x)
|
||||
71: 10(float) Load 19(y)
|
||||
72: 42(bool) FOrdGreaterThan 70 71
|
||||
SelectionMerge 74 None
|
||||
BranchConditional 72 73 74
|
||||
73: Label
|
||||
Line 1 43 0
|
||||
75: 10(float) Load 18(x)
|
||||
76: 10(float) Load 19(y)
|
||||
77: 10(float) FSub 75 76
|
||||
78: 10(float) Load 56(result)
|
||||
79: 10(float) FAdd 78 77
|
||||
Store 56(result) 79
|
||||
Branch 74
|
||||
74: Label
|
||||
Line 1 47 0
|
||||
80: 42(bool) Load 59(b)
|
||||
83: 7(int) Select 80 81 82
|
||||
84: 10(float) ConvertSToF 83
|
||||
85: 10(float) Load 56(result)
|
||||
86: 10(float) FAdd 85 84
|
||||
Store 56(result) 86
|
||||
Line 1 51 0
|
||||
87: 10(float) Load 18(x)
|
||||
88: 10(float) Load 19(y)
|
||||
89: 42(bool) FOrdLessThan 87 88
|
||||
SelectionMerge 92 None
|
||||
BranchConditional 89 91 94
|
||||
91: Label
|
||||
Line 1 52 0
|
||||
93: 10(float) Load 19(y)
|
||||
Store 90 93
|
||||
Branch 92
|
||||
94: Label
|
||||
Line 1 53 0
|
||||
95: 42(bool) Load 59(b)
|
||||
96: 10(float) Select 95 34 57
|
||||
Store 90 96
|
||||
Branch 92
|
||||
92: Label
|
||||
97: 10(float) Load 90
|
||||
Line 1 51 0
|
||||
98: 10(float) Load 56(result)
|
||||
99: 10(float) FAdd 98 97
|
||||
Store 56(result) 99
|
||||
Line 1 55 0
|
||||
100: 10(float) Load 56(result)
|
||||
ReturnValue 100
|
||||
FunctionEnd
|
||||
|
@ -1,12 +1,12 @@
|
||||
spv.debugInfo.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 124
|
||||
// Id's are bound by 187
|
||||
|
||||
Capability Shader
|
||||
2: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 5 "main" 24 52
|
||||
EntryPoint Fragment 5 "main" 30 104
|
||||
ExecutionMode 5 OriginLowerLeft
|
||||
1: String "spv.debugInfo.frag"
|
||||
Source GLSL 450 1 "// OpModuleProcessed no-storage-format
|
||||
@ -47,9 +47,40 @@ vec4 foo(S s)
|
||||
return r;
|
||||
}
|
||||
|
||||
float testBranch(float x, float y)
|
||||
{
|
||||
float result = 0;
|
||||
bool b = x > 0;
|
||||
|
||||
// branch with load
|
||||
if (b) {
|
||||
result += 1;
|
||||
}
|
||||
else {
|
||||
result -= 1;
|
||||
}
|
||||
|
||||
// branch with expression
|
||||
if (x > y) {
|
||||
result += x - y;
|
||||
}
|
||||
|
||||
// selection with load
|
||||
result += b ?
|
||||
1 : -1;
|
||||
|
||||
// selection with expression
|
||||
result += x < y ?
|
||||
y :
|
||||
float(b);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
outv = foo(s);
|
||||
outv += testBranch(inv.x, inv.y);
|
||||
outv += texture(s2d, vec2(0.5));
|
||||
|
||||
switch (s.a) {
|
||||
@ -77,27 +108,34 @@ void main()
|
||||
MemberName 8(S) 0 "a"
|
||||
Name 14 "foo(struct-S-i11;"
|
||||
Name 13 "s"
|
||||
Name 17 "r"
|
||||
Name 24 "inv"
|
||||
Name 52 "outv"
|
||||
Name 53 "S"
|
||||
MemberName 53(S) 0 "a"
|
||||
Name 54 "ubuf"
|
||||
MemberName 54(ubuf) 0 "s"
|
||||
Name 56 ""
|
||||
Name 57 "param"
|
||||
Name 67 "s2d"
|
||||
Name 97 "i"
|
||||
Decorate 24(inv) Location 0
|
||||
Decorate 52(outv) Location 0
|
||||
MemberDecorate 53(S) 0 Offset 0
|
||||
MemberDecorate 54(ubuf) 0 Offset 0
|
||||
Decorate 54(ubuf) Block
|
||||
Decorate 56 DescriptorSet 3
|
||||
Decorate 56 Binding 0
|
||||
Decorate 67(s2d) Location 0
|
||||
Decorate 67(s2d) DescriptorSet 3
|
||||
Decorate 67(s2d) Binding 1
|
||||
Name 20 "testBranch(f1;f1;"
|
||||
Name 18 "x"
|
||||
Name 19 "y"
|
||||
Name 23 "r"
|
||||
Name 30 "inv"
|
||||
Name 56 "result"
|
||||
Name 59 "b"
|
||||
Name 104 "outv"
|
||||
Name 105 "S"
|
||||
MemberName 105(S) 0 "a"
|
||||
Name 106 "ubuf"
|
||||
MemberName 106(ubuf) 0 "s"
|
||||
Name 108 ""
|
||||
Name 109 "param"
|
||||
Name 116 "param"
|
||||
Name 120 "param"
|
||||
Name 131 "s2d"
|
||||
Name 161 "i"
|
||||
Decorate 30(inv) Location 0
|
||||
Decorate 104(outv) Location 0
|
||||
MemberDecorate 105(S) 0 Offset 0
|
||||
MemberDecorate 106(ubuf) 0 Offset 0
|
||||
Decorate 106(ubuf) Block
|
||||
Decorate 108 DescriptorSet 3
|
||||
Decorate 108 Binding 0
|
||||
Decorate 131(s2d) Location 0
|
||||
Decorate 131(s2d) DescriptorSet 3
|
||||
Decorate 131(s2d) Binding 1
|
||||
3: TypeVoid
|
||||
4: TypeFunction 3
|
||||
7: TypeInt 32 1
|
||||
@ -106,179 +144,280 @@ void main()
|
||||
10: TypeFloat 32
|
||||
11: TypeVector 10(float) 4
|
||||
12: TypeFunction 11(fvec4) 9(ptr)
|
||||
16: TypePointer Function 11(fvec4)
|
||||
18: 7(int) Constant 0
|
||||
19: TypePointer Function 7(int)
|
||||
23: TypePointer Input 11(fvec4)
|
||||
24(inv): 23(ptr) Variable Input
|
||||
28: 10(float) Constant 1065353216
|
||||
31: TypeInt 32 0
|
||||
32: 31(int) Constant 0
|
||||
33: TypePointer Function 10(float)
|
||||
36: 10(float) Constant 1077936128
|
||||
37: TypeBool
|
||||
45: 10(float) Constant 1073741824
|
||||
51: TypePointer Output 11(fvec4)
|
||||
52(outv): 51(ptr) Variable Output
|
||||
53(S): TypeStruct 7(int)
|
||||
54(ubuf): TypeStruct 53(S)
|
||||
55: TypePointer Uniform 54(ubuf)
|
||||
56: 55(ptr) Variable Uniform
|
||||
58: TypePointer Uniform 53(S)
|
||||
64: TypeImage 10(float) 2D sampled format:Unknown
|
||||
65: TypeSampledImage 64
|
||||
66: TypePointer UniformConstant 65
|
||||
67(s2d): 66(ptr) Variable UniformConstant
|
||||
69: TypeVector 10(float) 2
|
||||
70: 10(float) Constant 1056964608
|
||||
71: 69(fvec2) ConstantComposite 70 70
|
||||
75: TypePointer Uniform 7(int)
|
||||
104: 7(int) Constant 10
|
||||
109: 7(int) Constant 1
|
||||
111: TypePointer Output 10(float)
|
||||
114: 10(float) Constant 1092616192
|
||||
Line 1 28 11
|
||||
16: TypePointer Function 10(float)
|
||||
17: TypeFunction 10(float) 16(ptr) 16(ptr)
|
||||
22: TypePointer Function 11(fvec4)
|
||||
24: 7(int) Constant 0
|
||||
25: TypePointer Function 7(int)
|
||||
29: TypePointer Input 11(fvec4)
|
||||
30(inv): 29(ptr) Variable Input
|
||||
34: 10(float) Constant 1065353216
|
||||
37: TypeInt 32 0
|
||||
38: 37(int) Constant 0
|
||||
41: 10(float) Constant 1077936128
|
||||
42: TypeBool
|
||||
50: 10(float) Constant 1073741824
|
||||
57: 10(float) Constant 0
|
||||
58: TypePointer Function 42(bool)
|
||||
81: 7(int) Constant 1
|
||||
82: 7(int) Constant 4294967295
|
||||
103: TypePointer Output 11(fvec4)
|
||||
104(outv): 103(ptr) Variable Output
|
||||
105(S): TypeStruct 7(int)
|
||||
106(ubuf): TypeStruct 105(S)
|
||||
107: TypePointer Uniform 106(ubuf)
|
||||
108: 107(ptr) Variable Uniform
|
||||
110: TypePointer Uniform 105(S)
|
||||
117: TypePointer Input 10(float)
|
||||
121: 37(int) Constant 1
|
||||
128: TypeImage 10(float) 2D sampled format:Unknown
|
||||
129: TypeSampledImage 128
|
||||
130: TypePointer UniformConstant 129
|
||||
131(s2d): 130(ptr) Variable UniformConstant
|
||||
133: TypeVector 10(float) 2
|
||||
134: 10(float) Constant 1056964608
|
||||
135: 133(fvec2) ConstantComposite 134 134
|
||||
139: TypePointer Uniform 7(int)
|
||||
168: 7(int) Constant 10
|
||||
174: TypePointer Output 10(float)
|
||||
177: 10(float) Constant 1092616192
|
||||
Line 1 58 11
|
||||
5(main): 3 Function None 4
|
||||
6: Label
|
||||
57(param): 9(ptr) Variable Function
|
||||
97(i): 19(ptr) Variable Function
|
||||
116: 16(ptr) Variable Function
|
||||
Line 1 30 0
|
||||
59: 58(ptr) AccessChain 56 18
|
||||
60: 53(S) Load 59
|
||||
61: 7(int) CompositeExtract 60 0
|
||||
62: 19(ptr) AccessChain 57(param) 18
|
||||
Store 62 61
|
||||
63: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 57(param)
|
||||
Store 52(outv) 63
|
||||
Line 1 31 0
|
||||
68: 65 Load 67(s2d)
|
||||
72: 11(fvec4) ImageSampleImplicitLod 68 71
|
||||
73: 11(fvec4) Load 52(outv)
|
||||
74: 11(fvec4) FAdd 73 72
|
||||
Store 52(outv) 74
|
||||
Line 1 33 0
|
||||
76: 75(ptr) AccessChain 56 18 18
|
||||
77: 7(int) Load 76
|
||||
SelectionMerge 81 None
|
||||
Switch 77 80
|
||||
case 10: 78
|
||||
case 20: 79
|
||||
80: Label
|
||||
Line 1 42 0
|
||||
92: 11(fvec4) Load 52(outv)
|
||||
93: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||
94: 11(fvec4) FSub 92 93
|
||||
Store 52(outv) 94
|
||||
Line 1 43 0
|
||||
Branch 81
|
||||
78: Label
|
||||
Line 1 35 0
|
||||
82: 11(fvec4) Load 52(outv)
|
||||
83: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||
84: 11(fvec4) FAdd 82 83
|
||||
Store 52(outv) 84
|
||||
Line 1 36 0
|
||||
Branch 81
|
||||
79: Label
|
||||
Line 1 38 0
|
||||
86: 11(fvec4) Load 52(outv)
|
||||
87: 11(fvec4) VectorTimesScalar 86 45
|
||||
Store 52(outv) 87
|
||||
Line 1 39 0
|
||||
88: 11(fvec4) Load 52(outv)
|
||||
89: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||
90: 11(fvec4) FAdd 88 89
|
||||
Store 52(outv) 90
|
||||
Line 1 40 0
|
||||
Branch 81
|
||||
81: Label
|
||||
Line 1 46 0
|
||||
Store 97(i) 18
|
||||
Branch 98
|
||||
98: Label
|
||||
Line 1 46 0
|
||||
LoopMerge 100 101 None
|
||||
Branch 102
|
||||
102: Label
|
||||
Line 1 46 0
|
||||
103: 7(int) Load 97(i)
|
||||
105: 37(bool) SLessThan 103 104
|
||||
BranchConditional 105 99 100
|
||||
99: Label
|
||||
Line 1 47 0
|
||||
106: 11(fvec4) Load 52(outv)
|
||||
107: 11(fvec4) VectorTimesScalar 106 36
|
||||
Store 52(outv) 107
|
||||
Branch 101
|
||||
101: Label
|
||||
Line 1 46 0
|
||||
108: 7(int) Load 97(i)
|
||||
110: 7(int) IAdd 108 109
|
||||
Store 97(i) 110
|
||||
Branch 98
|
||||
100: Label
|
||||
Line 1 49 0
|
||||
112: 111(ptr) AccessChain 52(outv) 32
|
||||
113: 10(float) Load 112
|
||||
115: 37(bool) FOrdLessThan 113 114
|
||||
SelectionMerge 118 None
|
||||
BranchConditional 115 117 121
|
||||
117: Label
|
||||
Line 1 50 0
|
||||
119: 11(fvec4) Load 52(outv)
|
||||
120: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 119
|
||||
Store 52(outv) 120
|
||||
Store 116 120
|
||||
Branch 118
|
||||
121: Label
|
||||
Line 1 51 0
|
||||
122: 11(fvec4) Load 52(outv)
|
||||
123: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 122
|
||||
Store 52(outv) 123
|
||||
Store 116 123
|
||||
Branch 118
|
||||
118: Label
|
||||
109(param): 9(ptr) Variable Function
|
||||
116(param): 16(ptr) Variable Function
|
||||
120(param): 16(ptr) Variable Function
|
||||
161(i): 25(ptr) Variable Function
|
||||
179: 22(ptr) Variable Function
|
||||
Line 1 60 0
|
||||
111: 110(ptr) AccessChain 108 24
|
||||
112: 105(S) Load 111
|
||||
113: 7(int) CompositeExtract 112 0
|
||||
114: 25(ptr) AccessChain 109(param) 24
|
||||
Store 114 113
|
||||
115: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 109(param)
|
||||
Store 104(outv) 115
|
||||
Line 1 61 0
|
||||
118: 117(ptr) AccessChain 30(inv) 38
|
||||
119: 10(float) Load 118
|
||||
Store 116(param) 119
|
||||
122: 117(ptr) AccessChain 30(inv) 121
|
||||
123: 10(float) Load 122
|
||||
Store 120(param) 123
|
||||
124: 10(float) FunctionCall 20(testBranch(f1;f1;) 116(param) 120(param)
|
||||
125: 11(fvec4) Load 104(outv)
|
||||
126: 11(fvec4) CompositeConstruct 124 124 124 124
|
||||
127: 11(fvec4) FAdd 125 126
|
||||
Store 104(outv) 127
|
||||
Line 1 62 0
|
||||
132: 129 Load 131(s2d)
|
||||
136: 11(fvec4) ImageSampleImplicitLod 132 135
|
||||
137: 11(fvec4) Load 104(outv)
|
||||
138: 11(fvec4) FAdd 137 136
|
||||
Store 104(outv) 138
|
||||
Line 1 64 0
|
||||
140: 139(ptr) AccessChain 108 24 24
|
||||
141: 7(int) Load 140
|
||||
SelectionMerge 145 None
|
||||
Switch 141 144
|
||||
case 10: 142
|
||||
case 20: 143
|
||||
144: Label
|
||||
Line 1 73 0
|
||||
156: 11(fvec4) Load 104(outv)
|
||||
157: 11(fvec4) CompositeConstruct 34 34 34 34
|
||||
158: 11(fvec4) FSub 156 157
|
||||
Store 104(outv) 158
|
||||
Line 1 74 0
|
||||
Branch 145
|
||||
142: Label
|
||||
Line 1 66 0
|
||||
146: 11(fvec4) Load 104(outv)
|
||||
147: 11(fvec4) CompositeConstruct 34 34 34 34
|
||||
148: 11(fvec4) FAdd 146 147
|
||||
Store 104(outv) 148
|
||||
Line 1 67 0
|
||||
Branch 145
|
||||
143: Label
|
||||
Line 1 69 0
|
||||
150: 11(fvec4) Load 104(outv)
|
||||
151: 11(fvec4) VectorTimesScalar 150 50
|
||||
Store 104(outv) 151
|
||||
Line 1 70 0
|
||||
152: 11(fvec4) Load 104(outv)
|
||||
153: 11(fvec4) CompositeConstruct 34 34 34 34
|
||||
154: 11(fvec4) FAdd 152 153
|
||||
Store 104(outv) 154
|
||||
Line 1 71 0
|
||||
Branch 145
|
||||
145: Label
|
||||
Line 1 77 0
|
||||
Store 161(i) 24
|
||||
Branch 162
|
||||
162: Label
|
||||
Line 1 77 0
|
||||
LoopMerge 164 165 None
|
||||
Branch 166
|
||||
166: Label
|
||||
Line 1 77 0
|
||||
167: 7(int) Load 161(i)
|
||||
169: 42(bool) SLessThan 167 168
|
||||
BranchConditional 169 163 164
|
||||
163: Label
|
||||
Line 1 78 0
|
||||
170: 11(fvec4) Load 104(outv)
|
||||
171: 11(fvec4) VectorTimesScalar 170 41
|
||||
Store 104(outv) 171
|
||||
Branch 165
|
||||
165: Label
|
||||
Line 1 77 0
|
||||
172: 7(int) Load 161(i)
|
||||
173: 7(int) IAdd 172 81
|
||||
Store 161(i) 173
|
||||
Branch 162
|
||||
164: Label
|
||||
Line 1 80 0
|
||||
175: 174(ptr) AccessChain 104(outv) 38
|
||||
176: 10(float) Load 175
|
||||
178: 42(bool) FOrdLessThan 176 177
|
||||
SelectionMerge 181 None
|
||||
BranchConditional 178 180 184
|
||||
180: Label
|
||||
Line 1 81 0
|
||||
182: 11(fvec4) Load 104(outv)
|
||||
183: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 182
|
||||
Store 104(outv) 183
|
||||
Store 179 183
|
||||
Branch 181
|
||||
184: Label
|
||||
Line 1 82 0
|
||||
185: 11(fvec4) Load 104(outv)
|
||||
186: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 185
|
||||
Store 104(outv) 186
|
||||
Store 179 186
|
||||
Branch 181
|
||||
181: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
Line 1 16 13
|
||||
14(foo(struct-S-i11;): 11(fvec4) Function None 12
|
||||
13(s): 9(ptr) FunctionParameter
|
||||
15: Label
|
||||
17(r): 16(ptr) Variable Function
|
||||
23(r): 22(ptr) Variable Function
|
||||
Line 1 18 0
|
||||
20: 19(ptr) AccessChain 13(s) 18
|
||||
21: 7(int) Load 20
|
||||
22: 10(float) ConvertSToF 21
|
||||
25: 11(fvec4) Load 24(inv)
|
||||
26: 11(fvec4) VectorTimesScalar 25 22
|
||||
Store 17(r) 26
|
||||
26: 25(ptr) AccessChain 13(s) 24
|
||||
27: 7(int) Load 26
|
||||
28: 10(float) ConvertSToF 27
|
||||
31: 11(fvec4) Load 30(inv)
|
||||
32: 11(fvec4) VectorTimesScalar 31 28
|
||||
Store 23(r) 32
|
||||
Line 1 19 0
|
||||
27: 11(fvec4) Load 17(r)
|
||||
29: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||
30: 11(fvec4) FAdd 27 29
|
||||
Store 17(r) 30
|
||||
33: 11(fvec4) Load 23(r)
|
||||
35: 11(fvec4) CompositeConstruct 34 34 34 34
|
||||
36: 11(fvec4) FAdd 33 35
|
||||
Store 23(r) 36
|
||||
Line 1 20 0
|
||||
34: 33(ptr) AccessChain 17(r) 32
|
||||
35: 10(float) Load 34
|
||||
38: 37(bool) FOrdGreaterThan 35 36
|
||||
SelectionMerge 40 None
|
||||
BranchConditional 38 39 44
|
||||
39: Label
|
||||
Line 1 21 0
|
||||
41: 11(fvec4) Load 17(r)
|
||||
42: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||
43: 11(fvec4) FSub 41 42
|
||||
Store 17(r) 43
|
||||
Branch 40
|
||||
39: 16(ptr) AccessChain 23(r) 38
|
||||
40: 10(float) Load 39
|
||||
43: 42(bool) FOrdGreaterThan 40 41
|
||||
SelectionMerge 45 None
|
||||
BranchConditional 43 44 49
|
||||
44: Label
|
||||
Line 1 21 0
|
||||
46: 11(fvec4) Load 23(r)
|
||||
47: 11(fvec4) CompositeConstruct 34 34 34 34
|
||||
48: 11(fvec4) FSub 46 47
|
||||
Store 23(r) 48
|
||||
Branch 45
|
||||
49: Label
|
||||
Line 1 23 0
|
||||
46: 11(fvec4) Load 17(r)
|
||||
47: 11(fvec4) VectorTimesScalar 46 45
|
||||
Store 17(r) 47
|
||||
Branch 40
|
||||
40: Label
|
||||
51: 11(fvec4) Load 23(r)
|
||||
52: 11(fvec4) VectorTimesScalar 51 50
|
||||
Store 23(r) 52
|
||||
Branch 45
|
||||
45: Label
|
||||
Line 1 25 0
|
||||
48: 11(fvec4) Load 17(r)
|
||||
ReturnValue 48
|
||||
53: 11(fvec4) Load 23(r)
|
||||
ReturnValue 53
|
||||
FunctionEnd
|
||||
Line 1 28 34
|
||||
20(testBranch(f1;f1;): 10(float) Function None 17
|
||||
18(x): 16(ptr) FunctionParameter
|
||||
19(y): 16(ptr) FunctionParameter
|
||||
21: Label
|
||||
56(result): 16(ptr) Variable Function
|
||||
59(b): 58(ptr) Variable Function
|
||||
90: 16(ptr) Variable Function
|
||||
Line 1 30 0
|
||||
Store 56(result) 57
|
||||
Line 1 31 0
|
||||
60: 10(float) Load 18(x)
|
||||
61: 42(bool) FOrdGreaterThan 60 57
|
||||
Store 59(b) 61
|
||||
Line 1 34 0
|
||||
62: 42(bool) Load 59(b)
|
||||
SelectionMerge 64 None
|
||||
BranchConditional 62 63 67
|
||||
63: Label
|
||||
Line 1 35 0
|
||||
65: 10(float) Load 56(result)
|
||||
66: 10(float) FAdd 65 34
|
||||
Store 56(result) 66
|
||||
Branch 64
|
||||
67: Label
|
||||
Line 1 38 0
|
||||
68: 10(float) Load 56(result)
|
||||
69: 10(float) FSub 68 34
|
||||
Store 56(result) 69
|
||||
Branch 64
|
||||
64: Label
|
||||
Line 1 42 0
|
||||
70: 10(float) Load 18(x)
|
||||
71: 10(float) Load 19(y)
|
||||
72: 42(bool) FOrdGreaterThan 70 71
|
||||
SelectionMerge 74 None
|
||||
BranchConditional 72 73 74
|
||||
73: Label
|
||||
Line 1 43 0
|
||||
75: 10(float) Load 18(x)
|
||||
76: 10(float) Load 19(y)
|
||||
77: 10(float) FSub 75 76
|
||||
78: 10(float) Load 56(result)
|
||||
79: 10(float) FAdd 78 77
|
||||
Store 56(result) 79
|
||||
Branch 74
|
||||
74: Label
|
||||
Line 1 47 0
|
||||
80: 42(bool) Load 59(b)
|
||||
83: 7(int) Select 80 81 82
|
||||
84: 10(float) ConvertSToF 83
|
||||
85: 10(float) Load 56(result)
|
||||
86: 10(float) FAdd 85 84
|
||||
Store 56(result) 86
|
||||
Line 1 51 0
|
||||
87: 10(float) Load 18(x)
|
||||
88: 10(float) Load 19(y)
|
||||
89: 42(bool) FOrdLessThan 87 88
|
||||
SelectionMerge 92 None
|
||||
BranchConditional 89 91 94
|
||||
91: Label
|
||||
Line 1 52 0
|
||||
93: 10(float) Load 19(y)
|
||||
Store 90 93
|
||||
Branch 92
|
||||
94: Label
|
||||
Line 1 53 0
|
||||
95: 42(bool) Load 59(b)
|
||||
96: 10(float) Select 95 34 57
|
||||
Store 90 96
|
||||
Branch 92
|
||||
92: Label
|
||||
97: 10(float) Load 90
|
||||
Line 1 51 0
|
||||
98: 10(float) Load 56(result)
|
||||
99: 10(float) FAdd 98 97
|
||||
Store 56(result) 99
|
||||
Line 1 55 0
|
||||
100: 10(float) Load 56(result)
|
||||
ReturnValue 100
|
||||
FunctionEnd
|
||||
|
186
Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out
Normal file
186
Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out
Normal file
@ -0,0 +1,186 @@
|
||||
spv.debuginfo.bufferref.glsl.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 131
|
||||
|
||||
Capability Shader
|
||||
Capability PhysicalStorageBufferAddressesEXT
|
||||
Extension "SPV_KHR_non_semantic_info"
|
||||
Extension "SPV_KHR_physical_storage_buffer"
|
||||
Extension "SPV_KHR_storage_buffer_storage_class"
|
||||
2: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||
3: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel PhysicalStorageBuffer64EXT GLSL450
|
||||
EntryPoint Fragment 14 "main" 69 122
|
||||
ExecutionMode 14 OriginUpperLeft
|
||||
1: String ""
|
||||
8: String "uint"
|
||||
15: String "main"
|
||||
18: String "// OpModuleProcessed auto-map-locations
|
||||
// OpModuleProcessed auto-map-bindings
|
||||
// OpModuleProcessed client vulkan100
|
||||
// OpModuleProcessed target-env vulkan1.0
|
||||
// OpModuleProcessed keep-uncalled
|
||||
// OpModuleProcessed entry-point main
|
||||
#line 1
|
||||
"
|
||||
31: String "Mesh"
|
||||
33: String "float"
|
||||
39: String "data"
|
||||
43: String "MeshVertexPositions"
|
||||
47: String "meshData"
|
||||
59: String "PerPass_meshes"
|
||||
63: String "perPass_meshes"
|
||||
65: String "int"
|
||||
71: String "tri_idx0"
|
||||
86: String "vertex_pos0"
|
||||
124: String "out_fragColor"
|
||||
SourceExtension "GL_EXT_buffer_reference"
|
||||
Name 14 "main"
|
||||
Name 29 "Mesh"
|
||||
MemberName 29(Mesh) 0 "positions"
|
||||
Name 37 "MeshVertexPositions"
|
||||
MemberName 37(MeshVertexPositions) 0 "data"
|
||||
Name 45 "meshData"
|
||||
Name 50 "Mesh"
|
||||
MemberName 50(Mesh) 0 "positions"
|
||||
Name 54 "PerPass_meshes"
|
||||
MemberName 54(PerPass_meshes) 0 "data"
|
||||
Name 61 "perPass_meshes"
|
||||
Name 69 "tri_idx0"
|
||||
Name 84 "vertex_pos0"
|
||||
Name 122 "out_fragColor"
|
||||
Decorate 35 ArrayStride 4
|
||||
MemberDecorate 37(MeshVertexPositions) 0 Offset 0
|
||||
Decorate 37(MeshVertexPositions) Block
|
||||
MemberDecorate 50(Mesh) 0 Offset 0
|
||||
Decorate 52 ArrayStride 8
|
||||
MemberDecorate 54(PerPass_meshes) 0 NonWritable
|
||||
MemberDecorate 54(PerPass_meshes) 0 Offset 0
|
||||
Decorate 54(PerPass_meshes) Block
|
||||
Decorate 61(perPass_meshes) DescriptorSet 0
|
||||
Decorate 61(perPass_meshes) Binding 0
|
||||
Decorate 69(tri_idx0) Flat
|
||||
Decorate 69(tri_idx0) Location 0
|
||||
Decorate 122(out_fragColor) Location 0
|
||||
Decorate 45(meshData) DecorationAliasedPointerEXT
|
||||
4: TypeVoid
|
||||
5: TypeFunction 4
|
||||
7: TypeInt 32 0
|
||||
10: 7(int) Constant 32
|
||||
11: 7(int) Constant 6
|
||||
12: 7(int) Constant 0
|
||||
9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12
|
||||
13: 7(int) Constant 3
|
||||
6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4
|
||||
17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18
|
||||
20: 7(int) Constant 1
|
||||
21: 7(int) Constant 4
|
||||
22: 7(int) Constant 2
|
||||
19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22
|
||||
16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12
|
||||
27: 7(int) Constant 21
|
||||
TypeForwardPointer 28 PhysicalStorageBufferEXT
|
||||
29(Mesh): TypeStruct 28
|
||||
30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 31 20 17 27 12 19 31 12 13
|
||||
32: TypeFloat 32
|
||||
34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 33 10 13 12
|
||||
35: TypeRuntimeArray 32(float)
|
||||
36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 34 12
|
||||
37(MeshVertexPositions): TypeStruct 35
|
||||
40: 7(int) Constant 5
|
||||
41: 7(int) Constant 9
|
||||
38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 39 36 17 40 41 12 12 13
|
||||
42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 43 20 17 27 12 19 43 12 13 38
|
||||
28: TypePointer PhysicalStorageBufferEXT 37(MeshVertexPositions)
|
||||
44: TypePointer Function 29(Mesh)
|
||||
46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 30 17 27 12 16 21
|
||||
49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression)
|
||||
50(Mesh): TypeStruct 28(ptr)
|
||||
51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 31 20 17 27 12 19 31 12 13
|
||||
52: TypeRuntimeArray 50(Mesh)
|
||||
53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 51 12
|
||||
54(PerPass_meshes): TypeStruct 52
|
||||
56: 7(int) Constant 13
|
||||
57: 7(int) Constant 8
|
||||
55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 39 53 17 56 57 12 12 13
|
||||
58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 59 20 17 27 12 19 59 12 13 55
|
||||
60: TypePointer StorageBuffer 54(PerPass_meshes)
|
||||
61(perPass_meshes): 60(ptr) Variable StorageBuffer
|
||||
62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 63 58 17 27 12 19 63 61(perPass_meshes) 57
|
||||
64: TypeInt 32 1
|
||||
66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 65 10 21 12
|
||||
67: 64(int) Constant 0
|
||||
68: TypePointer Input 7(int)
|
||||
69(tri_idx0): 68(ptr) Variable Input
|
||||
70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 71 9 17 27 12 19 71 69(tri_idx0) 57
|
||||
73: TypePointer StorageBuffer 50(Mesh)
|
||||
77: TypePointer Function 28(ptr)
|
||||
80: 7(int) Constant 23
|
||||
81: TypeVector 32(float) 3
|
||||
82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 34 13
|
||||
83: TypePointer Function 81(fvec3)
|
||||
85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 86 82 17 80 12 16 21
|
||||
89: 7(int) Constant 25
|
||||
95: TypePointer PhysicalStorageBufferEXT 32(float)
|
||||
99: 7(int) Constant 24
|
||||
118: 7(int) Constant 27
|
||||
119: TypeVector 32(float) 4
|
||||
120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 34 21
|
||||
121: TypePointer Output 119(fvec4)
|
||||
122(out_fragColor): 121(ptr) Variable Output
|
||||
123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 124 120 17 118 12 19 124 122(out_fragColor) 57
|
||||
126: 32(float) Constant 1065353216
|
||||
Line 1 20 11
|
||||
14(main): 4 Function None 5
|
||||
23: Label
|
||||
45(meshData): 44(ptr) Variable Function
|
||||
84(vertex_pos0): 83(ptr) Variable Function
|
||||
24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main)
|
||||
25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16
|
||||
26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12
|
||||
48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 45(meshData) 49
|
||||
72: 7(int) Load 69(tri_idx0)
|
||||
74: 73(ptr) AccessChain 61(perPass_meshes) 67 72
|
||||
75: 50(Mesh) Load 74
|
||||
76: 28(ptr) CompositeExtract 75 0
|
||||
78: 77(ptr) AccessChain 45(meshData) 67
|
||||
Store 78 76
|
||||
79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 80 80 12 12
|
||||
87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 85 84(vertex_pos0) 49
|
||||
88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 89 89 12 12
|
||||
90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 80 80 12 12
|
||||
91: 77(ptr) AccessChain 45(meshData) 67
|
||||
92: 28(ptr) Load 91
|
||||
93: 7(int) Load 69(tri_idx0)
|
||||
94: 7(int) IMul 13 93
|
||||
96: 95(ptr) AccessChain 92 67 94
|
||||
97: 32(float) Load 96 Aligned 4
|
||||
98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 99 99 12 12
|
||||
100: 77(ptr) AccessChain 45(meshData) 67
|
||||
101: 28(ptr) Load 100
|
||||
102: 7(int) Load 69(tri_idx0)
|
||||
103: 7(int) IMul 13 102
|
||||
104: 7(int) IAdd 103 20
|
||||
105: 95(ptr) AccessChain 101 67 104
|
||||
106: 32(float) Load 105 Aligned 4
|
||||
107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 89 89 12 12
|
||||
108: 77(ptr) AccessChain 45(meshData) 67
|
||||
109: 28(ptr) Load 108
|
||||
110: 7(int) Load 69(tri_idx0)
|
||||
111: 7(int) IMul 13 110
|
||||
112: 7(int) IAdd 111 22
|
||||
113: 95(ptr) AccessChain 109 67 112
|
||||
114: 32(float) Load 113 Aligned 4
|
||||
115: 81(fvec3) CompositeConstruct 97 106 114
|
||||
116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 80 80 12 12
|
||||
Store 84(vertex_pos0) 115
|
||||
117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 118 118 12 12
|
||||
125: 81(fvec3) Load 84(vertex_pos0)
|
||||
127: 32(float) CompositeExtract 125 0
|
||||
128: 32(float) CompositeExtract 125 1
|
||||
129: 32(float) CompositeExtract 125 2
|
||||
130: 119(fvec4) CompositeConstruct 127 128 129 126
|
||||
Store 122(out_fragColor) 130
|
||||
Return
|
||||
FunctionEnd
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user