Compare commits
4 Commits
b2b90e54e2
...
0d4f1c6b8d
| Author | SHA1 | Date | |
|---|---|---|---|
| 0d4f1c6b8d | |||
| ebdbba3643 | |||
| 4438979baf | |||
| 5a89963b4c |
108
.appveyor.yml
Normal file
108
.appveyor.yml
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
# 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
22
.github/dependabot.yml
vendored
@ -1,22 +0,0 @@
|
|||||||
# 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
|
|
||||||
133
.github/workflows/continuous_deployment.yml
vendored
133
.github/workflows/continuous_deployment.yml
vendored
@ -20,26 +20,11 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- master
|
||||||
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:
|
jobs:
|
||||||
linux:
|
linux:
|
||||||
runs-on: ${{matrix.os.genus}}
|
runs-on: ${{matrix.os.genus}}
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@ -47,9 +32,8 @@ jobs:
|
|||||||
compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
|
compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
|
||||||
cmake_build_type: [Debug, Release]
|
cmake_build_type: [Debug, Release]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
- uses: actions/checkout@v2
|
||||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
- uses: actions/setup-python@v2
|
||||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
|
||||||
with:
|
with:
|
||||||
python-version: '3.7'
|
python-version: '3.7'
|
||||||
- name: Install Ubuntu Package Dependencies
|
- name: Install Ubuntu Package Dependencies
|
||||||
@ -87,11 +71,10 @@ jobs:
|
|||||||
- name: Zip
|
- name: Zip
|
||||||
if: ${{ matrix.compiler.cc == 'clang' }}
|
if: ${{ matrix.compiler.cc == 'clang' }}
|
||||||
env:
|
env:
|
||||||
ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||||
run: |
|
run: |
|
||||||
cd build/install
|
cd build/install
|
||||||
zip ${ARCHIVE} \
|
zip ${ARCHIVE} \
|
||||||
bin/glslang \
|
|
||||||
bin/glslangValidator \
|
bin/glslangValidator \
|
||||||
include/glslang/* \
|
include/glslang/* \
|
||||||
include/glslang/**/* \
|
include/glslang/**/* \
|
||||||
@ -109,8 +92,8 @@ jobs:
|
|||||||
- name: Deploy
|
- name: Deploy
|
||||||
if: ${{ matrix.compiler.cc == 'clang' }}
|
if: ${{ matrix.compiler.cc == 'clang' }}
|
||||||
env:
|
env:
|
||||||
ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||||
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
|
uses: actions/github-script@v5
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const script = require('.github/workflows/deploy.js')
|
const script = require('.github/workflows/deploy.js')
|
||||||
@ -118,8 +101,6 @@ jobs:
|
|||||||
|
|
||||||
macos:
|
macos:
|
||||||
runs-on: ${{matrix.os.genus}}
|
runs-on: ${{matrix.os.genus}}
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@ -127,9 +108,8 @@ jobs:
|
|||||||
compiler: [{cc: clang, cxx: clang++}]
|
compiler: [{cc: clang, cxx: clang++}]
|
||||||
cmake_build_type: [Debug, Release]
|
cmake_build_type: [Debug, Release]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
- uses: actions/checkout@v2
|
||||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
- uses: actions/setup-python@v2
|
||||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
|
||||||
with:
|
with:
|
||||||
python-version: '3.7'
|
python-version: '3.7'
|
||||||
- name: Install GoogleTest
|
- name: Install GoogleTest
|
||||||
@ -162,11 +142,10 @@ jobs:
|
|||||||
cd ../Test && ./runtests
|
cd ../Test && ./runtests
|
||||||
- name: Zip
|
- name: Zip
|
||||||
env:
|
env:
|
||||||
ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||||
run: |
|
run: |
|
||||||
cd build/install
|
cd build/install
|
||||||
zip ${ARCHIVE} \
|
zip ${ARCHIVE} \
|
||||||
bin/glslang \
|
|
||||||
bin/glslangValidator \
|
bin/glslangValidator \
|
||||||
include/glslang/* \
|
include/glslang/* \
|
||||||
include/glslang/**/* \
|
include/glslang/**/* \
|
||||||
@ -181,102 +160,10 @@ jobs:
|
|||||||
lib/libSPVRemapper.a \
|
lib/libSPVRemapper.a \
|
||||||
lib/libSPIRV-Tools.a \
|
lib/libSPIRV-Tools.a \
|
||||||
lib/libSPIRV-Tools-opt.a
|
lib/libSPIRV-Tools-opt.a
|
||||||
- name: Deploy
|
|
||||||
env:
|
|
||||||
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
|
- name: Deploy
|
||||||
env:
|
env:
|
||||||
ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
|
||||||
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
|
uses: actions/github-script@v5
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const script = require('.github/workflows/deploy.js')
|
const script = require('.github/workflows/deploy.js')
|
||||||
|
|||||||
272
.github/workflows/continuous_integration.yml
vendored
272
.github/workflows/continuous_integration.yml
vendored
@ -10,28 +10,26 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- master
|
||||||
|
|
||||||
permissions: read-all
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
linux:
|
linux:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ${{matrix.os}}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
|
os: [ubuntu-20.04]
|
||||||
compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
|
compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
|
||||||
cmake_build_type: [Debug, Release]
|
cmake_build_type: [Debug, Release]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
- uses: actions/checkout@v2
|
||||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
- uses: actions/setup-python@v2
|
||||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
|
||||||
with:
|
with:
|
||||||
python-version: '3.7'
|
python-version: '3.7'
|
||||||
- name: Setup ccache
|
- name: Install Ubuntu Package Dependencies
|
||||||
uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10
|
run: |
|
||||||
with:
|
sudo apt-get -qq update
|
||||||
key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}
|
sudo apt-get install -y clang-6.0
|
||||||
- name: Install GoogleTest
|
- name: Install GoogleTest
|
||||||
run: |
|
run: |
|
||||||
# check out pre-breakage version of googletest; can be deleted when
|
# check out pre-breakage version of googletest; can be deleted when
|
||||||
@ -45,137 +43,35 @@ jobs:
|
|||||||
git reset --hard FETCH_HEAD
|
git reset --hard FETCH_HEAD
|
||||||
cd ../..
|
cd ../..
|
||||||
- name: Update Glslang Sources
|
- name: Update Glslang Sources
|
||||||
run: ./update_glslang_sources.py
|
run: |
|
||||||
- name: Configure
|
./update_glslang_sources.py
|
||||||
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
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: cmake --build build
|
env:
|
||||||
- name: Install
|
CC: ${{matrix.compiler.cc}}
|
||||||
run: cmake --install build --prefix build/install
|
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: Test
|
- name: Test
|
||||||
run: |
|
run: |
|
||||||
cd build
|
cd build
|
||||||
ctest --output-on-failure &&
|
ctest --output-on-failure &&
|
||||||
cd ../Test && ./runtests
|
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:
|
macos:
|
||||||
runs-on: ${{matrix.os}}
|
runs-on: ${{matrix.os}}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [macos-11, macos-12]
|
os: [macos-11]
|
||||||
compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
|
compiler: [{cc: clang, cxx: clang++}]
|
||||||
cmake_build_type: [Debug, Release]
|
cmake_build_type: [Debug, Release]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
- uses: actions/checkout@v2
|
||||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
- uses: actions/setup-python@v2
|
||||||
with:
|
with:
|
||||||
python-version: '3.7'
|
python-version: '3.7'
|
||||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
|
||||||
- name: Install GoogleTest
|
- name: Install GoogleTest
|
||||||
run: |
|
run: |
|
||||||
# check out pre-breakage version of googletest; can be deleted when
|
# check out pre-breakage version of googletest; can be deleted when
|
||||||
@ -189,37 +85,49 @@ jobs:
|
|||||||
git reset --hard FETCH_HEAD
|
git reset --hard FETCH_HEAD
|
||||||
cd ../..
|
cd ../..
|
||||||
- name: Update Glslang Sources
|
- name: Update Glslang Sources
|
||||||
run: ./update_glslang_sources.py
|
run: |
|
||||||
- name: Configure
|
./update_glslang_sources.py
|
||||||
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G "Ninja"
|
- name: Build
|
||||||
env:
|
env:
|
||||||
CC: ${{matrix.compiler.cc}}
|
CC: ${{matrix.compiler.cc}}
|
||||||
CXX: ${{matrix.compiler.cxx}}
|
CXX: ${{matrix.compiler.cxx}}
|
||||||
- name: Build
|
run: |
|
||||||
run: cmake --build build
|
mkdir build && cd build
|
||||||
- name: Install
|
cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
|
||||||
run: cmake --install build --prefix build/install
|
make -j4 install
|
||||||
- name: Test
|
- name: Test
|
||||||
run: |
|
run: |
|
||||||
cd build
|
cd build
|
||||||
ctest --output-on-failure &&
|
ctest --output-on-failure &&
|
||||||
cd ../Test && ./runtests
|
cd ../Test && ./runtests
|
||||||
|
|
||||||
windows:
|
android:
|
||||||
runs-on: ${{matrix.os.genus}}
|
runs-on: ${{matrix.os}}
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [{genus: windows-2019, family: windows}]
|
os: [ubuntu-20.04]
|
||||||
cmake_build_type: [Debug, Release]
|
compiler: [{cc: clang, cxx: clang++}]
|
||||||
|
cmake_build_type: [Release]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
- uses: actions/checkout@v2
|
||||||
- uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
|
- uses: actions/setup-python@v2
|
||||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
|
|
||||||
with:
|
with:
|
||||||
python-version: '3.7'
|
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
|
- name: Install GoogleTest
|
||||||
run: |
|
run: |
|
||||||
# check out pre-breakage version of googletest; can be deleted when
|
# check out pre-breakage version of googletest; can be deleted when
|
||||||
@ -234,74 +142,16 @@ jobs:
|
|||||||
cd ../..
|
cd ../..
|
||||||
- name: Update Glslang Sources
|
- name: Update Glslang Sources
|
||||||
run: |
|
run: |
|
||||||
python update_glslang_sources.py
|
./update_glslang_sources.py
|
||||||
- name: Build
|
- 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
|
|
||||||
|
|
||||||
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:
|
env:
|
||||||
CMAKE_GENERATOR: Ninja
|
CC: ${{matrix.compiler.cc}}
|
||||||
CMAKE_C_COMPILER_LAUNCHER: ccache
|
CXX: ${{matrix.compiler.cxx}}
|
||||||
CMAKE_CXX_COMPILER_LAUNCHER: ccache
|
run: |
|
||||||
- name: Build
|
export ANDROID_NDK=$HOME/android-ndk
|
||||||
run: cmake --build build/
|
export TOOLCHAIN_PATH=$ANDROID_NDK/build/cmake/android.toolchain.cmake
|
||||||
|
echo $ANDROID_NDK
|
||||||
emscripten:
|
echo $TOOLCHAIN_PATH
|
||||||
runs-on: ubuntu-22.04
|
mkdir build && cd build
|
||||||
steps:
|
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 ..
|
||||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
make -j4
|
||||||
- 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({
|
await github.rest.git.updateRef({
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
ref: 'tags/main-tot',
|
ref: 'tags/master-tot',
|
||||||
sha: context.sha
|
sha: context.sha
|
||||||
})
|
})
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(`upload main-tot tag; ${error.name}; ${error.message}`)
|
core.setFailed(`upload master-tot tag; ${error.name}; ${error.message}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
let release
|
let release
|
||||||
@ -15,10 +15,10 @@ module.exports = async ({github, context, core}) => {
|
|||||||
release = await github.rest.repos.getReleaseByTag({
|
release = await github.rest.repos.getReleaseByTag({
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
tag: 'main-tot'
|
tag: 'master-tot'
|
||||||
})
|
})
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(`get the main release; ${error.name}; ${error.message}`)
|
core.setFailed(`get the master release; ${error.name}; ${error.message}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -28,7 +28,7 @@ module.exports = async ({github, context, core}) => {
|
|||||||
release_id: release.data.id
|
release_id: release.data.id
|
||||||
})
|
})
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(`update the main release; ${error.name}; ${error.message}`)
|
core.setFailed(`update the master release; ${error.name}; ${error.message}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
let release_assets
|
let release_assets
|
||||||
|
|||||||
53
.github/workflows/scorecard.yml
vendored
53
.github/workflows/scorecard.yml
vendored
@ -1,53 +0,0 @@
|
|||||||
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
|
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@ -11,7 +11,6 @@ Test/localResults/
|
|||||||
External/googletest
|
External/googletest
|
||||||
External/spirv-tools
|
External/spirv-tools
|
||||||
out/
|
out/
|
||||||
CMakeUserPresets.json
|
|
||||||
|
|
||||||
# GN generated files
|
# GN generated files
|
||||||
.cipd/
|
.cipd/
|
||||||
|
|||||||
3
.mailmap
3
.mailmap
@ -1,3 +0,0 @@
|
|||||||
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-2023 The Khronos Group Inc.
|
# Copyright (C) 2020 The Khronos Group Inc.
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@ -53,11 +53,11 @@ $(eval $(call gen_glslang_build_info_h))
|
|||||||
|
|
||||||
GLSLANG_OS_FLAGS := -DGLSLANG_OSINCLUDE_UNIX
|
GLSLANG_OS_FLAGS := -DGLSLANG_OSINCLUDE_UNIX
|
||||||
# AMD and NV extensions are turned on by default in upstream Glslang.
|
# AMD and NV extensions are turned on by default in upstream Glslang.
|
||||||
GLSLANG_DEFINES:= -DENABLE_HLSL $(GLSLANG_OS_FLAGS)
|
GLSLANG_DEFINES:= -DAMD_EXTENSIONS -DNV_EXTENSIONS -DENABLE_HLSL $(GLSLANG_OS_FLAGS)
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE:=OSDependent
|
LOCAL_MODULE:=OSDependent
|
||||||
LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
||||||
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
|
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
|
||||||
LOCAL_SRC_FILES:=glslang/OSDependent/Unix/ossource.cpp
|
LOCAL_SRC_FILES:=glslang/OSDependent/Unix/ossource.cpp
|
||||||
LOCAL_C_INCLUDES:=$(LOCAL_PATH) $(LOCAL_PATH)/glslang/OSDependent/Unix/
|
LOCAL_C_INCLUDES:=$(LOCAL_PATH) $(LOCAL_PATH)/glslang/OSDependent/Unix/
|
||||||
@ -66,7 +66,7 @@ include $(BUILD_STATIC_LIBRARY)
|
|||||||
|
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE:=OGLCompiler
|
LOCAL_MODULE:=OGLCompiler
|
||||||
LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
||||||
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
|
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
|
||||||
LOCAL_SRC_FILES:=OGLCompilersDLL/InitializeDll.cpp
|
LOCAL_SRC_FILES:=OGLCompilersDLL/InitializeDll.cpp
|
||||||
LOCAL_C_INCLUDES:=$(LOCAL_PATH)/OGLCompiler
|
LOCAL_C_INCLUDES:=$(LOCAL_PATH)/OGLCompiler
|
||||||
@ -78,7 +78,7 @@ include $(BUILD_STATIC_LIBRARY)
|
|||||||
# instead.
|
# instead.
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE:=HLSL
|
LOCAL_MODULE:=HLSL
|
||||||
LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
||||||
LOCAL_SRC_FILES:= \
|
LOCAL_SRC_FILES:= \
|
||||||
hlsl/stub.cpp
|
hlsl/stub.cpp
|
||||||
LOCAL_C_INCLUDES:=$(LOCAL_PATH) \
|
LOCAL_C_INCLUDES:=$(LOCAL_PATH) \
|
||||||
@ -93,7 +93,7 @@ $(LOCAL_PATH)/glslang/MachineIndependent/ShaderLang.cpp: \
|
|||||||
$(GLSLANG_BUILD_INFO_H)
|
$(GLSLANG_BUILD_INFO_H)
|
||||||
|
|
||||||
LOCAL_MODULE:=glslang
|
LOCAL_MODULE:=glslang
|
||||||
LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
|
||||||
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
|
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
|
||||||
LOCAL_SRC_FILES:= \
|
LOCAL_SRC_FILES:= \
|
||||||
glslang/CInterface/glslang_c_interface.cpp \
|
glslang/CInterface/glslang_c_interface.cpp \
|
||||||
@ -148,7 +148,7 @@ $(LOCAL_PATH)/SPIRV/GlslangToSpv.cpp: \
|
|||||||
$(GLSLANG_BUILD_INFO_H)
|
$(GLSLANG_BUILD_INFO_H)
|
||||||
|
|
||||||
LOCAL_MODULE:=SPIRV
|
LOCAL_MODULE:=SPIRV
|
||||||
LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES)
|
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES)
|
||||||
LOCAL_SRC_FILES:= \
|
LOCAL_SRC_FILES:= \
|
||||||
SPIRV/CInterface/spirv_c_interface.cpp \
|
SPIRV/CInterface/spirv_c_interface.cpp \
|
||||||
SPIRV/GlslangToSpv.cpp \
|
SPIRV/GlslangToSpv.cpp \
|
||||||
|
|||||||
313
BUILD.bazel
Normal file
313
BUILD.bazel
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
# 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,7 +124,6 @@ template("glslang_sources_common") {
|
|||||||
"SPIRV/GLSL.ext.KHR.h",
|
"SPIRV/GLSL.ext.KHR.h",
|
||||||
"SPIRV/GLSL.ext.NV.h",
|
"SPIRV/GLSL.ext.NV.h",
|
||||||
"SPIRV/GLSL.ext.ARM.h",
|
"SPIRV/GLSL.ext.ARM.h",
|
||||||
"SPIRV/GLSL.ext.QCOM.h",
|
|
||||||
"SPIRV/GLSL.std.450.h",
|
"SPIRV/GLSL.std.450.h",
|
||||||
"SPIRV/GlslangToSpv.cpp",
|
"SPIRV/GlslangToSpv.cpp",
|
||||||
"SPIRV/GlslangToSpv.h",
|
"SPIRV/GlslangToSpv.h",
|
||||||
@ -300,7 +299,7 @@ glslang_sources_common("glslang_sources") {
|
|||||||
|
|
||||||
source_set("glslang_default_resource_limits_sources") {
|
source_set("glslang_default_resource_limits_sources") {
|
||||||
sources = [
|
sources = [
|
||||||
"glslang/ResourceLimits/ResourceLimits.cpp",
|
"StandAlone/ResourceLimits.cpp",
|
||||||
"glslang/Public/ResourceLimits.h",
|
"glslang/Public/ResourceLimits.h",
|
||||||
"glslang/Include/ResourceLimits.h",
|
"glslang/Include/ResourceLimits.h",
|
||||||
]
|
]
|
||||||
|
|||||||
82
CHANGES.md
82
CHANGES.md
@ -3,88 +3,6 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
This project adheres to [Semantic Versioning](https://semver.org/).
|
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
|
## 11.13.0 2022-12-06
|
||||||
|
|
||||||
### Other changes
|
### Other changes
|
||||||
|
|||||||
130
CMakeLists.txt
130
CMakeLists.txt
@ -1,4 +1,4 @@
|
|||||||
# Copyright (C) 2020-2023 The Khronos Group Inc.
|
# Copyright (C) 2020 The Khronos Group Inc.
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@ -30,11 +30,24 @@
|
|||||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
# POSSIBILITY OF SUCH DAMAGE.
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
cmake_minimum_required(VERSION 3.17.2)
|
|
||||||
project(glslang)
|
# 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)
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||||
|
|
||||||
|
# Enable compile commands database
|
||||||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
# Adhere to GNU filesystem layout conventions
|
# Adhere to GNU filesystem layout conventions
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
include(CMakePackageConfigHelpers)
|
include(CMakePackageConfigHelpers)
|
||||||
@ -65,10 +78,18 @@ if(NOT ${SKIP_GLSLANG_INSTALL})
|
|||||||
endif()
|
endif()
|
||||||
option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON)
|
option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON)
|
||||||
|
|
||||||
option(ENABLE_GLSLANG_BINARIES "Builds glslang and spirv-remap" ON)
|
option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON)
|
||||||
|
|
||||||
option(ENABLE_GLSLANG_JS
|
option(ENABLE_GLSLANG_JS
|
||||||
"If using Emscripten, build glslang.js. Otherwise, builds a sample executable for binary-size testing." OFF)
|
"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
|
CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_SINGLE_FILE
|
||||||
"If using Emscripten, enables SINGLE_FILE build"
|
"If using Emscripten, enables SINGLE_FILE build"
|
||||||
OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN"
|
OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN"
|
||||||
@ -78,7 +99,11 @@ CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE
|
|||||||
OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN"
|
OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN"
|
||||||
OFF)
|
OFF)
|
||||||
|
|
||||||
option(ENABLE_HLSL "Enables HLSL input support" ON)
|
CMAKE_DEPENDENT_OPTION(ENABLE_HLSL
|
||||||
|
"Enables HLSL input support"
|
||||||
|
ON "NOT ENABLE_GLSLANG_WEBMIN"
|
||||||
|
OFF)
|
||||||
|
|
||||||
option(ENABLE_RTTI "Enables RTTI" OFF)
|
option(ENABLE_RTTI "Enables RTTI" OFF)
|
||||||
option(ENABLE_EXCEPTIONS "Enables Exceptions" OFF)
|
option(ENABLE_EXCEPTIONS "Enables Exceptions" OFF)
|
||||||
option(ENABLE_OPT "Enables spirv-opt capability if present" ON)
|
option(ENABLE_OPT "Enables spirv-opt capability if present" ON)
|
||||||
@ -92,6 +117,18 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
option(ENABLE_CTEST "Enables testing" ON)
|
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)
|
if(ENABLE_CTEST)
|
||||||
include(CTest)
|
include(CTest)
|
||||||
endif()
|
endif()
|
||||||
@ -100,6 +137,13 @@ if(ENABLE_HLSL)
|
|||||||
add_definitions(-DENABLE_HLSL)
|
add_definitions(-DENABLE_HLSL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(ENABLE_GLSLANG_WEBMIN)
|
||||||
|
add_definitions(-DGLSLANG_WEB)
|
||||||
|
if(ENABLE_GLSLANG_WEBMIN_DEVEL)
|
||||||
|
add_definitions(-DGLSLANG_WEB_DEVEL)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(CMAKE_DEBUG_POSTFIX "d")
|
set(CMAKE_DEBUG_POSTFIX "d")
|
||||||
option(OVERRIDE_MSVCCRT "Overrides runtime of MSVC " ON)
|
option(OVERRIDE_MSVCCRT "Overrides runtime of MSVC " ON)
|
||||||
@ -107,7 +151,7 @@ if(WIN32)
|
|||||||
include(ChooseMSVCCRT.cmake)
|
include(ChooseMSVCCRT.cmake)
|
||||||
endif()
|
endif()
|
||||||
add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
|
add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
|
||||||
elseif(UNIX OR ANDROID)
|
elseif(UNIX)
|
||||||
add_definitions(-DGLSLANG_OSINCLUDE_UNIX)
|
add_definitions(-DGLSLANG_OSINCLUDE_UNIX)
|
||||||
else()
|
else()
|
||||||
message("unknown platform")
|
message("unknown platform")
|
||||||
@ -116,6 +160,7 @@ endif()
|
|||||||
if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
|
if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
|
||||||
add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs
|
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)
|
-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)
|
if(NOT ENABLE_RTTI)
|
||||||
add_compile_options(-fno-rtti)
|
add_compile_options(-fno-rtti)
|
||||||
endif()
|
endif()
|
||||||
@ -126,13 +171,16 @@ if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
|
|||||||
add_compile_options(-Werror=deprecated-copy)
|
add_compile_options(-Werror=deprecated-copy)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
if(NOT CMAKE_VERSION VERSION_LESS "3.13" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
# Error if there's symbols that are not found at link time.
|
# 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")
|
add_link_options("-Wl,--no-undefined")
|
||||||
endif()
|
endif()
|
||||||
elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC)
|
elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC)
|
||||||
add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs
|
add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs
|
||||||
-Wunused-parameter -Wunused-value -Wunused-variable)
|
-Wunused-parameter -Wunused-value -Wunused-variable)
|
||||||
|
add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over.
|
||||||
if(NOT ENABLE_RTTI)
|
if(NOT ENABLE_RTTI)
|
||||||
add_compile_options(-fno-rtti)
|
add_compile_options(-fno-rtti)
|
||||||
endif()
|
endif()
|
||||||
@ -140,12 +188,14 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC)
|
|||||||
add_compile_options(-fno-exceptions)
|
add_compile_options(-fno-exceptions)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD" OR CMAKE_SYSTEM_NAME STREQUAL "Emscripten"))
|
if(NOT CMAKE_VERSION VERSION_LESS "3.13")
|
||||||
# Error if there's symbols that are not found at link time. Some linkers do not support this flag.
|
# Error if there's symbols that are not found at link time.
|
||||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
# add_link_options() was added in CMake 3.13 - if using an earlier
|
||||||
add_link_options("-Wl,-undefined,error")
|
# version don't set this - it should be caught by presubmits anyway.
|
||||||
elseif(NOT APPLE)
|
if (WIN32)
|
||||||
add_link_options("-Wl,--no-undefined")
|
add_link_options("-Wl,--no-undefined")
|
||||||
|
else()
|
||||||
|
add_link_options("-Wl,-undefined,error")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
elseif(MSVC)
|
elseif(MSVC)
|
||||||
@ -177,16 +227,23 @@ if(ENABLE_GLSLANG_JS)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# BEGIN @MEWIN - 2023-11-04 - Increased to C++17 so my changes actually work when compiling the regular way.
|
||||||
# Request C++17
|
# Request C++17
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
if(${CMAKE_VERSION} VERSION_LESS 3.1)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
# CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD
|
||||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
# remove this block once CMake >=3.1 has fixated in the ecosystem
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
|
||||||
|
else()
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
endif()
|
||||||
|
# END @MEWIN
|
||||||
|
|
||||||
function(glslang_set_link_args TARGET)
|
function(glslang_set_link_args TARGET)
|
||||||
# For MinGW compiles, statically link against the GCC and C++ runtimes.
|
# For MinGW compiles, statically link against the GCC and C++ runtimes.
|
||||||
# This avoids the need to ship those runtimes as DLLs.
|
# This avoids the need to ship those runtimes as DLLs.
|
||||||
# This is supported by GCC and Clang.
|
if(WIN32 AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
|
||||||
if(WIN32 AND NOT MSVC)
|
|
||||||
set_target_properties(${TARGET} PROPERTIES
|
set_target_properties(${TARGET} PROPERTIES
|
||||||
LINK_FLAGS "-static -static-libgcc -static-libstdc++")
|
LINK_FLAGS "-static -static-libgcc -static-libstdc++")
|
||||||
endif()
|
endif()
|
||||||
@ -234,9 +291,10 @@ endfunction()
|
|||||||
function(glslang_only_export_explicit_symbols target)
|
function(glslang_only_export_explicit_symbols target)
|
||||||
if(BUILD_SHARED_LIBS)
|
if(BUILD_SHARED_LIBS)
|
||||||
target_compile_definitions(${target} PUBLIC "GLSLANG_IS_SHARED_LIBRARY=1")
|
target_compile_definitions(${target} PUBLIC "GLSLANG_IS_SHARED_LIBRARY=1")
|
||||||
set_target_properties(${target} PROPERTIES CMAKE_CXX_VISIBILITY_PRESET hidden)
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
target_compile_definitions(${target} PRIVATE "GLSLANG_EXPORTING=1")
|
target_compile_definitions(${target} PRIVATE "GLSLANG_EXPORTING=1")
|
||||||
|
else()
|
||||||
|
target_compile_options(${target} PRIVATE "-fvisibility=hidden")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
@ -257,30 +315,14 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External)
|
if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External)
|
||||||
find_host_package(Python3 REQUIRED)
|
find_host_package(PythonInterp 3 REQUIRED)
|
||||||
|
|
||||||
# We depend on these for later projects, so they should come first.
|
# We depend on these for later projects, so they should come first.
|
||||||
add_subdirectory(External)
|
add_subdirectory(External)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(ALLOW_EXTERNAL_SPIRV_TOOLS "Allows to build against installed SPIRV-Tools-opt" OFF)
|
|
||||||
if(NOT TARGET SPIRV-Tools-opt)
|
if(NOT TARGET SPIRV-Tools-opt)
|
||||||
if(ALLOW_EXTERNAL_SPIRV_TOOLS)
|
set(ENABLE_OPT OFF)
|
||||||
# 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()
|
endif()
|
||||||
|
|
||||||
if(ENABLE_OPT)
|
if(ENABLE_OPT)
|
||||||
@ -315,12 +357,12 @@ if(ENABLE_CTEST AND BUILD_TESTING)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (CMAKE_CONFIGURATION_TYPES)
|
if (CMAKE_CONFIGURATION_TYPES)
|
||||||
set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/localResults)
|
set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/localResults)
|
||||||
set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIG>/glslang)
|
set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/glslangValidator)
|
||||||
set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIG>/spirv-remap)
|
set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/spirv-remap)
|
||||||
else()
|
else()
|
||||||
set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults)
|
set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults)
|
||||||
set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslang)
|
set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator)
|
||||||
set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap)
|
set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -332,18 +374,10 @@ endif()
|
|||||||
if(ENABLE_GLSLANG_INSTALL)
|
if(ENABLE_GLSLANG_INSTALL)
|
||||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[
|
||||||
@PACKAGE_INIT@
|
@PACKAGE_INIT@
|
||||||
@INSTALL_CONFIG_UNIX@
|
|
||||||
include("@PACKAGE_PATH_EXPORT_TARGETS@")
|
include("@PACKAGE_PATH_EXPORT_TARGETS@")
|
||||||
]=])
|
]=])
|
||||||
|
|
||||||
set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake")
|
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(
|
configure_package_config_file(
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in"
|
"${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake"
|
||||||
|
|||||||
@ -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.\")
|
message(WARNING \"Using `OGLCompilerTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
||||||
|
|
||||||
if (NOT TARGET glslang::OGLCompiler)
|
if (NOT TARGET glslang::OGLCompiler)
|
||||||
include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(OGLCompiler ALIAS glslang::OGLCompiler)
|
add_library(OGLCompiler ALIAS glslang::OGLCompiler)
|
||||||
|
|||||||
@ -32,6 +32,134 @@
|
|||||||
// POSSIBILITY OF SUCH DAMAGE.
|
// 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 {
|
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
|
} // end namespace glslang
|
||||||
|
|||||||
@ -38,10 +38,10 @@
|
|||||||
|
|
||||||
namespace glslang {
|
namespace glslang {
|
||||||
|
|
||||||
inline bool InitProcess() { return true; } // DEPRECATED
|
bool InitProcess();
|
||||||
inline bool InitThread() { return true; } // DEPRECATED
|
bool InitThread();
|
||||||
inline bool DetachThread() { return true; } // DEPRECATED
|
bool DetachThread(); // not called from standalone, perhaps other tools rely on parts of it
|
||||||
inline bool DetachProcess() { return true; } // DEPRECATED
|
bool DetachProcess(); // not called from standalone, perhaps other tools rely on parts of it
|
||||||
|
|
||||||
} // end namespace glslang
|
} // end namespace glslang
|
||||||
|
|
||||||
|
|||||||
@ -112,7 +112,7 @@ BUILD DEPENDENCIES:
|
|||||||
|
|
||||||
BUILDING
|
BUILDING
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
The standalone remapper is built along side glslang through its
|
The standalone remapper is built along side glslangValidator through its
|
||||||
normal build process.
|
normal build process.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
90
README.md
90
README.md
@ -1,19 +1,26 @@
|
|||||||
# News
|
# News
|
||||||
|
|
||||||
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:
|
1. Visual Studio 2013 is no longer supported
|
||||||
|
|
||||||
```sh
|
[As scheduled](https://github.com/KhronosGroup/glslang/blob/9eef54b2513ca6b40b47b07d24f453848b65c0df/README.md#planned-deprecationsremovals),
|
||||||
git branch -m master main
|
Microsoft Visual Studio 2013 is no longer officially supported. \
|
||||||
git fetch origin
|
Please upgrade to at least Visual Studio 2015.
|
||||||
git branch -u origin/main main
|
|
||||||
git remote set-head origin -a
|
|
||||||
```
|
|
||||||
|
|
||||||
2. C++17 (all platforms) and Visual Studio 2019 (Windows) are now required. This change was driven by the external dependency on SPIRV-Tools.
|
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.
|
||||||
|
|
||||||

|
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
|
# Glslang Components and Status
|
||||||
|
|
||||||
@ -48,7 +55,7 @@ An API for getting reflection information from the AST, reflection types/variabl
|
|||||||
|
|
||||||
### Standalone Wrapper
|
### Standalone Wrapper
|
||||||
|
|
||||||
`glslang` is command-line tool for accessing the functionality above.
|
`glslangValidator` is command-line tool for accessing the functionality above.
|
||||||
|
|
||||||
Status: Complete.
|
Status: Complete.
|
||||||
|
|
||||||
@ -66,7 +73,7 @@ The above page, while not kept up to date, includes additional information regar
|
|||||||
|
|
||||||
## Execution of Standalone Wrapper
|
## Execution of Standalone Wrapper
|
||||||
|
|
||||||
To use the standalone binary form, execute `glslang`, and it will print
|
To use the standalone binary form, execute `glslangValidator`, and it will print
|
||||||
a usage statement. Basic operation is to give it a file containing a shader,
|
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.
|
and it will print out warnings/errors and optionally an AST.
|
||||||
|
|
||||||
@ -92,15 +99,15 @@ There is also a non-shader extension:
|
|||||||
## Building (CMake)
|
## Building (CMake)
|
||||||
|
|
||||||
Instead of building manually, you can also download the binaries for your
|
Instead of building manually, you can also download the binaries for your
|
||||||
platform directly from the [main-tot release][main-tot-release] on GitHub.
|
platform directly from the [master-tot release][master-tot-release] on GitHub.
|
||||||
Those binaries are automatically uploaded by the buildbots after successful
|
Those binaries are automatically uploaded by the buildbots after successful
|
||||||
testing and they always reflect the current top of the tree of the main
|
testing and they always reflect the current top of the tree of the master
|
||||||
branch.
|
branch.
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|
||||||
* A C++17 compiler.
|
* A C++11 compiler.
|
||||||
(For MSVS: use 2019 or later.)
|
(For MSVS: use 2015 or later.)
|
||||||
* [CMake][cmake]: for generating compilation targets.
|
* [CMake][cmake]: for generating compilation targets.
|
||||||
* make: _Linux_, ninja is an alternative, if configured.
|
* 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.)
|
* [Python 3.x][python]: for executing SPIRV-Tools scripts. (Optional if not using SPIRV-Tools and the 'External' subdirectory does not exist.)
|
||||||
@ -235,13 +242,16 @@ changes are quite infrequent. For windows you can get binaries from
|
|||||||
The command to rebuild is:
|
The command to rebuild is:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
m4 -P MachineIndependent/glslang.m4 > MachineIndependent/glslang.y
|
||||||
bison --defines=MachineIndependent/glslang_tab.cpp.h
|
bison --defines=MachineIndependent/glslang_tab.cpp.h
|
||||||
-t MachineIndependent/glslang.y
|
-t MachineIndependent/glslang.y
|
||||||
-o MachineIndependent/glslang_tab.cpp
|
-o MachineIndependent/glslang_tab.cpp
|
||||||
```
|
```
|
||||||
|
|
||||||
The above command is also available in the bash script in `updateGrammar`,
|
The above commands are also available in the bash script in `updateGrammar`,
|
||||||
when executed from the glslang subdirectory of the glslang repository.
|
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 to WASM for the Web and Node
|
||||||
### Building a standalone JS/WASM library for the Web and Node
|
### Building a standalone JS/WASM library for the Web and Node
|
||||||
@ -251,9 +261,15 @@ Use the steps in [Build Steps](#build-steps), with the following notes/exception
|
|||||||
Bash-like environments:
|
Bash-like environments:
|
||||||
+ [Instructions located here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install)
|
+ [Instructions located here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install)
|
||||||
* Wrap cmake call: `emcmake cmake`
|
* Wrap cmake call: `emcmake cmake`
|
||||||
* Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF`.
|
* Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF`.
|
||||||
* Set `-DENABLE_HLSL=OFF` if HLSL is not needed.
|
* Set `-DENABLE_HLSL=OFF` if HLSL is not needed.
|
||||||
* For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`.
|
* 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
|
* To get a fully minimized build, make sure to use `brotli` to compress the .js
|
||||||
and .wasm files
|
and .wasm files
|
||||||
|
|
||||||
@ -261,7 +277,7 @@ Example:
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON \
|
emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON \
|
||||||
-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF ..
|
-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF ..
|
||||||
```
|
```
|
||||||
|
|
||||||
## Building glslang - Using vcpkg
|
## Building glslang - Using vcpkg
|
||||||
@ -417,18 +433,9 @@ 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.
|
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.
|
||||||
|
|
||||||
```c
|
```cxx
|
||||||
#include <glslang/Include/glslang_c_interface.h>
|
std::vector<uint32_t> compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shaderSource, const char* fileName)
|
||||||
|
{
|
||||||
// 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 = {
|
const glslang_input_t input = {
|
||||||
.language = GLSLANG_SOURCE_GLSL,
|
.language = GLSLANG_SOURCE_GLSL,
|
||||||
.stage = stage,
|
.stage = stage,
|
||||||
@ -442,22 +449,18 @@ SpirVBinary compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shade
|
|||||||
.force_default_version_and_profile = false,
|
.force_default_version_and_profile = false,
|
||||||
.forward_compatible = false,
|
.forward_compatible = false,
|
||||||
.messages = GLSLANG_MSG_DEFAULT_BIT,
|
.messages = GLSLANG_MSG_DEFAULT_BIT,
|
||||||
.resource = glslang_default_resource(),
|
.resource = reinterpret_cast<const glslang_resource_t*>(&glslang::DefaultTBuiltInResource),
|
||||||
};
|
};
|
||||||
|
|
||||||
glslang_shader_t* shader = glslang_shader_create(&input);
|
glslang_shader_t* shader = glslang_shader_create(&input);
|
||||||
|
|
||||||
SpirVBinary bin = {
|
|
||||||
.words = NULL,
|
|
||||||
.size = 0,
|
|
||||||
};
|
|
||||||
if (!glslang_shader_preprocess(shader, &input)) {
|
if (!glslang_shader_preprocess(shader, &input)) {
|
||||||
printf("GLSL preprocessing failed %s\n", fileName);
|
printf("GLSL preprocessing failed %s\n", fileName);
|
||||||
printf("%s\n", glslang_shader_get_info_log(shader));
|
printf("%s\n", glslang_shader_get_info_log(shader));
|
||||||
printf("%s\n", glslang_shader_get_info_debug_log(shader));
|
printf("%s\n", glslang_shader_get_info_debug_log(shader));
|
||||||
printf("%s\n", input.code);
|
printf("%s\n", input.code);
|
||||||
glslang_shader_delete(shader);
|
glslang_shader_delete(shader);
|
||||||
return bin;
|
return std::vector<uint32_t>();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!glslang_shader_parse(shader, &input)) {
|
if (!glslang_shader_parse(shader, &input)) {
|
||||||
@ -466,7 +469,7 @@ SpirVBinary compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shade
|
|||||||
printf("%s\n", glslang_shader_get_info_debug_log(shader));
|
printf("%s\n", glslang_shader_get_info_debug_log(shader));
|
||||||
printf("%s\n", glslang_shader_get_preprocessed_code(shader));
|
printf("%s\n", glslang_shader_get_preprocessed_code(shader));
|
||||||
glslang_shader_delete(shader);
|
glslang_shader_delete(shader);
|
||||||
return bin;
|
return std::vector<uint32_t>();
|
||||||
}
|
}
|
||||||
|
|
||||||
glslang_program_t* program = glslang_program_create();
|
glslang_program_t* program = glslang_program_create();
|
||||||
@ -478,14 +481,13 @@ SpirVBinary compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shade
|
|||||||
printf("%s\n", glslang_program_get_info_debug_log(program));
|
printf("%s\n", glslang_program_get_info_debug_log(program));
|
||||||
glslang_program_delete(program);
|
glslang_program_delete(program);
|
||||||
glslang_shader_delete(shader);
|
glslang_shader_delete(shader);
|
||||||
return bin;
|
return std::vector<uint32_t>();
|
||||||
}
|
}
|
||||||
|
|
||||||
glslang_program_SPIRV_generate(program, stage);
|
glslang_program_SPIRV_generate(program, stage);
|
||||||
|
|
||||||
bin.size = glslang_program_SPIRV_get_size(program);
|
std::vector<uint32_t> outShaderModule(glslang_program_SPIRV_get_size(program));
|
||||||
bin.words = malloc(bin.size * sizeof(uint32_t));
|
glslang_program_SPIRV_get(program, outShaderModule.data());
|
||||||
glslang_program_SPIRV_get(program, bin.words);
|
|
||||||
|
|
||||||
const char* spirv_messages = glslang_program_SPIRV_get_messages(program);
|
const char* spirv_messages = glslang_program_SPIRV_get_messages(program);
|
||||||
if (spirv_messages)
|
if (spirv_messages)
|
||||||
@ -494,7 +496,7 @@ SpirVBinary compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shade
|
|||||||
glslang_program_delete(program);
|
glslang_program_delete(program);
|
||||||
glslang_shader_delete(shader);
|
glslang_shader_delete(shader);
|
||||||
|
|
||||||
return bin;
|
return outShaderModule;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -553,4 +555,4 @@ SpirVBinary compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shade
|
|||||||
[bison]: https://www.gnu.org/software/bison/
|
[bison]: https://www.gnu.org/software/bison/
|
||||||
[googletest]: https://github.com/google/googletest
|
[googletest]: https://github.com/google/googletest
|
||||||
[bison-gnu-win32]: http://gnuwin32.sourceforge.net/packages/bison.htm
|
[bison-gnu-win32]: http://gnuwin32.sourceforge.net/packages/bison.htm
|
||||||
[main-tot-release]: https://github.com/KhronosGroup/glslang/releases/tag/main-tot
|
[master-tot-release]: https://github.com/KhronosGroup/glslang/releases/tag/master-tot
|
||||||
|
|||||||
@ -1,6 +0,0 @@
|
|||||||
# 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,11 +71,8 @@ set(SPVREMAP_HEADERS
|
|||||||
doc.h)
|
doc.h)
|
||||||
|
|
||||||
add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS})
|
add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS})
|
||||||
set_target_properties(SPIRV PROPERTIES
|
set_property(TARGET SPIRV PROPERTY FOLDER glslang)
|
||||||
FOLDER glslang
|
set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||||
POSITION_INDEPENDENT_CODE ON
|
|
||||||
VERSION "${GLSLANG_VERSION}"
|
|
||||||
SOVERSION "${GLSLANG_VERSION_MAJOR}")
|
|
||||||
target_include_directories(SPIRV PUBLIC
|
target_include_directories(SPIRV PUBLIC
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
|
||||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
||||||
@ -84,11 +81,8 @@ glslang_add_build_info_dependency(SPIRV)
|
|||||||
|
|
||||||
if (ENABLE_SPVREMAPPER)
|
if (ENABLE_SPVREMAPPER)
|
||||||
add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
|
add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
|
||||||
set_target_properties(SPVRemapper PROPERTIES
|
set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
|
||||||
FOLDER glslang
|
set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||||
POSITION_INDEPENDENT_CODE ON
|
|
||||||
VERSION "${GLSLANG_VERSION}"
|
|
||||||
SOVERSION "${GLSLANG_VERSION_MAJOR}")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32 AND BUILD_SHARED_LIBS)
|
if(WIN32 AND BUILD_SHARED_LIBS)
|
||||||
@ -129,7 +123,7 @@ if(ENABLE_GLSLANG_INSTALL)
|
|||||||
message(WARNING \"Using `SPVRemapperTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
message(WARNING \"Using `SPVRemapperTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
||||||
|
|
||||||
if (NOT TARGET glslang::SPVRemapper)
|
if (NOT TARGET glslang::SPVRemapper)
|
||||||
include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(SPVRemapper ALIAS glslang::SPVRemapper)
|
add_library(SPVRemapper ALIAS glslang::SPVRemapper)
|
||||||
@ -141,7 +135,7 @@ if(ENABLE_GLSLANG_INSTALL)
|
|||||||
message(WARNING \"Using `SPIRVTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
message(WARNING \"Using `SPIRVTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
||||||
|
|
||||||
if (NOT TARGET glslang::SPIRV)
|
if (NOT TARGET glslang::SPIRV)
|
||||||
include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(SPIRV ALIAS glslang::SPIRV)
|
add_library(SPIRV ALIAS glslang::SPIRV)
|
||||||
|
|||||||
@ -39,7 +39,6 @@ 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_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_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_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";
|
static const char* const E_SPV_EXT_mesh_shader = "SPV_EXT_mesh_shader";
|
||||||
|
|
||||||
#endif // #ifndef GLSLextEXT_H
|
#endif // #ifndef GLSLextEXT_H
|
||||||
|
|||||||
@ -54,7 +54,5 @@ 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_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_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_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
|
#endif // #ifndef GLSLextKHR_H
|
||||||
|
|||||||
@ -81,10 +81,4 @@ const char* const E_SPV_NV_cooperative_matrix = "SPV_NV_cooperative_matrix";
|
|||||||
//SPV_NV_shader_sm_builtins
|
//SPV_NV_shader_sm_builtins
|
||||||
const char* const E_SPV_NV_shader_sm_builtins = "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
|
#endif // #ifndef GLSLextNV_H
|
||||||
|
|||||||
@ -1,41 +0,0 @@
|
|||||||
/*
|
|
||||||
** 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
|
|
||||||
1217
SPIRV/GlslangToSpv.cpp
Executable file → Normal file
1217
SPIRV/GlslangToSpv.cpp
Executable file → Normal 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);
|
SpvOptions* options = nullptr);
|
||||||
void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
|
void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
|
||||||
spv::SpvBuildLogger* logger, SpvOptions* options = nullptr);
|
spv::SpvBuildLogger* logger, SpvOptions* options = nullptr);
|
||||||
bool OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName);
|
void OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName);
|
||||||
bool OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName);
|
void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,6 +32,8 @@
|
|||||||
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
// POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
|
|
||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -66,3 +68,5 @@ std::string SpvBuildLogger::getAllMessages() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // end spv namespace
|
} // end spv namespace
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@ -46,6 +46,14 @@ class SpvBuildLogger {
|
|||||||
public:
|
public:
|
||||||
SpvBuildLogger() {}
|
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.
|
// Registers a TBD functionality.
|
||||||
void tbdFunctionality(const std::string& f);
|
void tbdFunctionality(const std::string& f);
|
||||||
// Registers a missing functionality.
|
// Registers a missing functionality.
|
||||||
@ -59,6 +67,7 @@ public:
|
|||||||
// Returns all messages accumulated in the order of:
|
// Returns all messages accumulated in the order of:
|
||||||
// TBD functionalities, missing functionalities, warnings, errors.
|
// TBD functionalities, missing functionalities, warnings, errors.
|
||||||
std::string getAllMessages() const;
|
std::string getAllMessages() const;
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SpvBuildLogger(const SpvBuildLogger&);
|
SpvBuildLogger(const SpvBuildLogger&);
|
||||||
|
|||||||
@ -36,6 +36,10 @@
|
|||||||
#include "SPVRemapper.h"
|
#include "SPVRemapper.h"
|
||||||
#include "doc.h"
|
#include "doc.h"
|
||||||
|
|
||||||
|
#if !defined (use_cpp11)
|
||||||
|
// ... not supported before C++11
|
||||||
|
#else // defined (use_cpp11)
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include "../glslang/Include/Common.h"
|
#include "../glslang/Include/Common.h"
|
||||||
@ -680,7 +684,6 @@ namespace spv {
|
|||||||
case spv::OperandKernelEnqueueFlags:
|
case spv::OperandKernelEnqueueFlags:
|
||||||
case spv::OperandKernelProfilingInfo:
|
case spv::OperandKernelProfilingInfo:
|
||||||
case spv::OperandCapability:
|
case spv::OperandCapability:
|
||||||
case spv::OperandCooperativeMatrixOperands:
|
|
||||||
++word;
|
++word;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1525,3 +1528,5 @@ namespace spv {
|
|||||||
|
|
||||||
} // namespace SPV
|
} // namespace SPV
|
||||||
|
|
||||||
|
#endif // defined (use_cpp11)
|
||||||
|
|
||||||
|
|||||||
@ -43,6 +43,12 @@
|
|||||||
|
|
||||||
namespace spv {
|
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
|
class spirvbin_base_t
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -68,6 +74,27 @@ public:
|
|||||||
|
|
||||||
} // namespace SPV
|
} // 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 <functional>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
@ -281,4 +308,5 @@ private:
|
|||||||
|
|
||||||
} // namespace SPV
|
} // namespace SPV
|
||||||
|
|
||||||
|
#endif // defined (use_cpp11)
|
||||||
#endif // SPIRVREMAPPER_H
|
#endif // SPIRVREMAPPER_H
|
||||||
|
|||||||
@ -46,7 +46,10 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
#include "SpvBuilder.h"
|
#include "SpvBuilder.h"
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
#include "hex_float.h"
|
#include "hex_float.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
@ -141,7 +144,6 @@ void Builder::addLine(Id fileName, int lineNum, int column)
|
|||||||
|
|
||||||
void Builder::addDebugScopeAndLine(Id fileName, int lineNum, int column)
|
void Builder::addDebugScopeAndLine(Id fileName, int lineNum, int column)
|
||||||
{
|
{
|
||||||
assert(!currentDebugScopeId.empty());
|
|
||||||
if (currentDebugScopeId.top() != lastDebugScopeId) {
|
if (currentDebugScopeId.top() != lastDebugScopeId) {
|
||||||
spv::Id resultId = getUniqueId();
|
spv::Id resultId = getUniqueId();
|
||||||
Instruction* scopeInst = new Instruction(resultId, makeVoidType(), OpExtInst);
|
Instruction* scopeInst = new Instruction(resultId, makeVoidType(), OpExtInst);
|
||||||
@ -280,6 +282,11 @@ Id Builder::makePointerFromForwardPointer(StorageClass storageClass, Id forwardP
|
|||||||
|
|
||||||
Id Builder::makeIntegerType(int width, bool hasSign)
|
Id Builder::makeIntegerType(int width, bool hasSign)
|
||||||
{
|
{
|
||||||
|
#ifdef GLSLANG_WEB
|
||||||
|
assert(width == 32);
|
||||||
|
width = 32;
|
||||||
|
#endif
|
||||||
|
|
||||||
// try to find it
|
// try to find it
|
||||||
Instruction* type;
|
Instruction* type;
|
||||||
for (int t = 0; t < (int)groupedTypes[OpTypeInt].size(); ++t) {
|
for (int t = 0; t < (int)groupedTypes[OpTypeInt].size(); ++t) {
|
||||||
@ -321,6 +328,11 @@ Id Builder::makeIntegerType(int width, bool hasSign)
|
|||||||
|
|
||||||
Id Builder::makeFloatType(int width)
|
Id Builder::makeFloatType(int width)
|
||||||
{
|
{
|
||||||
|
#ifdef GLSLANG_WEB
|
||||||
|
assert(width == 32);
|
||||||
|
width = 32;
|
||||||
|
#endif
|
||||||
|
|
||||||
// try to find it
|
// try to find it
|
||||||
Instruction* type;
|
Instruction* type;
|
||||||
for (int t = 0; t < (int)groupedTypes[OpTypeFloat].size(); ++t) {
|
for (int t = 0; t < (int)groupedTypes[OpTypeFloat].size(); ++t) {
|
||||||
@ -468,41 +480,15 @@ Id Builder::makeMatrixType(Id component, int cols, int rows)
|
|||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Builder::makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id cols, Id use)
|
Id Builder::makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols)
|
||||||
{
|
|
||||||
// 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
|
// try to find it
|
||||||
Instruction* type;
|
Instruction* type;
|
||||||
for (int t = 0; t < (int)groupedTypes[OpTypeCooperativeMatrixNV].size(); ++t) {
|
for (int t = 0; t < (int)groupedTypes[OpTypeCooperativeMatrixNV].size(); ++t) {
|
||||||
type = groupedTypes[OpTypeCooperativeMatrixNV][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)
|
type->getIdOperand(3) == cols)
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
@ -520,17 +506,6 @@ Id Builder::makeCooperativeMatrixTypeNV(Id component, Id scope, Id rows, Id cols
|
|||||||
return type->getResultId();
|
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)
|
Id Builder::makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands)
|
||||||
{
|
{
|
||||||
// try to find it
|
// try to find it
|
||||||
@ -675,12 +650,8 @@ Id Builder::makeDebugFunctionType(Id returnType, const std::vector<Id>& paramTyp
|
|||||||
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic));
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic));
|
||||||
type->addIdOperand(debugId[returnType]);
|
type->addIdOperand(debugId[returnType]);
|
||||||
for (auto const paramType : paramTypes) {
|
for (auto const paramType : paramTypes) {
|
||||||
if (isPointerType(paramType) || isArrayType(paramType)) {
|
assert(isPointerType(paramType) || isArrayType(paramType));
|
||||||
type->addIdOperand(debugId[getContainedTypeId(paramType)]);
|
type->addIdOperand(debugId[getContainedTypeId(paramType)]);
|
||||||
}
|
|
||||||
else {
|
|
||||||
type->addIdOperand(debugId[paramType]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
@ -720,6 +691,7 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo
|
|||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
// deal with capabilities
|
// deal with capabilities
|
||||||
switch (dim) {
|
switch (dim) {
|
||||||
case DimBuffer:
|
case DimBuffer:
|
||||||
@ -765,6 +737,7 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo
|
|||||||
addCapability(CapabilityImageMSArray);
|
addCapability(CapabilityImageMSArray);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (emitNonSemanticShaderDebugInfo)
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
{
|
{
|
||||||
@ -859,19 +832,11 @@ Id Builder::makeBoolDebugType(int const size)
|
|||||||
|
|
||||||
Id Builder::makeIntegerDebugType(int const width, bool const hasSign)
|
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
|
// try to find it
|
||||||
Instruction* type;
|
Instruction* type;
|
||||||
for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) {
|
for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) {
|
||||||
type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t];
|
type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t];
|
||||||
if (type->getIdOperand(0) == nameId &&
|
if (type->getIdOperand(0) == (hasSign ? getStringId("int") : getStringId("uint")) &&
|
||||||
type->getIdOperand(1) == static_cast<unsigned int>(width) &&
|
type->getIdOperand(1) == static_cast<unsigned int>(width) &&
|
||||||
type->getIdOperand(2) == (hasSign ? NonSemanticShaderDebugInfo100Signed : NonSemanticShaderDebugInfo100Unsigned))
|
type->getIdOperand(2) == (hasSign ? NonSemanticShaderDebugInfo100Signed : NonSemanticShaderDebugInfo100Unsigned))
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
@ -881,7 +846,11 @@ Id Builder::makeIntegerDebugType(int const width, bool const hasSign)
|
|||||||
type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
type->addIdOperand(nonSemanticShaderDebugInfo);
|
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic);
|
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic);
|
||||||
type->addIdOperand(nameId); // name id
|
if(hasSign == true) {
|
||||||
|
type->addIdOperand(getStringId("int")); // name id
|
||||||
|
} else {
|
||||||
|
type->addIdOperand(getStringId("uint")); // name id
|
||||||
|
}
|
||||||
type->addIdOperand(makeUintConstant(width)); // size id
|
type->addIdOperand(makeUintConstant(width)); // size id
|
||||||
if(hasSign == true) {
|
if(hasSign == true) {
|
||||||
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Signed)); // encoding id
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Signed)); // encoding id
|
||||||
@ -899,18 +868,11 @@ Id Builder::makeIntegerDebugType(int const width, bool const hasSign)
|
|||||||
|
|
||||||
Id Builder::makeFloatDebugType(int const width)
|
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
|
// try to find it
|
||||||
Instruction* type;
|
Instruction* type;
|
||||||
for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) {
|
for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) {
|
||||||
type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t];
|
type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t];
|
||||||
if (type->getIdOperand(0) == nameId &&
|
if (type->getIdOperand(0) == getStringId("float") &&
|
||||||
type->getIdOperand(1) == static_cast<unsigned int>(width) &&
|
type->getIdOperand(1) == static_cast<unsigned int>(width) &&
|
||||||
type->getIdOperand(2) == NonSemanticShaderDebugInfo100Float)
|
type->getIdOperand(2) == NonSemanticShaderDebugInfo100Float)
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
@ -920,7 +882,7 @@ Id Builder::makeFloatDebugType(int const width)
|
|||||||
type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
type->addIdOperand(nonSemanticShaderDebugInfo);
|
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic);
|
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic);
|
||||||
type->addIdOperand(nameId); // name id
|
type->addIdOperand(getStringId("float")); // name id
|
||||||
type->addIdOperand(makeUintConstant(width)); // size id
|
type->addIdOperand(makeUintConstant(width)); // size id
|
||||||
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Float)); // encoding id
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Float)); // encoding id
|
||||||
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id
|
||||||
@ -967,7 +929,7 @@ Id Builder::makeArrayDebugType(Id const baseType, Id const componentCount)
|
|||||||
|
|
||||||
Id Builder::makeVectorDebugType(Id const baseType, int 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)
|
Id Builder::makeMatrixDebugType(Id const vectorType, int const vectorCount, bool columnMajor)
|
||||||
@ -1029,10 +991,7 @@ Id Builder::makeCompositeDebugType(std::vector<Id> const& memberTypes, char cons
|
|||||||
for(auto const memberType : memberTypes) {
|
for(auto const memberType : memberTypes) {
|
||||||
assert(debugTypeLocs.find(memberType) != debugTypeLocs.end());
|
assert(debugTypeLocs.find(memberType) != debugTypeLocs.end());
|
||||||
|
|
||||||
// There _should_ be debug types for all the member types but currently buffer references
|
memberDebugTypes.emplace_back(makeMemberDebugType(memberType, debugTypeLocs[memberType]));
|
||||||
// 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.
|
// TODO: Need to rethink this method of passing location information.
|
||||||
// debugTypeLocs.erase(memberType);
|
// debugTypeLocs.erase(memberType);
|
||||||
@ -1108,12 +1067,6 @@ Id Builder::makeDebugCompilationUnit() {
|
|||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(sourceInst));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(sourceInst));
|
||||||
module.mapInstruction(sourceInst);
|
module.mapInstruction(sourceInst);
|
||||||
nonSemanticShaderCompilationUnitId = resultId;
|
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;
|
return resultId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1143,8 +1096,6 @@ 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)
|
Id Builder::createDebugLocalVariable(Id type, char const*const name, size_t const argNumber)
|
||||||
{
|
{
|
||||||
assert(name != nullptr);
|
assert(name != nullptr);
|
||||||
assert(!currentDebugScopeId.empty());
|
|
||||||
|
|
||||||
Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
inst->addIdOperand(nonSemanticShaderDebugInfo);
|
inst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLocalVariable);
|
inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLocalVariable);
|
||||||
@ -1195,6 +1146,7 @@ Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const localVariable
|
|||||||
return inst->getResultId();
|
return inst->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
Id Builder::makeAccelerationStructureType()
|
Id Builder::makeAccelerationStructureType()
|
||||||
{
|
{
|
||||||
Instruction *type;
|
Instruction *type;
|
||||||
@ -1224,21 +1176,7 @@ Id Builder::makeRayQueryType()
|
|||||||
|
|
||||||
return type->getResultId();
|
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
|
Id Builder::getDerefTypeId(Id resultId) const
|
||||||
{
|
{
|
||||||
@ -1288,7 +1226,6 @@ int Builder::getNumTypeConstituents(Id typeId) const
|
|||||||
}
|
}
|
||||||
case OpTypeStruct:
|
case OpTypeStruct:
|
||||||
return instr->getNumOperands();
|
return instr->getNumOperands();
|
||||||
case OpTypeCooperativeMatrixKHR:
|
|
||||||
case OpTypeCooperativeMatrixNV:
|
case OpTypeCooperativeMatrixNV:
|
||||||
// has only one constituent when used with OpCompositeConstruct.
|
// has only one constituent when used with OpCompositeConstruct.
|
||||||
return 1;
|
return 1;
|
||||||
@ -1338,7 +1275,6 @@ Id Builder::getContainedTypeId(Id typeId, int member) const
|
|||||||
case OpTypeMatrix:
|
case OpTypeMatrix:
|
||||||
case OpTypeArray:
|
case OpTypeArray:
|
||||||
case OpTypeRuntimeArray:
|
case OpTypeRuntimeArray:
|
||||||
case OpTypeCooperativeMatrixKHR:
|
|
||||||
case OpTypeCooperativeMatrixNV:
|
case OpTypeCooperativeMatrixNV:
|
||||||
return instr->getIdOperand(0);
|
return instr->getIdOperand(0);
|
||||||
case OpTypePointer:
|
case OpTypePointer:
|
||||||
@ -1409,7 +1345,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
|
// return true if the type is a pointer to PhysicalStorageBufferEXT or an
|
||||||
// contains such a pointer. These require restrict/aliased decorations.
|
// array of such pointers. These require restrict/aliased decorations.
|
||||||
bool Builder::containsPhysicalStorageBufferOrArray(Id typeId) const
|
bool Builder::containsPhysicalStorageBufferOrArray(Id typeId) const
|
||||||
{
|
{
|
||||||
const Instruction& instr = *module.getInstruction(typeId);
|
const Instruction& instr = *module.getInstruction(typeId);
|
||||||
@ -1421,12 +1357,6 @@ bool Builder::containsPhysicalStorageBufferOrArray(Id typeId) const
|
|||||||
return getTypeStorageClass(typeId) == StorageClassPhysicalStorageBufferEXT;
|
return getTypeStorageClass(typeId) == StorageClassPhysicalStorageBufferEXT;
|
||||||
case OpTypeArray:
|
case OpTypeArray:
|
||||||
return containsPhysicalStorageBufferOrArray(getContainedTypeId(typeId));
|
return containsPhysicalStorageBufferOrArray(getContainedTypeId(typeId));
|
||||||
case OpTypeStruct:
|
|
||||||
for (int m = 0; m < instr.getNumOperands(); ++m) {
|
|
||||||
if (containsPhysicalStorageBufferOrArray(instr.getIdOperand(m)))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1640,6 +1570,10 @@ Id Builder::makeFloatConstant(float f, bool specConstant)
|
|||||||
|
|
||||||
Id Builder::makeDoubleConstant(double d, bool specConstant)
|
Id Builder::makeDoubleConstant(double d, bool specConstant)
|
||||||
{
|
{
|
||||||
|
#ifdef GLSLANG_WEB
|
||||||
|
assert(0);
|
||||||
|
return NoResult;
|
||||||
|
#else
|
||||||
Op opcode = specConstant ? OpSpecConstant : OpConstant;
|
Op opcode = specConstant ? OpSpecConstant : OpConstant;
|
||||||
Id typeId = makeFloatType(64);
|
Id typeId = makeFloatType(64);
|
||||||
union { double db; unsigned long long ull; } u;
|
union { double db; unsigned long long ull; } u;
|
||||||
@ -1664,10 +1598,15 @@ Id Builder::makeDoubleConstant(double d, bool specConstant)
|
|||||||
module.mapInstruction(c);
|
module.mapInstruction(c);
|
||||||
|
|
||||||
return c->getResultId();
|
return c->getResultId();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Builder::makeFloat16Constant(float f16, bool specConstant)
|
Id Builder::makeFloat16Constant(float f16, bool specConstant)
|
||||||
{
|
{
|
||||||
|
#ifdef GLSLANG_WEB
|
||||||
|
assert(0);
|
||||||
|
return NoResult;
|
||||||
|
#else
|
||||||
Op opcode = specConstant ? OpSpecConstant : OpConstant;
|
Op opcode = specConstant ? OpSpecConstant : OpConstant;
|
||||||
Id typeId = makeFloatType(16);
|
Id typeId = makeFloatType(16);
|
||||||
|
|
||||||
@ -1692,11 +1631,17 @@ Id Builder::makeFloat16Constant(float f16, bool specConstant)
|
|||||||
module.mapInstruction(c);
|
module.mapInstruction(c);
|
||||||
|
|
||||||
return c->getResultId();
|
return c->getResultId();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Builder::makeFpConstant(Id type, double d, bool specConstant)
|
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);
|
const int width = getScalarTypeWidth(type);
|
||||||
|
#endif
|
||||||
|
|
||||||
assert(isFloatType(type));
|
assert(isFloatType(type));
|
||||||
|
|
||||||
@ -1790,7 +1735,6 @@ Id Builder::makeCompositeConstant(Id typeId, const std::vector<Id>& members, boo
|
|||||||
case OpTypeVector:
|
case OpTypeVector:
|
||||||
case OpTypeArray:
|
case OpTypeArray:
|
||||||
case OpTypeMatrix:
|
case OpTypeMatrix:
|
||||||
case OpTypeCooperativeMatrixKHR:
|
|
||||||
case OpTypeCooperativeMatrixNV:
|
case OpTypeCooperativeMatrixNV:
|
||||||
if (! specConstant) {
|
if (! specConstant) {
|
||||||
Id existing = findCompositeConstant(typeClass, typeId, members);
|
Id existing = findCompositeConstant(typeClass, typeId, members);
|
||||||
@ -1838,10 +1782,6 @@ Instruction* Builder::addEntryPoint(ExecutionModel model, Function* function, co
|
|||||||
// Currently relying on the fact that all 'value' of interest are small non-negative values.
|
// 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)
|
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);
|
Instruction* instr = new Instruction(OpExecutionMode);
|
||||||
instr->addIdOperand(entryPoint->getId());
|
instr->addIdOperand(entryPoint->getId());
|
||||||
instr->addImmediateOperand(mode);
|
instr->addImmediateOperand(mode);
|
||||||
@ -1857,10 +1797,6 @@ void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, int val
|
|||||||
|
|
||||||
void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, const std::vector<unsigned>& literals)
|
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);
|
Instruction* instr = new Instruction(OpExecutionMode);
|
||||||
instr->addIdOperand(entryPoint->getId());
|
instr->addIdOperand(entryPoint->getId());
|
||||||
instr->addImmediateOperand(mode);
|
instr->addImmediateOperand(mode);
|
||||||
@ -1872,10 +1808,6 @@ void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, const s
|
|||||||
|
|
||||||
void Builder::addExecutionModeId(Function* entryPoint, ExecutionMode mode, const std::vector<Id>& operandIds)
|
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);
|
Instruction* instr = new Instruction(OpExecutionModeId);
|
||||||
instr->addIdOperand(entryPoint->getId());
|
instr->addIdOperand(entryPoint->getId());
|
||||||
instr->addImmediateOperand(mode);
|
instr->addImmediateOperand(mode);
|
||||||
@ -1959,16 +1891,6 @@ void Builder::addDecoration(Id id, Decoration decoration, const std::vector<cons
|
|||||||
decorations.push_back(std::unique_ptr<Instruction>(dec));
|
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));
|
|
||||||
}
|
|
||||||
|
|
||||||
void Builder::addDecorationId(Id id, Decoration decoration, Id idDecoration)
|
void Builder::addDecorationId(Id id, Decoration decoration, Id idDecoration)
|
||||||
{
|
{
|
||||||
if (decoration == spv::DecorationMax)
|
if (decoration == spv::DecorationMax)
|
||||||
@ -2073,7 +1995,7 @@ Function* Builder::makeEntryPoint(const char* entryPoint)
|
|||||||
emitNonSemanticShaderDebugInfo = false;
|
emitNonSemanticShaderDebugInfo = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
entryPointFunction = makeFunctionEntry(NoPrecision, returnType, entryPoint, LinkageTypeMax, paramsTypes, paramNames, decorations, &entry);
|
entryPointFunction = makeFunctionEntry(NoPrecision, returnType, entryPoint, paramsTypes, paramNames, decorations, &entry);
|
||||||
|
|
||||||
emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo;
|
emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo;
|
||||||
|
|
||||||
@ -2081,7 +2003,7 @@ Function* Builder::makeEntryPoint(const char* entryPoint)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Comments in header
|
// Comments in header
|
||||||
Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name, LinkageType linkType,
|
Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name,
|
||||||
const std::vector<Id>& paramTypes, const std::vector<char const*>& paramNames,
|
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>>& decorations, Block **entry)
|
||||||
{
|
{
|
||||||
@ -2089,7 +2011,7 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const
|
|||||||
Id typeId = makeFunctionType(returnType, paramTypes);
|
Id typeId = makeFunctionType(returnType, paramTypes);
|
||||||
Id firstParamId = paramTypes.size() == 0 ? 0 : getUniqueIds((int)paramTypes.size());
|
Id firstParamId = paramTypes.size() == 0 ? 0 : getUniqueIds((int)paramTypes.size());
|
||||||
Id funcId = getUniqueId();
|
Id funcId = getUniqueId();
|
||||||
Function* function = new Function(funcId, returnType, typeId, firstParamId, linkType, name, module);
|
Function* function = new Function(funcId, returnType, typeId, firstParamId, module);
|
||||||
|
|
||||||
// Set up the precisions
|
// Set up the precisions
|
||||||
setPrecision(function->getId(), precision);
|
setPrecision(function->getId(), precision);
|
||||||
@ -2125,16 +2047,11 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const
|
|||||||
assert(paramTypes.size() == paramNames.size());
|
assert(paramTypes.size() == paramNames.size());
|
||||||
for(size_t p = 0; p < paramTypes.size(); ++p)
|
for(size_t p = 0; p < paramTypes.size(); ++p)
|
||||||
{
|
{
|
||||||
auto getParamTypeId = [this](Id const& typeId) {
|
auto const& paramType = paramTypes[p];
|
||||||
if (isPointerType(typeId) || isArrayType(typeId)) {
|
assert(isPointerType(paramType) || isArrayType(paramType));
|
||||||
return getContainedTypeId(typeId);
|
assert(debugId[getContainedTypeId(paramType)] != 0);
|
||||||
}
|
|
||||||
else {
|
|
||||||
return typeId;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
auto const& paramName = paramNames[p];
|
auto const& paramName = paramNames[p];
|
||||||
auto const debugLocalVariableId = createDebugLocalVariable(debugId[getParamTypeId(paramTypes[p])], paramName, p+1);
|
auto const debugLocalVariableId = createDebugLocalVariable(debugId[getContainedTypeId(paramType)], paramName, p+1);
|
||||||
debugId[firstParamId + p] = debugLocalVariableId;
|
debugId[firstParamId + p] = debugLocalVariableId;
|
||||||
|
|
||||||
makeDebugDeclare(debugLocalVariableId, firstParamId + p);
|
makeDebugDeclare(debugLocalVariableId, firstParamId + p);
|
||||||
@ -2153,8 +2070,7 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const
|
|||||||
return function;
|
return function;
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Builder::makeDebugFunction([[maybe_unused]] Function* function, Id nameId, Id funcTypeId)
|
Id Builder::makeDebugFunction(Function* function, Id nameId, Id funcTypeId) {
|
||||||
{
|
|
||||||
assert(function != nullptr);
|
assert(function != nullptr);
|
||||||
assert(nameId != 0);
|
assert(nameId != 0);
|
||||||
assert(funcTypeId != 0);
|
assert(funcTypeId != 0);
|
||||||
@ -2179,8 +2095,6 @@ Id Builder::makeDebugFunction([[maybe_unused]] Function* function, Id nameId, Id
|
|||||||
}
|
}
|
||||||
|
|
||||||
Id Builder::makeDebugLexicalBlock(uint32_t line) {
|
Id Builder::makeDebugLexicalBlock(uint32_t line) {
|
||||||
assert(!currentDebugScopeId.empty());
|
|
||||||
|
|
||||||
Id lexId = getUniqueId();
|
Id lexId = getUniqueId();
|
||||||
auto lex = new Instruction(lexId, makeVoidType(), OpExtInst);
|
auto lex = new Instruction(lexId, makeVoidType(), OpExtInst);
|
||||||
lex->addIdOperand(nonSemanticShaderDebugInfo);
|
lex->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
@ -2259,12 +2173,6 @@ void Builder::enterFunction(Function const* function)
|
|||||||
defInst->addIdOperand(funcId);
|
defInst->addIdOperand(funcId);
|
||||||
buildPoint->addInstruction(std::unique_ptr<Instruction>(defInst));
|
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
|
// Comments in header
|
||||||
@ -2455,24 +2363,7 @@ Id Builder::createArrayLength(Id base, unsigned int member)
|
|||||||
return length->getResultId();
|
return length->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Builder::createCooperativeMatrixLengthKHR(Id type)
|
Id Builder::createCooperativeMatrixLength(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);
|
spv::Id intType = makeUintType(32);
|
||||||
|
|
||||||
@ -2843,47 +2734,52 @@ 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,
|
Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, bool fetch, bool proj, bool gather,
|
||||||
bool noImplicitLod, const TextureParameters& parameters, ImageOperandsMask signExtensionMask)
|
bool noImplicitLod, const TextureParameters& parameters, ImageOperandsMask signExtensionMask)
|
||||||
{
|
{
|
||||||
std::vector<Id> texArgs;
|
static const int maxTextureArgs = 10;
|
||||||
|
Id texArgs[maxTextureArgs] = {};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Set up the fixed arguments
|
// Set up the fixed arguments
|
||||||
//
|
//
|
||||||
|
int numArgs = 0;
|
||||||
bool explicitLod = false;
|
bool explicitLod = false;
|
||||||
texArgs.push_back(parameters.sampler);
|
texArgs[numArgs++] = parameters.sampler;
|
||||||
texArgs.push_back(parameters.coords);
|
texArgs[numArgs++] = parameters.coords;
|
||||||
if (parameters.Dref != NoResult)
|
if (parameters.Dref != NoResult)
|
||||||
texArgs.push_back(parameters.Dref);
|
texArgs[numArgs++] = parameters.Dref;
|
||||||
if (parameters.component != NoResult)
|
if (parameters.component != NoResult)
|
||||||
texArgs.push_back(parameters.component);
|
texArgs[numArgs++] = parameters.component;
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
if (parameters.granularity != NoResult)
|
if (parameters.granularity != NoResult)
|
||||||
texArgs.push_back(parameters.granularity);
|
texArgs[numArgs++] = parameters.granularity;
|
||||||
if (parameters.coarse != NoResult)
|
if (parameters.coarse != NoResult)
|
||||||
texArgs.push_back(parameters.coarse);
|
texArgs[numArgs++] = parameters.coarse;
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// Set up the optional arguments
|
// Set up the optional arguments
|
||||||
//
|
//
|
||||||
size_t optArgNum = texArgs.size(); // the position of the mask for the optional arguments, if any.
|
int optArgNum = numArgs; // track which operand, if it exists, is the mask of optional arguments
|
||||||
|
++numArgs; // speculatively make room for the mask operand
|
||||||
ImageOperandsMask mask = ImageOperandsMaskNone; // the mask operand
|
ImageOperandsMask mask = ImageOperandsMaskNone; // the mask operand
|
||||||
if (parameters.bias) {
|
if (parameters.bias) {
|
||||||
mask = (ImageOperandsMask)(mask | ImageOperandsBiasMask);
|
mask = (ImageOperandsMask)(mask | ImageOperandsBiasMask);
|
||||||
texArgs.push_back(parameters.bias);
|
texArgs[numArgs++] = parameters.bias;
|
||||||
}
|
}
|
||||||
if (parameters.lod) {
|
if (parameters.lod) {
|
||||||
mask = (ImageOperandsMask)(mask | ImageOperandsLodMask);
|
mask = (ImageOperandsMask)(mask | ImageOperandsLodMask);
|
||||||
texArgs.push_back(parameters.lod);
|
texArgs[numArgs++] = parameters.lod;
|
||||||
explicitLod = true;
|
explicitLod = true;
|
||||||
} else if (parameters.gradX) {
|
} else if (parameters.gradX) {
|
||||||
mask = (ImageOperandsMask)(mask | ImageOperandsGradMask);
|
mask = (ImageOperandsMask)(mask | ImageOperandsGradMask);
|
||||||
texArgs.push_back(parameters.gradX);
|
texArgs[numArgs++] = parameters.gradX;
|
||||||
texArgs.push_back(parameters.gradY);
|
texArgs[numArgs++] = parameters.gradY;
|
||||||
explicitLod = true;
|
explicitLod = true;
|
||||||
} else if (noImplicitLod && ! fetch && ! gather) {
|
} else if (noImplicitLod && ! fetch && ! gather) {
|
||||||
// have to explicitly use lod of 0 if not allowed to have them be implicit, and
|
// 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
|
// we would otherwise be about to issue an implicit instruction
|
||||||
mask = (ImageOperandsMask)(mask | ImageOperandsLodMask);
|
mask = (ImageOperandsMask)(mask | ImageOperandsLodMask);
|
||||||
texArgs.push_back(makeFloatConstant(0.0));
|
texArgs[numArgs++] = makeFloatConstant(0.0);
|
||||||
explicitLod = true;
|
explicitLod = true;
|
||||||
}
|
}
|
||||||
if (parameters.offset) {
|
if (parameters.offset) {
|
||||||
@ -2893,23 +2789,24 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
|
|||||||
addCapability(CapabilityImageGatherExtended);
|
addCapability(CapabilityImageGatherExtended);
|
||||||
mask = (ImageOperandsMask)(mask | ImageOperandsOffsetMask);
|
mask = (ImageOperandsMask)(mask | ImageOperandsOffsetMask);
|
||||||
}
|
}
|
||||||
texArgs.push_back(parameters.offset);
|
texArgs[numArgs++] = parameters.offset;
|
||||||
}
|
}
|
||||||
if (parameters.offsets) {
|
if (parameters.offsets) {
|
||||||
addCapability(CapabilityImageGatherExtended);
|
addCapability(CapabilityImageGatherExtended);
|
||||||
mask = (ImageOperandsMask)(mask | ImageOperandsConstOffsetsMask);
|
mask = (ImageOperandsMask)(mask | ImageOperandsConstOffsetsMask);
|
||||||
texArgs.push_back(parameters.offsets);
|
texArgs[numArgs++] = parameters.offsets;
|
||||||
}
|
}
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
if (parameters.sample) {
|
if (parameters.sample) {
|
||||||
mask = (ImageOperandsMask)(mask | ImageOperandsSampleMask);
|
mask = (ImageOperandsMask)(mask | ImageOperandsSampleMask);
|
||||||
texArgs.push_back(parameters.sample);
|
texArgs[numArgs++] = parameters.sample;
|
||||||
}
|
}
|
||||||
if (parameters.lodClamp) {
|
if (parameters.lodClamp) {
|
||||||
// capability if this bit is used
|
// capability if this bit is used
|
||||||
addCapability(CapabilityMinLod);
|
addCapability(CapabilityMinLod);
|
||||||
|
|
||||||
mask = (ImageOperandsMask)(mask | ImageOperandsMinLodMask);
|
mask = (ImageOperandsMask)(mask | ImageOperandsMinLodMask);
|
||||||
texArgs.push_back(parameters.lodClamp);
|
texArgs[numArgs++] = parameters.lodClamp;
|
||||||
}
|
}
|
||||||
if (parameters.nonprivate) {
|
if (parameters.nonprivate) {
|
||||||
mask = mask | ImageOperandsNonPrivateTexelKHRMask;
|
mask = mask | ImageOperandsNonPrivateTexelKHRMask;
|
||||||
@ -2917,10 +2814,12 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
|
|||||||
if (parameters.volatil) {
|
if (parameters.volatil) {
|
||||||
mask = mask | ImageOperandsVolatileTexelKHRMask;
|
mask = mask | ImageOperandsVolatileTexelKHRMask;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
mask = mask | signExtensionMask;
|
mask = mask | signExtensionMask;
|
||||||
// insert the operand for the mask, if any bits were set.
|
if (mask == ImageOperandsMaskNone)
|
||||||
if (mask != ImageOperandsMaskNone)
|
--numArgs; // undo speculative reservation for the mask argument
|
||||||
texArgs.insert(texArgs.begin() + optArgNum, mask);
|
else
|
||||||
|
texArgs[optArgNum] = mask;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Set up the instruction
|
// Set up the instruction
|
||||||
@ -2931,6 +2830,7 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
|
|||||||
opCode = OpImageSparseFetch;
|
opCode = OpImageSparseFetch;
|
||||||
else
|
else
|
||||||
opCode = OpImageFetch;
|
opCode = OpImageFetch;
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
} else if (parameters.granularity && parameters.coarse) {
|
} else if (parameters.granularity && parameters.coarse) {
|
||||||
opCode = OpImageSampleFootprintNV;
|
opCode = OpImageSampleFootprintNV;
|
||||||
} else if (gather) {
|
} else if (gather) {
|
||||||
@ -2944,6 +2844,7 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
|
|||||||
opCode = OpImageSparseGather;
|
opCode = OpImageSparseGather;
|
||||||
else
|
else
|
||||||
opCode = OpImageGather;
|
opCode = OpImageGather;
|
||||||
|
#endif
|
||||||
} else if (explicitLod) {
|
} else if (explicitLod) {
|
||||||
if (parameters.Dref) {
|
if (parameters.Dref) {
|
||||||
if (proj)
|
if (proj)
|
||||||
@ -3022,11 +2923,11 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
|
|||||||
|
|
||||||
// Build the SPIR-V instruction
|
// Build the SPIR-V instruction
|
||||||
Instruction* textureInst = new Instruction(getUniqueId(), resultType, opCode);
|
Instruction* textureInst = new Instruction(getUniqueId(), resultType, opCode);
|
||||||
for (size_t op = 0; op < optArgNum; ++op)
|
for (int op = 0; op < optArgNum; ++op)
|
||||||
textureInst->addIdOperand(texArgs[op]);
|
textureInst->addIdOperand(texArgs[op]);
|
||||||
if (optArgNum < texArgs.size())
|
if (optArgNum < numArgs)
|
||||||
textureInst->addImmediateOperand(texArgs[optArgNum]);
|
textureInst->addImmediateOperand(texArgs[optArgNum]);
|
||||||
for (size_t op = optArgNum + 1; op < texArgs.size(); ++op)
|
for (int op = optArgNum + 1; op < numArgs; ++op)
|
||||||
textureInst->addIdOperand(texArgs[op]);
|
textureInst->addIdOperand(texArgs[op]);
|
||||||
setPrecision(textureInst->getResultId(), precision);
|
setPrecision(textureInst->getResultId(), precision);
|
||||||
buildPoint->addInstruction(std::unique_ptr<Instruction>(textureInst));
|
buildPoint->addInstruction(std::unique_ptr<Instruction>(textureInst));
|
||||||
@ -3306,7 +3207,12 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector<Id>&
|
|||||||
int numRows = getTypeNumRows(resultTypeId);
|
int numRows = getTypeNumRows(resultTypeId);
|
||||||
|
|
||||||
Instruction* instr = module.getInstruction(componentTypeId);
|
Instruction* instr = module.getInstruction(componentTypeId);
|
||||||
|
#ifdef GLSLANG_WEB
|
||||||
|
const unsigned bitCount = 32;
|
||||||
|
assert(bitCount == instr->getImmediateOperand(0));
|
||||||
|
#else
|
||||||
const unsigned bitCount = instr->getImmediateOperand(0);
|
const unsigned bitCount = instr->getImmediateOperand(0);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Optimize matrix constructed from a bigger matrix
|
// Optimize matrix constructed from a bigger matrix
|
||||||
if (isMatrix(sources[0]) && getNumColumns(sources[0]) >= numCols && getNumRows(sources[0]) >= numRows) {
|
if (isMatrix(sources[0]) && getNumColumns(sources[0]) >= numCols && getNumRows(sources[0]) >= numRows) {
|
||||||
@ -4127,4 +4033,4 @@ void Builder::dumpModuleProcesses(std::vector<unsigned int>& out) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // end spv namespace
|
}; // end spv namespace
|
||||||
|
|||||||
@ -203,9 +203,7 @@ public:
|
|||||||
Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format);
|
Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format);
|
||||||
Id makeSamplerType();
|
Id makeSamplerType();
|
||||||
Id makeSampledImageType(Id imageType);
|
Id makeSampledImageType(Id imageType);
|
||||||
Id makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id cols, Id use);
|
Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols);
|
||||||
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);
|
Id makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands);
|
||||||
|
|
||||||
// SPIR-V NonSemantic Shader DebugInfo Instructions
|
// SPIR-V NonSemantic Shader DebugInfo Instructions
|
||||||
@ -242,8 +240,6 @@ public:
|
|||||||
Id makeAccelerationStructureType();
|
Id makeAccelerationStructureType();
|
||||||
// rayQueryEXT type
|
// rayQueryEXT type
|
||||||
Id makeRayQueryType();
|
Id makeRayQueryType();
|
||||||
// hitObjectNV type
|
|
||||||
Id makeHitObjectNVType();
|
|
||||||
|
|
||||||
// For querying about types.
|
// For querying about types.
|
||||||
Id getTypeId(Id resultId) const { return module.getTypeId(resultId); }
|
Id getTypeId(Id resultId) const { return module.getTypeId(resultId); }
|
||||||
@ -261,7 +257,6 @@ public:
|
|||||||
ImageFormat getImageTypeFormat(Id typeId) const
|
ImageFormat getImageTypeFormat(Id typeId) const
|
||||||
{ return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6); }
|
{ return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6); }
|
||||||
Id getResultingAccessChainType() const;
|
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 isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); }
|
||||||
bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); }
|
bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); }
|
||||||
@ -286,10 +281,11 @@ public:
|
|||||||
bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == OpTypeMatrix; }
|
bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == OpTypeMatrix; }
|
||||||
bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; }
|
bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; }
|
||||||
bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; }
|
bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; }
|
||||||
bool isCooperativeMatrixType(Id typeId)const
|
#ifdef GLSLANG_WEB
|
||||||
{
|
bool isCooperativeMatrixType(Id typeId)const { return false; }
|
||||||
return getTypeClass(typeId) == OpTypeCooperativeMatrixKHR || getTypeClass(typeId) == OpTypeCooperativeMatrixNV;
|
#else
|
||||||
}
|
bool isCooperativeMatrixType(Id typeId)const { return getTypeClass(typeId) == OpTypeCooperativeMatrixNV; }
|
||||||
|
#endif
|
||||||
bool isAggregateType(Id typeId) const
|
bool isAggregateType(Id typeId) const
|
||||||
{ return isArrayType(typeId) || isStructType(typeId) || isCooperativeMatrixType(typeId); }
|
{ return isArrayType(typeId) || isStructType(typeId) || isCooperativeMatrixType(typeId); }
|
||||||
bool isImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeImage; }
|
bool isImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeImage; }
|
||||||
@ -393,7 +389,6 @@ public:
|
|||||||
void addDecoration(Id, Decoration, const char*);
|
void addDecoration(Id, Decoration, const char*);
|
||||||
void addDecoration(Id, Decoration, const std::vector<unsigned>& literals);
|
void addDecoration(Id, Decoration, const std::vector<unsigned>& literals);
|
||||||
void addDecoration(Id, Decoration, const std::vector<const char*>& strings);
|
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, Id idDecoration);
|
||||||
void addDecorationId(Id id, Decoration, const std::vector<Id>& operandIds);
|
void addDecorationId(Id id, Decoration, const std::vector<Id>& operandIds);
|
||||||
void addMemberDecoration(Id, unsigned int member, Decoration, int num = -1);
|
void addMemberDecoration(Id, unsigned int member, Decoration, int num = -1);
|
||||||
@ -418,8 +413,7 @@ public:
|
|||||||
// Return the function, pass back the entry.
|
// Return the function, pass back the entry.
|
||||||
// The returned pointer is only valid for the lifetime of this builder.
|
// The returned pointer is only valid for the lifetime of this builder.
|
||||||
Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name,
|
Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name,
|
||||||
LinkageType linkType, const std::vector<Id>& paramTypes,
|
const std::vector<Id>& paramTypes, const std::vector<char const*>& paramNames,
|
||||||
const std::vector<char const*>& paramNames,
|
|
||||||
const std::vector<std::vector<Decoration>>& precisions, Block **entry = nullptr);
|
const std::vector<std::vector<Decoration>>& precisions, Block **entry = nullptr);
|
||||||
|
|
||||||
// Create a return. An 'implicit' return is one not appearing in the source
|
// Create a return. An 'implicit' return is one not appearing in the source
|
||||||
@ -468,10 +462,8 @@ public:
|
|||||||
// Create an OpArrayLength instruction
|
// Create an OpArrayLength instruction
|
||||||
Id createArrayLength(Id base, unsigned int member);
|
Id createArrayLength(Id base, unsigned int member);
|
||||||
|
|
||||||
// Create an OpCooperativeMatrixLengthKHR instruction
|
|
||||||
Id createCooperativeMatrixLengthKHR(Id type);
|
|
||||||
// Create an OpCooperativeMatrixLengthNV instruction
|
// Create an OpCooperativeMatrixLengthNV instruction
|
||||||
Id createCooperativeMatrixLengthNV(Id type);
|
Id createCooperativeMatrixLength(Id type);
|
||||||
|
|
||||||
// Create an OpCompositeExtract instruction
|
// Create an OpCompositeExtract instruction
|
||||||
Id createCompositeExtract(Id composite, Id typeId, unsigned index);
|
Id createCompositeExtract(Id composite, Id typeId, unsigned index);
|
||||||
@ -706,6 +698,11 @@ public:
|
|||||||
// Accumulate whether anything in the chain of structures has coherent decorations.
|
// Accumulate whether anything in the chain of structures has coherent decorations.
|
||||||
struct CoherentFlags {
|
struct CoherentFlags {
|
||||||
CoherentFlags() { clear(); }
|
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 isVolatile() const { return volatil; }
|
||||||
bool isNonUniform() const { return nonUniform; }
|
bool isNonUniform() const { return nonUniform; }
|
||||||
bool anyCoherent() const {
|
bool anyCoherent() const {
|
||||||
@ -750,6 +747,7 @@ public:
|
|||||||
nonUniform |= other.nonUniform;
|
nonUniform |= other.nonUniform;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
CoherentFlags coherentFlags;
|
CoherentFlags coherentFlags;
|
||||||
};
|
};
|
||||||
@ -830,17 +828,19 @@ public:
|
|||||||
|
|
||||||
// Add capabilities, extensions, remove unneeded decorations, etc.,
|
// Add capabilities, extensions, remove unneeded decorations, etc.,
|
||||||
// based on the resulting SPIR-V.
|
// based on the resulting SPIR-V.
|
||||||
void postProcess(bool compileOnly);
|
void postProcess();
|
||||||
|
|
||||||
// Prune unreachable blocks in the CFG and remove unneeded decorations.
|
// Prune unreachable blocks in the CFG and remove unneeded decorations.
|
||||||
void postProcessCFG();
|
void postProcessCFG();
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
// Add capabilities, extensions based on instructions in the module.
|
// Add capabilities, extensions based on instructions in the module.
|
||||||
void postProcessFeatures();
|
void postProcessFeatures();
|
||||||
// Hook to visit each instruction in a block in a function
|
// Hook to visit each instruction in a block in a function
|
||||||
void postProcess(Instruction&);
|
void postProcess(Instruction&);
|
||||||
// Hook to visit each non-32-bit sized float/int operation in a block.
|
// Hook to visit each non-32-bit sized float/int operation in a block.
|
||||||
void postProcessType(const Instruction&, spv::Id typeId);
|
void postProcessType(const Instruction&, spv::Id typeId);
|
||||||
|
#endif
|
||||||
|
|
||||||
void dump(std::vector<unsigned int>&) const;
|
void dump(std::vector<unsigned int>&) const;
|
||||||
|
|
||||||
|
|||||||
@ -53,11 +53,11 @@ namespace spv {
|
|||||||
#include "GLSL.ext.AMD.h"
|
#include "GLSL.ext.AMD.h"
|
||||||
#include "GLSL.ext.NV.h"
|
#include "GLSL.ext.NV.h"
|
||||||
#include "GLSL.ext.ARM.h"
|
#include "GLSL.ext.ARM.h"
|
||||||
#include "GLSL.ext.QCOM.h"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace spv {
|
namespace spv {
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
// Hook to visit each operand type and result type of an instruction.
|
// Hook to visit each operand type and result type of an instruction.
|
||||||
// Will be called multiple times for one instruction, once for each typed
|
// Will be called multiple times for one instruction, once for each typed
|
||||||
// operand and the result.
|
// operand and the result.
|
||||||
@ -335,6 +335,7 @@ void Builder::postProcess(Instruction& inst)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// comment in header
|
// comment in header
|
||||||
void Builder::postProcessCFG()
|
void Builder::postProcessCFG()
|
||||||
@ -395,6 +396,7 @@ void Builder::postProcessCFG()
|
|||||||
decorations.end());
|
decorations.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
// comment in header
|
// comment in header
|
||||||
void Builder::postProcessFeatures() {
|
void Builder::postProcessFeatures() {
|
||||||
// Add per-instruction capabilities, extensions, etc.,
|
// Add per-instruction capabilities, extensions, etc.,
|
||||||
@ -482,15 +484,14 @@ void Builder::postProcessFeatures() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// comment in header
|
// comment in header
|
||||||
void Builder::postProcess(bool compileOnly)
|
void Builder::postProcess() {
|
||||||
{
|
postProcessCFG();
|
||||||
// postProcessCFG needs an entrypoint to determine what is reachable, but if we are not creating an "executable" shader, we don't have an entrypoint
|
#ifndef GLSLANG_WEB
|
||||||
if (!compileOnly)
|
postProcessFeatures();
|
||||||
postProcessCFG();
|
#endif
|
||||||
|
|
||||||
postProcessFeatures();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}; // end spv namespace
|
}; // 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,
|
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_locs,
|
||||||
std::unordered_set<uint32_t>* live_builtins,
|
std::unordered_set<uint32_t>* live_builtins,
|
||||||
spv::SpvBuildLogger*)
|
[[maybe_unused]] spv::SpvBuildLogger* logger) // @MEWIN 2023-11-04 - Added [[maybe_unused]] to fix compiler warnings.
|
||||||
{
|
{
|
||||||
spvtools::Optimizer optimizer(target_env);
|
spvtools::Optimizer optimizer(target_env);
|
||||||
optimizer.SetMessageConsumer(OptimizerMesssageConsumer);
|
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,
|
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_locs,
|
||||||
std::unordered_set<uint32_t>* live_builtins,
|
std::unordered_set<uint32_t>* live_builtins,
|
||||||
spv::SpvBuildLogger*)
|
[[maybe_unused]] spv::SpvBuildLogger* logger) // @MEWIN 2023-11-04 - Added [[maybe_unused]] to fix compiler warnings.
|
||||||
{
|
{
|
||||||
spvtools::Optimizer optimizer(target_env);
|
spvtools::Optimizer optimizer(target_env);
|
||||||
optimizer.SetMessageConsumer(OptimizerMesssageConsumer);
|
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,
|
void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector<unsigned int>& spirv,
|
||||||
spv::SpvBuildLogger*)
|
[[maybe_unused]] spv::SpvBuildLogger* logger) // @MEWIN 2023-11-04 - Added [[maybe_unused]] to fix compiler warnings.
|
||||||
{
|
{
|
||||||
spvtools::Optimizer optimizer(target_env);
|
spvtools::Optimizer optimizer(target_env);
|
||||||
optimizer.SetMessageConsumer(OptimizerMesssageConsumer);
|
optimizer.SetMessageConsumer(OptimizerMesssageConsumer);
|
||||||
|
|||||||
@ -61,7 +61,6 @@ struct SpvOptions {
|
|||||||
bool validate {false};
|
bool validate {false};
|
||||||
bool emitNonSemanticShaderDebugInfo {false};
|
bool emitNonSemanticShaderDebugInfo {false};
|
||||||
bool emitNonSemanticShaderDebugSource{ false };
|
bool emitNonSemanticShaderDebugSource{ false };
|
||||||
bool compileOnly{false};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#if ENABLE_OPT
|
#if ENABLE_OPT
|
||||||
|
|||||||
@ -55,8 +55,6 @@ namespace spv {
|
|||||||
#include "GLSL.ext.AMD.h"
|
#include "GLSL.ext.AMD.h"
|
||||||
#include "GLSL.ext.NV.h"
|
#include "GLSL.ext.NV.h"
|
||||||
#include "GLSL.ext.ARM.h"
|
#include "GLSL.ext.ARM.h"
|
||||||
#include "NonSemanticShaderDebugInfo100.h"
|
|
||||||
#include "GLSL.ext.QCOM.h"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const char* GlslStd450DebugNames[spv::GLSLstd450Count];
|
const char* GlslStd450DebugNames[spv::GLSLstd450Count];
|
||||||
@ -65,7 +63,6 @@ namespace spv {
|
|||||||
|
|
||||||
static const char* GLSLextAMDGetDebugNames(const char*, unsigned);
|
static const char* GLSLextAMDGetDebugNames(const char*, unsigned);
|
||||||
static const char* GLSLextNVGetDebugNames(const char*, unsigned);
|
static const char* GLSLextNVGetDebugNames(const char*, unsigned);
|
||||||
static const char* NonSemanticShaderDebugInfo100GetDebugNames(unsigned);
|
|
||||||
|
|
||||||
static void Kill(std::ostream& out, const char* message)
|
static void Kill(std::ostream& out, const char* message)
|
||||||
{
|
{
|
||||||
@ -80,7 +77,6 @@ enum ExtInstSet {
|
|||||||
GLSLextNVInst,
|
GLSLextNVInst,
|
||||||
OpenCLExtInst,
|
OpenCLExtInst,
|
||||||
NonSemanticDebugPrintfExtInst,
|
NonSemanticDebugPrintfExtInst,
|
||||||
NonSemanticShaderDebugInfo100
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Container class for a single instance of a SPIR-V stream, with methods for disassembly.
|
// Container class for a single instance of a SPIR-V stream, with methods for disassembly.
|
||||||
@ -506,8 +502,6 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
|
|||||||
extInstSet = OpenCLExtInst;
|
extInstSet = OpenCLExtInst;
|
||||||
} else if (strcmp("NonSemantic.DebugPrintf", name) == 0) {
|
} else if (strcmp("NonSemantic.DebugPrintf", name) == 0) {
|
||||||
extInstSet = NonSemanticDebugPrintfExtInst;
|
extInstSet = NonSemanticDebugPrintfExtInst;
|
||||||
} else if (strcmp("NonSemantic.Shader.DebugInfo.100", name) == 0) {
|
|
||||||
extInstSet = NonSemanticShaderDebugInfo100;
|
|
||||||
} else if (strcmp(spv::E_SPV_AMD_shader_ballot, name) == 0 ||
|
} 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_trinary_minmax, name) == 0 ||
|
||||||
strcmp(spv::E_SPV_AMD_shader_explicit_vertex_parameter, name) == 0 ||
|
strcmp(spv::E_SPV_AMD_shader_explicit_vertex_parameter, name) == 0 ||
|
||||||
@ -533,8 +527,6 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
|
|||||||
out << "(" << GLSLextNVGetDebugNames(name, entrypoint) << ")";
|
out << "(" << GLSLextNVGetDebugNames(name, entrypoint) << ")";
|
||||||
} else if (extInstSet == NonSemanticDebugPrintfExtInst) {
|
} else if (extInstSet == NonSemanticDebugPrintfExtInst) {
|
||||||
out << "(DebugPrintf)";
|
out << "(DebugPrintf)";
|
||||||
} else if (extInstSet == NonSemanticShaderDebugInfo100) {
|
|
||||||
out << "(" << NonSemanticShaderDebugInfo100GetDebugNames(entrypoint) << ")";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -758,59 +750,6 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
|
|||||||
return "Bad";
|
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)
|
void Disassemble(std::ostream& out, const std::vector<unsigned int>& stream)
|
||||||
{
|
{
|
||||||
SpirvStream SpirvStream(out, stream);
|
SpirvStream SpirvStream(out, stream);
|
||||||
|
|||||||
3053
SPIRV/doc.cpp
Executable file → Normal file
3053
SPIRV/doc.cpp
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
@ -156,7 +156,6 @@ enum OperandClass {
|
|||||||
OperandKernelEnqueueFlags,
|
OperandKernelEnqueueFlags,
|
||||||
OperandKernelProfilingInfo,
|
OperandKernelProfilingInfo,
|
||||||
OperandCapability,
|
OperandCapability,
|
||||||
OperandCooperativeMatrixOperands,
|
|
||||||
|
|
||||||
OperandOpcode,
|
OperandOpcode,
|
||||||
|
|
||||||
|
|||||||
@ -23,6 +23,19 @@
|
|||||||
#include <limits>
|
#include <limits>
|
||||||
#include <sstream>
|
#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"
|
#include "bitutils.h"
|
||||||
|
|
||||||
namespace spvutils {
|
namespace spvutils {
|
||||||
|
|||||||
267
SPIRV/spirv.hpp
267
SPIRV/spirv.hpp
@ -26,7 +26,7 @@
|
|||||||
// the Binary Section of the SPIR-V specification.
|
// the Binary Section of the SPIR-V specification.
|
||||||
|
|
||||||
// Enumeration tokens for SPIR-V, in various styles:
|
// Enumeration tokens for SPIR-V, in various styles:
|
||||||
// C, C++, C++11, JSON, Lua, Python, C#, D, Beef
|
// C, C++, C++11, JSON, Lua, Python, C#, D
|
||||||
//
|
//
|
||||||
// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
|
// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
|
||||||
// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
|
// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
|
||||||
@ -36,8 +36,6 @@
|
|||||||
// - C# will use enum classes in the Specification class located in the "Spv" namespace,
|
// - C# will use enum classes in the Specification class located in the "Spv" namespace,
|
||||||
// e.g.: Spv.Specification.SourceLanguage.GLSL
|
// e.g.: Spv.Specification.SourceLanguage.GLSL
|
||||||
// - D will have tokens under the "spv" module, e.g: spv.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,
|
// Some tokens act like mask values, which can be OR'd together,
|
||||||
// while others are mutually exclusive. The mask-like ones have
|
// while others are mutually exclusive. The mask-like ones have
|
||||||
@ -68,7 +66,6 @@ enum SourceLanguage {
|
|||||||
SourceLanguageOpenCL_CPP = 4,
|
SourceLanguageOpenCL_CPP = 4,
|
||||||
SourceLanguageHLSL = 5,
|
SourceLanguageHLSL = 5,
|
||||||
SourceLanguageCPP_for_OpenCL = 6,
|
SourceLanguageCPP_for_OpenCL = 6,
|
||||||
SourceLanguageSYCL = 7,
|
|
||||||
SourceLanguageMax = 0x7fffffff,
|
SourceLanguageMax = 0x7fffffff,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -156,9 +153,6 @@ enum ExecutionMode {
|
|||||||
ExecutionModeSubgroupsPerWorkgroupId = 37,
|
ExecutionModeSubgroupsPerWorkgroupId = 37,
|
||||||
ExecutionModeLocalSizeId = 38,
|
ExecutionModeLocalSizeId = 38,
|
||||||
ExecutionModeLocalSizeHintId = 39,
|
ExecutionModeLocalSizeHintId = 39,
|
||||||
ExecutionModeNonCoherentColorAttachmentReadEXT = 4169,
|
|
||||||
ExecutionModeNonCoherentDepthAttachmentReadEXT = 4170,
|
|
||||||
ExecutionModeNonCoherentStencilAttachmentReadEXT = 4171,
|
|
||||||
ExecutionModeSubgroupUniformControlFlowKHR = 4421,
|
ExecutionModeSubgroupUniformControlFlowKHR = 4421,
|
||||||
ExecutionModePostDepthCoverage = 4446,
|
ExecutionModePostDepthCoverage = 4446,
|
||||||
ExecutionModeDenormPreserve = 4459,
|
ExecutionModeDenormPreserve = 4459,
|
||||||
@ -198,8 +192,6 @@ enum ExecutionMode {
|
|||||||
ExecutionModeNoGlobalOffsetINTEL = 5895,
|
ExecutionModeNoGlobalOffsetINTEL = 5895,
|
||||||
ExecutionModeNumSIMDWorkitemsINTEL = 5896,
|
ExecutionModeNumSIMDWorkitemsINTEL = 5896,
|
||||||
ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
|
ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
|
||||||
ExecutionModeStreamingInterfaceINTEL = 6154,
|
|
||||||
ExecutionModeNamedBarrierCountINTEL = 6417,
|
|
||||||
ExecutionModeMax = 0x7fffffff,
|
ExecutionModeMax = 0x7fffffff,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -217,7 +209,6 @@ enum StorageClass {
|
|||||||
StorageClassAtomicCounter = 10,
|
StorageClassAtomicCounter = 10,
|
||||||
StorageClassImage = 11,
|
StorageClassImage = 11,
|
||||||
StorageClassStorageBuffer = 12,
|
StorageClassStorageBuffer = 12,
|
||||||
StorageClassTileImageEXT = 4172,
|
|
||||||
StorageClassCallableDataKHR = 5328,
|
StorageClassCallableDataKHR = 5328,
|
||||||
StorageClassCallableDataNV = 5328,
|
StorageClassCallableDataNV = 5328,
|
||||||
StorageClassIncomingCallableDataKHR = 5329,
|
StorageClassIncomingCallableDataKHR = 5329,
|
||||||
@ -232,7 +223,6 @@ enum StorageClass {
|
|||||||
StorageClassShaderRecordBufferNV = 5343,
|
StorageClassShaderRecordBufferNV = 5343,
|
||||||
StorageClassPhysicalStorageBuffer = 5349,
|
StorageClassPhysicalStorageBuffer = 5349,
|
||||||
StorageClassPhysicalStorageBufferEXT = 5349,
|
StorageClassPhysicalStorageBufferEXT = 5349,
|
||||||
StorageClassHitObjectAttributeNV = 5385,
|
|
||||||
StorageClassTaskPayloadWorkgroupEXT = 5402,
|
StorageClassTaskPayloadWorkgroupEXT = 5402,
|
||||||
StorageClassCodeSectionINTEL = 5605,
|
StorageClassCodeSectionINTEL = 5605,
|
||||||
StorageClassDeviceOnlyINTEL = 5936,
|
StorageClassDeviceOnlyINTEL = 5936,
|
||||||
@ -248,7 +238,6 @@ enum Dim {
|
|||||||
DimRect = 4,
|
DimRect = 4,
|
||||||
DimBuffer = 5,
|
DimBuffer = 5,
|
||||||
DimSubpassData = 6,
|
DimSubpassData = 6,
|
||||||
DimTileImageDataEXT = 4173,
|
|
||||||
DimMax = 0x7fffffff,
|
DimMax = 0x7fffffff,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -459,7 +448,6 @@ enum FunctionParameterAttribute {
|
|||||||
FunctionParameterAttributeNoCapture = 5,
|
FunctionParameterAttributeNoCapture = 5,
|
||||||
FunctionParameterAttributeNoWrite = 6,
|
FunctionParameterAttributeNoWrite = 6,
|
||||||
FunctionParameterAttributeNoReadWrite = 7,
|
FunctionParameterAttributeNoReadWrite = 7,
|
||||||
FunctionParameterAttributeRuntimeAlignedINTEL = 5940,
|
|
||||||
FunctionParameterAttributeMax = 0x7fffffff,
|
FunctionParameterAttributeMax = 0x7fffffff,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -513,8 +501,6 @@ enum Decoration {
|
|||||||
DecorationMaxByteOffsetId = 47,
|
DecorationMaxByteOffsetId = 47,
|
||||||
DecorationNoSignedWrap = 4469,
|
DecorationNoSignedWrap = 4469,
|
||||||
DecorationNoUnsignedWrap = 4470,
|
DecorationNoUnsignedWrap = 4470,
|
||||||
DecorationWeightTextureQCOM = 4487,
|
|
||||||
DecorationBlockMatchTextureQCOM = 4488,
|
|
||||||
DecorationExplicitInterpAMD = 4999,
|
DecorationExplicitInterpAMD = 4999,
|
||||||
DecorationOverrideCoverageNV = 5248,
|
DecorationOverrideCoverageNV = 5248,
|
||||||
DecorationPassthroughNV = 5250,
|
DecorationPassthroughNV = 5250,
|
||||||
@ -532,7 +518,6 @@ enum Decoration {
|
|||||||
DecorationRestrictPointerEXT = 5355,
|
DecorationRestrictPointerEXT = 5355,
|
||||||
DecorationAliasedPointer = 5356,
|
DecorationAliasedPointer = 5356,
|
||||||
DecorationAliasedPointerEXT = 5356,
|
DecorationAliasedPointerEXT = 5356,
|
||||||
DecorationHitObjectShaderRecordBufferNV = 5386,
|
|
||||||
DecorationBindlessSamplerNV = 5398,
|
DecorationBindlessSamplerNV = 5398,
|
||||||
DecorationBindlessImageNV = 5399,
|
DecorationBindlessImageNV = 5399,
|
||||||
DecorationBoundSamplerNV = 5400,
|
DecorationBoundSamplerNV = 5400,
|
||||||
@ -571,27 +556,12 @@ enum Decoration {
|
|||||||
DecorationPrefetchINTEL = 5902,
|
DecorationPrefetchINTEL = 5902,
|
||||||
DecorationStallEnableINTEL = 5905,
|
DecorationStallEnableINTEL = 5905,
|
||||||
DecorationFuseLoopsInFunctionINTEL = 5907,
|
DecorationFuseLoopsInFunctionINTEL = 5907,
|
||||||
DecorationMathOpDSPModeINTEL = 5909,
|
|
||||||
DecorationAliasScopeINTEL = 5914,
|
|
||||||
DecorationNoAliasINTEL = 5915,
|
|
||||||
DecorationInitiationIntervalINTEL = 5917,
|
|
||||||
DecorationMaxConcurrencyINTEL = 5918,
|
|
||||||
DecorationPipelineEnableINTEL = 5919,
|
|
||||||
DecorationBufferLocationINTEL = 5921,
|
DecorationBufferLocationINTEL = 5921,
|
||||||
DecorationIOPipeStorageINTEL = 5944,
|
DecorationIOPipeStorageINTEL = 5944,
|
||||||
DecorationFunctionFloatingPointModeINTEL = 6080,
|
DecorationFunctionFloatingPointModeINTEL = 6080,
|
||||||
DecorationSingleElementVectorINTEL = 6085,
|
DecorationSingleElementVectorINTEL = 6085,
|
||||||
DecorationVectorComputeCallableFunctionINTEL = 6087,
|
DecorationVectorComputeCallableFunctionINTEL = 6087,
|
||||||
DecorationMediaBlockIOINTEL = 6140,
|
DecorationMediaBlockIOINTEL = 6140,
|
||||||
DecorationConduitKernelArgumentINTEL = 6175,
|
|
||||||
DecorationRegisterMapKernelArgumentINTEL = 6176,
|
|
||||||
DecorationMMHostInterfaceAddressWidthINTEL = 6177,
|
|
||||||
DecorationMMHostInterfaceDataWidthINTEL = 6178,
|
|
||||||
DecorationMMHostInterfaceLatencyINTEL = 6179,
|
|
||||||
DecorationMMHostInterfaceReadWriteModeINTEL = 6180,
|
|
||||||
DecorationMMHostInterfaceMaxBurstINTEL = 6181,
|
|
||||||
DecorationMMHostInterfaceWaitRequestINTEL = 6182,
|
|
||||||
DecorationStableKernelArgumentINTEL = 6183,
|
|
||||||
DecorationMax = 0x7fffffff,
|
DecorationMax = 0x7fffffff,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -637,8 +607,8 @@ enum BuiltIn {
|
|||||||
BuiltInSubgroupLocalInvocationId = 41,
|
BuiltInSubgroupLocalInvocationId = 41,
|
||||||
BuiltInVertexIndex = 42,
|
BuiltInVertexIndex = 42,
|
||||||
BuiltInInstanceIndex = 43,
|
BuiltInInstanceIndex = 43,
|
||||||
BuiltInCoreIDARM = 4160,
|
|
||||||
BuiltInCoreCountARM = 4161,
|
BuiltInCoreCountARM = 4161,
|
||||||
|
BuiltInCoreIDARM = 4160,
|
||||||
BuiltInCoreMaxIDARM = 4162,
|
BuiltInCoreMaxIDARM = 4162,
|
||||||
BuiltInWarpIDARM = 4163,
|
BuiltInWarpIDARM = 4163,
|
||||||
BuiltInWarpMaxIDARM = 4164,
|
BuiltInWarpMaxIDARM = 4164,
|
||||||
@ -719,11 +689,6 @@ enum BuiltIn {
|
|||||||
BuiltInHitKindKHR = 5333,
|
BuiltInHitKindKHR = 5333,
|
||||||
BuiltInHitKindNV = 5333,
|
BuiltInHitKindNV = 5333,
|
||||||
BuiltInCurrentRayTimeNV = 5334,
|
BuiltInCurrentRayTimeNV = 5334,
|
||||||
BuiltInHitTriangleVertexPositionsKHR = 5335,
|
|
||||||
BuiltInHitMicroTriangleVertexPositionsNV = 5337,
|
|
||||||
BuiltInHitMicroTriangleVertexBarycentricsNV = 5344,
|
|
||||||
BuiltInHitKindFrontFacingMicroTriangleNV = 5405,
|
|
||||||
BuiltInHitKindBackFacingMicroTriangleNV = 5406,
|
|
||||||
BuiltInIncomingRayFlagsKHR = 5351,
|
BuiltInIncomingRayFlagsKHR = 5351,
|
||||||
BuiltInIncomingRayFlagsNV = 5351,
|
BuiltInIncomingRayFlagsNV = 5351,
|
||||||
BuiltInRayGeometryIndexKHR = 5352,
|
BuiltInRayGeometryIndexKHR = 5352,
|
||||||
@ -765,8 +730,6 @@ enum LoopControlShift {
|
|||||||
LoopControlMaxInterleavingINTELShift = 21,
|
LoopControlMaxInterleavingINTELShift = 21,
|
||||||
LoopControlSpeculatedIterationsINTELShift = 22,
|
LoopControlSpeculatedIterationsINTELShift = 22,
|
||||||
LoopControlNoFusionINTELShift = 23,
|
LoopControlNoFusionINTELShift = 23,
|
||||||
LoopControlLoopCountINTELShift = 24,
|
|
||||||
LoopControlMaxReinvocationDelayINTELShift = 25,
|
|
||||||
LoopControlMax = 0x7fffffff,
|
LoopControlMax = 0x7fffffff,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -789,8 +752,6 @@ enum LoopControlMask {
|
|||||||
LoopControlMaxInterleavingINTELMask = 0x00200000,
|
LoopControlMaxInterleavingINTELMask = 0x00200000,
|
||||||
LoopControlSpeculatedIterationsINTELMask = 0x00400000,
|
LoopControlSpeculatedIterationsINTELMask = 0x00400000,
|
||||||
LoopControlNoFusionINTELMask = 0x00800000,
|
LoopControlNoFusionINTELMask = 0x00800000,
|
||||||
LoopControlLoopCountINTELMask = 0x01000000,
|
|
||||||
LoopControlMaxReinvocationDelayINTELMask = 0x02000000,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FunctionControlShift {
|
enum FunctionControlShift {
|
||||||
@ -863,8 +824,6 @@ enum MemoryAccessShift {
|
|||||||
MemoryAccessMakePointerVisibleKHRShift = 4,
|
MemoryAccessMakePointerVisibleKHRShift = 4,
|
||||||
MemoryAccessNonPrivatePointerShift = 5,
|
MemoryAccessNonPrivatePointerShift = 5,
|
||||||
MemoryAccessNonPrivatePointerKHRShift = 5,
|
MemoryAccessNonPrivatePointerKHRShift = 5,
|
||||||
MemoryAccessAliasScopeINTELMaskShift = 16,
|
|
||||||
MemoryAccessNoAliasINTELMaskShift = 17,
|
|
||||||
MemoryAccessMax = 0x7fffffff,
|
MemoryAccessMax = 0x7fffffff,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -879,8 +838,6 @@ enum MemoryAccessMask {
|
|||||||
MemoryAccessMakePointerVisibleKHRMask = 0x00000010,
|
MemoryAccessMakePointerVisibleKHRMask = 0x00000010,
|
||||||
MemoryAccessNonPrivatePointerMask = 0x00000020,
|
MemoryAccessNonPrivatePointerMask = 0x00000020,
|
||||||
MemoryAccessNonPrivatePointerKHRMask = 0x00000020,
|
MemoryAccessNonPrivatePointerKHRMask = 0x00000020,
|
||||||
MemoryAccessAliasScopeINTELMaskMask = 0x00010000,
|
|
||||||
MemoryAccessNoAliasINTELMaskMask = 0x00020000,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Scope {
|
enum Scope {
|
||||||
@ -995,9 +952,6 @@ enum Capability {
|
|||||||
CapabilityShaderViewportIndex = 70,
|
CapabilityShaderViewportIndex = 70,
|
||||||
CapabilityUniformDecoration = 71,
|
CapabilityUniformDecoration = 71,
|
||||||
CapabilityCoreBuiltinsARM = 4165,
|
CapabilityCoreBuiltinsARM = 4165,
|
||||||
CapabilityTileImageColorReadAccessEXT = 4166,
|
|
||||||
CapabilityTileImageDepthReadAccessEXT = 4167,
|
|
||||||
CapabilityTileImageStencilReadAccessEXT = 4168,
|
|
||||||
CapabilityFragmentShadingRateKHR = 4422,
|
CapabilityFragmentShadingRateKHR = 4422,
|
||||||
CapabilitySubgroupBallotKHR = 4423,
|
CapabilitySubgroupBallotKHR = 4423,
|
||||||
CapabilityDrawParameters = 4427,
|
CapabilityDrawParameters = 4427,
|
||||||
@ -1029,9 +983,6 @@ enum Capability {
|
|||||||
CapabilityRayQueryKHR = 4472,
|
CapabilityRayQueryKHR = 4472,
|
||||||
CapabilityRayTraversalPrimitiveCullingKHR = 4478,
|
CapabilityRayTraversalPrimitiveCullingKHR = 4478,
|
||||||
CapabilityRayTracingKHR = 4479,
|
CapabilityRayTracingKHR = 4479,
|
||||||
CapabilityTextureSampleWeightedQCOM = 4484,
|
|
||||||
CapabilityTextureBoxFilterQCOM = 4485,
|
|
||||||
CapabilityTextureBlockMatchQCOM = 4486,
|
|
||||||
CapabilityFloat16ImageAMD = 5008,
|
CapabilityFloat16ImageAMD = 5008,
|
||||||
CapabilityImageGatherBiasLodAMD = 5009,
|
CapabilityImageGatherBiasLodAMD = 5009,
|
||||||
CapabilityFragmentMaskAMD = 5010,
|
CapabilityFragmentMaskAMD = 5010,
|
||||||
@ -1050,7 +1001,7 @@ enum Capability {
|
|||||||
CapabilityMeshShadingNV = 5266,
|
CapabilityMeshShadingNV = 5266,
|
||||||
CapabilityImageFootprintNV = 5282,
|
CapabilityImageFootprintNV = 5282,
|
||||||
CapabilityMeshShadingEXT = 5283,
|
CapabilityMeshShadingEXT = 5283,
|
||||||
CapabilityFragmentBarycentricKHR = 5284,
|
CapabilityFragmentBarycentricKHR = 5284,
|
||||||
CapabilityFragmentBarycentricNV = 5284,
|
CapabilityFragmentBarycentricNV = 5284,
|
||||||
CapabilityComputeDerivativeGroupQuadsNV = 5288,
|
CapabilityComputeDerivativeGroupQuadsNV = 5288,
|
||||||
CapabilityFragmentDensityEXT = 5291,
|
CapabilityFragmentDensityEXT = 5291,
|
||||||
@ -1080,7 +1031,6 @@ enum Capability {
|
|||||||
CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
||||||
CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
|
CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
|
||||||
CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
||||||
CapabilityRayTracingPositionFetchKHR = 5336,
|
|
||||||
CapabilityRayTracingNV = 5340,
|
CapabilityRayTracingNV = 5340,
|
||||||
CapabilityRayTracingMotionBlurNV = 5341,
|
CapabilityRayTracingMotionBlurNV = 5341,
|
||||||
CapabilityVulkanMemoryModel = 5345,
|
CapabilityVulkanMemoryModel = 5345,
|
||||||
@ -1098,12 +1048,7 @@ enum Capability {
|
|||||||
CapabilityFragmentShaderPixelInterlockEXT = 5378,
|
CapabilityFragmentShaderPixelInterlockEXT = 5378,
|
||||||
CapabilityDemoteToHelperInvocation = 5379,
|
CapabilityDemoteToHelperInvocation = 5379,
|
||||||
CapabilityDemoteToHelperInvocationEXT = 5379,
|
CapabilityDemoteToHelperInvocationEXT = 5379,
|
||||||
CapabilityDisplacementMicromapNV = 5380,
|
|
||||||
CapabilityRayTracingDisplacementMicromapNV = 5409,
|
|
||||||
CapabilityRayTracingOpacityMicromapEXT = 5381,
|
|
||||||
CapabilityShaderInvocationReorderNV = 5383,
|
|
||||||
CapabilityBindlessTextureNV = 5390,
|
CapabilityBindlessTextureNV = 5390,
|
||||||
CapabilityRayQueryPositionFetchKHR = 5391,
|
|
||||||
CapabilitySubgroupShuffleINTEL = 5568,
|
CapabilitySubgroupShuffleINTEL = 5568,
|
||||||
CapabilitySubgroupBufferBlockIOINTEL = 5569,
|
CapabilitySubgroupBufferBlockIOINTEL = 5569,
|
||||||
CapabilitySubgroupImageBlockIOINTEL = 5570,
|
CapabilitySubgroupImageBlockIOINTEL = 5570,
|
||||||
@ -1136,13 +1081,9 @@ enum Capability {
|
|||||||
CapabilityFPGAMemoryAccessesINTEL = 5898,
|
CapabilityFPGAMemoryAccessesINTEL = 5898,
|
||||||
CapabilityFPGAClusterAttributesINTEL = 5904,
|
CapabilityFPGAClusterAttributesINTEL = 5904,
|
||||||
CapabilityLoopFuseINTEL = 5906,
|
CapabilityLoopFuseINTEL = 5906,
|
||||||
CapabilityFPGADSPControlINTEL = 5908,
|
|
||||||
CapabilityMemoryAccessAliasingINTEL = 5910,
|
|
||||||
CapabilityFPGAInvocationPipeliningAttributesINTEL = 5916,
|
|
||||||
CapabilityFPGABufferLocationINTEL = 5920,
|
CapabilityFPGABufferLocationINTEL = 5920,
|
||||||
CapabilityArbitraryPrecisionFixedPointINTEL = 5922,
|
CapabilityArbitraryPrecisionFixedPointINTEL = 5922,
|
||||||
CapabilityUSMStorageClassesINTEL = 5935,
|
CapabilityUSMStorageClassesINTEL = 5935,
|
||||||
CapabilityRuntimeAlignedAttributeINTEL = 5939,
|
|
||||||
CapabilityIOPipesINTEL = 5943,
|
CapabilityIOPipesINTEL = 5943,
|
||||||
CapabilityBlockingPipesINTEL = 5945,
|
CapabilityBlockingPipesINTEL = 5945,
|
||||||
CapabilityFPGARegINTEL = 5948,
|
CapabilityFPGARegINTEL = 5948,
|
||||||
@ -1155,18 +1096,13 @@ enum Capability {
|
|||||||
CapabilityDotProduct = 6019,
|
CapabilityDotProduct = 6019,
|
||||||
CapabilityDotProductKHR = 6019,
|
CapabilityDotProductKHR = 6019,
|
||||||
CapabilityRayCullMaskKHR = 6020,
|
CapabilityRayCullMaskKHR = 6020,
|
||||||
CapabilityCooperativeMatrixKHR = 6022,
|
|
||||||
CapabilityBitInstructions = 6025,
|
CapabilityBitInstructions = 6025,
|
||||||
CapabilityGroupNonUniformRotateKHR = 6026,
|
|
||||||
CapabilityAtomicFloat32AddEXT = 6033,
|
CapabilityAtomicFloat32AddEXT = 6033,
|
||||||
CapabilityAtomicFloat64AddEXT = 6034,
|
CapabilityAtomicFloat64AddEXT = 6034,
|
||||||
CapabilityLongConstantCompositeINTEL = 6089,
|
CapabilityLongConstantCompositeINTEL = 6089,
|
||||||
CapabilityOptNoneINTEL = 6094,
|
CapabilityOptNoneINTEL = 6094,
|
||||||
CapabilityAtomicFloat16AddEXT = 6095,
|
CapabilityAtomicFloat16AddEXT = 6095,
|
||||||
CapabilityDebugInfoModuleINTEL = 6114,
|
CapabilityDebugInfoModuleINTEL = 6114,
|
||||||
CapabilitySplitBarrierINTEL = 6141,
|
|
||||||
CapabilityFPGAArgumentInterfacesINTEL = 6174,
|
|
||||||
CapabilityGroupUniformArithmeticKHR = 6400,
|
|
||||||
CapabilityMax = 0x7fffffff,
|
CapabilityMax = 0x7fffffff,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1181,7 +1117,6 @@ enum RayFlagsShift {
|
|||||||
RayFlagsCullNoOpaqueKHRShift = 7,
|
RayFlagsCullNoOpaqueKHRShift = 7,
|
||||||
RayFlagsSkipTrianglesKHRShift = 8,
|
RayFlagsSkipTrianglesKHRShift = 8,
|
||||||
RayFlagsSkipAABBsKHRShift = 9,
|
RayFlagsSkipAABBsKHRShift = 9,
|
||||||
RayFlagsForceOpacityMicromap2StateEXTShift = 10,
|
|
||||||
RayFlagsMax = 0x7fffffff,
|
RayFlagsMax = 0x7fffffff,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1197,7 +1132,6 @@ enum RayFlagsMask {
|
|||||||
RayFlagsCullNoOpaqueKHRMask = 0x00000080,
|
RayFlagsCullNoOpaqueKHRMask = 0x00000080,
|
||||||
RayFlagsSkipTrianglesKHRMask = 0x00000100,
|
RayFlagsSkipTrianglesKHRMask = 0x00000100,
|
||||||
RayFlagsSkipAABBsKHRMask = 0x00000200,
|
RayFlagsSkipAABBsKHRMask = 0x00000200,
|
||||||
RayFlagsForceOpacityMicromap2StateEXTMask = 0x00000400,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum RayQueryIntersection {
|
enum RayQueryIntersection {
|
||||||
@ -1273,37 +1207,6 @@ enum PackedVectorFormat {
|
|||||||
PackedVectorFormatMax = 0x7fffffff,
|
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 {
|
enum Op {
|
||||||
OpNop = 0,
|
OpNop = 0,
|
||||||
OpUndef = 1,
|
OpUndef = 1,
|
||||||
@ -1649,16 +1552,12 @@ enum Op {
|
|||||||
OpPtrEqual = 401,
|
OpPtrEqual = 401,
|
||||||
OpPtrNotEqual = 402,
|
OpPtrNotEqual = 402,
|
||||||
OpPtrDiff = 403,
|
OpPtrDiff = 403,
|
||||||
OpColorAttachmentReadEXT = 4160,
|
|
||||||
OpDepthAttachmentReadEXT = 4161,
|
|
||||||
OpStencilAttachmentReadEXT = 4162,
|
|
||||||
OpTerminateInvocation = 4416,
|
OpTerminateInvocation = 4416,
|
||||||
OpSubgroupBallotKHR = 4421,
|
OpSubgroupBallotKHR = 4421,
|
||||||
OpSubgroupFirstInvocationKHR = 4422,
|
OpSubgroupFirstInvocationKHR = 4422,
|
||||||
OpSubgroupAllKHR = 4428,
|
OpSubgroupAllKHR = 4428,
|
||||||
OpSubgroupAnyKHR = 4429,
|
OpSubgroupAnyKHR = 4429,
|
||||||
OpSubgroupAllEqualKHR = 4430,
|
OpSubgroupAllEqualKHR = 4430,
|
||||||
OpGroupNonUniformRotateKHR = 4431,
|
|
||||||
OpSubgroupReadInvocationKHR = 4432,
|
OpSubgroupReadInvocationKHR = 4432,
|
||||||
OpTraceRayKHR = 4445,
|
OpTraceRayKHR = 4445,
|
||||||
OpExecuteCallableKHR = 4446,
|
OpExecuteCallableKHR = 4446,
|
||||||
@ -1677,11 +1576,6 @@ enum Op {
|
|||||||
OpUDotAccSatKHR = 4454,
|
OpUDotAccSatKHR = 4454,
|
||||||
OpSUDotAccSat = 4455,
|
OpSUDotAccSat = 4455,
|
||||||
OpSUDotAccSatKHR = 4455,
|
OpSUDotAccSatKHR = 4455,
|
||||||
OpTypeCooperativeMatrixKHR = 4456,
|
|
||||||
OpCooperativeMatrixLoadKHR = 4457,
|
|
||||||
OpCooperativeMatrixStoreKHR = 4458,
|
|
||||||
OpCooperativeMatrixMulAddKHR = 4459,
|
|
||||||
OpCooperativeMatrixLengthKHR = 4460,
|
|
||||||
OpTypeRayQueryKHR = 4472,
|
OpTypeRayQueryKHR = 4472,
|
||||||
OpRayQueryInitializeKHR = 4473,
|
OpRayQueryInitializeKHR = 4473,
|
||||||
OpRayQueryTerminateKHR = 4474,
|
OpRayQueryTerminateKHR = 4474,
|
||||||
@ -1689,10 +1583,6 @@ enum Op {
|
|||||||
OpRayQueryConfirmIntersectionKHR = 4476,
|
OpRayQueryConfirmIntersectionKHR = 4476,
|
||||||
OpRayQueryProceedKHR = 4477,
|
OpRayQueryProceedKHR = 4477,
|
||||||
OpRayQueryGetIntersectionTypeKHR = 4479,
|
OpRayQueryGetIntersectionTypeKHR = 4479,
|
||||||
OpImageSampleWeightedQCOM = 4480,
|
|
||||||
OpImageBoxFilterQCOM = 4481,
|
|
||||||
OpImageBlockMatchSSDQCOM = 4482,
|
|
||||||
OpImageBlockMatchSADQCOM = 4483,
|
|
||||||
OpGroupIAddNonUniformAMD = 5000,
|
OpGroupIAddNonUniformAMD = 5000,
|
||||||
OpGroupFAddNonUniformAMD = 5001,
|
OpGroupFAddNonUniformAMD = 5001,
|
||||||
OpGroupFMinNonUniformAMD = 5002,
|
OpGroupFMinNonUniformAMD = 5002,
|
||||||
@ -1704,46 +1594,11 @@ enum Op {
|
|||||||
OpFragmentMaskFetchAMD = 5011,
|
OpFragmentMaskFetchAMD = 5011,
|
||||||
OpFragmentFetchAMD = 5012,
|
OpFragmentFetchAMD = 5012,
|
||||||
OpReadClockKHR = 5056,
|
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,
|
OpImageSampleFootprintNV = 5283,
|
||||||
OpEmitMeshTasksEXT = 5294,
|
OpEmitMeshTasksEXT = 5294,
|
||||||
OpSetMeshOutputsEXT = 5295,
|
OpSetMeshOutputsEXT = 5295,
|
||||||
OpGroupNonUniformPartitionNV = 5296,
|
OpGroupNonUniformPartitionNV = 5296,
|
||||||
OpWritePackedPrimitiveIndices4x8NV = 5299,
|
OpWritePackedPrimitiveIndices4x8NV = 5299,
|
||||||
OpFetchMicroTriangleVertexPositionNV = 5300,
|
|
||||||
OpFetchMicroTriangleVertexBarycentricNV = 5301,
|
|
||||||
OpReportIntersectionKHR = 5334,
|
OpReportIntersectionKHR = 5334,
|
||||||
OpReportIntersectionNV = 5334,
|
OpReportIntersectionNV = 5334,
|
||||||
OpIgnoreIntersectionNV = 5335,
|
OpIgnoreIntersectionNV = 5335,
|
||||||
@ -1751,7 +1606,6 @@ enum Op {
|
|||||||
OpTraceNV = 5337,
|
OpTraceNV = 5337,
|
||||||
OpTraceMotionNV = 5338,
|
OpTraceMotionNV = 5338,
|
||||||
OpTraceRayMotionNV = 5339,
|
OpTraceRayMotionNV = 5339,
|
||||||
OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
|
|
||||||
OpTypeAccelerationStructureKHR = 5341,
|
OpTypeAccelerationStructureKHR = 5341,
|
||||||
OpTypeAccelerationStructureNV = 5341,
|
OpTypeAccelerationStructureNV = 5341,
|
||||||
OpExecuteCallableNV = 5344,
|
OpExecuteCallableNV = 5344,
|
||||||
@ -1972,9 +1826,6 @@ enum Op {
|
|||||||
OpArbitraryFloatPowRINTEL = 5881,
|
OpArbitraryFloatPowRINTEL = 5881,
|
||||||
OpArbitraryFloatPowNINTEL = 5882,
|
OpArbitraryFloatPowNINTEL = 5882,
|
||||||
OpLoopControlINTEL = 5887,
|
OpLoopControlINTEL = 5887,
|
||||||
OpAliasDomainDeclINTEL = 5911,
|
|
||||||
OpAliasScopeDeclINTEL = 5912,
|
|
||||||
OpAliasScopeListDeclINTEL = 5913,
|
|
||||||
OpFixedSqrtINTEL = 5923,
|
OpFixedSqrtINTEL = 5923,
|
||||||
OpFixedRecipINTEL = 5924,
|
OpFixedRecipINTEL = 5924,
|
||||||
OpFixedRsqrtINTEL = 5925,
|
OpFixedRsqrtINTEL = 5925,
|
||||||
@ -2013,23 +1864,10 @@ enum Op {
|
|||||||
OpTypeStructContinuedINTEL = 6090,
|
OpTypeStructContinuedINTEL = 6090,
|
||||||
OpConstantCompositeContinuedINTEL = 6091,
|
OpConstantCompositeContinuedINTEL = 6091,
|
||||||
OpSpecConstantCompositeContinuedINTEL = 6092,
|
OpSpecConstantCompositeContinuedINTEL = 6092,
|
||||||
OpControlBarrierArriveINTEL = 6142,
|
|
||||||
OpControlBarrierWaitINTEL = 6143,
|
|
||||||
OpGroupIMulKHR = 6401,
|
|
||||||
OpGroupFMulKHR = 6402,
|
|
||||||
OpGroupBitwiseAndKHR = 6403,
|
|
||||||
OpGroupBitwiseOrKHR = 6404,
|
|
||||||
OpGroupBitwiseXorKHR = 6405,
|
|
||||||
OpGroupLogicalAndKHR = 6406,
|
|
||||||
OpGroupLogicalOrKHR = 6407,
|
|
||||||
OpGroupLogicalXorKHR = 6408,
|
|
||||||
OpMax = 0x7fffffff,
|
OpMax = 0x7fffffff,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef SPV_ENABLE_UTILITY_CODE
|
#ifdef SPV_ENABLE_UTILITY_CODE
|
||||||
#ifndef __cplusplus
|
|
||||||
#include <stdbool.h>
|
|
||||||
#endif
|
|
||||||
inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||||
*hasResult = *hasResultType = false;
|
*hasResult = *hasResultType = false;
|
||||||
switch (opcode) {
|
switch (opcode) {
|
||||||
@ -2378,16 +2216,12 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
|||||||
case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
|
case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
|
case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpPtrDiff: *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 OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
|
||||||
case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
|
case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
|
case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
|
case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpSubgroupAllEqualKHR: *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 OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break;
|
case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break;
|
||||||
case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break;
|
case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break;
|
||||||
@ -2400,11 +2234,6 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
|||||||
case OpSDotAccSat: *hasResult = true; *hasResultType = true; break;
|
case OpSDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpUDotAccSat: *hasResult = true; *hasResultType = true; break;
|
case OpUDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpSUDotAccSat: *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 OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
|
||||||
case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
|
case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
|
||||||
case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
|
case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
|
||||||
@ -2412,10 +2241,6 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
|||||||
case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
|
case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
|
||||||
case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
|
case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpRayQueryGetIntersectionTypeKHR: *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 OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||||
@ -2427,43 +2252,10 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
|||||||
case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
|
case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
|
case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpReadClockKHR: *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 OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
|
||||||
|
case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpEmitMeshTasksEXT: *hasResult = false; *hasResultType = false; break;
|
case OpEmitMeshTasksEXT: *hasResult = false; *hasResultType = false; break;
|
||||||
case OpSetMeshOutputsEXT: *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 OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
|
||||||
case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
|
case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
|
case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
|
||||||
@ -2471,7 +2263,6 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
|||||||
case OpTraceNV: *hasResult = false; *hasResultType = false; break;
|
case OpTraceNV: *hasResult = false; *hasResultType = false; break;
|
||||||
case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
|
case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||||
case OpTraceRayMotionNV: *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 OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
|
||||||
case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
|
case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
|
||||||
case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
|
case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
|
||||||
@ -2688,9 +2479,6 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
|||||||
case OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break;
|
case OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break;
|
case OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; 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 OpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break;
|
case OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break;
|
||||||
case OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break;
|
case OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break;
|
||||||
@ -2729,68 +2517,23 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
|||||||
case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||||
case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||||
case OpSpecConstantCompositeContinuedINTEL: *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 */
|
#endif /* SPV_ENABLE_UTILITY_CODE */
|
||||||
|
|
||||||
// Overload bitwise operators for mask bit combining
|
// Overload operator| 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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
|
} // end namespace spv
|
||||||
|
|
||||||
#endif // #ifndef spirv_HPP
|
#endif // #ifndef spirv_HPP
|
||||||
|
|
||||||
|
|||||||
@ -97,8 +97,6 @@ public:
|
|||||||
explicit Instruction(Op opCode) : resultId(NoResult), typeId(NoType), opCode(opCode), block(nullptr) { }
|
explicit Instruction(Op opCode) : resultId(NoResult), typeId(NoType), opCode(opCode), block(nullptr) { }
|
||||||
virtual ~Instruction() {}
|
virtual ~Instruction() {}
|
||||||
void addIdOperand(Id id) {
|
void addIdOperand(Id id) {
|
||||||
// ids can't be 0
|
|
||||||
assert(id);
|
|
||||||
operands.push_back(id);
|
operands.push_back(id);
|
||||||
idOperand.push_back(true);
|
idOperand.push_back(true);
|
||||||
}
|
}
|
||||||
@ -323,7 +321,7 @@ void inReadableOrder(Block* root, std::function<void(Block*, ReachReason, Block*
|
|||||||
|
|
||||||
class Function {
|
class Function {
|
||||||
public:
|
public:
|
||||||
Function(Id id, Id resultType, Id functionType, Id firstParam, LinkageType linkage, const std::string& name, Module& parent);
|
Function(Id id, Id resultType, Id functionType, Id firstParam, Module& parent);
|
||||||
virtual ~Function()
|
virtual ~Function()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < (int)parameterInstructions.size(); ++i)
|
for (int i = 0; i < (int)parameterInstructions.size(); ++i)
|
||||||
@ -402,9 +400,6 @@ public:
|
|||||||
end.dump(out);
|
end.dump(out);
|
||||||
}
|
}
|
||||||
|
|
||||||
LinkageType getLinkType() const { return linkType; }
|
|
||||||
const char* getExportName() const { return exportName.c_str(); }
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Function(const Function&);
|
Function(const Function&);
|
||||||
Function& operator=(Function&);
|
Function& operator=(Function&);
|
||||||
@ -417,8 +412,6 @@ protected:
|
|||||||
bool implicitThis; // true if this is a member function expecting to be passed a 'this' as the first argument
|
bool implicitThis; // true if this is a member function expecting to be passed a 'this' as the first argument
|
||||||
bool reducedPrecisionReturn;
|
bool reducedPrecisionReturn;
|
||||||
std::set<int> reducedPrecisionParams; // list of parameter indexes that need a relaxed precision arg
|
std::set<int> reducedPrecisionParams; // list of parameter indexes that need a relaxed precision arg
|
||||||
LinkageType linkType;
|
|
||||||
std::string exportName;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -478,11 +471,10 @@ protected:
|
|||||||
// Add both
|
// Add both
|
||||||
// - the OpFunction instruction
|
// - the OpFunction instruction
|
||||||
// - all the OpFunctionParameter instructions
|
// - all the OpFunctionParameter instructions
|
||||||
__inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, LinkageType linkage, const std::string& name, Module& parent)
|
__inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, Module& parent)
|
||||||
: parent(parent), lineInstruction(nullptr),
|
: parent(parent), lineInstruction(nullptr),
|
||||||
functionInstruction(id, resultType, OpFunction), implicitThis(false),
|
functionInstruction(id, resultType, OpFunction), implicitThis(false),
|
||||||
reducedPrecisionReturn(false),
|
reducedPrecisionReturn(false)
|
||||||
linkType(linkage)
|
|
||||||
{
|
{
|
||||||
// OpFunction
|
// OpFunction
|
||||||
functionInstruction.addImmediateOperand(FunctionControlMaskNone);
|
functionInstruction.addImmediateOperand(FunctionControlMaskNone);
|
||||||
@ -498,11 +490,6 @@ __inline Function::Function(Id id, Id resultType, Id functionType, Id firstParam
|
|||||||
parent.mapInstruction(param);
|
parent.mapInstruction(param);
|
||||||
parameterInstructions.push_back(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)
|
__inline void Function::addLocalVariable(std::unique_ptr<Instruction> inst)
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# Copyright (C) 2020-2023 The Khronos Group Inc.
|
# Copyright (C) 2020 The Khronos Group Inc.
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@ -31,7 +31,7 @@
|
|||||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
# POSSIBILITY OF SUCH DAMAGE.
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
find_host_package(Python3 REQUIRED)
|
find_host_package(PythonInterp 3 REQUIRED)
|
||||||
|
|
||||||
set(GLSLANG_INTRINSIC_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/glsl_intrinsic_header.h")
|
set(GLSLANG_INTRINSIC_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/glsl_intrinsic_header.h")
|
||||||
set(GLSLANG_INTRINSIC_PY "${CMAKE_CURRENT_SOURCE_DIR}/../gen_extension_headers.py")
|
set(GLSLANG_INTRINSIC_PY "${CMAKE_CURRENT_SOURCE_DIR}/../gen_extension_headers.py")
|
||||||
@ -39,40 +39,54 @@ set(GLSLANG_INTRINSIC_HEADER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../glslang/Extensi
|
|||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${GLSLANG_INTRINSIC_H}
|
OUTPUT ${GLSLANG_INTRINSIC_H}
|
||||||
COMMAND Python3::Interpreter "${GLSLANG_INTRINSIC_PY}"
|
COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_INTRINSIC_PY}"
|
||||||
"-i" ${GLSLANG_INTRINSIC_HEADER_DIR}
|
"-i" ${GLSLANG_INTRINSIC_HEADER_DIR}
|
||||||
"-o" ${GLSLANG_INTRINSIC_H}
|
"-o" ${GLSLANG_INTRINSIC_H}
|
||||||
DEPENDS ${GLSLANG_INTRINSIC_PY}
|
DEPENDS ${GLSLANG_INTRINSIC_PY}
|
||||||
COMMENT "Generating ${GLSLANG_INTRINSIC_H}")
|
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})
|
set(SOURCES StandAlone.cpp DirStackFileIncluder.h ${GLSLANG_INTRINSIC_H})
|
||||||
|
|
||||||
add_executable(glslang-standalone ${SOURCES})
|
add_executable(glslangValidator ${SOURCES})
|
||||||
set_property(TARGET glslang-standalone PROPERTY FOLDER tools)
|
set_property(TARGET glslangValidator PROPERTY FOLDER tools)
|
||||||
set_property(TARGET glslang-standalone PROPERTY OUTPUT_NAME glslang)
|
glslang_set_link_args(glslangValidator)
|
||||||
glslang_set_link_args(glslang-standalone)
|
|
||||||
|
|
||||||
set(LIBRARIES
|
set(LIBRARIES
|
||||||
glslang
|
glslang
|
||||||
OSDependent
|
|
||||||
SPIRV
|
SPIRV
|
||||||
glslang-default-resource-limits)
|
glslang-default-resource-limits)
|
||||||
|
|
||||||
|
if(ENABLE_SPVREMAPPER)
|
||||||
|
set(LIBRARIES ${LIBRARIES} SPVRemapper)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(LIBRARIES ${LIBRARIES} psapi)
|
set(LIBRARIES ${LIBRARIES} psapi)
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
if(NOT ANDROID AND NOT QNX)
|
if(NOT ANDROID)
|
||||||
set(LIBRARIES ${LIBRARIES} pthread)
|
set(LIBRARIES ${LIBRARIES} pthread)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_link_libraries(glslang-standalone ${LIBRARIES})
|
target_link_libraries(glslangValidator ${LIBRARIES})
|
||||||
target_include_directories(glslang-standalone PUBLIC
|
target_include_directories(glslangValidator PUBLIC
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
|
||||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
|
||||||
|
|
||||||
if(ENABLE_OPT)
|
if(ENABLE_OPT)
|
||||||
target_include_directories(glslang-standalone
|
target_include_directories(glslangValidator
|
||||||
PRIVATE ${spirv-tools_SOURCE_DIR}/include
|
PRIVATE ${spirv-tools_SOURCE_DIR}/include
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
@ -82,7 +96,7 @@ if(ENABLE_SPVREMAPPER)
|
|||||||
add_executable(spirv-remap ${REMAPPER_SOURCES})
|
add_executable(spirv-remap ${REMAPPER_SOURCES})
|
||||||
set_property(TARGET spirv-remap PROPERTY FOLDER tools)
|
set_property(TARGET spirv-remap PROPERTY FOLDER tools)
|
||||||
glslang_set_link_args(spirv-remap)
|
glslang_set_link_args(spirv-remap)
|
||||||
target_link_libraries(spirv-remap SPVRemapper ${LIBRARIES})
|
target_link_libraries(spirv-remap ${LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
@ -90,35 +104,19 @@ if(WIN32)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ENABLE_GLSLANG_INSTALL)
|
if(ENABLE_GLSLANG_INSTALL)
|
||||||
install(TARGETS glslang-standalone EXPORT glslang-targets)
|
install(TARGETS glslangValidator EXPORT glslang-targets)
|
||||||
|
|
||||||
# Backward compatibility
|
# Backward compatibility
|
||||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-standaloneTargets.cmake" "
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangValidatorTargets.cmake" "
|
||||||
message(WARNING \"Using `glslang-standaloneTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
message(WARNING \"Using `glslangValidatorTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
||||||
|
|
||||||
if (NOT TARGET glslang::glslang-standalone)
|
if (NOT TARGET glslang::glslangValidator)
|
||||||
include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(glslang-standalone ALIAS glslang::glslang-standalone)
|
add_library(glslangValidator ALIAS glslang::glslangValidator)
|
||||||
")
|
")
|
||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslang-standaloneTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangValidatorTargets.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)
|
if(ENABLE_SPVREMAPPER)
|
||||||
install(TARGETS spirv-remap EXPORT glslang-targets)
|
install(TARGETS spirv-remap EXPORT glslang-targets)
|
||||||
@ -128,7 +126,7 @@ if(ENABLE_GLSLANG_INSTALL)
|
|||||||
message(WARNING \"Using `spirv-remapTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
message(WARNING \"Using `spirv-remapTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
|
||||||
|
|
||||||
if (NOT TARGET glslang::spirv-remap)
|
if (NOT TARGET glslang::spirv-remap)
|
||||||
include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(spirv-remap ALIAS glslang::spirv-remap)
|
add_library(spirv-remap ALIAS glslang::spirv-remap)
|
||||||
@ -136,4 +134,18 @@ if(ENABLE_GLSLANG_INSTALL)
|
|||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/spirv-remapTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/spirv-remapTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
||||||
endif()
|
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()
|
endif()
|
||||||
|
|||||||
@ -505,8 +505,6 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config)
|
|||||||
resources->maxTaskWorkGroupSizeZ_EXT = value;
|
resources->maxTaskWorkGroupSizeZ_EXT = value;
|
||||||
else if (tokenStr == "MaxMeshViewCountEXT")
|
else if (tokenStr == "MaxMeshViewCountEXT")
|
||||||
resources->maxMeshViewCountEXT = value;
|
resources->maxMeshViewCountEXT = value;
|
||||||
else if (tokenStr == "MaxDualSourceDrawBuffersEXT")
|
|
||||||
resources->maxDualSourceDrawBuffersEXT = value;
|
|
||||||
else if (tokenStr == "nonInductiveForLoops")
|
else if (tokenStr == "nonInductiveForLoops")
|
||||||
resources->limits.nonInductiveForLoops = (value != 0);
|
resources->limits.nonInductiveForLoops = (value != 0);
|
||||||
else if (tokenStr == "whileLoops")
|
else if (tokenStr == "whileLoops")
|
||||||
@ -51,16 +51,15 @@
|
|||||||
#include "../SPIRV/doc.h"
|
#include "../SPIRV/doc.h"
|
||||||
#include "../SPIRV/disassemble.h"
|
#include "../SPIRV/disassemble.h"
|
||||||
|
|
||||||
#include <array>
|
#include <cstring>
|
||||||
#include <atomic>
|
#include <cstdlib>
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdlib>
|
#include <array>
|
||||||
#include <cstring>
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <set>
|
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
#include "../glslang/OSDependent/osinclude.h"
|
#include "../glslang/OSDependent/osinclude.h"
|
||||||
|
|
||||||
@ -74,41 +73,40 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Command-line options
|
// Command-line options
|
||||||
enum TOptions : uint64_t {
|
enum TOptions {
|
||||||
EOptionNone = 0,
|
EOptionNone = 0,
|
||||||
EOptionIntermediate = (1ull << 0),
|
EOptionIntermediate = (1 << 0),
|
||||||
EOptionSuppressInfolog = (1ull << 1),
|
EOptionSuppressInfolog = (1 << 1),
|
||||||
EOptionMemoryLeakMode = (1ull << 2),
|
EOptionMemoryLeakMode = (1 << 2),
|
||||||
EOptionRelaxedErrors = (1ull << 3),
|
EOptionRelaxedErrors = (1 << 3),
|
||||||
EOptionGiveWarnings = (1ull << 4),
|
EOptionGiveWarnings = (1 << 4),
|
||||||
EOptionLinkProgram = (1ull << 5),
|
EOptionLinkProgram = (1 << 5),
|
||||||
EOptionMultiThreaded = (1ull << 6),
|
EOptionMultiThreaded = (1 << 6),
|
||||||
EOptionDumpConfig = (1ull << 7),
|
EOptionDumpConfig = (1 << 7),
|
||||||
EOptionDumpReflection = (1ull << 8),
|
EOptionDumpReflection = (1 << 8),
|
||||||
EOptionSuppressWarnings = (1ull << 9),
|
EOptionSuppressWarnings = (1 << 9),
|
||||||
EOptionDumpVersions = (1ull << 10),
|
EOptionDumpVersions = (1 << 10),
|
||||||
EOptionSpv = (1ull << 11),
|
EOptionSpv = (1 << 11),
|
||||||
EOptionHumanReadableSpv = (1ull << 12),
|
EOptionHumanReadableSpv = (1 << 12),
|
||||||
EOptionVulkanRules = (1ull << 13),
|
EOptionVulkanRules = (1 << 13),
|
||||||
EOptionDefaultDesktop = (1ull << 14),
|
EOptionDefaultDesktop = (1 << 14),
|
||||||
EOptionOutputPreprocessed = (1ull << 15),
|
EOptionOutputPreprocessed = (1 << 15),
|
||||||
EOptionOutputHexadecimal = (1ull << 16),
|
EOptionOutputHexadecimal = (1 << 16),
|
||||||
EOptionReadHlsl = (1ull << 17),
|
EOptionReadHlsl = (1 << 17),
|
||||||
EOptionCascadingErrors = (1ull << 18),
|
EOptionCascadingErrors = (1 << 18),
|
||||||
EOptionAutoMapBindings = (1ull << 19),
|
EOptionAutoMapBindings = (1 << 19),
|
||||||
EOptionFlattenUniformArrays = (1ull << 20),
|
EOptionFlattenUniformArrays = (1 << 20),
|
||||||
EOptionNoStorageFormat = (1ull << 21),
|
EOptionNoStorageFormat = (1 << 21),
|
||||||
EOptionKeepUncalled = (1ull << 22),
|
EOptionKeepUncalled = (1 << 22),
|
||||||
EOptionHlslOffsets = (1ull << 23),
|
EOptionHlslOffsets = (1 << 23),
|
||||||
EOptionHlslIoMapping = (1ull << 24),
|
EOptionHlslIoMapping = (1 << 24),
|
||||||
EOptionAutoMapLocations = (1ull << 25),
|
EOptionAutoMapLocations = (1 << 25),
|
||||||
EOptionDebug = (1ull << 26),
|
EOptionDebug = (1 << 26),
|
||||||
EOptionStdin = (1ull << 27),
|
EOptionStdin = (1 << 27),
|
||||||
EOptionOptimizeDisable = (1ull << 28),
|
EOptionOptimizeDisable = (1 << 28),
|
||||||
EOptionOptimizeSize = (1ull << 29),
|
EOptionOptimizeSize = (1 << 29),
|
||||||
EOptionInvertY = (1ull << 30),
|
EOptionInvertY = (1 << 30),
|
||||||
EOptionDumpBareVersion = (1ull << 31),
|
EOptionDumpBareVersion = (1 << 31),
|
||||||
EOptionCompileOnly = (1ull << 32),
|
|
||||||
};
|
};
|
||||||
bool targetHlslFunctionality1 = false;
|
bool targetHlslFunctionality1 = false;
|
||||||
bool SpvToolsDisassembler = false;
|
bool SpvToolsDisassembler = false;
|
||||||
@ -145,9 +143,8 @@ void FreeFileData(char* data);
|
|||||||
void InfoLogMsg(const char* msg, const char* name, const int num);
|
void InfoLogMsg(const char* msg, const char* name, const int num);
|
||||||
|
|
||||||
// Globally track if any compile or link failure.
|
// Globally track if any compile or link failure.
|
||||||
std::atomic<int8_t> CompileFailed{0};
|
bool CompileFailed = false;
|
||||||
std::atomic<int8_t> LinkFailed{0};
|
bool LinkFailed = false;
|
||||||
std::atomic<int8_t> CompileOrLinkFailed{0};
|
|
||||||
|
|
||||||
// array of unique places to leave the shader names and infologs for the asynchronous compiles
|
// array of unique places to leave the shader names and infologs for the asynchronous compiles
|
||||||
std::vector<std::unique_ptr<glslang::TWorkItem>> WorkItems;
|
std::vector<std::unique_ptr<glslang::TWorkItem>> WorkItems;
|
||||||
@ -161,15 +158,17 @@ void ProcessConfigFile()
|
|||||||
{
|
{
|
||||||
if (ConfigFile.size() == 0)
|
if (ConfigFile.size() == 0)
|
||||||
*GetResources() = *GetDefaultResources();
|
*GetResources() = *GetDefaultResources();
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
else {
|
else {
|
||||||
char* configString = ReadFileData(ConfigFile.c_str());
|
char* configString = ReadFileData(ConfigFile.c_str());
|
||||||
DecodeResourceLimits(GetResources(), configString);
|
DecodeResourceLimits(GetResources(), configString);
|
||||||
FreeFileData(configString);
|
FreeFileData(configString);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int ReflectOptions = EShReflectionDefault;
|
int ReflectOptions = EShReflectionDefault;
|
||||||
std::underlying_type_t<TOptions> Options = EOptionNone;
|
int Options = 0;
|
||||||
const char* ExecutableName = nullptr;
|
const char* ExecutableName = nullptr;
|
||||||
const char* binaryFileName = nullptr;
|
const char* binaryFileName = nullptr;
|
||||||
const char* depencyFileName = nullptr;
|
const char* depencyFileName = nullptr;
|
||||||
@ -259,17 +258,6 @@ public:
|
|||||||
text.append("\n");
|
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:
|
protected:
|
||||||
void fixLine(std::string& line)
|
void fixLine(std::string& line)
|
||||||
{
|
{
|
||||||
@ -739,13 +727,6 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
|||||||
} else if (lowerword == "no-storage-format" || // synonyms
|
} else if (lowerword == "no-storage-format" || // synonyms
|
||||||
lowerword == "nsf") {
|
lowerword == "nsf") {
|
||||||
Options |= EOptionNoStorageFormat;
|
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") {
|
} else if (lowerword == "relaxed-errors") {
|
||||||
Options |= EOptionRelaxedErrors;
|
Options |= EOptionRelaxedErrors;
|
||||||
} else if (lowerword == "reflect-strict-array-suffix") {
|
} else if (lowerword == "reflect-strict-array-suffix") {
|
||||||
@ -892,8 +873,6 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
|||||||
bumpArg();
|
bumpArg();
|
||||||
} else if (lowerword == "version") {
|
} else if (lowerword == "version") {
|
||||||
Options |= EOptionDumpVersions;
|
Options |= EOptionDumpVersions;
|
||||||
} else if (lowerword == "no-link") {
|
|
||||||
Options |= EOptionCompileOnly;
|
|
||||||
} else if (lowerword == "help") {
|
} else if (lowerword == "help") {
|
||||||
usage();
|
usage();
|
||||||
break;
|
break;
|
||||||
@ -947,9 +926,6 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
|||||||
else
|
else
|
||||||
Error("unknown -O option");
|
Error("unknown -O option");
|
||||||
break;
|
break;
|
||||||
case 'P':
|
|
||||||
UserPreamble.addText(getStringOperand("-P<text>"));
|
|
||||||
break;
|
|
||||||
case 'R':
|
case 'R':
|
||||||
VulkanRulesRelaxed = true;
|
VulkanRulesRelaxed = true;
|
||||||
break;
|
break;
|
||||||
@ -1168,7 +1144,6 @@ void CompileShaders(glslang::TWorklist& worklist)
|
|||||||
if (Options & EOptionDebug)
|
if (Options & EOptionDebug)
|
||||||
Error("cannot generate debug information unless linking to generate code");
|
Error("cannot generate debug information unless linking to generate code");
|
||||||
|
|
||||||
// NOTE: TWorkList::remove is thread-safe
|
|
||||||
glslang::TWorkItem* workItem;
|
glslang::TWorkItem* workItem;
|
||||||
if (Options & EOptionStdin) {
|
if (Options & EOptionStdin) {
|
||||||
if (worklist.remove(workItem)) {
|
if (worklist.remove(workItem)) {
|
||||||
@ -1316,7 +1291,6 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
|||||||
//
|
//
|
||||||
|
|
||||||
glslang::TProgram& program = *new glslang::TProgram;
|
glslang::TProgram& program = *new glslang::TProgram;
|
||||||
const bool compileOnly = (Options & EOptionCompileOnly) != 0;
|
|
||||||
for (auto it = compUnits.cbegin(); it != compUnits.cend(); ++it) {
|
for (auto it = compUnits.cbegin(); it != compUnits.cend(); ++it) {
|
||||||
const auto &compUnit = *it;
|
const auto &compUnit = *it;
|
||||||
for (int i = 0; i < compUnit.count; i++) {
|
for (int i = 0; i < compUnit.count; i++) {
|
||||||
@ -1333,9 +1307,6 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
|||||||
shader->setSourceEntryPoint(sourceEntryPointName);
|
shader->setSourceEntryPoint(sourceEntryPointName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (compileOnly)
|
|
||||||
shader->setCompileOnly();
|
|
||||||
|
|
||||||
shader->setOverrideVersion(GlslVersion);
|
shader->setOverrideVersion(GlslVersion);
|
||||||
|
|
||||||
std::string intrinsicString = getIntrinsic(compUnit.text, compUnit.count);
|
std::string intrinsicString = getIntrinsic(compUnit.text, compUnit.count);
|
||||||
@ -1350,6 +1321,7 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
|||||||
shader->setPreamble(PreambleString.c_str());
|
shader->setPreamble(PreambleString.c_str());
|
||||||
shader->addProcesses(Processes);
|
shader->addProcesses(Processes);
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
// Set IO mapper binding shift values
|
// Set IO mapper binding shift values
|
||||||
for (int r = 0; r < glslang::EResCount; ++r) {
|
for (int r = 0; r < glslang::EResCount; ++r) {
|
||||||
const glslang::TResourceType res = glslang::TResourceType(r);
|
const glslang::TResourceType res = glslang::TResourceType(r);
|
||||||
@ -1381,6 +1353,7 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
|||||||
}
|
}
|
||||||
|
|
||||||
shader->setUniformLocationBase(uniformBase);
|
shader->setUniformLocationBase(uniformBase);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (VulkanRulesRelaxed) {
|
if (VulkanRulesRelaxed) {
|
||||||
for (auto& storageOverride : blockStorageOverrides) {
|
for (auto& storageOverride : blockStorageOverrides) {
|
||||||
@ -1440,23 +1413,24 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
|||||||
|
|
||||||
const int defaultVersion = Options & EOptionDefaultDesktop ? 110 : 100;
|
const int defaultVersion = Options & EOptionDefaultDesktop ? 110 : 100;
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
if (Options & EOptionOutputPreprocessed) {
|
if (Options & EOptionOutputPreprocessed) {
|
||||||
std::string str;
|
std::string str;
|
||||||
if (shader->preprocess(GetResources(), defaultVersion, ENoProfile, false, false, messages, &str, includer)) {
|
if (shader->preprocess(GetResources(), defaultVersion, ENoProfile, false, false, messages, &str, includer)) {
|
||||||
PutsIfNonEmpty(str.c_str());
|
PutsIfNonEmpty(str.c_str());
|
||||||
} else {
|
} else {
|
||||||
CompileFailed = 1;
|
CompileFailed = true;
|
||||||
}
|
}
|
||||||
StderrIfNonEmpty(shader->getInfoLog());
|
StderrIfNonEmpty(shader->getInfoLog());
|
||||||
StderrIfNonEmpty(shader->getInfoDebugLog());
|
StderrIfNonEmpty(shader->getInfoDebugLog());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (! shader->parse(GetResources(), defaultVersion, false, messages, includer))
|
if (! shader->parse(GetResources(), defaultVersion, false, messages, includer))
|
||||||
CompileFailed = 1;
|
CompileFailed = true;
|
||||||
|
|
||||||
if (!compileOnly)
|
program.addShader(shader);
|
||||||
program.addShader(shader);
|
|
||||||
|
|
||||||
if (! (Options & EOptionSuppressInfolog) &&
|
if (! (Options & EOptionSuppressInfolog) &&
|
||||||
! (Options & EOptionMemoryLeakMode)) {
|
! (Options & EOptionMemoryLeakMode)) {
|
||||||
@ -1471,98 +1445,83 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
|||||||
// Program-level processing...
|
// Program-level processing...
|
||||||
//
|
//
|
||||||
|
|
||||||
if (!compileOnly) {
|
// Link
|
||||||
// Link
|
if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages))
|
||||||
if (!(Options & EOptionOutputPreprocessed) && !program.link(messages))
|
LinkFailed = true;
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
|
// Map IO
|
||||||
|
if (Options & EOptionSpv) {
|
||||||
|
if (!program.mapIO())
|
||||||
LinkFailed = true;
|
LinkFailed = true;
|
||||||
|
|
||||||
// Map IO
|
|
||||||
if (Options & EOptionSpv) {
|
|
||||||
if (!program.mapIO())
|
|
||||||
LinkFailed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Report
|
|
||||||
if (!(Options & EOptionSuppressInfolog) && !(Options & EOptionMemoryLeakMode)) {
|
|
||||||
PutsIfNonEmpty(program.getInfoLog());
|
|
||||||
PutsIfNonEmpty(program.getInfoDebugLog());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reflect
|
|
||||||
if (Options & EOptionDumpReflection) {
|
|
||||||
program.buildReflection(ReflectOptions);
|
|
||||||
program.dumpReflection();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Report
|
||||||
|
if (! (Options & EOptionSuppressInfolog) &&
|
||||||
|
! (Options & EOptionMemoryLeakMode)) {
|
||||||
|
PutsIfNonEmpty(program.getInfoLog());
|
||||||
|
PutsIfNonEmpty(program.getInfoDebugLog());
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
|
// Reflect
|
||||||
|
if (Options & EOptionDumpReflection) {
|
||||||
|
program.buildReflection(ReflectOptions);
|
||||||
|
program.dumpReflection();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
std::vector<std::string> outputFiles;
|
std::vector<std::string> outputFiles;
|
||||||
|
|
||||||
// Dump SPIR-V
|
// Dump SPIR-V
|
||||||
if (Options & EOptionSpv) {
|
if (Options & EOptionSpv) {
|
||||||
CompileOrLinkFailed.fetch_or(CompileFailed);
|
if (CompileFailed || LinkFailed)
|
||||||
CompileOrLinkFailed.fetch_or(LinkFailed);
|
|
||||||
if (static_cast<bool>(CompileOrLinkFailed.load()))
|
|
||||||
printf("SPIR-V is not generated for failed compile or link\n");
|
printf("SPIR-V is not generated for failed compile or link\n");
|
||||||
else {
|
else {
|
||||||
std::vector<glslang::TIntermediate*> intermediates;
|
for (int stage = 0; stage < EShLangCount; ++stage) {
|
||||||
if (!compileOnly) {
|
if (program.getIntermediate((EShLanguage)stage)) {
|
||||||
for (int stage = 0; stage < EShLangCount; ++stage) {
|
std::vector<unsigned int> spirv;
|
||||||
if (auto* i = program.getIntermediate((EShLanguage)stage)) {
|
spv::SpvBuildLogger logger;
|
||||||
intermediates.emplace_back(i);
|
glslang::SpvOptions spvOptions;
|
||||||
}
|
if (Options & EOptionDebug) {
|
||||||
}
|
spvOptions.generateDebugInfo = true;
|
||||||
} else {
|
if (emitNonSemanticShaderDebugInfo) {
|
||||||
for (const auto* shader : shaders) {
|
spvOptions.emitNonSemanticShaderDebugInfo = true;
|
||||||
if (auto* i = shader->getIntermediate()) {
|
if (emitNonSemanticShaderDebugSource) {
|
||||||
intermediates.emplace_back(i);
|
spvOptions.emitNonSemanticShaderDebugSource = true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
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)
|
||||||
} else if (stripDebugInfo)
|
spvOptions.stripDebugInfo = true;
|
||||||
spvOptions.stripDebugInfo = true;
|
spvOptions.disableOptimizer = (Options & EOptionOptimizeDisable) != 0;
|
||||||
spvOptions.disableOptimizer = (Options & EOptionOptimizeDisable) != 0;
|
spvOptions.optimizeSize = (Options & EOptionOptimizeSize) != 0;
|
||||||
spvOptions.optimizeSize = (Options & EOptionOptimizeSize) != 0;
|
spvOptions.disassemble = SpvToolsDisassembler;
|
||||||
spvOptions.disassemble = SpvToolsDisassembler;
|
spvOptions.validate = SpvToolsValidate;
|
||||||
spvOptions.validate = SpvToolsValidate;
|
glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv, &logger, &spvOptions);
|
||||||
spvOptions.compileOnly = compileOnly;
|
|
||||||
glslang::GlslangToSpv(*intermediate, spirv, &logger, &spvOptions);
|
|
||||||
|
|
||||||
// Dump the spv to a file or stdout, etc., but only if not doing
|
// 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.
|
// memory/perf testing, as it's not internal to programmatic use.
|
||||||
if (!(Options & EOptionMemoryLeakMode)) {
|
if (! (Options & EOptionMemoryLeakMode)) {
|
||||||
printf("%s", logger.getAllMessages().c_str());
|
printf("%s", logger.getAllMessages().c_str());
|
||||||
const auto filename = GetBinaryName(intermediate->getStage());
|
if (Options & EOptionOutputHexadecimal) {
|
||||||
if (Options & EOptionOutputHexadecimal) {
|
glslang::OutputSpvHex(spirv, GetBinaryName((EShLanguage)stage), variableName);
|
||||||
if (!glslang::OutputSpvHex(spirv, filename, variableName))
|
} else {
|
||||||
exit(EFailUsage);
|
glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage));
|
||||||
} else {
|
}
|
||||||
if (!glslang::OutputSpvBin(spirv, filename))
|
|
||||||
exit(EFailUsage);
|
|
||||||
}
|
|
||||||
|
|
||||||
outputFiles.push_back(filename);
|
outputFiles.push_back(GetBinaryName((EShLanguage)stage));
|
||||||
if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv))
|
#ifndef GLSLANG_WEB
|
||||||
spv::Disassemble(std::cout, spirv);
|
if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv))
|
||||||
|
spv::Disassemble(std::cout, spirv);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CompileOrLinkFailed.fetch_or(CompileFailed);
|
if (depencyFileName && !(CompileFailed || LinkFailed)) {
|
||||||
CompileOrLinkFailed.fetch_or(LinkFailed);
|
|
||||||
if (depencyFileName && !static_cast<bool>(CompileOrLinkFailed.load())) {
|
|
||||||
std::set<std::string> includedFiles = includer.getIncludedFiles();
|
std::set<std::string> includedFiles = includer.getIncludedFiles();
|
||||||
sources.insert(sources.end(), includedFiles.begin(), includedFiles.end());
|
sources.insert(sources.end(), includedFiles.begin(), includedFiles.end());
|
||||||
|
|
||||||
@ -1650,11 +1609,13 @@ int singleMain()
|
|||||||
workList.add(item.get());
|
workList.add(item.get());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
#ifndef GLSLANG_WEB
|
||||||
if (Options & EOptionDumpConfig) {
|
if (Options & EOptionDumpConfig) {
|
||||||
printf("%s", GetDefaultTBuiltInResourceString().c_str());
|
printf("%s", GetDefaultTBuiltInResourceString().c_str());
|
||||||
if (workList.empty())
|
if (workList.empty())
|
||||||
return ESuccess;
|
return ESuccess;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (Options & EOptionDumpBareVersion) {
|
if (Options & EOptionDumpBareVersion) {
|
||||||
printf("%d:%d.%d.%d%s\n", glslang::GetSpirvGeneratorVersion(), GLSLANG_VERSION_MAJOR, GLSLANG_VERSION_MINOR,
|
printf("%d:%d.%d.%d%s\n", glslang::GetSpirvGeneratorVersion(), GLSLANG_VERSION_MAJOR, GLSLANG_VERSION_MINOR,
|
||||||
@ -1738,9 +1699,9 @@ int singleMain()
|
|||||||
ShFinalize();
|
ShFinalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CompileFailed.load())
|
if (CompileFailed)
|
||||||
return EFailCompile;
|
return EFailCompile;
|
||||||
if (LinkFailed.load())
|
if (LinkFailed)
|
||||||
return EFailLink;
|
return EFailLink;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -1871,7 +1832,7 @@ void CompileFile(const char* fileName, ShHandle compiler)
|
|||||||
SetMessageOptions(messages);
|
SetMessageOptions(messages);
|
||||||
|
|
||||||
if (UserPreamble.isSet())
|
if (UserPreamble.isSet())
|
||||||
Error("-D, -U and -P options require -l (linking)\n");
|
Error("-D and -U options require -l (linking)\n");
|
||||||
|
|
||||||
for (int i = 0; i < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++i) {
|
for (int i = 0; i < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++i) {
|
||||||
for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j) {
|
for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j) {
|
||||||
@ -1900,7 +1861,7 @@ void CompileFile(const char* fileName, ShHandle compiler)
|
|||||||
//
|
//
|
||||||
void usage()
|
void usage()
|
||||||
{
|
{
|
||||||
printf("Usage: glslang [option]... [file]...\n"
|
printf("Usage: glslangValidator [option]... [file]...\n"
|
||||||
"\n"
|
"\n"
|
||||||
"'file' can end in .<stage> for auto-stage classification, where <stage> is:\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"
|
" .conf to provide a config file that replaces the default configuration\n"
|
||||||
@ -1941,9 +1902,6 @@ void usage()
|
|||||||
" is searched first, followed by left-to-right order of -I\n"
|
" is searched first, followed by left-to-right order of -I\n"
|
||||||
" -Od disables optimization; may cause illegal SPIR-V for HLSL\n"
|
" -Od disables optimization; may cause illegal SPIR-V for HLSL\n"
|
||||||
" -Os optimizes SPIR-V to minimize size\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"
|
" -R use relaxed verification rules for generating Vulkan SPIR-V,\n"
|
||||||
" allowing the use of default uniforms, atomic_uints, and\n"
|
" allowing the use of default uniforms, atomic_uints, and\n"
|
||||||
" gl_VertexID and gl_InstanceID keywords.\n"
|
" gl_VertexID and gl_InstanceID keywords.\n"
|
||||||
@ -2106,9 +2064,7 @@ void usage()
|
|||||||
" --vn <name> creates a C header file that contains a\n"
|
" --vn <name> creates a C header file that contains a\n"
|
||||||
" uint32_t array named <name>\n"
|
" uint32_t array named <name>\n"
|
||||||
" initialized with the shader binary code\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);
|
exit(EFailUsage);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,11 +37,7 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <filesystem>
|
|
||||||
|
|
||||||
//
|
|
||||||
// Include remapper
|
|
||||||
//
|
|
||||||
#include "../SPIRV/SPVRemapper.h"
|
#include "../SPIRV/SPVRemapper.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@ -176,7 +172,7 @@ namespace {
|
|||||||
<< " [--strip-all | --strip all | -s]"
|
<< " [--strip-all | --strip all | -s]"
|
||||||
<< " [--strip-white-list]"
|
<< " [--strip-white-list]"
|
||||||
<< " [--do-everything]"
|
<< " [--do-everything]"
|
||||||
<< " --input | -i file1 [file2...] --output|-o DESTDIR | destfile1 [destfile2...]"
|
<< " --input | -i file1 [file2...] --output|-o DESTDIR"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
|
||||||
std::cout << " " << basename(name) << " [--version | -V]" << std::endl;
|
std::cout << " " << basename(name) << " [--version | -V]" << std::endl;
|
||||||
@ -186,45 +182,32 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// grind through each SPIR in turn
|
// grind through each SPIR in turn
|
||||||
void execute(const std::vector<std::string>& inputFiles,
|
void execute(const std::vector<std::string>& inputFile, const std::string& outputDir,
|
||||||
const std::vector<std::string>& outputDirOrFiles,
|
const std::string& whiteListFile, int opts, int verbosity)
|
||||||
const bool isSingleOutputDir,
|
|
||||||
const std::string& whiteListFile,
|
|
||||||
int opts,
|
|
||||||
int verbosity)
|
|
||||||
{
|
{
|
||||||
std::vector<std::string> whiteListStrings;
|
std::vector<std::string> whiteListStrings;
|
||||||
if (!whiteListFile.empty())
|
if(!whiteListFile.empty())
|
||||||
read(whiteListStrings, whiteListFile, verbosity);
|
read(whiteListStrings, whiteListFile, verbosity);
|
||||||
|
|
||||||
for (std::size_t ii=0; ii<inputFiles.size(); ii++) {
|
for (auto it = inputFile.cbegin(); it != inputFile.cend(); ++it) {
|
||||||
|
const std::string &filename = *it;
|
||||||
std::vector<SpvWord> spv;
|
std::vector<SpvWord> spv;
|
||||||
read(spv, inputFiles[ii], verbosity);
|
read(spv, filename, verbosity);
|
||||||
|
|
||||||
spv::spirvbin_t(verbosity).remap(spv, whiteListStrings, opts);
|
spv::spirvbin_t(verbosity).remap(spv, whiteListStrings, opts);
|
||||||
|
const std::string outfile = outputDir + path_sep_char() + basename(filename);
|
||||||
if (isSingleOutputDir) {
|
write(spv, outfile, verbosity);
|
||||||
// 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)
|
if (verbosity > 0)
|
||||||
std::cout << "Done: " << inputFiles.size() << " file(s) processed" << std::endl;
|
std::cout << "Done: " << inputFile.size() << " file(s) processed" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse command line options
|
// Parse command line options
|
||||||
void parseCmdLine(int argc,
|
void parseCmdLine(int argc, char** argv, std::vector<std::string>& inputFile,
|
||||||
char** argv,
|
std::string& outputDir,
|
||||||
std::vector<std::string>& inputFiles,
|
std::string& stripWhiteListFile,
|
||||||
std::vector<std::string>& outputDirOrFiles,
|
int& options,
|
||||||
std::string& stripWhiteListFile,
|
int& verbosity)
|
||||||
int& options,
|
|
||||||
int& verbosity)
|
|
||||||
{
|
{
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
@ -239,19 +222,18 @@ namespace {
|
|||||||
const std::string arg = argv[a];
|
const std::string arg = argv[a];
|
||||||
|
|
||||||
if (arg == "--output" || arg == "-o") {
|
if (arg == "--output" || arg == "-o") {
|
||||||
// Collect output dirs or files
|
// Output directory
|
||||||
for (++a; a < argc && argv[a][0] != '-'; ++a)
|
if (++a >= argc)
|
||||||
outputDirOrFiles.push_back(argv[a]);
|
|
||||||
|
|
||||||
if (outputDirOrFiles.size() == 0)
|
|
||||||
usage(argv[0], "--output requires an argument");
|
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 == "-vv") { verbosity = 2; ++a; } // verbosity shortcuts
|
||||||
else if (arg == "-vvv") { verbosity = 3; ++a; } // ...
|
else if (arg == "-vvv") { verbosity = 3; ++a; } // ...
|
||||||
@ -280,7 +262,7 @@ namespace {
|
|||||||
} else if (arg == "--input" || arg == "-i") {
|
} else if (arg == "--input" || arg == "-i") {
|
||||||
// Collect input files
|
// Collect input files
|
||||||
for (++a; a < argc && argv[a][0] != '-'; ++a)
|
for (++a; a < argc && argv[a][0] != '-'; ++a)
|
||||||
inputFiles.push_back(argv[a]);
|
inputFile.push_back(argv[a]);
|
||||||
} else if (arg == "--do-everything") {
|
} else if (arg == "--do-everything") {
|
||||||
++a;
|
++a;
|
||||||
options = options | spv::spirvbin_t::DO_EVERYTHING;
|
options = options | spv::spirvbin_t::DO_EVERYTHING;
|
||||||
@ -364,39 +346,30 @@ namespace {
|
|||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
std::vector<std::string> inputFiles;
|
std::vector<std::string> inputFile;
|
||||||
std::vector<std::string> outputDirOrFiles;
|
std::string outputDir;
|
||||||
std::string whiteListFile;
|
std::string whiteListFile;
|
||||||
int opts;
|
int opts;
|
||||||
int verbosity;
|
int verbosity;
|
||||||
|
|
||||||
|
#ifdef use_cpp11
|
||||||
// handle errors by exiting
|
// handle errors by exiting
|
||||||
spv::spirvbin_t::registerErrorHandler(errHandler);
|
spv::spirvbin_t::registerErrorHandler(errHandler);
|
||||||
|
|
||||||
// Log messages to std::cout
|
// Log messages to std::cout
|
||||||
spv::spirvbin_t::registerLogHandler(logHandler);
|
spv::spirvbin_t::registerLogHandler(logHandler);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
|
|
||||||
parseCmdLine(argc, argv, inputFiles, outputDirOrFiles, whiteListFile, opts, verbosity);
|
parseCmdLine(argc, argv, inputFile, outputDir, whiteListFile, opts, verbosity);
|
||||||
|
|
||||||
if (outputDirOrFiles.empty())
|
if (outputDir.empty())
|
||||||
usage(argv[0], "Output directory or file(s) required.");
|
usage(argv[0], "Output directory 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.
|
// Main operations: read, remap, and write.
|
||||||
execute(inputFiles, outputDirOrFiles, isSingleOutputDir, whiteListFile, opts, verbosity);
|
execute(inputFile, outputDir, whiteListFile, opts, verbosity);
|
||||||
|
|
||||||
// If we get here, everything went OK! Nothing more to be done.
|
// If we get here, everything went OK! Nothing more to be done.
|
||||||
}
|
}
|
||||||
|
|||||||
@ -46,7 +46,6 @@ ERROR: 0:108: 'overloadE' : no matching overloaded function found
|
|||||||
ERROR: 0:111: '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: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: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:165: 'switch' : Reserved word.
|
||||||
ERROR: 0:171: 'default' : Reserved word.
|
ERROR: 0:171: 'default' : Reserved word.
|
||||||
ERROR: 0:165: 'switch statements' : not supported for this version or the enabled extensions
|
ERROR: 0:165: 'switch statements' : not supported for this version or the enabled extensions
|
||||||
@ -81,7 +80,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: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:203: 'token pasting (##)' : not supported for this version or the enabled extensions
|
||||||
ERROR: 0:205: '' : syntax error, unexpected IDENTIFIER
|
ERROR: 0:205: '' : syntax error, unexpected IDENTIFIER
|
||||||
ERROR: 82 compilation errors. No code generated.
|
ERROR: 81 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 120
|
Shader version: 120
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
300layout.vert
|
300layout.vert
|
||||||
ERROR: 0:7: 'vertex input arrays' : not supported with this profile: es
|
ERROR: 0:7: 'vertex input arrays' : not supported with this profile: es
|
||||||
ERROR: 0:8: 'in' : cannot be a structure
|
ERROR: 0:8: 'in' : cannot be a structure or array
|
||||||
ERROR: 0:8: 's' : A structure containing an array is not allowed as input in ES
|
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: 'vertex input arrays' : not supported with this profile: es
|
||||||
ERROR: 0:8: 'location' : overlapping use of location 10
|
ERROR: 0:8: 'location' : overlapping use of location 10
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
440.frag
|
440.frag
|
||||||
ERROR: 0:11: 'location' : overlapping use of location 4
|
ERROR: 0:11: 'location' : overlapping use of location 4
|
||||||
ERROR: 0:13: 'component' : type overflows the available 4 components
|
ERROR: 0:13: 'component' : type overflows the available 4 components
|
||||||
ERROR: 0:22: 'location' : fragment outputs or tileImageEXTs sharing the same location 30 must be the same basic type
|
ERROR: 0:22: 'location' : fragment outputs sharing the same location must be the same basic type 30
|
||||||
ERROR: 0:24: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no 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: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)
|
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: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:84: 'align' : must be a power of 2
|
||||||
ERROR: 0:83: 'offset' : cannot lie in previous members
|
ERROR: 0:83: 'offset' : cannot lie in previous members
|
||||||
ERROR: 0:85: 'offset' : must be a multiple of the member's alignment (layout offset = 68 | member alignment = 8)
|
ERROR: 0:85: 'offset' : must be a multiple of the member's alignment
|
||||||
ERROR: 0:103: 'align' : must be a power of 2
|
ERROR: 0:103: 'align' : must be a power of 2
|
||||||
ERROR: 0:105: '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:102: 'offset' : cannot lie in previous members
|
||||||
ERROR: 0:104: 'offset' : must be a multiple of the member's alignment (layout offset = 68 | member alignment = 8)
|
ERROR: 0:104: 'offset' : must be a multiple of the member's alignment
|
||||||
ERROR: 49 compilation errors. No code generated.
|
ERROR: 49 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
atomicAdd.comp
|
atomicAdd.comp
|
||||||
ERROR: 0:18: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions.
|
ERROR: 0:18: 'atomicAdd' : Atomic memory function can only be used for shader storage block member or shared variable.
|
||||||
ERROR: 1 compilation errors. No code generated.
|
ERROR: 1 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,35 +0,0 @@
|
|||||||
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)
|
|
||||||
|
|
||||||
@ -1,45 +0,0 @@
|
|||||||
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)
|
|
||||||
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
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)
|
|
||||||
|
|
||||||
@ -1,149 +0,0 @@
|
|||||||
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)
|
|
||||||
|
|
||||||
@ -1,160 +0,0 @@
|
|||||||
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)
|
|
||||||
|
|
||||||
@ -1,390 +0,0 @@
|
|||||||
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,98 +216,33 @@ gl_FragCoord origin is upper left
|
|||||||
0:39 Convert int to float ( temp float)
|
0:39 Convert int to float ( temp float)
|
||||||
0:39 'd' ( temp int)
|
0:39 'd' ( temp int)
|
||||||
0:39 'input' ( in 4-component vector of float)
|
0:39 'input' ( in 4-component vector of float)
|
||||||
0:40 Sequence
|
0:41 Branch: Return with expression
|
||||||
0:40 move second child to first child ( temp uint)
|
0:40 add ( temp 4-component vector of float)
|
||||||
0:40 'g' ( temp uint)
|
0:40 add ( temp 4-component vector of float)
|
||||||
0:40 Test condition and select ( temp uint): no shortcircuit
|
0:40 add ( temp 4-component vector of float)
|
||||||
0:40 Condition
|
0:40 add ( temp 4-component vector of float)
|
||||||
0:40 Compare Greater Than ( temp bool)
|
0:40 vector-scale ( temp 4-component vector of float)
|
||||||
0:40 Convert int to float ( temp float)
|
0:40 Convert int to float ( temp float)
|
||||||
0:40 'd' ( temp int)
|
0:40 'e' ( temp int)
|
||||||
0:40 Constant:
|
0:40 'ret' ( temp 4-component vector of float)
|
||||||
0:40 0.000000
|
0:40 'f' ( temp 4-component vector of float)
|
||||||
0:40 true case
|
0:40 Function Call: vectorCond( ( temp 4-component vector of float)
|
||||||
0:40 Constant:
|
0:40 Function Call: scalarCond( ( temp 4-component vector of float)
|
||||||
0:40 21 (const uint)
|
0:41 Construct vec4 ( temp 4-component vector of float)
|
||||||
0:40 false case
|
0:41 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float)
|
||||||
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 Constant:
|
||||||
0:41 0.000000
|
0:41 true (const bool)
|
||||||
0:41 true case
|
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 Constant:
|
0:41 Constant:
|
||||||
0:41 63 (const uint)
|
0:41 10.000000
|
||||||
0:41 false case
|
|
||||||
0:41 Constant:
|
0:41 Constant:
|
||||||
0:41 0 (const uint)
|
0:41 10.000000
|
||||||
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 Definition: PixelShaderFunction( ( temp void)
|
||||||
0:27 Function Parameters:
|
0:27 Function Parameters:
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
@ -544,98 +479,33 @@ gl_FragCoord origin is upper left
|
|||||||
0:39 Convert int to float ( temp float)
|
0:39 Convert int to float ( temp float)
|
||||||
0:39 'd' ( temp int)
|
0:39 'd' ( temp int)
|
||||||
0:39 'input' ( in 4-component vector of float)
|
0:39 'input' ( in 4-component vector of float)
|
||||||
0:40 Sequence
|
0:41 Branch: Return with expression
|
||||||
0:40 move second child to first child ( temp uint)
|
0:40 add ( temp 4-component vector of float)
|
||||||
0:40 'g' ( temp uint)
|
0:40 add ( temp 4-component vector of float)
|
||||||
0:40 Test condition and select ( temp uint): no shortcircuit
|
0:40 add ( temp 4-component vector of float)
|
||||||
0:40 Condition
|
0:40 add ( temp 4-component vector of float)
|
||||||
0:40 Compare Greater Than ( temp bool)
|
0:40 vector-scale ( temp 4-component vector of float)
|
||||||
0:40 Convert int to float ( temp float)
|
0:40 Convert int to float ( temp float)
|
||||||
0:40 'd' ( temp int)
|
0:40 'e' ( temp int)
|
||||||
0:40 Constant:
|
0:40 'ret' ( temp 4-component vector of float)
|
||||||
0:40 0.000000
|
0:40 'f' ( temp 4-component vector of float)
|
||||||
0:40 true case
|
0:40 Function Call: vectorCond( ( temp 4-component vector of float)
|
||||||
0:40 Constant:
|
0:40 Function Call: scalarCond( ( temp 4-component vector of float)
|
||||||
0:40 21 (const uint)
|
0:41 Construct vec4 ( temp 4-component vector of float)
|
||||||
0:40 false case
|
0:41 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float)
|
||||||
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 Constant:
|
||||||
0:41 0.000000
|
0:41 true (const bool)
|
||||||
0:41 true case
|
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 Constant:
|
0:41 Constant:
|
||||||
0:41 63 (const uint)
|
0:41 10.000000
|
||||||
0:41 false case
|
|
||||||
0:41 Constant:
|
0:41 Constant:
|
||||||
0:41 0 (const uint)
|
0:41 10.000000
|
||||||
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 Definition: PixelShaderFunction( ( temp void)
|
||||||
0:27 Function Parameters:
|
0:27 Function Parameters:
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
@ -653,12 +523,12 @@ gl_FragCoord origin is upper left
|
|||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 8000b
|
// Generated by (magic number): 8000b
|
||||||
// Id's are bound by 233
|
// Id's are bound by 206
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "PixelShaderFunction" 226 229
|
EntryPoint Fragment 4 "PixelShaderFunction" 199 202
|
||||||
ExecutionMode 4 OriginUpperLeft
|
ExecutionMode 4 OriginUpperLeft
|
||||||
Source HLSL 500
|
Source HLSL 500
|
||||||
Name 4 "PixelShaderFunction"
|
Name 4 "PixelShaderFunction"
|
||||||
@ -685,17 +555,13 @@ gl_FragCoord origin is upper left
|
|||||||
Name 117 "ret"
|
Name 117 "ret"
|
||||||
Name 137 "e"
|
Name 137 "e"
|
||||||
Name 150 "f"
|
Name 150 "f"
|
||||||
Name 169 "g"
|
Name 186 "param"
|
||||||
Name 175 "h"
|
Name 187 "param"
|
||||||
Name 181 "i"
|
Name 188 "param"
|
||||||
Name 187 "j"
|
Name 197 "input"
|
||||||
Name 213 "param"
|
Name 199 "input"
|
||||||
Name 214 "param"
|
Name 202 "@entryPointOutput"
|
||||||
Name 215 "param"
|
Name 203 "param"
|
||||||
Name 224 "input"
|
|
||||||
Name 226 "input"
|
|
||||||
Name 229 "@entryPointOutput"
|
|
||||||
Name 230 "param"
|
|
||||||
MemberDecorate 29($Global) 0 Offset 0
|
MemberDecorate 29($Global) 0 Offset 0
|
||||||
MemberDecorate 29($Global) 1 Offset 16
|
MemberDecorate 29($Global) 1 Offset 16
|
||||||
MemberDecorate 29($Global) 2 Offset 32
|
MemberDecorate 29($Global) 2 Offset 32
|
||||||
@ -704,8 +570,8 @@ gl_FragCoord origin is upper left
|
|||||||
Decorate 29($Global) Block
|
Decorate 29($Global) Block
|
||||||
Decorate 31 DescriptorSet 0
|
Decorate 31 DescriptorSet 0
|
||||||
Decorate 31 Binding 0
|
Decorate 31 Binding 0
|
||||||
Decorate 226(input) Location 0
|
Decorate 199(input) Location 0
|
||||||
Decorate 229(@entryPointOutput) Location 0
|
Decorate 202(@entryPointOutput) Location 0
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeFloat 32
|
6: TypeFloat 32
|
||||||
@ -745,35 +611,29 @@ gl_FragCoord origin is upper left
|
|||||||
148: 32(int) Constant 11
|
148: 32(int) Constant 11
|
||||||
151: TypePointer Function 6(float)
|
151: TypePointer Function 6(float)
|
||||||
154: 139(int) Constant 1
|
154: 139(int) Constant 1
|
||||||
168: TypePointer Function 139(int)
|
178: 13(bool) ConstantTrue
|
||||||
173: 139(int) Constant 21
|
179: 13(bool) ConstantFalse
|
||||||
179: 139(int) Constant 63
|
180: 14(bvec2) ConstantComposite 178 179
|
||||||
185: 139(int) Constant 5
|
181: 6(float) Constant 1073741824
|
||||||
191: 32(int) Constant 43981
|
182: 16(fvec2) ConstantComposite 96 181
|
||||||
192: 32(int) Constant 48346
|
183: 6(float) Constant 1077936128
|
||||||
205: 13(bool) ConstantTrue
|
184: 6(float) Constant 1082130432
|
||||||
206: 13(bool) ConstantFalse
|
185: 16(fvec2) ConstantComposite 183 184
|
||||||
207: 14(bvec2) ConstantComposite 205 206
|
190: 6(float) Constant 1092616192
|
||||||
208: 6(float) Constant 1073741824
|
198: TypePointer Input 7(fvec4)
|
||||||
209: 16(fvec2) ConstantComposite 96 208
|
199(input): 198(ptr) Variable Input
|
||||||
210: 6(float) Constant 1077936128
|
201: TypePointer Output 7(fvec4)
|
||||||
211: 6(float) Constant 1082130432
|
202(@entryPointOutput): 201(ptr) Variable Output
|
||||||
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
|
4(PixelShaderFunction): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
224(input): 24(ptr) Variable Function
|
197(input): 24(ptr) Variable Function
|
||||||
230(param): 24(ptr) Variable Function
|
203(param): 24(ptr) Variable Function
|
||||||
227: 7(fvec4) Load 226(input)
|
200: 7(fvec4) Load 199(input)
|
||||||
Store 224(input) 227
|
Store 197(input) 200
|
||||||
231: 7(fvec4) Load 224(input)
|
204: 7(fvec4) Load 197(input)
|
||||||
Store 230(param) 231
|
Store 203(param) 204
|
||||||
232: 7(fvec4) FunctionCall 27(@PixelShaderFunction(vf4;) 230(param)
|
205: 7(fvec4) FunctionCall 27(@PixelShaderFunction(vf4;) 203(param)
|
||||||
Store 229(@entryPointOutput) 232
|
Store 202(@entryPointOutput) 205
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
9(vectorCond(): 7(fvec4) Function None 8
|
9(vectorCond(): 7(fvec4) Function None 8
|
||||||
@ -860,13 +720,9 @@ gl_FragCoord origin is upper left
|
|||||||
117(ret): 24(ptr) Variable Function
|
117(ret): 24(ptr) Variable Function
|
||||||
137(e): 109(ptr) Variable Function
|
137(e): 109(ptr) Variable Function
|
||||||
150(f): 24(ptr) Variable Function
|
150(f): 24(ptr) Variable Function
|
||||||
169(g): 168(ptr) Variable Function
|
186(param): 15(ptr) Variable Function
|
||||||
175(h): 168(ptr) Variable Function
|
187(param): 17(ptr) Variable Function
|
||||||
181(i): 168(ptr) Variable Function
|
188(param): 17(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 110(a) 111
|
||||||
Store 112(b) 113
|
Store 112(b) 113
|
||||||
Store 114(c) 115
|
Store 114(c) 115
|
||||||
@ -920,44 +776,23 @@ gl_FragCoord origin is upper left
|
|||||||
166: 43(bvec4) CompositeConstruct 157 157 157 157
|
166: 43(bvec4) CompositeConstruct 157 157 157 157
|
||||||
167: 7(fvec4) Select 166 161 165
|
167: 7(fvec4) Select 166 161 165
|
||||||
Store 150(f) 167
|
Store 150(f) 167
|
||||||
170: 32(int) Load 116(d)
|
168: 32(int) Load 137(e)
|
||||||
171: 6(float) ConvertSToF 170
|
169: 6(float) ConvertSToF 168
|
||||||
172: 13(bool) FOrdGreaterThan 171 44
|
170: 7(fvec4) Load 117(ret)
|
||||||
174: 139(int) Select 172 173 140
|
171: 7(fvec4) VectorTimesScalar 170 169
|
||||||
Store 169(g) 174
|
172: 7(fvec4) Load 150(f)
|
||||||
176: 139(int) Load 169(g)
|
173: 7(fvec4) FAdd 171 172
|
||||||
177: 6(float) ConvertUToF 176
|
174: 7(fvec4) FunctionCall 9(vectorCond()
|
||||||
178: 13(bool) FOrdGreaterThan 177 44
|
175: 7(fvec4) FAdd 173 174
|
||||||
180: 139(int) Select 178 179 140
|
176: 7(fvec4) FunctionCall 11(scalarCond()
|
||||||
Store 175(h) 180
|
177: 7(fvec4) FAdd 175 176
|
||||||
182: 139(int) Load 175(h)
|
Store 186(param) 180
|
||||||
183: 6(float) ConvertUToF 182
|
Store 187(param) 182
|
||||||
184: 13(bool) FOrdGreaterThan 183 44
|
Store 188(param) 185
|
||||||
186: 139(int) Select 184 185 154
|
189: 16(fvec2) FunctionCall 22(fbSelect(vb2;vf2;vf2;) 186(param) 187(param) 188(param)
|
||||||
Store 181(i) 186
|
191: 6(float) CompositeExtract 189 0
|
||||||
188: 139(int) Load 181(i)
|
192: 6(float) CompositeExtract 189 1
|
||||||
189: 6(float) ConvertUToF 188
|
193: 7(fvec4) CompositeConstruct 191 192 190 190
|
||||||
190: 13(bool) FOrdGreaterThan 189 44
|
194: 7(fvec4) FAdd 177 193
|
||||||
193: 32(int) Select 190 191 192
|
ReturnValue 194
|
||||||
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
|
FunctionEnd
|
||||||
|
|||||||
@ -1,606 +0,0 @@
|
|||||||
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
|
hlsl.function.frag
|
||||||
ERROR: 0:29: 'fun1' : unknown variable
|
ERROR: 0:24: 'fun1' : unknown variable
|
||||||
ERROR: 0:29: 'return' : type does not match, or is not convertible to, the function's return type
|
ERROR: 0:24: 'return' : type does not match, or is not convertible to, the function's return type
|
||||||
ERROR: 2 compilation errors. No code generated.
|
ERROR: 2 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
@ -16,63 +16,45 @@ ERROR: node is still EOpNull!
|
|||||||
0:3 1.000000
|
0:3 1.000000
|
||||||
0:3 1.000000
|
0:3 1.000000
|
||||||
0:3 1.000000
|
0:3 1.000000
|
||||||
0:7 Function Definition: fun2(vf4; ( temp 4-component vector of float)
|
0:7 Function Definition: fun2(vf4; ( temp uint)
|
||||||
0:7 Function Parameters:
|
0:7 Function Parameters:
|
||||||
0:7 'col' ( const (read only) 4-component vector of float)
|
0:7 'col' ( in 4-component vector of float)
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:8 Branch: Return with expression
|
0:8 Branch: Return with expression
|
||||||
0:8 Construct vec4 ( temp 4-component vector of float)
|
0:8 Constant:
|
||||||
0:8 Comma ( temp float)
|
0:8 7 (const uint)
|
||||||
0:8 Comma ( temp float)
|
0:12 Function Definition: fun4(u1;u1; ( temp 4-component vector of 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 Function Parameters:
|
||||||
0:12 'col' ( const (read only) 4-component vector of float)
|
0:12 'id1' ( in uint)
|
||||||
|
0:12 'id2' ( uniform uint)
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:13 Branch: Return with expression
|
0:13 Branch: Return with expression
|
||||||
0:13 Constant:
|
0:13 Construct vec4 ( temp 4-component vector of float)
|
||||||
0:13 7 (const uint)
|
0:13 Convert uint to float ( temp float)
|
||||||
0:17 Function Definition: fun4(u1;u1; ( temp 4-component vector of 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:17 Function Parameters:
|
0:17 Function Parameters:
|
||||||
0:17 'id1' ( in uint)
|
0:17 'index' ( in int)
|
||||||
0:17 'id2' ( uniform uint)
|
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:18 Branch: Return with expression
|
0:18 Sequence
|
||||||
0:18 Construct vec4 ( temp 4-component vector of float)
|
0:18 move second child to first child ( temp uint)
|
||||||
0:18 Convert uint to float ( temp float)
|
0:18 'entityId' ( temp uint)
|
||||||
0:18 component-wise multiply ( temp uint)
|
0:18 Function Call: fun2(vf4; ( temp uint)
|
||||||
0:18 'id1' ( in uint)
|
0:18 Function Call: fun0( ( temp 4-component vector of float)
|
||||||
0:18 'id2' ( uniform uint)
|
0:19 Branch: Return with expression
|
||||||
0:22 Function Definition: fun1(i1; ( temp 4-component vector of float)
|
0:19 Function Call: fun4(u1;u1; ( temp 4-component vector of float)
|
||||||
0:22 Function Parameters:
|
0:19 'entityId' ( temp uint)
|
||||||
0:22 'index' ( in int)
|
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:? Sequence
|
0:? Sequence
|
||||||
0:23 Sequence
|
0:23 move second child to first child ( temp int)
|
||||||
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:? '@entryPointOutput' (layout( location=0) out int)
|
||||||
0:28 Function Call: @main( ( temp int)
|
0:23 Function Call: @main( ( temp int)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? '@entryPointOutput' (layout( location=0) out int)
|
0:? '@entryPointOutput' (layout( location=0) out int)
|
||||||
|
|
||||||
@ -92,63 +74,45 @@ ERROR: node is still EOpNull!
|
|||||||
0:3 1.000000
|
0:3 1.000000
|
||||||
0:3 1.000000
|
0:3 1.000000
|
||||||
0:3 1.000000
|
0:3 1.000000
|
||||||
0:7 Function Definition: fun2(vf4; ( temp 4-component vector of float)
|
0:7 Function Definition: fun2(vf4; ( temp uint)
|
||||||
0:7 Function Parameters:
|
0:7 Function Parameters:
|
||||||
0:7 'col' ( const (read only) 4-component vector of float)
|
0:7 'col' ( in 4-component vector of float)
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:8 Branch: Return with expression
|
0:8 Branch: Return with expression
|
||||||
0:8 Construct vec4 ( temp 4-component vector of float)
|
0:8 Constant:
|
||||||
0:8 Comma ( temp float)
|
0:8 7 (const uint)
|
||||||
0:8 Comma ( temp float)
|
0:12 Function Definition: fun4(u1;u1; ( temp 4-component vector of 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 Function Parameters:
|
||||||
0:12 'col' ( const (read only) 4-component vector of float)
|
0:12 'id1' ( in uint)
|
||||||
|
0:12 'id2' ( uniform uint)
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:13 Branch: Return with expression
|
0:13 Branch: Return with expression
|
||||||
0:13 Constant:
|
0:13 Construct vec4 ( temp 4-component vector of float)
|
||||||
0:13 7 (const uint)
|
0:13 Convert uint to float ( temp float)
|
||||||
0:17 Function Definition: fun4(u1;u1; ( temp 4-component vector of 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:17 Function Parameters:
|
0:17 Function Parameters:
|
||||||
0:17 'id1' ( in uint)
|
0:17 'index' ( in int)
|
||||||
0:17 'id2' ( uniform uint)
|
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:18 Branch: Return with expression
|
0:18 Sequence
|
||||||
0:18 Construct vec4 ( temp 4-component vector of float)
|
0:18 move second child to first child ( temp uint)
|
||||||
0:18 Convert uint to float ( temp float)
|
0:18 'entityId' ( temp uint)
|
||||||
0:18 component-wise multiply ( temp uint)
|
0:18 Function Call: fun2(vf4; ( temp uint)
|
||||||
0:18 'id1' ( in uint)
|
0:18 Function Call: fun0( ( temp 4-component vector of float)
|
||||||
0:18 'id2' ( uniform uint)
|
0:19 Branch: Return with expression
|
||||||
0:22 Function Definition: fun1(i1; ( temp 4-component vector of float)
|
0:19 Function Call: fun4(u1;u1; ( temp 4-component vector of float)
|
||||||
0:22 Function Parameters:
|
0:19 'entityId' ( temp uint)
|
||||||
0:22 'index' ( in int)
|
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:? Sequence
|
0:? Sequence
|
||||||
0:23 Sequence
|
0:23 move second child to first child ( temp int)
|
||||||
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:? '@entryPointOutput' (layout( location=0) out int)
|
||||||
0:28 Function Call: @main( ( temp int)
|
0:23 Function Call: @main( ( temp int)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? '@entryPointOutput' (layout( location=0) out int)
|
0:? '@entryPointOutput' (layout( location=0) out int)
|
||||||
|
|
||||||
|
|||||||
@ -31,20 +31,29 @@ gl_FragCoord origin is upper left
|
|||||||
0:20 10.000000
|
0:20 10.000000
|
||||||
0:22 Constant:
|
0:22 Constant:
|
||||||
0:22 10.000000
|
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 Sequence
|
||||||
0:26 move second child to first child ( temp float)
|
0:26 move second child to first child ( temp 8-element array of 3-component vector of float)
|
||||||
0:26 'n' ( temp float)
|
0:26 'a' ( const (read only) 8-element array of 3-component vector of float)
|
||||||
0:26 Constant:
|
0:26 Construct vec3 ( temp 8-element array of 3-component vector of float)
|
||||||
0:26 0.000000
|
0:27 vector-scale ( temp 3-component vector of float)
|
||||||
0:27 Sequence
|
0:27 Constant:
|
||||||
0:27 move second child to first child ( temp 8-element array of 3-component vector of float)
|
0:27 0.577350
|
||||||
0:27 'a' ( const (read only) 8-element array of 3-component vector of float)
|
0:27 0.577350
|
||||||
0:27 Construct vec3 ( temp 8-element array of 3-component vector of float)
|
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:28 vector-scale ( temp 3-component vector of float)
|
0:28 vector-scale ( temp 3-component vector of float)
|
||||||
0:28 Constant:
|
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 add second child into first child ( temp float)
|
||||||
0:28 'n' ( temp float)
|
0:28 'n' ( temp float)
|
||||||
0:28 Constant:
|
0:28 Constant:
|
||||||
@ -53,7 +62,7 @@ gl_FragCoord origin is upper left
|
|||||||
0:29 Constant:
|
0:29 Constant:
|
||||||
0:29 -0.577350
|
0:29 -0.577350
|
||||||
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 add second child into first child ( temp float)
|
||||||
0:29 'n' ( temp float)
|
0:29 'n' ( temp float)
|
||||||
0:29 Constant:
|
0:29 Constant:
|
||||||
@ -61,8 +70,8 @@ gl_FragCoord origin is upper left
|
|||||||
0:30 vector-scale ( temp 3-component vector of float)
|
0:30 vector-scale ( temp 3-component vector of float)
|
||||||
0:30 Constant:
|
0:30 Constant:
|
||||||
0:30 -0.577350
|
0:30 -0.577350
|
||||||
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 add second child into first child ( temp float)
|
||||||
0:30 'n' ( temp float)
|
0:30 'n' ( temp float)
|
||||||
0:30 Constant:
|
0:30 Constant:
|
||||||
@ -71,16 +80,16 @@ gl_FragCoord origin is upper left
|
|||||||
0:31 Constant:
|
0:31 Constant:
|
||||||
0:31 -0.577350
|
0:31 -0.577350
|
||||||
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 add second child into first child ( temp float)
|
||||||
0:31 'n' ( temp float)
|
0:31 'n' ( temp float)
|
||||||
0:31 Constant:
|
0:31 Constant:
|
||||||
0:31 1.000000
|
0:31 1.000000
|
||||||
0:32 vector-scale ( temp 3-component vector of float)
|
0:32 vector-scale ( temp 3-component vector of float)
|
||||||
0:32 Constant:
|
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 0.577350
|
|
||||||
0:32 add second child into first child ( temp float)
|
0:32 add second child into first child ( temp float)
|
||||||
0:32 'n' ( temp float)
|
0:32 'n' ( temp float)
|
||||||
0:32 Constant:
|
0:32 Constant:
|
||||||
@ -89,7 +98,7 @@ gl_FragCoord origin is upper left
|
|||||||
0:33 Constant:
|
0:33 Constant:
|
||||||
0:33 0.577350
|
0:33 0.577350
|
||||||
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 add second child into first child ( temp float)
|
||||||
0:33 'n' ( temp float)
|
0:33 'n' ( temp float)
|
||||||
0:33 Constant:
|
0:33 Constant:
|
||||||
@ -97,38 +106,38 @@ gl_FragCoord origin is upper left
|
|||||||
0:34 vector-scale ( temp 3-component vector of float)
|
0:34 vector-scale ( temp 3-component vector of float)
|
||||||
0:34 Constant:
|
0:34 Constant:
|
||||||
0:34 0.577350
|
0:34 0.577350
|
||||||
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 add second child into first child ( temp float)
|
||||||
0:34 'n' ( temp float)
|
0:34 'n' ( temp float)
|
||||||
0:34 Constant:
|
0:34 Constant:
|
||||||
0:34 1.000000
|
0:34 1.000000
|
||||||
0:35 vector-scale ( temp 3-component vector of float)
|
0:36 Sequence
|
||||||
0:35 Constant:
|
0:36 move second child to first child ( temp structure{ temp 3-component vector of float a})
|
||||||
0:35 0.577350
|
0:36 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
|
||||||
0:35 0.577350
|
0:36 Construct structure ( temp structure{ temp 3-component vector of float a})
|
||||||
0:35 -0.577350
|
0:36 vector-scale ( temp 3-component vector of float)
|
||||||
0:35 add second child into first child ( temp float)
|
0:36 Constant:
|
||||||
0:35 'n' ( temp float)
|
0:36 -0.577350
|
||||||
0:35 Constant:
|
0:36 0.577350
|
||||||
0:35 1.000000
|
0:36 0.577350
|
||||||
0:37 Sequence
|
0:36 add second child into first child ( temp float)
|
||||||
0:37 move second child to first child ( temp structure{ temp 3-component vector of float a})
|
0:36 'n' ( temp float)
|
||||||
0:37 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
|
0:36 Constant:
|
||||||
0:37 Construct structure ( temp structure{ temp 3-component vector of float a})
|
0:36 1.000000
|
||||||
0:37 vector-scale ( temp 3-component vector of float)
|
0:38 Sequence
|
||||||
0:37 Constant:
|
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:37 -0.577350
|
0:38 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||||
0:37 0.577350
|
0:38 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||||
0:37 0.577350
|
0:38 vector-scale ( temp 3-component vector of float)
|
||||||
0:37 add second child into first child ( temp float)
|
0:38 Constant:
|
||||||
0:37 'n' ( temp float)
|
0:38 -0.577350
|
||||||
0:37 Constant:
|
0:38 0.577350
|
||||||
0:37 1.000000
|
0:38 0.577350
|
||||||
0:39 Sequence
|
0:38 add second child into first child ( temp float)
|
||||||
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:38 'n' ( temp float)
|
||||||
0:39 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
0:38 Constant:
|
||||||
0:39 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
0:38 1.000000
|
||||||
0:39 vector-scale ( temp 3-component vector of float)
|
0:39 vector-scale ( temp 3-component vector of float)
|
||||||
0:39 Constant:
|
0:39 Constant:
|
||||||
0:39 -0.577350
|
0:39 -0.577350
|
||||||
@ -138,41 +147,32 @@ gl_FragCoord origin is upper left
|
|||||||
0:39 'n' ( temp float)
|
0:39 'n' ( temp float)
|
||||||
0:39 Constant:
|
0:39 Constant:
|
||||||
0:39 1.000000
|
0:39 1.000000
|
||||||
0:40 vector-scale ( temp 3-component vector of float)
|
0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||||
0:40 Constant:
|
0:45 Function Parameters:
|
||||||
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:? Sequence
|
||||||
0:47 Function Call: Test1( ( temp void)
|
0:46 Function Call: Test1( ( temp void)
|
||||||
0:50 move second child to first child ( temp 4-component vector of float)
|
0:49 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:49 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:49 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||||
0:50 Constant:
|
0:49 Constant:
|
||||||
0:50 0 (const int)
|
0:49 0 (const int)
|
||||||
0:50 Constant:
|
0:49 Constant:
|
||||||
0:50 1.000000
|
0:49 1.000000
|
||||||
0:50 1.000000
|
0:49 1.000000
|
||||||
0:50 1.000000
|
0:49 1.000000
|
||||||
0:50 1.000000
|
0:49 1.000000
|
||||||
0:51 Branch: Return with expression
|
0:50 Branch: Return with expression
|
||||||
0:51 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
0:50 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||||
0:46 Function Definition: main( ( temp void)
|
0:45 Function Definition: main( ( temp void)
|
||||||
0:46 Function Parameters:
|
0:45 Function Parameters:
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:46 Sequence
|
0:45 Sequence
|
||||||
0:46 move second child to first child ( temp 4-component vector of float)
|
0:45 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:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||||
0:46 color: direct index for structure ( temp 4-component vector of float)
|
0:45 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:45 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||||
0:46 Constant:
|
0:45 Constant:
|
||||||
0:46 0 (const int)
|
0:45 0 (const int)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||||
|
|
||||||
@ -212,20 +212,29 @@ gl_FragCoord origin is upper left
|
|||||||
0:20 10.000000
|
0:20 10.000000
|
||||||
0:22 Constant:
|
0:22 Constant:
|
||||||
0:22 10.000000
|
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 Sequence
|
||||||
0:26 move second child to first child ( temp float)
|
0:26 move second child to first child ( temp 8-element array of 3-component vector of float)
|
||||||
0:26 'n' ( temp float)
|
0:26 'a' ( const (read only) 8-element array of 3-component vector of float)
|
||||||
0:26 Constant:
|
0:26 Construct vec3 ( temp 8-element array of 3-component vector of float)
|
||||||
0:26 0.000000
|
0:27 vector-scale ( temp 3-component vector of float)
|
||||||
0:27 Sequence
|
0:27 Constant:
|
||||||
0:27 move second child to first child ( temp 8-element array of 3-component vector of float)
|
0:27 0.577350
|
||||||
0:27 'a' ( const (read only) 8-element array of 3-component vector of float)
|
0:27 0.577350
|
||||||
0:27 Construct vec3 ( temp 8-element array of 3-component vector of float)
|
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:28 vector-scale ( temp 3-component vector of float)
|
0:28 vector-scale ( temp 3-component vector of float)
|
||||||
0:28 Constant:
|
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 add second child into first child ( temp float)
|
||||||
0:28 'n' ( temp float)
|
0:28 'n' ( temp float)
|
||||||
0:28 Constant:
|
0:28 Constant:
|
||||||
@ -234,7 +243,7 @@ gl_FragCoord origin is upper left
|
|||||||
0:29 Constant:
|
0:29 Constant:
|
||||||
0:29 -0.577350
|
0:29 -0.577350
|
||||||
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 add second child into first child ( temp float)
|
||||||
0:29 'n' ( temp float)
|
0:29 'n' ( temp float)
|
||||||
0:29 Constant:
|
0:29 Constant:
|
||||||
@ -242,8 +251,8 @@ gl_FragCoord origin is upper left
|
|||||||
0:30 vector-scale ( temp 3-component vector of float)
|
0:30 vector-scale ( temp 3-component vector of float)
|
||||||
0:30 Constant:
|
0:30 Constant:
|
||||||
0:30 -0.577350
|
0:30 -0.577350
|
||||||
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 add second child into first child ( temp float)
|
||||||
0:30 'n' ( temp float)
|
0:30 'n' ( temp float)
|
||||||
0:30 Constant:
|
0:30 Constant:
|
||||||
@ -252,16 +261,16 @@ gl_FragCoord origin is upper left
|
|||||||
0:31 Constant:
|
0:31 Constant:
|
||||||
0:31 -0.577350
|
0:31 -0.577350
|
||||||
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 add second child into first child ( temp float)
|
||||||
0:31 'n' ( temp float)
|
0:31 'n' ( temp float)
|
||||||
0:31 Constant:
|
0:31 Constant:
|
||||||
0:31 1.000000
|
0:31 1.000000
|
||||||
0:32 vector-scale ( temp 3-component vector of float)
|
0:32 vector-scale ( temp 3-component vector of float)
|
||||||
0:32 Constant:
|
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 0.577350
|
|
||||||
0:32 add second child into first child ( temp float)
|
0:32 add second child into first child ( temp float)
|
||||||
0:32 'n' ( temp float)
|
0:32 'n' ( temp float)
|
||||||
0:32 Constant:
|
0:32 Constant:
|
||||||
@ -270,7 +279,7 @@ gl_FragCoord origin is upper left
|
|||||||
0:33 Constant:
|
0:33 Constant:
|
||||||
0:33 0.577350
|
0:33 0.577350
|
||||||
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 add second child into first child ( temp float)
|
||||||
0:33 'n' ( temp float)
|
0:33 'n' ( temp float)
|
||||||
0:33 Constant:
|
0:33 Constant:
|
||||||
@ -278,38 +287,38 @@ gl_FragCoord origin is upper left
|
|||||||
0:34 vector-scale ( temp 3-component vector of float)
|
0:34 vector-scale ( temp 3-component vector of float)
|
||||||
0:34 Constant:
|
0:34 Constant:
|
||||||
0:34 0.577350
|
0:34 0.577350
|
||||||
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 add second child into first child ( temp float)
|
||||||
0:34 'n' ( temp float)
|
0:34 'n' ( temp float)
|
||||||
0:34 Constant:
|
0:34 Constant:
|
||||||
0:34 1.000000
|
0:34 1.000000
|
||||||
0:35 vector-scale ( temp 3-component vector of float)
|
0:36 Sequence
|
||||||
0:35 Constant:
|
0:36 move second child to first child ( temp structure{ temp 3-component vector of float a})
|
||||||
0:35 0.577350
|
0:36 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
|
||||||
0:35 0.577350
|
0:36 Construct structure ( temp structure{ temp 3-component vector of float a})
|
||||||
0:35 -0.577350
|
0:36 vector-scale ( temp 3-component vector of float)
|
||||||
0:35 add second child into first child ( temp float)
|
0:36 Constant:
|
||||||
0:35 'n' ( temp float)
|
0:36 -0.577350
|
||||||
0:35 Constant:
|
0:36 0.577350
|
||||||
0:35 1.000000
|
0:36 0.577350
|
||||||
0:37 Sequence
|
0:36 add second child into first child ( temp float)
|
||||||
0:37 move second child to first child ( temp structure{ temp 3-component vector of float a})
|
0:36 'n' ( temp float)
|
||||||
0:37 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
|
0:36 Constant:
|
||||||
0:37 Construct structure ( temp structure{ temp 3-component vector of float a})
|
0:36 1.000000
|
||||||
0:37 vector-scale ( temp 3-component vector of float)
|
0:38 Sequence
|
||||||
0:37 Constant:
|
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:37 -0.577350
|
0:38 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||||
0:37 0.577350
|
0:38 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
||||||
0:37 0.577350
|
0:38 vector-scale ( temp 3-component vector of float)
|
||||||
0:37 add second child into first child ( temp float)
|
0:38 Constant:
|
||||||
0:37 'n' ( temp float)
|
0:38 -0.577350
|
||||||
0:37 Constant:
|
0:38 0.577350
|
||||||
0:37 1.000000
|
0:38 0.577350
|
||||||
0:39 Sequence
|
0:38 add second child into first child ( temp float)
|
||||||
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:38 'n' ( temp float)
|
||||||
0:39 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
0:38 Constant:
|
||||||
0:39 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
|
0:38 1.000000
|
||||||
0:39 vector-scale ( temp 3-component vector of float)
|
0:39 vector-scale ( temp 3-component vector of float)
|
||||||
0:39 Constant:
|
0:39 Constant:
|
||||||
0:39 -0.577350
|
0:39 -0.577350
|
||||||
@ -319,41 +328,32 @@ gl_FragCoord origin is upper left
|
|||||||
0:39 'n' ( temp float)
|
0:39 'n' ( temp float)
|
||||||
0:39 Constant:
|
0:39 Constant:
|
||||||
0:39 1.000000
|
0:39 1.000000
|
||||||
0:40 vector-scale ( temp 3-component vector of float)
|
0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||||
0:40 Constant:
|
0:45 Function Parameters:
|
||||||
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:? Sequence
|
||||||
0:47 Function Call: Test1( ( temp void)
|
0:46 Function Call: Test1( ( temp void)
|
||||||
0:50 move second child to first child ( temp 4-component vector of float)
|
0:49 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:49 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:49 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||||
0:50 Constant:
|
0:49 Constant:
|
||||||
0:50 0 (const int)
|
0:49 0 (const int)
|
||||||
0:50 Constant:
|
0:49 Constant:
|
||||||
0:50 1.000000
|
0:49 1.000000
|
||||||
0:50 1.000000
|
0:49 1.000000
|
||||||
0:50 1.000000
|
0:49 1.000000
|
||||||
0:50 1.000000
|
0:49 1.000000
|
||||||
0:51 Branch: Return with expression
|
0:50 Branch: Return with expression
|
||||||
0:51 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
0:50 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||||
0:46 Function Definition: main( ( temp void)
|
0:45 Function Definition: main( ( temp void)
|
||||||
0:46 Function Parameters:
|
0:45 Function Parameters:
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:46 Sequence
|
0:45 Sequence
|
||||||
0:46 move second child to first child ( temp 4-component vector of float)
|
0:45 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:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||||
0:46 color: direct index for structure ( temp 4-component vector of float)
|
0:45 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:45 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||||
0:46 Constant:
|
0:45 Constant:
|
||||||
0:46 0 (const int)
|
0:45 0 (const int)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -5,69 +5,33 @@ gl_FragCoord origin is upper left
|
|||||||
0:9 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
|
0:9 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
|
||||||
0:9 Function Parameters:
|
0:9 Function Parameters:
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:85 add ( temp mediump 2-component vector of float)
|
0:40 add ( temp mediump 2-component vector of float)
|
||||||
0:85 'mf16_2' ( temp mediump 2-component vector of float)
|
0:40 'mf16_2' ( temp mediump 2-component vector of float)
|
||||||
0:85 'mf16' ( temp mediump float)
|
0:40 'mf16' ( temp mediump float)
|
||||||
0:86 add ( temp mediump 2-component vector of float)
|
0:41 add ( temp mediump 2-component vector of float)
|
||||||
0:86 'mf10_2' ( temp mediump 2-component vector of float)
|
0:41 'mf10_2' ( temp mediump 2-component vector of float)
|
||||||
0:86 'mf10' ( temp mediump float)
|
0:41 'mf10' ( temp mediump float)
|
||||||
0:87 add ( temp mediump 2-component vector of int)
|
0:42 add ( temp mediump 2-component vector of int)
|
||||||
0:87 'mi16_2' ( temp mediump 2-component vector of int)
|
0:42 'mi16_2' ( temp mediump 2-component vector of int)
|
||||||
0:87 'mi16' ( temp mediump int)
|
0:42 'mi16' ( temp mediump int)
|
||||||
0:88 add ( temp mediump 2-component vector of int)
|
0:43 add ( temp mediump 2-component vector of int)
|
||||||
0:88 'mi12_2' ( temp mediump 2-component vector of int)
|
0:43 'mi12_2' ( temp mediump 2-component vector of int)
|
||||||
0:88 'mi12' ( temp mediump int)
|
0:43 'mi12' ( temp mediump int)
|
||||||
0:89 add ( temp mediump 2-component vector of uint)
|
0:44 add ( temp mediump 2-component vector of uint)
|
||||||
0:89 'mu16_2' ( temp mediump 2-component vector of uint)
|
0:44 'mu16_2' ( temp mediump 2-component vector of uint)
|
||||||
0:89 'mu16' ( temp mediump uint)
|
0:44 'mu16' ( temp mediump uint)
|
||||||
0:91 matrix-times-vector ( temp mediump 4-component vector of float)
|
0:47 move second child to first child ( temp 4-component vector of float)
|
||||||
0:91 'mf16_2x4' ( temp mediump 2X4 matrix of float)
|
0:47 Color: direct index for structure ( temp 4-component vector of float)
|
||||||
0:91 'mf16_2' ( temp mediump 2-component vector of float)
|
0:47 'psout' ( temp structure{ temp 4-component vector of float Color})
|
||||||
0:92 matrix-times-vector ( temp mediump 4-component vector of float)
|
0:47 Constant:
|
||||||
0:92 'mf16_3x4' ( temp mediump 3X4 matrix of float)
|
0:47 0 (const int)
|
||||||
0:92 'mf16_3' ( temp mediump 3-component vector of float)
|
0:47 Constant:
|
||||||
0:93 matrix-times-vector ( temp mediump 4-component vector of float)
|
0:47 0.000000
|
||||||
0:93 'mf16_4x4' ( temp mediump 4X4 matrix of float)
|
0:47 0.000000
|
||||||
0:93 'mf16_4' ( temp mediump 4-component vector of float)
|
0:47 0.000000
|
||||||
0:94 vector-times-matrix ( temp mediump 4-component vector of float)
|
0:47 0.000000
|
||||||
0:94 'mf16_2' ( temp mediump 2-component vector of float)
|
0:48 Branch: Return with expression
|
||||||
0:94 'mf16_4x2' ( temp mediump 4X2 matrix of float)
|
0:48 'psout' ( temp structure{ temp 4-component vector of float Color})
|
||||||
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 Definition: main( ( temp void)
|
||||||
0:9 Function Parameters:
|
0:9 Function Parameters:
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
@ -92,69 +56,33 @@ gl_FragCoord origin is upper left
|
|||||||
0:9 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
|
0:9 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
|
||||||
0:9 Function Parameters:
|
0:9 Function Parameters:
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:85 add ( temp mediump 2-component vector of float)
|
0:40 add ( temp mediump 2-component vector of float)
|
||||||
0:85 'mf16_2' ( temp mediump 2-component vector of float)
|
0:40 'mf16_2' ( temp mediump 2-component vector of float)
|
||||||
0:85 'mf16' ( temp mediump float)
|
0:40 'mf16' ( temp mediump float)
|
||||||
0:86 add ( temp mediump 2-component vector of float)
|
0:41 add ( temp mediump 2-component vector of float)
|
||||||
0:86 'mf10_2' ( temp mediump 2-component vector of float)
|
0:41 'mf10_2' ( temp mediump 2-component vector of float)
|
||||||
0:86 'mf10' ( temp mediump float)
|
0:41 'mf10' ( temp mediump float)
|
||||||
0:87 add ( temp mediump 2-component vector of int)
|
0:42 add ( temp mediump 2-component vector of int)
|
||||||
0:87 'mi16_2' ( temp mediump 2-component vector of int)
|
0:42 'mi16_2' ( temp mediump 2-component vector of int)
|
||||||
0:87 'mi16' ( temp mediump int)
|
0:42 'mi16' ( temp mediump int)
|
||||||
0:88 add ( temp mediump 2-component vector of int)
|
0:43 add ( temp mediump 2-component vector of int)
|
||||||
0:88 'mi12_2' ( temp mediump 2-component vector of int)
|
0:43 'mi12_2' ( temp mediump 2-component vector of int)
|
||||||
0:88 'mi12' ( temp mediump int)
|
0:43 'mi12' ( temp mediump int)
|
||||||
0:89 add ( temp mediump 2-component vector of uint)
|
0:44 add ( temp mediump 2-component vector of uint)
|
||||||
0:89 'mu16_2' ( temp mediump 2-component vector of uint)
|
0:44 'mu16_2' ( temp mediump 2-component vector of uint)
|
||||||
0:89 'mu16' ( temp mediump uint)
|
0:44 'mu16' ( temp mediump uint)
|
||||||
0:91 matrix-times-vector ( temp mediump 4-component vector of float)
|
0:47 move second child to first child ( temp 4-component vector of float)
|
||||||
0:91 'mf16_2x4' ( temp mediump 2X4 matrix of float)
|
0:47 Color: direct index for structure ( temp 4-component vector of float)
|
||||||
0:91 'mf16_2' ( temp mediump 2-component vector of float)
|
0:47 'psout' ( temp structure{ temp 4-component vector of float Color})
|
||||||
0:92 matrix-times-vector ( temp mediump 4-component vector of float)
|
0:47 Constant:
|
||||||
0:92 'mf16_3x4' ( temp mediump 3X4 matrix of float)
|
0:47 0 (const int)
|
||||||
0:92 'mf16_3' ( temp mediump 3-component vector of float)
|
0:47 Constant:
|
||||||
0:93 matrix-times-vector ( temp mediump 4-component vector of float)
|
0:47 0.000000
|
||||||
0:93 'mf16_4x4' ( temp mediump 4X4 matrix of float)
|
0:47 0.000000
|
||||||
0:93 'mf16_4' ( temp mediump 4-component vector of float)
|
0:47 0.000000
|
||||||
0:94 vector-times-matrix ( temp mediump 4-component vector of float)
|
0:47 0.000000
|
||||||
0:94 'mf16_2' ( temp mediump 2-component vector of float)
|
0:48 Branch: Return with expression
|
||||||
0:94 'mf16_4x2' ( temp mediump 4X2 matrix of float)
|
0:48 'psout' ( temp structure{ temp 4-component vector of float Color})
|
||||||
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 Definition: main( ( temp void)
|
||||||
0:9 Function Parameters:
|
0:9 Function Parameters:
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
@ -171,12 +99,12 @@ gl_FragCoord origin is upper left
|
|||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 8000b
|
// Generated by (magic number): 8000b
|
||||||
// Id's are bound by 132
|
// Id's are bound by 70
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 126
|
EntryPoint Fragment 4 "main" 64
|
||||||
ExecutionMode 4 OriginUpperLeft
|
ExecutionMode 4 OriginUpperLeft
|
||||||
Source HLSL 500
|
Source HLSL 500
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
@ -193,26 +121,12 @@ gl_FragCoord origin is upper left
|
|||||||
Name 39 "mi12"
|
Name 39 "mi12"
|
||||||
Name 46 "mu16_2"
|
Name 46 "mu16_2"
|
||||||
Name 49 "mu16"
|
Name 49 "mu16"
|
||||||
Name 55 "mf16_2x4"
|
Name 54 "psout"
|
||||||
Name 61 "mf16_3x4"
|
Name 64 "@entryPointOutput.Color"
|
||||||
Name 65 "mf16_3"
|
Name 67 "$Global"
|
||||||
Name 70 "mf16_4x4"
|
MemberName 67($Global) 0 "b1a"
|
||||||
Name 73 "mf16_4"
|
MemberName 67($Global) 1 "b1b"
|
||||||
Name 79 "mf16_4x2"
|
Name 69 ""
|
||||||
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 14(mf16_2) RelaxedPrecision
|
||||||
Decorate 15 RelaxedPrecision
|
Decorate 15 RelaxedPrecision
|
||||||
Decorate 17(mf16) RelaxedPrecision
|
Decorate 17(mf16) RelaxedPrecision
|
||||||
@ -243,64 +157,14 @@ gl_FragCoord origin is upper left
|
|||||||
Decorate 50 RelaxedPrecision
|
Decorate 50 RelaxedPrecision
|
||||||
Decorate 51 RelaxedPrecision
|
Decorate 51 RelaxedPrecision
|
||||||
Decorate 52 RelaxedPrecision
|
Decorate 52 RelaxedPrecision
|
||||||
Decorate 55(mf16_2x4) RelaxedPrecision
|
Decorate 64(@entryPointOutput.Color) Location 0
|
||||||
Decorate 56 RelaxedPrecision
|
MemberDecorate 67($Global) 0 RelaxedPrecision
|
||||||
Decorate 57 RelaxedPrecision
|
MemberDecorate 67($Global) 0 Offset 0
|
||||||
Decorate 58 RelaxedPrecision
|
MemberDecorate 67($Global) 1 RelaxedPrecision
|
||||||
Decorate 61(mf16_3x4) RelaxedPrecision
|
MemberDecorate 67($Global) 1 Offset 4
|
||||||
Decorate 62 RelaxedPrecision
|
Decorate 67($Global) Block
|
||||||
Decorate 65(mf16_3) RelaxedPrecision
|
Decorate 69 DescriptorSet 0
|
||||||
Decorate 66 RelaxedPrecision
|
Decorate 69 Binding 0
|
||||||
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
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeFloat 32
|
6: TypeFloat 32
|
||||||
@ -318,33 +182,21 @@ gl_FragCoord origin is upper left
|
|||||||
44: TypeVector 43(int) 2
|
44: TypeVector 43(int) 2
|
||||||
45: TypePointer Function 44(ivec2)
|
45: TypePointer Function 44(ivec2)
|
||||||
48: TypePointer Function 43(int)
|
48: TypePointer Function 43(int)
|
||||||
53: TypeMatrix 7(fvec4) 2
|
53: TypePointer Function 8(PS_OUTPUT)
|
||||||
54: TypePointer Function 53
|
55: 27(int) Constant 0
|
||||||
59: TypeMatrix 7(fvec4) 3
|
56: 6(float) Constant 0
|
||||||
60: TypePointer Function 59
|
57: 7(fvec4) ConstantComposite 56 56 56 56
|
||||||
63: TypeVector 6(float) 3
|
58: TypePointer Function 7(fvec4)
|
||||||
64: TypePointer Function 63(fvec3)
|
63: TypePointer Output 7(fvec4)
|
||||||
68: TypeMatrix 7(fvec4) 4
|
64(@entryPointOutput.Color): 63(ptr) Variable Output
|
||||||
69: TypePointer Function 68
|
67($Global): TypeStruct 6(float) 6(float)
|
||||||
72: TypePointer Function 7(fvec4)
|
68: TypePointer Uniform 67($Global)
|
||||||
77: TypeMatrix 12(fvec2) 4
|
69: 68(ptr) Variable Uniform
|
||||||
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
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
127:8(PS_OUTPUT) FunctionCall 10(@main()
|
65:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||||
128: 7(fvec4) CompositeExtract 127 0
|
66: 7(fvec4) CompositeExtract 65 0
|
||||||
Store 126(@entryPointOutput.Color) 128
|
Store 64(@entryPointOutput.Color) 66
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
10(@main():8(PS_OUTPUT) Function None 9
|
10(@main():8(PS_OUTPUT) Function None 9
|
||||||
@ -359,21 +211,7 @@ gl_FragCoord origin is upper left
|
|||||||
39(mi12): 32(ptr) Variable Function
|
39(mi12): 32(ptr) Variable Function
|
||||||
46(mu16_2): 45(ptr) Variable Function
|
46(mu16_2): 45(ptr) Variable Function
|
||||||
49(mu16): 48(ptr) Variable Function
|
49(mu16): 48(ptr) Variable Function
|
||||||
55(mf16_2x4): 54(ptr) Variable Function
|
54(psout): 53(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)
|
15: 12(fvec2) Load 14(mf16_2)
|
||||||
18: 6(float) Load 17(mf16)
|
18: 6(float) Load 17(mf16)
|
||||||
19: 12(fvec2) CompositeConstruct 18 18
|
19: 12(fvec2) CompositeConstruct 18 18
|
||||||
@ -394,44 +232,8 @@ gl_FragCoord origin is upper left
|
|||||||
50: 43(int) Load 49(mu16)
|
50: 43(int) Load 49(mu16)
|
||||||
51: 44(ivec2) CompositeConstruct 50 50
|
51: 44(ivec2) CompositeConstruct 50 50
|
||||||
52: 44(ivec2) IAdd 47 51
|
52: 44(ivec2) IAdd 47 51
|
||||||
56: 53 Load 55(mf16_2x4)
|
59: 58(ptr) AccessChain 54(psout) 55
|
||||||
57: 12(fvec2) Load 14(mf16_2)
|
Store 59 57
|
||||||
58: 7(fvec4) MatrixTimesVector 56 57
|
60:8(PS_OUTPUT) Load 54(psout)
|
||||||
62: 59 Load 61(mf16_3x4)
|
ReturnValue 60
|
||||||
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
|
FunctionEnd
|
||||||
|
|||||||
@ -1,119 +0,0 @@
|
|||||||
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,124 +2,94 @@ hlsl.numericsuffixes.frag
|
|||||||
Shader version: 500
|
Shader version: 500
|
||||||
gl_FragCoord origin is upper left
|
gl_FragCoord origin is upper left
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||||
0:8 Function Parameters:
|
0:5 Function Parameters:
|
||||||
0:? Sequence
|
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 Sequence
|
||||||
0:10 move second child to first child ( temp float)
|
0:10 move second child to first child ( temp uint)
|
||||||
0:10 'r00' ( temp float)
|
0:10 'r03' ( temp uint)
|
||||||
0:10 Constant:
|
0:10 Constant:
|
||||||
0:10 1.000000
|
0:10 2748 (const uint)
|
||||||
0:11 Sequence
|
0:11 Sequence
|
||||||
0:11 move second child to first child ( temp uint)
|
0:11 move second child to first child ( temp uint)
|
||||||
0:11 'r01' ( temp uint)
|
0:11 'r04' ( temp uint)
|
||||||
0:11 Constant:
|
0:11 Constant:
|
||||||
0:11 1 (const uint)
|
0:11 2748 (const uint)
|
||||||
0:12 Sequence
|
0:12 Sequence
|
||||||
0:12 move second child to first child ( temp uint)
|
0:12 move second child to first child ( temp int)
|
||||||
0:12 'r02' ( temp uint)
|
0:12 'r05' ( temp int)
|
||||||
0:12 Constant:
|
0:12 Constant:
|
||||||
0:12 2 (const uint)
|
0:12 5 (const int)
|
||||||
0:13 Sequence
|
0:13 Sequence
|
||||||
0:13 move second child to first child ( temp uint)
|
0:13 move second child to first child ( temp int)
|
||||||
0:13 'r03' ( temp uint)
|
0:13 'r06' ( temp int)
|
||||||
0:13 Constant:
|
0:13 Constant:
|
||||||
0:13 2748 (const uint)
|
0:13 6 (const int)
|
||||||
0:14 Sequence
|
0:14 Sequence
|
||||||
0:14 move second child to first child ( temp uint)
|
0:14 move second child to first child ( temp int)
|
||||||
0:14 'r04' ( temp uint)
|
0:14 'r07' ( temp int)
|
||||||
0:14 Constant:
|
0:14 Constant:
|
||||||
0:14 2748 (const uint)
|
0:14 57 (const int)
|
||||||
0:15 Sequence
|
0:15 Sequence
|
||||||
0:15 move second child to first child ( temp int)
|
0:15 move second child to first child ( temp uint)
|
||||||
0:15 'r05' ( temp int)
|
0:15 'r08' ( temp uint)
|
||||||
0:15 Constant:
|
0:15 Constant:
|
||||||
0:15 5 (const int)
|
0:15 58 (const uint)
|
||||||
0:16 Sequence
|
0:16 Sequence
|
||||||
0:16 move second child to first child ( temp int)
|
0:16 move second child to first child ( temp float)
|
||||||
0:16 'r06' ( temp int)
|
0:16 'r09' ( temp float)
|
||||||
0:16 Constant:
|
0:16 Constant:
|
||||||
0:16 6 (const int)
|
0:16 1.000000
|
||||||
0:17 Sequence
|
0:17 Sequence
|
||||||
0:17 move second child to first child ( temp int)
|
0:17 move second child to first child ( temp float)
|
||||||
0:17 'r07' ( temp int)
|
0:17 'r10' ( temp float)
|
||||||
0:17 Constant:
|
0:17 Constant:
|
||||||
0:17 57 (const int)
|
0:17 1.000000
|
||||||
0:18 Sequence
|
0:18 Sequence
|
||||||
0:18 move second child to first child ( temp uint)
|
0:18 move second child to first child ( temp float)
|
||||||
0:18 'r08' ( temp uint)
|
0:18 'r11' ( temp float)
|
||||||
0:18 Constant:
|
0:18 Constant:
|
||||||
0:18 58 (const uint)
|
0:18 1.100000
|
||||||
0:19 Sequence
|
0:19 Sequence
|
||||||
0:19 move second child to first child ( temp float)
|
0:19 move second child to first child ( temp float)
|
||||||
0:19 'r09' ( temp float)
|
0:19 'r12' ( temp float)
|
||||||
0:19 Constant:
|
0:19 Constant:
|
||||||
0:19 1.000000
|
0:19 1.100000
|
||||||
0:20 Sequence
|
0:22 move second child to first child ( temp 4-component vector of float)
|
||||||
0:20 move second child to first child ( temp float)
|
0:22 color: direct index for structure ( temp 4-component vector of float)
|
||||||
0:20 'r10' ( temp float)
|
0:22 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||||
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 Constant:
|
||||||
0:22 1.100000
|
0:22 0 (const int)
|
||||||
0:23 Sequence
|
0:22 Construct vec4 ( temp 4-component vector of float)
|
||||||
0:23 move second child to first child ( temp uint)
|
0:22 Convert int to float ( temp float)
|
||||||
0:23 'r13' ( temp uint)
|
0:22 'r07' ( temp int)
|
||||||
0:23 Constant:
|
0:23 Branch: Return with expression
|
||||||
0:23 1 (const uint)
|
0:23 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||||
0:24 Sequence
|
0:5 Function Definition: main( ( temp void)
|
||||||
0:24 move second child to first child ( temp uint)
|
0:5 Function Parameters:
|
||||||
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:? Sequence
|
||||||
0:8 Sequence
|
0:5 Sequence
|
||||||
0:8 move second child to first child ( temp 4-component vector of float)
|
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:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||||
0:8 color: direct index for structure ( temp 4-component vector of float)
|
0:5 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:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||||
0:8 Constant:
|
0:5 Constant:
|
||||||
0:8 0 (const int)
|
0:5 0 (const int)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||||
|
|
||||||
@ -130,135 +100,105 @@ Linked fragment stage:
|
|||||||
Shader version: 500
|
Shader version: 500
|
||||||
gl_FragCoord origin is upper left
|
gl_FragCoord origin is upper left
|
||||||
0:? Sequence
|
0:? Sequence
|
||||||
0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||||
0:8 Function Parameters:
|
0:5 Function Parameters:
|
||||||
0:? Sequence
|
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 Sequence
|
||||||
0:10 move second child to first child ( temp float)
|
0:10 move second child to first child ( temp uint)
|
||||||
0:10 'r00' ( temp float)
|
0:10 'r03' ( temp uint)
|
||||||
0:10 Constant:
|
0:10 Constant:
|
||||||
0:10 1.000000
|
0:10 2748 (const uint)
|
||||||
0:11 Sequence
|
0:11 Sequence
|
||||||
0:11 move second child to first child ( temp uint)
|
0:11 move second child to first child ( temp uint)
|
||||||
0:11 'r01' ( temp uint)
|
0:11 'r04' ( temp uint)
|
||||||
0:11 Constant:
|
0:11 Constant:
|
||||||
0:11 1 (const uint)
|
0:11 2748 (const uint)
|
||||||
0:12 Sequence
|
0:12 Sequence
|
||||||
0:12 move second child to first child ( temp uint)
|
0:12 move second child to first child ( temp int)
|
||||||
0:12 'r02' ( temp uint)
|
0:12 'r05' ( temp int)
|
||||||
0:12 Constant:
|
0:12 Constant:
|
||||||
0:12 2 (const uint)
|
0:12 5 (const int)
|
||||||
0:13 Sequence
|
0:13 Sequence
|
||||||
0:13 move second child to first child ( temp uint)
|
0:13 move second child to first child ( temp int)
|
||||||
0:13 'r03' ( temp uint)
|
0:13 'r06' ( temp int)
|
||||||
0:13 Constant:
|
0:13 Constant:
|
||||||
0:13 2748 (const uint)
|
0:13 6 (const int)
|
||||||
0:14 Sequence
|
0:14 Sequence
|
||||||
0:14 move second child to first child ( temp uint)
|
0:14 move second child to first child ( temp int)
|
||||||
0:14 'r04' ( temp uint)
|
0:14 'r07' ( temp int)
|
||||||
0:14 Constant:
|
0:14 Constant:
|
||||||
0:14 2748 (const uint)
|
0:14 57 (const int)
|
||||||
0:15 Sequence
|
0:15 Sequence
|
||||||
0:15 move second child to first child ( temp int)
|
0:15 move second child to first child ( temp uint)
|
||||||
0:15 'r05' ( temp int)
|
0:15 'r08' ( temp uint)
|
||||||
0:15 Constant:
|
0:15 Constant:
|
||||||
0:15 5 (const int)
|
0:15 58 (const uint)
|
||||||
0:16 Sequence
|
0:16 Sequence
|
||||||
0:16 move second child to first child ( temp int)
|
0:16 move second child to first child ( temp float)
|
||||||
0:16 'r06' ( temp int)
|
0:16 'r09' ( temp float)
|
||||||
0:16 Constant:
|
0:16 Constant:
|
||||||
0:16 6 (const int)
|
0:16 1.000000
|
||||||
0:17 Sequence
|
0:17 Sequence
|
||||||
0:17 move second child to first child ( temp int)
|
0:17 move second child to first child ( temp float)
|
||||||
0:17 'r07' ( temp int)
|
0:17 'r10' ( temp float)
|
||||||
0:17 Constant:
|
0:17 Constant:
|
||||||
0:17 57 (const int)
|
0:17 1.000000
|
||||||
0:18 Sequence
|
0:18 Sequence
|
||||||
0:18 move second child to first child ( temp uint)
|
0:18 move second child to first child ( temp float)
|
||||||
0:18 'r08' ( temp uint)
|
0:18 'r11' ( temp float)
|
||||||
0:18 Constant:
|
0:18 Constant:
|
||||||
0:18 58 (const uint)
|
0:18 1.100000
|
||||||
0:19 Sequence
|
0:19 Sequence
|
||||||
0:19 move second child to first child ( temp float)
|
0:19 move second child to first child ( temp float)
|
||||||
0:19 'r09' ( temp float)
|
0:19 'r12' ( temp float)
|
||||||
0:19 Constant:
|
0:19 Constant:
|
||||||
0:19 1.000000
|
0:19 1.100000
|
||||||
0:20 Sequence
|
0:22 move second child to first child ( temp 4-component vector of float)
|
||||||
0:20 move second child to first child ( temp float)
|
0:22 color: direct index for structure ( temp 4-component vector of float)
|
||||||
0:20 'r10' ( temp float)
|
0:22 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||||
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 Constant:
|
||||||
0:22 1.100000
|
0:22 0 (const int)
|
||||||
0:23 Sequence
|
0:22 Construct vec4 ( temp 4-component vector of float)
|
||||||
0:23 move second child to first child ( temp uint)
|
0:22 Convert int to float ( temp float)
|
||||||
0:23 'r13' ( temp uint)
|
0:22 'r07' ( temp int)
|
||||||
0:23 Constant:
|
0:23 Branch: Return with expression
|
||||||
0:23 1 (const uint)
|
0:23 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||||
0:24 Sequence
|
0:5 Function Definition: main( ( temp void)
|
||||||
0:24 move second child to first child ( temp uint)
|
0:5 Function Parameters:
|
||||||
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:? Sequence
|
||||||
0:8 Sequence
|
0:5 Sequence
|
||||||
0:8 move second child to first child ( temp 4-component vector of float)
|
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:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||||
0:8 color: direct index for structure ( temp 4-component vector of float)
|
0:5 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:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||||
0:8 Constant:
|
0:5 Constant:
|
||||||
0:8 0 (const int)
|
0:5 0 (const int)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
|
||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 8000b
|
// Generated by (magic number): 8000b
|
||||||
// Id's are bound by 62
|
// Id's are bound by 54
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 59
|
EntryPoint Fragment 4 "main" 51
|
||||||
ExecutionMode 4 OriginUpperLeft
|
ExecutionMode 4 OriginUpperLeft
|
||||||
Source HLSL 500
|
Source HLSL 500
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
@ -278,15 +218,9 @@ gl_FragCoord origin is upper left
|
|||||||
Name 35 "r10"
|
Name 35 "r10"
|
||||||
Name 36 "r11"
|
Name 36 "r11"
|
||||||
Name 38 "r12"
|
Name 38 "r12"
|
||||||
Name 39 "r13"
|
Name 40 "ps_output"
|
||||||
Name 40 "r14"
|
Name 51 "@entryPointOutput.color"
|
||||||
Name 41 "r15"
|
Decorate 51(@entryPointOutput.color) Location 0
|
||||||
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
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeFloat 32
|
6: TypeFloat 32
|
||||||
@ -307,18 +241,16 @@ gl_FragCoord origin is upper left
|
|||||||
31: 24(int) Constant 57
|
31: 24(int) Constant 57
|
||||||
33: 15(int) Constant 58
|
33: 15(int) Constant 58
|
||||||
37: 6(float) Constant 1066192077
|
37: 6(float) Constant 1066192077
|
||||||
42: 24(int) Constant 3
|
39: TypePointer Function 8(PS_OUTPUT)
|
||||||
44: 24(int) Constant 4
|
41: 24(int) Constant 0
|
||||||
47: TypePointer Function 8(PS_OUTPUT)
|
45: TypePointer Function 7(fvec4)
|
||||||
49: 24(int) Constant 0
|
50: TypePointer Output 7(fvec4)
|
||||||
53: TypePointer Function 7(fvec4)
|
51(@entryPointOutput.color): 50(ptr) Variable Output
|
||||||
58: TypePointer Output 7(fvec4)
|
|
||||||
59(@entryPointOutput.color): 58(ptr) Variable Output
|
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
60:8(PS_OUTPUT) FunctionCall 10(@main()
|
52:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||||
61: 7(fvec4) CompositeExtract 60 0
|
53: 7(fvec4) CompositeExtract 52 0
|
||||||
Store 59(@entryPointOutput.color) 61
|
Store 51(@entryPointOutput.color) 53
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
10(@main():8(PS_OUTPUT) Function None 9
|
10(@main():8(PS_OUTPUT) Function None 9
|
||||||
@ -336,13 +268,7 @@ gl_FragCoord origin is upper left
|
|||||||
35(r10): 12(ptr) Variable Function
|
35(r10): 12(ptr) Variable Function
|
||||||
36(r11): 12(ptr) Variable Function
|
36(r11): 12(ptr) Variable Function
|
||||||
38(r12): 12(ptr) Variable Function
|
38(r12): 12(ptr) Variable Function
|
||||||
39(r13): 16(ptr) Variable Function
|
40(ps_output): 39(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 13(r00) 14
|
||||||
Store 17(r01) 18
|
Store 17(r01) 18
|
||||||
Store 19(r02) 20
|
Store 19(r02) 20
|
||||||
@ -356,17 +282,11 @@ gl_FragCoord origin is upper left
|
|||||||
Store 35(r10) 14
|
Store 35(r10) 14
|
||||||
Store 36(r11) 37
|
Store 36(r11) 37
|
||||||
Store 38(r12) 37
|
Store 38(r12) 37
|
||||||
Store 39(r13) 18
|
42: 24(int) Load 30(r07)
|
||||||
Store 40(r14) 20
|
43: 6(float) ConvertSToF 42
|
||||||
Store 41(r15) 42
|
44: 7(fvec4) CompositeConstruct 43 43 43 43
|
||||||
Store 43(r16) 44
|
46: 45(ptr) AccessChain 40(ps_output) 41
|
||||||
Store 45(r17) 18
|
Store 46 44
|
||||||
Store 46(r18) 42
|
47:8(PS_OUTPUT) Load 40(ps_output)
|
||||||
50: 24(int) Load 30(r07)
|
ReturnValue 47
|
||||||
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
|
FunctionEnd
|
||||||
|
|||||||
@ -1,109 +0,0 @@
|
|||||||
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 a;
|
||||||
float4 b;
|
float4 b;
|
||||||
float4 c = { 1, 2, 3, 4 };
|
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()
|
void main()
|
||||||
|
|||||||
@ -1,402 +0,0 @@
|
|||||||
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
|
|
||||||
@ -1,385 +0,0 @@
|
|||||||
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
|
MemberDecorate 20(Types) 3 Offset 64
|
||||||
Decorate 21 ArrayStride 96
|
Decorate 21 ArrayStride 96
|
||||||
MemberDecorate 22(data) 0 Offset 0
|
MemberDecorate 22(data) 0 Offset 0
|
||||||
Decorate 22(data) Block
|
Decorate 22(data) BufferBlock
|
||||||
Decorate 24(data) DescriptorSet 0
|
Decorate 24(data) DescriptorSet 0
|
||||||
Decorate 24(data) Binding 0
|
Decorate 24(data) Binding 0
|
||||||
Decorate 388(dti) BuiltIn GlobalInvocationId
|
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)
|
20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
|
||||||
21: TypeRuntimeArray 20(Types)
|
21: TypeRuntimeArray 20(Types)
|
||||||
22(data): TypeStruct 21
|
22(data): TypeStruct 21
|
||||||
23: TypePointer StorageBuffer 22(data)
|
23: TypePointer Uniform 22(data)
|
||||||
24(data): 23(ptr) Variable StorageBuffer
|
24(data): 23(ptr) Variable Uniform
|
||||||
25: 14(int) Constant 0
|
25: 14(int) Constant 0
|
||||||
26: 6(int) Constant 0
|
26: 6(int) Constant 0
|
||||||
27: TypePointer Function 6(int)
|
27: TypePointer Function 6(int)
|
||||||
32: TypePointer StorageBuffer 13(ivec4)
|
32: TypePointer Uniform 13(ivec4)
|
||||||
35: 6(int) Constant 13
|
35: 6(int) Constant 13
|
||||||
36: 6(int) Constant 3
|
36: 6(int) Constant 3
|
||||||
43: TypePointer StorageBuffer 6(int)
|
43: TypePointer Uniform 6(int)
|
||||||
52: TypeVector 6(int) 2
|
52: TypeVector 6(int) 2
|
||||||
59: 6(int) Constant 1
|
59: 6(int) Constant 1
|
||||||
74: 6(int) Constant 2
|
74: 6(int) Constant 2
|
||||||
79: 14(int) Constant 1
|
79: 14(int) Constant 1
|
||||||
82: TypePointer StorageBuffer 15(ivec4)
|
82: TypePointer Uniform 15(ivec4)
|
||||||
91: TypePointer StorageBuffer 14(int)
|
91: TypePointer Uniform 14(int)
|
||||||
100: TypeVector 14(int) 2
|
100: TypeVector 14(int) 2
|
||||||
113: TypeVector 14(int) 3
|
113: TypeVector 14(int) 3
|
||||||
126: 14(int) Constant 2
|
126: 14(int) Constant 2
|
||||||
129: TypePointer StorageBuffer 17(fvec4)
|
129: TypePointer Uniform 17(fvec4)
|
||||||
138: TypePointer StorageBuffer 16(float)
|
138: TypePointer Uniform 16(float)
|
||||||
147: TypeVector 16(float) 2
|
147: TypeVector 16(float) 2
|
||||||
160: TypeVector 16(float) 3
|
160: TypeVector 16(float) 3
|
||||||
173: 14(int) Constant 3
|
173: 14(int) Constant 3
|
||||||
176: TypePointer StorageBuffer 19(f64vec4)
|
176: TypePointer Uniform 19(f64vec4)
|
||||||
185: TypePointer StorageBuffer 18(float64_t)
|
185: TypePointer Uniform 18(float64_t)
|
||||||
194: TypeVector 18(float64_t) 2
|
194: TypeVector 18(float64_t) 2
|
||||||
207: TypeVector 18(float64_t) 3
|
207: TypeVector 18(float64_t) 3
|
||||||
387: TypePointer Input 7(ivec3)
|
387: TypePointer Input 7(ivec3)
|
||||||
|
|||||||
@ -2355,7 +2355,7 @@ local_size = (32, 16, 1)
|
|||||||
MemberDecorate 20(Types) 3 Offset 64
|
MemberDecorate 20(Types) 3 Offset 64
|
||||||
Decorate 21 ArrayStride 96
|
Decorate 21 ArrayStride 96
|
||||||
MemberDecorate 22(data) 0 Offset 0
|
MemberDecorate 22(data) 0 Offset 0
|
||||||
Decorate 22(data) Block
|
Decorate 22(data) BufferBlock
|
||||||
Decorate 24(data) DescriptorSet 0
|
Decorate 24(data) DescriptorSet 0
|
||||||
Decorate 24(data) Binding 0
|
Decorate 24(data) Binding 0
|
||||||
Decorate 398(dti) BuiltIn GlobalInvocationId
|
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)
|
20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
|
||||||
21: TypeRuntimeArray 20(Types)
|
21: TypeRuntimeArray 20(Types)
|
||||||
22(data): TypeStruct 21
|
22(data): TypeStruct 21
|
||||||
23: TypePointer StorageBuffer 22(data)
|
23: TypePointer Uniform 22(data)
|
||||||
24(data): 23(ptr) Variable StorageBuffer
|
24(data): 23(ptr) Variable Uniform
|
||||||
25: 14(int) Constant 0
|
25: 14(int) Constant 0
|
||||||
26: 6(int) Constant 0
|
26: 6(int) Constant 0
|
||||||
27: TypePointer Function 6(int)
|
27: TypePointer Function 6(int)
|
||||||
32: TypePointer StorageBuffer 13(ivec4)
|
32: TypePointer Uniform 13(ivec4)
|
||||||
35: 6(int) Constant 3
|
35: 6(int) Constant 3
|
||||||
42: TypePointer StorageBuffer 6(int)
|
42: TypePointer Uniform 6(int)
|
||||||
51: TypeVector 6(int) 2
|
51: TypeVector 6(int) 2
|
||||||
58: 6(int) Constant 1
|
58: 6(int) Constant 1
|
||||||
73: 6(int) Constant 2
|
73: 6(int) Constant 2
|
||||||
78: 14(int) Constant 1
|
78: 14(int) Constant 1
|
||||||
81: TypePointer StorageBuffer 15(ivec4)
|
81: TypePointer Uniform 15(ivec4)
|
||||||
90: TypePointer StorageBuffer 14(int)
|
90: TypePointer Uniform 14(int)
|
||||||
99: TypeVector 14(int) 2
|
99: TypeVector 14(int) 2
|
||||||
112: TypeVector 14(int) 3
|
112: TypeVector 14(int) 3
|
||||||
125: 14(int) Constant 2
|
125: 14(int) Constant 2
|
||||||
128: TypePointer StorageBuffer 17(fvec4)
|
128: TypePointer Uniform 17(fvec4)
|
||||||
137: TypePointer StorageBuffer 16(float)
|
137: TypePointer Uniform 16(float)
|
||||||
146: TypeVector 16(float) 2
|
146: TypeVector 16(float) 2
|
||||||
159: TypeVector 16(float) 3
|
159: TypeVector 16(float) 3
|
||||||
172: 14(int) Constant 3
|
172: 14(int) Constant 3
|
||||||
175: TypePointer StorageBuffer 19(f64vec4)
|
175: TypePointer Uniform 19(f64vec4)
|
||||||
184: TypePointer StorageBuffer 18(float64_t)
|
184: TypePointer Uniform 18(float64_t)
|
||||||
193: TypeVector 18(float64_t) 2
|
193: TypeVector 18(float64_t) 2
|
||||||
206: TypeVector 18(float64_t) 3
|
206: TypeVector 18(float64_t) 3
|
||||||
391: TypeBool
|
391: TypeBool
|
||||||
|
|||||||
@ -8058,7 +8058,7 @@ local_size = (32, 16, 1)
|
|||||||
MemberDecorate 20(Types) 3 Offset 64
|
MemberDecorate 20(Types) 3 Offset 64
|
||||||
Decorate 21 ArrayStride 96
|
Decorate 21 ArrayStride 96
|
||||||
MemberDecorate 22(data) 0 Offset 0
|
MemberDecorate 22(data) 0 Offset 0
|
||||||
Decorate 22(data) Block
|
Decorate 22(data) BufferBlock
|
||||||
Decorate 24(data) DescriptorSet 0
|
Decorate 24(data) DescriptorSet 0
|
||||||
Decorate 24(data) Binding 0
|
Decorate 24(data) Binding 0
|
||||||
Decorate 1227(dti) BuiltIn GlobalInvocationId
|
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)
|
20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
|
||||||
21: TypeRuntimeArray 20(Types)
|
21: TypeRuntimeArray 20(Types)
|
||||||
22(data): TypeStruct 21
|
22(data): TypeStruct 21
|
||||||
23: TypePointer StorageBuffer 22(data)
|
23: TypePointer Uniform 22(data)
|
||||||
24(data): 23(ptr) Variable StorageBuffer
|
24(data): 23(ptr) Variable Uniform
|
||||||
25: 14(int) Constant 0
|
25: 14(int) Constant 0
|
||||||
26: 6(int) Constant 0
|
26: 6(int) Constant 0
|
||||||
27: TypePointer Function 6(int)
|
27: TypePointer Function 6(int)
|
||||||
32: TypePointer StorageBuffer 13(ivec4)
|
32: TypePointer Uniform 13(ivec4)
|
||||||
35: 6(int) Constant 3
|
35: 6(int) Constant 3
|
||||||
42: TypePointer StorageBuffer 6(int)
|
42: TypePointer Uniform 6(int)
|
||||||
51: TypeVector 6(int) 2
|
51: TypeVector 6(int) 2
|
||||||
58: 6(int) Constant 1
|
58: 6(int) Constant 1
|
||||||
73: 6(int) Constant 2
|
73: 6(int) Constant 2
|
||||||
78: 14(int) Constant 1
|
78: 14(int) Constant 1
|
||||||
81: TypePointer StorageBuffer 15(ivec4)
|
81: TypePointer Uniform 15(ivec4)
|
||||||
90: TypePointer StorageBuffer 14(int)
|
90: TypePointer Uniform 14(int)
|
||||||
99: TypeVector 14(int) 2
|
99: TypeVector 14(int) 2
|
||||||
112: TypeVector 14(int) 3
|
112: TypeVector 14(int) 3
|
||||||
125: 14(int) Constant 2
|
125: 14(int) Constant 2
|
||||||
128: TypePointer StorageBuffer 17(fvec4)
|
128: TypePointer Uniform 17(fvec4)
|
||||||
137: TypePointer StorageBuffer 16(float)
|
137: TypePointer Uniform 16(float)
|
||||||
146: TypeVector 16(float) 2
|
146: TypeVector 16(float) 2
|
||||||
159: TypeVector 16(float) 3
|
159: TypeVector 16(float) 3
|
||||||
172: 14(int) Constant 3
|
172: 14(int) Constant 3
|
||||||
175: TypePointer StorageBuffer 19(f64vec4)
|
175: TypePointer Uniform 19(f64vec4)
|
||||||
184: TypePointer StorageBuffer 18(float64_t)
|
184: TypePointer Uniform 18(float64_t)
|
||||||
193: TypeVector 18(float64_t) 2
|
193: TypeVector 18(float64_t) 2
|
||||||
206: TypeVector 18(float64_t) 3
|
206: TypeVector 18(float64_t) 3
|
||||||
1226: TypePointer Input 7(ivec3)
|
1226: TypePointer Input 7(ivec3)
|
||||||
|
|||||||
@ -79,7 +79,7 @@ local_size = (32, 16, 1)
|
|||||||
Name 21 "@gl_SubgroupSize"
|
Name 21 "@gl_SubgroupSize"
|
||||||
Decorate 9 ArrayStride 4
|
Decorate 9 ArrayStride 4
|
||||||
MemberDecorate 10(data) 0 Offset 0
|
MemberDecorate 10(data) 0 Offset 0
|
||||||
Decorate 10(data) Block
|
Decorate 10(data) BufferBlock
|
||||||
Decorate 12(data) DescriptorSet 0
|
Decorate 12(data) DescriptorSet 0
|
||||||
Decorate 12(data) Binding 0
|
Decorate 12(data) Binding 0
|
||||||
Decorate 16(@gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
|
Decorate 16(@gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
|
||||||
@ -89,8 +89,8 @@ local_size = (32, 16, 1)
|
|||||||
8: TypeInt 32 0
|
8: TypeInt 32 0
|
||||||
9: TypeRuntimeArray 8(int)
|
9: TypeRuntimeArray 8(int)
|
||||||
10(data): TypeStruct 9
|
10(data): TypeStruct 9
|
||||||
11: TypePointer StorageBuffer 10(data)
|
11: TypePointer Uniform 10(data)
|
||||||
12(data): 11(ptr) Variable StorageBuffer
|
12(data): 11(ptr) Variable Uniform
|
||||||
13: TypeInt 32 1
|
13: TypeInt 32 1
|
||||||
14: 13(int) Constant 0
|
14: 13(int) Constant 0
|
||||||
15: TypePointer Input 8(int)
|
15: TypePointer Input 8(int)
|
||||||
@ -99,7 +99,7 @@ local_size = (32, 16, 1)
|
|||||||
19: 8(int) Constant 3
|
19: 8(int) Constant 3
|
||||||
21(@gl_SubgroupSize): 15(ptr) Variable Input
|
21(@gl_SubgroupSize): 15(ptr) Variable Input
|
||||||
23: 8(int) Constant 0
|
23: 8(int) Constant 0
|
||||||
25: TypePointer StorageBuffer 8(int)
|
25: TypePointer Uniform 8(int)
|
||||||
4(CSMain): 2 Function None 3
|
4(CSMain): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
27: 2 FunctionCall 6(@CSMain()
|
27: 2 FunctionCall 6(@CSMain()
|
||||||
|
|||||||
@ -6219,7 +6219,7 @@ local_size = (32, 16, 1)
|
|||||||
MemberDecorate 20(Types) 3 Offset 64
|
MemberDecorate 20(Types) 3 Offset 64
|
||||||
Decorate 21 ArrayStride 96
|
Decorate 21 ArrayStride 96
|
||||||
MemberDecorate 22(data) 0 Offset 0
|
MemberDecorate 22(data) 0 Offset 0
|
||||||
Decorate 22(data) Block
|
Decorate 22(data) BufferBlock
|
||||||
Decorate 24(data) DescriptorSet 0
|
Decorate 24(data) DescriptorSet 0
|
||||||
Decorate 24(data) Binding 0
|
Decorate 24(data) Binding 0
|
||||||
Decorate 986(dti) BuiltIn GlobalInvocationId
|
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)
|
20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
|
||||||
21: TypeRuntimeArray 20(Types)
|
21: TypeRuntimeArray 20(Types)
|
||||||
22(data): TypeStruct 21
|
22(data): TypeStruct 21
|
||||||
23: TypePointer StorageBuffer 22(data)
|
23: TypePointer Uniform 22(data)
|
||||||
24(data): 23(ptr) Variable StorageBuffer
|
24(data): 23(ptr) Variable Uniform
|
||||||
25: 14(int) Constant 0
|
25: 14(int) Constant 0
|
||||||
26: 6(int) Constant 0
|
26: 6(int) Constant 0
|
||||||
27: TypePointer Function 6(int)
|
27: TypePointer Function 6(int)
|
||||||
32: TypePointer StorageBuffer 13(ivec4)
|
32: TypePointer Uniform 13(ivec4)
|
||||||
35: 6(int) Constant 3
|
35: 6(int) Constant 3
|
||||||
42: TypePointer StorageBuffer 6(int)
|
42: TypePointer Uniform 6(int)
|
||||||
51: TypeVector 6(int) 2
|
51: TypeVector 6(int) 2
|
||||||
58: 6(int) Constant 1
|
58: 6(int) Constant 1
|
||||||
73: 6(int) Constant 2
|
73: 6(int) Constant 2
|
||||||
78: 14(int) Constant 1
|
78: 14(int) Constant 1
|
||||||
81: TypePointer StorageBuffer 15(ivec4)
|
81: TypePointer Uniform 15(ivec4)
|
||||||
90: TypePointer StorageBuffer 14(int)
|
90: TypePointer Uniform 14(int)
|
||||||
99: TypeVector 14(int) 2
|
99: TypeVector 14(int) 2
|
||||||
112: TypeVector 14(int) 3
|
112: TypeVector 14(int) 3
|
||||||
125: 14(int) Constant 2
|
125: 14(int) Constant 2
|
||||||
128: TypePointer StorageBuffer 17(fvec4)
|
128: TypePointer Uniform 17(fvec4)
|
||||||
137: TypePointer StorageBuffer 16(float)
|
137: TypePointer Uniform 16(float)
|
||||||
146: TypeVector 16(float) 2
|
146: TypeVector 16(float) 2
|
||||||
159: TypeVector 16(float) 3
|
159: TypeVector 16(float) 3
|
||||||
172: 14(int) Constant 3
|
172: 14(int) Constant 3
|
||||||
175: TypePointer StorageBuffer 19(f64vec4)
|
175: TypePointer Uniform 19(f64vec4)
|
||||||
184: TypePointer StorageBuffer 18(float64_t)
|
184: TypePointer Uniform 18(float64_t)
|
||||||
193: TypeVector 18(float64_t) 2
|
193: TypeVector 18(float64_t) 2
|
||||||
206: TypeVector 18(float64_t) 3
|
206: TypeVector 18(float64_t) 3
|
||||||
979: TypeBool
|
979: TypeBool
|
||||||
|
|||||||
@ -228,7 +228,7 @@ local_size = (32, 16, 1)
|
|||||||
Name 72 "param"
|
Name 72 "param"
|
||||||
Decorate 14 ArrayStride 8
|
Decorate 14 ArrayStride 8
|
||||||
MemberDecorate 15(data) 0 Offset 0
|
MemberDecorate 15(data) 0 Offset 0
|
||||||
Decorate 15(data) Block
|
Decorate 15(data) BufferBlock
|
||||||
Decorate 17(data) DescriptorSet 0
|
Decorate 17(data) DescriptorSet 0
|
||||||
Decorate 17(data) Binding 0
|
Decorate 17(data) Binding 0
|
||||||
Decorate 70(dti) BuiltIn GlobalInvocationId
|
Decorate 70(dti) BuiltIn GlobalInvocationId
|
||||||
@ -241,8 +241,8 @@ local_size = (32, 16, 1)
|
|||||||
13: TypeInt 64 0
|
13: TypeInt 64 0
|
||||||
14: TypeRuntimeArray 13(int64_t)
|
14: TypeRuntimeArray 13(int64_t)
|
||||||
15(data): TypeStruct 14
|
15(data): TypeStruct 14
|
||||||
16: TypePointer StorageBuffer 15(data)
|
16: TypePointer Uniform 15(data)
|
||||||
17(data): 16(ptr) Variable StorageBuffer
|
17(data): 16(ptr) Variable Uniform
|
||||||
18: TypeInt 32 1
|
18: TypeInt 32 1
|
||||||
19: 18(int) Constant 0
|
19: 18(int) Constant 0
|
||||||
20: 6(int) Constant 0
|
20: 6(int) Constant 0
|
||||||
@ -251,7 +251,7 @@ local_size = (32, 16, 1)
|
|||||||
28: 6(int) Constant 3
|
28: 6(int) Constant 3
|
||||||
30: TypeVector 6(int) 4
|
30: TypeVector 6(int) 4
|
||||||
32: TypeVector 13(int64_t) 4
|
32: TypeVector 13(int64_t) 4
|
||||||
35: TypePointer StorageBuffer 13(int64_t)
|
35: TypePointer Uniform 13(int64_t)
|
||||||
37: 6(int) Constant 1
|
37: 6(int) Constant 1
|
||||||
48: 6(int) Constant 2
|
48: 6(int) Constant 2
|
||||||
69: TypePointer Input 7(ivec3)
|
69: TypePointer Input 7(ivec3)
|
||||||
|
|||||||
@ -1,115 +0,0 @@
|
|||||||
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)
|
|
||||||
|
|
||||||
@ -1,99 +0,0 @@
|
|||||||
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)
|
|
||||||
|
|
||||||
@ -1,176 +0,0 @@
|
|||||||
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);
|
gl_Position = vec4(3 + 2 + 2 * 4 + 2 + 3 * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,6 @@
|
|||||||
|
|
||||||
#extension unknown_extension : require
|
#extension unknown_extension : require
|
||||||
|
|
||||||
int main() {
|
int main(){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -13,12 +13,9 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
|
||||||
int main() {
|
|
||||||
gl_Position = vec4(3 + 1, 3 + 4, 3 + 1);
|
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(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12);
|
||||||
gl_Position = vec4(4 + 3 + 3);
|
gl_Position = vec4(4 + 3 + 3);
|
||||||
gl_Position = 4 + 3 + F.a;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
#version 310 es
|
#version 310 es
|
||||||
#line 1 2
|
#line 1 2
|
||||||
#pragma something
|
#pragma something
|
||||||
void main() { }
|
void main(){ }
|
||||||
|
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#line 8
|
#line 8
|
||||||
|
|
||||||
void main() {
|
void main(){
|
||||||
gl_Position = vec4(10);
|
gl_Position = vec4(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,6 @@
|
|||||||
|
|
||||||
#pragma once
|
#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 = vec4(1);
|
||||||
gl_Position = clamp(1, 2, 3);
|
gl_Position = clamp(1, 2, 3);
|
||||||
gl_Position = vec4(1);
|
gl_Position = vec4(1);
|
||||||
gl_Position = vec4(1, 2);
|
gl_Position = vec4(1, 2);
|
||||||
gl_Position = vec4(fn(3));
|
gl_Position = vec4(fn(3));
|
||||||
[].++ --
|
[]. ++ --
|
||||||
+ - * % / - ! ~
|
+ - * % / - ! ~
|
||||||
<< >> < > <= >=
|
<< >> < > <= >=
|
||||||
== !=
|
== !=
|
||||||
@ -46,21 +46,16 @@ struct S {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void bar(int x) { }
|
|
||||||
|
|
||||||
void foo()
|
void foo()
|
||||||
{
|
{
|
||||||
S s;
|
S s;
|
||||||
s.member2 + s.member1;
|
s . member2 + s . member1;
|
||||||
s.member3.zyx;
|
s . member3 . zyx;
|
||||||
s.member2.xxyz;
|
s . member2 . xxyz;
|
||||||
s.member2.yyz;
|
s . member2 . yyz;
|
||||||
s.member2.xxyz();
|
s . member2 . xxyz();
|
||||||
s.member2.yzy;
|
s . member2 . yzy;
|
||||||
for (int i = 0; i < 100; i = i + 1) {
|
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;
|
||||||
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;
|
yyz;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
int x() {
|
int x(){
|
||||||
something that shouldnt compile;
|
something that shouldnt compile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +1,12 @@
|
|||||||
rayQuery-allOps.comp
|
rayQuery-allOps.comp
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 8000b
|
// Generated by (magic number): 8000b
|
||||||
// Id's are bound by 275
|
// Id's are bound by 258
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
Capability RayQueryKHR
|
Capability RayQueryKHR
|
||||||
Capability RayTraversalPrimitiveCullingKHR
|
Capability RayTraversalPrimitiveCullingKHR
|
||||||
Capability RayQueryPositionFetchKHR
|
|
||||||
Extension "SPV_KHR_ray_query"
|
Extension "SPV_KHR_ray_query"
|
||||||
Extension "SPV_KHR_ray_tracing_position_fetch"
|
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint GLCompute 4 "main"
|
EntryPoint GLCompute 4 "main"
|
||||||
@ -16,7 +14,6 @@ rayQuery-allOps.comp
|
|||||||
Source GLSL 460
|
Source GLSL 460
|
||||||
SourceExtension "GL_EXT_ray_flags_primitive_culling"
|
SourceExtension "GL_EXT_ray_flags_primitive_culling"
|
||||||
SourceExtension "GL_EXT_ray_query"
|
SourceExtension "GL_EXT_ray_query"
|
||||||
SourceExtension "GL_EXT_ray_tracing_position_fetch"
|
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 6 "doSomething("
|
Name 6 "doSomething("
|
||||||
Name 10 "Ray"
|
Name 10 "Ray"
|
||||||
@ -38,17 +35,16 @@ rayQuery-allOps.comp
|
|||||||
Name 83 "_mat3x4"
|
Name 83 "_mat3x4"
|
||||||
Name 143 "t"
|
Name 143 "t"
|
||||||
Name 156 "committedStatus"
|
Name 156 "committedStatus"
|
||||||
Name 184 "positions"
|
Name 241 "o"
|
||||||
Name 258 "o"
|
Name 243 "d"
|
||||||
Name 260 "d"
|
Name 253 "Ray"
|
||||||
Name 270 "Ray"
|
MemberName 253(Ray) 0 "pos"
|
||||||
MemberName 270(Ray) 0 "pos"
|
MemberName 253(Ray) 1 "tmin"
|
||||||
MemberName 270(Ray) 1 "tmin"
|
MemberName 253(Ray) 2 "dir"
|
||||||
MemberName 270(Ray) 2 "dir"
|
MemberName 253(Ray) 3 "tmax"
|
||||||
MemberName 270(Ray) 3 "tmax"
|
Name 255 "Rays"
|
||||||
Name 272 "Rays"
|
MemberName 255(Rays) 0 "rays"
|
||||||
MemberName 272(Rays) 0 "rays"
|
Name 257 ""
|
||||||
Name 274 ""
|
|
||||||
MemberDecorate 15(Log) 0 Offset 0
|
MemberDecorate 15(Log) 0 Offset 0
|
||||||
MemberDecorate 15(Log) 1 Offset 4
|
MemberDecorate 15(Log) 1 Offset 4
|
||||||
Decorate 15(Log) BufferBlock
|
Decorate 15(Log) BufferBlock
|
||||||
@ -56,15 +52,15 @@ rayQuery-allOps.comp
|
|||||||
Decorate 17 Binding 0
|
Decorate 17 Binding 0
|
||||||
Decorate 50(rtas) DescriptorSet 0
|
Decorate 50(rtas) DescriptorSet 0
|
||||||
Decorate 50(rtas) Binding 1
|
Decorate 50(rtas) Binding 1
|
||||||
MemberDecorate 270(Ray) 0 Offset 0
|
MemberDecorate 253(Ray) 0 Offset 0
|
||||||
MemberDecorate 270(Ray) 1 Offset 12
|
MemberDecorate 253(Ray) 1 Offset 12
|
||||||
MemberDecorate 270(Ray) 2 Offset 16
|
MemberDecorate 253(Ray) 2 Offset 16
|
||||||
MemberDecorate 270(Ray) 3 Offset 28
|
MemberDecorate 253(Ray) 3 Offset 28
|
||||||
Decorate 271 ArrayStride 32
|
Decorate 254 ArrayStride 32
|
||||||
MemberDecorate 272(Rays) 0 Offset 0
|
MemberDecorate 255(Rays) 0 Offset 0
|
||||||
Decorate 272(Rays) BufferBlock
|
Decorate 255(Rays) BufferBlock
|
||||||
Decorate 274 DescriptorSet 0
|
Decorate 257 DescriptorSet 0
|
||||||
Decorate 274 Binding 2
|
Decorate 257 Binding 2
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
8: TypeFloat 32
|
8: TypeFloat 32
|
||||||
@ -109,16 +105,13 @@ rayQuery-allOps.comp
|
|||||||
91: TypeVector 8(float) 2
|
91: TypeVector 8(float) 2
|
||||||
144: 8(float) Constant 1056964608
|
144: 8(float) Constant 1056964608
|
||||||
175: 14(int) Constant 1
|
175: 14(int) Constant 1
|
||||||
181: 14(int) Constant 3
|
198: 14(int) Constant 2
|
||||||
182: TypeArray 9(fvec3) 181
|
231: 14(int) Constant 256
|
||||||
183: TypePointer Function 182
|
253(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float)
|
||||||
215: 14(int) Constant 2
|
254: TypeRuntimeArray 253(Ray)
|
||||||
248: 14(int) Constant 256
|
255(Rays): TypeStruct 254
|
||||||
270(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float)
|
256: TypePointer Uniform 255(Rays)
|
||||||
271: TypeRuntimeArray 270(Ray)
|
257: 256(ptr) Variable Uniform
|
||||||
272(Rays): TypeStruct 271
|
|
||||||
273: TypePointer Uniform 272(Rays)
|
|
||||||
274: 273(ptr) Variable Uniform
|
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
43(ray): 25(ptr) Variable Function
|
43(ray): 25(ptr) Variable Function
|
||||||
@ -127,9 +120,8 @@ rayQuery-allOps.comp
|
|||||||
83(_mat3x4): 82(ptr) Variable Function
|
83(_mat3x4): 82(ptr) Variable Function
|
||||||
143(t): 35(ptr) Variable Function
|
143(t): 35(ptr) Variable Function
|
||||||
156(committedStatus): 68(ptr) Variable Function
|
156(committedStatus): 68(ptr) Variable Function
|
||||||
184(positions): 183(ptr) Variable Function
|
241(o): 29(ptr) Variable Function
|
||||||
258(o): 29(ptr) Variable Function
|
243(d): 29(ptr) Variable Function
|
||||||
260(d): 29(ptr) Variable Function
|
|
||||||
44: 10(Ray) FunctionCall 12(makeRayDesc()
|
44: 10(Ray) FunctionCall 12(makeRayDesc()
|
||||||
Store 43(ray) 44
|
Store 43(ray) 44
|
||||||
51: 48 Load 50(rtas)
|
51: 48 Load 50(rtas)
|
||||||
@ -311,130 +303,110 @@ rayQuery-allOps.comp
|
|||||||
180: 2 FunctionCall 6(doSomething()
|
180: 2 FunctionCall 6(doSomething()
|
||||||
Branch 179
|
Branch 179
|
||||||
179: Label
|
179: Label
|
||||||
185: 182 RayQueryGetIntersectionTriangleVertexPositionsKHR 47(rayQuery) 23
|
Branch 162
|
||||||
Store 184(positions) 185
|
161: Label
|
||||||
186: 35(ptr) AccessChain 184(positions) 19 20
|
182: 18(int) RayQueryGetIntersectionGeometryIndexKHR 47(rayQuery) 23
|
||||||
187: 8(float) Load 186
|
183: 66(bool) SGreaterThan 182 19
|
||||||
188: 66(bool) FOrdLessThan 187 27
|
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
|
||||||
SelectionMerge 190 None
|
SelectionMerge 190 None
|
||||||
BranchConditional 188 189 190
|
BranchConditional 188 189 190
|
||||||
189: Label
|
189: Label
|
||||||
191: 35(ptr) AccessChain 184(positions) 31 175
|
191: 2 FunctionCall 6(doSomething()
|
||||||
192: 8(float) Load 191
|
|
||||||
193: 66(bool) FOrdGreaterThan 192 27
|
|
||||||
Branch 190
|
Branch 190
|
||||||
190: Label
|
190: Label
|
||||||
194: 66(bool) Phi 188 179 193 189
|
192: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23
|
||||||
SelectionMerge 196 None
|
193: 66(bool) SGreaterThan 192 19
|
||||||
BranchConditional 194 195 196
|
SelectionMerge 195 None
|
||||||
195: Label
|
BranchConditional 193 194 195
|
||||||
197: 2 FunctionCall 6(doSomething()
|
194: Label
|
||||||
Branch 196
|
196: 2 FunctionCall 6(doSomething()
|
||||||
196: Label
|
Branch 195
|
||||||
Branch 162
|
195: Label
|
||||||
161: Label
|
197: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23
|
||||||
199: 18(int) RayQueryGetIntersectionGeometryIndexKHR 47(rayQuery) 23
|
199: 8(float) CompositeExtract 197 2
|
||||||
200: 66(bool) SGreaterThan 199 19
|
200: 66(bool) FOrdGreaterThan 199 27
|
||||||
SelectionMerge 202 None
|
SelectionMerge 202 None
|
||||||
BranchConditional 200 201 202
|
BranchConditional 200 201 202
|
||||||
201: Label
|
201: Label
|
||||||
203: 2 FunctionCall 6(doSomething()
|
203: 2 FunctionCall 6(doSomething()
|
||||||
Branch 202
|
Branch 202
|
||||||
202: Label
|
202: Label
|
||||||
204: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23
|
204: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23
|
||||||
205: 66(bool) SGreaterThan 204 19
|
205: 8(float) CompositeExtract 204 0
|
||||||
SelectionMerge 207 None
|
206: 66(bool) FOrdGreaterThan 205 27
|
||||||
BranchConditional 205 206 207
|
SelectionMerge 208 None
|
||||||
206: Label
|
BranchConditional 206 207 208
|
||||||
208: 2 FunctionCall 6(doSomething()
|
207: Label
|
||||||
Branch 207
|
209: 2 FunctionCall 6(doSomething()
|
||||||
207: Label
|
Branch 208
|
||||||
209: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23
|
208: Label
|
||||||
210: 66(bool) SGreaterThan 209 19
|
210: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23
|
||||||
SelectionMerge 212 None
|
211: 66(bool) SGreaterThan 210 19
|
||||||
BranchConditional 210 211 212
|
SelectionMerge 213 None
|
||||||
211: Label
|
BranchConditional 211 212 213
|
||||||
213: 2 FunctionCall 6(doSomething()
|
212: Label
|
||||||
Branch 212
|
214: 2 FunctionCall 6(doSomething()
|
||||||
212: Label
|
Branch 213
|
||||||
214: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23
|
213: Label
|
||||||
216: 8(float) CompositeExtract 214 2
|
215: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23
|
||||||
217: 66(bool) FOrdGreaterThan 216 27
|
216: 66(bool) FOrdGreaterThan 215 27
|
||||||
SelectionMerge 219 None
|
SelectionMerge 218 None
|
||||||
BranchConditional 217 218 219
|
BranchConditional 216 217 218
|
||||||
218: Label
|
217: Label
|
||||||
220: 2 FunctionCall 6(doSomething()
|
219: 2 FunctionCall 6(doSomething()
|
||||||
Branch 219
|
Branch 218
|
||||||
219: Label
|
218: 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
|
Branch 162
|
||||||
162: Label
|
162: Label
|
||||||
239: 35(ptr) AccessChain 83(_mat3x4) 19 20
|
222: 35(ptr) AccessChain 83(_mat3x4) 19 20
|
||||||
240: 8(float) Load 239
|
223: 8(float) Load 222
|
||||||
241: 35(ptr) AccessChain 78(_mat4x3) 19 20
|
224: 35(ptr) AccessChain 78(_mat4x3) 19 20
|
||||||
242: 8(float) Load 241
|
225: 8(float) Load 224
|
||||||
243: 66(bool) FOrdEqual 240 242
|
226: 66(bool) FOrdEqual 223 225
|
||||||
SelectionMerge 245 None
|
SelectionMerge 228 None
|
||||||
BranchConditional 243 244 245
|
BranchConditional 226 227 228
|
||||||
244: Label
|
227: Label
|
||||||
246: 2 FunctionCall 6(doSomething()
|
229: 2 FunctionCall 6(doSomething()
|
||||||
Branch 245
|
Branch 228
|
||||||
245: Label
|
228: Label
|
||||||
247: 14(int) RayQueryGetRayFlagsKHR 47(rayQuery)
|
230: 14(int) RayQueryGetRayFlagsKHR 47(rayQuery)
|
||||||
249: 66(bool) UGreaterThan 247 248
|
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
|
||||||
SelectionMerge 251 None
|
SelectionMerge 251 None
|
||||||
BranchConditional 249 250 251
|
BranchConditional 249 250 251
|
||||||
250: Label
|
250: Label
|
||||||
252: 2 FunctionCall 6(doSomething()
|
252: 2 FunctionCall 6(doSomething()
|
||||||
Branch 251
|
Branch 251
|
||||||
251: Label
|
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
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
6(doSomething(): 2 Function None 3
|
6(doSomething(): 2 Function None 3
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
399360 ../build/install/bin/glslang.exe
|
399360 ../build/install/bin/glslangValidator.exe
|
||||||
|
|||||||
@ -13,8 +13,10 @@ spv.460.subgroupEXT.mesh
|
|||||||
Capability GroupNonUniformShuffleRelative
|
Capability GroupNonUniformShuffleRelative
|
||||||
Capability GroupNonUniformClustered
|
Capability GroupNonUniformClustered
|
||||||
Capability GroupNonUniformQuad
|
Capability GroupNonUniformQuad
|
||||||
|
Capability FragmentShadingRateKHR
|
||||||
Capability MeshShadingEXT
|
Capability MeshShadingEXT
|
||||||
Extension "SPV_EXT_mesh_shader"
|
Extension "SPV_EXT_mesh_shader"
|
||||||
|
Extension "SPV_KHR_fragment_shading_rate"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint MeshEXT 4 "main" 35 41 57 109 147 161 162 167 168 171 172 173 174 175
|
EntryPoint MeshEXT 4 "main" 35 41 57 109 147 161 162 167 168 171 172 173 174 175
|
||||||
@ -63,6 +65,7 @@ spv.460.subgroupEXT.mesh
|
|||||||
MemberName 106(gl_MeshPerPrimitiveEXT) 1 "gl_Layer"
|
MemberName 106(gl_MeshPerPrimitiveEXT) 1 "gl_Layer"
|
||||||
MemberName 106(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex"
|
MemberName 106(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex"
|
||||||
MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
|
MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
|
||||||
|
MemberName 106(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT"
|
||||||
Name 109 "gl_MeshPrimitivesEXT"
|
Name 109 "gl_MeshPrimitivesEXT"
|
||||||
Name 147 "gl_PrimitiveTriangleIndicesEXT"
|
Name 147 "gl_PrimitiveTriangleIndicesEXT"
|
||||||
Name 161 "gl_SubgroupSize"
|
Name 161 "gl_SubgroupSize"
|
||||||
@ -92,6 +95,8 @@ spv.460.subgroupEXT.mesh
|
|||||||
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex
|
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex
|
||||||
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV
|
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV
|
||||||
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT
|
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 106(gl_MeshPerPrimitiveEXT) Block
|
||||||
Decorate 147(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT
|
Decorate 147(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT
|
||||||
Decorate 161(gl_SubgroupSize) RelaxedPrecision
|
Decorate 161(gl_SubgroupSize) RelaxedPrecision
|
||||||
@ -146,7 +151,7 @@ spv.460.subgroupEXT.mesh
|
|||||||
79: 30(int) Constant 264
|
79: 30(int) Constant 264
|
||||||
80: 30(int) Constant 2
|
80: 30(int) Constant 2
|
||||||
105: TypeBool
|
105: TypeBool
|
||||||
106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool)
|
106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool) 59(int)
|
||||||
107: TypeArray 106(gl_MeshPerPrimitiveEXT) 47
|
107: TypeArray 106(gl_MeshPerPrimitiveEXT) 47
|
||||||
108: TypePointer Output 107
|
108: TypePointer Output 107
|
||||||
109(gl_MeshPrimitivesEXT): 108(ptr) Variable Output
|
109(gl_MeshPrimitivesEXT): 108(ptr) Variable Output
|
||||||
|
|||||||
@ -1,9 +0,0 @@
|
|||||||
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
|
spv.bufferhandle8.frag
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 8000b
|
// Generated by (magic number): 8000b
|
||||||
// Id's are bound by 39
|
// Id's are bound by 27
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
Capability PhysicalStorageBufferAddressesEXT
|
Capability PhysicalStorageBufferAddressesEXT
|
||||||
@ -21,46 +21,41 @@ spv.bufferhandle8.frag
|
|||||||
MemberName 10(T1) 0 "x"
|
MemberName 10(T1) 0 "x"
|
||||||
Name 11 "T2"
|
Name 11 "T2"
|
||||||
MemberName 11(T2) 0 "x"
|
MemberName 11(T2) 0 "x"
|
||||||
Name 13 "x"
|
Name 13 "T3"
|
||||||
Name 14 "Blah"
|
MemberName 13(T3) 0 "Bindings"
|
||||||
MemberName 14(Blah) 0 "t1"
|
Name 15 "t3"
|
||||||
MemberName 14(Blah) 1 "t2"
|
Name 23 "t2"
|
||||||
Name 16 "T3"
|
MemberName 23(t2) 0 "f"
|
||||||
MemberName 16(T3) 0 "Bindings"
|
MemberName 23(t2) 1 "g"
|
||||||
Name 18 "t3"
|
Name 24 "blockType"
|
||||||
Name 35 "t2"
|
MemberName 24(blockType) 0 "a"
|
||||||
MemberName 35(t2) 0 "f"
|
MemberName 24(blockType) 1 "b"
|
||||||
MemberName 35(t2) 1 "g"
|
MemberName 24(blockType) 2 "c"
|
||||||
Name 36 "blockType"
|
MemberName 24(blockType) 3 "d"
|
||||||
MemberName 36(blockType) 0 "a"
|
MemberName 24(blockType) 4 "e"
|
||||||
MemberName 36(blockType) 1 "b"
|
Name 26 "t"
|
||||||
MemberName 36(blockType) 2 "c"
|
MemberDecorate 8(Blah) 0 Offset 0
|
||||||
MemberName 36(blockType) 3 "d"
|
MemberDecorate 8(Blah) 1 Offset 8
|
||||||
MemberName 36(blockType) 4 "e"
|
|
||||||
Name 38 "t"
|
|
||||||
MemberDecorate 10(T1) 0 Offset 0
|
MemberDecorate 10(T1) 0 Offset 0
|
||||||
Decorate 10(T1) Block
|
Decorate 10(T1) Block
|
||||||
MemberDecorate 11(T2) 0 Offset 0
|
MemberDecorate 11(T2) 0 Offset 0
|
||||||
Decorate 11(T2) Block
|
Decorate 11(T2) Block
|
||||||
MemberDecorate 14(Blah) 0 Offset 0
|
Decorate 12 ArrayStride 16
|
||||||
MemberDecorate 14(Blah) 1 Offset 8
|
MemberDecorate 13(T3) 0 Offset 0
|
||||||
Decorate 15 ArrayStride 16
|
Decorate 13(T3) Block
|
||||||
MemberDecorate 16(T3) 0 Offset 0
|
Decorate 15(t3) DescriptorSet 0
|
||||||
Decorate 16(T3) Block
|
Decorate 15(t3) Binding 0
|
||||||
Decorate 18(t3) DescriptorSet 0
|
MemberDecorate 23(t2) 0 Offset 0
|
||||||
Decorate 18(t3) Binding 0
|
MemberDecorate 23(t2) 1 Offset 8
|
||||||
MemberDecorate 35(t2) 0 Offset 0
|
Decorate 23(t2) Block
|
||||||
MemberDecorate 35(t2) 1 Offset 8
|
MemberDecorate 24(blockType) 0 Offset 0
|
||||||
Decorate 35(t2) Block
|
MemberDecorate 24(blockType) 1 Offset 4
|
||||||
MemberDecorate 36(blockType) 0 Offset 0
|
MemberDecorate 24(blockType) 2 Offset 8
|
||||||
MemberDecorate 36(blockType) 1 Offset 4
|
MemberDecorate 24(blockType) 3 Offset 12
|
||||||
MemberDecorate 36(blockType) 2 Offset 8
|
MemberDecorate 24(blockType) 4 Offset 16
|
||||||
MemberDecorate 36(blockType) 3 Offset 12
|
Decorate 24(blockType) Block
|
||||||
MemberDecorate 36(blockType) 4 Offset 16
|
Decorate 26(t) DescriptorSet 0
|
||||||
Decorate 36(blockType) Block
|
Decorate 26(t) Binding 0
|
||||||
Decorate 38(t) DescriptorSet 0
|
|
||||||
Decorate 38(t) Binding 0
|
|
||||||
Decorate 13(x) DecorationAliasedPointerEXT
|
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
TypeForwardPointer 6 PhysicalStorageBufferEXT
|
TypeForwardPointer 6 PhysicalStorageBufferEXT
|
||||||
@ -71,38 +66,24 @@ spv.bufferhandle8.frag
|
|||||||
6: TypePointer PhysicalStorageBufferEXT 10(T1)
|
6: TypePointer PhysicalStorageBufferEXT 10(T1)
|
||||||
11(T2): TypeStruct 9(int)
|
11(T2): TypeStruct 9(int)
|
||||||
7: TypePointer PhysicalStorageBufferEXT 11(T2)
|
7: TypePointer PhysicalStorageBufferEXT 11(T2)
|
||||||
12: TypePointer Function 8(Blah)
|
12: TypeRuntimeArray 8(Blah)
|
||||||
14(Blah): TypeStruct 6(ptr) 7(ptr)
|
13(T3): TypeStruct 12
|
||||||
15: TypeRuntimeArray 14(Blah)
|
14: TypePointer StorageBuffer 13(T3)
|
||||||
16(T3): TypeStruct 15
|
15(t3): 14(ptr) Variable StorageBuffer
|
||||||
17: TypePointer StorageBuffer 16(T3)
|
16: 9(int) Constant 0
|
||||||
18(t3): 17(ptr) Variable StorageBuffer
|
17: 9(int) Constant 1
|
||||||
19: 9(int) Constant 0
|
18: TypePointer StorageBuffer 8(Blah)
|
||||||
20: 9(int) Constant 2
|
TypeForwardPointer 22 PhysicalStorageBufferEXT
|
||||||
21: TypePointer StorageBuffer 14(Blah)
|
23(t2): TypeStruct 22 22
|
||||||
25: TypePointer Function 6(ptr)
|
24(blockType): TypeStruct 9(int) 9(int) 9(int) 9(int) 9(int)
|
||||||
28: 9(int) Constant 1
|
22: TypePointer PhysicalStorageBufferEXT 24(blockType)
|
||||||
29: TypePointer Function 7(ptr)
|
25: TypePointer StorageBuffer 23(t2)
|
||||||
TypeForwardPointer 34 PhysicalStorageBufferEXT
|
26(t): 25(ptr) Variable StorageBuffer
|
||||||
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
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
13(x): 12(ptr) Variable Function
|
19: 18(ptr) AccessChain 15(t3) 16 17
|
||||||
22: 21(ptr) AccessChain 18(t3) 19 20
|
20: 8(Blah) Load 19
|
||||||
23: 14(Blah) Load 22
|
21: 18(ptr) AccessChain 15(t3) 16 16
|
||||||
24: 6(ptr) CompositeExtract 23 0
|
Store 21 20
|
||||||
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
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -1,402 +0,0 @@
|
|||||||
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
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
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
|
|
||||||
@ -1,248 +0,0 @@
|
|||||||
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
|
|
||||||
@ -1,64 +0,0 @@
|
|||||||
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
|
|
||||||
@ -1,632 +0,0 @@
|
|||||||
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
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
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
|
spv.debugInfo.frag
|
||||||
// Module Version 10300
|
// Module Version 10300
|
||||||
// Generated by (magic number): 8000b
|
// Generated by (magic number): 8000b
|
||||||
// Id's are bound by 187
|
// Id's are bound by 124
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
2: ExtInstImport "GLSL.std.450"
|
2: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 5 "main" 30 104
|
EntryPoint Fragment 5 "main" 24 52
|
||||||
ExecutionMode 5 OriginUpperLeft
|
ExecutionMode 5 OriginUpperLeft
|
||||||
1: String "spv.debugInfo.frag"
|
1: String "spv.debugInfo.frag"
|
||||||
Source GLSL 450 1 "#version 450
|
Source GLSL 450 1 "#version 450
|
||||||
@ -36,40 +36,9 @@ vec4 foo(S s)
|
|||||||
return r;
|
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()
|
void main()
|
||||||
{
|
{
|
||||||
outv = foo(s);
|
outv = foo(s);
|
||||||
outv += testBranch(inv.x, inv.y);
|
|
||||||
outv += texture(s2d, vec2(0.5));
|
outv += texture(s2d, vec2(0.5));
|
||||||
|
|
||||||
switch (s.a) {
|
switch (s.a) {
|
||||||
@ -97,24 +66,17 @@ void main()
|
|||||||
MemberName 8(S) 0 "a"
|
MemberName 8(S) 0 "a"
|
||||||
Name 14 "foo(struct-S-i11;"
|
Name 14 "foo(struct-S-i11;"
|
||||||
Name 13 "s"
|
Name 13 "s"
|
||||||
Name 20 "testBranch(f1;f1;"
|
Name 17 "r"
|
||||||
Name 18 "x"
|
Name 24 "inv"
|
||||||
Name 19 "y"
|
Name 52 "outv"
|
||||||
Name 23 "r"
|
Name 53 "S"
|
||||||
Name 30 "inv"
|
MemberName 53(S) 0 "a"
|
||||||
Name 56 "result"
|
Name 54 "ubuf"
|
||||||
Name 59 "b"
|
MemberName 54(ubuf) 0 "s"
|
||||||
Name 104 "outv"
|
Name 56 ""
|
||||||
Name 105 "S"
|
Name 57 "param"
|
||||||
MemberName 105(S) 0 "a"
|
Name 67 "s2d"
|
||||||
Name 106 "ubuf"
|
Name 97 "i"
|
||||||
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 "no-storage-format"
|
||||||
ModuleProcessed "resource-set-binding 3"
|
ModuleProcessed "resource-set-binding 3"
|
||||||
ModuleProcessed "auto-map-bindings"
|
ModuleProcessed "auto-map-bindings"
|
||||||
@ -126,15 +88,15 @@ void main()
|
|||||||
ModuleProcessed "suppress-warnings"
|
ModuleProcessed "suppress-warnings"
|
||||||
ModuleProcessed "hlsl-offsets"
|
ModuleProcessed "hlsl-offsets"
|
||||||
ModuleProcessed "entry-point main"
|
ModuleProcessed "entry-point main"
|
||||||
Decorate 30(inv) Location 0
|
Decorate 24(inv) Location 0
|
||||||
Decorate 104(outv) Location 0
|
Decorate 52(outv) Location 0
|
||||||
MemberDecorate 105(S) 0 Offset 0
|
MemberDecorate 53(S) 0 Offset 0
|
||||||
MemberDecorate 106(ubuf) 0 Offset 0
|
MemberDecorate 54(ubuf) 0 Offset 0
|
||||||
Decorate 106(ubuf) Block
|
Decorate 54(ubuf) Block
|
||||||
Decorate 108 DescriptorSet 3
|
Decorate 56 DescriptorSet 3
|
||||||
Decorate 108 Binding 0
|
Decorate 56 Binding 0
|
||||||
Decorate 131(s2d) DescriptorSet 3
|
Decorate 67(s2d) DescriptorSet 3
|
||||||
Decorate 131(s2d) Binding 1
|
Decorate 67(s2d) Binding 1
|
||||||
3: TypeVoid
|
3: TypeVoid
|
||||||
4: TypeFunction 3
|
4: TypeFunction 3
|
||||||
7: TypeInt 32 1
|
7: TypeInt 32 1
|
||||||
@ -143,280 +105,179 @@ void main()
|
|||||||
10: TypeFloat 32
|
10: TypeFloat 32
|
||||||
11: TypeVector 10(float) 4
|
11: TypeVector 10(float) 4
|
||||||
12: TypeFunction 11(fvec4) 9(ptr)
|
12: TypeFunction 11(fvec4) 9(ptr)
|
||||||
16: TypePointer Function 10(float)
|
16: TypePointer Function 11(fvec4)
|
||||||
17: TypeFunction 10(float) 16(ptr) 16(ptr)
|
18: 7(int) Constant 0
|
||||||
22: TypePointer Function 11(fvec4)
|
19: TypePointer Function 7(int)
|
||||||
24: 7(int) Constant 0
|
23: TypePointer Input 11(fvec4)
|
||||||
25: TypePointer Function 7(int)
|
24(inv): 23(ptr) Variable Input
|
||||||
29: TypePointer Input 11(fvec4)
|
28: 10(float) Constant 1065353216
|
||||||
30(inv): 29(ptr) Variable Input
|
31: TypeInt 32 0
|
||||||
34: 10(float) Constant 1065353216
|
32: 31(int) Constant 0
|
||||||
37: TypeInt 32 0
|
33: TypePointer Function 10(float)
|
||||||
38: 37(int) Constant 0
|
36: 10(float) Constant 1077936128
|
||||||
41: 10(float) Constant 1077936128
|
37: TypeBool
|
||||||
42: TypeBool
|
45: 10(float) Constant 1073741824
|
||||||
50: 10(float) Constant 1073741824
|
51: TypePointer Output 11(fvec4)
|
||||||
57: 10(float) Constant 0
|
52(outv): 51(ptr) Variable Output
|
||||||
58: TypePointer Function 42(bool)
|
53(S): TypeStruct 7(int)
|
||||||
81: 7(int) Constant 1
|
54(ubuf): TypeStruct 53(S)
|
||||||
82: 7(int) Constant 4294967295
|
55: TypePointer Uniform 54(ubuf)
|
||||||
103: TypePointer Output 11(fvec4)
|
56: 55(ptr) Variable Uniform
|
||||||
104(outv): 103(ptr) Variable Output
|
58: TypePointer Uniform 53(S)
|
||||||
105(S): TypeStruct 7(int)
|
64: TypeImage 10(float) 2D sampled format:Unknown
|
||||||
106(ubuf): TypeStruct 105(S)
|
65: TypeSampledImage 64
|
||||||
107: TypePointer Uniform 106(ubuf)
|
66: TypePointer UniformConstant 65
|
||||||
108: 107(ptr) Variable Uniform
|
67(s2d): 66(ptr) Variable UniformConstant
|
||||||
110: TypePointer Uniform 105(S)
|
69: TypeVector 10(float) 2
|
||||||
117: TypePointer Input 10(float)
|
70: 10(float) Constant 1056964608
|
||||||
121: 37(int) Constant 1
|
71: 69(fvec2) ConstantComposite 70 70
|
||||||
128: TypeImage 10(float) 2D sampled format:Unknown
|
75: TypePointer Uniform 7(int)
|
||||||
129: TypeSampledImage 128
|
104: 7(int) Constant 10
|
||||||
130: TypePointer UniformConstant 129
|
109: 7(int) Constant 1
|
||||||
131(s2d): 130(ptr) Variable UniformConstant
|
111: TypePointer Output 10(float)
|
||||||
133: TypeVector 10(float) 2
|
114: 10(float) Constant 1092616192
|
||||||
134: 10(float) Constant 1056964608
|
Line 1 28 11
|
||||||
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
|
5(main): 3 Function None 4
|
||||||
6: Label
|
6: Label
|
||||||
109(param): 9(ptr) Variable Function
|
57(param): 9(ptr) Variable Function
|
||||||
116(param): 16(ptr) Variable Function
|
97(i): 19(ptr) Variable Function
|
||||||
120(param): 16(ptr) Variable Function
|
116: 16(ptr) Variable Function
|
||||||
161(i): 25(ptr) Variable Function
|
Line 1 30 0
|
||||||
179: 22(ptr) Variable Function
|
59: 58(ptr) AccessChain 56 18
|
||||||
Line 1 60 0
|
60: 53(S) Load 59
|
||||||
111: 110(ptr) AccessChain 108 24
|
61: 7(int) CompositeExtract 60 0
|
||||||
112: 105(S) Load 111
|
62: 19(ptr) AccessChain 57(param) 18
|
||||||
113: 7(int) CompositeExtract 112 0
|
Store 62 61
|
||||||
114: 25(ptr) AccessChain 109(param) 24
|
63: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 57(param)
|
||||||
Store 114 113
|
Store 52(outv) 63
|
||||||
115: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 109(param)
|
Line 1 31 0
|
||||||
Store 104(outv) 115
|
68: 65 Load 67(s2d)
|
||||||
Line 1 61 0
|
72: 11(fvec4) ImageSampleImplicitLod 68 71
|
||||||
118: 117(ptr) AccessChain 30(inv) 38
|
73: 11(fvec4) Load 52(outv)
|
||||||
119: 10(float) Load 118
|
74: 11(fvec4) FAdd 73 72
|
||||||
Store 116(param) 119
|
Store 52(outv) 74
|
||||||
122: 117(ptr) AccessChain 30(inv) 121
|
Line 1 33 0
|
||||||
123: 10(float) Load 122
|
76: 75(ptr) AccessChain 56 18 18
|
||||||
Store 120(param) 123
|
77: 7(int) Load 76
|
||||||
124: 10(float) FunctionCall 20(testBranch(f1;f1;) 116(param) 120(param)
|
SelectionMerge 81 None
|
||||||
125: 11(fvec4) Load 104(outv)
|
Switch 77 80
|
||||||
126: 11(fvec4) CompositeConstruct 124 124 124 124
|
case 10: 78
|
||||||
127: 11(fvec4) FAdd 125 126
|
case 20: 79
|
||||||
Store 104(outv) 127
|
80: Label
|
||||||
Line 1 62 0
|
Line 1 42 0
|
||||||
132: 129 Load 131(s2d)
|
92: 11(fvec4) Load 52(outv)
|
||||||
136: 11(fvec4) ImageSampleImplicitLod 132 135
|
93: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||||
137: 11(fvec4) Load 104(outv)
|
94: 11(fvec4) FSub 92 93
|
||||||
138: 11(fvec4) FAdd 137 136
|
Store 52(outv) 94
|
||||||
Store 104(outv) 138
|
Line 1 43 0
|
||||||
Line 1 64 0
|
Branch 81
|
||||||
140: 139(ptr) AccessChain 108 24 24
|
78: Label
|
||||||
141: 7(int) Load 140
|
Line 1 35 0
|
||||||
SelectionMerge 145 None
|
82: 11(fvec4) Load 52(outv)
|
||||||
Switch 141 144
|
83: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||||
case 10: 142
|
84: 11(fvec4) FAdd 82 83
|
||||||
case 20: 143
|
Store 52(outv) 84
|
||||||
144: Label
|
Line 1 36 0
|
||||||
Line 1 73 0
|
Branch 81
|
||||||
156: 11(fvec4) Load 104(outv)
|
79: Label
|
||||||
157: 11(fvec4) CompositeConstruct 34 34 34 34
|
Line 1 38 0
|
||||||
158: 11(fvec4) FSub 156 157
|
86: 11(fvec4) Load 52(outv)
|
||||||
Store 104(outv) 158
|
87: 11(fvec4) VectorTimesScalar 86 45
|
||||||
Line 1 74 0
|
Store 52(outv) 87
|
||||||
Branch 145
|
Line 1 39 0
|
||||||
142: Label
|
88: 11(fvec4) Load 52(outv)
|
||||||
Line 1 66 0
|
89: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||||
146: 11(fvec4) Load 104(outv)
|
90: 11(fvec4) FAdd 88 89
|
||||||
147: 11(fvec4) CompositeConstruct 34 34 34 34
|
Store 52(outv) 90
|
||||||
148: 11(fvec4) FAdd 146 147
|
Line 1 40 0
|
||||||
Store 104(outv) 148
|
Branch 81
|
||||||
Line 1 67 0
|
81: Label
|
||||||
Branch 145
|
Line 1 46 0
|
||||||
143: Label
|
Store 97(i) 18
|
||||||
Line 1 69 0
|
Branch 98
|
||||||
150: 11(fvec4) Load 104(outv)
|
98: Label
|
||||||
151: 11(fvec4) VectorTimesScalar 150 50
|
Line 1 46 0
|
||||||
Store 104(outv) 151
|
LoopMerge 100 101 None
|
||||||
Line 1 70 0
|
Branch 102
|
||||||
152: 11(fvec4) Load 104(outv)
|
102: Label
|
||||||
153: 11(fvec4) CompositeConstruct 34 34 34 34
|
Line 1 46 0
|
||||||
154: 11(fvec4) FAdd 152 153
|
103: 7(int) Load 97(i)
|
||||||
Store 104(outv) 154
|
105: 37(bool) SLessThan 103 104
|
||||||
Line 1 71 0
|
BranchConditional 105 99 100
|
||||||
Branch 145
|
99: Label
|
||||||
145: Label
|
Line 1 47 0
|
||||||
Line 1 77 0
|
106: 11(fvec4) Load 52(outv)
|
||||||
Store 161(i) 24
|
107: 11(fvec4) VectorTimesScalar 106 36
|
||||||
Branch 162
|
Store 52(outv) 107
|
||||||
162: Label
|
Branch 101
|
||||||
Line 1 77 0
|
101: Label
|
||||||
LoopMerge 164 165 None
|
Line 1 46 0
|
||||||
Branch 166
|
108: 7(int) Load 97(i)
|
||||||
166: Label
|
110: 7(int) IAdd 108 109
|
||||||
Line 1 77 0
|
Store 97(i) 110
|
||||||
167: 7(int) Load 161(i)
|
Branch 98
|
||||||
169: 42(bool) SLessThan 167 168
|
100: Label
|
||||||
BranchConditional 169 163 164
|
Line 1 49 0
|
||||||
163: Label
|
112: 111(ptr) AccessChain 52(outv) 32
|
||||||
Line 1 78 0
|
113: 10(float) Load 112
|
||||||
170: 11(fvec4) Load 104(outv)
|
115: 37(bool) FOrdLessThan 113 114
|
||||||
171: 11(fvec4) VectorTimesScalar 170 41
|
SelectionMerge 118 None
|
||||||
Store 104(outv) 171
|
BranchConditional 115 117 121
|
||||||
Branch 165
|
117: Label
|
||||||
165: Label
|
Line 1 50 0
|
||||||
Line 1 77 0
|
119: 11(fvec4) Load 52(outv)
|
||||||
172: 7(int) Load 161(i)
|
120: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 119
|
||||||
173: 7(int) IAdd 172 81
|
Store 52(outv) 120
|
||||||
Store 161(i) 173
|
Store 116 120
|
||||||
Branch 162
|
Branch 118
|
||||||
164: Label
|
121: Label
|
||||||
Line 1 80 0
|
Line 1 51 0
|
||||||
175: 174(ptr) AccessChain 104(outv) 38
|
122: 11(fvec4) Load 52(outv)
|
||||||
176: 10(float) Load 175
|
123: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 122
|
||||||
178: 42(bool) FOrdLessThan 176 177
|
Store 52(outv) 123
|
||||||
SelectionMerge 181 None
|
Store 116 123
|
||||||
BranchConditional 178 180 184
|
Branch 118
|
||||||
180: Label
|
118: 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
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
Line 1 16 13
|
Line 1 16 13
|
||||||
14(foo(struct-S-i11;): 11(fvec4) Function None 12
|
14(foo(struct-S-i11;): 11(fvec4) Function None 12
|
||||||
13(s): 9(ptr) FunctionParameter
|
13(s): 9(ptr) FunctionParameter
|
||||||
15: Label
|
15: Label
|
||||||
23(r): 22(ptr) Variable Function
|
17(r): 16(ptr) Variable Function
|
||||||
Line 1 18 0
|
Line 1 18 0
|
||||||
26: 25(ptr) AccessChain 13(s) 24
|
20: 19(ptr) AccessChain 13(s) 18
|
||||||
27: 7(int) Load 26
|
21: 7(int) Load 20
|
||||||
28: 10(float) ConvertSToF 27
|
22: 10(float) ConvertSToF 21
|
||||||
31: 11(fvec4) Load 30(inv)
|
25: 11(fvec4) Load 24(inv)
|
||||||
32: 11(fvec4) VectorTimesScalar 31 28
|
26: 11(fvec4) VectorTimesScalar 25 22
|
||||||
Store 23(r) 32
|
Store 17(r) 26
|
||||||
Line 1 19 0
|
Line 1 19 0
|
||||||
33: 11(fvec4) Load 23(r)
|
27: 11(fvec4) Load 17(r)
|
||||||
35: 11(fvec4) CompositeConstruct 34 34 34 34
|
29: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||||
36: 11(fvec4) FAdd 33 35
|
30: 11(fvec4) FAdd 27 29
|
||||||
Store 23(r) 36
|
Store 17(r) 30
|
||||||
Line 1 20 0
|
Line 1 20 0
|
||||||
39: 16(ptr) AccessChain 23(r) 38
|
34: 33(ptr) AccessChain 17(r) 32
|
||||||
40: 10(float) Load 39
|
35: 10(float) Load 34
|
||||||
43: 42(bool) FOrdGreaterThan 40 41
|
38: 37(bool) FOrdGreaterThan 35 36
|
||||||
SelectionMerge 45 None
|
SelectionMerge 40 None
|
||||||
BranchConditional 43 44 49
|
BranchConditional 38 39 44
|
||||||
44: Label
|
39: Label
|
||||||
Line 1 21 0
|
Line 1 21 0
|
||||||
46: 11(fvec4) Load 23(r)
|
41: 11(fvec4) Load 17(r)
|
||||||
47: 11(fvec4) CompositeConstruct 34 34 34 34
|
42: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||||
48: 11(fvec4) FSub 46 47
|
43: 11(fvec4) FSub 41 42
|
||||||
Store 23(r) 48
|
Store 17(r) 43
|
||||||
Branch 45
|
Branch 40
|
||||||
49: Label
|
44: Label
|
||||||
Line 1 23 0
|
Line 1 23 0
|
||||||
51: 11(fvec4) Load 23(r)
|
46: 11(fvec4) Load 17(r)
|
||||||
52: 11(fvec4) VectorTimesScalar 51 50
|
47: 11(fvec4) VectorTimesScalar 46 45
|
||||||
Store 23(r) 52
|
Store 17(r) 47
|
||||||
Branch 45
|
Branch 40
|
||||||
45: Label
|
40: Label
|
||||||
Line 1 25 0
|
Line 1 25 0
|
||||||
53: 11(fvec4) Load 23(r)
|
48: 11(fvec4) Load 17(r)
|
||||||
ReturnValue 53
|
ReturnValue 48
|
||||||
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
|
FunctionEnd
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
spv.debugInfo.frag
|
spv.debugInfo.frag
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 8000b
|
// Generated by (magic number): 8000b
|
||||||
// Id's are bound by 187
|
// Id's are bound by 124
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
2: ExtInstImport "GLSL.std.450"
|
2: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 5 "main" 30 104
|
EntryPoint Fragment 5 "main" 24 52
|
||||||
ExecutionMode 5 OriginLowerLeft
|
ExecutionMode 5 OriginLowerLeft
|
||||||
1: String "spv.debugInfo.frag"
|
1: String "spv.debugInfo.frag"
|
||||||
Source GLSL 450 1 "// OpModuleProcessed no-storage-format
|
Source GLSL 450 1 "// OpModuleProcessed no-storage-format
|
||||||
@ -47,40 +47,9 @@ vec4 foo(S s)
|
|||||||
return r;
|
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()
|
void main()
|
||||||
{
|
{
|
||||||
outv = foo(s);
|
outv = foo(s);
|
||||||
outv += testBranch(inv.x, inv.y);
|
|
||||||
outv += texture(s2d, vec2(0.5));
|
outv += texture(s2d, vec2(0.5));
|
||||||
|
|
||||||
switch (s.a) {
|
switch (s.a) {
|
||||||
@ -108,34 +77,27 @@ void main()
|
|||||||
MemberName 8(S) 0 "a"
|
MemberName 8(S) 0 "a"
|
||||||
Name 14 "foo(struct-S-i11;"
|
Name 14 "foo(struct-S-i11;"
|
||||||
Name 13 "s"
|
Name 13 "s"
|
||||||
Name 20 "testBranch(f1;f1;"
|
Name 17 "r"
|
||||||
Name 18 "x"
|
Name 24 "inv"
|
||||||
Name 19 "y"
|
Name 52 "outv"
|
||||||
Name 23 "r"
|
Name 53 "S"
|
||||||
Name 30 "inv"
|
MemberName 53(S) 0 "a"
|
||||||
Name 56 "result"
|
Name 54 "ubuf"
|
||||||
Name 59 "b"
|
MemberName 54(ubuf) 0 "s"
|
||||||
Name 104 "outv"
|
Name 56 ""
|
||||||
Name 105 "S"
|
Name 57 "param"
|
||||||
MemberName 105(S) 0 "a"
|
Name 67 "s2d"
|
||||||
Name 106 "ubuf"
|
Name 97 "i"
|
||||||
MemberName 106(ubuf) 0 "s"
|
Decorate 24(inv) Location 0
|
||||||
Name 108 ""
|
Decorate 52(outv) Location 0
|
||||||
Name 109 "param"
|
MemberDecorate 53(S) 0 Offset 0
|
||||||
Name 116 "param"
|
MemberDecorate 54(ubuf) 0 Offset 0
|
||||||
Name 120 "param"
|
Decorate 54(ubuf) Block
|
||||||
Name 131 "s2d"
|
Decorate 56 DescriptorSet 3
|
||||||
Name 161 "i"
|
Decorate 56 Binding 0
|
||||||
Decorate 30(inv) Location 0
|
Decorate 67(s2d) Location 0
|
||||||
Decorate 104(outv) Location 0
|
Decorate 67(s2d) DescriptorSet 3
|
||||||
MemberDecorate 105(S) 0 Offset 0
|
Decorate 67(s2d) Binding 1
|
||||||
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
|
3: TypeVoid
|
||||||
4: TypeFunction 3
|
4: TypeFunction 3
|
||||||
7: TypeInt 32 1
|
7: TypeInt 32 1
|
||||||
@ -144,280 +106,179 @@ void main()
|
|||||||
10: TypeFloat 32
|
10: TypeFloat 32
|
||||||
11: TypeVector 10(float) 4
|
11: TypeVector 10(float) 4
|
||||||
12: TypeFunction 11(fvec4) 9(ptr)
|
12: TypeFunction 11(fvec4) 9(ptr)
|
||||||
16: TypePointer Function 10(float)
|
16: TypePointer Function 11(fvec4)
|
||||||
17: TypeFunction 10(float) 16(ptr) 16(ptr)
|
18: 7(int) Constant 0
|
||||||
22: TypePointer Function 11(fvec4)
|
19: TypePointer Function 7(int)
|
||||||
24: 7(int) Constant 0
|
23: TypePointer Input 11(fvec4)
|
||||||
25: TypePointer Function 7(int)
|
24(inv): 23(ptr) Variable Input
|
||||||
29: TypePointer Input 11(fvec4)
|
28: 10(float) Constant 1065353216
|
||||||
30(inv): 29(ptr) Variable Input
|
31: TypeInt 32 0
|
||||||
34: 10(float) Constant 1065353216
|
32: 31(int) Constant 0
|
||||||
37: TypeInt 32 0
|
33: TypePointer Function 10(float)
|
||||||
38: 37(int) Constant 0
|
36: 10(float) Constant 1077936128
|
||||||
41: 10(float) Constant 1077936128
|
37: TypeBool
|
||||||
42: TypeBool
|
45: 10(float) Constant 1073741824
|
||||||
50: 10(float) Constant 1073741824
|
51: TypePointer Output 11(fvec4)
|
||||||
57: 10(float) Constant 0
|
52(outv): 51(ptr) Variable Output
|
||||||
58: TypePointer Function 42(bool)
|
53(S): TypeStruct 7(int)
|
||||||
81: 7(int) Constant 1
|
54(ubuf): TypeStruct 53(S)
|
||||||
82: 7(int) Constant 4294967295
|
55: TypePointer Uniform 54(ubuf)
|
||||||
103: TypePointer Output 11(fvec4)
|
56: 55(ptr) Variable Uniform
|
||||||
104(outv): 103(ptr) Variable Output
|
58: TypePointer Uniform 53(S)
|
||||||
105(S): TypeStruct 7(int)
|
64: TypeImage 10(float) 2D sampled format:Unknown
|
||||||
106(ubuf): TypeStruct 105(S)
|
65: TypeSampledImage 64
|
||||||
107: TypePointer Uniform 106(ubuf)
|
66: TypePointer UniformConstant 65
|
||||||
108: 107(ptr) Variable Uniform
|
67(s2d): 66(ptr) Variable UniformConstant
|
||||||
110: TypePointer Uniform 105(S)
|
69: TypeVector 10(float) 2
|
||||||
117: TypePointer Input 10(float)
|
70: 10(float) Constant 1056964608
|
||||||
121: 37(int) Constant 1
|
71: 69(fvec2) ConstantComposite 70 70
|
||||||
128: TypeImage 10(float) 2D sampled format:Unknown
|
75: TypePointer Uniform 7(int)
|
||||||
129: TypeSampledImage 128
|
104: 7(int) Constant 10
|
||||||
130: TypePointer UniformConstant 129
|
109: 7(int) Constant 1
|
||||||
131(s2d): 130(ptr) Variable UniformConstant
|
111: TypePointer Output 10(float)
|
||||||
133: TypeVector 10(float) 2
|
114: 10(float) Constant 1092616192
|
||||||
134: 10(float) Constant 1056964608
|
Line 1 28 11
|
||||||
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
|
5(main): 3 Function None 4
|
||||||
6: Label
|
6: Label
|
||||||
109(param): 9(ptr) Variable Function
|
57(param): 9(ptr) Variable Function
|
||||||
116(param): 16(ptr) Variable Function
|
97(i): 19(ptr) Variable Function
|
||||||
120(param): 16(ptr) Variable Function
|
116: 16(ptr) Variable Function
|
||||||
161(i): 25(ptr) Variable Function
|
Line 1 30 0
|
||||||
179: 22(ptr) Variable Function
|
59: 58(ptr) AccessChain 56 18
|
||||||
Line 1 60 0
|
60: 53(S) Load 59
|
||||||
111: 110(ptr) AccessChain 108 24
|
61: 7(int) CompositeExtract 60 0
|
||||||
112: 105(S) Load 111
|
62: 19(ptr) AccessChain 57(param) 18
|
||||||
113: 7(int) CompositeExtract 112 0
|
Store 62 61
|
||||||
114: 25(ptr) AccessChain 109(param) 24
|
63: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 57(param)
|
||||||
Store 114 113
|
Store 52(outv) 63
|
||||||
115: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 109(param)
|
Line 1 31 0
|
||||||
Store 104(outv) 115
|
68: 65 Load 67(s2d)
|
||||||
Line 1 61 0
|
72: 11(fvec4) ImageSampleImplicitLod 68 71
|
||||||
118: 117(ptr) AccessChain 30(inv) 38
|
73: 11(fvec4) Load 52(outv)
|
||||||
119: 10(float) Load 118
|
74: 11(fvec4) FAdd 73 72
|
||||||
Store 116(param) 119
|
Store 52(outv) 74
|
||||||
122: 117(ptr) AccessChain 30(inv) 121
|
Line 1 33 0
|
||||||
123: 10(float) Load 122
|
76: 75(ptr) AccessChain 56 18 18
|
||||||
Store 120(param) 123
|
77: 7(int) Load 76
|
||||||
124: 10(float) FunctionCall 20(testBranch(f1;f1;) 116(param) 120(param)
|
SelectionMerge 81 None
|
||||||
125: 11(fvec4) Load 104(outv)
|
Switch 77 80
|
||||||
126: 11(fvec4) CompositeConstruct 124 124 124 124
|
case 10: 78
|
||||||
127: 11(fvec4) FAdd 125 126
|
case 20: 79
|
||||||
Store 104(outv) 127
|
80: Label
|
||||||
Line 1 62 0
|
Line 1 42 0
|
||||||
132: 129 Load 131(s2d)
|
92: 11(fvec4) Load 52(outv)
|
||||||
136: 11(fvec4) ImageSampleImplicitLod 132 135
|
93: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||||
137: 11(fvec4) Load 104(outv)
|
94: 11(fvec4) FSub 92 93
|
||||||
138: 11(fvec4) FAdd 137 136
|
Store 52(outv) 94
|
||||||
Store 104(outv) 138
|
Line 1 43 0
|
||||||
Line 1 64 0
|
Branch 81
|
||||||
140: 139(ptr) AccessChain 108 24 24
|
78: Label
|
||||||
141: 7(int) Load 140
|
Line 1 35 0
|
||||||
SelectionMerge 145 None
|
82: 11(fvec4) Load 52(outv)
|
||||||
Switch 141 144
|
83: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||||
case 10: 142
|
84: 11(fvec4) FAdd 82 83
|
||||||
case 20: 143
|
Store 52(outv) 84
|
||||||
144: Label
|
Line 1 36 0
|
||||||
Line 1 73 0
|
Branch 81
|
||||||
156: 11(fvec4) Load 104(outv)
|
79: Label
|
||||||
157: 11(fvec4) CompositeConstruct 34 34 34 34
|
Line 1 38 0
|
||||||
158: 11(fvec4) FSub 156 157
|
86: 11(fvec4) Load 52(outv)
|
||||||
Store 104(outv) 158
|
87: 11(fvec4) VectorTimesScalar 86 45
|
||||||
Line 1 74 0
|
Store 52(outv) 87
|
||||||
Branch 145
|
Line 1 39 0
|
||||||
142: Label
|
88: 11(fvec4) Load 52(outv)
|
||||||
Line 1 66 0
|
89: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||||
146: 11(fvec4) Load 104(outv)
|
90: 11(fvec4) FAdd 88 89
|
||||||
147: 11(fvec4) CompositeConstruct 34 34 34 34
|
Store 52(outv) 90
|
||||||
148: 11(fvec4) FAdd 146 147
|
Line 1 40 0
|
||||||
Store 104(outv) 148
|
Branch 81
|
||||||
Line 1 67 0
|
81: Label
|
||||||
Branch 145
|
Line 1 46 0
|
||||||
143: Label
|
Store 97(i) 18
|
||||||
Line 1 69 0
|
Branch 98
|
||||||
150: 11(fvec4) Load 104(outv)
|
98: Label
|
||||||
151: 11(fvec4) VectorTimesScalar 150 50
|
Line 1 46 0
|
||||||
Store 104(outv) 151
|
LoopMerge 100 101 None
|
||||||
Line 1 70 0
|
Branch 102
|
||||||
152: 11(fvec4) Load 104(outv)
|
102: Label
|
||||||
153: 11(fvec4) CompositeConstruct 34 34 34 34
|
Line 1 46 0
|
||||||
154: 11(fvec4) FAdd 152 153
|
103: 7(int) Load 97(i)
|
||||||
Store 104(outv) 154
|
105: 37(bool) SLessThan 103 104
|
||||||
Line 1 71 0
|
BranchConditional 105 99 100
|
||||||
Branch 145
|
99: Label
|
||||||
145: Label
|
Line 1 47 0
|
||||||
Line 1 77 0
|
106: 11(fvec4) Load 52(outv)
|
||||||
Store 161(i) 24
|
107: 11(fvec4) VectorTimesScalar 106 36
|
||||||
Branch 162
|
Store 52(outv) 107
|
||||||
162: Label
|
Branch 101
|
||||||
Line 1 77 0
|
101: Label
|
||||||
LoopMerge 164 165 None
|
Line 1 46 0
|
||||||
Branch 166
|
108: 7(int) Load 97(i)
|
||||||
166: Label
|
110: 7(int) IAdd 108 109
|
||||||
Line 1 77 0
|
Store 97(i) 110
|
||||||
167: 7(int) Load 161(i)
|
Branch 98
|
||||||
169: 42(bool) SLessThan 167 168
|
100: Label
|
||||||
BranchConditional 169 163 164
|
Line 1 49 0
|
||||||
163: Label
|
112: 111(ptr) AccessChain 52(outv) 32
|
||||||
Line 1 78 0
|
113: 10(float) Load 112
|
||||||
170: 11(fvec4) Load 104(outv)
|
115: 37(bool) FOrdLessThan 113 114
|
||||||
171: 11(fvec4) VectorTimesScalar 170 41
|
SelectionMerge 118 None
|
||||||
Store 104(outv) 171
|
BranchConditional 115 117 121
|
||||||
Branch 165
|
117: Label
|
||||||
165: Label
|
Line 1 50 0
|
||||||
Line 1 77 0
|
119: 11(fvec4) Load 52(outv)
|
||||||
172: 7(int) Load 161(i)
|
120: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 119
|
||||||
173: 7(int) IAdd 172 81
|
Store 52(outv) 120
|
||||||
Store 161(i) 173
|
Store 116 120
|
||||||
Branch 162
|
Branch 118
|
||||||
164: Label
|
121: Label
|
||||||
Line 1 80 0
|
Line 1 51 0
|
||||||
175: 174(ptr) AccessChain 104(outv) 38
|
122: 11(fvec4) Load 52(outv)
|
||||||
176: 10(float) Load 175
|
123: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 122
|
||||||
178: 42(bool) FOrdLessThan 176 177
|
Store 52(outv) 123
|
||||||
SelectionMerge 181 None
|
Store 116 123
|
||||||
BranchConditional 178 180 184
|
Branch 118
|
||||||
180: Label
|
118: 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
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
Line 1 16 13
|
Line 1 16 13
|
||||||
14(foo(struct-S-i11;): 11(fvec4) Function None 12
|
14(foo(struct-S-i11;): 11(fvec4) Function None 12
|
||||||
13(s): 9(ptr) FunctionParameter
|
13(s): 9(ptr) FunctionParameter
|
||||||
15: Label
|
15: Label
|
||||||
23(r): 22(ptr) Variable Function
|
17(r): 16(ptr) Variable Function
|
||||||
Line 1 18 0
|
Line 1 18 0
|
||||||
26: 25(ptr) AccessChain 13(s) 24
|
20: 19(ptr) AccessChain 13(s) 18
|
||||||
27: 7(int) Load 26
|
21: 7(int) Load 20
|
||||||
28: 10(float) ConvertSToF 27
|
22: 10(float) ConvertSToF 21
|
||||||
31: 11(fvec4) Load 30(inv)
|
25: 11(fvec4) Load 24(inv)
|
||||||
32: 11(fvec4) VectorTimesScalar 31 28
|
26: 11(fvec4) VectorTimesScalar 25 22
|
||||||
Store 23(r) 32
|
Store 17(r) 26
|
||||||
Line 1 19 0
|
Line 1 19 0
|
||||||
33: 11(fvec4) Load 23(r)
|
27: 11(fvec4) Load 17(r)
|
||||||
35: 11(fvec4) CompositeConstruct 34 34 34 34
|
29: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||||
36: 11(fvec4) FAdd 33 35
|
30: 11(fvec4) FAdd 27 29
|
||||||
Store 23(r) 36
|
Store 17(r) 30
|
||||||
Line 1 20 0
|
Line 1 20 0
|
||||||
39: 16(ptr) AccessChain 23(r) 38
|
34: 33(ptr) AccessChain 17(r) 32
|
||||||
40: 10(float) Load 39
|
35: 10(float) Load 34
|
||||||
43: 42(bool) FOrdGreaterThan 40 41
|
38: 37(bool) FOrdGreaterThan 35 36
|
||||||
SelectionMerge 45 None
|
SelectionMerge 40 None
|
||||||
BranchConditional 43 44 49
|
BranchConditional 38 39 44
|
||||||
44: Label
|
39: Label
|
||||||
Line 1 21 0
|
Line 1 21 0
|
||||||
46: 11(fvec4) Load 23(r)
|
41: 11(fvec4) Load 17(r)
|
||||||
47: 11(fvec4) CompositeConstruct 34 34 34 34
|
42: 11(fvec4) CompositeConstruct 28 28 28 28
|
||||||
48: 11(fvec4) FSub 46 47
|
43: 11(fvec4) FSub 41 42
|
||||||
Store 23(r) 48
|
Store 17(r) 43
|
||||||
Branch 45
|
Branch 40
|
||||||
49: Label
|
44: Label
|
||||||
Line 1 23 0
|
Line 1 23 0
|
||||||
51: 11(fvec4) Load 23(r)
|
46: 11(fvec4) Load 17(r)
|
||||||
52: 11(fvec4) VectorTimesScalar 51 50
|
47: 11(fvec4) VectorTimesScalar 46 45
|
||||||
Store 23(r) 52
|
Store 17(r) 47
|
||||||
Branch 45
|
Branch 40
|
||||||
45: Label
|
40: Label
|
||||||
Line 1 25 0
|
Line 1 25 0
|
||||||
53: 11(fvec4) Load 23(r)
|
48: 11(fvec4) Load 17(r)
|
||||||
ReturnValue 53
|
ReturnValue 48
|
||||||
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
|
FunctionEnd
|
||||||
|
|||||||
@ -1,186 +0,0 @@
|
|||||||
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
|
|
||||||
@ -1,96 +0,0 @@
|
|||||||
spv.debuginfo.const_params.glsl.comp
|
|
||||||
// Module Version 10000
|
|
||||||
// Generated by (magic number): 8000b
|
|
||||||
// Id's are bound by 68
|
|
||||||
|
|
||||||
Capability Shader
|
|
||||||
Extension "SPV_KHR_non_semantic_info"
|
|
||||||
2: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
|
||||||
3: ExtInstImport "GLSL.std.450"
|
|
||||||
MemoryModel Logical GLSL450
|
|
||||||
EntryPoint GLCompute 14 "main"
|
|
||||||
ExecutionMode 14 LocalSize 1 1 1
|
|
||||||
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
|
|
||||||
"
|
|
||||||
25: String "float"
|
|
||||||
40: String "function"
|
|
||||||
46: String "f"
|
|
||||||
50: String "f2"
|
|
||||||
53: String "f3"
|
|
||||||
56: String "f4"
|
|
||||||
Name 14 "main"
|
|
||||||
Name 39 "function(f1;vf2;vf3;vf4;"
|
|
||||||
Name 35 "f"
|
|
||||||
Name 36 "f2"
|
|
||||||
Name 37 "f3"
|
|
||||||
Name 38 "f4"
|
|
||||||
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
|
|
||||||
24: TypeFloat 32
|
|
||||||
26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 10 13 12
|
|
||||||
27: TypeVector 24(float) 2
|
|
||||||
28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 22
|
|
||||||
29: TypeVector 24(float) 3
|
|
||||||
30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 13
|
|
||||||
31: TypeVector 24(float) 4
|
|
||||||
32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21
|
|
||||||
33: TypeFunction 4 24(float) 27(fvec2) 29(fvec3) 31(fvec4)
|
|
||||||
34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 26 28 30 32
|
|
||||||
41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 40 34 17 12 12 19 40 13 12
|
|
||||||
45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 26 17 12 12 41 21 20
|
|
||||||
48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression)
|
|
||||||
49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 28 17 12 12 41 21 22
|
|
||||||
52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 30 17 12 12 41 21 13
|
|
||||||
55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 56 32 17 12 12 41 21 21
|
|
||||||
62: 7(int) Constant 13
|
|
||||||
63: 24(float) Constant 0
|
|
||||||
64: 27(fvec2) ConstantComposite 63 63
|
|
||||||
65: 29(fvec3) ConstantComposite 63 63 63
|
|
||||||
66: 31(fvec4) ConstantComposite 63 63 63 63
|
|
||||||
Line 1 11 11
|
|
||||||
14(main): 4 Function None 5
|
|
||||||
23: Label
|
|
||||||
59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main)
|
|
||||||
60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16
|
|
||||||
61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 62 62 12 12
|
|
||||||
67: 4 FunctionCall 39(function(f1;vf2;vf3;vf4;) 63 64 65 66
|
|
||||||
Return
|
|
||||||
FunctionEnd
|
|
||||||
Line 1 7 18
|
|
||||||
39(function(f1;vf2;vf3;vf4;): 4 Function None 33
|
|
||||||
35(f): 24(float) FunctionParameter
|
|
||||||
36(f2): 27(fvec2) FunctionParameter
|
|
||||||
37(f3): 29(fvec3) FunctionParameter
|
|
||||||
38(f4): 31(fvec4) FunctionParameter
|
|
||||||
42: Label
|
|
||||||
43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41
|
|
||||||
44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12
|
|
||||||
47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 35(f) 48
|
|
||||||
51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 36(f2) 48
|
|
||||||
54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 37(f3) 48
|
|
||||||
57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 38(f4) 48
|
|
||||||
58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 41 39(function(f1;vf2;vf3;vf4;)
|
|
||||||
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