Merge branch 'master' of github.com:KhronosGroup/glslang into clang-format
This commit is contained in:
		
						commit
						f377f5287b
					
				
							
								
								
									
										40
									
								
								.appveyor.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								.appveyor.yml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,40 @@
 | 
			
		||||
# Windows Build Configuration for AppVeyor
 | 
			
		||||
# http://www.appveyor.com/docs/appveyor-yml
 | 
			
		||||
 | 
			
		||||
# build version format
 | 
			
		||||
version: "{build}"
 | 
			
		||||
 | 
			
		||||
os: Visual Studio 2013
 | 
			
		||||
 | 
			
		||||
platform:
 | 
			
		||||
  - Any CPU
 | 
			
		||||
 | 
			
		||||
configuration:
 | 
			
		||||
  - Debug
 | 
			
		||||
  - Release
 | 
			
		||||
 | 
			
		||||
branches:
 | 
			
		||||
  only:
 | 
			
		||||
    - master
 | 
			
		||||
 | 
			
		||||
clone_depth: 5
 | 
			
		||||
 | 
			
		||||
matrix:
 | 
			
		||||
  fast_finish: true # Show final status immediately if a test fails.
 | 
			
		||||
 | 
			
		||||
# scripts that run after cloning repository
 | 
			
		||||
install:
 | 
			
		||||
  - 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 .. -DCMAKE_INSTALL_PREFIX=install
 | 
			
		||||
  - cmake --build . --config %CONFIGURATION% --target install
 | 
			
		||||
 | 
			
		||||
test_script:
 | 
			
		||||
  - ctest -C %CONFIGURATION% --output-on-failure
 | 
			
		||||
  - cd ../Test && bash runtests
 | 
			
		||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -7,3 +7,4 @@ build/
 | 
			
		||||
Test/localResults/
 | 
			
		||||
Test/multiThread.out
 | 
			
		||||
Test/singleThread.out
 | 
			
		||||
External/googletest
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										60
									
								
								.travis.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								.travis.yml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,60 @@
 | 
			
		||||
# Linux and Mac Build Configuration for Travis
 | 
			
		||||
 | 
			
		||||
language: cpp
 | 
			
		||||
 | 
			
		||||
os:
 | 
			
		||||
  - linux
 | 
			
		||||
  - osx
 | 
			
		||||
 | 
			
		||||
# Use Ubuntu 14.04 LTS (Trusty) as the Linux testing environment.
 | 
			
		||||
sudo: required
 | 
			
		||||
dist: trusty
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  - GLSLANG_BUILD_TYPE=Release
 | 
			
		||||
  - GLSLANG_BUILD_TYPE=Debug
 | 
			
		||||
 | 
			
		||||
compiler:
 | 
			
		||||
  - clang
 | 
			
		||||
  - gcc
 | 
			
		||||
 | 
			
		||||
matrix:
 | 
			
		||||
  fast_finish: true # Show final status immediately if a test fails.
 | 
			
		||||
  exclude:
 | 
			
		||||
    # Skip GCC builds on Mac OS X.
 | 
			
		||||
    - os: osx
 | 
			
		||||
      compiler: gcc
 | 
			
		||||
 | 
			
		||||
cache:
 | 
			
		||||
  apt: true
 | 
			
		||||
 | 
			
		||||
branches:
 | 
			
		||||
  only:
 | 
			
		||||
    - master
 | 
			
		||||
 | 
			
		||||
addons:
 | 
			
		||||
  apt:
 | 
			
		||||
    packages:
 | 
			
		||||
      - clang-3.6
 | 
			
		||||
      - ninja-build
 | 
			
		||||
 | 
			
		||||
install:
 | 
			
		||||
  # Install ninja on Mac OS X.
 | 
			
		||||
  - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update && brew install ninja; fi
 | 
			
		||||
  # Make sure that clang-3.6 is selected.
 | 
			
		||||
  - if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "clang" ]]; then
 | 
			
		||||
      export CC=clang-3.6 CXX=clang++-3.6;
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
before_script:
 | 
			
		||||
  - git clone https://github.com/google/googletest.git External/googletest
 | 
			
		||||
 | 
			
		||||
script:
 | 
			
		||||
  - mkdir build && cd build
 | 
			
		||||
  # We need to install the compiled binaries so the paths in the runtests script can resolve correctly.
 | 
			
		||||
  - cmake -GNinja -DCMAKE_BUILD_TYPE=${GLSLANG_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
 | 
			
		||||
  - ninja install
 | 
			
		||||
  # Run Google-Test-based tests.
 | 
			
		||||
  - ctest --output-on-failure
 | 
			
		||||
  # Run runtests-based tests.
 | 
			
		||||
  - cd ../Test && ./runtests
 | 
			
		||||
@ -1,17 +1,21 @@
 | 
			
		||||
cmake_minimum_required(VERSION 2.8)
 | 
			
		||||
cmake_minimum_required(VERSION 2.8.12)
 | 
			
		||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 | 
			
		||||
 | 
			
		||||
enable_testing()
 | 
			
		||||
 | 
			
		||||
set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "prefix")
 | 
			
		||||
 | 
			
		||||
project(glslang)
 | 
			
		||||
 | 
			
		||||
if(WIN32)
 | 
			
		||||
    set(CMAKE_DEBUG_POSTFIX "d")
 | 
			
		||||
    include(ChooseMSVCCRT.cmake)
 | 
			
		||||
    add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
 | 
			
		||||
elseif(UNIX)
 | 
			
		||||
    add_definitions(-fPIC)
 | 
			
		||||
    add_definitions(-DGLSLANG_OSINCLUDE_UNIX)
 | 
			
		||||
else(WIN32)
 | 
			
		||||
    message("unkown platform")
 | 
			
		||||
    message("unknown platform")
 | 
			
		||||
endif(WIN32)
 | 
			
		||||
 | 
			
		||||
if(CMAKE_COMPILER_IS_GNUCXX)
 | 
			
		||||
@ -20,7 +24,23 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
 | 
			
		||||
    add_definitions(-std=c++11)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
function(glslang_set_link_args TARGET)
 | 
			
		||||
    # For MinGW compiles, statically link against the GCC and C++ runtimes.
 | 
			
		||||
    # This avoids the need to ship those runtimes as DLLs.
 | 
			
		||||
    if(WIN32)
 | 
			
		||||
	if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
 | 
			
		||||
	    set_target_properties(${TARGET} PROPERTIES
 | 
			
		||||
		    LINK_FLAGS "-static -static-libgcc -static-libstdc++")
 | 
			
		||||
        endif()
 | 
			
		||||
    endif(WIN32)
 | 
			
		||||
endfunction(glslang_set_link_args)
 | 
			
		||||
 | 
			
		||||
# We depend on these for later projects, so they should come first.
 | 
			
		||||
add_subdirectory(External)
 | 
			
		||||
 | 
			
		||||
add_subdirectory(glslang)
 | 
			
		||||
add_subdirectory(OGLCompilersDLL)
 | 
			
		||||
add_subdirectory(StandAlone)
 | 
			
		||||
add_subdirectory(SPIRV)
 | 
			
		||||
add_subdirectory(hlsl)
 | 
			
		||||
add_subdirectory(gtests)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										34
									
								
								External/CMakeLists.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								External/CMakeLists.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
# Suppress all warnings from external projects.
 | 
			
		||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w)
 | 
			
		||||
 | 
			
		||||
if (TARGET gmock)
 | 
			
		||||
  message(STATUS "Google Mock already configured - use it")
 | 
			
		||||
elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest)
 | 
			
		||||
  # We need to make sure Google Test does not mess up with the
 | 
			
		||||
  # global CRT settings on Windows.
 | 
			
		||||
  if(WIN32)
 | 
			
		||||
    set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
 | 
			
		||||
  endif(WIN32)
 | 
			
		||||
  add_subdirectory(googletest)
 | 
			
		||||
  set(GTEST_TARGETS
 | 
			
		||||
    gtest
 | 
			
		||||
    gtest_main
 | 
			
		||||
    gmock
 | 
			
		||||
    gmock_main
 | 
			
		||||
  )
 | 
			
		||||
  foreach(target ${GTEST_TARGETS})
 | 
			
		||||
    set_property(TARGET ${target} PROPERTY FOLDER gtest)
 | 
			
		||||
  endforeach()
 | 
			
		||||
  mark_as_advanced(gmock_build_tests
 | 
			
		||||
    BUILD_GMOCK
 | 
			
		||||
    BUILD_GTEST
 | 
			
		||||
    BUILD_SHARED_LIBS
 | 
			
		||||
    gtest_build_samples
 | 
			
		||||
    gtest_build_tests
 | 
			
		||||
    gtest_disable_pthreads
 | 
			
		||||
    gtest_force_shared_crt
 | 
			
		||||
    gtest_hide_internal_symbols)
 | 
			
		||||
else()
 | 
			
		||||
  message(STATUS
 | 
			
		||||
    "Google Mock was not found - tests based on that will not build")
 | 
			
		||||
endif()
 | 
			
		||||
@ -1,34 +0,0 @@
 | 
			
		||||
#! /bin/bash
 | 
			
		||||
 | 
			
		||||
svn update
 | 
			
		||||
 | 
			
		||||
rm -f StandAlone/glslangValidator
 | 
			
		||||
rm -f Test/glslangValidator
 | 
			
		||||
rm -f glslang/MachineIndependent/lib/libglslang.so
 | 
			
		||||
rm -f Install/Linux/libglslang.so
 | 
			
		||||
rm -f Install/Linux/glslangValidator
 | 
			
		||||
 | 
			
		||||
cd StandAlone
 | 
			
		||||
make clean
 | 
			
		||||
cd ../glslang/MachineIndependent
 | 
			
		||||
make clean
 | 
			
		||||
cd ../..
 | 
			
		||||
 | 
			
		||||
# build the StandAlone app and all it's dependencies
 | 
			
		||||
make -C StandAlone
 | 
			
		||||
 | 
			
		||||
# so we can find the shared library
 | 
			
		||||
#LD_LIBRARY_PATH=`pwd`/glslang/MachineIndependent/lib
 | 
			
		||||
#export LD_LIBRARY_PATH
 | 
			
		||||
 | 
			
		||||
# install
 | 
			
		||||
cd Install/Linux
 | 
			
		||||
./install
 | 
			
		||||
cp glslangValidator ../../Test
 | 
			
		||||
LD_LIBRARY_PATH=/usr/local/lib
 | 
			
		||||
export LD_LIBRARY_PATH
 | 
			
		||||
 | 
			
		||||
# run using test data
 | 
			
		||||
cd ../../Test
 | 
			
		||||
chmod +x runtests
 | 
			
		||||
./runtests
 | 
			
		||||
@ -1,8 +1,7 @@
 | 
			
		||||
cmake_minimum_required(VERSION 2.8)
 | 
			
		||||
 | 
			
		||||
set(SOURCES InitializeDll.cpp InitializeDll.h)
 | 
			
		||||
 | 
			
		||||
add_library(OGLCompiler STATIC ${SOURCES})
 | 
			
		||||
set_property(TARGET OGLCompiler PROPERTY FOLDER glslang)
 | 
			
		||||
 | 
			
		||||
if(WIN32)
 | 
			
		||||
    source_group("Source" FILES ${SOURCES})
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										172
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										172
									
								
								README.md
									
									
									
									
									
								
							@ -8,6 +8,9 @@ regarding the feature level of glslang.
 | 
			
		||||
glslang
 | 
			
		||||
=======
 | 
			
		||||
 | 
			
		||||
[](https://travis-ci.org/KhronosGroup/glslang)
 | 
			
		||||
[](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/master)
 | 
			
		||||
 | 
			
		||||
An OpenGL and OpenGL ES shader front end and validator.
 | 
			
		||||
 | 
			
		||||
There are two components:
 | 
			
		||||
@ -43,24 +46,149 @@ There is also a non-shader extension
 | 
			
		||||
Building
 | 
			
		||||
--------
 | 
			
		||||
 | 
			
		||||
CMake: The currently maintained and preferred way of building is through CMake.
 | 
			
		||||
In MSVC, after running CMake, you may need to use the Configuration Manager to
 | 
			
		||||
check the INSTALL project.
 | 
			
		||||
### Dependencies
 | 
			
		||||
 | 
			
		||||
The grammar in glslang/MachineIndependent/glslang.y has to be recompiled with
 | 
			
		||||
* [CMake][cmake]: for generating compilation targets.
 | 
			
		||||
* [bison][bison]: _optional_, but needed when changing the grammar (glslang.y).
 | 
			
		||||
* [googletest][googletest]: _optional_, but should use if making any changes to glslang.
 | 
			
		||||
 | 
			
		||||
### Build steps
 | 
			
		||||
 | 
			
		||||
#### 1) Check-Out External Projects
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cd <the directory glslang was cloned to, External will be a subdirectory>
 | 
			
		||||
git clone https://github.com/google/googletest.git External/googletest
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
#### 2) Configure
 | 
			
		||||
 | 
			
		||||
Assume the source directory is `$SOURCE_DIR` and
 | 
			
		||||
the build directory is `$BUILD_DIR`:
 | 
			
		||||
 | 
			
		||||
For building on Linux (assuming using the Ninja generator):
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cd $BUILD_DIR
 | 
			
		||||
 | 
			
		||||
cmake -GNinja -DCMAKE_BUILD_TYPE={Debug|Release|RelWithDebInfo} \
 | 
			
		||||
      -DCMAKE_INSTALL_PREFIX=`pwd`/install $SOURCE_DIR
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
For building on Windows:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cmake $SOURCE_DIR -DCMAKE_INSTALL_PREFIX=`pwd`/install
 | 
			
		||||
# The CMAKE_INSTALL_PREFIX part is for testing (explained later).
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The CMake GUI also works for Windows (version 3.4.1 tested).
 | 
			
		||||
 | 
			
		||||
#### 3) Build and Install
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
# for Linux:
 | 
			
		||||
ninja install
 | 
			
		||||
 | 
			
		||||
# for Windows:
 | 
			
		||||
cmake --build . --config {Release|Debug|MinSizeRel|RelWithDebInfo} \
 | 
			
		||||
      --target install
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
If using MSVC, after running CMake to configure, use the
 | 
			
		||||
Configuration Manager to check the `INSTALL` project.
 | 
			
		||||
 | 
			
		||||
### If you need to change the GLSL grammar
 | 
			
		||||
 | 
			
		||||
The grammar in `glslang/MachineIndependent/glslang.y` has to be recompiled with
 | 
			
		||||
bison if it changes, the output files are committed to the repo to avoid every
 | 
			
		||||
developer needing to have bison configured to compile the project when grammar
 | 
			
		||||
changes are quite infrequent. For windows you can get binaries from
 | 
			
		||||
[GnuWin32](http://gnuwin32.sourceforge.net/packages/bison.htm).
 | 
			
		||||
[GnuWin32][bison-gnu-win32].
 | 
			
		||||
 | 
			
		||||
The command to rebuild is:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
```bash
 | 
			
		||||
bison --defines=MachineIndependent/glslang_tab.cpp.h
 | 
			
		||||
      -t MachineIndependent/glslang.y
 | 
			
		||||
      -o MachineIndependent/glslang_tab.cpp
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The above command is also available in the bash script at
 | 
			
		||||
`glslang/updateGrammar`.
 | 
			
		||||
 | 
			
		||||
Testing
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
Right now, there are two test harnesses existing in glslang: one is [Google
 | 
			
		||||
Test](gtests/), one is the [`runtests` script](Test/runtests). The former
 | 
			
		||||
runs unit tests and single-shader single-threaded integration tests, while
 | 
			
		||||
the latter runs multiple-shader linking tests and multi-threaded tests.
 | 
			
		||||
 | 
			
		||||
### Running tests
 | 
			
		||||
 | 
			
		||||
The [`runtests` script](Test/runtests) requires compiled binaries to be
 | 
			
		||||
installed into `$BUILD_DIR/install`. Please make sure you have supplied the
 | 
			
		||||
correct configuration to CMake (using `-DCMAKE_INSTALL_PREFIX`) when building;
 | 
			
		||||
otherwise, you may want to modify the path in the `runtests` script.
 | 
			
		||||
 | 
			
		||||
Running Google Test-backed tests:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cd $BUILD_DIR
 | 
			
		||||
 | 
			
		||||
# for Linux:
 | 
			
		||||
ctest
 | 
			
		||||
 | 
			
		||||
# for Windows:
 | 
			
		||||
ctest -C {Debug|Release|RelWithDebInfo|MinSizeRel}
 | 
			
		||||
 | 
			
		||||
# or, run the test binary directly
 | 
			
		||||
# (which gives more fine-grained control like filtering):
 | 
			
		||||
<dir-to-glslangtests-in-build-dir>/glslangtests
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Running `runtests` script-backed tests:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cd $SOURCE_DIR/Test && ./runtests
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Contributing tests
 | 
			
		||||
 | 
			
		||||
Test results should always be included with a pull request that modifies
 | 
			
		||||
functionality.
 | 
			
		||||
 | 
			
		||||
If you are writing unit tests, please use the Google Test framework and
 | 
			
		||||
place the tests under the `gtests/` directory.
 | 
			
		||||
 | 
			
		||||
Integration tests are placed in the `Test/` directory. It contains test input
 | 
			
		||||
and a subdirectory `baseResults/` that contains the expected results of the
 | 
			
		||||
tests.  Both the tests and `baseResults/` are under source-code control.
 | 
			
		||||
 | 
			
		||||
Google Test runs those integration tests by reading the test input, compiling
 | 
			
		||||
them, and then compare against the expected results in `baseResults/`. The
 | 
			
		||||
integration tests to run via Google Test is registered in various
 | 
			
		||||
`gtests/*.FromFile.cpp` source files. `glslangtests` provides a command-line
 | 
			
		||||
option `--update-mode`, which, if supplied, will overwrite the golden files
 | 
			
		||||
under the `baseResults/` directory with real output from that invocation.
 | 
			
		||||
For more information, please check `gtests/` directory's
 | 
			
		||||
[README](gtests/README.md).
 | 
			
		||||
 | 
			
		||||
For the `runtests` script, it will generate current results in the
 | 
			
		||||
`localResults/` directory and `diff` them against the `baseResults/`.
 | 
			
		||||
The integration tests to run via the `runtests` script is registered
 | 
			
		||||
via various `Test/test-*` text files and `Test/testlist`.
 | 
			
		||||
When you want to update the tracked test results, they need to be
 | 
			
		||||
copied from `localResults/` to `baseResults/`.  This can be done by
 | 
			
		||||
the `bump` shell script.
 | 
			
		||||
 | 
			
		||||
The list of files tested comes from `testlist`, and lists input shaders
 | 
			
		||||
in this directory, which must all be public for this to work.  However,
 | 
			
		||||
you can add your own private list of tests, not tracked here, by using
 | 
			
		||||
`localtestlist` to list non-tracked tests.  This is automatically read
 | 
			
		||||
by `runtests` and included in the `diff` and `bump` process.
 | 
			
		||||
 | 
			
		||||
Programmatic Interfaces
 | 
			
		||||
-----------------------
 | 
			
		||||
 | 
			
		||||
@ -97,7 +225,7 @@ class TProgram
 | 
			
		||||
See `ShaderLang.h` and the usage of it in `StandAlone/StandAlone.cpp` for more
 | 
			
		||||
details.
 | 
			
		||||
 | 
			
		||||
### C Functional Interface (orginal)
 | 
			
		||||
### C Functional Interface (orignal)
 | 
			
		||||
 | 
			
		||||
This interface is in roughly the first 2/3 of `ShaderLang.h`, and referred to
 | 
			
		||||
as the `Sh*()` interface, as all the entry points start `Sh`.
 | 
			
		||||
@ -112,29 +240,7 @@ ShCompile(shader, compiler) -> compiler(AST) -> <back end>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
In practice, `ShCompile()` takes shader strings, default version, and
 | 
			
		||||
warning/error and other options for controling compilation.
 | 
			
		||||
 | 
			
		||||
Testing
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
Test results should always be included with a pull request that modifies
 | 
			
		||||
functionality. There is a simple process for doing this, described here:
 | 
			
		||||
 | 
			
		||||
`Test` is an active test directory that contains test input and a
 | 
			
		||||
subdirectory `baseResults` that contains the expected results of the
 | 
			
		||||
tests.  Both the tests and `baseResults` are under source-code control.
 | 
			
		||||
Executing the script `./runtests` will generate current results in
 | 
			
		||||
the `localResults` directory and `diff` them against the `baseResults`.
 | 
			
		||||
 | 
			
		||||
When you want to update the tracked test results, they need to be
 | 
			
		||||
copied from `localResults` to `baseResults`.  This can be done by
 | 
			
		||||
the `bump` shell script.
 | 
			
		||||
 | 
			
		||||
The list of files tested comes from `testlist`, and lists input shaders
 | 
			
		||||
in this directory, which must all be public for this to work.  However,
 | 
			
		||||
you can add your own private list of tests, not tracked here, by using
 | 
			
		||||
`localtestlist` to list non-tracked tests.  This is automatically read
 | 
			
		||||
by `runtests` and included in the `diff` and `bump` process.
 | 
			
		||||
warning/error and other options for controlling compilation.
 | 
			
		||||
 | 
			
		||||
Basic Internal Operation
 | 
			
		||||
------------------------
 | 
			
		||||
@ -183,3 +289,9 @@ Basic Internal Operation
 | 
			
		||||
 | 
			
		||||
  - the object does not come from the pool, and you have to do normal
 | 
			
		||||
    C++ memory management of what you `new`
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[cmake]: https://cmake.org/
 | 
			
		||||
[bison]: https://www.gnu.org/software/bison/
 | 
			
		||||
[googletest]: https://github.com/google/googletest
 | 
			
		||||
[bison-gnu-win32]: http://gnuwin32.sourceforge.net/packages/bison.htm
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,7 @@
 | 
			
		||||
cmake_minimum_required(VERSION 2.8)
 | 
			
		||||
 | 
			
		||||
set(SOURCES
 | 
			
		||||
    GlslangToSpv.cpp
 | 
			
		||||
    InReadableOrder.cpp
 | 
			
		||||
    Logger.cpp
 | 
			
		||||
    SpvBuilder.cpp
 | 
			
		||||
    SPVRemapper.cpp
 | 
			
		||||
    doc.cpp
 | 
			
		||||
@ -12,6 +11,7 @@ set(HEADERS
 | 
			
		||||
    spirv.hpp
 | 
			
		||||
    GLSL.std.450.h
 | 
			
		||||
    GlslangToSpv.h
 | 
			
		||||
    Logger.h
 | 
			
		||||
    SpvBuilder.h
 | 
			
		||||
    SPVRemapper.h
 | 
			
		||||
    spvIR.h
 | 
			
		||||
@ -19,6 +19,7 @@ set(HEADERS
 | 
			
		||||
    disassemble.h)
 | 
			
		||||
 | 
			
		||||
add_library(SPIRV STATIC ${SOURCES} ${HEADERS})
 | 
			
		||||
set_property(TARGET SPIRV PROPERTY FOLDER glslang)
 | 
			
		||||
 | 
			
		||||
if(WIN32)
 | 
			
		||||
    source_group("Source" FILES ${SOURCES} ${HEADERS})
 | 
			
		||||
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -34,10 +34,16 @@
 | 
			
		||||
 | 
			
		||||
#include "../glslang/Include/intermediate.h"
 | 
			
		||||
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
#include "Logger.h"
 | 
			
		||||
 | 
			
		||||
namespace glslang {
 | 
			
		||||
 | 
			
		||||
void GetSpirvVersion(std::string&);
 | 
			
		||||
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);
 | 
			
		||||
void OutputSpv(const std::vector<unsigned int>& spirv, const char* baseName);
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -32,10 +32,6 @@
 | 
			
		||||
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
			
		||||
//POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Author: Dejan Mircevski, Google
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
// The SPIR-V spec requires code blocks to appear in an order satisfying the
 | 
			
		||||
// dominator-tree direction (ie, dominator before the dominated).  This is,
 | 
			
		||||
// actually, easy to achieve: any pre-order CFG traversal algorithm will do it.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										68
									
								
								SPIRV/Logger.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								SPIRV/Logger.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,68 @@
 | 
			
		||||
//
 | 
			
		||||
// Copyright (C) 2016 Google, 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 Google 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.
 | 
			
		||||
 | 
			
		||||
#include "Logger.h"
 | 
			
		||||
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
#include <iterator>
 | 
			
		||||
#include <sstream>
 | 
			
		||||
 | 
			
		||||
namespace spv {
 | 
			
		||||
 | 
			
		||||
void SpvBuildLogger::tbdFunctionality(const std::string& f)
 | 
			
		||||
{
 | 
			
		||||
    if (std::find(std::begin(tbdFeatures), std::end(tbdFeatures), f) == std::end(tbdFeatures))
 | 
			
		||||
        tbdFeatures.push_back(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SpvBuildLogger::missingFunctionality(const std::string& f)
 | 
			
		||||
{
 | 
			
		||||
    if (std::find(std::begin(missingFeatures), std::end(missingFeatures), f) == std::end(missingFeatures))
 | 
			
		||||
        missingFeatures.push_back(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::string SpvBuildLogger::getAllMessages() const {
 | 
			
		||||
    std::ostringstream messages;
 | 
			
		||||
    for (auto it = tbdFeatures.cbegin(); it != tbdFeatures.cend(); ++it)
 | 
			
		||||
        messages << "TBD functionality: " << *it << "\n";
 | 
			
		||||
    for (auto it = missingFeatures.cbegin(); it != missingFeatures.cend(); ++it)
 | 
			
		||||
        messages << "Missing functionality: " << *it << "\n";
 | 
			
		||||
    for (auto it = warnings.cbegin(); it != warnings.cend(); ++it)
 | 
			
		||||
        messages << "warning: " << *it << "\n";
 | 
			
		||||
    for (auto it = errors.cbegin(); it != errors.cend(); ++it)
 | 
			
		||||
        messages << "error: " << *it << "\n";
 | 
			
		||||
    return messages.str();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // end spv namespace
 | 
			
		||||
							
								
								
									
										74
									
								
								SPIRV/Logger.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								SPIRV/Logger.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,74 @@
 | 
			
		||||
//
 | 
			
		||||
// Copyright (C) 2016 Google, 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 Google 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.
 | 
			
		||||
 | 
			
		||||
#ifndef GLSLANG_SPIRV_LOGGER_H
 | 
			
		||||
#define GLSLANG_SPIRV_LOGGER_H
 | 
			
		||||
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
namespace spv {
 | 
			
		||||
 | 
			
		||||
// A class for holding all SPIR-V build status messages, including
 | 
			
		||||
// missing/TBD functionalities, warnings, and errors.
 | 
			
		||||
class SpvBuildLogger {
 | 
			
		||||
public:
 | 
			
		||||
    SpvBuildLogger() {}
 | 
			
		||||
 | 
			
		||||
    // Registers a TBD functionality.
 | 
			
		||||
    void tbdFunctionality(const std::string& f);
 | 
			
		||||
    // Registers a missing functionality.
 | 
			
		||||
    void missingFunctionality(const std::string& f);
 | 
			
		||||
 | 
			
		||||
    // Logs a warning.
 | 
			
		||||
    void warning(const std::string& w) { warnings.push_back(w); }
 | 
			
		||||
    // Logs an error.
 | 
			
		||||
    void error(const std::string& e) { errors.push_back(e); }
 | 
			
		||||
 | 
			
		||||
    // Returns all messages accumulated in the order of:
 | 
			
		||||
    // TBD functionalities, missing functionalities, warnings, errors.
 | 
			
		||||
    std::string getAllMessages() const;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    SpvBuildLogger(const SpvBuildLogger&);
 | 
			
		||||
 | 
			
		||||
    std::vector<std::string> tbdFeatures;
 | 
			
		||||
    std::vector<std::string> missingFeatures;
 | 
			
		||||
    std::vector<std::string> warnings;
 | 
			
		||||
    std::vector<std::string> errors;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // end spv namespace
 | 
			
		||||
 | 
			
		||||
#endif // GLSLANG_SPIRV_LOGGER_H
 | 
			
		||||
@ -573,7 +573,7 @@ namespace spv {
 | 
			
		||||
            op_fn_nop);
 | 
			
		||||
 | 
			
		||||
        // Window size for context-sensitive canonicalization values
 | 
			
		||||
        // Emperical best size from a single data set.  TODO: Would be a good tunable.
 | 
			
		||||
        // Empirical best size from a single data set.  TODO: Would be a good tunable.
 | 
			
		||||
        // We essentially perform a little convolution around each instruction,
 | 
			
		||||
        // to capture the flavor of nearby code, to hopefully match to similar
 | 
			
		||||
        // code in other modules.
 | 
			
		||||
@ -926,7 +926,16 @@ namespace spv {
 | 
			
		||||
        // Count function variable use
 | 
			
		||||
        process(
 | 
			
		||||
            [&](spv::Op opCode, unsigned start) {
 | 
			
		||||
                if (opCode == spv::OpVariable) { ++varUseCount[asId(start+2)]; return true; }
 | 
			
		||||
                if (opCode == spv::OpVariable) {
 | 
			
		||||
                    ++varUseCount[asId(start+2)];
 | 
			
		||||
                    return true;
 | 
			
		||||
                } else if (opCode == spv::OpEntryPoint) {
 | 
			
		||||
                    const int wordCount = asWordCount(start);
 | 
			
		||||
                    for (int i = 4; i < wordCount; i++) {
 | 
			
		||||
                        ++varUseCount[asId(start+i)];
 | 
			
		||||
                    }
 | 
			
		||||
                    return true;
 | 
			
		||||
                } else
 | 
			
		||||
                    return false;
 | 
			
		||||
            },
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -33,20 +33,16 @@
 | 
			
		||||
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
			
		||||
//POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Author: John Kessenich, LunarG
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Helper for making SPIR-V IR.  Generally, this is documented in the header
 | 
			
		||||
// SpvBuilder.h.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
#include <unordered_set>
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
 | 
			
		||||
#include "SpvBuilder.h"
 | 
			
		||||
 | 
			
		||||
@ -56,15 +52,17 @@
 | 
			
		||||
 | 
			
		||||
namespace spv {
 | 
			
		||||
 | 
			
		||||
Builder::Builder(unsigned int magicNumber)
 | 
			
		||||
    : source(SourceLanguageUnknown),
 | 
			
		||||
Builder::Builder(unsigned int magicNumber, SpvBuildLogger* buildLogger) :
 | 
			
		||||
    source(SourceLanguageUnknown),
 | 
			
		||||
    sourceVersion(0),
 | 
			
		||||
    addressModel(AddressingModelLogical),
 | 
			
		||||
    memoryModel(MemoryModelGLSL450),
 | 
			
		||||
    builderNumber(magicNumber),
 | 
			
		||||
    buildPoint(0),
 | 
			
		||||
    uniqueId(0),
 | 
			
		||||
      mainFunction(0)
 | 
			
		||||
    mainFunction(0),
 | 
			
		||||
    generatingOpCodeForSpecConst(false),
 | 
			
		||||
    logger(buildLogger)
 | 
			
		||||
{
 | 
			
		||||
    clearAccessChain();
 | 
			
		||||
}
 | 
			
		||||
@ -616,7 +614,7 @@ Id Builder::findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned valu
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Version of findScalarConstant (see above) for scalars that take two operands (e.g. a 'double').
 | 
			
		||||
// Version of findScalarConstant (see above) for scalars that take two operands (e.g. a 'double' or 'int64').
 | 
			
		||||
Id Builder::findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned v1, unsigned v2) const
 | 
			
		||||
{
 | 
			
		||||
    Instruction* constant;
 | 
			
		||||
@ -656,6 +654,21 @@ bool Builder::isConstantOpCode(Op opcode) const
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Return true if consuming 'opcode' means consuming a specialization constant.
 | 
			
		||||
bool Builder::isSpecConstantOpCode(Op opcode) const
 | 
			
		||||
{
 | 
			
		||||
    switch (opcode) {
 | 
			
		||||
    case OpSpecConstantTrue:
 | 
			
		||||
    case OpSpecConstantFalse:
 | 
			
		||||
    case OpSpecConstant:
 | 
			
		||||
    case OpSpecConstantComposite:
 | 
			
		||||
    case OpSpecConstantOp:
 | 
			
		||||
        return true;
 | 
			
		||||
    default:
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Id Builder::makeBoolConstant(bool b, bool specConstant)
 | 
			
		||||
{
 | 
			
		||||
    Id typeId = makeBoolType();
 | 
			
		||||
@ -710,6 +723,31 @@ Id Builder::makeIntConstant(Id typeId, unsigned value, bool specConstant)
 | 
			
		||||
    return c->getResultId();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Id Builder::makeInt64Constant(Id typeId, unsigned long long value, bool specConstant)
 | 
			
		||||
{
 | 
			
		||||
    Op opcode = specConstant ? OpSpecConstant : OpConstant;
 | 
			
		||||
 | 
			
		||||
    unsigned op1 = value & 0xFFFFFFFF;
 | 
			
		||||
    unsigned op2 = value >> 32;
 | 
			
		||||
 | 
			
		||||
    // See if we already made it. Applies only to regular constants, because specialization constants
 | 
			
		||||
    // must remain distinct for the purpose of applying a SpecId decoration.
 | 
			
		||||
    if (! specConstant) {
 | 
			
		||||
        Id existing = findScalarConstant(OpTypeInt, opcode, typeId, op1, op2);
 | 
			
		||||
        if (existing)
 | 
			
		||||
            return existing;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Instruction* c = new Instruction(getUniqueId(), typeId, opcode);
 | 
			
		||||
    c->addImmediateOperand(op1);
 | 
			
		||||
    c->addImmediateOperand(op2);
 | 
			
		||||
    constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(c));
 | 
			
		||||
    groupedConstants[OpTypeInt].push_back(c);
 | 
			
		||||
    module.mapInstruction(c);
 | 
			
		||||
 | 
			
		||||
    return c->getResultId();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Id Builder::makeFloatConstant(float f, bool specConstant)
 | 
			
		||||
{
 | 
			
		||||
    Op opcode = specConstant ? OpSpecConstant : OpConstant;
 | 
			
		||||
@ -924,7 +962,7 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Comments in header
 | 
			
		||||
Function* Builder::makeMain()
 | 
			
		||||
Function* Builder::makeEntrypoint(const char* entryPoint)
 | 
			
		||||
{
 | 
			
		||||
    assert(!mainFunction);
 | 
			
		||||
 | 
			
		||||
@ -932,8 +970,7 @@ Function* Builder::makeMain()
 | 
			
		||||
    std::vector<Id> params;
 | 
			
		||||
    std::vector<Decoration> precisions;
 | 
			
		||||
 | 
			
		||||
    mainFunction =
 | 
			
		||||
        makeFunctionEntry(NoPrecision, makeVoidType(), "main", params, precisions, &entry);
 | 
			
		||||
    mainFunction = makeFunctionEntry(NoPrecision, makeVoidType(), entryPoint, params, precisions, &entry);
 | 
			
		||||
 | 
			
		||||
    return mainFunction;
 | 
			
		||||
}
 | 
			
		||||
@ -1104,6 +1141,11 @@ Id Builder::createArrayLength(Id base, unsigned int member)
 | 
			
		||||
 | 
			
		||||
Id Builder::createCompositeExtract(Id composite, Id typeId, unsigned index)
 | 
			
		||||
{
 | 
			
		||||
    // Generate code for spec constants if in spec constant operation
 | 
			
		||||
    // generation mode.
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        return createSpecConstantOp(OpCompositeExtract, typeId, std::vector<Id>(1, composite), std::vector<Id>(1, index));
 | 
			
		||||
    }
 | 
			
		||||
    Instruction* extract = new Instruction(getUniqueId(), typeId, OpCompositeExtract);
 | 
			
		||||
    extract->addIdOperand(composite);
 | 
			
		||||
    extract->addImmediateOperand(index);
 | 
			
		||||
@ -1114,6 +1156,11 @@ Id Builder::createCompositeExtract(Id composite, Id typeId, unsigned index)
 | 
			
		||||
 | 
			
		||||
Id Builder::createCompositeExtract(Id composite, Id typeId, std::vector<unsigned>& indexes)
 | 
			
		||||
{
 | 
			
		||||
    // Generate code for spec constants if in spec constant operation
 | 
			
		||||
    // generation mode.
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        return createSpecConstantOp(OpCompositeExtract, typeId, std::vector<Id>(1, composite), indexes);
 | 
			
		||||
    }
 | 
			
		||||
    Instruction* extract = new Instruction(getUniqueId(), typeId, OpCompositeExtract);
 | 
			
		||||
    extract->addIdOperand(composite);
 | 
			
		||||
    for (int i = 0; i < (int)indexes.size(); ++i)
 | 
			
		||||
@ -1212,6 +1259,11 @@ void Builder::createMemoryBarrier(unsigned executionScope, unsigned memorySemant
 | 
			
		||||
// An opcode that has one operands, a result id, and a type
 | 
			
		||||
Id Builder::createUnaryOp(Op opCode, Id typeId, Id operand)
 | 
			
		||||
{
 | 
			
		||||
    // Generate code for spec constants if in spec constant operation
 | 
			
		||||
    // generation mode.
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        return createSpecConstantOp(opCode, typeId, std::vector<Id>(1, operand), std::vector<Id>());
 | 
			
		||||
    }
 | 
			
		||||
    Instruction* op = new Instruction(getUniqueId(), typeId, opCode);
 | 
			
		||||
    op->addIdOperand(operand);
 | 
			
		||||
    buildPoint->addInstruction(std::unique_ptr<Instruction>(op));
 | 
			
		||||
@ -1221,6 +1273,13 @@ Id Builder::createUnaryOp(Op opCode, Id typeId, Id operand)
 | 
			
		||||
 | 
			
		||||
Id Builder::createBinOp(Op opCode, Id typeId, Id left, Id right)
 | 
			
		||||
{
 | 
			
		||||
    // Generate code for spec constants if in spec constant operation
 | 
			
		||||
    // generation mode.
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        std::vector<Id> operands(2);
 | 
			
		||||
        operands[0] = left; operands[1] = right;
 | 
			
		||||
        return createSpecConstantOp(opCode, typeId, operands, std::vector<Id>());
 | 
			
		||||
    }
 | 
			
		||||
    Instruction* op = new Instruction(getUniqueId(), typeId, opCode);
 | 
			
		||||
    op->addIdOperand(left);
 | 
			
		||||
    op->addIdOperand(right);
 | 
			
		||||
@ -1231,6 +1290,16 @@ Id Builder::createBinOp(Op opCode, Id typeId, Id left, Id right)
 | 
			
		||||
 | 
			
		||||
Id Builder::createTriOp(Op opCode, Id typeId, Id op1, Id op2, Id op3)
 | 
			
		||||
{
 | 
			
		||||
    // Generate code for spec constants if in spec constant operation
 | 
			
		||||
    // generation mode.
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        std::vector<Id> operands(3);
 | 
			
		||||
        operands[0] = op1;
 | 
			
		||||
        operands[1] = op2;
 | 
			
		||||
        operands[2] = op3;
 | 
			
		||||
        return createSpecConstantOp(
 | 
			
		||||
            opCode, typeId, operands, std::vector<Id>());
 | 
			
		||||
    }
 | 
			
		||||
    Instruction* op = new Instruction(getUniqueId(), typeId, opCode);
 | 
			
		||||
    op->addIdOperand(op1);
 | 
			
		||||
    op->addIdOperand(op2);
 | 
			
		||||
@ -1250,6 +1319,20 @@ Id Builder::createOp(Op opCode, Id typeId, const std::vector<Id>& operands)
 | 
			
		||||
    return op->getResultId();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Id Builder::createSpecConstantOp(Op opCode, Id typeId, const std::vector<Id>& operands, const std::vector<unsigned>& literals)
 | 
			
		||||
{
 | 
			
		||||
    Instruction* op = new Instruction(getUniqueId(), typeId, OpSpecConstantOp);
 | 
			
		||||
    op->addImmediateOperand((unsigned) opCode);
 | 
			
		||||
    for (auto it = operands.cbegin(); it != operands.cend(); ++it)
 | 
			
		||||
        op->addIdOperand(*it);
 | 
			
		||||
    for (auto it = literals.cbegin(); it != literals.cend(); ++it)
 | 
			
		||||
        op->addImmediateOperand(*it);
 | 
			
		||||
    module.mapInstruction(op);
 | 
			
		||||
    constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(op));
 | 
			
		||||
 | 
			
		||||
    return op->getResultId();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Id Builder::createFunctionCall(spv::Function* function, std::vector<spv::Id>& args)
 | 
			
		||||
{
 | 
			
		||||
    Instruction* op = new Instruction(getUniqueId(), function->getReturnType(), OpFunctionCall);
 | 
			
		||||
@ -1268,6 +1351,11 @@ Id Builder::createRvalueSwizzle(Decoration precision, Id typeId, Id source,
 | 
			
		||||
    if (channels.size() == 1)
 | 
			
		||||
        return setPrecision(createCompositeExtract(source, typeId, channels.front()), precision);
 | 
			
		||||
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        std::vector<Id> operands(2);
 | 
			
		||||
        operands[0] = operands[1] = source;
 | 
			
		||||
        return setPrecision(createSpecConstantOp(OpVectorShuffle, typeId, operands, channels), precision);
 | 
			
		||||
    }
 | 
			
		||||
    Instruction* swizzle = new Instruction(getUniqueId(), typeId, OpVectorShuffle);
 | 
			
		||||
    assert(isVector(source));
 | 
			
		||||
    swizzle->addIdOperand(source);
 | 
			
		||||
@ -1335,10 +1423,25 @@ Id Builder::smearScalar(Decoration precision, Id scalar, Id vectorType)
 | 
			
		||||
    if (numComponents == 1)
 | 
			
		||||
        return scalar;
 | 
			
		||||
 | 
			
		||||
    Instruction* smear = new Instruction(getUniqueId(), vectorType, OpCompositeConstruct);
 | 
			
		||||
    Instruction* smear = nullptr;
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        auto members = std::vector<spv::Id>(numComponents, scalar);
 | 
			
		||||
        // Sometime even in spec-constant-op mode, the temporary vector created by
 | 
			
		||||
        // promoting a scalar might not be a spec constant. This should depend on
 | 
			
		||||
        // the scalar.
 | 
			
		||||
        // e.g.:
 | 
			
		||||
        //  const vec2 spec_const_result = a_spec_const_vec2 + a_front_end_const_scalar;
 | 
			
		||||
        // In such cases, the temporary vector created from a_front_end_const_scalar
 | 
			
		||||
        // is not a spec constant vector, even though the binary operation node is marked
 | 
			
		||||
        // as 'specConstant' and we are in spec-constant-op mode.
 | 
			
		||||
        auto result_id = makeCompositeConstant(vectorType, members, isSpecConstant(scalar));
 | 
			
		||||
        smear = module.getInstruction(result_id);
 | 
			
		||||
    } else {
 | 
			
		||||
        smear = new Instruction(getUniqueId(), vectorType, OpCompositeConstruct);
 | 
			
		||||
        for (int c = 0; c < numComponents; ++c)
 | 
			
		||||
            smear->addIdOperand(scalar);
 | 
			
		||||
        buildPoint->addInstruction(std::unique_ptr<Instruction>(smear));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return setPrecision(smear->getResultId(), precision);
 | 
			
		||||
}
 | 
			
		||||
@ -1413,8 +1516,10 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
 | 
			
		||||
    {
 | 
			
		||||
        if (isConstant(parameters.offset))
 | 
			
		||||
            mask = (ImageOperandsMask)(mask | ImageOperandsConstOffsetMask);
 | 
			
		||||
        else
 | 
			
		||||
        else {
 | 
			
		||||
            addCapability(CapabilityImageGatherExtended);
 | 
			
		||||
            mask = (ImageOperandsMask)(mask | ImageOperandsOffsetMask);
 | 
			
		||||
        }
 | 
			
		||||
        texArgs[numArgs++] = parameters.offset;
 | 
			
		||||
    }
 | 
			
		||||
    if (parameters.offsets)
 | 
			
		||||
@ -1723,6 +1828,20 @@ Id Builder::createCompositeConstruct(Id typeId, std::vector<Id>& constituents)
 | 
			
		||||
    assert(isAggregateType(typeId) || (getNumTypeConstituents(typeId) > 1 &&
 | 
			
		||||
                                       getNumTypeConstituents(typeId) == (int)constituents.size()));
 | 
			
		||||
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        // Sometime, even in spec-constant-op mode, the constant composite to be
 | 
			
		||||
        // constructed may not be a specialization constant.
 | 
			
		||||
        // e.g.:
 | 
			
		||||
        //  const mat2 m2 = mat2(a_spec_const, a_front_end_const, another_front_end_const, third_front_end_const);
 | 
			
		||||
        // The first column vector should be a spec constant one, as a_spec_const is a spec constant.
 | 
			
		||||
        // The second column vector should NOT be spec constant, as it does not contain any spec constants.
 | 
			
		||||
        // To handle such cases, we check the constituents of the constant vector to determine whether this
 | 
			
		||||
        // vector should be created as a spec constant.
 | 
			
		||||
        return makeCompositeConstant(typeId, constituents,
 | 
			
		||||
                                     std::any_of(constituents.begin(), constituents.end(),
 | 
			
		||||
                                                 [&](spv::Id id) { return isSpecConstant(id); }));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Instruction* op = new Instruction(getUniqueId(), typeId, OpCompositeConstruct);
 | 
			
		||||
    for (int c = 0; c < (int)constituents.size(); ++c)
 | 
			
		||||
        op->addIdOperand(constituents[c]);
 | 
			
		||||
@ -1788,6 +1907,9 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector<Id>&
 | 
			
		||||
    int numCols = getTypeNumColumns(resultTypeId);
 | 
			
		||||
    int numRows = getTypeNumRows(resultTypeId);
 | 
			
		||||
 | 
			
		||||
    Instruction* instr = module.getInstruction(componentTypeId);
 | 
			
		||||
    Id bitCount = instr->getIdOperand(0);
 | 
			
		||||
 | 
			
		||||
    // Will use a two step process
 | 
			
		||||
    // 1. make a compile-time 2D array of values
 | 
			
		||||
    // 2. construct a matrix from that array
 | 
			
		||||
@ -1796,12 +1918,10 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector<Id>&
 | 
			
		||||
 | 
			
		||||
    // initialize the array to the identity matrix
 | 
			
		||||
    Id ids[maxMatrixSize][maxMatrixSize];
 | 
			
		||||
    Id one = makeFloatConstant(1.0);
 | 
			
		||||
    Id zero = makeFloatConstant(0.0);
 | 
			
		||||
    for (int col = 0; col < 4; ++col)
 | 
			
		||||
    {
 | 
			
		||||
        for (int row = 0; row < 4; ++row)
 | 
			
		||||
        {
 | 
			
		||||
    Id  one = (bitCount == 64 ? makeDoubleConstant(1.0) : makeFloatConstant(1.0));
 | 
			
		||||
    Id zero = (bitCount == 64 ? makeDoubleConstant(0.0) : makeFloatConstant(0.0));
 | 
			
		||||
    for (int col = 0; col < 4; ++col) {
 | 
			
		||||
        for (int row = 0; row < 4; ++row) {
 | 
			
		||||
            if (col == row)
 | 
			
		||||
                ids[col][row] = one;
 | 
			
		||||
            else
 | 
			
		||||
@ -2077,7 +2197,7 @@ void Builder::accessChainStore(Id rvalue)
 | 
			
		||||
    Id base = collapseAccessChain();
 | 
			
		||||
 | 
			
		||||
    if (accessChain.swizzle.size() && accessChain.component != NoResult)
 | 
			
		||||
        MissingFunctionality("simultaneous l-value swizzle and dynamic component selection");
 | 
			
		||||
        logger->missingFunctionality("simultaneous l-value swizzle and dynamic component selection");
 | 
			
		||||
 | 
			
		||||
    // If swizzle still exists, it is out-of-order or not full, we must load the target vector,
 | 
			
		||||
    // extract and insert elements to perform writeMask and/or swizzle.
 | 
			
		||||
@ -2265,7 +2385,7 @@ void Builder::eliminateDeadDecorations()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    decorations.erase(std::remove_if(decorations.begin(), decorations.end(),
 | 
			
		||||
                                     [&unreachable_definitions](std::unique_ptr<Instruction>& I) {
 | 
			
		||||
        [&unreachable_definitions](std::unique_ptr<Instruction>& I) -> bool {
 | 
			
		||||
            Instruction* inst = I.get();
 | 
			
		||||
            Id decoration_id = inst->getIdOperand(0);
 | 
			
		||||
            return unreachable_definitions.count(decoration_id) != 0;
 | 
			
		||||
@ -2383,7 +2503,7 @@ void Builder::simplifyAccessChainSwizzle()
 | 
			
		||||
 | 
			
		||||
// To the extent any swizzling can become part of the chain
 | 
			
		||||
// of accesses instead of a post operation, make it so.
 | 
			
		||||
// If 'dynamic' is true, include transfering a non-static component index,
 | 
			
		||||
// If 'dynamic' is true, include transferring a non-static component index,
 | 
			
		||||
// otherwise, only transfer static indexes.
 | 
			
		||||
//
 | 
			
		||||
// Also, Boolean vectors are likely to be special.  While
 | 
			
		||||
@ -2484,16 +2604,4 @@ void Builder::dumpInstructions(std::vector<unsigned int>& out,
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TbdFunctionality(const char* tbd)
 | 
			
		||||
{
 | 
			
		||||
    static std::unordered_set<const char*> issued;
 | 
			
		||||
 | 
			
		||||
    if (issued.find(tbd) == issued.end())
 | 
			
		||||
    {
 | 
			
		||||
        printf("TBD functionality: %s\n", tbd);
 | 
			
		||||
        issued.insert(tbd);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MissingFunctionality(const char* fun) { printf("Missing functionality: %s\n", fun); }
 | 
			
		||||
}; // end spv namespace
 | 
			
		||||
 | 
			
		||||
@ -33,10 +33,6 @@
 | 
			
		||||
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
			
		||||
//POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Author: John Kessenich, LunarG
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// "Builder" is an interface to fully build SPIR-V IR.   Allocate one of
 | 
			
		||||
// these to build (a thread safe) internal SPIR-V representation (IR),
 | 
			
		||||
@ -49,6 +45,7 @@
 | 
			
		||||
#ifndef SpvBuilder_H
 | 
			
		||||
#define SpvBuilder_H
 | 
			
		||||
 | 
			
		||||
#include "Logger.h"
 | 
			
		||||
#include "spirv.hpp"
 | 
			
		||||
#include "spvIR.h"
 | 
			
		||||
 | 
			
		||||
@ -56,13 +53,14 @@
 | 
			
		||||
#include <map>
 | 
			
		||||
#include <memory>
 | 
			
		||||
#include <set>
 | 
			
		||||
#include <sstream>
 | 
			
		||||
#include <stack>
 | 
			
		||||
 | 
			
		||||
namespace spv {
 | 
			
		||||
 | 
			
		||||
class Builder {
 | 
			
		||||
public:
 | 
			
		||||
    Builder(unsigned int userNumber);
 | 
			
		||||
    Builder(unsigned int userNumber, SpvBuildLogger* logger);
 | 
			
		||||
    virtual ~Builder();
 | 
			
		||||
 | 
			
		||||
    static const int maxMatrixSize = 4;
 | 
			
		||||
@ -155,16 +153,12 @@ public:
 | 
			
		||||
    bool isSamplerType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampler; }
 | 
			
		||||
    bool isSampledImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampledImage; }
 | 
			
		||||
    bool isConstantOpCode(Op opcode) const;
 | 
			
		||||
    bool isSpecConstantOpCode(Op opcode) const;
 | 
			
		||||
    bool isConstant(Id resultId) const { return isConstantOpCode(getOpCode(resultId)); }
 | 
			
		||||
    bool isConstantScalar(Id resultId) const { return getOpCode(resultId) == OpConstant; }
 | 
			
		||||
    unsigned int getConstantScalar(Id resultId) const
 | 
			
		||||
    {
 | 
			
		||||
        return module.getInstruction(resultId)->getImmediateOperand(0);
 | 
			
		||||
    }
 | 
			
		||||
    StorageClass getStorageClass(Id resultId) const
 | 
			
		||||
    {
 | 
			
		||||
        return getTypeStorageClass(getTypeId(resultId));
 | 
			
		||||
    }
 | 
			
		||||
    bool isSpecConstant(Id resultId) const { return isSpecConstantOpCode(getOpCode(resultId)); }
 | 
			
		||||
    unsigned int getConstantScalar(Id resultId) const { return module.getInstruction(resultId)->getImmediateOperand(0); }
 | 
			
		||||
    StorageClass getStorageClass(Id resultId) const { return getTypeStorageClass(getTypeId(resultId)); }
 | 
			
		||||
 | 
			
		||||
    int getTypeNumColumns(Id typeId) const
 | 
			
		||||
    {
 | 
			
		||||
@ -197,14 +191,10 @@ public:
 | 
			
		||||
 | 
			
		||||
    // For making new constants (will return old constant if the requested one was already made).
 | 
			
		||||
    Id makeBoolConstant(bool b, bool specConstant = false);
 | 
			
		||||
    Id makeIntConstant(int i, bool specConstant = false)
 | 
			
		||||
    {
 | 
			
		||||
        return makeIntConstant(makeIntType(32), (unsigned)i, specConstant);
 | 
			
		||||
    }
 | 
			
		||||
    Id makeUintConstant(unsigned u, bool specConstant = false)
 | 
			
		||||
    {
 | 
			
		||||
        return makeIntConstant(makeUintType(32), u, specConstant);
 | 
			
		||||
    }
 | 
			
		||||
    Id makeIntConstant(int i, bool specConstant = false)         { return makeIntConstant(makeIntType(32),  (unsigned)i, specConstant); }
 | 
			
		||||
    Id makeUintConstant(unsigned u, bool specConstant = false)   { return makeIntConstant(makeUintType(32),           u, specConstant); }
 | 
			
		||||
    Id makeInt64Constant(long long i, bool specConstant = false)            { return makeInt64Constant(makeIntType(64),  (unsigned long long)i, specConstant); }
 | 
			
		||||
    Id makeUint64Constant(unsigned long long u, bool specConstant = false)  { return makeInt64Constant(makeUintType(64),                     u, specConstant); }
 | 
			
		||||
    Id makeFloatConstant(float f, bool specConstant = false);
 | 
			
		||||
    Id makeDoubleConstant(double d, bool specConstant = false);
 | 
			
		||||
 | 
			
		||||
@ -224,9 +214,10 @@ public:
 | 
			
		||||
    // At the end of what block do the next create*() instructions go?
 | 
			
		||||
    void setBuildPoint(Block* bp) { buildPoint = bp; }
 | 
			
		||||
    Block* getBuildPoint() const { return buildPoint; }
 | 
			
		||||
    // Make the main function. The returned pointer is only valid
 | 
			
		||||
 | 
			
		||||
    // Make the entry-point function. The returned pointer is only valid
 | 
			
		||||
    // for the lifetime of this builder.
 | 
			
		||||
    Function* makeMain();
 | 
			
		||||
    Function* makeEntrypoint(const char*);
 | 
			
		||||
 | 
			
		||||
    // Make a shader-style function, and create its entry block if entry is non-zero.
 | 
			
		||||
    // Return the function, pass back the entry.
 | 
			
		||||
@ -282,6 +273,7 @@ public:
 | 
			
		||||
    Id createTriOp(Op, Id typeId, Id operand1, Id operand2, Id operand3);
 | 
			
		||||
    Id createOp(Op, Id typeId, const std::vector<Id>& operands);
 | 
			
		||||
    Id createFunctionCall(spv::Function*, std::vector<spv::Id>&);
 | 
			
		||||
    Id createSpecConstantOp(Op, Id typeId, const std::vector<spv::Id>& operands, const std::vector<unsigned>& literals);
 | 
			
		||||
 | 
			
		||||
    // Take an rvalue (source) and a set of channels to extract from it to
 | 
			
		||||
    // make a new rvalue, which is returned.
 | 
			
		||||
@ -544,8 +536,16 @@ public:
 | 
			
		||||
    void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock);
 | 
			
		||||
    void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control);
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    // Sets to generate opcode for specialization constants.
 | 
			
		||||
    void setToSpecConstCodeGenMode() { generatingOpCodeForSpecConst = true; }
 | 
			
		||||
    // Sets to generate opcode for non-specialization constants (normal mode).
 | 
			
		||||
    void setToNormalCodeGenMode() { generatingOpCodeForSpecConst = false; }
 | 
			
		||||
    // Check if the builder is generating code for spec constants.
 | 
			
		||||
    bool isInSpecConstCodeGenMode() { return generatingOpCodeForSpecConst; }
 | 
			
		||||
 | 
			
		||||
 protected:
 | 
			
		||||
    Id makeIntConstant(Id typeId, unsigned value, bool specConstant);
 | 
			
		||||
    Id makeInt64Constant(Id typeId, unsigned long long value, bool specConstant);
 | 
			
		||||
    Id findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned value) const;
 | 
			
		||||
    Id findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned v1, unsigned v2) const;
 | 
			
		||||
    Id findCompositeConstant(Op typeClass, std::vector<Id>& comps) const;
 | 
			
		||||
@ -568,6 +568,7 @@ protected:
 | 
			
		||||
    Block* buildPoint;
 | 
			
		||||
    Id uniqueId;
 | 
			
		||||
    Function* mainFunction;
 | 
			
		||||
    bool generatingOpCodeForSpecConst;
 | 
			
		||||
    AccessChain accessChain;
 | 
			
		||||
 | 
			
		||||
    // special blocks of instructions for output
 | 
			
		||||
@ -590,14 +591,11 @@ protected:
 | 
			
		||||
 | 
			
		||||
    // Our loop stack.
 | 
			
		||||
    std::stack<LoopBlocks> loops;
 | 
			
		||||
 | 
			
		||||
    // The stream for outputing warnings and errors.
 | 
			
		||||
    SpvBuildLogger* logger;
 | 
			
		||||
};  // end Builder class
 | 
			
		||||
 | 
			
		||||
// Use for non-fatal notes about what's not complete
 | 
			
		||||
void TbdFunctionality(const char*);
 | 
			
		||||
 | 
			
		||||
// Use for fatal missing functionality
 | 
			
		||||
void MissingFunctionality(const char*);
 | 
			
		||||
 | 
			
		||||
};  // end spv namespace
 | 
			
		||||
 | 
			
		||||
#endif  // SpvBuilder_H
 | 
			
		||||
 | 
			
		||||
@ -32,10 +32,6 @@
 | 
			
		||||
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
			
		||||
//POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Author: John Kessenich, LunarG
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Disassembler for SPIR-V.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
@ -32,10 +32,6 @@
 | 
			
		||||
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
			
		||||
//POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Author: John Kessenich, LunarG
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Disassembler for SPIR-V.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
@ -32,10 +32,6 @@
 | 
			
		||||
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
			
		||||
//POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Author: John Kessenich, LunarG
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// 1) Programatically fill in instruction/operand information.
 | 
			
		||||
//    This can be used for disassembly, printing documentation, etc.
 | 
			
		||||
@ -64,7 +60,7 @@ namespace spv {
 | 
			
		||||
//    (for non-sparse mask enums, this is the number of enumurants)
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
const int SourceLanguageCeiling = 5;
 | 
			
		||||
const int SourceLanguageCeiling = 6; // HLSL todo: need official enumerant
 | 
			
		||||
 | 
			
		||||
const char* SourceString(int source)
 | 
			
		||||
{
 | 
			
		||||
@ -74,6 +70,7 @@ const char* SourceString(int source)
 | 
			
		||||
    case 2:  return "GLSL";
 | 
			
		||||
    case 3:  return "OpenCL_C";
 | 
			
		||||
    case 4:  return "OpenCL_CPP";
 | 
			
		||||
    case 5:  return "HLSL";
 | 
			
		||||
 | 
			
		||||
    case SourceLanguageCeiling:
 | 
			
		||||
    default: return "Bad";
 | 
			
		||||
 | 
			
		||||
@ -32,10 +32,6 @@
 | 
			
		||||
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
			
		||||
//POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Author: John Kessenich, LunarG
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Parameterize the SPIR-V enumerants.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
@ -61,6 +61,7 @@ enum SourceLanguage {
 | 
			
		||||
    SourceLanguageGLSL = 2,
 | 
			
		||||
    SourceLanguageOpenCL_C = 3,
 | 
			
		||||
    SourceLanguageOpenCL_CPP = 4,
 | 
			
		||||
    SourceLanguageHLSL = 5,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum ExecutionModel {
 | 
			
		||||
 | 
			
		||||
@ -32,10 +32,6 @@
 | 
			
		||||
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
			
		||||
//POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Author: John Kessenich, LunarG
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
// SPIRV-IR
 | 
			
		||||
//
 | 
			
		||||
// Simple in-memory representation (IR) of SPIRV.  Just for holding
 | 
			
		||||
 | 
			
		||||
@ -1,10 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
rm -rf build
 | 
			
		||||
mkdir build
 | 
			
		||||
pushd build
 | 
			
		||||
cmake ..
 | 
			
		||||
cmake ..
 | 
			
		||||
make -j 2
 | 
			
		||||
make install
 | 
			
		||||
install/bin/glslangValidator -i ../Test/sample.vert ../Test/sample.frag
 | 
			
		||||
popd
 | 
			
		||||
@ -1,16 +1,30 @@
 | 
			
		||||
cmake_minimum_required(VERSION 2.8)
 | 
			
		||||
add_library(glslang-default-resource-limits
 | 
			
		||||
    ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp
 | 
			
		||||
)
 | 
			
		||||
set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang)
 | 
			
		||||
 | 
			
		||||
target_include_directories(glslang-default-resource-limits
 | 
			
		||||
    PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
 | 
			
		||||
    PUBLIC ${PROJECT_SOURCE_DIR}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set(SOURCES StandAlone.cpp)
 | 
			
		||||
set(REMAPPER_SOURCES spirv-remap.cpp)
 | 
			
		||||
 | 
			
		||||
add_executable(glslangValidator ${SOURCES})
 | 
			
		||||
add_executable(spirv-remap ${REMAPPER_SOURCES})
 | 
			
		||||
set_property(TARGET glslangValidator PROPERTY FOLDER tools)
 | 
			
		||||
set_property(TARGET spirv-remap PROPERTY FOLDER tools)
 | 
			
		||||
glslang_set_link_args(glslangValidator)
 | 
			
		||||
glslang_set_link_args(spirv-remap)
 | 
			
		||||
 | 
			
		||||
set(LIBRARIES
 | 
			
		||||
    glslang
 | 
			
		||||
    OGLCompiler
 | 
			
		||||
    OSDependent
 | 
			
		||||
    SPIRV)
 | 
			
		||||
    HLSL
 | 
			
		||||
    SPIRV
 | 
			
		||||
    glslang-default-resource-limits)
 | 
			
		||||
 | 
			
		||||
if(WIN32)
 | 
			
		||||
    set(LIBRARIES ${LIBRARIES} psapi)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										444
									
								
								StandAlone/ResourceLimits.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										444
									
								
								StandAlone/ResourceLimits.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,444 @@
 | 
			
		||||
//
 | 
			
		||||
// Copyright (C) 2016 Google, 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 Google 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.
 | 
			
		||||
 | 
			
		||||
#include <cstdlib>
 | 
			
		||||
#include <cstring>
 | 
			
		||||
#include <sstream>
 | 
			
		||||
 | 
			
		||||
#include "ResourceLimits.h"
 | 
			
		||||
 | 
			
		||||
namespace glslang {
 | 
			
		||||
 | 
			
		||||
const TBuiltInResource DefaultTBuiltInResource = {
 | 
			
		||||
    /* .MaxLights = */ 32,
 | 
			
		||||
    /* .MaxClipPlanes = */ 6,
 | 
			
		||||
    /* .MaxTextureUnits = */ 32,
 | 
			
		||||
    /* .MaxTextureCoords = */ 32,
 | 
			
		||||
    /* .MaxVertexAttribs = */ 64,
 | 
			
		||||
    /* .MaxVertexUniformComponents = */ 4096,
 | 
			
		||||
    /* .MaxVaryingFloats = */ 64,
 | 
			
		||||
    /* .MaxVertexTextureImageUnits = */ 32,
 | 
			
		||||
    /* .MaxCombinedTextureImageUnits = */ 80,
 | 
			
		||||
    /* .MaxTextureImageUnits = */ 32,
 | 
			
		||||
    /* .MaxFragmentUniformComponents = */ 4096,
 | 
			
		||||
    /* .MaxDrawBuffers = */ 32,
 | 
			
		||||
    /* .MaxVertexUniformVectors = */ 128,
 | 
			
		||||
    /* .MaxVaryingVectors = */ 8,
 | 
			
		||||
    /* .MaxFragmentUniformVectors = */ 16,
 | 
			
		||||
    /* .MaxVertexOutputVectors = */ 16,
 | 
			
		||||
    /* .MaxFragmentInputVectors = */ 15,
 | 
			
		||||
    /* .MinProgramTexelOffset = */ -8,
 | 
			
		||||
    /* .MaxProgramTexelOffset = */ 7,
 | 
			
		||||
    /* .MaxClipDistances = */ 8,
 | 
			
		||||
    /* .MaxComputeWorkGroupCountX = */ 65535,
 | 
			
		||||
    /* .MaxComputeWorkGroupCountY = */ 65535,
 | 
			
		||||
    /* .MaxComputeWorkGroupCountZ = */ 65535,
 | 
			
		||||
    /* .MaxComputeWorkGroupSizeX = */ 1024,
 | 
			
		||||
    /* .MaxComputeWorkGroupSizeY = */ 1024,
 | 
			
		||||
    /* .MaxComputeWorkGroupSizeZ = */ 64,
 | 
			
		||||
    /* .MaxComputeUniformComponents = */ 1024,
 | 
			
		||||
    /* .MaxComputeTextureImageUnits = */ 16,
 | 
			
		||||
    /* .MaxComputeImageUniforms = */ 8,
 | 
			
		||||
    /* .MaxComputeAtomicCounters = */ 8,
 | 
			
		||||
    /* .MaxComputeAtomicCounterBuffers = */ 1,
 | 
			
		||||
    /* .MaxVaryingComponents = */ 60,
 | 
			
		||||
    /* .MaxVertexOutputComponents = */ 64,
 | 
			
		||||
    /* .MaxGeometryInputComponents = */ 64,
 | 
			
		||||
    /* .MaxGeometryOutputComponents = */ 128,
 | 
			
		||||
    /* .MaxFragmentInputComponents = */ 128,
 | 
			
		||||
    /* .MaxImageUnits = */ 8,
 | 
			
		||||
    /* .MaxCombinedImageUnitsAndFragmentOutputs = */ 8,
 | 
			
		||||
    /* .MaxCombinedShaderOutputResources = */ 8,
 | 
			
		||||
    /* .MaxImageSamples = */ 0,
 | 
			
		||||
    /* .MaxVertexImageUniforms = */ 0,
 | 
			
		||||
    /* .MaxTessControlImageUniforms = */ 0,
 | 
			
		||||
    /* .MaxTessEvaluationImageUniforms = */ 0,
 | 
			
		||||
    /* .MaxGeometryImageUniforms = */ 0,
 | 
			
		||||
    /* .MaxFragmentImageUniforms = */ 8,
 | 
			
		||||
    /* .MaxCombinedImageUniforms = */ 8,
 | 
			
		||||
    /* .MaxGeometryTextureImageUnits = */ 16,
 | 
			
		||||
    /* .MaxGeometryOutputVertices = */ 256,
 | 
			
		||||
    /* .MaxGeometryTotalOutputComponents = */ 1024,
 | 
			
		||||
    /* .MaxGeometryUniformComponents = */ 1024,
 | 
			
		||||
    /* .MaxGeometryVaryingComponents = */ 64,
 | 
			
		||||
    /* .MaxTessControlInputComponents = */ 128,
 | 
			
		||||
    /* .MaxTessControlOutputComponents = */ 128,
 | 
			
		||||
    /* .MaxTessControlTextureImageUnits = */ 16,
 | 
			
		||||
    /* .MaxTessControlUniformComponents = */ 1024,
 | 
			
		||||
    /* .MaxTessControlTotalOutputComponents = */ 4096,
 | 
			
		||||
    /* .MaxTessEvaluationInputComponents = */ 128,
 | 
			
		||||
    /* .MaxTessEvaluationOutputComponents = */ 128,
 | 
			
		||||
    /* .MaxTessEvaluationTextureImageUnits = */ 16,
 | 
			
		||||
    /* .MaxTessEvaluationUniformComponents = */ 1024,
 | 
			
		||||
    /* .MaxTessPatchComponents = */ 120,
 | 
			
		||||
    /* .MaxPatchVertices = */ 32,
 | 
			
		||||
    /* .MaxTessGenLevel = */ 64,
 | 
			
		||||
    /* .MaxViewports = */ 16,
 | 
			
		||||
    /* .MaxVertexAtomicCounters = */ 0,
 | 
			
		||||
    /* .MaxTessControlAtomicCounters = */ 0,
 | 
			
		||||
    /* .MaxTessEvaluationAtomicCounters = */ 0,
 | 
			
		||||
    /* .MaxGeometryAtomicCounters = */ 0,
 | 
			
		||||
    /* .MaxFragmentAtomicCounters = */ 8,
 | 
			
		||||
    /* .MaxCombinedAtomicCounters = */ 8,
 | 
			
		||||
    /* .MaxAtomicCounterBindings = */ 1,
 | 
			
		||||
    /* .MaxVertexAtomicCounterBuffers = */ 0,
 | 
			
		||||
    /* .MaxTessControlAtomicCounterBuffers = */ 0,
 | 
			
		||||
    /* .MaxTessEvaluationAtomicCounterBuffers = */ 0,
 | 
			
		||||
    /* .MaxGeometryAtomicCounterBuffers = */ 0,
 | 
			
		||||
    /* .MaxFragmentAtomicCounterBuffers = */ 1,
 | 
			
		||||
    /* .MaxCombinedAtomicCounterBuffers = */ 1,
 | 
			
		||||
    /* .MaxAtomicCounterBufferSize = */ 16384,
 | 
			
		||||
    /* .MaxTransformFeedbackBuffers = */ 4,
 | 
			
		||||
    /* .MaxTransformFeedbackInterleavedComponents = */ 64,
 | 
			
		||||
    /* .MaxCullDistances = */ 8,
 | 
			
		||||
    /* .MaxCombinedClipAndCullDistances = */ 8,
 | 
			
		||||
    /* .MaxSamples = */ 4,
 | 
			
		||||
    /* .limits = */ {
 | 
			
		||||
        /* .nonInductiveForLoops = */ 1,
 | 
			
		||||
        /* .whileLoops = */ 1,
 | 
			
		||||
        /* .doWhileLoops = */ 1,
 | 
			
		||||
        /* .generalUniformIndexing = */ 1,
 | 
			
		||||
        /* .generalAttributeMatrixVectorIndexing = */ 1,
 | 
			
		||||
        /* .generalVaryingIndexing = */ 1,
 | 
			
		||||
        /* .generalSamplerIndexing = */ 1,
 | 
			
		||||
        /* .generalVariableIndexing = */ 1,
 | 
			
		||||
        /* .generalConstantMatrixVectorIndexing = */ 1,
 | 
			
		||||
    }};
 | 
			
		||||
 | 
			
		||||
std::string GetDefaultTBuiltInResourceString()
 | 
			
		||||
{
 | 
			
		||||
    std::ostringstream ostream;
 | 
			
		||||
 | 
			
		||||
    ostream << "MaxLights "                                 << DefaultTBuiltInResource.maxLights << "\n"
 | 
			
		||||
            << "MaxClipPlanes "                             << DefaultTBuiltInResource.maxClipPlanes << "\n"
 | 
			
		||||
            << "MaxTextureUnits "                           << DefaultTBuiltInResource.maxTextureUnits << "\n"
 | 
			
		||||
            << "MaxTextureCoords "                          << DefaultTBuiltInResource.maxTextureCoords << "\n"
 | 
			
		||||
            << "MaxVertexAttribs "                          << DefaultTBuiltInResource.maxVertexAttribs << "\n"
 | 
			
		||||
            << "MaxVertexUniformComponents "                << DefaultTBuiltInResource.maxVertexUniformComponents << "\n"
 | 
			
		||||
            << "MaxVaryingFloats "                          << DefaultTBuiltInResource.maxVaryingFloats << "\n"
 | 
			
		||||
            << "MaxVertexTextureImageUnits "                << DefaultTBuiltInResource.maxVertexTextureImageUnits << "\n"
 | 
			
		||||
            << "MaxCombinedTextureImageUnits "              << DefaultTBuiltInResource.maxCombinedTextureImageUnits << "\n"
 | 
			
		||||
            << "MaxTextureImageUnits "                      << DefaultTBuiltInResource.maxTextureImageUnits << "\n"
 | 
			
		||||
            << "MaxFragmentUniformComponents "              << DefaultTBuiltInResource.maxFragmentUniformComponents << "\n"
 | 
			
		||||
            << "MaxDrawBuffers "                            << DefaultTBuiltInResource.maxDrawBuffers << "\n"
 | 
			
		||||
            << "MaxVertexUniformVectors "                   << DefaultTBuiltInResource.maxVertexUniformVectors << "\n"
 | 
			
		||||
            << "MaxVaryingVectors "                         << DefaultTBuiltInResource.maxVaryingVectors << "\n"
 | 
			
		||||
            << "MaxFragmentUniformVectors "                 << DefaultTBuiltInResource.maxFragmentUniformVectors << "\n"
 | 
			
		||||
            << "MaxVertexOutputVectors "                    << DefaultTBuiltInResource.maxVertexOutputVectors << "\n"
 | 
			
		||||
            << "MaxFragmentInputVectors "                   << DefaultTBuiltInResource.maxFragmentInputVectors << "\n"
 | 
			
		||||
            << "MinProgramTexelOffset "                     << DefaultTBuiltInResource.minProgramTexelOffset << "\n"
 | 
			
		||||
            << "MaxProgramTexelOffset "                     << DefaultTBuiltInResource.maxProgramTexelOffset << "\n"
 | 
			
		||||
            << "MaxClipDistances "                          << DefaultTBuiltInResource.maxClipDistances << "\n"
 | 
			
		||||
            << "MaxComputeWorkGroupCountX "                 << DefaultTBuiltInResource.maxComputeWorkGroupCountX << "\n"
 | 
			
		||||
            << "MaxComputeWorkGroupCountY "                 << DefaultTBuiltInResource.maxComputeWorkGroupCountY << "\n"
 | 
			
		||||
            << "MaxComputeWorkGroupCountZ "                 << DefaultTBuiltInResource.maxComputeWorkGroupCountZ << "\n"
 | 
			
		||||
            << "MaxComputeWorkGroupSizeX "                  << DefaultTBuiltInResource.maxComputeWorkGroupSizeX << "\n"
 | 
			
		||||
            << "MaxComputeWorkGroupSizeY "                  << DefaultTBuiltInResource.maxComputeWorkGroupSizeY << "\n"
 | 
			
		||||
            << "MaxComputeWorkGroupSizeZ "                  << DefaultTBuiltInResource.maxComputeWorkGroupSizeZ << "\n"
 | 
			
		||||
            << "MaxComputeUniformComponents "               << DefaultTBuiltInResource.maxComputeUniformComponents << "\n"
 | 
			
		||||
            << "MaxComputeTextureImageUnits "               << DefaultTBuiltInResource.maxComputeTextureImageUnits << "\n"
 | 
			
		||||
            << "MaxComputeImageUniforms "                   << DefaultTBuiltInResource.maxComputeImageUniforms << "\n"
 | 
			
		||||
            << "MaxComputeAtomicCounters "                  << DefaultTBuiltInResource.maxComputeAtomicCounters << "\n"
 | 
			
		||||
            << "MaxComputeAtomicCounterBuffers "            << DefaultTBuiltInResource.maxComputeAtomicCounterBuffers << "\n"
 | 
			
		||||
            << "MaxVaryingComponents "                      << DefaultTBuiltInResource.maxVaryingComponents << "\n"
 | 
			
		||||
            << "MaxVertexOutputComponents "                 << DefaultTBuiltInResource.maxVertexOutputComponents << "\n"
 | 
			
		||||
            << "MaxGeometryInputComponents "                << DefaultTBuiltInResource.maxGeometryInputComponents << "\n"
 | 
			
		||||
            << "MaxGeometryOutputComponents "               << DefaultTBuiltInResource.maxGeometryOutputComponents << "\n"
 | 
			
		||||
            << "MaxFragmentInputComponents "                << DefaultTBuiltInResource.maxFragmentInputComponents << "\n"
 | 
			
		||||
            << "MaxImageUnits "                             << DefaultTBuiltInResource.maxImageUnits << "\n"
 | 
			
		||||
            << "MaxCombinedImageUnitsAndFragmentOutputs "   << DefaultTBuiltInResource.maxCombinedImageUnitsAndFragmentOutputs << "\n"
 | 
			
		||||
            << "MaxCombinedShaderOutputResources "          << DefaultTBuiltInResource.maxCombinedShaderOutputResources << "\n"
 | 
			
		||||
            << "MaxImageSamples "                           << DefaultTBuiltInResource.maxImageSamples << "\n"
 | 
			
		||||
            << "MaxVertexImageUniforms "                    << DefaultTBuiltInResource.maxVertexImageUniforms << "\n"
 | 
			
		||||
            << "MaxTessControlImageUniforms "               << DefaultTBuiltInResource.maxTessControlImageUniforms << "\n"
 | 
			
		||||
            << "MaxTessEvaluationImageUniforms "            << DefaultTBuiltInResource.maxTessEvaluationImageUniforms << "\n"
 | 
			
		||||
            << "MaxGeometryImageUniforms "                  << DefaultTBuiltInResource.maxGeometryImageUniforms << "\n"
 | 
			
		||||
            << "MaxFragmentImageUniforms "                  << DefaultTBuiltInResource.maxFragmentImageUniforms << "\n"
 | 
			
		||||
            << "MaxCombinedImageUniforms "                  << DefaultTBuiltInResource.maxCombinedImageUniforms << "\n"
 | 
			
		||||
            << "MaxGeometryTextureImageUnits "              << DefaultTBuiltInResource.maxGeometryTextureImageUnits << "\n"
 | 
			
		||||
            << "MaxGeometryOutputVertices "                 << DefaultTBuiltInResource.maxGeometryOutputVertices << "\n"
 | 
			
		||||
            << "MaxGeometryTotalOutputComponents "          << DefaultTBuiltInResource.maxGeometryTotalOutputComponents << "\n"
 | 
			
		||||
            << "MaxGeometryUniformComponents "              << DefaultTBuiltInResource.maxGeometryUniformComponents << "\n"
 | 
			
		||||
            << "MaxGeometryVaryingComponents "              << DefaultTBuiltInResource.maxGeometryVaryingComponents << "\n"
 | 
			
		||||
            << "MaxTessControlInputComponents "             << DefaultTBuiltInResource.maxTessControlInputComponents << "\n"
 | 
			
		||||
            << "MaxTessControlOutputComponents "            << DefaultTBuiltInResource.maxTessControlOutputComponents << "\n"
 | 
			
		||||
            << "MaxTessControlTextureImageUnits "           << DefaultTBuiltInResource.maxTessControlTextureImageUnits << "\n"
 | 
			
		||||
            << "MaxTessControlUniformComponents "           << DefaultTBuiltInResource.maxTessControlUniformComponents << "\n"
 | 
			
		||||
            << "MaxTessControlTotalOutputComponents "       << DefaultTBuiltInResource.maxTessControlTotalOutputComponents << "\n"
 | 
			
		||||
            << "MaxTessEvaluationInputComponents "          << DefaultTBuiltInResource.maxTessEvaluationInputComponents << "\n"
 | 
			
		||||
            << "MaxTessEvaluationOutputComponents "         << DefaultTBuiltInResource.maxTessEvaluationOutputComponents << "\n"
 | 
			
		||||
            << "MaxTessEvaluationTextureImageUnits "        << DefaultTBuiltInResource.maxTessEvaluationTextureImageUnits << "\n"
 | 
			
		||||
            << "MaxTessEvaluationUniformComponents "        << DefaultTBuiltInResource.maxTessEvaluationUniformComponents << "\n"
 | 
			
		||||
            << "MaxTessPatchComponents "                    << DefaultTBuiltInResource.maxTessPatchComponents << "\n"
 | 
			
		||||
            << "MaxPatchVertices "                          << DefaultTBuiltInResource.maxPatchVertices << "\n"
 | 
			
		||||
            << "MaxTessGenLevel "                           << DefaultTBuiltInResource.maxTessGenLevel << "\n"
 | 
			
		||||
            << "MaxViewports "                              << DefaultTBuiltInResource.maxViewports << "\n"
 | 
			
		||||
            << "MaxVertexAtomicCounters "                   << DefaultTBuiltInResource.maxVertexAtomicCounters << "\n"
 | 
			
		||||
            << "MaxTessControlAtomicCounters "              << DefaultTBuiltInResource.maxTessControlAtomicCounters << "\n"
 | 
			
		||||
            << "MaxTessEvaluationAtomicCounters "           << DefaultTBuiltInResource.maxTessEvaluationAtomicCounters << "\n"
 | 
			
		||||
            << "MaxGeometryAtomicCounters "                 << DefaultTBuiltInResource.maxGeometryAtomicCounters << "\n"
 | 
			
		||||
            << "MaxFragmentAtomicCounters "                 << DefaultTBuiltInResource.maxFragmentAtomicCounters << "\n"
 | 
			
		||||
            << "MaxCombinedAtomicCounters "                 << DefaultTBuiltInResource.maxCombinedAtomicCounters << "\n"
 | 
			
		||||
            << "MaxAtomicCounterBindings "                  << DefaultTBuiltInResource.maxAtomicCounterBindings << "\n"
 | 
			
		||||
            << "MaxVertexAtomicCounterBuffers "             << DefaultTBuiltInResource.maxVertexAtomicCounterBuffers << "\n"
 | 
			
		||||
            << "MaxTessControlAtomicCounterBuffers "        << DefaultTBuiltInResource.maxTessControlAtomicCounterBuffers << "\n"
 | 
			
		||||
            << "MaxTessEvaluationAtomicCounterBuffers "     << DefaultTBuiltInResource.maxTessEvaluationAtomicCounterBuffers << "\n"
 | 
			
		||||
            << "MaxGeometryAtomicCounterBuffers "           << DefaultTBuiltInResource.maxGeometryAtomicCounterBuffers << "\n"
 | 
			
		||||
            << "MaxFragmentAtomicCounterBuffers "           << DefaultTBuiltInResource.maxFragmentAtomicCounterBuffers << "\n"
 | 
			
		||||
            << "MaxCombinedAtomicCounterBuffers "           << DefaultTBuiltInResource.maxCombinedAtomicCounterBuffers << "\n"
 | 
			
		||||
            << "MaxAtomicCounterBufferSize "                << DefaultTBuiltInResource.maxAtomicCounterBufferSize << "\n"
 | 
			
		||||
            << "MaxTransformFeedbackBuffers "               << DefaultTBuiltInResource.maxTransformFeedbackBuffers << "\n"
 | 
			
		||||
            << "MaxTransformFeedbackInterleavedComponents " << DefaultTBuiltInResource.maxTransformFeedbackInterleavedComponents << "\n"
 | 
			
		||||
            << "MaxCullDistances "                          << DefaultTBuiltInResource.maxCullDistances << "\n"
 | 
			
		||||
            << "MaxCombinedClipAndCullDistances "           << DefaultTBuiltInResource.maxCombinedClipAndCullDistances << "\n"
 | 
			
		||||
            << "MaxSamples "                                << DefaultTBuiltInResource.maxSamples << "\n"
 | 
			
		||||
 | 
			
		||||
            << "nonInductiveForLoops "                      << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n"
 | 
			
		||||
            << "whileLoops "                                << DefaultTBuiltInResource.limits.whileLoops << "\n"
 | 
			
		||||
            << "doWhileLoops "                              << DefaultTBuiltInResource.limits.doWhileLoops << "\n"
 | 
			
		||||
            << "generalUniformIndexing "                    << DefaultTBuiltInResource.limits.generalUniformIndexing << "\n"
 | 
			
		||||
            << "generalAttributeMatrixVectorIndexing "      << DefaultTBuiltInResource.limits.generalAttributeMatrixVectorIndexing << "\n"
 | 
			
		||||
            << "generalVaryingIndexing "                    << DefaultTBuiltInResource.limits.generalVaryingIndexing << "\n"
 | 
			
		||||
            << "generalSamplerIndexing "                    << DefaultTBuiltInResource.limits.generalSamplerIndexing << "\n"
 | 
			
		||||
            << "generalVariableIndexing "                   << DefaultTBuiltInResource.limits.generalVariableIndexing << "\n"
 | 
			
		||||
            << "generalConstantMatrixVectorIndexing "       << DefaultTBuiltInResource.limits.generalConstantMatrixVectorIndexing << "\n"
 | 
			
		||||
      ;
 | 
			
		||||
 | 
			
		||||
    return ostream.str();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void DecodeResourceLimits(TBuiltInResource* resources, char* config) {
 | 
			
		||||
    const char* delims = " \t\n\r";
 | 
			
		||||
    const char* token = strtok(config, delims);
 | 
			
		||||
    while (token) {
 | 
			
		||||
        const char* valueStr = strtok(0, delims);
 | 
			
		||||
        if (valueStr == 0 || ! (valueStr[0] == '-' || (valueStr[0] >= '0' && valueStr[0] <= '9'))) {
 | 
			
		||||
            printf("Error: '%s' bad .conf file.  Each name must be followed by one number.\n", valueStr ? valueStr : "");
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        int value = atoi(valueStr);
 | 
			
		||||
 | 
			
		||||
        if (strcmp(token, "MaxLights") == 0)
 | 
			
		||||
            resources->maxLights = value;
 | 
			
		||||
        else if (strcmp(token, "MaxClipPlanes") == 0)
 | 
			
		||||
            resources->maxClipPlanes = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTextureUnits") == 0)
 | 
			
		||||
            resources->maxTextureUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTextureCoords") == 0)
 | 
			
		||||
            resources->maxTextureCoords = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexAttribs") == 0)
 | 
			
		||||
            resources->maxVertexAttribs = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexUniformComponents") == 0)
 | 
			
		||||
            resources->maxVertexUniformComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVaryingFloats") == 0)
 | 
			
		||||
            resources->maxVaryingFloats = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexTextureImageUnits") == 0)
 | 
			
		||||
            resources->maxVertexTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedTextureImageUnits") == 0)
 | 
			
		||||
            resources->maxCombinedTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTextureImageUnits") == 0)
 | 
			
		||||
            resources->maxTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentUniformComponents") == 0)
 | 
			
		||||
            resources->maxFragmentUniformComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxDrawBuffers") == 0)
 | 
			
		||||
            resources->maxDrawBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexUniformVectors") == 0)
 | 
			
		||||
            resources->maxVertexUniformVectors = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVaryingVectors") == 0)
 | 
			
		||||
            resources->maxVaryingVectors = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentUniformVectors") == 0)
 | 
			
		||||
            resources->maxFragmentUniformVectors = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexOutputVectors") == 0)
 | 
			
		||||
            resources->maxVertexOutputVectors = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentInputVectors") == 0)
 | 
			
		||||
            resources->maxFragmentInputVectors = value;
 | 
			
		||||
        else if (strcmp(token, "MinProgramTexelOffset") == 0)
 | 
			
		||||
            resources->minProgramTexelOffset = value;
 | 
			
		||||
        else if (strcmp(token, "MaxProgramTexelOffset") == 0)
 | 
			
		||||
            resources->maxProgramTexelOffset = value;
 | 
			
		||||
        else if (strcmp(token, "MaxClipDistances") == 0)
 | 
			
		||||
            resources->maxClipDistances = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeWorkGroupCountX") == 0)
 | 
			
		||||
            resources->maxComputeWorkGroupCountX = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeWorkGroupCountY") == 0)
 | 
			
		||||
            resources->maxComputeWorkGroupCountY = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeWorkGroupCountZ") == 0)
 | 
			
		||||
            resources->maxComputeWorkGroupCountZ = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeWorkGroupSizeX") == 0)
 | 
			
		||||
            resources->maxComputeWorkGroupSizeX = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeWorkGroupSizeY") == 0)
 | 
			
		||||
            resources->maxComputeWorkGroupSizeY = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeWorkGroupSizeZ") == 0)
 | 
			
		||||
            resources->maxComputeWorkGroupSizeZ = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeUniformComponents") == 0)
 | 
			
		||||
            resources->maxComputeUniformComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeTextureImageUnits") == 0)
 | 
			
		||||
            resources->maxComputeTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeImageUniforms") == 0)
 | 
			
		||||
            resources->maxComputeImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeAtomicCounters") == 0)
 | 
			
		||||
            resources->maxComputeAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeAtomicCounterBuffers") == 0)
 | 
			
		||||
            resources->maxComputeAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVaryingComponents") == 0)
 | 
			
		||||
            resources->maxVaryingComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexOutputComponents") == 0)
 | 
			
		||||
            resources->maxVertexOutputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryInputComponents") == 0)
 | 
			
		||||
            resources->maxGeometryInputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryOutputComponents") == 0)
 | 
			
		||||
            resources->maxGeometryOutputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentInputComponents") == 0)
 | 
			
		||||
            resources->maxFragmentInputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxImageUnits") == 0)
 | 
			
		||||
            resources->maxImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedImageUnitsAndFragmentOutputs") == 0)
 | 
			
		||||
            resources->maxCombinedImageUnitsAndFragmentOutputs = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedShaderOutputResources") == 0)
 | 
			
		||||
            resources->maxCombinedShaderOutputResources = value;
 | 
			
		||||
        else if (strcmp(token, "MaxImageSamples") == 0)
 | 
			
		||||
            resources->maxImageSamples = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexImageUniforms") == 0)
 | 
			
		||||
            resources->maxVertexImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlImageUniforms") == 0)
 | 
			
		||||
            resources->maxTessControlImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationImageUniforms") == 0)
 | 
			
		||||
            resources->maxTessEvaluationImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryImageUniforms") == 0)
 | 
			
		||||
            resources->maxGeometryImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentImageUniforms") == 0)
 | 
			
		||||
            resources->maxFragmentImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedImageUniforms") == 0)
 | 
			
		||||
            resources->maxCombinedImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryTextureImageUnits") == 0)
 | 
			
		||||
            resources->maxGeometryTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryOutputVertices") == 0)
 | 
			
		||||
            resources->maxGeometryOutputVertices = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryTotalOutputComponents") == 0)
 | 
			
		||||
            resources->maxGeometryTotalOutputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryUniformComponents") == 0)
 | 
			
		||||
            resources->maxGeometryUniformComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryVaryingComponents") == 0)
 | 
			
		||||
            resources->maxGeometryVaryingComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlInputComponents") == 0)
 | 
			
		||||
            resources->maxTessControlInputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlOutputComponents") == 0)
 | 
			
		||||
            resources->maxTessControlOutputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlTextureImageUnits") == 0)
 | 
			
		||||
            resources->maxTessControlTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlUniformComponents") == 0)
 | 
			
		||||
            resources->maxTessControlUniformComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlTotalOutputComponents") == 0)
 | 
			
		||||
            resources->maxTessControlTotalOutputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationInputComponents") == 0)
 | 
			
		||||
            resources->maxTessEvaluationInputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationOutputComponents") == 0)
 | 
			
		||||
            resources->maxTessEvaluationOutputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationTextureImageUnits") == 0)
 | 
			
		||||
            resources->maxTessEvaluationTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationUniformComponents") == 0)
 | 
			
		||||
            resources->maxTessEvaluationUniformComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessPatchComponents") == 0)
 | 
			
		||||
            resources->maxTessPatchComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxPatchVertices") == 0)
 | 
			
		||||
            resources->maxPatchVertices = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessGenLevel") == 0)
 | 
			
		||||
            resources->maxTessGenLevel = value;
 | 
			
		||||
        else if (strcmp(token, "MaxViewports") == 0)
 | 
			
		||||
            resources->maxViewports = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexAtomicCounters") == 0)
 | 
			
		||||
            resources->maxVertexAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlAtomicCounters") == 0)
 | 
			
		||||
            resources->maxTessControlAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationAtomicCounters") == 0)
 | 
			
		||||
            resources->maxTessEvaluationAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryAtomicCounters") == 0)
 | 
			
		||||
            resources->maxGeometryAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentAtomicCounters") == 0)
 | 
			
		||||
            resources->maxFragmentAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedAtomicCounters") == 0)
 | 
			
		||||
            resources->maxCombinedAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxAtomicCounterBindings") == 0)
 | 
			
		||||
            resources->maxAtomicCounterBindings = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexAtomicCounterBuffers") == 0)
 | 
			
		||||
            resources->maxVertexAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlAtomicCounterBuffers") == 0)
 | 
			
		||||
            resources->maxTessControlAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationAtomicCounterBuffers") == 0)
 | 
			
		||||
            resources->maxTessEvaluationAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryAtomicCounterBuffers") == 0)
 | 
			
		||||
            resources->maxGeometryAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentAtomicCounterBuffers") == 0)
 | 
			
		||||
            resources->maxFragmentAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedAtomicCounterBuffers") == 0)
 | 
			
		||||
            resources->maxCombinedAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxAtomicCounterBufferSize") == 0)
 | 
			
		||||
            resources->maxAtomicCounterBufferSize = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTransformFeedbackBuffers") == 0)
 | 
			
		||||
            resources->maxTransformFeedbackBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTransformFeedbackInterleavedComponents") == 0)
 | 
			
		||||
            resources->maxTransformFeedbackInterleavedComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCullDistances") == 0)
 | 
			
		||||
            resources->maxCullDistances = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedClipAndCullDistances") == 0)
 | 
			
		||||
            resources->maxCombinedClipAndCullDistances = value;
 | 
			
		||||
        else if (strcmp(token, "MaxSamples") == 0)
 | 
			
		||||
            resources->maxSamples = value;
 | 
			
		||||
 | 
			
		||||
        else if (strcmp(token, "nonInductiveForLoops") == 0)
 | 
			
		||||
            resources->limits.nonInductiveForLoops = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "whileLoops") == 0)
 | 
			
		||||
            resources->limits.whileLoops = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "doWhileLoops") == 0)
 | 
			
		||||
            resources->limits.doWhileLoops = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "generalUniformIndexing") == 0)
 | 
			
		||||
            resources->limits.generalUniformIndexing = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "generalAttributeMatrixVectorIndexing") == 0)
 | 
			
		||||
            resources->limits.generalAttributeMatrixVectorIndexing = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "generalVaryingIndexing") == 0)
 | 
			
		||||
            resources->limits.generalVaryingIndexing = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "generalSamplerIndexing") == 0)
 | 
			
		||||
            resources->limits.generalSamplerIndexing = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "generalVariableIndexing") == 0)
 | 
			
		||||
            resources->limits.generalVariableIndexing = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "generalConstantMatrixVectorIndexing") == 0)
 | 
			
		||||
            resources->limits.generalConstantMatrixVectorIndexing = (value != 0);
 | 
			
		||||
        else
 | 
			
		||||
            printf("Warning: unrecognized limit (%s) in configuration file.\n", token);
 | 
			
		||||
 | 
			
		||||
        token = strtok(0, delims);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}  // end namespace glslang
 | 
			
		||||
							
								
								
									
										57
									
								
								StandAlone/ResourceLimits.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								StandAlone/ResourceLimits.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,57 @@
 | 
			
		||||
//
 | 
			
		||||
// Copyright (C) 2016 Google, 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 Google 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.
 | 
			
		||||
 | 
			
		||||
#ifndef _STAND_ALONE_RESOURCE_LIMITS_INCLUDED_
 | 
			
		||||
#define _STAND_ALONE_RESOURCE_LIMITS_INCLUDED_
 | 
			
		||||
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
#include "glslang/Include/ResourceLimits.h"
 | 
			
		||||
 | 
			
		||||
namespace glslang {
 | 
			
		||||
 | 
			
		||||
// These are the default resources for TBuiltInResources, used for both
 | 
			
		||||
//  - parsing this string for the case where the user didn't supply one,
 | 
			
		||||
//  - dumping out a template for user construction of a config file.
 | 
			
		||||
extern const TBuiltInResource DefaultTBuiltInResource;
 | 
			
		||||
 | 
			
		||||
// Returns the DefaultTBuiltInResource as a human-readable string.
 | 
			
		||||
std::string GetDefaultTBuiltInResourceString();
 | 
			
		||||
 | 
			
		||||
// Decodes the resource limits from |config| to |resources|.
 | 
			
		||||
void DecodeResourceLimits(TBuiltInResource* resources, char* config);
 | 
			
		||||
 | 
			
		||||
}  // end namespace glslang
 | 
			
		||||
 | 
			
		||||
#endif  // _STAND_ALONE_RESOURCE_LIMITS_INCLUDED_
 | 
			
		||||
@ -37,6 +37,7 @@
 | 
			
		||||
// this only applies to the standalone wrapper, not the front end in general
 | 
			
		||||
#define _CRT_SECURE_NO_WARNINGS
 | 
			
		||||
 | 
			
		||||
#include "ResourceLimits.h"
 | 
			
		||||
#include "Worklist.h"
 | 
			
		||||
#include "./../glslang/Include/ShHandle.h"
 | 
			
		||||
#include "./../glslang/Include/revision.h"
 | 
			
		||||
@ -74,6 +75,7 @@ enum TOptions {
 | 
			
		||||
    EOptionVulkanRules        = 0x2000,
 | 
			
		||||
    EOptionDefaultDesktop     = 0x4000,
 | 
			
		||||
    EOptionOutputPreprocessed = 0x8000,
 | 
			
		||||
    EOptionReadHlsl          = 0x10000,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
@ -111,108 +113,7 @@ TBuiltInResource Resources;
 | 
			
		||||
std::string ConfigFile;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// These are the default resources for TBuiltInResources, used for both
 | 
			
		||||
//  - parsing this string for the case where the user didn't supply one
 | 
			
		||||
//  - dumping out a template for user construction of a config file
 | 
			
		||||
//
 | 
			
		||||
const char* DefaultConfig =
 | 
			
		||||
    "MaxLights 32\n"
 | 
			
		||||
    "MaxClipPlanes 6\n"
 | 
			
		||||
    "MaxTextureUnits 32\n"
 | 
			
		||||
    "MaxTextureCoords 32\n"
 | 
			
		||||
    "MaxVertexAttribs 64\n"
 | 
			
		||||
    "MaxVertexUniformComponents 4096\n"
 | 
			
		||||
    "MaxVaryingFloats 64\n"
 | 
			
		||||
    "MaxVertexTextureImageUnits 32\n"
 | 
			
		||||
    "MaxCombinedTextureImageUnits 80\n"
 | 
			
		||||
    "MaxTextureImageUnits 32\n"
 | 
			
		||||
    "MaxFragmentUniformComponents 4096\n"
 | 
			
		||||
    "MaxDrawBuffers 32\n"
 | 
			
		||||
    "MaxVertexUniformVectors 128\n"
 | 
			
		||||
    "MaxVaryingVectors 8\n"
 | 
			
		||||
    "MaxFragmentUniformVectors 16\n"
 | 
			
		||||
    "MaxVertexOutputVectors 16\n"
 | 
			
		||||
    "MaxFragmentInputVectors 15\n"
 | 
			
		||||
    "MinProgramTexelOffset -8\n"
 | 
			
		||||
    "MaxProgramTexelOffset 7\n"
 | 
			
		||||
    "MaxClipDistances 8\n"
 | 
			
		||||
    "MaxComputeWorkGroupCountX 65535\n"
 | 
			
		||||
    "MaxComputeWorkGroupCountY 65535\n"
 | 
			
		||||
    "MaxComputeWorkGroupCountZ 65535\n"
 | 
			
		||||
    "MaxComputeWorkGroupSizeX 1024\n"
 | 
			
		||||
    "MaxComputeWorkGroupSizeY 1024\n"
 | 
			
		||||
    "MaxComputeWorkGroupSizeZ 64\n"
 | 
			
		||||
    "MaxComputeUniformComponents 1024\n"
 | 
			
		||||
    "MaxComputeTextureImageUnits 16\n"
 | 
			
		||||
    "MaxComputeImageUniforms 8\n"
 | 
			
		||||
    "MaxComputeAtomicCounters 8\n"
 | 
			
		||||
    "MaxComputeAtomicCounterBuffers 1\n"
 | 
			
		||||
    "MaxVaryingComponents 60\n" 
 | 
			
		||||
    "MaxVertexOutputComponents 64\n"
 | 
			
		||||
    "MaxGeometryInputComponents 64\n"
 | 
			
		||||
    "MaxGeometryOutputComponents 128\n"
 | 
			
		||||
    "MaxFragmentInputComponents 128\n"
 | 
			
		||||
    "MaxImageUnits 8\n"
 | 
			
		||||
    "MaxCombinedImageUnitsAndFragmentOutputs 8\n"
 | 
			
		||||
    "MaxCombinedShaderOutputResources 8\n"
 | 
			
		||||
    "MaxImageSamples 0\n"
 | 
			
		||||
    "MaxVertexImageUniforms 0\n"
 | 
			
		||||
    "MaxTessControlImageUniforms 0\n"
 | 
			
		||||
    "MaxTessEvaluationImageUniforms 0\n"
 | 
			
		||||
    "MaxGeometryImageUniforms 0\n"
 | 
			
		||||
    "MaxFragmentImageUniforms 8\n"
 | 
			
		||||
    "MaxCombinedImageUniforms 8\n"
 | 
			
		||||
    "MaxGeometryTextureImageUnits 16\n"
 | 
			
		||||
    "MaxGeometryOutputVertices 256\n"
 | 
			
		||||
    "MaxGeometryTotalOutputComponents 1024\n"
 | 
			
		||||
    "MaxGeometryUniformComponents 1024\n"
 | 
			
		||||
    "MaxGeometryVaryingComponents 64\n"
 | 
			
		||||
    "MaxTessControlInputComponents 128\n"
 | 
			
		||||
    "MaxTessControlOutputComponents 128\n"
 | 
			
		||||
    "MaxTessControlTextureImageUnits 16\n"
 | 
			
		||||
    "MaxTessControlUniformComponents 1024\n"
 | 
			
		||||
    "MaxTessControlTotalOutputComponents 4096\n"
 | 
			
		||||
    "MaxTessEvaluationInputComponents 128\n"
 | 
			
		||||
    "MaxTessEvaluationOutputComponents 128\n"
 | 
			
		||||
    "MaxTessEvaluationTextureImageUnits 16\n"
 | 
			
		||||
    "MaxTessEvaluationUniformComponents 1024\n"
 | 
			
		||||
    "MaxTessPatchComponents 120\n"
 | 
			
		||||
    "MaxPatchVertices 32\n"
 | 
			
		||||
    "MaxTessGenLevel 64\n"
 | 
			
		||||
    "MaxViewports 16\n"
 | 
			
		||||
    "MaxVertexAtomicCounters 0\n"
 | 
			
		||||
    "MaxTessControlAtomicCounters 0\n"
 | 
			
		||||
    "MaxTessEvaluationAtomicCounters 0\n"
 | 
			
		||||
    "MaxGeometryAtomicCounters 0\n"
 | 
			
		||||
    "MaxFragmentAtomicCounters 8\n"
 | 
			
		||||
    "MaxCombinedAtomicCounters 8\n"
 | 
			
		||||
    "MaxAtomicCounterBindings 1\n"
 | 
			
		||||
    "MaxVertexAtomicCounterBuffers 0\n"
 | 
			
		||||
    "MaxTessControlAtomicCounterBuffers 0\n"
 | 
			
		||||
    "MaxTessEvaluationAtomicCounterBuffers 0\n"
 | 
			
		||||
    "MaxGeometryAtomicCounterBuffers 0\n"
 | 
			
		||||
    "MaxFragmentAtomicCounterBuffers 1\n"
 | 
			
		||||
    "MaxCombinedAtomicCounterBuffers 1\n"
 | 
			
		||||
    "MaxAtomicCounterBufferSize 16384\n"
 | 
			
		||||
    "MaxTransformFeedbackBuffers 4\n"
 | 
			
		||||
    "MaxTransformFeedbackInterleavedComponents 64\n"
 | 
			
		||||
    "MaxCullDistances 8\n"
 | 
			
		||||
    "MaxCombinedClipAndCullDistances 8\n"
 | 
			
		||||
    "MaxSamples 4\n"
 | 
			
		||||
 | 
			
		||||
    "nonInductiveForLoops 1\n"
 | 
			
		||||
    "whileLoops 1\n"
 | 
			
		||||
    "doWhileLoops 1\n"
 | 
			
		||||
    "generalUniformIndexing 1\n"
 | 
			
		||||
    "generalAttributeMatrixVectorIndexing 1\n"
 | 
			
		||||
    "generalVaryingIndexing 1\n"
 | 
			
		||||
    "generalSamplerIndexing 1\n"
 | 
			
		||||
    "generalVariableIndexing 1\n"
 | 
			
		||||
    "generalConstantMatrixVectorIndexing 1\n"
 | 
			
		||||
    ;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Parse either a .conf file provided by the user or the default string above.
 | 
			
		||||
// Parse either a .conf file provided by the user or the default from glslang::DefaultTBuiltInResource
 | 
			
		||||
//
 | 
			
		||||
void ProcessConfigFile()
 | 
			
		||||
{
 | 
			
		||||
@ -229,210 +130,12 @@ void ProcessConfigFile()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (config == 0) {
 | 
			
		||||
        config = new char[strlen(DefaultConfig) + 1];
 | 
			
		||||
        strcpy(config, DefaultConfig);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const char* delims = " \t\n\r";
 | 
			
		||||
    const char* token = strtok(config, delims);
 | 
			
		||||
    while (token) {
 | 
			
		||||
        const char* valueStr = strtok(0, delims);
 | 
			
		||||
        if (valueStr == 0 || ! (valueStr[0] == '-' || (valueStr[0] >= '0' && valueStr[0] <= '9'))) {
 | 
			
		||||
            printf("Error: '%s' bad .conf file.  Each name must be followed by one number.\n", valueStr ? valueStr : "");
 | 
			
		||||
        Resources = glslang::DefaultTBuiltInResource;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
        int value = atoi(valueStr);
 | 
			
		||||
 | 
			
		||||
        if (strcmp(token, "MaxLights") == 0)
 | 
			
		||||
            Resources.maxLights = value;
 | 
			
		||||
        else if (strcmp(token, "MaxClipPlanes") == 0)
 | 
			
		||||
            Resources.maxClipPlanes = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTextureUnits") == 0)
 | 
			
		||||
            Resources.maxTextureUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTextureCoords") == 0)
 | 
			
		||||
            Resources.maxTextureCoords = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexAttribs") == 0)
 | 
			
		||||
            Resources.maxVertexAttribs = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexUniformComponents") == 0)
 | 
			
		||||
            Resources.maxVertexUniformComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVaryingFloats") == 0)
 | 
			
		||||
            Resources.maxVaryingFloats = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexTextureImageUnits") == 0)
 | 
			
		||||
            Resources.maxVertexTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedTextureImageUnits") == 0)
 | 
			
		||||
            Resources.maxCombinedTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTextureImageUnits") == 0)
 | 
			
		||||
            Resources.maxTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentUniformComponents") == 0)
 | 
			
		||||
            Resources.maxFragmentUniformComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxDrawBuffers") == 0)
 | 
			
		||||
            Resources.maxDrawBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexUniformVectors") == 0)
 | 
			
		||||
            Resources.maxVertexUniformVectors = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVaryingVectors") == 0)
 | 
			
		||||
            Resources.maxVaryingVectors = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentUniformVectors") == 0)
 | 
			
		||||
            Resources.maxFragmentUniformVectors = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexOutputVectors") == 0)
 | 
			
		||||
            Resources.maxVertexOutputVectors = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentInputVectors") == 0)
 | 
			
		||||
            Resources.maxFragmentInputVectors = value;
 | 
			
		||||
        else if (strcmp(token, "MinProgramTexelOffset") == 0)
 | 
			
		||||
            Resources.minProgramTexelOffset = value;
 | 
			
		||||
        else if (strcmp(token, "MaxProgramTexelOffset") == 0)
 | 
			
		||||
            Resources.maxProgramTexelOffset = value;
 | 
			
		||||
        else if (strcmp(token, "MaxClipDistances") == 0)
 | 
			
		||||
            Resources.maxClipDistances = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeWorkGroupCountX") == 0)
 | 
			
		||||
            Resources.maxComputeWorkGroupCountX = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeWorkGroupCountY") == 0)
 | 
			
		||||
            Resources.maxComputeWorkGroupCountY = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeWorkGroupCountZ") == 0)
 | 
			
		||||
            Resources.maxComputeWorkGroupCountZ = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeWorkGroupSizeX") == 0)
 | 
			
		||||
            Resources.maxComputeWorkGroupSizeX = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeWorkGroupSizeY") == 0)
 | 
			
		||||
            Resources.maxComputeWorkGroupSizeY = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeWorkGroupSizeZ") == 0)
 | 
			
		||||
            Resources.maxComputeWorkGroupSizeZ = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeUniformComponents") == 0)
 | 
			
		||||
            Resources.maxComputeUniformComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeTextureImageUnits") == 0)
 | 
			
		||||
            Resources.maxComputeTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeImageUniforms") == 0)
 | 
			
		||||
            Resources.maxComputeImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeAtomicCounters") == 0)
 | 
			
		||||
            Resources.maxComputeAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxComputeAtomicCounterBuffers") == 0)
 | 
			
		||||
            Resources.maxComputeAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVaryingComponents") == 0)
 | 
			
		||||
            Resources.maxVaryingComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexOutputComponents") == 0)
 | 
			
		||||
            Resources.maxVertexOutputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryInputComponents") == 0)
 | 
			
		||||
            Resources.maxGeometryInputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryOutputComponents") == 0)
 | 
			
		||||
            Resources.maxGeometryOutputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentInputComponents") == 0)
 | 
			
		||||
            Resources.maxFragmentInputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxImageUnits") == 0)
 | 
			
		||||
            Resources.maxImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedImageUnitsAndFragmentOutputs") == 0)
 | 
			
		||||
            Resources.maxCombinedImageUnitsAndFragmentOutputs = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedShaderOutputResources") == 0)
 | 
			
		||||
            Resources.maxCombinedShaderOutputResources = value;
 | 
			
		||||
        else if (strcmp(token, "MaxImageSamples") == 0)
 | 
			
		||||
            Resources.maxImageSamples = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexImageUniforms") == 0)
 | 
			
		||||
            Resources.maxVertexImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlImageUniforms") == 0)
 | 
			
		||||
            Resources.maxTessControlImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationImageUniforms") == 0)
 | 
			
		||||
            Resources.maxTessEvaluationImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryImageUniforms") == 0)
 | 
			
		||||
            Resources.maxGeometryImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentImageUniforms") == 0)
 | 
			
		||||
            Resources.maxFragmentImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedImageUniforms") == 0)
 | 
			
		||||
            Resources.maxCombinedImageUniforms = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryTextureImageUnits") == 0)
 | 
			
		||||
            Resources.maxGeometryTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryOutputVertices") == 0)
 | 
			
		||||
            Resources.maxGeometryOutputVertices = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryTotalOutputComponents") == 0)
 | 
			
		||||
            Resources.maxGeometryTotalOutputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryUniformComponents") == 0)
 | 
			
		||||
            Resources.maxGeometryUniformComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryVaryingComponents") == 0)
 | 
			
		||||
            Resources.maxGeometryVaryingComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlInputComponents") == 0)
 | 
			
		||||
            Resources.maxTessControlInputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlOutputComponents") == 0)
 | 
			
		||||
            Resources.maxTessControlOutputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlTextureImageUnits") == 0)
 | 
			
		||||
            Resources.maxTessControlTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlUniformComponents") == 0)
 | 
			
		||||
            Resources.maxTessControlUniformComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlTotalOutputComponents") == 0)
 | 
			
		||||
            Resources.maxTessControlTotalOutputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationInputComponents") == 0)
 | 
			
		||||
            Resources.maxTessEvaluationInputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationOutputComponents") == 0)
 | 
			
		||||
            Resources.maxTessEvaluationOutputComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationTextureImageUnits") == 0)
 | 
			
		||||
            Resources.maxTessEvaluationTextureImageUnits = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationUniformComponents") == 0)
 | 
			
		||||
            Resources.maxTessEvaluationUniformComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessPatchComponents") == 0)
 | 
			
		||||
            Resources.maxTessPatchComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxPatchVertices") == 0)
 | 
			
		||||
            Resources.maxPatchVertices = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessGenLevel") == 0)
 | 
			
		||||
            Resources.maxTessGenLevel = value;
 | 
			
		||||
        else if (strcmp(token, "MaxViewports") == 0)
 | 
			
		||||
            Resources.maxViewports = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexAtomicCounters") == 0)
 | 
			
		||||
            Resources.maxVertexAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlAtomicCounters") == 0)
 | 
			
		||||
            Resources.maxTessControlAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationAtomicCounters") == 0)
 | 
			
		||||
            Resources.maxTessEvaluationAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryAtomicCounters") == 0)
 | 
			
		||||
            Resources.maxGeometryAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentAtomicCounters") == 0)
 | 
			
		||||
            Resources.maxFragmentAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedAtomicCounters") == 0)
 | 
			
		||||
            Resources.maxCombinedAtomicCounters = value;
 | 
			
		||||
        else if (strcmp(token, "MaxAtomicCounterBindings") == 0)
 | 
			
		||||
            Resources.maxAtomicCounterBindings = value;
 | 
			
		||||
        else if (strcmp(token, "MaxVertexAtomicCounterBuffers") == 0)
 | 
			
		||||
            Resources.maxVertexAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessControlAtomicCounterBuffers") == 0)
 | 
			
		||||
            Resources.maxTessControlAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTessEvaluationAtomicCounterBuffers") == 0)
 | 
			
		||||
            Resources.maxTessEvaluationAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxGeometryAtomicCounterBuffers") == 0)
 | 
			
		||||
            Resources.maxGeometryAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxFragmentAtomicCounterBuffers") == 0)
 | 
			
		||||
            Resources.maxFragmentAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedAtomicCounterBuffers") == 0)
 | 
			
		||||
            Resources.maxCombinedAtomicCounterBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxAtomicCounterBufferSize") == 0)
 | 
			
		||||
            Resources.maxAtomicCounterBufferSize = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTransformFeedbackBuffers") == 0)
 | 
			
		||||
            Resources.maxTransformFeedbackBuffers = value;
 | 
			
		||||
        else if (strcmp(token, "MaxTransformFeedbackInterleavedComponents") == 0)
 | 
			
		||||
            Resources.maxTransformFeedbackInterleavedComponents = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCullDistances") == 0)
 | 
			
		||||
            Resources.maxCullDistances = value;
 | 
			
		||||
        else if (strcmp(token, "MaxCombinedClipAndCullDistances") == 0)
 | 
			
		||||
            Resources.maxCombinedClipAndCullDistances = value;
 | 
			
		||||
        else if (strcmp(token, "MaxSamples") == 0)
 | 
			
		||||
            Resources.maxSamples = value;
 | 
			
		||||
    glslang::DecodeResourceLimits(&Resources,  config);
 | 
			
		||||
 | 
			
		||||
        else if (strcmp(token, "nonInductiveForLoops") == 0)
 | 
			
		||||
            Resources.limits.nonInductiveForLoops = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "whileLoops") == 0)
 | 
			
		||||
            Resources.limits.whileLoops = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "doWhileLoops") == 0)
 | 
			
		||||
            Resources.limits.doWhileLoops = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "generalUniformIndexing") == 0)
 | 
			
		||||
            Resources.limits.generalUniformIndexing = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "generalAttributeMatrixVectorIndexing") == 0)
 | 
			
		||||
            Resources.limits.generalAttributeMatrixVectorIndexing = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "generalVaryingIndexing") == 0)
 | 
			
		||||
            Resources.limits.generalVaryingIndexing = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "generalSamplerIndexing") == 0)
 | 
			
		||||
            Resources.limits.generalSamplerIndexing = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "generalVariableIndexing") == 0)
 | 
			
		||||
            Resources.limits.generalVariableIndexing = (value != 0);
 | 
			
		||||
        else if (strcmp(token, "generalConstantMatrixVectorIndexing") == 0)
 | 
			
		||||
            Resources.limits.generalConstantMatrixVectorIndexing = (value != 0);
 | 
			
		||||
        else
 | 
			
		||||
            printf("Warning: unrecognized limit (%s) in configuration file.\n", token);
 | 
			
		||||
 | 
			
		||||
        token = strtok(0, delims);
 | 
			
		||||
    }
 | 
			
		||||
    if (configStrings)
 | 
			
		||||
        FreeFileData(configStrings);
 | 
			
		||||
    else
 | 
			
		||||
@ -449,6 +152,7 @@ int NumWorkItems = 0;
 | 
			
		||||
int Options = 0;
 | 
			
		||||
const char* ExecutableName = nullptr;
 | 
			
		||||
const char* binaryFileName = nullptr;
 | 
			
		||||
const char* entryPointName = nullptr;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Create the default name for saving a binary if -o is not provided.
 | 
			
		||||
@ -537,6 +241,19 @@ void ProcessArguments(int argc, char* argv[])
 | 
			
		||||
            case 'd':
 | 
			
		||||
                Options |= EOptionDefaultDesktop;
 | 
			
		||||
                break;
 | 
			
		||||
            case 'D':
 | 
			
		||||
                Options |= EOptionReadHlsl;
 | 
			
		||||
                break;
 | 
			
		||||
            case 'e':
 | 
			
		||||
                // HLSL todo: entry point handle needs much more sophistication.
 | 
			
		||||
                // This is okay for one compilation unit with one entry point.
 | 
			
		||||
                entryPointName = argv[1];
 | 
			
		||||
                if (argc > 0) {
 | 
			
		||||
                    argc--;
 | 
			
		||||
                    argv++;
 | 
			
		||||
                } else
 | 
			
		||||
                    Error("no <entry-point> provided for -e");
 | 
			
		||||
                break;
 | 
			
		||||
            case 'h':
 | 
			
		||||
                usage();
 | 
			
		||||
                break;
 | 
			
		||||
@ -616,6 +333,8 @@ void SetMessageOptions(EShMessages& messages)
 | 
			
		||||
        messages = (EShMessages)(messages | EShMsgVulkanRules);
 | 
			
		||||
    if (Options & EOptionOutputPreprocessed)
 | 
			
		||||
        messages = (EShMessages)(messages | EShMsgOnlyPreprocessor);
 | 
			
		||||
    if (Options & EOptionReadHlsl)
 | 
			
		||||
        messages = (EShMessages)(messages | EShMsgReadHlsl);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
@ -693,6 +412,8 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
 | 
			
		||||
        const auto &compUnit = *it;
 | 
			
		||||
        glslang::TShader* shader = new glslang::TShader(compUnit.stage);
 | 
			
		||||
        shader->setStrings(compUnit.text, 1);
 | 
			
		||||
        if (entryPointName) // HLSL todo: this needs to be tracked per compUnits
 | 
			
		||||
            shader->setEntryPoint(entryPointName);
 | 
			
		||||
        shaders.push_back(shader);
 | 
			
		||||
 | 
			
		||||
        const int defaultVersion = Options & EOptionDefaultDesktop? 110: 100;
 | 
			
		||||
@ -727,20 +448,24 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
 | 
			
		||||
    // Program-level processing...
 | 
			
		||||
    //
 | 
			
		||||
 | 
			
		||||
    // Link
 | 
			
		||||
    if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages))
 | 
			
		||||
        LinkFailed = true;
 | 
			
		||||
 | 
			
		||||
    // Report
 | 
			
		||||
    if (! (Options & EOptionSuppressInfolog) &&
 | 
			
		||||
        ! (Options & EOptionMemoryLeakMode)) {
 | 
			
		||||
        PutsIfNonEmpty(program.getInfoLog());
 | 
			
		||||
        PutsIfNonEmpty(program.getInfoDebugLog());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Reflect
 | 
			
		||||
    if (Options & EOptionDumpReflection) {
 | 
			
		||||
        program.buildReflection();
 | 
			
		||||
        program.dumpReflection();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Dump SPIR-V
 | 
			
		||||
    if (Options & EOptionSpv) {
 | 
			
		||||
        if (CompileFailed || LinkFailed)
 | 
			
		||||
            printf("SPIR-V is not generated for failed compile or link\n");
 | 
			
		||||
@ -748,11 +473,14 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
 | 
			
		||||
            for (int stage = 0; stage < EShLangCount; ++stage) {
 | 
			
		||||
                if (program.getIntermediate((EShLanguage)stage)) {
 | 
			
		||||
                    std::vector<unsigned int> spirv;
 | 
			
		||||
                    glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv);
 | 
			
		||||
                    std::string warningsErrors;
 | 
			
		||||
                    spv::SpvBuildLogger logger;
 | 
			
		||||
                    glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv, &logger);
 | 
			
		||||
 | 
			
		||||
                    // Dump the spv to a file or stdout, etc., but only if not doing
 | 
			
		||||
                    // memory/perf testing, as it's not internal to programmatic use.
 | 
			
		||||
                    if (! (Options & EOptionMemoryLeakMode)) {
 | 
			
		||||
                      printf("%s", logger.getAllMessages().c_str());
 | 
			
		||||
                        glslang::OutputSpv(spirv, GetBinaryName((EShLanguage)stage));
 | 
			
		||||
                        if (Options & EOptionHumanReadableSpv) {
 | 
			
		||||
                            spv::Disassemble(std::cout, spirv);
 | 
			
		||||
@ -832,7 +560,7 @@ int C_DECL main(int argc, char* argv[])
 | 
			
		||||
    ProcessArguments(argc, argv);
 | 
			
		||||
 | 
			
		||||
    if (Options & EOptionDumpConfig) {
 | 
			
		||||
        printf("%s", DefaultConfig);
 | 
			
		||||
        printf("%s", glslang::GetDefaultTBuiltInResourceString().c_str());
 | 
			
		||||
        if (Worklist.empty())
 | 
			
		||||
            return ESuccess;
 | 
			
		||||
    }
 | 
			
		||||
@ -1031,6 +759,8 @@ void usage()
 | 
			
		||||
           "              creates the default configuration file (redirect to a .conf file)\n"
 | 
			
		||||
           "  -d          default to desktop (#version 110) when there is no shader #version\n"
 | 
			
		||||
           "              (default is ES version 100)\n"
 | 
			
		||||
           "  -D          input is HLSL\n"
 | 
			
		||||
           "  -e          specify entry-point name\n"
 | 
			
		||||
           "  -h          print this usage message\n"
 | 
			
		||||
           "  -i          intermediate tree (glslang AST) is printed out\n"
 | 
			
		||||
           "  -l          link all input files together to form a single module\n"
 | 
			
		||||
 | 
			
		||||
@ -148,3 +148,5 @@ void fooKeyMem()
 | 
			
		||||
{
 | 
			
		||||
    KeyMem.precise;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
layout(location=28, index=2) out vec4 outIndex2; // ERROR index out of range
 | 
			
		||||
@ -100,3 +100,6 @@ void foop()
 | 
			
		||||
patch out pinbn {
 | 
			
		||||
    int a;
 | 
			
		||||
} pinbi;
 | 
			
		||||
 | 
			
		||||
invariant precise out vec4 badOrder[]; // ERROR, precise must appear first
 | 
			
		||||
void badp(out precise float f);        // ERROR, precise must appear first
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										30
									
								
								Test/420.comp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								Test/420.comp
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,30 @@
 | 
			
		||||
#version 420
 | 
			
		||||
 | 
			
		||||
layout(local_size_x = 2) in;  // ERROR, no compute
 | 
			
		||||
 | 
			
		||||
#extension GL_ARB_compute_shader : enable
 | 
			
		||||
 | 
			
		||||
layout(local_size_x = 2, local_size_y = 4, local_size_z = 6) in;
 | 
			
		||||
 | 
			
		||||
shared vec3 sfoo;
 | 
			
		||||
 | 
			
		||||
void main()
 | 
			
		||||
{
 | 
			
		||||
    sfoo = vec3(gl_WorkGroupSize.x, gl_WorkGroupSize.y, gl_WorkGroupSize.z);
 | 
			
		||||
    sfoo += gl_WorkGroupSize + gl_NumWorkGroups + gl_WorkGroupID + gl_LocalInvocationID + gl_GlobalInvocationID;
 | 
			
		||||
    sfoo *= gl_LocalInvocationIndex;
 | 
			
		||||
    sfoo += gl_MaxComputeWorkGroupCount + gl_MaxComputeWorkGroupSize;
 | 
			
		||||
    sfoo *= gl_MaxComputeUniformComponents +
 | 
			
		||||
            gl_MaxComputeTextureImageUnits +
 | 
			
		||||
            gl_MaxComputeImageUniforms +
 | 
			
		||||
            gl_MaxComputeAtomicCounters +
 | 
			
		||||
            gl_MaxComputeAtomicCounterBuffers;
 | 
			
		||||
 | 
			
		||||
    barrier();
 | 
			
		||||
    memoryBarrier();
 | 
			
		||||
    memoryBarrierAtomicCounter();
 | 
			
		||||
    memoryBarrierBuffer();
 | 
			
		||||
    memoryBarrierImage();
 | 
			
		||||
    memoryBarrierShared();
 | 
			
		||||
    groupMemoryBarrier();
 | 
			
		||||
}
 | 
			
		||||
@ -47,3 +47,10 @@ void foo()
 | 
			
		||||
    s += imageSamples(i2dmsa);
 | 
			
		||||
    float f = imageAtomicExchange(i2dmsa, ivec3(in3), 2, 4.5);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
in float gl_CullDistance[6];
 | 
			
		||||
 | 
			
		||||
float cull(int i)
 | 
			
		||||
{
 | 
			
		||||
    return (i >= 6) ? gl_CullDistance[5] : gl_CullDistance[i];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,6 @@
 | 
			
		||||
ERROR: 0:3: '{ } style initializers' : not supported with this profile: es
 | 
			
		||||
ERROR: 0:3: 'initializer' : not supported for this version or the enabled extensions 
 | 
			
		||||
ERROR: 0:3: 'array initializer' : not supported for this version or the enabled extensions 
 | 
			
		||||
ERROR: 0:3: 'non-constant global initializer' : not supported with this profile: es
 | 
			
		||||
ERROR: 0:4: '#version' : must occur first in shader 
 | 
			
		||||
ERROR: 0:7: 'attribute' : not supported in this stage: fragment
 | 
			
		||||
ERROR: 0:7: 'float' : type requires declaration of default precision qualifier 
 | 
			
		||||
@ -86,7 +85,7 @@ ERROR: 0:194: 'a' : can't use function syntax on variable
 | 
			
		||||
ERROR: 0:214: 'non-constant global initializer' : not supported with this profile: es
 | 
			
		||||
ERROR: 0:3000: '#error' : line of this error should be 3000  
 | 
			
		||||
ERROR: 0:3002: '' :  syntax error
 | 
			
		||||
ERROR: 78 compilation errors.  No code generated.
 | 
			
		||||
ERROR: 77 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 100
 | 
			
		||||
 | 
			
		||||
@ -22,3 +22,7 @@ ERROR: 0:65: 'limitations' : Non-constant-index-expression
 | 
			
		||||
ERROR: 20 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked vertex stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -4,14 +4,16 @@ ERROR: 0:17: 'b' : function name is redeclaration of existing name
 | 
			
		||||
ERROR: 0:20: 'c' : redefinition 
 | 
			
		||||
ERROR: 0:22: 'f' : redefinition 
 | 
			
		||||
ERROR: 0:24: 'redefinition of built-in function' : not supported with this profile: es
 | 
			
		||||
ERROR: 0:24: 'highp' : overloaded functions must have the same parameter precision qualifiers for argument 1
 | 
			
		||||
ERROR: 0:25: 'redefinition of built-in function' : not supported with this profile: es
 | 
			
		||||
ERROR: 0:25: 'highp' : overloaded functions must have the same parameter precision qualifiers for argument 1
 | 
			
		||||
ERROR: 0:38: 'local function declaration' : not supported with this profile: es
 | 
			
		||||
ERROR: 0:43: 'sin' : can't use function syntax on variable 
 | 
			
		||||
ERROR: 0:57: 'z' : undeclared identifier 
 | 
			
		||||
ERROR: 0:57: 'z' : redefinition 
 | 
			
		||||
ERROR: 0:73: 'degrees' : can't use function syntax on variable 
 | 
			
		||||
ERROR: 0:76: 'vertex-shader struct output' : not supported for this version or the enabled extensions 
 | 
			
		||||
ERROR: 12 compilation errors.  No code generated.
 | 
			
		||||
ERROR: 14 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 100
 | 
			
		||||
 | 
			
		||||
@ -215,9 +215,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:33          Constant:
 | 
			
		||||
0:33            3 (const int)
 | 
			
		||||
0:33        direct index (temp float ClipDistance)
 | 
			
		||||
0:33          gl_ClipDistance: direct index for structure (in 1-element array of float ClipDistance)
 | 
			
		||||
0:33            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              'gl_in' (in 4-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33          gl_ClipDistance: direct index for structure (in 3-element array of float ClipDistance)
 | 
			
		||||
0:33            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              'gl_in' (in 4-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              Constant:
 | 
			
		||||
0:33                1 (const int)
 | 
			
		||||
0:33            Constant:
 | 
			
		||||
@ -230,8 +230,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:34          Constant:
 | 
			
		||||
0:34            0 (const uint)
 | 
			
		||||
0:34        gl_Position: direct index for structure (in 4-component vector of float Position)
 | 
			
		||||
0:34          direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:34            'gl_in' (in 4-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:34          direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:34            'gl_in' (in 4-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:34            Constant:
 | 
			
		||||
0:34              0 (const int)
 | 
			
		||||
0:34          Constant:
 | 
			
		||||
@ -242,8 +242,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:35          Constant:
 | 
			
		||||
0:35            1 (const uint)
 | 
			
		||||
0:35        gl_PointSize: direct index for structure (in float PointSize)
 | 
			
		||||
0:35          direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:35            'gl_in' (in 4-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:35          direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:35            'gl_in' (in 4-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:35            Constant:
 | 
			
		||||
0:35              3 (const int)
 | 
			
		||||
0:35          Constant:
 | 
			
		||||
@ -293,7 +293,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'toF' (layout(stream=0 ) out block{layout(stream=0 ) out 3-component vector of float color})
 | 
			
		||||
0:?     'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out 3-component vector of float color})
 | 
			
		||||
0:?     'anon@1' (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 4-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'gl_in' (in 4-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'gl_in' (in 4-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'ov0' (layout(stream=0 ) out 4-component vector of float)
 | 
			
		||||
0:?     'ov4' (layout(stream=4 ) out 4-component vector of float)
 | 
			
		||||
0:?     'o1v0' (layout(stream=0 ) out 4-component vector of float)
 | 
			
		||||
 | 
			
		||||
@ -229,7 +229,10 @@ ERROR: 0:74: 'in' : type must be an array: ina
 | 
			
		||||
ERROR: 0:76: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized 
 | 
			
		||||
ERROR: 0:83: 'location' : overlapping use of location 4
 | 
			
		||||
ERROR: 0:87: 'location' : overlapping use of location 4
 | 
			
		||||
ERROR: 18 compilation errors.  No code generated.
 | 
			
		||||
ERROR: 0:104: '' : precise qualifier must appear first 
 | 
			
		||||
ERROR: 0:105: '' : precise qualifier must appear first 
 | 
			
		||||
ERROR: 0:105: '' : precise qualifier must appear first 
 | 
			
		||||
ERROR: 21 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 400
 | 
			
		||||
@ -391,20 +394,20 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:91    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:95      multiply second child into first child (temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96      move second child to first child (temp 3-component vector of float)
 | 
			
		||||
0:96        'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96        'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96        fma (global 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:97      move second child to first child (temp double)
 | 
			
		||||
0:97        'd' (temp double)
 | 
			
		||||
0:97        'd' (noContraction temp double)
 | 
			
		||||
0:97        fma (global double)
 | 
			
		||||
0:97          'd' (temp double)
 | 
			
		||||
0:97          'd' (temp double)
 | 
			
		||||
0:97          'd' (temp double)
 | 
			
		||||
0:97          'd' (noContraction temp double)
 | 
			
		||||
0:97          'd' (noContraction temp double)
 | 
			
		||||
0:97          'd' (noContraction temp double)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'outa' (global 4-element array of int)
 | 
			
		||||
@ -420,8 +423,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'ovla' (layout(location=3 ) out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'ovlb' (layout(location=4 ) out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'ovlc' (layout(location=4 ) out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:?     'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:?     'pinbi' (patch out block{out int a})
 | 
			
		||||
0:?     'badOrder' (invariant noContraction out 4-element array of 4-component vector of float)
 | 
			
		||||
 | 
			
		||||
400.tese
 | 
			
		||||
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
 | 
			
		||||
@ -563,7 +567,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'badp2' (flat patch in 4-component vector of float)
 | 
			
		||||
0:?     'badp3' (noperspective patch in 4-component vector of float)
 | 
			
		||||
0:?     'badp4' (patch sample in 3-component vector of float)
 | 
			
		||||
0:?     'gl_in' (in 32-element array of block{in implicitly-sized array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'gl_in' (in 32-element array of block{in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'ina' (in 2-component vector of float)
 | 
			
		||||
0:?     'inb' (in 32-element array of 2-component vector of float)
 | 
			
		||||
0:?     'inc' (in 32-element array of 2-component vector of float)
 | 
			
		||||
@ -716,18 +720,18 @@ ERROR: node is still EOpNull!
 | 
			
		||||
 | 
			
		||||
420.tese
 | 
			
		||||
Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
 | 
			
		||||
ERROR: 0:7: '=' :  cannot convert from 'global 3-element array of float' to 'global 2-element array of float'
 | 
			
		||||
ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): global 2-component vector of float
 | 
			
		||||
ERROR: 0:9: 'initializer list' : wrong number of matrix columns: global 3X3 matrix of float
 | 
			
		||||
ERROR: 0:10: 'initializer list' : wrong number of matrix columns: global 2X2 matrix of float
 | 
			
		||||
ERROR: 0:7: '=' :  cannot convert from 'const 3-element array of float' to 'global 2-element array of float'
 | 
			
		||||
ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): temp 2-component vector of float
 | 
			
		||||
ERROR: 0:9: 'initializer list' : wrong number of matrix columns: temp 3X3 matrix of float
 | 
			
		||||
ERROR: 0:10: 'initializer list' : wrong number of matrix columns: temp 2X2 matrix of float
 | 
			
		||||
ERROR: 0:25: 'initializer list' : wrong number of structure members 
 | 
			
		||||
ERROR: 0:27: '=' :  cannot convert from 'const bool' to 'global int'
 | 
			
		||||
ERROR: 0:28: 'constructor' :  cannot convert parameter 2 from 'const float' to 'global 4-component vector of float'
 | 
			
		||||
ERROR: 0:28: 'constructor' :  cannot convert parameter 2 from 'const float' to 'temp 4-component vector of float'
 | 
			
		||||
ERROR: 0:29: 'constructor' :  cannot convert parameter 2 from 'const 2X2 matrix of float' to 'const 4-component vector of float'
 | 
			
		||||
ERROR: 0:29: 'const 2-element array of 4-component vector of float' : cannot construct with these arguments 
 | 
			
		||||
ERROR: 0:29: '=' :  cannot convert from 'const float' to 'global 2-element array of 4-component vector of float'
 | 
			
		||||
ERROR: 0:30: 'initializer list' : wrong number of matrix columns: global 4X2 matrix of float
 | 
			
		||||
ERROR: 0:40: 'constructor' :  cannot convert parameter 1 from 'temp float' to 'global structure{global float s, global float t}'
 | 
			
		||||
ERROR: 0:30: 'initializer list' : wrong number of matrix columns: temp 4X2 matrix of float
 | 
			
		||||
ERROR: 0:40: 'constructor' :  cannot convert parameter 1 from 'temp float' to 'temp structure{global float s, global float t}'
 | 
			
		||||
ERROR: 0:58: 'initializer list' : wrong number of structure members 
 | 
			
		||||
ERROR: 13 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
@ -776,7 +780,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:68  Sequence
 | 
			
		||||
0:68    move second child to first child (temp 3-component vector of float)
 | 
			
		||||
0:68      'bv3' (global 3-component vector of float)
 | 
			
		||||
0:68      Construct vec3 (global 3-component vector of float)
 | 
			
		||||
0:68      Construct vec3 (temp 3-component vector of float)
 | 
			
		||||
0:68        'vc1' (global float)
 | 
			
		||||
0:68        'vc2' (global float)
 | 
			
		||||
0:68        'vc3' (global float)
 | 
			
		||||
@ -932,8 +936,8 @@ vertices = 4
 | 
			
		||||
0:20        move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:20          'p' (temp 4-component vector of float)
 | 
			
		||||
0:20          gl_Position: direct index for structure (in 4-component vector of float Position)
 | 
			
		||||
0:20            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:20              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:20            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:20              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:20              Constant:
 | 
			
		||||
0:20                1 (const int)
 | 
			
		||||
0:20            Constant:
 | 
			
		||||
@ -942,8 +946,8 @@ vertices = 4
 | 
			
		||||
0:21        move second child to first child (temp float)
 | 
			
		||||
0:21          'ps' (temp float)
 | 
			
		||||
0:21          gl_PointSize: direct index for structure (in float PointSize)
 | 
			
		||||
0:21            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:21              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:21            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:21              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:21              Constant:
 | 
			
		||||
0:21                1 (const int)
 | 
			
		||||
0:21            Constant:
 | 
			
		||||
@ -952,9 +956,9 @@ vertices = 4
 | 
			
		||||
0:22        move second child to first child (temp float)
 | 
			
		||||
0:22          'cd' (temp float)
 | 
			
		||||
0:22          direct index (temp float ClipDistance)
 | 
			
		||||
0:22            gl_ClipDistance: direct index for structure (in 1-element array of float ClipDistance)
 | 
			
		||||
0:22              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:22                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:22            gl_ClipDistance: direct index for structure (in 3-element array of float ClipDistance)
 | 
			
		||||
0:22              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:22                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:22                Constant:
 | 
			
		||||
0:22                  1 (const int)
 | 
			
		||||
0:22              Constant:
 | 
			
		||||
@ -975,25 +979,25 @@ vertices = 4
 | 
			
		||||
0:26          'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:28      move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:28        gl_Position: direct index for structure (out 4-component vector of float Position)
 | 
			
		||||
0:28          indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:28            'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:28          indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:28            'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:28            'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:28          Constant:
 | 
			
		||||
0:28            0 (const int)
 | 
			
		||||
0:28        'p' (temp 4-component vector of float)
 | 
			
		||||
0:29      move second child to first child (temp float)
 | 
			
		||||
0:29        gl_PointSize: direct index for structure (out float PointSize)
 | 
			
		||||
0:29          indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:29            'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:29          indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:29            'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:29            'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:29          Constant:
 | 
			
		||||
0:29            1 (const int)
 | 
			
		||||
0:29        'ps' (temp float)
 | 
			
		||||
0:30      move second child to first child (temp float)
 | 
			
		||||
0:30        direct index (temp float ClipDistance)
 | 
			
		||||
0:30          gl_ClipDistance: direct index for structure (out 1-element array of float ClipDistance)
 | 
			
		||||
0:30            indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:30              'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:30          gl_ClipDistance: direct index for structure (out 2-element array of float ClipDistance)
 | 
			
		||||
0:30            indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:30              'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:30              'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:30            Constant:
 | 
			
		||||
0:30              2 (const int)
 | 
			
		||||
@ -1027,8 +1031,8 @@ vertices = 4
 | 
			
		||||
0:23        move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:23          'p' (temp 4-component vector of float)
 | 
			
		||||
0:23          gl_Position: direct index for structure (in 4-component vector of float Position)
 | 
			
		||||
0:23            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:23              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:23            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:23              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:23              Constant:
 | 
			
		||||
0:23                1 (const int)
 | 
			
		||||
0:23            Constant:
 | 
			
		||||
@ -1037,8 +1041,8 @@ vertices = 4
 | 
			
		||||
0:24        move second child to first child (temp float)
 | 
			
		||||
0:24          'ps' (temp float)
 | 
			
		||||
0:24          gl_PointSize: direct index for structure (in float PointSize)
 | 
			
		||||
0:24            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:24              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:24            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:24              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:24              Constant:
 | 
			
		||||
0:24                1 (const int)
 | 
			
		||||
0:24            Constant:
 | 
			
		||||
@ -1047,9 +1051,9 @@ vertices = 4
 | 
			
		||||
0:25        move second child to first child (temp float)
 | 
			
		||||
0:25          'cd' (temp float)
 | 
			
		||||
0:25          direct index (temp float ClipDistance)
 | 
			
		||||
0:25            gl_ClipDistance: direct index for structure (in 1-element array of float ClipDistance)
 | 
			
		||||
0:25              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:25                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:25            gl_ClipDistance: direct index for structure (in 3-element array of float ClipDistance)
 | 
			
		||||
0:25              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:25                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:25                Constant:
 | 
			
		||||
0:25                  1 (const int)
 | 
			
		||||
0:25              Constant:
 | 
			
		||||
@ -1070,25 +1074,25 @@ vertices = 4
 | 
			
		||||
0:29          'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:31      move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:31        gl_Position: direct index for structure (out 4-component vector of float Position)
 | 
			
		||||
0:31          indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:31            'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:31          indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:31            'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:31            'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:31          Constant:
 | 
			
		||||
0:31            0 (const int)
 | 
			
		||||
0:31        'p' (temp 4-component vector of float)
 | 
			
		||||
0:32      move second child to first child (temp float)
 | 
			
		||||
0:32        gl_PointSize: direct index for structure (out float PointSize)
 | 
			
		||||
0:32          indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32            'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32          indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32            'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32            'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:32          Constant:
 | 
			
		||||
0:32            1 (const int)
 | 
			
		||||
0:32        'ps' (temp float)
 | 
			
		||||
0:33      move second child to first child (temp float)
 | 
			
		||||
0:33        direct index (temp float ClipDistance)
 | 
			
		||||
0:33          gl_ClipDistance: direct index for structure (out 1-element array of float ClipDistance)
 | 
			
		||||
0:33            indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33          gl_ClipDistance: direct index for structure (out 2-element array of float ClipDistance)
 | 
			
		||||
0:33            indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:33            Constant:
 | 
			
		||||
0:33              2 (const int)
 | 
			
		||||
@ -1158,8 +1162,8 @@ vertices = 4
 | 
			
		||||
0:67    Function Parameters: 
 | 
			
		||||
0:69    Sequence
 | 
			
		||||
0:69      gl_PointSize: direct index for structure (out float PointSize)
 | 
			
		||||
0:69        direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:69          'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:69        direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:69          'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:69          Constant:
 | 
			
		||||
0:69            4 (const int)
 | 
			
		||||
0:69        Constant:
 | 
			
		||||
@ -1169,20 +1173,20 @@ vertices = 4
 | 
			
		||||
0:91    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:95      multiply second child into first child (temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96      move second child to first child (temp 3-component vector of float)
 | 
			
		||||
0:96        'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96        'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96        fma (global 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:97      move second child to first child (temp double)
 | 
			
		||||
0:97        'd' (temp double)
 | 
			
		||||
0:97        'd' (noContraction temp double)
 | 
			
		||||
0:97        fma (global double)
 | 
			
		||||
0:97          'd' (temp double)
 | 
			
		||||
0:97          'd' (temp double)
 | 
			
		||||
0:97          'd' (temp double)
 | 
			
		||||
0:97          'd' (noContraction temp double)
 | 
			
		||||
0:97          'd' (noContraction temp double)
 | 
			
		||||
0:97          'd' (noContraction temp double)
 | 
			
		||||
0:8  Function Definition: main( (global void)
 | 
			
		||||
0:8    Function Parameters: 
 | 
			
		||||
0:15  Function Definition: main( (global void)
 | 
			
		||||
@ -1192,8 +1196,8 @@ vertices = 4
 | 
			
		||||
0:17        move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:17          'p' (temp 4-component vector of float)
 | 
			
		||||
0:17          gl_Position: direct index for structure (in 4-component vector of float Position)
 | 
			
		||||
0:17            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:17              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:17            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:17              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:17              Constant:
 | 
			
		||||
0:17                1 (const int)
 | 
			
		||||
0:17            Constant:
 | 
			
		||||
@ -1202,8 +1206,8 @@ vertices = 4
 | 
			
		||||
0:18        move second child to first child (temp float)
 | 
			
		||||
0:18          'ps' (temp float)
 | 
			
		||||
0:18          gl_PointSize: direct index for structure (in float PointSize)
 | 
			
		||||
0:18            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:18              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:18            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:18              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:18              Constant:
 | 
			
		||||
0:18                1 (const int)
 | 
			
		||||
0:18            Constant:
 | 
			
		||||
@ -1212,9 +1216,9 @@ vertices = 4
 | 
			
		||||
0:19        move second child to first child (temp float)
 | 
			
		||||
0:19          'cd' (temp float)
 | 
			
		||||
0:19          direct index (temp float ClipDistance)
 | 
			
		||||
0:19            gl_ClipDistance: direct index for structure (in 1-element array of float ClipDistance)
 | 
			
		||||
0:19              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:19                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:19            gl_ClipDistance: direct index for structure (in 3-element array of float ClipDistance)
 | 
			
		||||
0:19              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:19                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:19                Constant:
 | 
			
		||||
0:19                  1 (const int)
 | 
			
		||||
0:19              Constant:
 | 
			
		||||
@ -1280,7 +1284,7 @@ vertices = 4
 | 
			
		||||
0:37                0 (const int)
 | 
			
		||||
0:36        true case is null
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'outa' (global 4-element array of int)
 | 
			
		||||
0:?     'patchOut' (patch out 4-component vector of float)
 | 
			
		||||
0:?     'patchIn' (patch in 4-component vector of float)
 | 
			
		||||
@ -1294,8 +1298,9 @@ vertices = 4
 | 
			
		||||
0:?     'ovla' (layout(location=3 ) out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'ovlb' (layout(location=4 ) out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'ovlc' (layout(location=4 ) out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:?     'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:?     'pinbi' (patch out block{out int a})
 | 
			
		||||
0:?     'badOrder' (invariant noContraction out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'a' (out 3-element array of int)
 | 
			
		||||
0:?     'outb' (out 5-element array of int)
 | 
			
		||||
0:?     'outc' (out 4-element array of int)
 | 
			
		||||
@ -1324,8 +1329,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:22        move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:22          'p' (temp 4-component vector of float)
 | 
			
		||||
0:22          gl_Position: direct index for structure (in 4-component vector of float Position)
 | 
			
		||||
0:22            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:22              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:22            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:22              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:22              Constant:
 | 
			
		||||
0:22                1 (const int)
 | 
			
		||||
0:22            Constant:
 | 
			
		||||
@ -1334,8 +1339,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:23        move second child to first child (temp float)
 | 
			
		||||
0:23          'ps' (temp float)
 | 
			
		||||
0:23          gl_PointSize: direct index for structure (in float PointSize)
 | 
			
		||||
0:23            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:23              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:23            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:23              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:23              Constant:
 | 
			
		||||
0:23                1 (const int)
 | 
			
		||||
0:23            Constant:
 | 
			
		||||
@ -1344,9 +1349,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:24        move second child to first child (temp float)
 | 
			
		||||
0:24          'cd' (temp float)
 | 
			
		||||
0:24          direct index (temp float ClipDistance)
 | 
			
		||||
0:24            gl_ClipDistance: direct index for structure (in 1-element array of float ClipDistance)
 | 
			
		||||
0:24              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:24                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:24            gl_ClipDistance: direct index for structure (in 3-element array of float ClipDistance)
 | 
			
		||||
0:24              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:24                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:24                Constant:
 | 
			
		||||
0:24                  1 (const int)
 | 
			
		||||
0:24              Constant:
 | 
			
		||||
@ -1414,8 +1419,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:32        move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:32          'p' (temp 4-component vector of float)
 | 
			
		||||
0:32          gl_Position: direct index for structure (in 4-component vector of float Position)
 | 
			
		||||
0:32            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32              Constant:
 | 
			
		||||
0:32                1 (const int)
 | 
			
		||||
0:32            Constant:
 | 
			
		||||
@ -1424,8 +1429,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:33        move second child to first child (temp float)
 | 
			
		||||
0:33          'ps' (temp float)
 | 
			
		||||
0:33          gl_PointSize: direct index for structure (in float PointSize)
 | 
			
		||||
0:33            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              Constant:
 | 
			
		||||
0:33                1 (const int)
 | 
			
		||||
0:33            Constant:
 | 
			
		||||
@ -1434,9 +1439,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:34        move second child to first child (temp float)
 | 
			
		||||
0:34          'cd' (temp float)
 | 
			
		||||
0:34          direct index (temp float ClipDistance)
 | 
			
		||||
0:34            gl_ClipDistance: direct index for structure (in 1-element array of float ClipDistance)
 | 
			
		||||
0:34              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:34                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:34            gl_ClipDistance: direct index for structure (in 3-element array of float ClipDistance)
 | 
			
		||||
0:34              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:34                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:34                Constant:
 | 
			
		||||
0:34                  1 (const int)
 | 
			
		||||
0:34              Constant:
 | 
			
		||||
@ -1529,7 +1534,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:68  Sequence
 | 
			
		||||
0:68    move second child to first child (temp 3-component vector of float)
 | 
			
		||||
0:68      'bv3' (global 3-component vector of float)
 | 
			
		||||
0:68      Construct vec3 (global 3-component vector of float)
 | 
			
		||||
0:68      Construct vec3 (temp 3-component vector of float)
 | 
			
		||||
0:68        'vc1' (global float)
 | 
			
		||||
0:68        'vc2' (global float)
 | 
			
		||||
0:68        'vc3' (global float)
 | 
			
		||||
 | 
			
		||||
@ -147,44 +147,44 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:69          'c2D' (smooth in lowp 2-component vector of float)
 | 
			
		||||
0:72      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:72        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:72        texture (global mediump 4-component vector of int)
 | 
			
		||||
0:72        texture (global lowp 4-component vector of int)
 | 
			
		||||
0:72          'is2D' (uniform lowp isampler2D)
 | 
			
		||||
0:72          'c2D' (smooth in lowp 2-component vector of float)
 | 
			
		||||
0:73      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:73        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:73        textureProjOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:73        textureProjOffset (global lowp 4-component vector of int)
 | 
			
		||||
0:73          'is2D' (uniform lowp isampler2D)
 | 
			
		||||
0:73          'c4D' (smooth temp lowp 4-component vector of float)
 | 
			
		||||
0:73          'ic2D' (flat in mediump 2-component vector of int)
 | 
			
		||||
0:74      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:74        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:74        textureProjLod (global mediump 4-component vector of int)
 | 
			
		||||
0:74        textureProjLod (global lowp 4-component vector of int)
 | 
			
		||||
0:74          'is2D' (uniform lowp isampler2D)
 | 
			
		||||
0:74          'c3D' (smooth in lowp 3-component vector of float)
 | 
			
		||||
0:74          'c1D' (smooth in lowp float)
 | 
			
		||||
0:75      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:75        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:75        textureProjGrad (global mediump 4-component vector of int)
 | 
			
		||||
0:75        textureProjGrad (global lowp 4-component vector of int)
 | 
			
		||||
0:75          'is2D' (uniform lowp isampler2D)
 | 
			
		||||
0:75          'c3D' (smooth in lowp 3-component vector of float)
 | 
			
		||||
0:75          'c2D' (smooth in lowp 2-component vector of float)
 | 
			
		||||
0:75          'c2D' (smooth in lowp 2-component vector of float)
 | 
			
		||||
0:76      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:76        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:76        texture (global mediump 4-component vector of int)
 | 
			
		||||
0:76        texture (global lowp 4-component vector of int)
 | 
			
		||||
0:76          'is3D' (uniform lowp isampler3D)
 | 
			
		||||
0:76          'c3D' (smooth in lowp 3-component vector of float)
 | 
			
		||||
0:76          Constant:
 | 
			
		||||
0:76            4.200000
 | 
			
		||||
0:77      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:77        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:77        textureLod (global mediump 4-component vector of int)
 | 
			
		||||
0:77        textureLod (global lowp 4-component vector of int)
 | 
			
		||||
0:77          'isCube' (uniform lowp isamplerCube)
 | 
			
		||||
0:77          'c3D' (smooth in lowp 3-component vector of float)
 | 
			
		||||
0:77          'c1D' (smooth in lowp float)
 | 
			
		||||
0:78      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:78        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:78        textureFetch (global mediump 4-component vector of int)
 | 
			
		||||
0:78        textureFetch (global lowp 4-component vector of int)
 | 
			
		||||
0:78          'is2DArray' (uniform lowp isampler2DArray)
 | 
			
		||||
0:78          'ic3D' (flat in mediump 3-component vector of int)
 | 
			
		||||
0:78          'ic1D' (flat in mediump int)
 | 
			
		||||
@ -503,44 +503,44 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:69          'c2D' (smooth in lowp 2-component vector of float)
 | 
			
		||||
0:72      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:72        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:72        texture (global mediump 4-component vector of int)
 | 
			
		||||
0:72        texture (global lowp 4-component vector of int)
 | 
			
		||||
0:72          'is2D' (uniform lowp isampler2D)
 | 
			
		||||
0:72          'c2D' (smooth in lowp 2-component vector of float)
 | 
			
		||||
0:73      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:73        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:73        textureProjOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:73        textureProjOffset (global lowp 4-component vector of int)
 | 
			
		||||
0:73          'is2D' (uniform lowp isampler2D)
 | 
			
		||||
0:73          'c4D' (smooth temp lowp 4-component vector of float)
 | 
			
		||||
0:73          'ic2D' (flat in mediump 2-component vector of int)
 | 
			
		||||
0:74      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:74        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:74        textureProjLod (global mediump 4-component vector of int)
 | 
			
		||||
0:74        textureProjLod (global lowp 4-component vector of int)
 | 
			
		||||
0:74          'is2D' (uniform lowp isampler2D)
 | 
			
		||||
0:74          'c3D' (smooth in lowp 3-component vector of float)
 | 
			
		||||
0:74          'c1D' (smooth in lowp float)
 | 
			
		||||
0:75      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:75        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:75        textureProjGrad (global mediump 4-component vector of int)
 | 
			
		||||
0:75        textureProjGrad (global lowp 4-component vector of int)
 | 
			
		||||
0:75          'is2D' (uniform lowp isampler2D)
 | 
			
		||||
0:75          'c3D' (smooth in lowp 3-component vector of float)
 | 
			
		||||
0:75          'c2D' (smooth in lowp 2-component vector of float)
 | 
			
		||||
0:75          'c2D' (smooth in lowp 2-component vector of float)
 | 
			
		||||
0:76      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:76        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:76        texture (global mediump 4-component vector of int)
 | 
			
		||||
0:76        texture (global lowp 4-component vector of int)
 | 
			
		||||
0:76          'is3D' (uniform lowp isampler3D)
 | 
			
		||||
0:76          'c3D' (smooth in lowp 3-component vector of float)
 | 
			
		||||
0:76          Constant:
 | 
			
		||||
0:76            4.200000
 | 
			
		||||
0:77      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:77        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:77        textureLod (global mediump 4-component vector of int)
 | 
			
		||||
0:77        textureLod (global lowp 4-component vector of int)
 | 
			
		||||
0:77          'isCube' (uniform lowp isamplerCube)
 | 
			
		||||
0:77          'c3D' (smooth in lowp 3-component vector of float)
 | 
			
		||||
0:77          'c1D' (smooth in lowp float)
 | 
			
		||||
0:78      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:78        'iv' (temp mediump 4-component vector of int)
 | 
			
		||||
0:78        textureFetch (global mediump 4-component vector of int)
 | 
			
		||||
0:78        textureFetch (global lowp 4-component vector of int)
 | 
			
		||||
0:78          'is2DArray' (uniform lowp isampler2DArray)
 | 
			
		||||
0:78          'ic3D' (flat in mediump 3-component vector of int)
 | 
			
		||||
0:78          'ic1D' (flat in mediump int)
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@ ERROR: 0:8: 'varying' : Reserved word.
 | 
			
		||||
ERROR: 0:8: 'varying' : no longer supported in es profile; removed in version 300
 | 
			
		||||
ERROR: 0:9: 'vertex input arrays' : not supported with this profile: es
 | 
			
		||||
ERROR: 0:10: '' : precision qualifier must appear as last qualifier 
 | 
			
		||||
ERROR: 0:11: '' : invariant qualifier must appear first 
 | 
			
		||||
ERROR: 0:11: '' : invariant qualifier must appear before interpolation, storage, and precision qualifiers  
 | 
			
		||||
ERROR: 0:12: '' : Auxiliary qualifiers (centroid, patch, and sample) must appear before storage and precision qualifiers 
 | 
			
		||||
ERROR: 0:12: '' : vertex input cannot be further qualified 
 | 
			
		||||
ERROR: 0:13: '' : interpolation qualifiers must appear before storage and precision qualifiers 
 | 
			
		||||
@ -193,7 +193,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:124      Sequence
 | 
			
		||||
0:124        move second child to first child (temp highp 4-component vector of float)
 | 
			
		||||
0:124          'x4' (temp highp 4-component vector of float)
 | 
			
		||||
0:124          texture (global highp 4-component vector of float)
 | 
			
		||||
0:124          texture (global lowp 4-component vector of float)
 | 
			
		||||
0:124            's2D' (uniform lowp sampler2D)
 | 
			
		||||
0:124            'c2D' (in highp 2-component vector of float)
 | 
			
		||||
0:125      Constant:
 | 
			
		||||
@ -201,7 +201,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:126      Sequence
 | 
			
		||||
0:126        move second child to first child (temp highp 4-component vector of float)
 | 
			
		||||
0:126          'x5' (temp highp 4-component vector of float)
 | 
			
		||||
0:126          textureProjOffset (global highp 4-component vector of float)
 | 
			
		||||
0:126          textureProjOffset (global lowp 4-component vector of float)
 | 
			
		||||
0:126            's3D' (uniform lowp sampler3D)
 | 
			
		||||
0:126            Constant:
 | 
			
		||||
0:126              0.200000
 | 
			
		||||
@ -217,7 +217,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:128      Sequence
 | 
			
		||||
0:128        move second child to first child (temp highp float)
 | 
			
		||||
0:128          'x6' (temp highp float)
 | 
			
		||||
0:128          textureProjGradOffset (global highp float)
 | 
			
		||||
0:128          textureProjGradOffset (global lowp float)
 | 
			
		||||
0:128            's2DS' (uniform lowp sampler2DShadow)
 | 
			
		||||
0:128            'invIn' (invariant in highp 4-component vector of float)
 | 
			
		||||
0:128            Constant:
 | 
			
		||||
@ -477,7 +477,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:124      Sequence
 | 
			
		||||
0:124        move second child to first child (temp highp 4-component vector of float)
 | 
			
		||||
0:124          'x4' (temp highp 4-component vector of float)
 | 
			
		||||
0:124          texture (global highp 4-component vector of float)
 | 
			
		||||
0:124          texture (global lowp 4-component vector of float)
 | 
			
		||||
0:124            's2D' (uniform lowp sampler2D)
 | 
			
		||||
0:124            'c2D' (in highp 2-component vector of float)
 | 
			
		||||
0:125      Constant:
 | 
			
		||||
@ -485,7 +485,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:126      Sequence
 | 
			
		||||
0:126        move second child to first child (temp highp 4-component vector of float)
 | 
			
		||||
0:126          'x5' (temp highp 4-component vector of float)
 | 
			
		||||
0:126          textureProjOffset (global highp 4-component vector of float)
 | 
			
		||||
0:126          textureProjOffset (global lowp 4-component vector of float)
 | 
			
		||||
0:126            's3D' (uniform lowp sampler3D)
 | 
			
		||||
0:126            Constant:
 | 
			
		||||
0:126              0.200000
 | 
			
		||||
@ -501,7 +501,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:128      Sequence
 | 
			
		||||
0:128        move second child to first child (temp highp float)
 | 
			
		||||
0:128          'x6' (temp highp float)
 | 
			
		||||
0:128          textureProjGradOffset (global highp float)
 | 
			
		||||
0:128          textureProjGradOffset (global lowp float)
 | 
			
		||||
0:128            's2DS' (uniform lowp sampler2DShadow)
 | 
			
		||||
0:128            'invIn' (invariant in highp 4-component vector of float)
 | 
			
		||||
0:128            Constant:
 | 
			
		||||
 | 
			
		||||
@ -24,18 +24,18 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:42  Function Definition: main( (global void)
 | 
			
		||||
0:42    Function Parameters: 
 | 
			
		||||
0:44    Sequence
 | 
			
		||||
0:44      texture (global mediump 4-component vector of int)
 | 
			
		||||
0:44      texture (global lowp 4-component vector of int)
 | 
			
		||||
0:44        sampler: direct index for structure (global lowp isampler3D)
 | 
			
		||||
0:44          's' (uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t})
 | 
			
		||||
0:44          Constant:
 | 
			
		||||
0:44            2 (const int)
 | 
			
		||||
0:44        Construct vec3 (temp mediump 3-component vector of float)
 | 
			
		||||
0:44          Convert int to float (temp mediump float)
 | 
			
		||||
0:44        Construct vec3 (temp lowp 3-component vector of float)
 | 
			
		||||
0:44          Convert int to float (temp lowp float)
 | 
			
		||||
0:44            ni: direct index for structure (layout(column_major shared ) uniform mediump int)
 | 
			
		||||
0:44              'inst' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})
 | 
			
		||||
0:44              Constant:
 | 
			
		||||
0:44                1 (const int)
 | 
			
		||||
0:44          Convert uint to float (temp mediump float)
 | 
			
		||||
0:44          Convert uint to float (temp lowp float)
 | 
			
		||||
0:44            direct index (temp mediump uint)
 | 
			
		||||
0:44              bv: direct index for structure (layout(column_major shared ) uniform mediump 4-component vector of uint)
 | 
			
		||||
0:44                'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint bv, layout(column_major shared ) uniform mediump 2X2 matrix of float bm2, layout(column_major shared ) uniform lowp isampler2D sampler, layout(column_major shared ) uniform structure{global mediump int a} t, layout(column_major shared ) uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t} fbs})
 | 
			
		||||
@ -43,7 +43,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:44                  0 (const uint)
 | 
			
		||||
0:44              Constant:
 | 
			
		||||
0:44                1 (const int)
 | 
			
		||||
0:44          Convert uint to float (temp mediump float)
 | 
			
		||||
0:44          Convert uint to float (temp lowp float)
 | 
			
		||||
0:44            direct index (temp mediump uint)
 | 
			
		||||
0:44              nbv: direct index for structure (layout(column_major shared ) uniform mediump 4-component vector of uint)
 | 
			
		||||
0:44                direct index (layout(column_major shared ) temp block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})
 | 
			
		||||
@ -92,18 +92,18 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:42  Function Definition: main( (global void)
 | 
			
		||||
0:42    Function Parameters: 
 | 
			
		||||
0:44    Sequence
 | 
			
		||||
0:44      texture (global mediump 4-component vector of int)
 | 
			
		||||
0:44      texture (global lowp 4-component vector of int)
 | 
			
		||||
0:44        sampler: direct index for structure (global lowp isampler3D)
 | 
			
		||||
0:44          's' (uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t})
 | 
			
		||||
0:44          Constant:
 | 
			
		||||
0:44            2 (const int)
 | 
			
		||||
0:44        Construct vec3 (temp mediump 3-component vector of float)
 | 
			
		||||
0:44          Convert int to float (temp mediump float)
 | 
			
		||||
0:44        Construct vec3 (temp lowp 3-component vector of float)
 | 
			
		||||
0:44          Convert int to float (temp lowp float)
 | 
			
		||||
0:44            ni: direct index for structure (layout(column_major shared ) uniform mediump int)
 | 
			
		||||
0:44              'inst' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})
 | 
			
		||||
0:44              Constant:
 | 
			
		||||
0:44                1 (const int)
 | 
			
		||||
0:44          Convert uint to float (temp mediump float)
 | 
			
		||||
0:44          Convert uint to float (temp lowp float)
 | 
			
		||||
0:44            direct index (temp mediump uint)
 | 
			
		||||
0:44              bv: direct index for structure (layout(column_major shared ) uniform mediump 4-component vector of uint)
 | 
			
		||||
0:44                'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint bv, layout(column_major shared ) uniform mediump 2X2 matrix of float bm2, layout(column_major shared ) uniform lowp isampler2D sampler, layout(column_major shared ) uniform structure{global mediump int a} t, layout(column_major shared ) uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t} fbs})
 | 
			
		||||
@ -111,7 +111,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:44                  0 (const uint)
 | 
			
		||||
0:44              Constant:
 | 
			
		||||
0:44                1 (const int)
 | 
			
		||||
0:44          Convert uint to float (temp mediump float)
 | 
			
		||||
0:44          Convert uint to float (temp lowp float)
 | 
			
		||||
0:44            direct index (temp mediump uint)
 | 
			
		||||
0:44              nbv: direct index for structure (layout(column_major shared ) uniform mediump 4-component vector of uint)
 | 
			
		||||
0:44                direct index (layout(column_major shared ) temp block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})
 | 
			
		||||
 | 
			
		||||
@ -5,8 +5,10 @@ ERROR: 0:20: 'c' : redefinition
 | 
			
		||||
ERROR: 0:22: 'f' : redefinition 
 | 
			
		||||
ERROR: 0:23: 'tan' : redefinition 
 | 
			
		||||
ERROR: 0:24: 'redefinition of built-in function' : not supported with this profile: es
 | 
			
		||||
ERROR: 0:24: 'highp' : overloaded functions must have the same parameter precision qualifiers for argument 1
 | 
			
		||||
ERROR: 0:24: 'sin' : function name is redeclaration of existing name 
 | 
			
		||||
ERROR: 0:25: 'redefinition of built-in function' : not supported with this profile: es
 | 
			
		||||
ERROR: 0:25: 'highp' : overloaded functions must have the same parameter precision qualifiers for argument 1
 | 
			
		||||
ERROR: 0:25: 'cos' : function name is redeclaration of existing name 
 | 
			
		||||
ERROR: 0:25: 'cos' : function already has a body 
 | 
			
		||||
ERROR: 0:27: 'return' : void function cannot return a value 
 | 
			
		||||
@ -18,7 +20,7 @@ ERROR: 0:43: 'sin' : can't use function syntax on variable
 | 
			
		||||
ERROR: 0:57: 'z' : undeclared identifier 
 | 
			
		||||
ERROR: 0:57: 'z' : redefinition 
 | 
			
		||||
ERROR: 0:73: 'degrees' : can't use function syntax on variable 
 | 
			
		||||
ERROR: 19 compilation errors.  No code generated.
 | 
			
		||||
ERROR: 21 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 300
 | 
			
		||||
 | 
			
		||||
@ -45,6 +45,7 @@ ERROR: 0:143: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCoun
 | 
			
		||||
ERROR: 0:149: '[]' : scalar integer expression required 
 | 
			
		||||
ERROR: 0:166: 'precision' : can only apply highp to atomic_uint 
 | 
			
		||||
ERROR: 0:168: 'precise' : Reserved word. 
 | 
			
		||||
ERROR: 0:168: 'precise' : not supported for this version or the enabled extensions 
 | 
			
		||||
ERROR: 0:170: 'dmat2x4' : Reserved word. 
 | 
			
		||||
ERROR: 0:170: 'double matrix' : not supported with this profile: es
 | 
			
		||||
ERROR: 0:171: 'samplerCubeArray' : Reserved word. 
 | 
			
		||||
@ -78,7 +79,7 @@ ERROR: 0:227: 'input block' : not supported in this stage: compute
 | 
			
		||||
ERROR: 0:231: 'output block' : not supported in this stage: compute
 | 
			
		||||
WARNING: 0:235: 't__' : identifiers containing consecutive underscores ("__") are reserved 
 | 
			
		||||
WARNING: 0:238: '#define' : names containing consecutive underscores are reserved: __D
 | 
			
		||||
ERROR: 76 compilation errors.  No code generated.
 | 
			
		||||
ERROR: 77 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 310
 | 
			
		||||
@ -484,7 +485,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'i' (uniform highp int)
 | 
			
		||||
0:?     'atomi' (shared highp int)
 | 
			
		||||
0:?     'atomu' (shared highp uint)
 | 
			
		||||
0:?     'pfoo' (temp highp int)
 | 
			
		||||
0:?     'pfoo' (noContraction temp highp int)
 | 
			
		||||
0:?     'dm' (global 2X4 matrix of double)
 | 
			
		||||
0:?     'sca' (uniform mediump samplerCubeArray)
 | 
			
		||||
0:?     'i2dr' (uniform mediump iimage2DRect)
 | 
			
		||||
@ -911,7 +912,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'i' (uniform highp int)
 | 
			
		||||
0:?     'atomi' (shared highp int)
 | 
			
		||||
0:?     'atomu' (shared highp uint)
 | 
			
		||||
0:?     'pfoo' (temp highp int)
 | 
			
		||||
0:?     'pfoo' (noContraction temp highp int)
 | 
			
		||||
0:?     'dm' (global 2X4 matrix of double)
 | 
			
		||||
0:?     'sca' (uniform mediump samplerCubeArray)
 | 
			
		||||
0:?     'i2dr' (uniform mediump iimage2DRect)
 | 
			
		||||
 | 
			
		||||
@ -61,6 +61,7 @@ ERROR: 0:183: 'gl_PrimitiveID' : required extension not requested: Possible exte
 | 
			
		||||
GL_EXT_geometry_shader
 | 
			
		||||
GL_OES_geometry_shader
 | 
			
		||||
ERROR: 0:209: 'precise' : Reserved word. 
 | 
			
		||||
ERROR: 0:209: 'precise' : not supported for this version or the enabled extensions 
 | 
			
		||||
ERROR: 0:210: 'fma' : required extension not requested: Possible extensions include:
 | 
			
		||||
GL_EXT_gpu_shader5
 | 
			
		||||
GL_OES_gpu_shader5
 | 
			
		||||
@ -129,7 +130,7 @@ ERROR: 0:427: 'blend equation' : can only apply to a standalone qualifier
 | 
			
		||||
ERROR: 0:428: 'blend equation' : can only apply to a standalone qualifier 
 | 
			
		||||
ERROR: 0:429: 'blend_support' : unknown blend equation 
 | 
			
		||||
ERROR: 0:431: 'fragment-shader array-of-array output' : not supported with this profile: es
 | 
			
		||||
ERROR: 121 compilation errors.  No code generated.
 | 
			
		||||
ERROR: 122 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 310
 | 
			
		||||
@ -169,9 +170,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:28                0 (const int)
 | 
			
		||||
0:28            'c2D' (smooth in mediump 2-component vector of float)
 | 
			
		||||
0:29      Sequence
 | 
			
		||||
0:29        move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:29        move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:29          'iv4' (temp mediump 4-component vector of int)
 | 
			
		||||
0:29          textureGatherOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:29          textureGatherOffset (global highp 4-component vector of int)
 | 
			
		||||
0:29            'isamp2DA' (uniform highp isampler2DArray)
 | 
			
		||||
0:29            Constant:
 | 
			
		||||
0:29              0.100000
 | 
			
		||||
@ -182,9 +183,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:29              1 (const int)
 | 
			
		||||
0:29            Constant:
 | 
			
		||||
0:29              3 (const int)
 | 
			
		||||
0:30      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:30      move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:30        'iv4' (temp mediump 4-component vector of int)
 | 
			
		||||
0:30        textureGatherOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:30        textureGatherOffset (global highp 4-component vector of int)
 | 
			
		||||
0:30          'isamp2DA' (uniform highp isampler2DArray)
 | 
			
		||||
0:30          Constant:
 | 
			
		||||
0:30            0.100000
 | 
			
		||||
@ -194,9 +195,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:30            1 (const int)
 | 
			
		||||
0:30            1 (const int)
 | 
			
		||||
0:30          'i' (uniform mediump int)
 | 
			
		||||
0:31      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:31      move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:31        'iv4' (temp mediump 4-component vector of int)
 | 
			
		||||
0:31        textureGatherOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:31        textureGatherOffset (global highp 4-component vector of int)
 | 
			
		||||
0:31          'isamp2DA' (uniform highp isampler2DArray)
 | 
			
		||||
0:31          Constant:
 | 
			
		||||
0:31            0.100000
 | 
			
		||||
@ -207,9 +208,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:31            1 (const int)
 | 
			
		||||
0:31          Constant:
 | 
			
		||||
0:31            4 (const int)
 | 
			
		||||
0:32      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:32      move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:32        'iv4' (temp mediump 4-component vector of int)
 | 
			
		||||
0:32        textureGatherOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:32        textureGatherOffset (global highp 4-component vector of int)
 | 
			
		||||
0:32          'isamp2DA' (uniform highp isampler2DArray)
 | 
			
		||||
0:32          Constant:
 | 
			
		||||
0:32            0.100000
 | 
			
		||||
@ -220,9 +221,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:32            1 (const int)
 | 
			
		||||
0:32          Constant:
 | 
			
		||||
0:32            3 (const int)
 | 
			
		||||
0:33      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:33      move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:33        'iv4' (temp mediump 4-component vector of int)
 | 
			
		||||
0:33        textureGatherOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:33        textureGatherOffset (global highp 4-component vector of int)
 | 
			
		||||
0:33          'isamp2DA' (uniform highp isampler2DArray)
 | 
			
		||||
0:33          Constant:
 | 
			
		||||
0:33            0.100000
 | 
			
		||||
@ -231,20 +232,20 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:33          Constant:
 | 
			
		||||
0:33            0 (const int)
 | 
			
		||||
0:33            0 (const int)
 | 
			
		||||
0:34      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:34      move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:34        'iv4' (temp mediump 4-component vector of int)
 | 
			
		||||
0:34        textureGatherOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:34        textureGatherOffset (global highp 4-component vector of int)
 | 
			
		||||
0:34          'isamp2DA' (uniform highp isampler2DArray)
 | 
			
		||||
0:34          Constant:
 | 
			
		||||
0:34            0.100000
 | 
			
		||||
0:34            0.100000
 | 
			
		||||
0:34            0.100000
 | 
			
		||||
0:34          Construct ivec2 (temp mediump 2-component vector of int)
 | 
			
		||||
0:34          Construct ivec2 (temp highp 2-component vector of int)
 | 
			
		||||
0:34            'i' (uniform mediump int)
 | 
			
		||||
0:38  Function Definition: foo23( (global void)
 | 
			
		||||
0:38    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:42      textureProjGradOffset (global mediump 4-component vector of uint)
 | 
			
		||||
0:42      textureProjGradOffset (global highp 4-component vector of uint)
 | 
			
		||||
0:42        'usamp2d' (uniform highp usampler2D)
 | 
			
		||||
0:42        'outp' (out mediump 4-component vector of float)
 | 
			
		||||
0:42        Constant:
 | 
			
		||||
@ -253,9 +254,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:42        Constant:
 | 
			
		||||
0:42          0.000000
 | 
			
		||||
0:42          0.000000
 | 
			
		||||
0:42        Convert float to int (temp mediump 2-component vector of int)
 | 
			
		||||
0:42        Convert float to int (temp highp 2-component vector of int)
 | 
			
		||||
0:42          'c2D' (smooth in mediump 2-component vector of float)
 | 
			
		||||
0:43      textureProjGradOffset (global mediump 4-component vector of uint)
 | 
			
		||||
0:43      textureProjGradOffset (global highp 4-component vector of uint)
 | 
			
		||||
0:43        'usamp2d' (uniform highp usampler2D)
 | 
			
		||||
0:43        'outp' (out mediump 4-component vector of float)
 | 
			
		||||
0:43        Constant:
 | 
			
		||||
@ -267,7 +268,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:43        Constant:
 | 
			
		||||
0:43          3 (const int)
 | 
			
		||||
0:43          4 (const int)
 | 
			
		||||
0:44      textureProjGradOffset (global mediump 4-component vector of uint)
 | 
			
		||||
0:44      textureProjGradOffset (global highp 4-component vector of uint)
 | 
			
		||||
0:44        'usamp2d' (uniform highp usampler2D)
 | 
			
		||||
0:44        'outp' (out mediump 4-component vector of float)
 | 
			
		||||
0:44        Constant:
 | 
			
		||||
@ -279,7 +280,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:44        Constant:
 | 
			
		||||
0:44          15 (const int)
 | 
			
		||||
0:44          16 (const int)
 | 
			
		||||
0:45      textureProjGradOffset (global mediump 4-component vector of uint)
 | 
			
		||||
0:45      textureProjGradOffset (global highp 4-component vector of uint)
 | 
			
		||||
0:45        'usamp2d' (uniform highp usampler2D)
 | 
			
		||||
0:45        'outp' (out mediump 4-component vector of float)
 | 
			
		||||
0:45        Constant:
 | 
			
		||||
@ -431,11 +432,11 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:207    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:210      move second child to first child (temp mediump 2-component vector of float)
 | 
			
		||||
0:210        'h' (temp mediump 2-component vector of float)
 | 
			
		||||
0:210        'h' (noContraction temp mediump 2-component vector of float)
 | 
			
		||||
0:210        fma (global mediump 2-component vector of float)
 | 
			
		||||
0:210          'inf' (smooth in mediump 2-component vector of float)
 | 
			
		||||
0:210          'ing' (smooth in mediump 2-component vector of float)
 | 
			
		||||
0:210          'h' (temp mediump 2-component vector of float)
 | 
			
		||||
0:210          'h' (noContraction temp mediump 2-component vector of float)
 | 
			
		||||
0:211      textureGatherOffset (global highp 4-component vector of float)
 | 
			
		||||
0:211        direct index (temp highp sampler2D)
 | 
			
		||||
0:211          'sArray' (uniform 4-element array of highp sampler2D)
 | 
			
		||||
@ -467,11 +468,11 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:217    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:220      move second child to first child (temp mediump 2-component vector of float)
 | 
			
		||||
0:220        'h' (temp mediump 2-component vector of float)
 | 
			
		||||
0:220        'h' (noContraction temp mediump 2-component vector of float)
 | 
			
		||||
0:220        fma (global mediump 2-component vector of float)
 | 
			
		||||
0:220          'inf' (smooth in mediump 2-component vector of float)
 | 
			
		||||
0:220          'ing' (smooth in mediump 2-component vector of float)
 | 
			
		||||
0:220          'h' (temp mediump 2-component vector of float)
 | 
			
		||||
0:220          'h' (noContraction temp mediump 2-component vector of float)
 | 
			
		||||
0:221      textureGatherOffset (global highp 4-component vector of float)
 | 
			
		||||
0:221        direct index (temp highp sampler2D)
 | 
			
		||||
0:221          'sArray' (uniform 4-element array of highp sampler2D)
 | 
			
		||||
@ -526,7 +527,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:251      Sequence
 | 
			
		||||
0:251        move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:251          'b6' (temp highp 4-component vector of int)
 | 
			
		||||
0:251          texture (global mediump 4-component vector of int)
 | 
			
		||||
0:251          texture (global highp 4-component vector of int)
 | 
			
		||||
0:251            'CA6' (uniform highp isamplerCubeArray)
 | 
			
		||||
0:251            Constant:
 | 
			
		||||
0:251              0.500000
 | 
			
		||||
@ -538,7 +539,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:252      Sequence
 | 
			
		||||
0:252        move second child to first child (temp highp 4-component vector of uint)
 | 
			
		||||
0:252          'b7' (temp highp 4-component vector of uint)
 | 
			
		||||
0:252          texture (global mediump 4-component vector of uint)
 | 
			
		||||
0:252          texture (global highp 4-component vector of uint)
 | 
			
		||||
0:252            'CA7' (uniform highp usamplerCubeArray)
 | 
			
		||||
0:252            Constant:
 | 
			
		||||
0:252              0.500000
 | 
			
		||||
@ -611,59 +612,59 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:283  Function Definition: badImageAtom( (global void)
 | 
			
		||||
0:283    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:289      imageAtomicAdd (global mediump int)
 | 
			
		||||
0:289      imageAtomicAdd (global highp int)
 | 
			
		||||
0:289        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:289        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:289        'dati' (temp mediump int)
 | 
			
		||||
0:290      imageAtomicAdd (global mediump uint)
 | 
			
		||||
0:290      imageAtomicAdd (global highp uint)
 | 
			
		||||
0:290        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:290        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:290        'datu' (temp mediump uint)
 | 
			
		||||
0:291      imageAtomicMin (global mediump int)
 | 
			
		||||
0:291      imageAtomicMin (global highp int)
 | 
			
		||||
0:291        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:291        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:291        'dati' (temp mediump int)
 | 
			
		||||
0:292      imageAtomicMin (global mediump uint)
 | 
			
		||||
0:292      imageAtomicMin (global highp uint)
 | 
			
		||||
0:292        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:292        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:292        'datu' (temp mediump uint)
 | 
			
		||||
0:293      imageAtomicMax (global mediump int)
 | 
			
		||||
0:293      imageAtomicMax (global highp int)
 | 
			
		||||
0:293        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:293        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:293        'dati' (temp mediump int)
 | 
			
		||||
0:294      imageAtomicMax (global mediump uint)
 | 
			
		||||
0:294      imageAtomicMax (global highp uint)
 | 
			
		||||
0:294        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:294        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:294        'datu' (temp mediump uint)
 | 
			
		||||
0:295      imageAtomicAnd (global mediump int)
 | 
			
		||||
0:295      imageAtomicAnd (global highp int)
 | 
			
		||||
0:295        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:295        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:295        'dati' (temp mediump int)
 | 
			
		||||
0:296      imageAtomicAnd (global mediump uint)
 | 
			
		||||
0:296      imageAtomicAnd (global highp uint)
 | 
			
		||||
0:296        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:296        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:296        'datu' (temp mediump uint)
 | 
			
		||||
0:297      imageAtomicOr (global mediump int)
 | 
			
		||||
0:297      imageAtomicOr (global highp int)
 | 
			
		||||
0:297        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:297        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:297        'dati' (temp mediump int)
 | 
			
		||||
0:298      imageAtomicOr (global mediump uint)
 | 
			
		||||
0:298      imageAtomicOr (global highp uint)
 | 
			
		||||
0:298        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:298        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:298        'datu' (temp mediump uint)
 | 
			
		||||
0:299      imageAtomicXor (global mediump int)
 | 
			
		||||
0:299      imageAtomicXor (global highp int)
 | 
			
		||||
0:299        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:299        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:299        'dati' (temp mediump int)
 | 
			
		||||
0:300      imageAtomicXor (global mediump uint)
 | 
			
		||||
0:300      imageAtomicXor (global highp uint)
 | 
			
		||||
0:300        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:300        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:300        'datu' (temp mediump uint)
 | 
			
		||||
0:301      imageAtomicExchange (global mediump int)
 | 
			
		||||
0:301      imageAtomicExchange (global highp int)
 | 
			
		||||
0:301        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:301        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:301        'dati' (temp mediump int)
 | 
			
		||||
0:302      imageAtomicExchange (global mediump uint)
 | 
			
		||||
0:302      imageAtomicExchange (global highp uint)
 | 
			
		||||
0:302        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:302        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:302        'datu' (temp mediump uint)
 | 
			
		||||
@ -671,13 +672,13 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:303        'im2Df' (layout(r32f ) uniform highp image2D)
 | 
			
		||||
0:303        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:303        'datf' (temp mediump float)
 | 
			
		||||
0:304      imageAtomicCompSwap (global mediump int)
 | 
			
		||||
0:304      imageAtomicCompSwap (global highp int)
 | 
			
		||||
0:304        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:304        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:304        Constant:
 | 
			
		||||
0:304          3 (const int)
 | 
			
		||||
0:304        'dati' (temp mediump int)
 | 
			
		||||
0:305      imageAtomicCompSwap (global mediump uint)
 | 
			
		||||
0:305      imageAtomicCompSwap (global highp uint)
 | 
			
		||||
0:305        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:305        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:305        Constant:
 | 
			
		||||
@ -686,59 +687,59 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:316  Function Definition: goodImageAtom( (global void)
 | 
			
		||||
0:316    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:322      imageAtomicAdd (global mediump int)
 | 
			
		||||
0:322      imageAtomicAdd (global highp int)
 | 
			
		||||
0:322        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:322        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:322        'dati' (temp mediump int)
 | 
			
		||||
0:323      imageAtomicAdd (global mediump uint)
 | 
			
		||||
0:323      imageAtomicAdd (global highp uint)
 | 
			
		||||
0:323        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:323        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:323        'datu' (temp mediump uint)
 | 
			
		||||
0:324      imageAtomicMin (global mediump int)
 | 
			
		||||
0:324      imageAtomicMin (global highp int)
 | 
			
		||||
0:324        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:324        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:324        'dati' (temp mediump int)
 | 
			
		||||
0:325      imageAtomicMin (global mediump uint)
 | 
			
		||||
0:325      imageAtomicMin (global highp uint)
 | 
			
		||||
0:325        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:325        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:325        'datu' (temp mediump uint)
 | 
			
		||||
0:326      imageAtomicMax (global mediump int)
 | 
			
		||||
0:326      imageAtomicMax (global highp int)
 | 
			
		||||
0:326        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:326        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:326        'dati' (temp mediump int)
 | 
			
		||||
0:327      imageAtomicMax (global mediump uint)
 | 
			
		||||
0:327      imageAtomicMax (global highp uint)
 | 
			
		||||
0:327        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:327        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:327        'datu' (temp mediump uint)
 | 
			
		||||
0:328      imageAtomicAnd (global mediump int)
 | 
			
		||||
0:328      imageAtomicAnd (global highp int)
 | 
			
		||||
0:328        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:328        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:328        'dati' (temp mediump int)
 | 
			
		||||
0:329      imageAtomicAnd (global mediump uint)
 | 
			
		||||
0:329      imageAtomicAnd (global highp uint)
 | 
			
		||||
0:329        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:329        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:329        'datu' (temp mediump uint)
 | 
			
		||||
0:330      imageAtomicOr (global mediump int)
 | 
			
		||||
0:330      imageAtomicOr (global highp int)
 | 
			
		||||
0:330        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:330        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:330        'dati' (temp mediump int)
 | 
			
		||||
0:331      imageAtomicOr (global mediump uint)
 | 
			
		||||
0:331      imageAtomicOr (global highp uint)
 | 
			
		||||
0:331        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:331        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:331        'datu' (temp mediump uint)
 | 
			
		||||
0:332      imageAtomicXor (global mediump int)
 | 
			
		||||
0:332      imageAtomicXor (global highp int)
 | 
			
		||||
0:332        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:332        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:332        'dati' (temp mediump int)
 | 
			
		||||
0:333      imageAtomicXor (global mediump uint)
 | 
			
		||||
0:333      imageAtomicXor (global highp uint)
 | 
			
		||||
0:333        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:333        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:333        'datu' (temp mediump uint)
 | 
			
		||||
0:334      imageAtomicExchange (global mediump int)
 | 
			
		||||
0:334      imageAtomicExchange (global highp int)
 | 
			
		||||
0:334        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:334        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:334        'dati' (temp mediump int)
 | 
			
		||||
0:335      imageAtomicExchange (global mediump uint)
 | 
			
		||||
0:335      imageAtomicExchange (global highp uint)
 | 
			
		||||
0:335        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:335        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:335        'datu' (temp mediump uint)
 | 
			
		||||
@ -746,23 +747,23 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:336        'im2Df' (layout(r32f ) uniform highp image2D)
 | 
			
		||||
0:336        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:336        'datf' (temp mediump float)
 | 
			
		||||
0:337      imageAtomicCompSwap (global mediump int)
 | 
			
		||||
0:337      imageAtomicCompSwap (global highp int)
 | 
			
		||||
0:337        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:337        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:337        Constant:
 | 
			
		||||
0:337          3 (const int)
 | 
			
		||||
0:337        'dati' (temp mediump int)
 | 
			
		||||
0:338      imageAtomicCompSwap (global mediump uint)
 | 
			
		||||
0:338      imageAtomicCompSwap (global highp uint)
 | 
			
		||||
0:338        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:338        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:338        Constant:
 | 
			
		||||
0:338          5 (const uint)
 | 
			
		||||
0:338        'datu' (temp mediump uint)
 | 
			
		||||
0:340      imageAtomicMax (global mediump int)
 | 
			
		||||
0:340      imageAtomicMax (global highp int)
 | 
			
		||||
0:340        'badIm2Di' (layout(rgba16i ) uniform highp iimage2D)
 | 
			
		||||
0:340        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:340        'dati' (temp mediump int)
 | 
			
		||||
0:341      imageAtomicMax (global mediump uint)
 | 
			
		||||
0:341      imageAtomicMax (global highp uint)
 | 
			
		||||
0:341        'badIm2Du' (layout(rgba8ui ) uniform highp uimage2D)
 | 
			
		||||
0:341        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:341        'datu' (temp mediump uint)
 | 
			
		||||
@ -1050,9 +1051,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:28                0 (const int)
 | 
			
		||||
0:28            'c2D' (smooth in mediump 2-component vector of float)
 | 
			
		||||
0:29      Sequence
 | 
			
		||||
0:29        move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:29        move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:29          'iv4' (temp mediump 4-component vector of int)
 | 
			
		||||
0:29          textureGatherOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:29          textureGatherOffset (global highp 4-component vector of int)
 | 
			
		||||
0:29            'isamp2DA' (uniform highp isampler2DArray)
 | 
			
		||||
0:29            Constant:
 | 
			
		||||
0:29              0.100000
 | 
			
		||||
@ -1063,9 +1064,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:29              1 (const int)
 | 
			
		||||
0:29            Constant:
 | 
			
		||||
0:29              3 (const int)
 | 
			
		||||
0:30      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:30      move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:30        'iv4' (temp mediump 4-component vector of int)
 | 
			
		||||
0:30        textureGatherOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:30        textureGatherOffset (global highp 4-component vector of int)
 | 
			
		||||
0:30          'isamp2DA' (uniform highp isampler2DArray)
 | 
			
		||||
0:30          Constant:
 | 
			
		||||
0:30            0.100000
 | 
			
		||||
@ -1075,9 +1076,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:30            1 (const int)
 | 
			
		||||
0:30            1 (const int)
 | 
			
		||||
0:30          'i' (uniform mediump int)
 | 
			
		||||
0:31      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:31      move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:31        'iv4' (temp mediump 4-component vector of int)
 | 
			
		||||
0:31        textureGatherOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:31        textureGatherOffset (global highp 4-component vector of int)
 | 
			
		||||
0:31          'isamp2DA' (uniform highp isampler2DArray)
 | 
			
		||||
0:31          Constant:
 | 
			
		||||
0:31            0.100000
 | 
			
		||||
@ -1088,9 +1089,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:31            1 (const int)
 | 
			
		||||
0:31          Constant:
 | 
			
		||||
0:31            4 (const int)
 | 
			
		||||
0:32      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:32      move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:32        'iv4' (temp mediump 4-component vector of int)
 | 
			
		||||
0:32        textureGatherOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:32        textureGatherOffset (global highp 4-component vector of int)
 | 
			
		||||
0:32          'isamp2DA' (uniform highp isampler2DArray)
 | 
			
		||||
0:32          Constant:
 | 
			
		||||
0:32            0.100000
 | 
			
		||||
@ -1101,9 +1102,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:32            1 (const int)
 | 
			
		||||
0:32          Constant:
 | 
			
		||||
0:32            3 (const int)
 | 
			
		||||
0:33      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:33      move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:33        'iv4' (temp mediump 4-component vector of int)
 | 
			
		||||
0:33        textureGatherOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:33        textureGatherOffset (global highp 4-component vector of int)
 | 
			
		||||
0:33          'isamp2DA' (uniform highp isampler2DArray)
 | 
			
		||||
0:33          Constant:
 | 
			
		||||
0:33            0.100000
 | 
			
		||||
@ -1112,20 +1113,20 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:33          Constant:
 | 
			
		||||
0:33            0 (const int)
 | 
			
		||||
0:33            0 (const int)
 | 
			
		||||
0:34      move second child to first child (temp mediump 4-component vector of int)
 | 
			
		||||
0:34      move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:34        'iv4' (temp mediump 4-component vector of int)
 | 
			
		||||
0:34        textureGatherOffset (global mediump 4-component vector of int)
 | 
			
		||||
0:34        textureGatherOffset (global highp 4-component vector of int)
 | 
			
		||||
0:34          'isamp2DA' (uniform highp isampler2DArray)
 | 
			
		||||
0:34          Constant:
 | 
			
		||||
0:34            0.100000
 | 
			
		||||
0:34            0.100000
 | 
			
		||||
0:34            0.100000
 | 
			
		||||
0:34          Construct ivec2 (temp mediump 2-component vector of int)
 | 
			
		||||
0:34          Construct ivec2 (temp highp 2-component vector of int)
 | 
			
		||||
0:34            'i' (uniform mediump int)
 | 
			
		||||
0:38  Function Definition: foo23( (global void)
 | 
			
		||||
0:38    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:42      textureProjGradOffset (global mediump 4-component vector of uint)
 | 
			
		||||
0:42      textureProjGradOffset (global highp 4-component vector of uint)
 | 
			
		||||
0:42        'usamp2d' (uniform highp usampler2D)
 | 
			
		||||
0:42        'outp' (out mediump 4-component vector of float)
 | 
			
		||||
0:42        Constant:
 | 
			
		||||
@ -1134,9 +1135,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:42        Constant:
 | 
			
		||||
0:42          0.000000
 | 
			
		||||
0:42          0.000000
 | 
			
		||||
0:42        Convert float to int (temp mediump 2-component vector of int)
 | 
			
		||||
0:42        Convert float to int (temp highp 2-component vector of int)
 | 
			
		||||
0:42          'c2D' (smooth in mediump 2-component vector of float)
 | 
			
		||||
0:43      textureProjGradOffset (global mediump 4-component vector of uint)
 | 
			
		||||
0:43      textureProjGradOffset (global highp 4-component vector of uint)
 | 
			
		||||
0:43        'usamp2d' (uniform highp usampler2D)
 | 
			
		||||
0:43        'outp' (out mediump 4-component vector of float)
 | 
			
		||||
0:43        Constant:
 | 
			
		||||
@ -1148,7 +1149,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:43        Constant:
 | 
			
		||||
0:43          3 (const int)
 | 
			
		||||
0:43          4 (const int)
 | 
			
		||||
0:44      textureProjGradOffset (global mediump 4-component vector of uint)
 | 
			
		||||
0:44      textureProjGradOffset (global highp 4-component vector of uint)
 | 
			
		||||
0:44        'usamp2d' (uniform highp usampler2D)
 | 
			
		||||
0:44        'outp' (out mediump 4-component vector of float)
 | 
			
		||||
0:44        Constant:
 | 
			
		||||
@ -1160,7 +1161,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:44        Constant:
 | 
			
		||||
0:44          15 (const int)
 | 
			
		||||
0:44          16 (const int)
 | 
			
		||||
0:45      textureProjGradOffset (global mediump 4-component vector of uint)
 | 
			
		||||
0:45      textureProjGradOffset (global highp 4-component vector of uint)
 | 
			
		||||
0:45        'usamp2d' (uniform highp usampler2D)
 | 
			
		||||
0:45        'outp' (out mediump 4-component vector of float)
 | 
			
		||||
0:45        Constant:
 | 
			
		||||
@ -1312,11 +1313,11 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:207    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:210      move second child to first child (temp mediump 2-component vector of float)
 | 
			
		||||
0:210        'h' (temp mediump 2-component vector of float)
 | 
			
		||||
0:210        'h' (noContraction temp mediump 2-component vector of float)
 | 
			
		||||
0:210        fma (global mediump 2-component vector of float)
 | 
			
		||||
0:210          'inf' (smooth in mediump 2-component vector of float)
 | 
			
		||||
0:210          'ing' (smooth in mediump 2-component vector of float)
 | 
			
		||||
0:210          'h' (temp mediump 2-component vector of float)
 | 
			
		||||
0:210          'h' (noContraction temp mediump 2-component vector of float)
 | 
			
		||||
0:211      textureGatherOffset (global highp 4-component vector of float)
 | 
			
		||||
0:211        direct index (temp highp sampler2D)
 | 
			
		||||
0:211          'sArray' (uniform 4-element array of highp sampler2D)
 | 
			
		||||
@ -1348,11 +1349,11 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:217    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:220      move second child to first child (temp mediump 2-component vector of float)
 | 
			
		||||
0:220        'h' (temp mediump 2-component vector of float)
 | 
			
		||||
0:220        'h' (noContraction temp mediump 2-component vector of float)
 | 
			
		||||
0:220        fma (global mediump 2-component vector of float)
 | 
			
		||||
0:220          'inf' (smooth in mediump 2-component vector of float)
 | 
			
		||||
0:220          'ing' (smooth in mediump 2-component vector of float)
 | 
			
		||||
0:220          'h' (temp mediump 2-component vector of float)
 | 
			
		||||
0:220          'h' (noContraction temp mediump 2-component vector of float)
 | 
			
		||||
0:221      textureGatherOffset (global highp 4-component vector of float)
 | 
			
		||||
0:221        direct index (temp highp sampler2D)
 | 
			
		||||
0:221          'sArray' (uniform 4-element array of highp sampler2D)
 | 
			
		||||
@ -1407,7 +1408,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:251      Sequence
 | 
			
		||||
0:251        move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:251          'b6' (temp highp 4-component vector of int)
 | 
			
		||||
0:251          texture (global mediump 4-component vector of int)
 | 
			
		||||
0:251          texture (global highp 4-component vector of int)
 | 
			
		||||
0:251            'CA6' (uniform highp isamplerCubeArray)
 | 
			
		||||
0:251            Constant:
 | 
			
		||||
0:251              0.500000
 | 
			
		||||
@ -1419,7 +1420,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:252      Sequence
 | 
			
		||||
0:252        move second child to first child (temp highp 4-component vector of uint)
 | 
			
		||||
0:252          'b7' (temp highp 4-component vector of uint)
 | 
			
		||||
0:252          texture (global mediump 4-component vector of uint)
 | 
			
		||||
0:252          texture (global highp 4-component vector of uint)
 | 
			
		||||
0:252            'CA7' (uniform highp usamplerCubeArray)
 | 
			
		||||
0:252            Constant:
 | 
			
		||||
0:252              0.500000
 | 
			
		||||
@ -1492,59 +1493,59 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:283  Function Definition: badImageAtom( (global void)
 | 
			
		||||
0:283    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:289      imageAtomicAdd (global mediump int)
 | 
			
		||||
0:289      imageAtomicAdd (global highp int)
 | 
			
		||||
0:289        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:289        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:289        'dati' (temp mediump int)
 | 
			
		||||
0:290      imageAtomicAdd (global mediump uint)
 | 
			
		||||
0:290      imageAtomicAdd (global highp uint)
 | 
			
		||||
0:290        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:290        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:290        'datu' (temp mediump uint)
 | 
			
		||||
0:291      imageAtomicMin (global mediump int)
 | 
			
		||||
0:291      imageAtomicMin (global highp int)
 | 
			
		||||
0:291        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:291        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:291        'dati' (temp mediump int)
 | 
			
		||||
0:292      imageAtomicMin (global mediump uint)
 | 
			
		||||
0:292      imageAtomicMin (global highp uint)
 | 
			
		||||
0:292        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:292        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:292        'datu' (temp mediump uint)
 | 
			
		||||
0:293      imageAtomicMax (global mediump int)
 | 
			
		||||
0:293      imageAtomicMax (global highp int)
 | 
			
		||||
0:293        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:293        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:293        'dati' (temp mediump int)
 | 
			
		||||
0:294      imageAtomicMax (global mediump uint)
 | 
			
		||||
0:294      imageAtomicMax (global highp uint)
 | 
			
		||||
0:294        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:294        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:294        'datu' (temp mediump uint)
 | 
			
		||||
0:295      imageAtomicAnd (global mediump int)
 | 
			
		||||
0:295      imageAtomicAnd (global highp int)
 | 
			
		||||
0:295        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:295        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:295        'dati' (temp mediump int)
 | 
			
		||||
0:296      imageAtomicAnd (global mediump uint)
 | 
			
		||||
0:296      imageAtomicAnd (global highp uint)
 | 
			
		||||
0:296        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:296        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:296        'datu' (temp mediump uint)
 | 
			
		||||
0:297      imageAtomicOr (global mediump int)
 | 
			
		||||
0:297      imageAtomicOr (global highp int)
 | 
			
		||||
0:297        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:297        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:297        'dati' (temp mediump int)
 | 
			
		||||
0:298      imageAtomicOr (global mediump uint)
 | 
			
		||||
0:298      imageAtomicOr (global highp uint)
 | 
			
		||||
0:298        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:298        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:298        'datu' (temp mediump uint)
 | 
			
		||||
0:299      imageAtomicXor (global mediump int)
 | 
			
		||||
0:299      imageAtomicXor (global highp int)
 | 
			
		||||
0:299        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:299        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:299        'dati' (temp mediump int)
 | 
			
		||||
0:300      imageAtomicXor (global mediump uint)
 | 
			
		||||
0:300      imageAtomicXor (global highp uint)
 | 
			
		||||
0:300        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:300        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:300        'datu' (temp mediump uint)
 | 
			
		||||
0:301      imageAtomicExchange (global mediump int)
 | 
			
		||||
0:301      imageAtomicExchange (global highp int)
 | 
			
		||||
0:301        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:301        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:301        'dati' (temp mediump int)
 | 
			
		||||
0:302      imageAtomicExchange (global mediump uint)
 | 
			
		||||
0:302      imageAtomicExchange (global highp uint)
 | 
			
		||||
0:302        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:302        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:302        'datu' (temp mediump uint)
 | 
			
		||||
@ -1552,13 +1553,13 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:303        'im2Df' (layout(r32f ) uniform highp image2D)
 | 
			
		||||
0:303        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:303        'datf' (temp mediump float)
 | 
			
		||||
0:304      imageAtomicCompSwap (global mediump int)
 | 
			
		||||
0:304      imageAtomicCompSwap (global highp int)
 | 
			
		||||
0:304        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:304        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:304        Constant:
 | 
			
		||||
0:304          3 (const int)
 | 
			
		||||
0:304        'dati' (temp mediump int)
 | 
			
		||||
0:305      imageAtomicCompSwap (global mediump uint)
 | 
			
		||||
0:305      imageAtomicCompSwap (global highp uint)
 | 
			
		||||
0:305        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:305        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:305        Constant:
 | 
			
		||||
@ -1567,59 +1568,59 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:316  Function Definition: goodImageAtom( (global void)
 | 
			
		||||
0:316    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:322      imageAtomicAdd (global mediump int)
 | 
			
		||||
0:322      imageAtomicAdd (global highp int)
 | 
			
		||||
0:322        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:322        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:322        'dati' (temp mediump int)
 | 
			
		||||
0:323      imageAtomicAdd (global mediump uint)
 | 
			
		||||
0:323      imageAtomicAdd (global highp uint)
 | 
			
		||||
0:323        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:323        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:323        'datu' (temp mediump uint)
 | 
			
		||||
0:324      imageAtomicMin (global mediump int)
 | 
			
		||||
0:324      imageAtomicMin (global highp int)
 | 
			
		||||
0:324        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:324        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:324        'dati' (temp mediump int)
 | 
			
		||||
0:325      imageAtomicMin (global mediump uint)
 | 
			
		||||
0:325      imageAtomicMin (global highp uint)
 | 
			
		||||
0:325        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:325        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:325        'datu' (temp mediump uint)
 | 
			
		||||
0:326      imageAtomicMax (global mediump int)
 | 
			
		||||
0:326      imageAtomicMax (global highp int)
 | 
			
		||||
0:326        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:326        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:326        'dati' (temp mediump int)
 | 
			
		||||
0:327      imageAtomicMax (global mediump uint)
 | 
			
		||||
0:327      imageAtomicMax (global highp uint)
 | 
			
		||||
0:327        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:327        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:327        'datu' (temp mediump uint)
 | 
			
		||||
0:328      imageAtomicAnd (global mediump int)
 | 
			
		||||
0:328      imageAtomicAnd (global highp int)
 | 
			
		||||
0:328        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:328        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:328        'dati' (temp mediump int)
 | 
			
		||||
0:329      imageAtomicAnd (global mediump uint)
 | 
			
		||||
0:329      imageAtomicAnd (global highp uint)
 | 
			
		||||
0:329        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:329        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:329        'datu' (temp mediump uint)
 | 
			
		||||
0:330      imageAtomicOr (global mediump int)
 | 
			
		||||
0:330      imageAtomicOr (global highp int)
 | 
			
		||||
0:330        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:330        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:330        'dati' (temp mediump int)
 | 
			
		||||
0:331      imageAtomicOr (global mediump uint)
 | 
			
		||||
0:331      imageAtomicOr (global highp uint)
 | 
			
		||||
0:331        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:331        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:331        'datu' (temp mediump uint)
 | 
			
		||||
0:332      imageAtomicXor (global mediump int)
 | 
			
		||||
0:332      imageAtomicXor (global highp int)
 | 
			
		||||
0:332        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:332        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:332        'dati' (temp mediump int)
 | 
			
		||||
0:333      imageAtomicXor (global mediump uint)
 | 
			
		||||
0:333      imageAtomicXor (global highp uint)
 | 
			
		||||
0:333        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:333        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:333        'datu' (temp mediump uint)
 | 
			
		||||
0:334      imageAtomicExchange (global mediump int)
 | 
			
		||||
0:334      imageAtomicExchange (global highp int)
 | 
			
		||||
0:334        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:334        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:334        'dati' (temp mediump int)
 | 
			
		||||
0:335      imageAtomicExchange (global mediump uint)
 | 
			
		||||
0:335      imageAtomicExchange (global highp uint)
 | 
			
		||||
0:335        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:335        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:335        'datu' (temp mediump uint)
 | 
			
		||||
@ -1627,23 +1628,23 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:336        'im2Df' (layout(r32f ) uniform highp image2D)
 | 
			
		||||
0:336        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:336        'datf' (temp mediump float)
 | 
			
		||||
0:337      imageAtomicCompSwap (global mediump int)
 | 
			
		||||
0:337      imageAtomicCompSwap (global highp int)
 | 
			
		||||
0:337        'im2Di' (layout(r32i ) uniform highp iimage2D)
 | 
			
		||||
0:337        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:337        Constant:
 | 
			
		||||
0:337          3 (const int)
 | 
			
		||||
0:337        'dati' (temp mediump int)
 | 
			
		||||
0:338      imageAtomicCompSwap (global mediump uint)
 | 
			
		||||
0:338      imageAtomicCompSwap (global highp uint)
 | 
			
		||||
0:338        'im2Du' (layout(r32ui ) uniform highp uimage2D)
 | 
			
		||||
0:338        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:338        Constant:
 | 
			
		||||
0:338          5 (const uint)
 | 
			
		||||
0:338        'datu' (temp mediump uint)
 | 
			
		||||
0:340      imageAtomicMax (global mediump int)
 | 
			
		||||
0:340      imageAtomicMax (global highp int)
 | 
			
		||||
0:340        'badIm2Di' (layout(rgba16i ) uniform highp iimage2D)
 | 
			
		||||
0:340        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:340        'dati' (temp mediump int)
 | 
			
		||||
0:341      imageAtomicMax (global mediump uint)
 | 
			
		||||
0:341      imageAtomicMax (global highp uint)
 | 
			
		||||
0:341        'badIm2Du' (layout(rgba8ui ) uniform highp uimage2D)
 | 
			
		||||
0:341        'P' (uniform mediump 2-component vector of int)
 | 
			
		||||
0:341        'datu' (temp mediump uint)
 | 
			
		||||
 | 
			
		||||
@ -31,6 +31,7 @@ ERROR: 0:80: '' : array size required
 | 
			
		||||
ERROR: 0:86: 'location' : overlapping use of location 4
 | 
			
		||||
ERROR: 0:90: 'location' : overlapping use of location 4
 | 
			
		||||
ERROR: 0:94: 'precise' : Reserved word. 
 | 
			
		||||
ERROR: 0:94: 'precise' : not supported for this version or the enabled extensions 
 | 
			
		||||
ERROR: 0:95: 'fma' : required extension not requested: Possible extensions include:
 | 
			
		||||
GL_EXT_gpu_shader5
 | 
			
		||||
GL_OES_gpu_shader5
 | 
			
		||||
@ -45,7 +46,7 @@ ERROR: 0:145: '' : array size required
 | 
			
		||||
ERROR: 0:161: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID 
 | 
			
		||||
ERROR: 0:162: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID 
 | 
			
		||||
ERROR: 0:165: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID 
 | 
			
		||||
ERROR: 37 compilation errors.  No code generated.
 | 
			
		||||
ERROR: 38 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 310
 | 
			
		||||
@ -197,11 +198,11 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:92    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:95      move second child to first child (temp highp float)
 | 
			
		||||
0:95        'd' (temp highp float)
 | 
			
		||||
0:95        'd' (noContraction temp highp float)
 | 
			
		||||
0:95        fma (global highp float)
 | 
			
		||||
0:95          'd' (temp highp float)
 | 
			
		||||
0:95          'd' (temp highp float)
 | 
			
		||||
0:95          'd' (temp highp float)
 | 
			
		||||
0:95          'd' (noContraction temp highp float)
 | 
			
		||||
0:95          'd' (noContraction temp highp float)
 | 
			
		||||
0:95          'd' (noContraction temp highp float)
 | 
			
		||||
0:112  Function Definition: pointSize2( (global void)
 | 
			
		||||
0:112    Function Parameters: 
 | 
			
		||||
0:114    Sequence
 | 
			
		||||
@ -227,20 +228,20 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:122    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:126      multiply second child into first child (temp highp 3-component vector of float)
 | 
			
		||||
0:126        'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:126        'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:126        'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:126        'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:127      move second child to first child (temp highp 3-component vector of float)
 | 
			
		||||
0:127        'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:127        'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:127        fma (global highp 3-component vector of float)
 | 
			
		||||
0:127          'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:127          'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:127          'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:127          'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:127          'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:127          'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:128      move second child to first child (temp highp float)
 | 
			
		||||
0:128        'd' (temp highp float)
 | 
			
		||||
0:128        'd' (noContraction temp highp float)
 | 
			
		||||
0:128        fma (global highp float)
 | 
			
		||||
0:128          'd' (temp highp float)
 | 
			
		||||
0:128          'd' (temp highp float)
 | 
			
		||||
0:128          'd' (temp highp float)
 | 
			
		||||
0:128          'd' (noContraction temp highp float)
 | 
			
		||||
0:128          'd' (noContraction temp highp float)
 | 
			
		||||
0:128          'd' (noContraction temp highp float)
 | 
			
		||||
0:131  Function Definition: bbBad( (global void)
 | 
			
		||||
0:131    Function Parameters: 
 | 
			
		||||
0:133    Sequence
 | 
			
		||||
@ -371,7 +372,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'badlay' (out 4-element array of highp float)
 | 
			
		||||
0:?     'misSized' (out 5-element array of highp float)
 | 
			
		||||
0:?     'okaySize' (out 4-element array of highp float)
 | 
			
		||||
0:?     'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:?     'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:?     'badpatchIName' (patch out implicitly-sized array of block{out highp float f})
 | 
			
		||||
0:?     'patchIName' (patch out 4-element array of block{out highp float f})
 | 
			
		||||
 | 
			
		||||
@ -528,11 +529,11 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:92    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:95      move second child to first child (temp highp float)
 | 
			
		||||
0:95        'd' (temp highp float)
 | 
			
		||||
0:95        'd' (noContraction temp highp float)
 | 
			
		||||
0:95        fma (global highp float)
 | 
			
		||||
0:95          'd' (temp highp float)
 | 
			
		||||
0:95          'd' (temp highp float)
 | 
			
		||||
0:95          'd' (temp highp float)
 | 
			
		||||
0:95          'd' (noContraction temp highp float)
 | 
			
		||||
0:95          'd' (noContraction temp highp float)
 | 
			
		||||
0:95          'd' (noContraction temp highp float)
 | 
			
		||||
0:112  Function Definition: pointSize2( (global void)
 | 
			
		||||
0:112    Function Parameters: 
 | 
			
		||||
0:114    Sequence
 | 
			
		||||
@ -558,20 +559,20 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:122    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:126      multiply second child into first child (temp highp 3-component vector of float)
 | 
			
		||||
0:126        'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:126        'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:126        'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:126        'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:127      move second child to first child (temp highp 3-component vector of float)
 | 
			
		||||
0:127        'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:127        'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:127        fma (global highp 3-component vector of float)
 | 
			
		||||
0:127          'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:127          'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:127          'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:127          'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:127          'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:127          'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:128      move second child to first child (temp highp float)
 | 
			
		||||
0:128        'd' (temp highp float)
 | 
			
		||||
0:128        'd' (noContraction temp highp float)
 | 
			
		||||
0:128        fma (global highp float)
 | 
			
		||||
0:128          'd' (temp highp float)
 | 
			
		||||
0:128          'd' (temp highp float)
 | 
			
		||||
0:128          'd' (temp highp float)
 | 
			
		||||
0:128          'd' (noContraction temp highp float)
 | 
			
		||||
0:128          'd' (noContraction temp highp float)
 | 
			
		||||
0:128          'd' (noContraction temp highp float)
 | 
			
		||||
0:131  Function Definition: bbBad( (global void)
 | 
			
		||||
0:131    Function Parameters: 
 | 
			
		||||
0:133    Sequence
 | 
			
		||||
@ -702,7 +703,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'badlay' (out 4-element array of highp float)
 | 
			
		||||
0:?     'misSized' (out 5-element array of highp float)
 | 
			
		||||
0:?     'okaySize' (out 4-element array of highp float)
 | 
			
		||||
0:?     'pv3' (temp highp 3-component vector of float)
 | 
			
		||||
0:?     'pv3' (noContraction temp highp 3-component vector of float)
 | 
			
		||||
0:?     'badpatchIName' (patch out 1-element array of block{out highp float f})
 | 
			
		||||
0:?     'patchIName' (patch out 4-element array of block{out highp float f})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -29,6 +29,7 @@ ERROR: 0:131: 'flat/smooth/noperspective' : cannot use interpolation qualifiers
 | 
			
		||||
ERROR: 0:135: 'centroid' : cannot use centroid qualifier on an interface block 
 | 
			
		||||
ERROR: 0:139: 'invariant' : cannot use invariant qualifier on an interface block 
 | 
			
		||||
ERROR: 0:155: 'precise' : Reserved word. 
 | 
			
		||||
ERROR: 0:155: 'precise' : not supported for this version or the enabled extensions 
 | 
			
		||||
ERROR: 0:156: 'fma' : required extension not requested: Possible extensions include:
 | 
			
		||||
GL_EXT_gpu_shader5
 | 
			
		||||
GL_OES_gpu_shader5
 | 
			
		||||
@ -96,7 +97,7 @@ ERROR: 0:389: 'sample' : Reserved word.
 | 
			
		||||
ERROR: 0:400: 'interpolateAtCentroid' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:401: 'interpolateAtSample' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:402: 'interpolateAtOffset' : no matching overloaded function found 
 | 
			
		||||
ERROR: 92 compilation errors.  No code generated.
 | 
			
		||||
ERROR: 93 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 310
 | 
			
		||||
@ -178,27 +179,27 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:31          'u4' (temp highp 4-component vector of uint)
 | 
			
		||||
0:32      move second child to first child (temp highp int)
 | 
			
		||||
0:32        'i1' (temp highp int)
 | 
			
		||||
0:32        bitCount (global highp int)
 | 
			
		||||
0:32        bitCount (global lowp int)
 | 
			
		||||
0:32          'i1' (temp highp int)
 | 
			
		||||
0:33      move second child to first child (temp highp 3-component vector of int)
 | 
			
		||||
0:33        'i3' (temp highp 3-component vector of int)
 | 
			
		||||
0:33        bitCount (global highp 3-component vector of int)
 | 
			
		||||
0:33        bitCount (global lowp 3-component vector of int)
 | 
			
		||||
0:33          'u3' (temp highp 3-component vector of uint)
 | 
			
		||||
0:34      move second child to first child (temp highp 2-component vector of int)
 | 
			
		||||
0:34        'i2' (temp highp 2-component vector of int)
 | 
			
		||||
0:34        findLSB (global highp 2-component vector of int)
 | 
			
		||||
0:34        findLSB (global lowp 2-component vector of int)
 | 
			
		||||
0:34          'i2' (temp highp 2-component vector of int)
 | 
			
		||||
0:35      move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:35        'i4' (temp highp 4-component vector of int)
 | 
			
		||||
0:35        findLSB (global highp 4-component vector of int)
 | 
			
		||||
0:35        findLSB (global lowp 4-component vector of int)
 | 
			
		||||
0:35          'u4' (temp highp 4-component vector of uint)
 | 
			
		||||
0:36      move second child to first child (temp highp int)
 | 
			
		||||
0:36        'i1' (temp highp int)
 | 
			
		||||
0:36        findMSB (global highp int)
 | 
			
		||||
0:36        findMSB (global lowp int)
 | 
			
		||||
0:36          'i1' (temp highp int)
 | 
			
		||||
0:37      move second child to first child (temp highp 2-component vector of int)
 | 
			
		||||
0:37        'i2' (temp highp 2-component vector of int)
 | 
			
		||||
0:37        findMSB (global highp 2-component vector of int)
 | 
			
		||||
0:37        findMSB (global lowp 2-component vector of int)
 | 
			
		||||
0:37          'u2' (temp highp 2-component vector of uint)
 | 
			
		||||
0:40      move second child to first child (temp highp 3-component vector of float)
 | 
			
		||||
0:40        'v3' (temp highp 3-component vector of float)
 | 
			
		||||
@ -285,11 +286,11 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:153    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:156      move second child to first child (temp highp 2-component vector of float)
 | 
			
		||||
0:156        'h' (temp highp 2-component vector of float)
 | 
			
		||||
0:156        'h' (noContraction temp highp 2-component vector of float)
 | 
			
		||||
0:156        fma (global highp 2-component vector of float)
 | 
			
		||||
0:156          'inf' (in highp 2-component vector of float)
 | 
			
		||||
0:156          'ing' (in highp 2-component vector of float)
 | 
			
		||||
0:156          'h' (temp highp 2-component vector of float)
 | 
			
		||||
0:156          'h' (noContraction temp highp 2-component vector of float)
 | 
			
		||||
0:157      indirect index (temp highp sampler2D)
 | 
			
		||||
0:157        'sArray' (uniform 4-element array of highp sampler2D)
 | 
			
		||||
0:157        add (temp highp int)
 | 
			
		||||
@ -360,11 +361,11 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:171    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:174      move second child to first child (temp highp 2-component vector of float)
 | 
			
		||||
0:174        'h' (temp highp 2-component vector of float)
 | 
			
		||||
0:174        'h' (noContraction temp highp 2-component vector of float)
 | 
			
		||||
0:174        fma (global highp 2-component vector of float)
 | 
			
		||||
0:174          'inf' (in highp 2-component vector of float)
 | 
			
		||||
0:174          'ing' (in highp 2-component vector of float)
 | 
			
		||||
0:174          'h' (temp highp 2-component vector of float)
 | 
			
		||||
0:174          'h' (noContraction temp highp 2-component vector of float)
 | 
			
		||||
0:175      indirect index (temp highp sampler2D)
 | 
			
		||||
0:175        'sArray' (uniform 4-element array of highp sampler2D)
 | 
			
		||||
0:175        add (temp highp int)
 | 
			
		||||
@ -1109,27 +1110,27 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:31          'u4' (temp highp 4-component vector of uint)
 | 
			
		||||
0:32      move second child to first child (temp highp int)
 | 
			
		||||
0:32        'i1' (temp highp int)
 | 
			
		||||
0:32        bitCount (global highp int)
 | 
			
		||||
0:32        bitCount (global lowp int)
 | 
			
		||||
0:32          'i1' (temp highp int)
 | 
			
		||||
0:33      move second child to first child (temp highp 3-component vector of int)
 | 
			
		||||
0:33        'i3' (temp highp 3-component vector of int)
 | 
			
		||||
0:33        bitCount (global highp 3-component vector of int)
 | 
			
		||||
0:33        bitCount (global lowp 3-component vector of int)
 | 
			
		||||
0:33          'u3' (temp highp 3-component vector of uint)
 | 
			
		||||
0:34      move second child to first child (temp highp 2-component vector of int)
 | 
			
		||||
0:34        'i2' (temp highp 2-component vector of int)
 | 
			
		||||
0:34        findLSB (global highp 2-component vector of int)
 | 
			
		||||
0:34        findLSB (global lowp 2-component vector of int)
 | 
			
		||||
0:34          'i2' (temp highp 2-component vector of int)
 | 
			
		||||
0:35      move second child to first child (temp highp 4-component vector of int)
 | 
			
		||||
0:35        'i4' (temp highp 4-component vector of int)
 | 
			
		||||
0:35        findLSB (global highp 4-component vector of int)
 | 
			
		||||
0:35        findLSB (global lowp 4-component vector of int)
 | 
			
		||||
0:35          'u4' (temp highp 4-component vector of uint)
 | 
			
		||||
0:36      move second child to first child (temp highp int)
 | 
			
		||||
0:36        'i1' (temp highp int)
 | 
			
		||||
0:36        findMSB (global highp int)
 | 
			
		||||
0:36        findMSB (global lowp int)
 | 
			
		||||
0:36          'i1' (temp highp int)
 | 
			
		||||
0:37      move second child to first child (temp highp 2-component vector of int)
 | 
			
		||||
0:37        'i2' (temp highp 2-component vector of int)
 | 
			
		||||
0:37        findMSB (global highp 2-component vector of int)
 | 
			
		||||
0:37        findMSB (global lowp 2-component vector of int)
 | 
			
		||||
0:37          'u2' (temp highp 2-component vector of uint)
 | 
			
		||||
0:40      move second child to first child (temp highp 3-component vector of float)
 | 
			
		||||
0:40        'v3' (temp highp 3-component vector of float)
 | 
			
		||||
@ -1216,11 +1217,11 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:153    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:156      move second child to first child (temp highp 2-component vector of float)
 | 
			
		||||
0:156        'h' (temp highp 2-component vector of float)
 | 
			
		||||
0:156        'h' (noContraction temp highp 2-component vector of float)
 | 
			
		||||
0:156        fma (global highp 2-component vector of float)
 | 
			
		||||
0:156          'inf' (in highp 2-component vector of float)
 | 
			
		||||
0:156          'ing' (in highp 2-component vector of float)
 | 
			
		||||
0:156          'h' (temp highp 2-component vector of float)
 | 
			
		||||
0:156          'h' (noContraction temp highp 2-component vector of float)
 | 
			
		||||
0:157      indirect index (temp highp sampler2D)
 | 
			
		||||
0:157        'sArray' (uniform 4-element array of highp sampler2D)
 | 
			
		||||
0:157        add (temp highp int)
 | 
			
		||||
@ -1291,11 +1292,11 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:171    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:174      move second child to first child (temp highp 2-component vector of float)
 | 
			
		||||
0:174        'h' (temp highp 2-component vector of float)
 | 
			
		||||
0:174        'h' (noContraction temp highp 2-component vector of float)
 | 
			
		||||
0:174        fma (global highp 2-component vector of float)
 | 
			
		||||
0:174          'inf' (in highp 2-component vector of float)
 | 
			
		||||
0:174          'ing' (in highp 2-component vector of float)
 | 
			
		||||
0:174          'h' (temp highp 2-component vector of float)
 | 
			
		||||
0:174          'h' (noContraction temp highp 2-component vector of float)
 | 
			
		||||
0:175      indirect index (temp highp sampler2D)
 | 
			
		||||
0:175        'sArray' (uniform 4-element array of highp sampler2D)
 | 
			
		||||
0:175        add (temp highp int)
 | 
			
		||||
 | 
			
		||||
@ -37,7 +37,8 @@ ERROR: 0:140: 'textureQueryLod' : no matching overloaded function found
 | 
			
		||||
ERROR: 0:140: 'assign' :  cannot convert from 'const float' to 'temp 2-component vector of float'
 | 
			
		||||
ERROR: 0:141: 'textureQueryLod' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:141: 'assign' :  cannot convert from 'const float' to 'temp 2-component vector of float'
 | 
			
		||||
ERROR: 38 compilation errors.  No code generated.
 | 
			
		||||
ERROR: 0:152: 'index' : value must be 0 or 1 
 | 
			
		||||
ERROR: 39 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 330
 | 
			
		||||
@ -122,6 +123,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'samp2Ds' (uniform sampler2DShadow)
 | 
			
		||||
0:?     'precise' (global int)
 | 
			
		||||
0:?     'KeyMem' (global structure{global int precise})
 | 
			
		||||
0:?     'outIndex2' (layout(location=28 index=0 ) out 4-component vector of float)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
@ -211,4 +213,5 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'samp2Ds' (uniform sampler2DShadow)
 | 
			
		||||
0:?     'precise' (global int)
 | 
			
		||||
0:?     'KeyMem' (global structure{global int precise})
 | 
			
		||||
0:?     'outIndex2' (layout(location=28 index=0 ) out 4-component vector of float)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,10 @@ ERROR: 0:74: 'in' : type must be an array: ina
 | 
			
		||||
ERROR: 0:76: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized 
 | 
			
		||||
ERROR: 0:83: 'location' : overlapping use of location 4
 | 
			
		||||
ERROR: 0:87: 'location' : overlapping use of location 4
 | 
			
		||||
ERROR: 18 compilation errors.  No code generated.
 | 
			
		||||
ERROR: 0:104: '' : precise qualifier must appear first 
 | 
			
		||||
ERROR: 0:105: '' : precise qualifier must appear first 
 | 
			
		||||
ERROR: 0:105: '' : precise qualifier must appear first 
 | 
			
		||||
ERROR: 21 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 400
 | 
			
		||||
@ -180,20 +183,20 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:91    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:95      multiply second child into first child (temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96      move second child to first child (temp 3-component vector of float)
 | 
			
		||||
0:96        'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96        'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96        fma (global 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:97      move second child to first child (temp double)
 | 
			
		||||
0:97        'd' (temp double)
 | 
			
		||||
0:97        'd' (noContraction temp double)
 | 
			
		||||
0:97        fma (global double)
 | 
			
		||||
0:97          'd' (temp double)
 | 
			
		||||
0:97          'd' (temp double)
 | 
			
		||||
0:97          'd' (temp double)
 | 
			
		||||
0:97          'd' (noContraction temp double)
 | 
			
		||||
0:97          'd' (noContraction temp double)
 | 
			
		||||
0:97          'd' (noContraction temp double)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'outa' (global 4-element array of int)
 | 
			
		||||
@ -209,8 +212,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'ovla' (layout(location=3 ) out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'ovlb' (layout(location=4 ) out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'ovlc' (layout(location=4 ) out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:?     'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:?     'pinbi' (patch out block{out int a})
 | 
			
		||||
0:?     'badOrder' (invariant noContraction out 4-element array of 4-component vector of float)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked tessellation control stage:
 | 
			
		||||
@ -233,8 +237,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:23        move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:23          'p' (temp 4-component vector of float)
 | 
			
		||||
0:23          gl_Position: direct index for structure (in 4-component vector of float Position)
 | 
			
		||||
0:23            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:23              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:23            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:23              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:23              Constant:
 | 
			
		||||
0:23                1 (const int)
 | 
			
		||||
0:23            Constant:
 | 
			
		||||
@ -243,8 +247,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:24        move second child to first child (temp float)
 | 
			
		||||
0:24          'ps' (temp float)
 | 
			
		||||
0:24          gl_PointSize: direct index for structure (in float PointSize)
 | 
			
		||||
0:24            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:24              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:24            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:24              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:24              Constant:
 | 
			
		||||
0:24                1 (const int)
 | 
			
		||||
0:24            Constant:
 | 
			
		||||
@ -253,9 +257,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:25        move second child to first child (temp float)
 | 
			
		||||
0:25          'cd' (temp float)
 | 
			
		||||
0:25          direct index (temp float ClipDistance)
 | 
			
		||||
0:25            gl_ClipDistance: direct index for structure (in 1-element array of float ClipDistance)
 | 
			
		||||
0:25              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:25                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:25            gl_ClipDistance: direct index for structure (in 3-element array of float ClipDistance)
 | 
			
		||||
0:25              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:25                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:25                Constant:
 | 
			
		||||
0:25                  1 (const int)
 | 
			
		||||
0:25              Constant:
 | 
			
		||||
@ -276,25 +280,25 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:29          'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:31      move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:31        gl_Position: direct index for structure (out 4-component vector of float Position)
 | 
			
		||||
0:31          indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:31            'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:31          indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:31            'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:31            'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:31          Constant:
 | 
			
		||||
0:31            0 (const int)
 | 
			
		||||
0:31        'p' (temp 4-component vector of float)
 | 
			
		||||
0:32      move second child to first child (temp float)
 | 
			
		||||
0:32        gl_PointSize: direct index for structure (out float PointSize)
 | 
			
		||||
0:32          indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32            'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32          indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32            'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32            'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:32          Constant:
 | 
			
		||||
0:32            1 (const int)
 | 
			
		||||
0:32        'ps' (temp float)
 | 
			
		||||
0:33      move second child to first child (temp float)
 | 
			
		||||
0:33        direct index (temp float ClipDistance)
 | 
			
		||||
0:33          gl_ClipDistance: direct index for structure (out 1-element array of float ClipDistance)
 | 
			
		||||
0:33            indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33          gl_ClipDistance: direct index for structure (out 2-element array of float ClipDistance)
 | 
			
		||||
0:33            indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:33            Constant:
 | 
			
		||||
0:33              2 (const int)
 | 
			
		||||
@ -364,8 +368,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:67    Function Parameters: 
 | 
			
		||||
0:69    Sequence
 | 
			
		||||
0:69      gl_PointSize: direct index for structure (out float PointSize)
 | 
			
		||||
0:69        direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:69          'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:69        direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:69          'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:69          Constant:
 | 
			
		||||
0:69            4 (const int)
 | 
			
		||||
0:69        Constant:
 | 
			
		||||
@ -375,22 +379,22 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:91    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:95      multiply second child into first child (temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:95        'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96      move second child to first child (temp 3-component vector of float)
 | 
			
		||||
0:96        'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96        'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96        fma (global 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:96          'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:97      move second child to first child (temp double)
 | 
			
		||||
0:97        'd' (temp double)
 | 
			
		||||
0:97        'd' (noContraction temp double)
 | 
			
		||||
0:97        fma (global double)
 | 
			
		||||
0:97          'd' (temp double)
 | 
			
		||||
0:97          'd' (temp double)
 | 
			
		||||
0:97          'd' (temp double)
 | 
			
		||||
0:97          'd' (noContraction temp double)
 | 
			
		||||
0:97          'd' (noContraction temp double)
 | 
			
		||||
0:97          'd' (noContraction temp double)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'outa' (global 4-element array of int)
 | 
			
		||||
0:?     'patchIn' (patch in 4-component vector of float)
 | 
			
		||||
0:?     'patchOut' (patch out 4-component vector of float)
 | 
			
		||||
@ -404,6 +408,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'ovla' (layout(location=3 ) out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'ovlb' (layout(location=4 ) out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'ovlc' (layout(location=4 ) out 4-element array of 4-component vector of float)
 | 
			
		||||
0:?     'pv3' (temp 3-component vector of float)
 | 
			
		||||
0:?     'pv3' (noContraction temp 3-component vector of float)
 | 
			
		||||
0:?     'pinbi' (patch out block{out int a})
 | 
			
		||||
0:?     'badOrder' (invariant noContraction out 4-element array of 4-component vector of float)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -138,7 +138,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'badp2' (flat patch in 4-component vector of float)
 | 
			
		||||
0:?     'badp3' (noperspective patch in 4-component vector of float)
 | 
			
		||||
0:?     'badp4' (patch sample in 3-component vector of float)
 | 
			
		||||
0:?     'gl_in' (in 32-element array of block{in implicitly-sized array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'gl_in' (in 32-element array of block{in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:?     'ina' (in 2-component vector of float)
 | 
			
		||||
0:?     'inb' (in 32-element array of 2-component vector of float)
 | 
			
		||||
0:?     'inc' (in 32-element array of 2-component vector of float)
 | 
			
		||||
@ -179,8 +179,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:32        move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:32          'p' (temp 4-component vector of float)
 | 
			
		||||
0:32          gl_Position: direct index for structure (in 4-component vector of float Position)
 | 
			
		||||
0:32            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:32              Constant:
 | 
			
		||||
0:32                1 (const int)
 | 
			
		||||
0:32            Constant:
 | 
			
		||||
@ -189,8 +189,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:33        move second child to first child (temp float)
 | 
			
		||||
0:33          'ps' (temp float)
 | 
			
		||||
0:33          gl_PointSize: direct index for structure (in float PointSize)
 | 
			
		||||
0:33            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:33              Constant:
 | 
			
		||||
0:33                1 (const int)
 | 
			
		||||
0:33            Constant:
 | 
			
		||||
@ -199,9 +199,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:34        move second child to first child (temp float)
 | 
			
		||||
0:34          'cd' (temp float)
 | 
			
		||||
0:34          direct index (temp float ClipDistance)
 | 
			
		||||
0:34            gl_ClipDistance: direct index for structure (in 1-element array of float ClipDistance)
 | 
			
		||||
0:34              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:34                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:34            gl_ClipDistance: direct index for structure (in 3-element array of float ClipDistance)
 | 
			
		||||
0:34              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:34                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:34                Constant:
 | 
			
		||||
0:34                  1 (const int)
 | 
			
		||||
0:34              Constant:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										122
									
								
								Test/baseResults/420.comp.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										122
									
								
								Test/baseResults/420.comp.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,122 @@
 | 
			
		||||
420.comp
 | 
			
		||||
Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
 | 
			
		||||
ERROR: 0:3: 'gl_WorkGroupSize' : not supported for this version or the enabled extensions 
 | 
			
		||||
ERROR: 1 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 420
 | 
			
		||||
Requested GL_ARB_compute_shader
 | 
			
		||||
local_size = (2, 4, 6)
 | 
			
		||||
ERROR: node is still EOpNull!
 | 
			
		||||
0:11  Function Definition: main( (global void)
 | 
			
		||||
0:11    Function Parameters: 
 | 
			
		||||
0:13    Sequence
 | 
			
		||||
0:13      move second child to first child (temp 3-component vector of float)
 | 
			
		||||
0:13        'sfoo' (shared 3-component vector of float)
 | 
			
		||||
0:13        Constant:
 | 
			
		||||
0:13          2.000000
 | 
			
		||||
0:13          4.000000
 | 
			
		||||
0:13          6.000000
 | 
			
		||||
0:14      add second child into first child (temp 3-component vector of float)
 | 
			
		||||
0:14        'sfoo' (shared 3-component vector of float)
 | 
			
		||||
0:14        Convert uint to float (temp 3-component vector of float)
 | 
			
		||||
0:14          add (temp 3-component vector of uint)
 | 
			
		||||
0:14            add (temp 3-component vector of uint)
 | 
			
		||||
0:14              add (temp 3-component vector of uint)
 | 
			
		||||
0:14                add (temp 3-component vector of uint)
 | 
			
		||||
0:14                  Constant:
 | 
			
		||||
0:14                    2 (const uint)
 | 
			
		||||
0:14                    4 (const uint)
 | 
			
		||||
0:14                    6 (const uint)
 | 
			
		||||
0:14                  'gl_NumWorkGroups' (in 3-component vector of uint NumWorkGroups)
 | 
			
		||||
0:14                'gl_WorkGroupID' (in 3-component vector of uint WorkGroupID)
 | 
			
		||||
0:14              'gl_LocalInvocationID' (in 3-component vector of uint LocalInvocationID)
 | 
			
		||||
0:14            'gl_GlobalInvocationID' (in 3-component vector of uint GlobalInvocationID)
 | 
			
		||||
0:15      vector scale second child into first child (temp 3-component vector of float)
 | 
			
		||||
0:15        'sfoo' (shared 3-component vector of float)
 | 
			
		||||
0:15        Convert uint to float (temp float)
 | 
			
		||||
0:15          'gl_LocalInvocationIndex' (in uint LocalInvocationIndex)
 | 
			
		||||
0:16      add second child into first child (temp 3-component vector of float)
 | 
			
		||||
0:16        'sfoo' (shared 3-component vector of float)
 | 
			
		||||
0:16        Constant:
 | 
			
		||||
0:16          66559.000000
 | 
			
		||||
0:16          66559.000000
 | 
			
		||||
0:16          65599.000000
 | 
			
		||||
0:17      vector scale second child into first child (temp 3-component vector of float)
 | 
			
		||||
0:17        'sfoo' (shared 3-component vector of float)
 | 
			
		||||
0:17        Constant:
 | 
			
		||||
0:17          1057.000000
 | 
			
		||||
0:23      Barrier (global void)
 | 
			
		||||
0:24      MemoryBarrier (global void)
 | 
			
		||||
0:25      MemoryBarrierAtomicCounter (global void)
 | 
			
		||||
0:26      MemoryBarrierBuffer (global void)
 | 
			
		||||
0:27      MemoryBarrierImage (global void)
 | 
			
		||||
0:28      MemoryBarrierShared (global void)
 | 
			
		||||
0:29      GroupMemoryBarrier (global void)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'gl_WorkGroupSize' (const 3-component vector of uint WorkGroupSize)
 | 
			
		||||
0:?       2 (const uint)
 | 
			
		||||
0:?       4 (const uint)
 | 
			
		||||
0:?       6 (const uint)
 | 
			
		||||
0:?     'sfoo' (shared 3-component vector of float)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked compute stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 420
 | 
			
		||||
Requested GL_ARB_compute_shader
 | 
			
		||||
local_size = (2, 4, 6)
 | 
			
		||||
ERROR: node is still EOpNull!
 | 
			
		||||
0:11  Function Definition: main( (global void)
 | 
			
		||||
0:11    Function Parameters: 
 | 
			
		||||
0:13    Sequence
 | 
			
		||||
0:13      move second child to first child (temp 3-component vector of float)
 | 
			
		||||
0:13        'sfoo' (shared 3-component vector of float)
 | 
			
		||||
0:13        Constant:
 | 
			
		||||
0:13          2.000000
 | 
			
		||||
0:13          4.000000
 | 
			
		||||
0:13          6.000000
 | 
			
		||||
0:14      add second child into first child (temp 3-component vector of float)
 | 
			
		||||
0:14        'sfoo' (shared 3-component vector of float)
 | 
			
		||||
0:14        Convert uint to float (temp 3-component vector of float)
 | 
			
		||||
0:14          add (temp 3-component vector of uint)
 | 
			
		||||
0:14            add (temp 3-component vector of uint)
 | 
			
		||||
0:14              add (temp 3-component vector of uint)
 | 
			
		||||
0:14                add (temp 3-component vector of uint)
 | 
			
		||||
0:14                  Constant:
 | 
			
		||||
0:14                    2 (const uint)
 | 
			
		||||
0:14                    4 (const uint)
 | 
			
		||||
0:14                    6 (const uint)
 | 
			
		||||
0:14                  'gl_NumWorkGroups' (in 3-component vector of uint NumWorkGroups)
 | 
			
		||||
0:14                'gl_WorkGroupID' (in 3-component vector of uint WorkGroupID)
 | 
			
		||||
0:14              'gl_LocalInvocationID' (in 3-component vector of uint LocalInvocationID)
 | 
			
		||||
0:14            'gl_GlobalInvocationID' (in 3-component vector of uint GlobalInvocationID)
 | 
			
		||||
0:15      vector scale second child into first child (temp 3-component vector of float)
 | 
			
		||||
0:15        'sfoo' (shared 3-component vector of float)
 | 
			
		||||
0:15        Convert uint to float (temp float)
 | 
			
		||||
0:15          'gl_LocalInvocationIndex' (in uint LocalInvocationIndex)
 | 
			
		||||
0:16      add second child into first child (temp 3-component vector of float)
 | 
			
		||||
0:16        'sfoo' (shared 3-component vector of float)
 | 
			
		||||
0:16        Constant:
 | 
			
		||||
0:16          66559.000000
 | 
			
		||||
0:16          66559.000000
 | 
			
		||||
0:16          65599.000000
 | 
			
		||||
0:17      vector scale second child into first child (temp 3-component vector of float)
 | 
			
		||||
0:17        'sfoo' (shared 3-component vector of float)
 | 
			
		||||
0:17        Constant:
 | 
			
		||||
0:17          1057.000000
 | 
			
		||||
0:23      Barrier (global void)
 | 
			
		||||
0:24      MemoryBarrier (global void)
 | 
			
		||||
0:25      MemoryBarrierAtomicCounter (global void)
 | 
			
		||||
0:26      MemoryBarrierBuffer (global void)
 | 
			
		||||
0:27      MemoryBarrierImage (global void)
 | 
			
		||||
0:28      MemoryBarrierShared (global void)
 | 
			
		||||
0:29      GroupMemoryBarrier (global void)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'gl_WorkGroupSize' (const 3-component vector of uint WorkGroupSize)
 | 
			
		||||
0:?       2 (const uint)
 | 
			
		||||
0:?       4 (const uint)
 | 
			
		||||
0:?       6 (const uint)
 | 
			
		||||
0:?     'sfoo' (shared 3-component vector of float)
 | 
			
		||||
 | 
			
		||||
@ -132,8 +132,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:17        move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:17          'p' (temp 4-component vector of float)
 | 
			
		||||
0:17          gl_Position: direct index for structure (in 4-component vector of float Position)
 | 
			
		||||
0:17            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:17              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:17            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:17              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:17              Constant:
 | 
			
		||||
0:17                1 (const int)
 | 
			
		||||
0:17            Constant:
 | 
			
		||||
@ -142,8 +142,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:18        move second child to first child (temp float)
 | 
			
		||||
0:18          'ps' (temp float)
 | 
			
		||||
0:18          gl_PointSize: direct index for structure (in float PointSize)
 | 
			
		||||
0:18            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:18              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:18            direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:18              'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:18              Constant:
 | 
			
		||||
0:18                1 (const int)
 | 
			
		||||
0:18            Constant:
 | 
			
		||||
@ -152,9 +152,9 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:19        move second child to first child (temp float)
 | 
			
		||||
0:19          'cd' (temp float)
 | 
			
		||||
0:19          direct index (temp float ClipDistance)
 | 
			
		||||
0:19            gl_ClipDistance: direct index for structure (in 1-element array of float ClipDistance)
 | 
			
		||||
0:19              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:19                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:19            gl_ClipDistance: direct index for structure (in 3-element array of float ClipDistance)
 | 
			
		||||
0:19              direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:19                'gl_in' (in 32-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 3-element array of float ClipDistance gl_ClipDistance})
 | 
			
		||||
0:19                Constant:
 | 
			
		||||
0:19                  1 (const int)
 | 
			
		||||
0:19              Constant:
 | 
			
		||||
 | 
			
		||||
@ -1,17 +1,17 @@
 | 
			
		||||
420.tese
 | 
			
		||||
Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
 | 
			
		||||
ERROR: 0:7: '=' :  cannot convert from 'global 3-element array of float' to 'global 2-element array of float'
 | 
			
		||||
ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): global 2-component vector of float
 | 
			
		||||
ERROR: 0:9: 'initializer list' : wrong number of matrix columns: global 3X3 matrix of float
 | 
			
		||||
ERROR: 0:10: 'initializer list' : wrong number of matrix columns: global 2X2 matrix of float
 | 
			
		||||
ERROR: 0:7: '=' :  cannot convert from 'const 3-element array of float' to 'global 2-element array of float'
 | 
			
		||||
ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): temp 2-component vector of float
 | 
			
		||||
ERROR: 0:9: 'initializer list' : wrong number of matrix columns: temp 3X3 matrix of float
 | 
			
		||||
ERROR: 0:10: 'initializer list' : wrong number of matrix columns: temp 2X2 matrix of float
 | 
			
		||||
ERROR: 0:25: 'initializer list' : wrong number of structure members 
 | 
			
		||||
ERROR: 0:27: '=' :  cannot convert from 'const bool' to 'global int'
 | 
			
		||||
ERROR: 0:28: 'constructor' :  cannot convert parameter 2 from 'const float' to 'global 4-component vector of float'
 | 
			
		||||
ERROR: 0:28: 'constructor' :  cannot convert parameter 2 from 'const float' to 'temp 4-component vector of float'
 | 
			
		||||
ERROR: 0:29: 'constructor' :  cannot convert parameter 2 from 'const 2X2 matrix of float' to 'const 4-component vector of float'
 | 
			
		||||
ERROR: 0:29: 'const 2-element array of 4-component vector of float' : cannot construct with these arguments 
 | 
			
		||||
ERROR: 0:29: '=' :  cannot convert from 'const float' to 'global 2-element array of 4-component vector of float'
 | 
			
		||||
ERROR: 0:30: 'initializer list' : wrong number of matrix columns: global 4X2 matrix of float
 | 
			
		||||
ERROR: 0:40: 'constructor' :  cannot convert parameter 1 from 'temp float' to 'global structure{global float s, global float t}'
 | 
			
		||||
ERROR: 0:30: 'initializer list' : wrong number of matrix columns: temp 4X2 matrix of float
 | 
			
		||||
ERROR: 0:40: 'constructor' :  cannot convert parameter 1 from 'temp float' to 'temp structure{global float s, global float t}'
 | 
			
		||||
ERROR: 0:58: 'initializer list' : wrong number of structure members 
 | 
			
		||||
ERROR: 13 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
@ -60,7 +60,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:68  Sequence
 | 
			
		||||
0:68    move second child to first child (temp 3-component vector of float)
 | 
			
		||||
0:68      'bv3' (global 3-component vector of float)
 | 
			
		||||
0:68      Construct vec3 (global 3-component vector of float)
 | 
			
		||||
0:68      Construct vec3 (temp 3-component vector of float)
 | 
			
		||||
0:68        'vc1' (global float)
 | 
			
		||||
0:68        'vc2' (global float)
 | 
			
		||||
0:68        'vc3' (global float)
 | 
			
		||||
@ -210,7 +210,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:68  Sequence
 | 
			
		||||
0:68    move second child to first child (temp 3-component vector of float)
 | 
			
		||||
0:68      'bv3' (global 3-component vector of float)
 | 
			
		||||
0:68      Construct vec3 (global 3-component vector of float)
 | 
			
		||||
0:68      Construct vec3 (temp 3-component vector of float)
 | 
			
		||||
0:68        'vc1' (global float)
 | 
			
		||||
0:68        'vc2' (global float)
 | 
			
		||||
0:68        'vc3' (global float)
 | 
			
		||||
 | 
			
		||||
@ -275,7 +275,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'sampb3' (layout(binding=80 ) uniform sampler2D)
 | 
			
		||||
0:?     'sampb4' (layout(binding=31 ) uniform sampler2D)
 | 
			
		||||
0:?     'sampb5' (layout(binding=79 ) uniform 2-element array of sampler2D)
 | 
			
		||||
0:?     'anon@3' (out block{out implicitly-sized array of float ClipDistance gl_ClipDistance, })
 | 
			
		||||
0:?     'anon@3' (out block{out 4-element array of float ClipDistance gl_ClipDistance, })
 | 
			
		||||
0:?     'patchIn' (patch in 4-component vector of float)
 | 
			
		||||
0:?     'patchOut' (smooth patch out 4-component vector of float)
 | 
			
		||||
0:?     'comma0' (temp int)
 | 
			
		||||
@ -527,7 +527,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'sampb3' (layout(binding=80 ) uniform sampler2D)
 | 
			
		||||
0:?     'sampb4' (layout(binding=31 ) uniform sampler2D)
 | 
			
		||||
0:?     'sampb5' (layout(binding=79 ) uniform 2-element array of sampler2D)
 | 
			
		||||
0:?     'anon@3' (out block{out 1-element array of float ClipDistance gl_ClipDistance, })
 | 
			
		||||
0:?     'anon@3' (out block{out 4-element array of float ClipDistance gl_ClipDistance, })
 | 
			
		||||
0:?     'patchIn' (patch in 4-component vector of float)
 | 
			
		||||
0:?     'patchOut' (smooth patch out 4-component vector of float)
 | 
			
		||||
0:?     'comma0' (temp int)
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@ ERROR: 0:15: 'constructior' : array constructor argument not correct type to con
 | 
			
		||||
ERROR: 0:28: '[' :  array index out of range '4'
 | 
			
		||||
ERROR: 0:56: 'constructor' :  cannot convert parameter 2 from 'const 3-element array of 4-component vector of float' to 'temp 2-element array of 4-component vector of float'
 | 
			
		||||
ERROR: 0:60: 'constructor' :  cannot convert parameter 2 from 'const 2-element array of 4-component vector of float' to 'temp 3-element array of 4-component vector of float'
 | 
			
		||||
ERROR: 0:64: '=' :  cannot convert from 'temp 3-element array of 2-element array of 4-component vector of float' to 'temp 4-element array of 2-element array of 4-component vector of float'
 | 
			
		||||
ERROR: 0:64: '=' :  cannot convert from 'const 3-element array of 2-element array of 4-component vector of float' to 'temp 4-element array of 2-element array of 4-component vector of float'
 | 
			
		||||
ERROR: 0:70: 'assign' :  cannot convert from 'global 4-element array of 7-element array of float' to 'global 5-element array of 7-element array of float'
 | 
			
		||||
ERROR: 0:71: 'assign' :  cannot convert from 'global 4-element array of 7-element array of float' to 'global implicitly-sized array of 7-element array of float'
 | 
			
		||||
ERROR: 0:73: 'foo' : no matching overloaded function found 
 | 
			
		||||
 | 
			
		||||
@ -51,7 +51,7 @@ Shader version: 450
 | 
			
		||||
0:18        move second child to first child (temp float)
 | 
			
		||||
0:18          'cull' (temp float)
 | 
			
		||||
0:18          direct index (smooth temp float CullDistance)
 | 
			
		||||
0:18            'gl_CullDistance' (smooth in implicitly-sized array of float CullDistance)
 | 
			
		||||
0:18            'gl_CullDistance' (smooth in 6-element array of float CullDistance)
 | 
			
		||||
0:18            Constant:
 | 
			
		||||
0:18              2 (const int)
 | 
			
		||||
0:19      Sequence
 | 
			
		||||
@ -130,12 +130,32 @@ Shader version: 450
 | 
			
		||||
0:48              2 (const int)
 | 
			
		||||
0:48            Constant:
 | 
			
		||||
0:48              4.500000
 | 
			
		||||
0:53  Function Definition: cull(i1; (global float)
 | 
			
		||||
0:53    Function Parameters: 
 | 
			
		||||
0:53      'i' (in int)
 | 
			
		||||
0:55    Sequence
 | 
			
		||||
0:55      Branch: Return with expression
 | 
			
		||||
0:55        Test condition and select (temp float)
 | 
			
		||||
0:55          Condition
 | 
			
		||||
0:55          Compare Greater Than or Equal (temp bool)
 | 
			
		||||
0:55            'i' (in int)
 | 
			
		||||
0:55            Constant:
 | 
			
		||||
0:55              6 (const int)
 | 
			
		||||
0:55          true case
 | 
			
		||||
0:55          direct index (smooth temp float CullDistance)
 | 
			
		||||
0:55            'gl_CullDistance' (smooth in 6-element array of float CullDistance)
 | 
			
		||||
0:55            Constant:
 | 
			
		||||
0:55              5 (const int)
 | 
			
		||||
0:55          false case
 | 
			
		||||
0:55          indirect index (smooth temp float CullDistance)
 | 
			
		||||
0:55            'gl_CullDistance' (smooth in 6-element array of float CullDistance)
 | 
			
		||||
0:55            'i' (in int)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'in1' (smooth in float)
 | 
			
		||||
0:?     'in2' (smooth in 2-component vector of float)
 | 
			
		||||
0:?     'in3' (smooth in 3-component vector of float)
 | 
			
		||||
0:?     'in4' (smooth in 4-component vector of float)
 | 
			
		||||
0:?     'gl_CullDistance' (smooth in implicitly-sized array of float CullDistance)
 | 
			
		||||
0:?     'gl_CullDistance' (smooth in 6-element array of float CullDistance)
 | 
			
		||||
0:?     's2dms' (uniform sampler2DMS)
 | 
			
		||||
0:?     'us2dmsa' (uniform usampler2DMSArray)
 | 
			
		||||
0:?     'ii2dms' (layout(rgba32i ) uniform iimage2DMS)
 | 
			
		||||
@ -195,7 +215,7 @@ Shader version: 450
 | 
			
		||||
0:18        move second child to first child (temp float)
 | 
			
		||||
0:18          'cull' (temp float)
 | 
			
		||||
0:18          direct index (smooth temp float CullDistance)
 | 
			
		||||
0:18            'gl_CullDistance' (smooth in 3-element array of float CullDistance)
 | 
			
		||||
0:18            'gl_CullDistance' (smooth in 6-element array of float CullDistance)
 | 
			
		||||
0:18            Constant:
 | 
			
		||||
0:18              2 (const int)
 | 
			
		||||
0:19      Sequence
 | 
			
		||||
@ -274,12 +294,32 @@ Shader version: 450
 | 
			
		||||
0:48              2 (const int)
 | 
			
		||||
0:48            Constant:
 | 
			
		||||
0:48              4.500000
 | 
			
		||||
0:53  Function Definition: cull(i1; (global float)
 | 
			
		||||
0:53    Function Parameters: 
 | 
			
		||||
0:53      'i' (in int)
 | 
			
		||||
0:55    Sequence
 | 
			
		||||
0:55      Branch: Return with expression
 | 
			
		||||
0:55        Test condition and select (temp float)
 | 
			
		||||
0:55          Condition
 | 
			
		||||
0:55          Compare Greater Than or Equal (temp bool)
 | 
			
		||||
0:55            'i' (in int)
 | 
			
		||||
0:55            Constant:
 | 
			
		||||
0:55              6 (const int)
 | 
			
		||||
0:55          true case
 | 
			
		||||
0:55          direct index (smooth temp float CullDistance)
 | 
			
		||||
0:55            'gl_CullDistance' (smooth in 6-element array of float CullDistance)
 | 
			
		||||
0:55            Constant:
 | 
			
		||||
0:55              5 (const int)
 | 
			
		||||
0:55          false case
 | 
			
		||||
0:55          indirect index (smooth temp float CullDistance)
 | 
			
		||||
0:55            'gl_CullDistance' (smooth in 6-element array of float CullDistance)
 | 
			
		||||
0:55            'i' (in int)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'in1' (smooth in float)
 | 
			
		||||
0:?     'in2' (smooth in 2-component vector of float)
 | 
			
		||||
0:?     'in3' (smooth in 3-component vector of float)
 | 
			
		||||
0:?     'in4' (smooth in 4-component vector of float)
 | 
			
		||||
0:?     'gl_CullDistance' (smooth in 3-element array of float CullDistance)
 | 
			
		||||
0:?     'gl_CullDistance' (smooth in 6-element array of float CullDistance)
 | 
			
		||||
0:?     's2dms' (uniform sampler2DMS)
 | 
			
		||||
0:?     'us2dmsa' (uniform usampler2DMSArray)
 | 
			
		||||
0:?     'ii2dms' (layout(rgba32i ) uniform iimage2DMS)
 | 
			
		||||
 | 
			
		||||
@ -12,16 +12,16 @@ output primitive = none
 | 
			
		||||
0:13    Sequence
 | 
			
		||||
0:13      move second child to first child (temp float)
 | 
			
		||||
0:13        direct index (layout(stream=0 ) temp float CullDistance)
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (layout(stream=0 ) out implicitly-sized array of float CullDistance)
 | 
			
		||||
0:13            'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (layout(stream=0 ) out 3-element array of float CullDistance)
 | 
			
		||||
0:13            'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13            Constant:
 | 
			
		||||
0:13              3 (const uint)
 | 
			
		||||
0:13          Constant:
 | 
			
		||||
0:13            2 (const int)
 | 
			
		||||
0:13        direct index (temp float CullDistance)
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (in implicitly-sized array of float CullDistance)
 | 
			
		||||
0:13            direct index (temp block{in implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_in' (in implicitly-sized array of block{in implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (in 3-element array of float CullDistance)
 | 
			
		||||
0:13            direct index (temp block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_in' (in implicitly-sized array of block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              Constant:
 | 
			
		||||
0:13                1 (const int)
 | 
			
		||||
0:13            Constant:
 | 
			
		||||
@ -29,8 +29,8 @@ output primitive = none
 | 
			
		||||
0:13          Constant:
 | 
			
		||||
0:13            2 (const int)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'gl_in' (in implicitly-sized array of block{in implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'gl_in' (in implicitly-sized array of block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked geometry stage:
 | 
			
		||||
@ -57,9 +57,9 @@ output primitive = none
 | 
			
		||||
0:13          Constant:
 | 
			
		||||
0:13            2 (const int)
 | 
			
		||||
0:13        direct index (temp float CullDistance)
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (in 1-element array of float CullDistance)
 | 
			
		||||
0:13            direct index (temp block{in 1-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_in' (in 2-element array of block{in 1-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (in 3-element array of float CullDistance)
 | 
			
		||||
0:13            direct index (temp block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_in' (in 2-element array of block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              Constant:
 | 
			
		||||
0:13                1 (const int)
 | 
			
		||||
0:13            Constant:
 | 
			
		||||
@ -67,6 +67,6 @@ output primitive = none
 | 
			
		||||
0:13          Constant:
 | 
			
		||||
0:13            2 (const int)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'gl_in' (in 2-element array of block{in 1-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'gl_in' (in 2-element array of block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -9,18 +9,18 @@ vertices = -1
 | 
			
		||||
0:13    Sequence
 | 
			
		||||
0:13      move second child to first child (temp float)
 | 
			
		||||
0:13        direct index (temp float CullDistance)
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (out implicitly-sized array of float CullDistance)
 | 
			
		||||
0:13            indirect index (temp block{out implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_out' (out 4-element array of block{out implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (out 3-element array of float CullDistance)
 | 
			
		||||
0:13            indirect index (temp block{out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_out' (out 4-element array of block{out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:13            Constant:
 | 
			
		||||
0:13              0 (const int)
 | 
			
		||||
0:13          Constant:
 | 
			
		||||
0:13            2 (const int)
 | 
			
		||||
0:13        direct index (temp float CullDistance)
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (in implicitly-sized array of float CullDistance)
 | 
			
		||||
0:13            direct index (temp block{in implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_in' (in 32-element array of block{in implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (in 3-element array of float CullDistance)
 | 
			
		||||
0:13            direct index (temp block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_in' (in 32-element array of block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              Constant:
 | 
			
		||||
0:13                1 (const int)
 | 
			
		||||
0:13            Constant:
 | 
			
		||||
@ -28,8 +28,8 @@ vertices = -1
 | 
			
		||||
0:13          Constant:
 | 
			
		||||
0:13            2 (const int)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'gl_in' (in 32-element array of block{in implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'gl_out' (out 4-element array of block{out implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'gl_in' (in 32-element array of block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'gl_out' (out 4-element array of block{out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked tessellation control stage:
 | 
			
		||||
@ -44,18 +44,18 @@ vertices = -1
 | 
			
		||||
0:13    Sequence
 | 
			
		||||
0:13      move second child to first child (temp float)
 | 
			
		||||
0:13        direct index (temp float CullDistance)
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (out 1-element array of float CullDistance)
 | 
			
		||||
0:13            indirect index (temp block{out 1-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_out' (out 4-element array of block{out 1-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (out 3-element array of float CullDistance)
 | 
			
		||||
0:13            indirect index (temp block{out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_out' (out 4-element array of block{out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_InvocationID' (in int InvocationID)
 | 
			
		||||
0:13            Constant:
 | 
			
		||||
0:13              0 (const int)
 | 
			
		||||
0:13          Constant:
 | 
			
		||||
0:13            2 (const int)
 | 
			
		||||
0:13        direct index (temp float CullDistance)
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (in 1-element array of float CullDistance)
 | 
			
		||||
0:13            direct index (temp block{in 1-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_in' (in 32-element array of block{in 1-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (in 3-element array of float CullDistance)
 | 
			
		||||
0:13            direct index (temp block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_in' (in 32-element array of block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              Constant:
 | 
			
		||||
0:13                1 (const int)
 | 
			
		||||
0:13            Constant:
 | 
			
		||||
@ -63,6 +63,6 @@ vertices = -1
 | 
			
		||||
0:13          Constant:
 | 
			
		||||
0:13            2 (const int)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'gl_in' (in 32-element array of block{in 1-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'gl_out' (out 4-element array of block{out 1-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'gl_in' (in 32-element array of block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'gl_out' (out 4-element array of block{out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -11,16 +11,16 @@ triangle order = none
 | 
			
		||||
0:13    Sequence
 | 
			
		||||
0:13      move second child to first child (temp float)
 | 
			
		||||
0:13        direct index (temp float CullDistance)
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (out implicitly-sized array of float CullDistance)
 | 
			
		||||
0:13            'anon@0' (out block{out implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (out 3-element array of float CullDistance)
 | 
			
		||||
0:13            'anon@0' (out block{out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13            Constant:
 | 
			
		||||
0:13              3 (const uint)
 | 
			
		||||
0:13          Constant:
 | 
			
		||||
0:13            2 (const int)
 | 
			
		||||
0:13        direct index (temp float CullDistance)
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (in implicitly-sized array of float CullDistance)
 | 
			
		||||
0:13            direct index (temp block{in implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_in' (in 32-element array of block{in implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (in 3-element array of float CullDistance)
 | 
			
		||||
0:13            direct index (temp block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_in' (in 32-element array of block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              Constant:
 | 
			
		||||
0:13                1 (const int)
 | 
			
		||||
0:13            Constant:
 | 
			
		||||
@ -28,8 +28,8 @@ triangle order = none
 | 
			
		||||
0:13          Constant:
 | 
			
		||||
0:13            2 (const int)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'gl_in' (in 32-element array of block{in implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'anon@0' (out block{out implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'gl_in' (in 32-element array of block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'anon@0' (out block{out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked tessellation evaluation stage:
 | 
			
		||||
@ -53,9 +53,9 @@ triangle order = ccw
 | 
			
		||||
0:13          Constant:
 | 
			
		||||
0:13            2 (const int)
 | 
			
		||||
0:13        direct index (temp float CullDistance)
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (in 1-element array of float CullDistance)
 | 
			
		||||
0:13            direct index (temp block{in 1-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_in' (in 32-element array of block{in 1-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13          gl_CullDistance: direct index for structure (in 3-element array of float CullDistance)
 | 
			
		||||
0:13            direct index (temp block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              'gl_in' (in 32-element array of block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:13              Constant:
 | 
			
		||||
0:13                1 (const int)
 | 
			
		||||
0:13            Constant:
 | 
			
		||||
@ -63,6 +63,6 @@ triangle order = ccw
 | 
			
		||||
0:13          Constant:
 | 
			
		||||
0:13            2 (const int)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'gl_in' (in 32-element array of block{in 1-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'gl_in' (in 32-element array of block{in 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'anon@0' (out block{out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -12,8 +12,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:9    Sequence
 | 
			
		||||
0:9      move second child to first child (temp float)
 | 
			
		||||
0:9        direct index (temp float CullDistance)
 | 
			
		||||
0:9          gl_CullDistance: direct index for structure (out implicitly-sized array of float CullDistance)
 | 
			
		||||
0:9            'anon@0' (out block{out implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:9          gl_CullDistance: direct index for structure (out 3-element array of float CullDistance)
 | 
			
		||||
0:9            'anon@0' (out block{out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:9            Constant:
 | 
			
		||||
0:9              10 (const uint)
 | 
			
		||||
0:9          Constant:
 | 
			
		||||
@ -21,7 +21,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:9        Constant:
 | 
			
		||||
0:9          4.500000
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'anon@0' (out block{out implicitly-sized array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'anon@0' (out block{out 3-element array of float CullDistance gl_CullDistance})
 | 
			
		||||
0:?     'outb' (smooth out bool)
 | 
			
		||||
0:?     'outo' (smooth out sampler2D)
 | 
			
		||||
0:?     'outa' (smooth out 4-element array of float)
 | 
			
		||||
 | 
			
		||||
@ -13,16 +13,5 @@ Shader version: 110
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
ERROR: Linking fragment stage: Cannot mix ES profile with non-ES profile shaders
 | 
			
		||||
 | 
			
		||||
ERROR: Linking fragment stage: Cannot mix ES profile with non-ES profile shaders
 | 
			
		||||
 | 
			
		||||
ERROR: Linking fragment stage: Missing entry point: Each stage requires one "void main()" entry point
 | 
			
		||||
 | 
			
		||||
Shader version: 110
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
ERROR: Cannot mix ES profile with non-ES profile shaders
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										27
									
								
								Test/baseResults/es-link1.frag.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								Test/baseResults/es-link1.frag.out
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
			
		||||
es-link1.frag
 | 
			
		||||
Shader version: 100
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:5  Function Definition: main( (global void)
 | 
			
		||||
0:5    Function Parameters: 
 | 
			
		||||
0:7    Sequence
 | 
			
		||||
0:7      move second child to first child (temp mediump 4-component vector of float)
 | 
			
		||||
0:7        'gl_FragColor' (fragColor mediump 4-component vector of float FragColor)
 | 
			
		||||
0:7        Function Call: calculateColor( (global mediump 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
es-link2.frag
 | 
			
		||||
Shader version: 100
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:5  Function Definition: calculateColor( (global mediump 4-component vector of float)
 | 
			
		||||
0:5    Function Parameters: 
 | 
			
		||||
0:7    Sequence
 | 
			
		||||
0:7      Branch: Return with expression
 | 
			
		||||
0:7        vector-scale (temp mediump 4-component vector of float)
 | 
			
		||||
0:7          'varyingColor' (smooth in mediump 4-component vector of float)
 | 
			
		||||
0:7          Constant:
 | 
			
		||||
0:7            0.500000
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'varyingColor' (smooth in mediump 4-component vector of float)
 | 
			
		||||
 | 
			
		||||
ERROR: Cannot attach multiple ES shaders of the same type to a single program
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										113
									
								
								Test/baseResults/hlsl.assoc.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										113
									
								
								Test/baseResults/hlsl.assoc.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,113 @@
 | 
			
		||||
hlsl.assoc.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:12  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float)
 | 
			
		||||
0:8    Function Parameters: 
 | 
			
		||||
0:8      'a1' (temp 4-component vector of float)
 | 
			
		||||
0:8      'a2' (temp 4-component vector of float)
 | 
			
		||||
0:8      'a3' (temp 4-component vector of float)
 | 
			
		||||
0:8      'a4' (temp 4-component vector of float)
 | 
			
		||||
0:8      'a5' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:9      move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:9        'a1' (temp 4-component vector of float)
 | 
			
		||||
0:9        move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:9          'a2' (temp 4-component vector of float)
 | 
			
		||||
0:9          move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:9            'a3' (temp 4-component vector of float)
 | 
			
		||||
0:9            move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:9              'a4' (temp 4-component vector of float)
 | 
			
		||||
0:9              'a5' (temp 4-component vector of float)
 | 
			
		||||
0:10      Branch: Return with expression
 | 
			
		||||
0:10        add (temp 4-component vector of float)
 | 
			
		||||
0:10          add (temp 4-component vector of float)
 | 
			
		||||
0:10            add (temp 4-component vector of float)
 | 
			
		||||
0:10              'a1' (temp 4-component vector of float)
 | 
			
		||||
0:10              'a2' (temp 4-component vector of float)
 | 
			
		||||
0:10            add (temp 4-component vector of float)
 | 
			
		||||
0:10              'a3' (temp 4-component vector of float)
 | 
			
		||||
0:10              'a4' (temp 4-component vector of float)
 | 
			
		||||
0:10          'a5' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:12  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float)
 | 
			
		||||
0:8    Function Parameters: 
 | 
			
		||||
0:8      'a1' (temp 4-component vector of float)
 | 
			
		||||
0:8      'a2' (temp 4-component vector of float)
 | 
			
		||||
0:8      'a3' (temp 4-component vector of float)
 | 
			
		||||
0:8      'a4' (temp 4-component vector of float)
 | 
			
		||||
0:8      'a5' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:9      move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:9        'a1' (temp 4-component vector of float)
 | 
			
		||||
0:9        move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:9          'a2' (temp 4-component vector of float)
 | 
			
		||||
0:9          move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:9            'a3' (temp 4-component vector of float)
 | 
			
		||||
0:9            move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:9              'a4' (temp 4-component vector of float)
 | 
			
		||||
0:9              'a5' (temp 4-component vector of float)
 | 
			
		||||
0:10      Branch: Return with expression
 | 
			
		||||
0:10        add (temp 4-component vector of float)
 | 
			
		||||
0:10          add (temp 4-component vector of float)
 | 
			
		||||
0:10            add (temp 4-component vector of float)
 | 
			
		||||
0:10              'a1' (temp 4-component vector of float)
 | 
			
		||||
0:10              'a2' (temp 4-component vector of float)
 | 
			
		||||
0:10            add (temp 4-component vector of float)
 | 
			
		||||
0:10              'a3' (temp 4-component vector of float)
 | 
			
		||||
0:10              'a4' (temp 4-component vector of float)
 | 
			
		||||
0:10          'a5' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 25
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 9  "a1"
 | 
			
		||||
                              Name 10  "a2"
 | 
			
		||||
                              Name 11  "a3"
 | 
			
		||||
                              Name 12  "a4"
 | 
			
		||||
                              Name 13  "a5"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeFloat 32
 | 
			
		||||
               7:             TypeVector 6(float) 4
 | 
			
		||||
               8:             TypePointer Function 7(fvec4)
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
           9(a1):      8(ptr) Variable Function
 | 
			
		||||
          10(a2):      8(ptr) Variable Function
 | 
			
		||||
          11(a3):      8(ptr) Variable Function
 | 
			
		||||
          12(a4):      8(ptr) Variable Function
 | 
			
		||||
          13(a5):      8(ptr) Variable Function
 | 
			
		||||
              14:    7(fvec4) Load 13(a5)
 | 
			
		||||
                              Store 12(a4) 14
 | 
			
		||||
                              Store 11(a3) 14
 | 
			
		||||
                              Store 10(a2) 14
 | 
			
		||||
                              Store 9(a1) 14
 | 
			
		||||
              15:    7(fvec4) Load 9(a1)
 | 
			
		||||
              16:    7(fvec4) Load 10(a2)
 | 
			
		||||
              17:    7(fvec4) FAdd 15 16
 | 
			
		||||
              18:    7(fvec4) Load 11(a3)
 | 
			
		||||
              19:    7(fvec4) Load 12(a4)
 | 
			
		||||
              20:    7(fvec4) FAdd 18 19
 | 
			
		||||
              21:    7(fvec4) FAdd 17 20
 | 
			
		||||
              22:    7(fvec4) Load 13(a5)
 | 
			
		||||
              23:    7(fvec4) FAdd 21 22
 | 
			
		||||
                              ReturnValue 23
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										57
									
								
								Test/baseResults/hlsl.attribute.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										57
									
								
								Test/baseResults/hlsl.attribute.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,57 @@
 | 
			
		||||
hlsl.attribute.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:14  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:11      Test condition and select (temp void)
 | 
			
		||||
0:11        Condition
 | 
			
		||||
0:11        Constant:
 | 
			
		||||
0:11          0 (const int)
 | 
			
		||||
0:11        true case is null
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:14  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:11      Test condition and select (temp void)
 | 
			
		||||
0:11        Condition
 | 
			
		||||
0:11        Constant:
 | 
			
		||||
0:11          0 (const int)
 | 
			
		||||
0:11        true case is null
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 10
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeInt 32 1
 | 
			
		||||
               7:      6(int) Constant 0
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
                              SelectionMerge 9 None
 | 
			
		||||
                              BranchConditional 7 8 9
 | 
			
		||||
               8:               Label
 | 
			
		||||
                                Branch 9
 | 
			
		||||
               9:             Label
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										86
									
								
								Test/baseResults/hlsl.cast.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										86
									
								
								Test/baseResults/hlsl.cast.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,86 @@
 | 
			
		||||
hlsl.cast.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:5  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:3      Branch: Return with expression
 | 
			
		||||
0:3        add (temp 4-component vector of float)
 | 
			
		||||
0:3          add (temp 4-component vector of float)
 | 
			
		||||
0:3            Construct vec4 (temp 4-component vector of float)
 | 
			
		||||
0:3              'input' (temp 4-component vector of float)
 | 
			
		||||
0:3            Convert int to float (temp 4-component vector of float)
 | 
			
		||||
0:3              Convert float to int (temp 4-component vector of int)
 | 
			
		||||
0:3                'input' (temp 4-component vector of float)
 | 
			
		||||
0:3          Constant:
 | 
			
		||||
0:3            1.198000
 | 
			
		||||
0:3            1.198000
 | 
			
		||||
0:3            1.198000
 | 
			
		||||
0:3            1.198000
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:5  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:3      Branch: Return with expression
 | 
			
		||||
0:3        add (temp 4-component vector of float)
 | 
			
		||||
0:3          add (temp 4-component vector of float)
 | 
			
		||||
0:3            Construct vec4 (temp 4-component vector of float)
 | 
			
		||||
0:3              'input' (temp 4-component vector of float)
 | 
			
		||||
0:3            Convert int to float (temp 4-component vector of float)
 | 
			
		||||
0:3              Convert float to int (temp 4-component vector of int)
 | 
			
		||||
0:3                'input' (temp 4-component vector of float)
 | 
			
		||||
0:3          Constant:
 | 
			
		||||
0:3            1.198000
 | 
			
		||||
0:3            1.198000
 | 
			
		||||
0:3            1.198000
 | 
			
		||||
0:3            1.198000
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 26
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 9  "input"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeFloat 32
 | 
			
		||||
               7:             TypeVector 6(float) 4
 | 
			
		||||
               8:             TypePointer Function 7(fvec4)
 | 
			
		||||
              17:             TypeInt 32 1
 | 
			
		||||
              18:             TypeVector 17(int) 4
 | 
			
		||||
              22:    6(float) Constant 1067014160
 | 
			
		||||
              23:    7(fvec4) ConstantComposite 22 22 22 22
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
        9(input):      8(ptr) Variable Function
 | 
			
		||||
              10:    7(fvec4) Load 9(input)
 | 
			
		||||
              11:    6(float) CompositeExtract 10 0
 | 
			
		||||
              12:    6(float) CompositeExtract 10 1
 | 
			
		||||
              13:    6(float) CompositeExtract 10 2
 | 
			
		||||
              14:    6(float) CompositeExtract 10 3
 | 
			
		||||
              15:    7(fvec4) CompositeConstruct 11 12 13 14
 | 
			
		||||
              16:    7(fvec4) Load 9(input)
 | 
			
		||||
              19:   18(ivec4) ConvertFToS 16
 | 
			
		||||
              20:    7(fvec4) ConvertSToF 19
 | 
			
		||||
              21:    7(fvec4) FAdd 15 20
 | 
			
		||||
              24:    7(fvec4) FAdd 21 23
 | 
			
		||||
                              ReturnValue 24
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										116
									
								
								Test/baseResults/hlsl.doLoop.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										116
									
								
								Test/baseResults/hlsl.doLoop.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,116 @@
 | 
			
		||||
hlsl.doLoop.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:7  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:3      Loop with condition not tested first
 | 
			
		||||
0:3        Loop Condition
 | 
			
		||||
0:3        Constant:
 | 
			
		||||
0:3          false (const bool)
 | 
			
		||||
0:3        No loop body
 | 
			
		||||
0:4      Loop with condition not tested first
 | 
			
		||||
0:4        Loop Condition
 | 
			
		||||
0:4        Constant:
 | 
			
		||||
0:4          false (const bool)
 | 
			
		||||
0:4        No loop body
 | 
			
		||||
0:5      Loop with condition not tested first
 | 
			
		||||
0:5        Loop Condition
 | 
			
		||||
0:5        Compare Equal (temp bool)
 | 
			
		||||
0:5          'input' (temp 4-component vector of float)
 | 
			
		||||
0:5          'input' (temp 4-component vector of float)
 | 
			
		||||
0:5        Loop Body
 | 
			
		||||
0:5        Branch: Return with expression
 | 
			
		||||
0:5          'input' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:7  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:3      Loop with condition not tested first
 | 
			
		||||
0:3        Loop Condition
 | 
			
		||||
0:3        Constant:
 | 
			
		||||
0:3          false (const bool)
 | 
			
		||||
0:3        No loop body
 | 
			
		||||
0:4      Loop with condition not tested first
 | 
			
		||||
0:4        Loop Condition
 | 
			
		||||
0:4        Constant:
 | 
			
		||||
0:4          false (const bool)
 | 
			
		||||
0:4        No loop body
 | 
			
		||||
0:5      Loop with condition not tested first
 | 
			
		||||
0:5        Loop Condition
 | 
			
		||||
0:5        Compare Equal (temp bool)
 | 
			
		||||
0:5          'input' (temp 4-component vector of float)
 | 
			
		||||
0:5          'input' (temp 4-component vector of float)
 | 
			
		||||
0:5        Loop Body
 | 
			
		||||
0:5        Branch: Return with expression
 | 
			
		||||
0:5          'input' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 31
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 23  "input"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
              10:             TypeBool
 | 
			
		||||
              11:    10(bool) ConstantFalse
 | 
			
		||||
              20:             TypeFloat 32
 | 
			
		||||
              21:             TypeVector 20(float) 4
 | 
			
		||||
              22:             TypePointer Function 21(fvec4)
 | 
			
		||||
              28:             TypeVector 10(bool) 4
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
       23(input):     22(ptr) Variable Function
 | 
			
		||||
                              Branch 6
 | 
			
		||||
               6:             Label
 | 
			
		||||
                              LoopMerge 8 9 None
 | 
			
		||||
                              Branch 7
 | 
			
		||||
               7:             Label
 | 
			
		||||
                              Branch 9
 | 
			
		||||
               9:             Label
 | 
			
		||||
                              BranchConditional 11 6 8
 | 
			
		||||
               8:             Label
 | 
			
		||||
                              Branch 12
 | 
			
		||||
              12:             Label
 | 
			
		||||
                              LoopMerge 14 15 None
 | 
			
		||||
                              Branch 13
 | 
			
		||||
              13:             Label
 | 
			
		||||
                              Branch 15
 | 
			
		||||
              15:             Label
 | 
			
		||||
                              BranchConditional 11 12 14
 | 
			
		||||
              14:             Label
 | 
			
		||||
                              Branch 16
 | 
			
		||||
              16:             Label
 | 
			
		||||
                              LoopMerge 18 19 None
 | 
			
		||||
                              Branch 17
 | 
			
		||||
              17:             Label
 | 
			
		||||
              24:   21(fvec4) Load 23(input)
 | 
			
		||||
                              ReturnValue 24
 | 
			
		||||
              19:             Label
 | 
			
		||||
              26:   21(fvec4) Load 23(input)
 | 
			
		||||
              27:   21(fvec4) Load 23(input)
 | 
			
		||||
              29:   28(bvec4) FOrdEqual 26 27
 | 
			
		||||
              30:    10(bool) All 29
 | 
			
		||||
                              BranchConditional 30 16 18
 | 
			
		||||
              18:             Label
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										100
									
								
								Test/baseResults/hlsl.float1.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										100
									
								
								Test/baseResults/hlsl.float1.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,100 @@
 | 
			
		||||
hlsl.float1.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:1  move second child to first child (temp 1-component vector of float)
 | 
			
		||||
0:1    'f1' (temp 1-component vector of float)
 | 
			
		||||
0:1    Constant:
 | 
			
		||||
0:1      1.000000
 | 
			
		||||
0:2  move second child to first child (temp float)
 | 
			
		||||
0:2    'scalar' (temp float)
 | 
			
		||||
0:2    Constant:
 | 
			
		||||
0:2      2.000000
 | 
			
		||||
0:8  Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
 | 
			
		||||
0:5    Function Parameters: 
 | 
			
		||||
0:5      'inFloat1' (temp 1-component vector of float)
 | 
			
		||||
0:5      'inScalar' (temp float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:6      Branch: Return with expression
 | 
			
		||||
0:6        add (temp 1-component vector of float)
 | 
			
		||||
0:6          vector-scale (temp 1-component vector of float)
 | 
			
		||||
0:6            'f1' (temp 1-component vector of float)
 | 
			
		||||
0:6            'scalar' (temp float)
 | 
			
		||||
0:6          vector-scale (temp 1-component vector of float)
 | 
			
		||||
0:6            'inFloat1' (temp 1-component vector of float)
 | 
			
		||||
0:6            'inScalar' (temp float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'f1' (temp 1-component vector of float)
 | 
			
		||||
0:?     'scalar' (temp float)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:1  move second child to first child (temp 1-component vector of float)
 | 
			
		||||
0:1    'f1' (temp 1-component vector of float)
 | 
			
		||||
0:1    Constant:
 | 
			
		||||
0:1      1.000000
 | 
			
		||||
0:2  move second child to first child (temp float)
 | 
			
		||||
0:2    'scalar' (temp float)
 | 
			
		||||
0:2    Constant:
 | 
			
		||||
0:2      2.000000
 | 
			
		||||
0:8  Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
 | 
			
		||||
0:5    Function Parameters: 
 | 
			
		||||
0:5      'inFloat1' (temp 1-component vector of float)
 | 
			
		||||
0:5      'inScalar' (temp float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:6      Branch: Return with expression
 | 
			
		||||
0:6        add (temp 1-component vector of float)
 | 
			
		||||
0:6          vector-scale (temp 1-component vector of float)
 | 
			
		||||
0:6            'f1' (temp 1-component vector of float)
 | 
			
		||||
0:6            'scalar' (temp float)
 | 
			
		||||
0:6          vector-scale (temp 1-component vector of float)
 | 
			
		||||
0:6            'inFloat1' (temp 1-component vector of float)
 | 
			
		||||
0:6            'inScalar' (temp float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'f1' (temp 1-component vector of float)
 | 
			
		||||
0:?     'scalar' (temp float)
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 24
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 11  "ShaderFunction(vf1;f1;"
 | 
			
		||||
                              Name 9  "inFloat1"
 | 
			
		||||
                              Name 10  "inScalar"
 | 
			
		||||
                              Name 13  "f1"
 | 
			
		||||
                              Name 15  "scalar"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeFloat 32
 | 
			
		||||
               7:             TypePointer Function 6(float)
 | 
			
		||||
               8:             TypeFunction 6(float) 7(ptr) 7(ptr)
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
11(ShaderFunction(vf1;f1;):    6(float) Function None 8
 | 
			
		||||
     9(inFloat1):      7(ptr) FunctionParameter
 | 
			
		||||
    10(inScalar):      7(ptr) FunctionParameter
 | 
			
		||||
              12:             Label
 | 
			
		||||
          13(f1):      7(ptr) Variable Function
 | 
			
		||||
      15(scalar):      7(ptr) Variable Function
 | 
			
		||||
              14:    6(float) Load 13(f1)
 | 
			
		||||
              16:    6(float) Load 15(scalar)
 | 
			
		||||
              17:    6(float) IMul 14 16
 | 
			
		||||
              18:    6(float) Load 9(inFloat1)
 | 
			
		||||
              19:    6(float) Load 10(inScalar)
 | 
			
		||||
              20:    6(float) IMul 18 19
 | 
			
		||||
              21:    6(float) FAdd 17 20
 | 
			
		||||
                              ReturnValue 21
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										79
									
								
								Test/baseResults/hlsl.float4.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										79
									
								
								Test/baseResults/hlsl.float4.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,79 @@
 | 
			
		||||
hlsl.float4.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:1  move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:1    'AmbientColor' (temp 4-component vector of float)
 | 
			
		||||
0:?     Constant:
 | 
			
		||||
0:?       1.000000
 | 
			
		||||
0:?       0.500000
 | 
			
		||||
0:?       0.000000
 | 
			
		||||
0:?       1.000000
 | 
			
		||||
0:7  Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:4    Function Parameters: 
 | 
			
		||||
0:4      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:5      Branch: Return with expression
 | 
			
		||||
0:5        component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:5          'input' (temp 4-component vector of float)
 | 
			
		||||
0:5          'AmbientColor' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'AmbientColor' (temp 4-component vector of float)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:1  move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:1    'AmbientColor' (temp 4-component vector of float)
 | 
			
		||||
0:?     Constant:
 | 
			
		||||
0:?       1.000000
 | 
			
		||||
0:?       0.500000
 | 
			
		||||
0:?       0.000000
 | 
			
		||||
0:?       1.000000
 | 
			
		||||
0:7  Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:4    Function Parameters: 
 | 
			
		||||
0:4      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:5      Branch: Return with expression
 | 
			
		||||
0:5        component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:5          'input' (temp 4-component vector of float)
 | 
			
		||||
0:5          'AmbientColor' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'AmbientColor' (temp 4-component vector of float)
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 19
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 11  "ShaderFunction(vf4;"
 | 
			
		||||
                              Name 10  "input"
 | 
			
		||||
                              Name 14  "AmbientColor"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeFloat 32
 | 
			
		||||
               7:             TypeVector 6(float) 4
 | 
			
		||||
               8:             TypePointer Function 7(fvec4)
 | 
			
		||||
               9:             TypeFunction 7(fvec4) 8(ptr)
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
11(ShaderFunction(vf4;):    7(fvec4) Function None 9
 | 
			
		||||
       10(input):      8(ptr) FunctionParameter
 | 
			
		||||
              12:             Label
 | 
			
		||||
14(AmbientColor):      8(ptr) Variable Function
 | 
			
		||||
              13:    7(fvec4) Load 10(input)
 | 
			
		||||
              15:    7(fvec4) Load 14(AmbientColor)
 | 
			
		||||
              16:    7(fvec4) FMul 13 15
 | 
			
		||||
                              ReturnValue 16
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										220
									
								
								Test/baseResults/hlsl.forLoop.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										220
									
								
								Test/baseResults/hlsl.forLoop.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,220 @@
 | 
			
		||||
hlsl.forLoop.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:9  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:?       Sequence
 | 
			
		||||
0:3        Loop with condition tested first
 | 
			
		||||
0:3          No loop condition
 | 
			
		||||
0:3          No loop body
 | 
			
		||||
0:4      Sequence
 | 
			
		||||
0:4        Pre-Increment (temp 4-component vector of float)
 | 
			
		||||
0:4          'input' (temp 4-component vector of float)
 | 
			
		||||
0:4        Loop with condition tested first
 | 
			
		||||
0:4          No loop condition
 | 
			
		||||
0:4          No loop body
 | 
			
		||||
0:?       Sequence
 | 
			
		||||
0:5        Loop with condition tested first
 | 
			
		||||
0:5          Loop Condition
 | 
			
		||||
0:5          Compare Not Equal (temp bool)
 | 
			
		||||
0:5            'input' (temp 4-component vector of float)
 | 
			
		||||
0:5            'input' (temp 4-component vector of float)
 | 
			
		||||
0:5          No loop body
 | 
			
		||||
0:?       Sequence
 | 
			
		||||
0:6        Loop with condition tested first
 | 
			
		||||
0:6          Loop Condition
 | 
			
		||||
0:6          Compare Not Equal (temp bool)
 | 
			
		||||
0:6            'input' (temp 4-component vector of float)
 | 
			
		||||
0:6            'input' (temp 4-component vector of float)
 | 
			
		||||
0:6          Loop Body
 | 
			
		||||
0:?           Sequence
 | 
			
		||||
0:6            Branch: Return with expression
 | 
			
		||||
0:6              Negate value (temp 4-component vector of float)
 | 
			
		||||
0:6                'input' (temp 4-component vector of float)
 | 
			
		||||
0:7      Sequence
 | 
			
		||||
0:7        Pre-Decrement (temp 4-component vector of float)
 | 
			
		||||
0:7          'input' (temp 4-component vector of float)
 | 
			
		||||
0:7        Loop with condition tested first
 | 
			
		||||
0:7          Loop Condition
 | 
			
		||||
0:7          Compare Not Equal (temp bool)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:7          Loop Body
 | 
			
		||||
0:?           Sequence
 | 
			
		||||
0:7            Branch: Return with expression
 | 
			
		||||
0:7              Negate value (temp 4-component vector of float)
 | 
			
		||||
0:7                'input' (temp 4-component vector of float)
 | 
			
		||||
0:7          Loop Terminal Expression
 | 
			
		||||
0:7          add second child into first child (temp 4-component vector of float)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:7            Constant:
 | 
			
		||||
0:7              2.000000
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:9  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:?       Sequence
 | 
			
		||||
0:3        Loop with condition tested first
 | 
			
		||||
0:3          No loop condition
 | 
			
		||||
0:3          No loop body
 | 
			
		||||
0:4      Sequence
 | 
			
		||||
0:4        Pre-Increment (temp 4-component vector of float)
 | 
			
		||||
0:4          'input' (temp 4-component vector of float)
 | 
			
		||||
0:4        Loop with condition tested first
 | 
			
		||||
0:4          No loop condition
 | 
			
		||||
0:4          No loop body
 | 
			
		||||
0:?       Sequence
 | 
			
		||||
0:5        Loop with condition tested first
 | 
			
		||||
0:5          Loop Condition
 | 
			
		||||
0:5          Compare Not Equal (temp bool)
 | 
			
		||||
0:5            'input' (temp 4-component vector of float)
 | 
			
		||||
0:5            'input' (temp 4-component vector of float)
 | 
			
		||||
0:5          No loop body
 | 
			
		||||
0:?       Sequence
 | 
			
		||||
0:6        Loop with condition tested first
 | 
			
		||||
0:6          Loop Condition
 | 
			
		||||
0:6          Compare Not Equal (temp bool)
 | 
			
		||||
0:6            'input' (temp 4-component vector of float)
 | 
			
		||||
0:6            'input' (temp 4-component vector of float)
 | 
			
		||||
0:6          Loop Body
 | 
			
		||||
0:?           Sequence
 | 
			
		||||
0:6            Branch: Return with expression
 | 
			
		||||
0:6              Negate value (temp 4-component vector of float)
 | 
			
		||||
0:6                'input' (temp 4-component vector of float)
 | 
			
		||||
0:7      Sequence
 | 
			
		||||
0:7        Pre-Decrement (temp 4-component vector of float)
 | 
			
		||||
0:7          'input' (temp 4-component vector of float)
 | 
			
		||||
0:7        Loop with condition tested first
 | 
			
		||||
0:7          Loop Condition
 | 
			
		||||
0:7          Compare Not Equal (temp bool)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:7          Loop Body
 | 
			
		||||
0:?           Sequence
 | 
			
		||||
0:7            Branch: Return with expression
 | 
			
		||||
0:7              Negate value (temp 4-component vector of float)
 | 
			
		||||
0:7                'input' (temp 4-component vector of float)
 | 
			
		||||
0:7          Loop Terminal Expression
 | 
			
		||||
0:7          add second child into first child (temp 4-component vector of float)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:7            Constant:
 | 
			
		||||
0:7              2.000000
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 64
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 13  "input"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
              10:             TypeFloat 32
 | 
			
		||||
              11:             TypeVector 10(float) 4
 | 
			
		||||
              12:             TypePointer Function 11(fvec4)
 | 
			
		||||
              15:   10(float) Constant 1065353216
 | 
			
		||||
              29:             TypeBool
 | 
			
		||||
              30:             TypeVector 29(bool) 4
 | 
			
		||||
              60:   10(float) Constant 1073741824
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
       13(input):     12(ptr) Variable Function
 | 
			
		||||
                              Branch 6
 | 
			
		||||
               6:             Label
 | 
			
		||||
                              LoopMerge 8 9 None
 | 
			
		||||
                              Branch 7
 | 
			
		||||
               7:             Label
 | 
			
		||||
                              Branch 9
 | 
			
		||||
               9:             Label
 | 
			
		||||
                              Branch 6
 | 
			
		||||
               8:             Label
 | 
			
		||||
              14:   11(fvec4) Load 13(input)
 | 
			
		||||
              16:   11(fvec4) CompositeConstruct 15 15 15 15
 | 
			
		||||
              17:   11(fvec4) FAdd 14 16
 | 
			
		||||
                              Store 13(input) 17
 | 
			
		||||
                              Branch 18
 | 
			
		||||
              18:             Label
 | 
			
		||||
                              LoopMerge 20 21 None
 | 
			
		||||
                              Branch 19
 | 
			
		||||
              19:             Label
 | 
			
		||||
                              Branch 21
 | 
			
		||||
              21:             Label
 | 
			
		||||
                              Branch 18
 | 
			
		||||
              20:             Label
 | 
			
		||||
                              Branch 22
 | 
			
		||||
              22:             Label
 | 
			
		||||
                              LoopMerge 24 25 None
 | 
			
		||||
                              Branch 26
 | 
			
		||||
              26:             Label
 | 
			
		||||
              27:   11(fvec4) Load 13(input)
 | 
			
		||||
              28:   11(fvec4) Load 13(input)
 | 
			
		||||
              31:   30(bvec4) FOrdNotEqual 27 28
 | 
			
		||||
              32:    29(bool) Any 31
 | 
			
		||||
                              BranchConditional 32 23 24
 | 
			
		||||
              23:               Label
 | 
			
		||||
                                Branch 25
 | 
			
		||||
              25:               Label
 | 
			
		||||
                                Branch 22
 | 
			
		||||
              24:             Label
 | 
			
		||||
                              Branch 33
 | 
			
		||||
              33:             Label
 | 
			
		||||
                              LoopMerge 35 36 None
 | 
			
		||||
                              Branch 37
 | 
			
		||||
              37:             Label
 | 
			
		||||
              38:   11(fvec4) Load 13(input)
 | 
			
		||||
              39:   11(fvec4) Load 13(input)
 | 
			
		||||
              40:   30(bvec4) FOrdNotEqual 38 39
 | 
			
		||||
              41:    29(bool) Any 40
 | 
			
		||||
                              BranchConditional 41 34 35
 | 
			
		||||
              34:               Label
 | 
			
		||||
              42:   11(fvec4)   Load 13(input)
 | 
			
		||||
              43:   11(fvec4)   FNegate 42
 | 
			
		||||
                                ReturnValue 43
 | 
			
		||||
              36:               Label
 | 
			
		||||
                                Branch 33
 | 
			
		||||
              35:             Label
 | 
			
		||||
              45:   11(fvec4) Load 13(input)
 | 
			
		||||
              46:   11(fvec4) CompositeConstruct 15 15 15 15
 | 
			
		||||
              47:   11(fvec4) FSub 45 46
 | 
			
		||||
                              Store 13(input) 47
 | 
			
		||||
                              Branch 48
 | 
			
		||||
              48:             Label
 | 
			
		||||
                              LoopMerge 50 51 None
 | 
			
		||||
                              Branch 52
 | 
			
		||||
              52:             Label
 | 
			
		||||
              53:   11(fvec4) Load 13(input)
 | 
			
		||||
              54:   11(fvec4) Load 13(input)
 | 
			
		||||
              55:   30(bvec4) FOrdNotEqual 53 54
 | 
			
		||||
              56:    29(bool) Any 55
 | 
			
		||||
                              BranchConditional 56 49 50
 | 
			
		||||
              49:               Label
 | 
			
		||||
              57:   11(fvec4)   Load 13(input)
 | 
			
		||||
              58:   11(fvec4)   FNegate 57
 | 
			
		||||
                                ReturnValue 58
 | 
			
		||||
              51:               Label
 | 
			
		||||
              61:   11(fvec4)   Load 13(input)
 | 
			
		||||
              62:   11(fvec4)   CompositeConstruct 60 60 60 60
 | 
			
		||||
              63:   11(fvec4)   FAdd 61 62
 | 
			
		||||
                                Store 13(input) 63
 | 
			
		||||
                                Branch 48
 | 
			
		||||
              50:             Label
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										160
									
								
								Test/baseResults/hlsl.frag.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								Test/baseResults/hlsl.frag.out
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,160 @@
 | 
			
		||||
hlsl.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:1  move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:1    'AmbientColor' (temp 4-component vector of float)
 | 
			
		||||
0:?     Constant:
 | 
			
		||||
0:?       1.000000
 | 
			
		||||
0:?       0.500000
 | 
			
		||||
0:?       0.000000
 | 
			
		||||
0:?       1.000000
 | 
			
		||||
0:2  move second child to first child (temp float)
 | 
			
		||||
0:2    'AmbientIntensity' (temp float)
 | 
			
		||||
0:2    Constant:
 | 
			
		||||
0:2      0.100000
 | 
			
		||||
0:13  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:5    Function Parameters: 
 | 
			
		||||
0:5      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:6      Branch: Return with expression
 | 
			
		||||
0:6        add (temp 4-component vector of float)
 | 
			
		||||
0:6          vector-scale (temp 4-component vector of float)
 | 
			
		||||
0:6            'input' (temp 4-component vector of float)
 | 
			
		||||
0:6            'AmbientIntensity' (temp float)
 | 
			
		||||
0:6          'AmbientColor' (temp 4-component vector of float)
 | 
			
		||||
0:7      Branch: Return with expression
 | 
			
		||||
0:7        add (temp 4-component vector of float)
 | 
			
		||||
0:7          component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:7          component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:8      Branch: Return with expression
 | 
			
		||||
0:8        add (temp 4-component vector of float)
 | 
			
		||||
0:8          add (temp 4-component vector of float)
 | 
			
		||||
0:8            'input' (temp 4-component vector of float)
 | 
			
		||||
0:8            component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:8              'input' (temp 4-component vector of float)
 | 
			
		||||
0:8              'input' (temp 4-component vector of float)
 | 
			
		||||
0:8          'input' (temp 4-component vector of float)
 | 
			
		||||
0:9      Branch: Return with expression
 | 
			
		||||
0:9        component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:9          Pre-Increment (temp 4-component vector of float)
 | 
			
		||||
0:9            'input' (temp 4-component vector of float)
 | 
			
		||||
0:9          Negate value (temp 4-component vector of float)
 | 
			
		||||
0:9            Negate value (temp 4-component vector of float)
 | 
			
		||||
0:9              Pre-Decrement (temp 4-component vector of float)
 | 
			
		||||
0:9                'input' (temp 4-component vector of float)
 | 
			
		||||
0:10      Branch: Return with expression
 | 
			
		||||
0:10        add (temp 4-component vector of float)
 | 
			
		||||
0:10          Post-Increment (temp 4-component vector of float)
 | 
			
		||||
0:10            'input' (temp 4-component vector of float)
 | 
			
		||||
0:10          Pre-Increment (temp 4-component vector of float)
 | 
			
		||||
0:10            'input' (temp 4-component vector of float)
 | 
			
		||||
0:11      Branch: Return with expression
 | 
			
		||||
0:11        sine (global 4-component vector of float)
 | 
			
		||||
0:11          'input' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'AmbientColor' (temp 4-component vector of float)
 | 
			
		||||
0:?     'AmbientIntensity' (temp float)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:1  move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:1    'AmbientColor' (temp 4-component vector of float)
 | 
			
		||||
0:?     Constant:
 | 
			
		||||
0:?       1.000000
 | 
			
		||||
0:?       0.500000
 | 
			
		||||
0:?       0.000000
 | 
			
		||||
0:?       1.000000
 | 
			
		||||
0:2  move second child to first child (temp float)
 | 
			
		||||
0:2    'AmbientIntensity' (temp float)
 | 
			
		||||
0:2    Constant:
 | 
			
		||||
0:2      0.100000
 | 
			
		||||
0:13  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:5    Function Parameters: 
 | 
			
		||||
0:5      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:6      Branch: Return with expression
 | 
			
		||||
0:6        add (temp 4-component vector of float)
 | 
			
		||||
0:6          vector-scale (temp 4-component vector of float)
 | 
			
		||||
0:6            'input' (temp 4-component vector of float)
 | 
			
		||||
0:6            'AmbientIntensity' (temp float)
 | 
			
		||||
0:6          'AmbientColor' (temp 4-component vector of float)
 | 
			
		||||
0:7      Branch: Return with expression
 | 
			
		||||
0:7        add (temp 4-component vector of float)
 | 
			
		||||
0:7          component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:7          component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:7            'input' (temp 4-component vector of float)
 | 
			
		||||
0:8      Branch: Return with expression
 | 
			
		||||
0:8        add (temp 4-component vector of float)
 | 
			
		||||
0:8          add (temp 4-component vector of float)
 | 
			
		||||
0:8            'input' (temp 4-component vector of float)
 | 
			
		||||
0:8            component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:8              'input' (temp 4-component vector of float)
 | 
			
		||||
0:8              'input' (temp 4-component vector of float)
 | 
			
		||||
0:8          'input' (temp 4-component vector of float)
 | 
			
		||||
0:9      Branch: Return with expression
 | 
			
		||||
0:9        component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:9          Pre-Increment (temp 4-component vector of float)
 | 
			
		||||
0:9            'input' (temp 4-component vector of float)
 | 
			
		||||
0:9          Negate value (temp 4-component vector of float)
 | 
			
		||||
0:9            Negate value (temp 4-component vector of float)
 | 
			
		||||
0:9              Pre-Decrement (temp 4-component vector of float)
 | 
			
		||||
0:9                'input' (temp 4-component vector of float)
 | 
			
		||||
0:10      Branch: Return with expression
 | 
			
		||||
0:10        add (temp 4-component vector of float)
 | 
			
		||||
0:10          Post-Increment (temp 4-component vector of float)
 | 
			
		||||
0:10            'input' (temp 4-component vector of float)
 | 
			
		||||
0:10          Pre-Increment (temp 4-component vector of float)
 | 
			
		||||
0:10            'input' (temp 4-component vector of float)
 | 
			
		||||
0:11      Branch: Return with expression
 | 
			
		||||
0:11        sine (global 4-component vector of float)
 | 
			
		||||
0:11          'input' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'AmbientColor' (temp 4-component vector of float)
 | 
			
		||||
0:?     'AmbientIntensity' (temp float)
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 57
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 9  "input"
 | 
			
		||||
                              Name 12  "AmbientIntensity"
 | 
			
		||||
                              Name 15  "AmbientColor"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeFloat 32
 | 
			
		||||
               7:             TypeVector 6(float) 4
 | 
			
		||||
               8:             TypePointer Function 7(fvec4)
 | 
			
		||||
              11:             TypePointer Function 6(float)
 | 
			
		||||
              36:    6(float) Constant 1065353216
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
        9(input):      8(ptr) Variable Function
 | 
			
		||||
12(AmbientIntensity):     11(ptr) Variable Function
 | 
			
		||||
15(AmbientColor):      8(ptr) Variable Function
 | 
			
		||||
              10:    7(fvec4) Load 9(input)
 | 
			
		||||
              13:    6(float) Load 12(AmbientIntensity)
 | 
			
		||||
              14:    7(fvec4) VectorTimesScalar 10 13
 | 
			
		||||
              16:    7(fvec4) Load 15(AmbientColor)
 | 
			
		||||
              17:    7(fvec4) FAdd 14 16
 | 
			
		||||
                              ReturnValue 17
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										223
									
								
								Test/baseResults/hlsl.if.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										223
									
								
								Test/baseResults/hlsl.if.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,223 @@
 | 
			
		||||
hlsl.if.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:29  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:3      Test condition and select (temp void)
 | 
			
		||||
0:3        Condition
 | 
			
		||||
0:3        Compare Equal (temp bool)
 | 
			
		||||
0:3          'input' (temp 4-component vector of float)
 | 
			
		||||
0:3          'input' (temp 4-component vector of float)
 | 
			
		||||
0:3        true case
 | 
			
		||||
0:4        Branch: Return with expression
 | 
			
		||||
0:4          'input' (temp 4-component vector of float)
 | 
			
		||||
0:6      Test condition and select (temp void)
 | 
			
		||||
0:6        Condition
 | 
			
		||||
0:6        Compare Equal (temp bool)
 | 
			
		||||
0:6          'input' (temp 4-component vector of float)
 | 
			
		||||
0:6          'input' (temp 4-component vector of float)
 | 
			
		||||
0:6        true case
 | 
			
		||||
0:7        Branch: Return with expression
 | 
			
		||||
0:7          'input' (temp 4-component vector of float)
 | 
			
		||||
0:6        false case
 | 
			
		||||
0:9        Branch: Return with expression
 | 
			
		||||
0:9          Negate value (temp 4-component vector of float)
 | 
			
		||||
0:9            'input' (temp 4-component vector of float)
 | 
			
		||||
0:11      Test condition and select (temp void)
 | 
			
		||||
0:11        Condition
 | 
			
		||||
0:11        Compare Equal (temp bool)
 | 
			
		||||
0:11          'input' (temp 4-component vector of float)
 | 
			
		||||
0:11          'input' (temp 4-component vector of float)
 | 
			
		||||
0:11        true case is null
 | 
			
		||||
0:14      Test condition and select (temp void)
 | 
			
		||||
0:14        Condition
 | 
			
		||||
0:14        Compare Equal (temp bool)
 | 
			
		||||
0:14          'input' (temp 4-component vector of float)
 | 
			
		||||
0:14          'input' (temp 4-component vector of float)
 | 
			
		||||
0:14        true case is null
 | 
			
		||||
0:19      Test condition and select (temp void)
 | 
			
		||||
0:19        Condition
 | 
			
		||||
0:19        Compare Equal (temp bool)
 | 
			
		||||
0:19          'input' (temp 4-component vector of float)
 | 
			
		||||
0:19          'input' (temp 4-component vector of float)
 | 
			
		||||
0:19        true case
 | 
			
		||||
0:?         Sequence
 | 
			
		||||
0:20          Branch: Return with expression
 | 
			
		||||
0:20            'input' (temp 4-component vector of float)
 | 
			
		||||
0:23      Test condition and select (temp void)
 | 
			
		||||
0:23        Condition
 | 
			
		||||
0:23        Compare Equal (temp bool)
 | 
			
		||||
0:23          'input' (temp 4-component vector of float)
 | 
			
		||||
0:23          'input' (temp 4-component vector of float)
 | 
			
		||||
0:23        true case
 | 
			
		||||
0:?         Sequence
 | 
			
		||||
0:24          Branch: Return with expression
 | 
			
		||||
0:24            'input' (temp 4-component vector of float)
 | 
			
		||||
0:23        false case
 | 
			
		||||
0:?         Sequence
 | 
			
		||||
0:26          Branch: Return with expression
 | 
			
		||||
0:26            Negate value (temp 4-component vector of float)
 | 
			
		||||
0:26              'input' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:29  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:3      Test condition and select (temp void)
 | 
			
		||||
0:3        Condition
 | 
			
		||||
0:3        Compare Equal (temp bool)
 | 
			
		||||
0:3          'input' (temp 4-component vector of float)
 | 
			
		||||
0:3          'input' (temp 4-component vector of float)
 | 
			
		||||
0:3        true case
 | 
			
		||||
0:4        Branch: Return with expression
 | 
			
		||||
0:4          'input' (temp 4-component vector of float)
 | 
			
		||||
0:6      Test condition and select (temp void)
 | 
			
		||||
0:6        Condition
 | 
			
		||||
0:6        Compare Equal (temp bool)
 | 
			
		||||
0:6          'input' (temp 4-component vector of float)
 | 
			
		||||
0:6          'input' (temp 4-component vector of float)
 | 
			
		||||
0:6        true case
 | 
			
		||||
0:7        Branch: Return with expression
 | 
			
		||||
0:7          'input' (temp 4-component vector of float)
 | 
			
		||||
0:6        false case
 | 
			
		||||
0:9        Branch: Return with expression
 | 
			
		||||
0:9          Negate value (temp 4-component vector of float)
 | 
			
		||||
0:9            'input' (temp 4-component vector of float)
 | 
			
		||||
0:11      Test condition and select (temp void)
 | 
			
		||||
0:11        Condition
 | 
			
		||||
0:11        Compare Equal (temp bool)
 | 
			
		||||
0:11          'input' (temp 4-component vector of float)
 | 
			
		||||
0:11          'input' (temp 4-component vector of float)
 | 
			
		||||
0:11        true case is null
 | 
			
		||||
0:14      Test condition and select (temp void)
 | 
			
		||||
0:14        Condition
 | 
			
		||||
0:14        Compare Equal (temp bool)
 | 
			
		||||
0:14          'input' (temp 4-component vector of float)
 | 
			
		||||
0:14          'input' (temp 4-component vector of float)
 | 
			
		||||
0:14        true case is null
 | 
			
		||||
0:19      Test condition and select (temp void)
 | 
			
		||||
0:19        Condition
 | 
			
		||||
0:19        Compare Equal (temp bool)
 | 
			
		||||
0:19          'input' (temp 4-component vector of float)
 | 
			
		||||
0:19          'input' (temp 4-component vector of float)
 | 
			
		||||
0:19        true case
 | 
			
		||||
0:?         Sequence
 | 
			
		||||
0:20          Branch: Return with expression
 | 
			
		||||
0:20            'input' (temp 4-component vector of float)
 | 
			
		||||
0:23      Test condition and select (temp void)
 | 
			
		||||
0:23        Condition
 | 
			
		||||
0:23        Compare Equal (temp bool)
 | 
			
		||||
0:23          'input' (temp 4-component vector of float)
 | 
			
		||||
0:23          'input' (temp 4-component vector of float)
 | 
			
		||||
0:23        true case
 | 
			
		||||
0:?         Sequence
 | 
			
		||||
0:24          Branch: Return with expression
 | 
			
		||||
0:24            'input' (temp 4-component vector of float)
 | 
			
		||||
0:23        false case
 | 
			
		||||
0:?         Sequence
 | 
			
		||||
0:26          Branch: Return with expression
 | 
			
		||||
0:26            Negate value (temp 4-component vector of float)
 | 
			
		||||
0:26              'input' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 64
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 9  "input"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeFloat 32
 | 
			
		||||
               7:             TypeVector 6(float) 4
 | 
			
		||||
               8:             TypePointer Function 7(fvec4)
 | 
			
		||||
              12:             TypeBool
 | 
			
		||||
              13:             TypeVector 12(bool) 4
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
        9(input):      8(ptr) Variable Function
 | 
			
		||||
              10:    7(fvec4) Load 9(input)
 | 
			
		||||
              11:    7(fvec4) Load 9(input)
 | 
			
		||||
              14:   13(bvec4) FOrdEqual 10 11
 | 
			
		||||
              15:    12(bool) All 14
 | 
			
		||||
                              SelectionMerge 17 None
 | 
			
		||||
                              BranchConditional 15 16 17
 | 
			
		||||
              16:               Label
 | 
			
		||||
              18:    7(fvec4)   Load 9(input)
 | 
			
		||||
                                ReturnValue 18
 | 
			
		||||
              17:             Label
 | 
			
		||||
              20:    7(fvec4) Load 9(input)
 | 
			
		||||
              21:    7(fvec4) Load 9(input)
 | 
			
		||||
              22:   13(bvec4) FOrdEqual 20 21
 | 
			
		||||
              23:    12(bool) All 22
 | 
			
		||||
                              SelectionMerge 25 None
 | 
			
		||||
                              BranchConditional 23 24 28
 | 
			
		||||
              24:               Label
 | 
			
		||||
              26:    7(fvec4)   Load 9(input)
 | 
			
		||||
                                ReturnValue 26
 | 
			
		||||
              28:               Label
 | 
			
		||||
              29:    7(fvec4)   Load 9(input)
 | 
			
		||||
              30:    7(fvec4)   FNegate 29
 | 
			
		||||
                                ReturnValue 30
 | 
			
		||||
              25:             Label
 | 
			
		||||
              32:    7(fvec4) Load 9(input)
 | 
			
		||||
              33:    7(fvec4) Load 9(input)
 | 
			
		||||
              34:   13(bvec4) FOrdEqual 32 33
 | 
			
		||||
              35:    12(bool) All 34
 | 
			
		||||
                              SelectionMerge 37 None
 | 
			
		||||
                              BranchConditional 35 36 37
 | 
			
		||||
              36:               Label
 | 
			
		||||
                                Branch 37
 | 
			
		||||
              37:             Label
 | 
			
		||||
              38:    7(fvec4) Load 9(input)
 | 
			
		||||
              39:    7(fvec4) Load 9(input)
 | 
			
		||||
              40:   13(bvec4) FOrdEqual 38 39
 | 
			
		||||
              41:    12(bool) All 40
 | 
			
		||||
                              SelectionMerge 43 None
 | 
			
		||||
                              BranchConditional 41 42 43
 | 
			
		||||
              42:               Label
 | 
			
		||||
                                Branch 43
 | 
			
		||||
              43:             Label
 | 
			
		||||
              44:    7(fvec4) Load 9(input)
 | 
			
		||||
              45:    7(fvec4) Load 9(input)
 | 
			
		||||
              46:   13(bvec4) FOrdEqual 44 45
 | 
			
		||||
              47:    12(bool) All 46
 | 
			
		||||
                              SelectionMerge 49 None
 | 
			
		||||
                              BranchConditional 47 48 49
 | 
			
		||||
              48:               Label
 | 
			
		||||
              50:    7(fvec4)   Load 9(input)
 | 
			
		||||
                                ReturnValue 50
 | 
			
		||||
              49:             Label
 | 
			
		||||
              52:    7(fvec4) Load 9(input)
 | 
			
		||||
              53:    7(fvec4) Load 9(input)
 | 
			
		||||
              54:   13(bvec4) FOrdEqual 52 53
 | 
			
		||||
              55:    12(bool) All 54
 | 
			
		||||
                              SelectionMerge 57 None
 | 
			
		||||
                              BranchConditional 55 56 60
 | 
			
		||||
              56:               Label
 | 
			
		||||
              58:    7(fvec4)   Load 9(input)
 | 
			
		||||
                                ReturnValue 58
 | 
			
		||||
              60:               Label
 | 
			
		||||
              61:    7(fvec4)   Load 9(input)
 | 
			
		||||
              62:    7(fvec4)   FNegate 61
 | 
			
		||||
                                ReturnValue 62
 | 
			
		||||
              57:             Label
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										2178
									
								
								Test/baseResults/hlsl.intrinsics.frag.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2178
									
								
								Test/baseResults/hlsl.intrinsics.frag.out
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										702
									
								
								Test/baseResults/hlsl.intrinsics.negative.frag.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										702
									
								
								Test/baseResults/hlsl.intrinsics.negative.frag.out
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,702 @@
 | 
			
		||||
hlsl.intrinsics.negative.frag
 | 
			
		||||
ERROR: 0:5: 'asdouble' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:6: 'CheckAccessFullyMapped' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:7: 'countbits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:8: 'cross' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:9: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:10: 'determinant' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:12: 'f16tof32' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:13: 'firstbithigh' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:14: 'firstbitlow' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:15: 'fma' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:23: 'length' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:24: 'msad4' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:25: 'normalize' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:26: 'reflect' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:27: 'refract' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:28: 'refract' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:29: 'reversebits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:30: 'transpose' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:39: 'GetRenderTargetSamplePosition' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:46: 'asdouble' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:47: 'CheckAccessFullyMapped' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:48: 'countbits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:49: 'cross' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:50: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:51: 'determinant' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:52: 'f16tof32' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:53: 'firstbithigh' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:54: 'firstbitlow' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:55: 'fma' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:56: 'reversebits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:57: 'transpose' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:64: 'CheckAccessFullyMapped' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:65: 'countbits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:66: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:67: 'determinant' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:68: 'f16tof32' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:69: 'firstbithigh' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:70: 'firstbitlow' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:71: 'fma' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:72: 'reversebits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:73: 'transpose' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:81: 'CheckAccessFullyMapped' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:82: 'countbits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:83: 'cross' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:84: 'determinant' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:85: 'f16tof32' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:86: 'firstbithigh' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:87: 'firstbitlow' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:88: 'fma' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:89: 'reversebits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:90: 'transpose' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'countbits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'cross' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'f16tof32' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'firstbithigh' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'firstbitlow' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'fma' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'reversebits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'length' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'noise' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'normalize' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'reflect' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'refract' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:118: 'reversebits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'countbits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'cross' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'f16tof32' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'firstbithigh' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'firstbitlow' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'fma' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'reversebits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'length' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'noise' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'normalize' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'reflect' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'refract' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:126: 'reversebits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'countbits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'cross' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'f16tof32' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'firstbithigh' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'firstbitlow' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'fma' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'reversebits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'length' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'noise' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'normalize' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'reflect' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'refract' : no matching overloaded function found 
 | 
			
		||||
ERROR: 0:134: 'reversebits' : no matching overloaded function found 
 | 
			
		||||
ERROR: 93 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
ERROR: node is still EOpNull!
 | 
			
		||||
0:35  Function Definition: PixelShaderFunction(f1;f1;f1;i1; (temp float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'inF0' (temp float)
 | 
			
		||||
0:2      'inF1' (temp float)
 | 
			
		||||
0:2      'inF2' (temp float)
 | 
			
		||||
0:2      'inI0' (temp int)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:5      Constant:
 | 
			
		||||
0:5        0.000000
 | 
			
		||||
0:6      Constant:
 | 
			
		||||
0:6        0.000000
 | 
			
		||||
0:7      Constant:
 | 
			
		||||
0:7        0.000000
 | 
			
		||||
0:8      Constant:
 | 
			
		||||
0:8        0.000000
 | 
			
		||||
0:9      Constant:
 | 
			
		||||
0:9        0.000000
 | 
			
		||||
0:10      Constant:
 | 
			
		||||
0:10        0.000000
 | 
			
		||||
0:12      Constant:
 | 
			
		||||
0:12        0.000000
 | 
			
		||||
0:13      Constant:
 | 
			
		||||
0:13        0.000000
 | 
			
		||||
0:14      Constant:
 | 
			
		||||
0:14        0.000000
 | 
			
		||||
0:15      Constant:
 | 
			
		||||
0:15        0.000000
 | 
			
		||||
0:23      Constant:
 | 
			
		||||
0:23        0.000000
 | 
			
		||||
0:24      Constant:
 | 
			
		||||
0:24        0.000000
 | 
			
		||||
0:25      Constant:
 | 
			
		||||
0:25        0.000000
 | 
			
		||||
0:26      Constant:
 | 
			
		||||
0:26        0.000000
 | 
			
		||||
0:27      Constant:
 | 
			
		||||
0:27        0.000000
 | 
			
		||||
0:28      Constant:
 | 
			
		||||
0:28        0.000000
 | 
			
		||||
0:29      Constant:
 | 
			
		||||
0:29        0.000000
 | 
			
		||||
0:30      Constant:
 | 
			
		||||
0:30        0.000000
 | 
			
		||||
0:32      Branch: Return with expression
 | 
			
		||||
0:32        Constant:
 | 
			
		||||
0:32          0.000000
 | 
			
		||||
0:44  Function Definition: PixelShaderFunction(vf1;vf1;vf1;i1; (temp 1-component vector of float)
 | 
			
		||||
0:36    Function Parameters: 
 | 
			
		||||
0:36      'inF0' (temp 1-component vector of float)
 | 
			
		||||
0:36      'inF1' (temp 1-component vector of float)
 | 
			
		||||
0:36      'inF2' (temp 1-component vector of float)
 | 
			
		||||
0:36      'inI0' (temp int)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:39      Constant:
 | 
			
		||||
0:39        0.000000
 | 
			
		||||
0:41      Branch: Return with expression
 | 
			
		||||
0:41        Constant:
 | 
			
		||||
0:41          0.000000
 | 
			
		||||
0:62  Function Definition: PixelShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
 | 
			
		||||
0:45    Function Parameters: 
 | 
			
		||||
0:45      'inF0' (temp 2-component vector of float)
 | 
			
		||||
0:45      'inF1' (temp 2-component vector of float)
 | 
			
		||||
0:45      'inF2' (temp 2-component vector of float)
 | 
			
		||||
0:45      'inI0' (temp 2-component vector of int)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:46      Constant:
 | 
			
		||||
0:46        0.000000
 | 
			
		||||
0:47      Constant:
 | 
			
		||||
0:47        0.000000
 | 
			
		||||
0:48      Constant:
 | 
			
		||||
0:48        0.000000
 | 
			
		||||
0:49      Constant:
 | 
			
		||||
0:49        0.000000
 | 
			
		||||
0:50      Constant:
 | 
			
		||||
0:50        0.000000
 | 
			
		||||
0:51      Constant:
 | 
			
		||||
0:51        0.000000
 | 
			
		||||
0:52      Constant:
 | 
			
		||||
0:52        0.000000
 | 
			
		||||
0:53      Constant:
 | 
			
		||||
0:53        0.000000
 | 
			
		||||
0:54      Constant:
 | 
			
		||||
0:54        0.000000
 | 
			
		||||
0:55      Constant:
 | 
			
		||||
0:55        0.000000
 | 
			
		||||
0:56      Constant:
 | 
			
		||||
0:56        0.000000
 | 
			
		||||
0:57      Constant:
 | 
			
		||||
0:57        0.000000
 | 
			
		||||
0:59      Branch: Return with expression
 | 
			
		||||
0:?         Constant:
 | 
			
		||||
0:?           1.000000
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:79  Function Definition: PixelShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
 | 
			
		||||
0:63    Function Parameters: 
 | 
			
		||||
0:63      'inF0' (temp 3-component vector of float)
 | 
			
		||||
0:63      'inF1' (temp 3-component vector of float)
 | 
			
		||||
0:63      'inF2' (temp 3-component vector of float)
 | 
			
		||||
0:63      'inI0' (temp 3-component vector of int)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:64      Constant:
 | 
			
		||||
0:64        0.000000
 | 
			
		||||
0:65      Constant:
 | 
			
		||||
0:65        0.000000
 | 
			
		||||
0:66      Constant:
 | 
			
		||||
0:66        0.000000
 | 
			
		||||
0:67      Constant:
 | 
			
		||||
0:67        0.000000
 | 
			
		||||
0:68      Constant:
 | 
			
		||||
0:68        0.000000
 | 
			
		||||
0:69      Constant:
 | 
			
		||||
0:69        0.000000
 | 
			
		||||
0:70      Constant:
 | 
			
		||||
0:70        0.000000
 | 
			
		||||
0:71      Constant:
 | 
			
		||||
0:71        0.000000
 | 
			
		||||
0:72      Constant:
 | 
			
		||||
0:72        0.000000
 | 
			
		||||
0:73      Constant:
 | 
			
		||||
0:73        0.000000
 | 
			
		||||
0:76      Branch: Return with expression
 | 
			
		||||
0:?         Constant:
 | 
			
		||||
0:?           1.000000
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:115  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
 | 
			
		||||
0:80    Function Parameters: 
 | 
			
		||||
0:80      'inF0' (temp 4-component vector of float)
 | 
			
		||||
0:80      'inF1' (temp 4-component vector of float)
 | 
			
		||||
0:80      'inF2' (temp 4-component vector of float)
 | 
			
		||||
0:80      'inI0' (temp 4-component vector of int)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:81      Constant:
 | 
			
		||||
0:81        0.000000
 | 
			
		||||
0:82      Constant:
 | 
			
		||||
0:82        0.000000
 | 
			
		||||
0:83      Constant:
 | 
			
		||||
0:83        0.000000
 | 
			
		||||
0:84      Constant:
 | 
			
		||||
0:84        0.000000
 | 
			
		||||
0:85      Constant:
 | 
			
		||||
0:85        0.000000
 | 
			
		||||
0:86      Constant:
 | 
			
		||||
0:86        0.000000
 | 
			
		||||
0:87      Constant:
 | 
			
		||||
0:87        0.000000
 | 
			
		||||
0:88      Constant:
 | 
			
		||||
0:88        0.000000
 | 
			
		||||
0:89      Constant:
 | 
			
		||||
0:89        0.000000
 | 
			
		||||
0:90      Constant:
 | 
			
		||||
0:90        0.000000
 | 
			
		||||
0:92      Branch: Return with expression
 | 
			
		||||
0:?         Constant:
 | 
			
		||||
0:?           1.000000
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:123  Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
 | 
			
		||||
0:116    Function Parameters: 
 | 
			
		||||
0:116      'inF0' (temp 2X2 matrix of float)
 | 
			
		||||
0:116      'inF1' (temp 2X2 matrix of float)
 | 
			
		||||
0:116      'inF2' (temp 2X2 matrix of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:120      Branch: Return with expression
 | 
			
		||||
0:?         Constant:
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:131  Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
 | 
			
		||||
0:124    Function Parameters: 
 | 
			
		||||
0:124      'inF0' (temp 3X3 matrix of float)
 | 
			
		||||
0:124      'inF1' (temp 3X3 matrix of float)
 | 
			
		||||
0:124      'inF2' (temp 3X3 matrix of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:128      Branch: Return with expression
 | 
			
		||||
0:?         Constant:
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:138  Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
 | 
			
		||||
0:132    Function Parameters: 
 | 
			
		||||
0:132      'inF0' (temp 4X4 matrix of float)
 | 
			
		||||
0:132      'inF1' (temp 4X4 matrix of float)
 | 
			
		||||
0:132      'inF2' (temp 4X4 matrix of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:136      Branch: Return with expression
 | 
			
		||||
0:?         Constant:
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
ERROR: node is still EOpNull!
 | 
			
		||||
0:35  Function Definition: PixelShaderFunction(f1;f1;f1;i1; (temp float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'inF0' (temp float)
 | 
			
		||||
0:2      'inF1' (temp float)
 | 
			
		||||
0:2      'inF2' (temp float)
 | 
			
		||||
0:2      'inI0' (temp int)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:5      Constant:
 | 
			
		||||
0:5        0.000000
 | 
			
		||||
0:6      Constant:
 | 
			
		||||
0:6        0.000000
 | 
			
		||||
0:7      Constant:
 | 
			
		||||
0:7        0.000000
 | 
			
		||||
0:8      Constant:
 | 
			
		||||
0:8        0.000000
 | 
			
		||||
0:9      Constant:
 | 
			
		||||
0:9        0.000000
 | 
			
		||||
0:10      Constant:
 | 
			
		||||
0:10        0.000000
 | 
			
		||||
0:12      Constant:
 | 
			
		||||
0:12        0.000000
 | 
			
		||||
0:13      Constant:
 | 
			
		||||
0:13        0.000000
 | 
			
		||||
0:14      Constant:
 | 
			
		||||
0:14        0.000000
 | 
			
		||||
0:15      Constant:
 | 
			
		||||
0:15        0.000000
 | 
			
		||||
0:23      Constant:
 | 
			
		||||
0:23        0.000000
 | 
			
		||||
0:24      Constant:
 | 
			
		||||
0:24        0.000000
 | 
			
		||||
0:25      Constant:
 | 
			
		||||
0:25        0.000000
 | 
			
		||||
0:26      Constant:
 | 
			
		||||
0:26        0.000000
 | 
			
		||||
0:27      Constant:
 | 
			
		||||
0:27        0.000000
 | 
			
		||||
0:28      Constant:
 | 
			
		||||
0:28        0.000000
 | 
			
		||||
0:29      Constant:
 | 
			
		||||
0:29        0.000000
 | 
			
		||||
0:30      Constant:
 | 
			
		||||
0:30        0.000000
 | 
			
		||||
0:32      Branch: Return with expression
 | 
			
		||||
0:32        Constant:
 | 
			
		||||
0:32          0.000000
 | 
			
		||||
0:44  Function Definition: PixelShaderFunction(vf1;vf1;vf1;i1; (temp 1-component vector of float)
 | 
			
		||||
0:36    Function Parameters: 
 | 
			
		||||
0:36      'inF0' (temp 1-component vector of float)
 | 
			
		||||
0:36      'inF1' (temp 1-component vector of float)
 | 
			
		||||
0:36      'inF2' (temp 1-component vector of float)
 | 
			
		||||
0:36      'inI0' (temp int)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:39      Constant:
 | 
			
		||||
0:39        0.000000
 | 
			
		||||
0:41      Branch: Return with expression
 | 
			
		||||
0:41        Constant:
 | 
			
		||||
0:41          0.000000
 | 
			
		||||
0:62  Function Definition: PixelShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
 | 
			
		||||
0:45    Function Parameters: 
 | 
			
		||||
0:45      'inF0' (temp 2-component vector of float)
 | 
			
		||||
0:45      'inF1' (temp 2-component vector of float)
 | 
			
		||||
0:45      'inF2' (temp 2-component vector of float)
 | 
			
		||||
0:45      'inI0' (temp 2-component vector of int)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:46      Constant:
 | 
			
		||||
0:46        0.000000
 | 
			
		||||
0:47      Constant:
 | 
			
		||||
0:47        0.000000
 | 
			
		||||
0:48      Constant:
 | 
			
		||||
0:48        0.000000
 | 
			
		||||
0:49      Constant:
 | 
			
		||||
0:49        0.000000
 | 
			
		||||
0:50      Constant:
 | 
			
		||||
0:50        0.000000
 | 
			
		||||
0:51      Constant:
 | 
			
		||||
0:51        0.000000
 | 
			
		||||
0:52      Constant:
 | 
			
		||||
0:52        0.000000
 | 
			
		||||
0:53      Constant:
 | 
			
		||||
0:53        0.000000
 | 
			
		||||
0:54      Constant:
 | 
			
		||||
0:54        0.000000
 | 
			
		||||
0:55      Constant:
 | 
			
		||||
0:55        0.000000
 | 
			
		||||
0:56      Constant:
 | 
			
		||||
0:56        0.000000
 | 
			
		||||
0:57      Constant:
 | 
			
		||||
0:57        0.000000
 | 
			
		||||
0:59      Branch: Return with expression
 | 
			
		||||
0:?         Constant:
 | 
			
		||||
0:?           1.000000
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:79  Function Definition: PixelShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
 | 
			
		||||
0:63    Function Parameters: 
 | 
			
		||||
0:63      'inF0' (temp 3-component vector of float)
 | 
			
		||||
0:63      'inF1' (temp 3-component vector of float)
 | 
			
		||||
0:63      'inF2' (temp 3-component vector of float)
 | 
			
		||||
0:63      'inI0' (temp 3-component vector of int)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:64      Constant:
 | 
			
		||||
0:64        0.000000
 | 
			
		||||
0:65      Constant:
 | 
			
		||||
0:65        0.000000
 | 
			
		||||
0:66      Constant:
 | 
			
		||||
0:66        0.000000
 | 
			
		||||
0:67      Constant:
 | 
			
		||||
0:67        0.000000
 | 
			
		||||
0:68      Constant:
 | 
			
		||||
0:68        0.000000
 | 
			
		||||
0:69      Constant:
 | 
			
		||||
0:69        0.000000
 | 
			
		||||
0:70      Constant:
 | 
			
		||||
0:70        0.000000
 | 
			
		||||
0:71      Constant:
 | 
			
		||||
0:71        0.000000
 | 
			
		||||
0:72      Constant:
 | 
			
		||||
0:72        0.000000
 | 
			
		||||
0:73      Constant:
 | 
			
		||||
0:73        0.000000
 | 
			
		||||
0:76      Branch: Return with expression
 | 
			
		||||
0:?         Constant:
 | 
			
		||||
0:?           1.000000
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:115  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
 | 
			
		||||
0:80    Function Parameters: 
 | 
			
		||||
0:80      'inF0' (temp 4-component vector of float)
 | 
			
		||||
0:80      'inF1' (temp 4-component vector of float)
 | 
			
		||||
0:80      'inF2' (temp 4-component vector of float)
 | 
			
		||||
0:80      'inI0' (temp 4-component vector of int)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:81      Constant:
 | 
			
		||||
0:81        0.000000
 | 
			
		||||
0:82      Constant:
 | 
			
		||||
0:82        0.000000
 | 
			
		||||
0:83      Constant:
 | 
			
		||||
0:83        0.000000
 | 
			
		||||
0:84      Constant:
 | 
			
		||||
0:84        0.000000
 | 
			
		||||
0:85      Constant:
 | 
			
		||||
0:85        0.000000
 | 
			
		||||
0:86      Constant:
 | 
			
		||||
0:86        0.000000
 | 
			
		||||
0:87      Constant:
 | 
			
		||||
0:87        0.000000
 | 
			
		||||
0:88      Constant:
 | 
			
		||||
0:88        0.000000
 | 
			
		||||
0:89      Constant:
 | 
			
		||||
0:89        0.000000
 | 
			
		||||
0:90      Constant:
 | 
			
		||||
0:90        0.000000
 | 
			
		||||
0:92      Branch: Return with expression
 | 
			
		||||
0:?         Constant:
 | 
			
		||||
0:?           1.000000
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:123  Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
 | 
			
		||||
0:116    Function Parameters: 
 | 
			
		||||
0:116      'inF0' (temp 2X2 matrix of float)
 | 
			
		||||
0:116      'inF1' (temp 2X2 matrix of float)
 | 
			
		||||
0:116      'inF2' (temp 2X2 matrix of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:118      Constant:
 | 
			
		||||
0:118        0.000000
 | 
			
		||||
0:120      Branch: Return with expression
 | 
			
		||||
0:?         Constant:
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:?           2.000000
 | 
			
		||||
0:131  Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
 | 
			
		||||
0:124    Function Parameters: 
 | 
			
		||||
0:124      'inF0' (temp 3X3 matrix of float)
 | 
			
		||||
0:124      'inF1' (temp 3X3 matrix of float)
 | 
			
		||||
0:124      'inF2' (temp 3X3 matrix of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:126      Constant:
 | 
			
		||||
0:126        0.000000
 | 
			
		||||
0:128      Branch: Return with expression
 | 
			
		||||
0:?         Constant:
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:?           3.000000
 | 
			
		||||
0:138  Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
 | 
			
		||||
0:132    Function Parameters: 
 | 
			
		||||
0:132      'inF0' (temp 4X4 matrix of float)
 | 
			
		||||
0:132      'inF1' (temp 4X4 matrix of float)
 | 
			
		||||
0:132      'inF2' (temp 4X4 matrix of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:134      Constant:
 | 
			
		||||
0:134        0.000000
 | 
			
		||||
0:136      Branch: Return with expression
 | 
			
		||||
0:?         Constant:
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?           4.000000
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
SPIR-V is not generated for failed compile or link
 | 
			
		||||
							
								
								
									
										1055
									
								
								Test/baseResults/hlsl.intrinsics.negative.vert.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1055
									
								
								Test/baseResults/hlsl.intrinsics.negative.vert.out
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1994
									
								
								Test/baseResults/hlsl.intrinsics.vert.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1994
									
								
								Test/baseResults/hlsl.intrinsics.vert.out
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										101
									
								
								Test/baseResults/hlsl.matType.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										101
									
								
								Test/baseResults/hlsl.matType.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,101 @@
 | 
			
		||||
hlsl.matType.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:1  move second child to first child (temp 1-component vector of float)
 | 
			
		||||
0:1    'f1' (temp 1-component vector of float)
 | 
			
		||||
0:1    Constant:
 | 
			
		||||
0:1      1.000000
 | 
			
		||||
0:11  Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
 | 
			
		||||
0:9    Function Parameters: 
 | 
			
		||||
0:9      'inFloat1' (temp 1-component vector of float)
 | 
			
		||||
0:9      'inScalar' (temp float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'f1' (temp 1-component vector of float)
 | 
			
		||||
0:?     'fmat11' (temp 1X1 matrix of float)
 | 
			
		||||
0:?     'fmat41' (temp 1X4 matrix of float)
 | 
			
		||||
0:?     'fmat12' (temp 2X1 matrix of float)
 | 
			
		||||
0:?     'dmat23' (temp 3X2 matrix of double)
 | 
			
		||||
0:?     'int44' (temp 4X4 matrix of int)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:1  move second child to first child (temp 1-component vector of float)
 | 
			
		||||
0:1    'f1' (temp 1-component vector of float)
 | 
			
		||||
0:1    Constant:
 | 
			
		||||
0:1      1.000000
 | 
			
		||||
0:11  Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
 | 
			
		||||
0:9    Function Parameters: 
 | 
			
		||||
0:9      'inFloat1' (temp 1-component vector of float)
 | 
			
		||||
0:9      'inScalar' (temp float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'f1' (temp 1-component vector of float)
 | 
			
		||||
0:?     'fmat11' (temp 1X1 matrix of float)
 | 
			
		||||
0:?     'fmat41' (temp 1X4 matrix of float)
 | 
			
		||||
0:?     'fmat12' (temp 2X1 matrix of float)
 | 
			
		||||
0:?     'dmat23' (temp 3X2 matrix of double)
 | 
			
		||||
0:?     'int44' (temp 4X4 matrix of int)
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 36
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
                              Capability Float64
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 11  "ShaderFunction(vf1;f1;"
 | 
			
		||||
                              Name 9  "inFloat1"
 | 
			
		||||
                              Name 10  "inScalar"
 | 
			
		||||
                              Name 14  "f1"
 | 
			
		||||
                              Name 18  "fmat11"
 | 
			
		||||
                              Name 22  "fmat41"
 | 
			
		||||
                              Name 25  "fmat12"
 | 
			
		||||
                              Name 30  "dmat23"
 | 
			
		||||
                              Name 35  "int44"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeFloat 32
 | 
			
		||||
               7:             TypePointer Function 6(float)
 | 
			
		||||
               8:             TypeFunction 6(float) 7(ptr) 7(ptr)
 | 
			
		||||
              15:             TypeVector 6(float) 1
 | 
			
		||||
              16:             TypeMatrix 15(fvec) 1
 | 
			
		||||
              17:             TypePointer Function 16
 | 
			
		||||
              19:             TypeVector 6(float) 4
 | 
			
		||||
              20:             TypeMatrix 19(fvec4) 1
 | 
			
		||||
              21:             TypePointer Function 20
 | 
			
		||||
              23:             TypeMatrix 15(fvec) 2
 | 
			
		||||
              24:             TypePointer Function 23
 | 
			
		||||
              26:             TypeFloat 64
 | 
			
		||||
              27:             TypeVector 26(float) 2
 | 
			
		||||
              28:             TypeMatrix 27(fvec2) 3
 | 
			
		||||
              29:             TypePointer Function 28
 | 
			
		||||
              31:             TypeInt 32 1
 | 
			
		||||
              32:             TypeVector 31(int) 4
 | 
			
		||||
              33:             TypeMatrix 32(ivec4) 4
 | 
			
		||||
              34:             TypePointer Function 33
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
11(ShaderFunction(vf1;f1;):    6(float) Function None 8
 | 
			
		||||
     9(inFloat1):      7(ptr) FunctionParameter
 | 
			
		||||
    10(inScalar):      7(ptr) FunctionParameter
 | 
			
		||||
              12:             Label
 | 
			
		||||
          14(f1):      7(ptr) Variable Function
 | 
			
		||||
      18(fmat11):     17(ptr) Variable Function
 | 
			
		||||
      22(fmat41):     21(ptr) Variable Function
 | 
			
		||||
      25(fmat12):     24(ptr) Variable Function
 | 
			
		||||
      30(dmat23):     29(ptr) Variable Function
 | 
			
		||||
       35(int44):     34(ptr) Variable Function
 | 
			
		||||
              13:    6(float) Undef
 | 
			
		||||
                              ReturnValue 13
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										60
									
								
								Test/baseResults/hlsl.max.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										60
									
								
								Test/baseResults/hlsl.max.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,60 @@
 | 
			
		||||
hlsl.max.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:5  Function Definition: PixelShaderFunction(vf4;vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input1' (temp 4-component vector of float)
 | 
			
		||||
0:2      'input2' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:3      Branch: Return with expression
 | 
			
		||||
0:3        max (global 4-component vector of float)
 | 
			
		||||
0:3          'input1' (temp 4-component vector of float)
 | 
			
		||||
0:3          'input2' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:5  Function Definition: PixelShaderFunction(vf4;vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input1' (temp 4-component vector of float)
 | 
			
		||||
0:2      'input2' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:3      Branch: Return with expression
 | 
			
		||||
0:3        max (global 4-component vector of float)
 | 
			
		||||
0:3          'input1' (temp 4-component vector of float)
 | 
			
		||||
0:3          'input2' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 15
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 9  "input1"
 | 
			
		||||
                              Name 11  "input2"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeFloat 32
 | 
			
		||||
               7:             TypeVector 6(float) 4
 | 
			
		||||
               8:             TypePointer Function 7(fvec4)
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
       9(input1):      8(ptr) Variable Function
 | 
			
		||||
      11(input2):      8(ptr) Variable Function
 | 
			
		||||
              10:    7(fvec4) Load 9(input1)
 | 
			
		||||
              12:    7(fvec4) Load 11(input2)
 | 
			
		||||
              13:    7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 10 12
 | 
			
		||||
                              ReturnValue 13
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										80
									
								
								Test/baseResults/hlsl.precedence.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										80
									
								
								Test/baseResults/hlsl.precedence.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,80 @@
 | 
			
		||||
hlsl.precedence.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:10  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (temp 4-component vector of float)
 | 
			
		||||
0:7    Function Parameters: 
 | 
			
		||||
0:7      'a1' (temp 4-component vector of float)
 | 
			
		||||
0:7      'a2' (temp 4-component vector of float)
 | 
			
		||||
0:7      'a3' (temp 4-component vector of float)
 | 
			
		||||
0:7      'a4' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:8      Branch: Return with expression
 | 
			
		||||
0:8        add (temp 4-component vector of float)
 | 
			
		||||
0:8          add (temp 4-component vector of float)
 | 
			
		||||
0:8            'a1' (temp 4-component vector of float)
 | 
			
		||||
0:8            component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:8              'a2' (temp 4-component vector of float)
 | 
			
		||||
0:8              'a3' (temp 4-component vector of float)
 | 
			
		||||
0:8          'a4' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:10  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (temp 4-component vector of float)
 | 
			
		||||
0:7    Function Parameters: 
 | 
			
		||||
0:7      'a1' (temp 4-component vector of float)
 | 
			
		||||
0:7      'a2' (temp 4-component vector of float)
 | 
			
		||||
0:7      'a3' (temp 4-component vector of float)
 | 
			
		||||
0:7      'a4' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:8      Branch: Return with expression
 | 
			
		||||
0:8        add (temp 4-component vector of float)
 | 
			
		||||
0:8          add (temp 4-component vector of float)
 | 
			
		||||
0:8            'a1' (temp 4-component vector of float)
 | 
			
		||||
0:8            component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:8              'a2' (temp 4-component vector of float)
 | 
			
		||||
0:8              'a3' (temp 4-component vector of float)
 | 
			
		||||
0:8          'a4' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 21
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 9  "a1"
 | 
			
		||||
                              Name 11  "a2"
 | 
			
		||||
                              Name 13  "a3"
 | 
			
		||||
                              Name 17  "a4"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeFloat 32
 | 
			
		||||
               7:             TypeVector 6(float) 4
 | 
			
		||||
               8:             TypePointer Function 7(fvec4)
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
           9(a1):      8(ptr) Variable Function
 | 
			
		||||
          11(a2):      8(ptr) Variable Function
 | 
			
		||||
          13(a3):      8(ptr) Variable Function
 | 
			
		||||
          17(a4):      8(ptr) Variable Function
 | 
			
		||||
              10:    7(fvec4) Load 9(a1)
 | 
			
		||||
              12:    7(fvec4) Load 11(a2)
 | 
			
		||||
              14:    7(fvec4) Load 13(a3)
 | 
			
		||||
              15:    7(fvec4) FMul 12 14
 | 
			
		||||
              16:    7(fvec4) FAdd 10 15
 | 
			
		||||
              18:    7(fvec4) Load 17(a4)
 | 
			
		||||
              19:    7(fvec4) FAdd 16 18
 | 
			
		||||
                              ReturnValue 19
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										103
									
								
								Test/baseResults/hlsl.precedence2.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										103
									
								
								Test/baseResults/hlsl.precedence2.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,103 @@
 | 
			
		||||
hlsl.precedence2.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:10  Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int)
 | 
			
		||||
0:7    Function Parameters: 
 | 
			
		||||
0:7      'a1' (temp int)
 | 
			
		||||
0:7      'a2' (temp int)
 | 
			
		||||
0:7      'a3' (temp int)
 | 
			
		||||
0:7      'a4' (temp int)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:8      Branch: Return with expression
 | 
			
		||||
0:8        add (temp int)
 | 
			
		||||
0:8          left-shift (temp int)
 | 
			
		||||
0:8            add (temp int)
 | 
			
		||||
0:8              component-wise multiply (temp int)
 | 
			
		||||
0:8                'a1' (temp int)
 | 
			
		||||
0:8                'a2' (temp int)
 | 
			
		||||
0:8              'a3' (temp int)
 | 
			
		||||
0:8            'a4' (temp int)
 | 
			
		||||
0:8          left-shift (temp int)
 | 
			
		||||
0:8            'a1' (temp int)
 | 
			
		||||
0:8            add (temp int)
 | 
			
		||||
0:8              'a2' (temp int)
 | 
			
		||||
0:8              component-wise multiply (temp int)
 | 
			
		||||
0:8                'a3' (temp int)
 | 
			
		||||
0:8                'a4' (temp int)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:10  Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int)
 | 
			
		||||
0:7    Function Parameters: 
 | 
			
		||||
0:7      'a1' (temp int)
 | 
			
		||||
0:7      'a2' (temp int)
 | 
			
		||||
0:7      'a3' (temp int)
 | 
			
		||||
0:7      'a4' (temp int)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:8      Branch: Return with expression
 | 
			
		||||
0:8        add (temp int)
 | 
			
		||||
0:8          left-shift (temp int)
 | 
			
		||||
0:8            add (temp int)
 | 
			
		||||
0:8              component-wise multiply (temp int)
 | 
			
		||||
0:8                'a1' (temp int)
 | 
			
		||||
0:8                'a2' (temp int)
 | 
			
		||||
0:8              'a3' (temp int)
 | 
			
		||||
0:8            'a4' (temp int)
 | 
			
		||||
0:8          left-shift (temp int)
 | 
			
		||||
0:8            'a1' (temp int)
 | 
			
		||||
0:8            add (temp int)
 | 
			
		||||
0:8              'a2' (temp int)
 | 
			
		||||
0:8              component-wise multiply (temp int)
 | 
			
		||||
0:8                'a3' (temp int)
 | 
			
		||||
0:8                'a4' (temp int)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 28
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 8  "a1"
 | 
			
		||||
                              Name 10  "a2"
 | 
			
		||||
                              Name 13  "a3"
 | 
			
		||||
                              Name 16  "a4"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeInt 32 1
 | 
			
		||||
               7:             TypePointer Function 6(int)
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
           8(a1):      7(ptr) Variable Function
 | 
			
		||||
          10(a2):      7(ptr) Variable Function
 | 
			
		||||
          13(a3):      7(ptr) Variable Function
 | 
			
		||||
          16(a4):      7(ptr) Variable Function
 | 
			
		||||
               9:      6(int) Load 8(a1)
 | 
			
		||||
              11:      6(int) Load 10(a2)
 | 
			
		||||
              12:      6(int) IMul 9 11
 | 
			
		||||
              14:      6(int) Load 13(a3)
 | 
			
		||||
              15:      6(int) IAdd 12 14
 | 
			
		||||
              17:      6(int) Load 16(a4)
 | 
			
		||||
              18:      6(int) ShiftLeftLogical 15 17
 | 
			
		||||
              19:      6(int) Load 8(a1)
 | 
			
		||||
              20:      6(int) Load 10(a2)
 | 
			
		||||
              21:      6(int) Load 13(a3)
 | 
			
		||||
              22:      6(int) Load 16(a4)
 | 
			
		||||
              23:      6(int) IMul 21 22
 | 
			
		||||
              24:      6(int) IAdd 20 23
 | 
			
		||||
              25:      6(int) ShiftLeftLogical 19 24
 | 
			
		||||
              26:      6(int) IAdd 18 25
 | 
			
		||||
                              ReturnValue 26
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										53
									
								
								Test/baseResults/hlsl.sin.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										53
									
								
								Test/baseResults/hlsl.sin.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,53 @@
 | 
			
		||||
hlsl.sin.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:5  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:3      Branch: Return with expression
 | 
			
		||||
0:3        sine (global 4-component vector of float)
 | 
			
		||||
0:3          'input' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:5  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:3      Branch: Return with expression
 | 
			
		||||
0:3        sine (global 4-component vector of float)
 | 
			
		||||
0:3          'input' (temp 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 13
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 9  "input"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeFloat 32
 | 
			
		||||
               7:             TypeVector 6(float) 4
 | 
			
		||||
               8:             TypePointer Function 7(fvec4)
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
        9(input):      8(ptr) Variable Function
 | 
			
		||||
              10:    7(fvec4) Load 9(input)
 | 
			
		||||
              11:    7(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 10
 | 
			
		||||
                              ReturnValue 11
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										145
									
								
								Test/baseResults/hlsl.whileLoop.frag.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										145
									
								
								Test/baseResults/hlsl.whileLoop.frag.out
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,145 @@
 | 
			
		||||
hlsl.whileLoop.frag
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:8  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:3      Loop with condition tested first
 | 
			
		||||
0:3        Loop Condition
 | 
			
		||||
0:3        Compare Not Equal (temp bool)
 | 
			
		||||
0:3          'input' (temp 4-component vector of float)
 | 
			
		||||
0:3          'input' (temp 4-component vector of float)
 | 
			
		||||
0:3        Loop Body
 | 
			
		||||
0:?         Sequence
 | 
			
		||||
0:3          Branch: Return with expression
 | 
			
		||||
0:3            'input' (temp 4-component vector of float)
 | 
			
		||||
0:4      Loop with condition tested first
 | 
			
		||||
0:4        Loop Condition
 | 
			
		||||
0:4        Constant:
 | 
			
		||||
0:4          false (const bool)
 | 
			
		||||
0:4        No loop body
 | 
			
		||||
0:5      Loop with condition tested first
 | 
			
		||||
0:5        Loop Condition
 | 
			
		||||
0:5        Constant:
 | 
			
		||||
0:5          false (const bool)
 | 
			
		||||
0:5        No loop body
 | 
			
		||||
0:6      Loop with condition tested first
 | 
			
		||||
0:6        Loop Condition
 | 
			
		||||
0:6        Constant:
 | 
			
		||||
0:6          false (const bool)
 | 
			
		||||
0:6        No loop body
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
gl_FragCoord origin is upper left
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:8  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 | 
			
		||||
0:2    Function Parameters: 
 | 
			
		||||
0:2      'input' (temp 4-component vector of float)
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:3      Loop with condition tested first
 | 
			
		||||
0:3        Loop Condition
 | 
			
		||||
0:3        Compare Not Equal (temp bool)
 | 
			
		||||
0:3          'input' (temp 4-component vector of float)
 | 
			
		||||
0:3          'input' (temp 4-component vector of float)
 | 
			
		||||
0:3        Loop Body
 | 
			
		||||
0:?         Sequence
 | 
			
		||||
0:3          Branch: Return with expression
 | 
			
		||||
0:3            'input' (temp 4-component vector of float)
 | 
			
		||||
0:4      Loop with condition tested first
 | 
			
		||||
0:4        Loop Condition
 | 
			
		||||
0:4        Constant:
 | 
			
		||||
0:4          false (const bool)
 | 
			
		||||
0:4        No loop body
 | 
			
		||||
0:5      Loop with condition tested first
 | 
			
		||||
0:5        Loop Condition
 | 
			
		||||
0:5        Constant:
 | 
			
		||||
0:5          false (const bool)
 | 
			
		||||
0:5        No loop body
 | 
			
		||||
0:6      Loop with condition tested first
 | 
			
		||||
0:6        Loop Condition
 | 
			
		||||
0:6        Constant:
 | 
			
		||||
0:6          false (const bool)
 | 
			
		||||
0:6        No loop body
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 39
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "PixelShaderFunction"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source HLSL 450
 | 
			
		||||
                              Name 4  "PixelShaderFunction"
 | 
			
		||||
                              Name 14  "input"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
              11:             TypeFloat 32
 | 
			
		||||
              12:             TypeVector 11(float) 4
 | 
			
		||||
              13:             TypePointer Function 12(fvec4)
 | 
			
		||||
              17:             TypeBool
 | 
			
		||||
              18:             TypeVector 17(bool) 4
 | 
			
		||||
              28:    17(bool) ConstantFalse
 | 
			
		||||
4(PixelShaderFunction):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
       14(input):     13(ptr) Variable Function
 | 
			
		||||
                              Branch 6
 | 
			
		||||
               6:             Label
 | 
			
		||||
                              LoopMerge 8 9 None
 | 
			
		||||
                              Branch 10
 | 
			
		||||
              10:             Label
 | 
			
		||||
              15:   12(fvec4) Load 14(input)
 | 
			
		||||
              16:   12(fvec4) Load 14(input)
 | 
			
		||||
              19:   18(bvec4) FOrdNotEqual 15 16
 | 
			
		||||
              20:    17(bool) Any 19
 | 
			
		||||
                              BranchConditional 20 7 8
 | 
			
		||||
               7:               Label
 | 
			
		||||
              21:   12(fvec4)   Load 14(input)
 | 
			
		||||
                                ReturnValue 21
 | 
			
		||||
               9:               Label
 | 
			
		||||
                                Branch 6
 | 
			
		||||
               8:             Label
 | 
			
		||||
                              Branch 23
 | 
			
		||||
              23:             Label
 | 
			
		||||
                              LoopMerge 25 26 None
 | 
			
		||||
                              Branch 27
 | 
			
		||||
              27:             Label
 | 
			
		||||
                              BranchConditional 28 24 25
 | 
			
		||||
              24:               Label
 | 
			
		||||
                                Branch 26
 | 
			
		||||
              26:               Label
 | 
			
		||||
                                Branch 23
 | 
			
		||||
              25:             Label
 | 
			
		||||
                              Branch 29
 | 
			
		||||
              29:             Label
 | 
			
		||||
                              LoopMerge 31 32 None
 | 
			
		||||
                              Branch 33
 | 
			
		||||
              33:             Label
 | 
			
		||||
                              BranchConditional 28 30 31
 | 
			
		||||
              30:               Label
 | 
			
		||||
                                Branch 32
 | 
			
		||||
              32:               Label
 | 
			
		||||
                                Branch 29
 | 
			
		||||
              31:             Label
 | 
			
		||||
                              Branch 34
 | 
			
		||||
              34:             Label
 | 
			
		||||
                              LoopMerge 36 37 None
 | 
			
		||||
                              Branch 38
 | 
			
		||||
              38:             Label
 | 
			
		||||
                              BranchConditional 28 35 36
 | 
			
		||||
              35:               Label
 | 
			
		||||
                                Branch 37
 | 
			
		||||
              37:               Label
 | 
			
		||||
                                Branch 34
 | 
			
		||||
              36:             Label
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
@ -158,136 +158,5 @@ Requested GL_OES_texture_3D
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'iv3' (smooth in highp 2-component vector of float)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
ERROR: Linking fragment stage: Types must match:
 | 
			
		||||
    glass: "uniform 3-component vector of float" versus "uniform 2-component vector of float"
 | 
			
		||||
ERROR: Linking fragment stage: Interpolation and auxiliary storage qualifiers must match:
 | 
			
		||||
    cup: "smooth in 4-component vector of float" versus "flat in 4-component vector of float"
 | 
			
		||||
ERROR: Linking fragment stage: Initializers must match:
 | 
			
		||||
    cv3e
 | 
			
		||||
ERROR: Linking fragment stage: Initializers must match:
 | 
			
		||||
    um2e
 | 
			
		||||
ERROR: Linking fragment stage: Initializers must match:
 | 
			
		||||
    se
 | 
			
		||||
ERROR: Linking fragment stage: Cannot mix ES profile with non-ES profile shaders
 | 
			
		||||
 | 
			
		||||
ERROR: Linking fragment stage: Types must match:
 | 
			
		||||
ERROR: Linking fragment stage: Precision qualifiers must match:
 | 
			
		||||
    iv3: "smooth in 3-component vector of float" versus "smooth in highp 2-component vector of float"
 | 
			
		||||
 | 
			
		||||
Shader version: 300
 | 
			
		||||
Requested GL_OES_EGL_image_external
 | 
			
		||||
Requested GL_OES_standard_derivatives
 | 
			
		||||
Requested GL_OES_texture_3D
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:8  Sequence
 | 
			
		||||
0:8    move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:8      'a' (global 4-component vector of float)
 | 
			
		||||
0:8      vector-scale (temp 4-component vector of float)
 | 
			
		||||
0:8        Constant:
 | 
			
		||||
0:8          8.000000
 | 
			
		||||
0:8        'uv4' (uniform 4-component vector of float)
 | 
			
		||||
0:13  Function Definition: main( (global void)
 | 
			
		||||
0:13    Function Parameters: 
 | 
			
		||||
0:17  Sequence
 | 
			
		||||
0:17    move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:17      'b' (global 4-component vector of float)
 | 
			
		||||
0:17      vector-scale (temp 4-component vector of float)
 | 
			
		||||
0:17        Constant:
 | 
			
		||||
0:17          8.000000
 | 
			
		||||
0:17        'a' (global 4-component vector of float)
 | 
			
		||||
0:19  Function Definition: foo(mf22; (global 2-component vector of int)
 | 
			
		||||
0:19    Function Parameters: 
 | 
			
		||||
0:19      'm' (in 2X2 matrix of float)
 | 
			
		||||
0:21    Sequence
 | 
			
		||||
0:21      Branch: Return with expression
 | 
			
		||||
0:21        Convert float to int (temp 2-component vector of int)
 | 
			
		||||
0:21          direct index (temp 2-component vector of float)
 | 
			
		||||
0:21            'm' (in 2X2 matrix of float)
 | 
			
		||||
0:21            Constant:
 | 
			
		||||
0:21              0 (const int)
 | 
			
		||||
0:24  Sequence
 | 
			
		||||
0:24    move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:24      'c' (global 4-component vector of float)
 | 
			
		||||
0:24      component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:24        'b' (global 4-component vector of float)
 | 
			
		||||
0:24        'b' (global 4-component vector of float)
 | 
			
		||||
0:8  Sequence
 | 
			
		||||
0:8    move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:8      'd' (global 4-component vector of float)
 | 
			
		||||
0:8      vector-scale (temp 4-component vector of float)
 | 
			
		||||
0:8        Constant:
 | 
			
		||||
0:8          8.000000
 | 
			
		||||
0:8        'uv4' (uniform 4-component vector of float)
 | 
			
		||||
0:13  Sequence
 | 
			
		||||
0:13    move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:13      'e' (global 4-component vector of float)
 | 
			
		||||
0:13      vector-scale (temp 4-component vector of float)
 | 
			
		||||
0:13        Constant:
 | 
			
		||||
0:13          8.000000
 | 
			
		||||
0:13        'd' (global 4-component vector of float)
 | 
			
		||||
0:15  Function Definition: foo( (global 2-component vector of int)
 | 
			
		||||
0:15    Function Parameters: 
 | 
			
		||||
0:17    Sequence
 | 
			
		||||
0:17      Branch: Return with expression
 | 
			
		||||
0:17        Constant:
 | 
			
		||||
0:17          2 (const int)
 | 
			
		||||
0:17          2 (const int)
 | 
			
		||||
0:20  Sequence
 | 
			
		||||
0:20    move second child to first child (temp 4-component vector of float)
 | 
			
		||||
0:20      'f' (global 4-component vector of float)
 | 
			
		||||
0:20      component-wise multiply (temp 4-component vector of float)
 | 
			
		||||
0:20        'e' (global 4-component vector of float)
 | 
			
		||||
0:20        'e' (global 4-component vector of float)
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
0:?     'uv4' (uniform 4-component vector of float)
 | 
			
		||||
0:?     'glass' (uniform 3-component vector of float)
 | 
			
		||||
0:?     'ci' (const int)
 | 
			
		||||
0:?       8 (const int)
 | 
			
		||||
0:?     'a' (global 4-component vector of float)
 | 
			
		||||
0:?     'iv3' (smooth in 3-component vector of float)
 | 
			
		||||
0:?     'cup' (smooth in 4-component vector of float)
 | 
			
		||||
0:?     'b' (global 4-component vector of float)
 | 
			
		||||
0:?     'c' (global 4-component vector of float)
 | 
			
		||||
0:?     'cv3' (const 3-component vector of float)
 | 
			
		||||
0:?       43.000000
 | 
			
		||||
0:?       0.340000
 | 
			
		||||
0:?       9.900000
 | 
			
		||||
0:?     'cv3n' (const 3-component vector of float)
 | 
			
		||||
0:?       43.000000
 | 
			
		||||
0:?       0.340000
 | 
			
		||||
0:?       9.900000
 | 
			
		||||
0:?     'cv3e' (const 3-component vector of float)
 | 
			
		||||
0:?       43.000000
 | 
			
		||||
0:?       0.340000
 | 
			
		||||
0:?       9.900000
 | 
			
		||||
0:?     'um2' (uniform 2X2 matrix of float)
 | 
			
		||||
0:?       4.000000
 | 
			
		||||
0:?       0.000000
 | 
			
		||||
0:?       0.000000
 | 
			
		||||
0:?       4.000000
 | 
			
		||||
0:?     'um2n' (uniform 2X2 matrix of float)
 | 
			
		||||
0:?       4.000000
 | 
			
		||||
0:?       0.000000
 | 
			
		||||
0:?       0.000000
 | 
			
		||||
0:?       4.000000
 | 
			
		||||
0:?     'um2e' (uniform 2X2 matrix of float)
 | 
			
		||||
0:?       4.000000
 | 
			
		||||
0:?       0.000000
 | 
			
		||||
0:?       0.000000
 | 
			
		||||
0:?       4.000000
 | 
			
		||||
0:?     's' (uniform structure{global int a, global float b})
 | 
			
		||||
0:?       82 (const int)
 | 
			
		||||
0:?       3.900000
 | 
			
		||||
0:?     'sn' (uniform structure{global int a, global float b})
 | 
			
		||||
0:?       82 (const int)
 | 
			
		||||
0:?       3.900000
 | 
			
		||||
0:?     'se' (uniform structure{global int a, global float b})
 | 
			
		||||
0:?       82 (const int)
 | 
			
		||||
0:?       3.900000
 | 
			
		||||
0:?     'd' (global 4-component vector of float)
 | 
			
		||||
0:?     'e' (global 4-component vector of float)
 | 
			
		||||
0:?     'f' (global 4-component vector of float)
 | 
			
		||||
ERROR: Cannot mix ES profile with non-ES profile shaders
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										24
									
								
								Test/baseResults/negativeArraySize.comp.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								Test/baseResults/negativeArraySize.comp.out
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
			
		||||
negativeArraySize.comp
 | 
			
		||||
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
 | 
			
		||||
ERROR: 0:9: '' : array size must be a positive integer 
 | 
			
		||||
ERROR: 1 compilation errors.  No code generated.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 310
 | 
			
		||||
local_size = (1, 1, 1)
 | 
			
		||||
ERROR: node is still EOpNull!
 | 
			
		||||
0:7  Function Definition: main( (global void)
 | 
			
		||||
0:7    Function Parameters: 
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked compute stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shader version: 310
 | 
			
		||||
local_size = (1, 1, 1)
 | 
			
		||||
ERROR: node is still EOpNull!
 | 
			
		||||
0:7  Function Definition: main( (global void)
 | 
			
		||||
0:7    Function Parameters: 
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										768
									
								
								Test/baseResults/precise.tesc.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										768
									
								
								Test/baseResults/precise.tesc.out
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,768 @@
 | 
			
		||||
precise.tesc
 | 
			
		||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
Requested GL_EXT_gpu_shader5
 | 
			
		||||
Requested GL_EXT_shader_io_blocks
 | 
			
		||||
Requested GL_EXT_tessellation_shader
 | 
			
		||||
vertices = -1
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:5  Function Definition: minimal( (global float)
 | 
			
		||||
0:5    Function Parameters: 
 | 
			
		||||
0:6    Sequence
 | 
			
		||||
0:6      Sequence
 | 
			
		||||
0:6        move second child to first child (temp float)
 | 
			
		||||
0:6          'result' (noContraction temp float)
 | 
			
		||||
0:6          Constant:
 | 
			
		||||
0:6            5.000000
 | 
			
		||||
0:7      Sequence
 | 
			
		||||
0:7        move second child to first child (temp float)
 | 
			
		||||
0:7          'a' (noContraction temp float)
 | 
			
		||||
0:7          Constant:
 | 
			
		||||
0:7            10.000000
 | 
			
		||||
0:8      Sequence
 | 
			
		||||
0:8        move second child to first child (temp float)
 | 
			
		||||
0:8          'b' (noContraction temp float)
 | 
			
		||||
0:8          Constant:
 | 
			
		||||
0:8            20.000000
 | 
			
		||||
0:9      Sequence
 | 
			
		||||
0:9        move second child to first child (temp float)
 | 
			
		||||
0:9          'c' (noContraction temp float)
 | 
			
		||||
0:9          Constant:
 | 
			
		||||
0:9            30.000000
 | 
			
		||||
0:10      Sequence
 | 
			
		||||
0:10        move second child to first child (temp float)
 | 
			
		||||
0:10          'd' (noContraction temp float)
 | 
			
		||||
0:10          Constant:
 | 
			
		||||
0:10            40.000000
 | 
			
		||||
0:11      move second child to first child (temp float)
 | 
			
		||||
0:11        'result' (noContraction temp float)
 | 
			
		||||
0:11        add (noContraction temp float)
 | 
			
		||||
0:11          component-wise multiply (noContraction temp float)
 | 
			
		||||
0:11            'a' (noContraction temp float)
 | 
			
		||||
0:11            'b' (noContraction temp float)
 | 
			
		||||
0:11          component-wise multiply (noContraction temp float)
 | 
			
		||||
0:11            'c' (noContraction temp float)
 | 
			
		||||
0:11            'd' (noContraction temp float)
 | 
			
		||||
0:12      Branch: Return with expression
 | 
			
		||||
0:12        'result' (noContraction temp float)
 | 
			
		||||
0:15  Function Definition: continuous_assignment( (global void)
 | 
			
		||||
0:15    Function Parameters: 
 | 
			
		||||
0:16    Sequence
 | 
			
		||||
0:16      Sequence
 | 
			
		||||
0:16        move second child to first child (temp float)
 | 
			
		||||
0:16          'result' (noContraction temp float)
 | 
			
		||||
0:16          Constant:
 | 
			
		||||
0:16            5.000000
 | 
			
		||||
0:17      Sequence
 | 
			
		||||
0:17        move second child to first child (temp float)
 | 
			
		||||
0:17          'a' (noContraction temp float)
 | 
			
		||||
0:17          Constant:
 | 
			
		||||
0:17            10.000000
 | 
			
		||||
0:18      Sequence
 | 
			
		||||
0:18        move second child to first child (temp float)
 | 
			
		||||
0:18          'b' (noContraction temp float)
 | 
			
		||||
0:18          Constant:
 | 
			
		||||
0:18            20.000000
 | 
			
		||||
0:19      move second child to first child (temp float)
 | 
			
		||||
0:19        'result' (noContraction temp float)
 | 
			
		||||
0:19        move second child to first child (temp float)
 | 
			
		||||
0:19          'a' (noContraction temp float)
 | 
			
		||||
0:19          add (noContraction temp float)
 | 
			
		||||
0:19            'b' (noContraction temp float)
 | 
			
		||||
0:19            Constant:
 | 
			
		||||
0:19              4.000000
 | 
			
		||||
0:22  Function Definition: convert( (global void)
 | 
			
		||||
0:22    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:24      Sequence
 | 
			
		||||
0:24        move second child to first child (temp float)
 | 
			
		||||
0:24          'a' (noContraction temp float)
 | 
			
		||||
0:24          Constant:
 | 
			
		||||
0:24            10.000000
 | 
			
		||||
0:25      Sequence
 | 
			
		||||
0:25        move second child to first child (temp float)
 | 
			
		||||
0:25          'b' (noContraction temp float)
 | 
			
		||||
0:25          Constant:
 | 
			
		||||
0:25            20.000000
 | 
			
		||||
0:26      move second child to first child (temp float)
 | 
			
		||||
0:26        'b' (noContraction temp float)
 | 
			
		||||
0:26        add (noContraction temp float)
 | 
			
		||||
0:26          'a' (noContraction temp float)
 | 
			
		||||
0:26          'b' (noContraction temp float)
 | 
			
		||||
0:27      move second child to first child (temp double)
 | 
			
		||||
0:27        'result' (noContraction temp double)
 | 
			
		||||
0:27        Convert float to double (temp double)
 | 
			
		||||
0:27          'b' (noContraction temp float)
 | 
			
		||||
0:30  Function Definition: loop_for( (global float)
 | 
			
		||||
0:30    Function Parameters: 
 | 
			
		||||
0:31    Sequence
 | 
			
		||||
0:31      Sequence
 | 
			
		||||
0:31        move second child to first child (temp float)
 | 
			
		||||
0:31          'r1' (noContraction temp float)
 | 
			
		||||
0:31          Constant:
 | 
			
		||||
0:31            5.000000
 | 
			
		||||
0:32      Sequence
 | 
			
		||||
0:32        move second child to first child (temp float)
 | 
			
		||||
0:32          'r2' (noContraction temp float)
 | 
			
		||||
0:32          Constant:
 | 
			
		||||
0:32            10.000000
 | 
			
		||||
0:33      Sequence
 | 
			
		||||
0:33        move second child to first child (temp int)
 | 
			
		||||
0:33          'a' (temp int)
 | 
			
		||||
0:33          Constant:
 | 
			
		||||
0:33            10 (const int)
 | 
			
		||||
0:34      Sequence
 | 
			
		||||
0:34        move second child to first child (temp int)
 | 
			
		||||
0:34          'b' (noContraction temp int)
 | 
			
		||||
0:34          Constant:
 | 
			
		||||
0:34            20 (const int)
 | 
			
		||||
0:35      Sequence
 | 
			
		||||
0:35        move second child to first child (temp int)
 | 
			
		||||
0:35          'c' (noContraction temp int)
 | 
			
		||||
0:35          Constant:
 | 
			
		||||
0:35            30 (const int)
 | 
			
		||||
0:36      Sequence
 | 
			
		||||
0:36        Sequence
 | 
			
		||||
0:36          move second child to first child (temp int)
 | 
			
		||||
0:36            'i' (noContraction temp int)
 | 
			
		||||
0:36            Constant:
 | 
			
		||||
0:36              0 (const int)
 | 
			
		||||
0:36        Loop with condition tested first
 | 
			
		||||
0:36          Loop Condition
 | 
			
		||||
0:36          Compare Less Than (temp bool)
 | 
			
		||||
0:36            'i' (temp int)
 | 
			
		||||
0:36            'a' (temp int)
 | 
			
		||||
0:36          Loop Body
 | 
			
		||||
0:37          Sequence
 | 
			
		||||
0:37            add second child into first child (noContraction temp float)
 | 
			
		||||
0:37              'r1' (noContraction temp float)
 | 
			
		||||
0:37              add (noContraction temp float)
 | 
			
		||||
0:37                add (noContraction temp float)
 | 
			
		||||
0:37                  Constant:
 | 
			
		||||
0:37                    3.120000
 | 
			
		||||
0:37                  Convert int to float (temp float)
 | 
			
		||||
0:37                    'b' (noContraction temp int)
 | 
			
		||||
0:37                Convert int to float (temp float)
 | 
			
		||||
0:37                  'i' (noContraction temp int)
 | 
			
		||||
0:38            add second child into first child (noContraction temp int)
 | 
			
		||||
0:38              'c' (noContraction temp int)
 | 
			
		||||
0:38              Constant:
 | 
			
		||||
0:38                1 (const int)
 | 
			
		||||
0:36          Loop Terminal Expression
 | 
			
		||||
0:36          Post-Increment (noContraction temp int)
 | 
			
		||||
0:36            'i' (noContraction temp int)
 | 
			
		||||
0:40      add second child into first child (temp int)
 | 
			
		||||
0:40        'a' (temp int)
 | 
			
		||||
0:40        Constant:
 | 
			
		||||
0:40          1 (const int)
 | 
			
		||||
0:41      move second child to first child (temp float)
 | 
			
		||||
0:41        'r2' (noContraction temp float)
 | 
			
		||||
0:41        Convert int to float (temp float)
 | 
			
		||||
0:41          'c' (noContraction temp int)
 | 
			
		||||
0:42      Branch: Return with expression
 | 
			
		||||
0:42        Construct float (temp float)
 | 
			
		||||
0:42          add (temp float)
 | 
			
		||||
0:42            'r1' (noContraction temp float)
 | 
			
		||||
0:42            'r2' (noContraction temp float)
 | 
			
		||||
0:45  Function Definition: loop_array( (global void)
 | 
			
		||||
0:45    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:48      Sequence
 | 
			
		||||
0:48        move second child to first child (temp int)
 | 
			
		||||
0:48          'x' (noContraction temp int)
 | 
			
		||||
0:48          Constant:
 | 
			
		||||
0:48            22 (const int)
 | 
			
		||||
0:49      Sequence
 | 
			
		||||
0:49        move second child to first child (temp int)
 | 
			
		||||
0:49          'y' (noContraction temp int)
 | 
			
		||||
0:49          Constant:
 | 
			
		||||
0:49            33 (const int)
 | 
			
		||||
0:52      add second child into first child (noContraction temp float)
 | 
			
		||||
0:52        'result' (noContraction temp float)
 | 
			
		||||
0:52        add (noContraction temp float)
 | 
			
		||||
0:52          Convert int to float (temp float)
 | 
			
		||||
0:52            'x' (noContraction temp int)
 | 
			
		||||
0:52          Convert int to float (temp float)
 | 
			
		||||
0:52            'y' (noContraction temp int)
 | 
			
		||||
0:54      Sequence
 | 
			
		||||
0:54        Sequence
 | 
			
		||||
0:54          move second child to first child (temp int)
 | 
			
		||||
0:54            'i' (temp int)
 | 
			
		||||
0:54            Constant:
 | 
			
		||||
0:54              0 (const int)
 | 
			
		||||
0:54        Loop with condition tested first
 | 
			
		||||
0:54          Loop Condition
 | 
			
		||||
0:54          Compare Less Than (temp bool)
 | 
			
		||||
0:54            'i' (temp int)
 | 
			
		||||
0:54            Constant:
 | 
			
		||||
0:54              3 (const int)
 | 
			
		||||
0:54          Loop Body
 | 
			
		||||
0:56          Sequence
 | 
			
		||||
0:56            add second child into first child (noContraction temp float)
 | 
			
		||||
0:56              'result' (noContraction temp float)
 | 
			
		||||
0:56              add (noContraction temp float)
 | 
			
		||||
0:56                indirect index (noContraction temp float)
 | 
			
		||||
0:56                  'a0' (temp 3-element array of float)
 | 
			
		||||
0:56                  'i' (temp int)
 | 
			
		||||
0:56                Constant:
 | 
			
		||||
0:56                  2.000000
 | 
			
		||||
0:58            move second child to first child (temp float)
 | 
			
		||||
0:58              indirect index (noContraction temp float)
 | 
			
		||||
0:58                'a0' (noContraction temp 3-element array of float)
 | 
			
		||||
0:58                'i' (temp int)
 | 
			
		||||
0:58              subtract (noContraction temp float)
 | 
			
		||||
0:58                Constant:
 | 
			
		||||
0:58                  3.000000
 | 
			
		||||
0:58                Post-Increment (noContraction temp float)
 | 
			
		||||
0:58                  'result' (noContraction temp float)
 | 
			
		||||
0:54          Loop Terminal Expression
 | 
			
		||||
0:54          Pre-Increment (temp int)
 | 
			
		||||
0:54            'i' (temp int)
 | 
			
		||||
0:62  Function Definition: loop_while( (global void)
 | 
			
		||||
0:62    Function Parameters: 
 | 
			
		||||
0:63    Sequence
 | 
			
		||||
0:63      Sequence
 | 
			
		||||
0:63        move second child to first child (temp float)
 | 
			
		||||
0:63          'result' (noContraction temp float)
 | 
			
		||||
0:63          Constant:
 | 
			
		||||
0:63            5.000000
 | 
			
		||||
0:64      Sequence
 | 
			
		||||
0:64        move second child to first child (temp int)
 | 
			
		||||
0:64          'a' (noContraction temp int)
 | 
			
		||||
0:64          Constant:
 | 
			
		||||
0:64            10 (const int)
 | 
			
		||||
0:65      Sequence
 | 
			
		||||
0:65        move second child to first child (temp int)
 | 
			
		||||
0:65          'b' (noContraction temp int)
 | 
			
		||||
0:65          Constant:
 | 
			
		||||
0:65            20 (const int)
 | 
			
		||||
0:66      Loop with condition tested first
 | 
			
		||||
0:66        Loop Condition
 | 
			
		||||
0:66        Compare Less Than (temp bool)
 | 
			
		||||
0:66          'result' (noContraction temp float)
 | 
			
		||||
0:66          Constant:
 | 
			
		||||
0:66            10.000000
 | 
			
		||||
0:66        Loop Body
 | 
			
		||||
0:67        Sequence
 | 
			
		||||
0:67          add second child into first child (noContraction temp float)
 | 
			
		||||
0:67            'result' (noContraction temp float)
 | 
			
		||||
0:67            add (noContraction temp float)
 | 
			
		||||
0:67              Constant:
 | 
			
		||||
0:67                3.120000
 | 
			
		||||
0:67              Convert int to float (temp float)
 | 
			
		||||
0:67                'b' (noContraction temp int)
 | 
			
		||||
0:69      move second child to first child (temp float)
 | 
			
		||||
0:69        'result' (noContraction temp float)
 | 
			
		||||
0:69        Convert int to float (temp float)
 | 
			
		||||
0:69          add (temp int)
 | 
			
		||||
0:69            add (temp int)
 | 
			
		||||
0:69              'a' (noContraction temp int)
 | 
			
		||||
0:69              'b' (noContraction temp int)
 | 
			
		||||
0:69            Constant:
 | 
			
		||||
0:69              5 (const int)
 | 
			
		||||
0:70      move second child to first child (temp float)
 | 
			
		||||
0:70        'result' (noContraction temp float)
 | 
			
		||||
0:70        Constant:
 | 
			
		||||
0:70          11.100000
 | 
			
		||||
0:73  Function Definition: fma_not_decorated( (global float)
 | 
			
		||||
0:73    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:75      Sequence
 | 
			
		||||
0:75        move second child to first child (temp float)
 | 
			
		||||
0:75          'a' (noContraction temp float)
 | 
			
		||||
0:75          Constant:
 | 
			
		||||
0:75            1.000000
 | 
			
		||||
0:76      Sequence
 | 
			
		||||
0:76        move second child to first child (temp float)
 | 
			
		||||
0:76          'b' (noContraction temp float)
 | 
			
		||||
0:76          Constant:
 | 
			
		||||
0:76            2.000000
 | 
			
		||||
0:77      Sequence
 | 
			
		||||
0:77        move second child to first child (temp float)
 | 
			
		||||
0:77          'c' (noContraction temp float)
 | 
			
		||||
0:77          Constant:
 | 
			
		||||
0:77            3.000000
 | 
			
		||||
0:78      move second child to first child (temp float)
 | 
			
		||||
0:78        'b' (noContraction temp float)
 | 
			
		||||
0:78        add (noContraction temp float)
 | 
			
		||||
0:78          'b' (noContraction temp float)
 | 
			
		||||
0:78          'c' (noContraction temp float)
 | 
			
		||||
0:79      move second child to first child (temp float)
 | 
			
		||||
0:79        'result' (noContraction temp float)
 | 
			
		||||
0:79        fma (global float)
 | 
			
		||||
0:79          'a' (noContraction temp float)
 | 
			
		||||
0:79          'b' (noContraction temp float)
 | 
			
		||||
0:79          'c' (noContraction temp float)
 | 
			
		||||
0:80      Branch: Return with expression
 | 
			
		||||
0:80        'result' (noContraction temp float)
 | 
			
		||||
0:83  Function Definition: precise_return_exp_func( (noContraction temp float)
 | 
			
		||||
0:83    Function Parameters: 
 | 
			
		||||
0:84    Sequence
 | 
			
		||||
0:84      Sequence
 | 
			
		||||
0:84        move second child to first child (temp float)
 | 
			
		||||
0:84          'a' (noContraction temp float)
 | 
			
		||||
0:84          Constant:
 | 
			
		||||
0:84            1.000000
 | 
			
		||||
0:85      Sequence
 | 
			
		||||
0:85        move second child to first child (temp float)
 | 
			
		||||
0:85          'b' (noContraction temp float)
 | 
			
		||||
0:85          Constant:
 | 
			
		||||
0:85            2.000000
 | 
			
		||||
0:86      Branch: Return with expression
 | 
			
		||||
0:86        add (noContraction temp float)
 | 
			
		||||
0:86          'a' (noContraction temp float)
 | 
			
		||||
0:86          'b' (noContraction temp float)
 | 
			
		||||
0:89  Function Definition: precise_return_val_func( (noContraction temp float)
 | 
			
		||||
0:89    Function Parameters: 
 | 
			
		||||
0:90    Sequence
 | 
			
		||||
0:90      Sequence
 | 
			
		||||
0:90        move second child to first child (temp float)
 | 
			
		||||
0:90          'a' (noContraction temp float)
 | 
			
		||||
0:90          Constant:
 | 
			
		||||
0:90            1.000000
 | 
			
		||||
0:91      Sequence
 | 
			
		||||
0:91        move second child to first child (temp float)
 | 
			
		||||
0:91          'b' (noContraction temp float)
 | 
			
		||||
0:91          Constant:
 | 
			
		||||
0:91            2.000000
 | 
			
		||||
0:92      Sequence
 | 
			
		||||
0:92        move second child to first child (temp float)
 | 
			
		||||
0:92          'result' (noContraction temp float)
 | 
			
		||||
0:92          add (noContraction temp float)
 | 
			
		||||
0:92            'a' (noContraction temp float)
 | 
			
		||||
0:92            'b' (noContraction temp float)
 | 
			
		||||
0:93      Branch: Return with expression
 | 
			
		||||
0:93        'result' (noContraction temp float)
 | 
			
		||||
0:96  Function Definition: precise_func_parameter(f1;f1; (global float)
 | 
			
		||||
0:96    Function Parameters: 
 | 
			
		||||
0:96      'b' (in float)
 | 
			
		||||
0:96      'c' (noContraction out float)
 | 
			
		||||
0:97    Sequence
 | 
			
		||||
0:97      Sequence
 | 
			
		||||
0:97        move second child to first child (temp float)
 | 
			
		||||
0:97          'a' (noContraction temp float)
 | 
			
		||||
0:97          Constant:
 | 
			
		||||
0:97            0.500000
 | 
			
		||||
0:98      move second child to first child (temp float)
 | 
			
		||||
0:98        'c' (noContraction out float)
 | 
			
		||||
0:98        add (noContraction temp float)
 | 
			
		||||
0:98          'a' (noContraction temp float)
 | 
			
		||||
0:98          'b' (noContraction in float)
 | 
			
		||||
0:99      Branch: Return with expression
 | 
			
		||||
0:99        subtract (temp float)
 | 
			
		||||
0:99          'a' (temp float)
 | 
			
		||||
0:99          'b' (in float)
 | 
			
		||||
0:102  Function Definition: matrix(mf23;mf32; (global 3X3 matrix of float)
 | 
			
		||||
0:102    Function Parameters: 
 | 
			
		||||
0:102      'a' (in 2X3 matrix of float)
 | 
			
		||||
0:102      'b' (in 3X2 matrix of float)
 | 
			
		||||
0:103    Sequence
 | 
			
		||||
0:103      Sequence
 | 
			
		||||
0:103        move second child to first child (temp 2X3 matrix of float)
 | 
			
		||||
0:103          'c' (noContraction temp 2X3 matrix of float)
 | 
			
		||||
0:103          Constant:
 | 
			
		||||
0:103            1.000000
 | 
			
		||||
0:103            2.000000
 | 
			
		||||
0:103            3.000000
 | 
			
		||||
0:103            4.000000
 | 
			
		||||
0:103            5.000000
 | 
			
		||||
0:103            6.000000
 | 
			
		||||
0:105      move second child to first child (temp 3X3 matrix of float)
 | 
			
		||||
0:105        'result' (noContraction temp 3X3 matrix of float)
 | 
			
		||||
0:105        matrix-multiply (noContraction temp 3X3 matrix of float)
 | 
			
		||||
0:105          add (noContraction temp 2X3 matrix of float)
 | 
			
		||||
0:105            'a' (noContraction in 2X3 matrix of float)
 | 
			
		||||
0:105            'c' (noContraction temp 2X3 matrix of float)
 | 
			
		||||
0:105          'b' (noContraction in 3X2 matrix of float)
 | 
			
		||||
0:106      Branch: Return with expression
 | 
			
		||||
0:106        'result' (noContraction temp 3X3 matrix of float)
 | 
			
		||||
0:109  Function Definition: main( (global void)
 | 
			
		||||
0:109    Function Parameters: 
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked tessellation control stage:
 | 
			
		||||
 | 
			
		||||
ERROR: Linking tessellation control stage: At least one shader must specify an output layout(vertices=...)
 | 
			
		||||
 | 
			
		||||
Shader version: 450
 | 
			
		||||
Requested GL_EXT_gpu_shader5
 | 
			
		||||
Requested GL_EXT_shader_io_blocks
 | 
			
		||||
Requested GL_EXT_tessellation_shader
 | 
			
		||||
vertices = -1
 | 
			
		||||
0:? Sequence
 | 
			
		||||
0:5  Function Definition: minimal( (global float)
 | 
			
		||||
0:5    Function Parameters: 
 | 
			
		||||
0:6    Sequence
 | 
			
		||||
0:6      Sequence
 | 
			
		||||
0:6        move second child to first child (temp float)
 | 
			
		||||
0:6          'result' (noContraction temp float)
 | 
			
		||||
0:6          Constant:
 | 
			
		||||
0:6            5.000000
 | 
			
		||||
0:7      Sequence
 | 
			
		||||
0:7        move second child to first child (temp float)
 | 
			
		||||
0:7          'a' (noContraction temp float)
 | 
			
		||||
0:7          Constant:
 | 
			
		||||
0:7            10.000000
 | 
			
		||||
0:8      Sequence
 | 
			
		||||
0:8        move second child to first child (temp float)
 | 
			
		||||
0:8          'b' (noContraction temp float)
 | 
			
		||||
0:8          Constant:
 | 
			
		||||
0:8            20.000000
 | 
			
		||||
0:9      Sequence
 | 
			
		||||
0:9        move second child to first child (temp float)
 | 
			
		||||
0:9          'c' (noContraction temp float)
 | 
			
		||||
0:9          Constant:
 | 
			
		||||
0:9            30.000000
 | 
			
		||||
0:10      Sequence
 | 
			
		||||
0:10        move second child to first child (temp float)
 | 
			
		||||
0:10          'd' (noContraction temp float)
 | 
			
		||||
0:10          Constant:
 | 
			
		||||
0:10            40.000000
 | 
			
		||||
0:11      move second child to first child (temp float)
 | 
			
		||||
0:11        'result' (noContraction temp float)
 | 
			
		||||
0:11        add (noContraction temp float)
 | 
			
		||||
0:11          component-wise multiply (noContraction temp float)
 | 
			
		||||
0:11            'a' (noContraction temp float)
 | 
			
		||||
0:11            'b' (noContraction temp float)
 | 
			
		||||
0:11          component-wise multiply (noContraction temp float)
 | 
			
		||||
0:11            'c' (noContraction temp float)
 | 
			
		||||
0:11            'd' (noContraction temp float)
 | 
			
		||||
0:12      Branch: Return with expression
 | 
			
		||||
0:12        'result' (noContraction temp float)
 | 
			
		||||
0:15  Function Definition: continuous_assignment( (global void)
 | 
			
		||||
0:15    Function Parameters: 
 | 
			
		||||
0:16    Sequence
 | 
			
		||||
0:16      Sequence
 | 
			
		||||
0:16        move second child to first child (temp float)
 | 
			
		||||
0:16          'result' (noContraction temp float)
 | 
			
		||||
0:16          Constant:
 | 
			
		||||
0:16            5.000000
 | 
			
		||||
0:17      Sequence
 | 
			
		||||
0:17        move second child to first child (temp float)
 | 
			
		||||
0:17          'a' (noContraction temp float)
 | 
			
		||||
0:17          Constant:
 | 
			
		||||
0:17            10.000000
 | 
			
		||||
0:18      Sequence
 | 
			
		||||
0:18        move second child to first child (temp float)
 | 
			
		||||
0:18          'b' (noContraction temp float)
 | 
			
		||||
0:18          Constant:
 | 
			
		||||
0:18            20.000000
 | 
			
		||||
0:19      move second child to first child (temp float)
 | 
			
		||||
0:19        'result' (noContraction temp float)
 | 
			
		||||
0:19        move second child to first child (temp float)
 | 
			
		||||
0:19          'a' (noContraction temp float)
 | 
			
		||||
0:19          add (noContraction temp float)
 | 
			
		||||
0:19            'b' (noContraction temp float)
 | 
			
		||||
0:19            Constant:
 | 
			
		||||
0:19              4.000000
 | 
			
		||||
0:22  Function Definition: convert( (global void)
 | 
			
		||||
0:22    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:24      Sequence
 | 
			
		||||
0:24        move second child to first child (temp float)
 | 
			
		||||
0:24          'a' (noContraction temp float)
 | 
			
		||||
0:24          Constant:
 | 
			
		||||
0:24            10.000000
 | 
			
		||||
0:25      Sequence
 | 
			
		||||
0:25        move second child to first child (temp float)
 | 
			
		||||
0:25          'b' (noContraction temp float)
 | 
			
		||||
0:25          Constant:
 | 
			
		||||
0:25            20.000000
 | 
			
		||||
0:26      move second child to first child (temp float)
 | 
			
		||||
0:26        'b' (noContraction temp float)
 | 
			
		||||
0:26        add (noContraction temp float)
 | 
			
		||||
0:26          'a' (noContraction temp float)
 | 
			
		||||
0:26          'b' (noContraction temp float)
 | 
			
		||||
0:27      move second child to first child (temp double)
 | 
			
		||||
0:27        'result' (noContraction temp double)
 | 
			
		||||
0:27        Convert float to double (temp double)
 | 
			
		||||
0:27          'b' (noContraction temp float)
 | 
			
		||||
0:30  Function Definition: loop_for( (global float)
 | 
			
		||||
0:30    Function Parameters: 
 | 
			
		||||
0:31    Sequence
 | 
			
		||||
0:31      Sequence
 | 
			
		||||
0:31        move second child to first child (temp float)
 | 
			
		||||
0:31          'r1' (noContraction temp float)
 | 
			
		||||
0:31          Constant:
 | 
			
		||||
0:31            5.000000
 | 
			
		||||
0:32      Sequence
 | 
			
		||||
0:32        move second child to first child (temp float)
 | 
			
		||||
0:32          'r2' (noContraction temp float)
 | 
			
		||||
0:32          Constant:
 | 
			
		||||
0:32            10.000000
 | 
			
		||||
0:33      Sequence
 | 
			
		||||
0:33        move second child to first child (temp int)
 | 
			
		||||
0:33          'a' (temp int)
 | 
			
		||||
0:33          Constant:
 | 
			
		||||
0:33            10 (const int)
 | 
			
		||||
0:34      Sequence
 | 
			
		||||
0:34        move second child to first child (temp int)
 | 
			
		||||
0:34          'b' (noContraction temp int)
 | 
			
		||||
0:34          Constant:
 | 
			
		||||
0:34            20 (const int)
 | 
			
		||||
0:35      Sequence
 | 
			
		||||
0:35        move second child to first child (temp int)
 | 
			
		||||
0:35          'c' (noContraction temp int)
 | 
			
		||||
0:35          Constant:
 | 
			
		||||
0:35            30 (const int)
 | 
			
		||||
0:36      Sequence
 | 
			
		||||
0:36        Sequence
 | 
			
		||||
0:36          move second child to first child (temp int)
 | 
			
		||||
0:36            'i' (noContraction temp int)
 | 
			
		||||
0:36            Constant:
 | 
			
		||||
0:36              0 (const int)
 | 
			
		||||
0:36        Loop with condition tested first
 | 
			
		||||
0:36          Loop Condition
 | 
			
		||||
0:36          Compare Less Than (temp bool)
 | 
			
		||||
0:36            'i' (temp int)
 | 
			
		||||
0:36            'a' (temp int)
 | 
			
		||||
0:36          Loop Body
 | 
			
		||||
0:37          Sequence
 | 
			
		||||
0:37            add second child into first child (noContraction temp float)
 | 
			
		||||
0:37              'r1' (noContraction temp float)
 | 
			
		||||
0:37              add (noContraction temp float)
 | 
			
		||||
0:37                add (noContraction temp float)
 | 
			
		||||
0:37                  Constant:
 | 
			
		||||
0:37                    3.120000
 | 
			
		||||
0:37                  Convert int to float (temp float)
 | 
			
		||||
0:37                    'b' (noContraction temp int)
 | 
			
		||||
0:37                Convert int to float (temp float)
 | 
			
		||||
0:37                  'i' (noContraction temp int)
 | 
			
		||||
0:38            add second child into first child (noContraction temp int)
 | 
			
		||||
0:38              'c' (noContraction temp int)
 | 
			
		||||
0:38              Constant:
 | 
			
		||||
0:38                1 (const int)
 | 
			
		||||
0:36          Loop Terminal Expression
 | 
			
		||||
0:36          Post-Increment (noContraction temp int)
 | 
			
		||||
0:36            'i' (noContraction temp int)
 | 
			
		||||
0:40      add second child into first child (temp int)
 | 
			
		||||
0:40        'a' (temp int)
 | 
			
		||||
0:40        Constant:
 | 
			
		||||
0:40          1 (const int)
 | 
			
		||||
0:41      move second child to first child (temp float)
 | 
			
		||||
0:41        'r2' (noContraction temp float)
 | 
			
		||||
0:41        Convert int to float (temp float)
 | 
			
		||||
0:41          'c' (noContraction temp int)
 | 
			
		||||
0:42      Branch: Return with expression
 | 
			
		||||
0:42        Construct float (temp float)
 | 
			
		||||
0:42          add (temp float)
 | 
			
		||||
0:42            'r1' (noContraction temp float)
 | 
			
		||||
0:42            'r2' (noContraction temp float)
 | 
			
		||||
0:45  Function Definition: loop_array( (global void)
 | 
			
		||||
0:45    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:48      Sequence
 | 
			
		||||
0:48        move second child to first child (temp int)
 | 
			
		||||
0:48          'x' (noContraction temp int)
 | 
			
		||||
0:48          Constant:
 | 
			
		||||
0:48            22 (const int)
 | 
			
		||||
0:49      Sequence
 | 
			
		||||
0:49        move second child to first child (temp int)
 | 
			
		||||
0:49          'y' (noContraction temp int)
 | 
			
		||||
0:49          Constant:
 | 
			
		||||
0:49            33 (const int)
 | 
			
		||||
0:52      add second child into first child (noContraction temp float)
 | 
			
		||||
0:52        'result' (noContraction temp float)
 | 
			
		||||
0:52        add (noContraction temp float)
 | 
			
		||||
0:52          Convert int to float (temp float)
 | 
			
		||||
0:52            'x' (noContraction temp int)
 | 
			
		||||
0:52          Convert int to float (temp float)
 | 
			
		||||
0:52            'y' (noContraction temp int)
 | 
			
		||||
0:54      Sequence
 | 
			
		||||
0:54        Sequence
 | 
			
		||||
0:54          move second child to first child (temp int)
 | 
			
		||||
0:54            'i' (temp int)
 | 
			
		||||
0:54            Constant:
 | 
			
		||||
0:54              0 (const int)
 | 
			
		||||
0:54        Loop with condition tested first
 | 
			
		||||
0:54          Loop Condition
 | 
			
		||||
0:54          Compare Less Than (temp bool)
 | 
			
		||||
0:54            'i' (temp int)
 | 
			
		||||
0:54            Constant:
 | 
			
		||||
0:54              3 (const int)
 | 
			
		||||
0:54          Loop Body
 | 
			
		||||
0:56          Sequence
 | 
			
		||||
0:56            add second child into first child (noContraction temp float)
 | 
			
		||||
0:56              'result' (noContraction temp float)
 | 
			
		||||
0:56              add (noContraction temp float)
 | 
			
		||||
0:56                indirect index (noContraction temp float)
 | 
			
		||||
0:56                  'a0' (temp 3-element array of float)
 | 
			
		||||
0:56                  'i' (temp int)
 | 
			
		||||
0:56                Constant:
 | 
			
		||||
0:56                  2.000000
 | 
			
		||||
0:58            move second child to first child (temp float)
 | 
			
		||||
0:58              indirect index (noContraction temp float)
 | 
			
		||||
0:58                'a0' (noContraction temp 3-element array of float)
 | 
			
		||||
0:58                'i' (temp int)
 | 
			
		||||
0:58              subtract (noContraction temp float)
 | 
			
		||||
0:58                Constant:
 | 
			
		||||
0:58                  3.000000
 | 
			
		||||
0:58                Post-Increment (noContraction temp float)
 | 
			
		||||
0:58                  'result' (noContraction temp float)
 | 
			
		||||
0:54          Loop Terminal Expression
 | 
			
		||||
0:54          Pre-Increment (temp int)
 | 
			
		||||
0:54            'i' (temp int)
 | 
			
		||||
0:62  Function Definition: loop_while( (global void)
 | 
			
		||||
0:62    Function Parameters: 
 | 
			
		||||
0:63    Sequence
 | 
			
		||||
0:63      Sequence
 | 
			
		||||
0:63        move second child to first child (temp float)
 | 
			
		||||
0:63          'result' (noContraction temp float)
 | 
			
		||||
0:63          Constant:
 | 
			
		||||
0:63            5.000000
 | 
			
		||||
0:64      Sequence
 | 
			
		||||
0:64        move second child to first child (temp int)
 | 
			
		||||
0:64          'a' (noContraction temp int)
 | 
			
		||||
0:64          Constant:
 | 
			
		||||
0:64            10 (const int)
 | 
			
		||||
0:65      Sequence
 | 
			
		||||
0:65        move second child to first child (temp int)
 | 
			
		||||
0:65          'b' (noContraction temp int)
 | 
			
		||||
0:65          Constant:
 | 
			
		||||
0:65            20 (const int)
 | 
			
		||||
0:66      Loop with condition tested first
 | 
			
		||||
0:66        Loop Condition
 | 
			
		||||
0:66        Compare Less Than (temp bool)
 | 
			
		||||
0:66          'result' (noContraction temp float)
 | 
			
		||||
0:66          Constant:
 | 
			
		||||
0:66            10.000000
 | 
			
		||||
0:66        Loop Body
 | 
			
		||||
0:67        Sequence
 | 
			
		||||
0:67          add second child into first child (noContraction temp float)
 | 
			
		||||
0:67            'result' (noContraction temp float)
 | 
			
		||||
0:67            add (noContraction temp float)
 | 
			
		||||
0:67              Constant:
 | 
			
		||||
0:67                3.120000
 | 
			
		||||
0:67              Convert int to float (temp float)
 | 
			
		||||
0:67                'b' (noContraction temp int)
 | 
			
		||||
0:69      move second child to first child (temp float)
 | 
			
		||||
0:69        'result' (noContraction temp float)
 | 
			
		||||
0:69        Convert int to float (temp float)
 | 
			
		||||
0:69          add (temp int)
 | 
			
		||||
0:69            add (temp int)
 | 
			
		||||
0:69              'a' (noContraction temp int)
 | 
			
		||||
0:69              'b' (noContraction temp int)
 | 
			
		||||
0:69            Constant:
 | 
			
		||||
0:69              5 (const int)
 | 
			
		||||
0:70      move second child to first child (temp float)
 | 
			
		||||
0:70        'result' (noContraction temp float)
 | 
			
		||||
0:70        Constant:
 | 
			
		||||
0:70          11.100000
 | 
			
		||||
0:73  Function Definition: fma_not_decorated( (global float)
 | 
			
		||||
0:73    Function Parameters: 
 | 
			
		||||
0:?     Sequence
 | 
			
		||||
0:75      Sequence
 | 
			
		||||
0:75        move second child to first child (temp float)
 | 
			
		||||
0:75          'a' (noContraction temp float)
 | 
			
		||||
0:75          Constant:
 | 
			
		||||
0:75            1.000000
 | 
			
		||||
0:76      Sequence
 | 
			
		||||
0:76        move second child to first child (temp float)
 | 
			
		||||
0:76          'b' (noContraction temp float)
 | 
			
		||||
0:76          Constant:
 | 
			
		||||
0:76            2.000000
 | 
			
		||||
0:77      Sequence
 | 
			
		||||
0:77        move second child to first child (temp float)
 | 
			
		||||
0:77          'c' (noContraction temp float)
 | 
			
		||||
0:77          Constant:
 | 
			
		||||
0:77            3.000000
 | 
			
		||||
0:78      move second child to first child (temp float)
 | 
			
		||||
0:78        'b' (noContraction temp float)
 | 
			
		||||
0:78        add (noContraction temp float)
 | 
			
		||||
0:78          'b' (noContraction temp float)
 | 
			
		||||
0:78          'c' (noContraction temp float)
 | 
			
		||||
0:79      move second child to first child (temp float)
 | 
			
		||||
0:79        'result' (noContraction temp float)
 | 
			
		||||
0:79        fma (global float)
 | 
			
		||||
0:79          'a' (noContraction temp float)
 | 
			
		||||
0:79          'b' (noContraction temp float)
 | 
			
		||||
0:79          'c' (noContraction temp float)
 | 
			
		||||
0:80      Branch: Return with expression
 | 
			
		||||
0:80        'result' (noContraction temp float)
 | 
			
		||||
0:83  Function Definition: precise_return_exp_func( (noContraction temp float)
 | 
			
		||||
0:83    Function Parameters: 
 | 
			
		||||
0:84    Sequence
 | 
			
		||||
0:84      Sequence
 | 
			
		||||
0:84        move second child to first child (temp float)
 | 
			
		||||
0:84          'a' (noContraction temp float)
 | 
			
		||||
0:84          Constant:
 | 
			
		||||
0:84            1.000000
 | 
			
		||||
0:85      Sequence
 | 
			
		||||
0:85        move second child to first child (temp float)
 | 
			
		||||
0:85          'b' (noContraction temp float)
 | 
			
		||||
0:85          Constant:
 | 
			
		||||
0:85            2.000000
 | 
			
		||||
0:86      Branch: Return with expression
 | 
			
		||||
0:86        add (noContraction temp float)
 | 
			
		||||
0:86          'a' (noContraction temp float)
 | 
			
		||||
0:86          'b' (noContraction temp float)
 | 
			
		||||
0:89  Function Definition: precise_return_val_func( (noContraction temp float)
 | 
			
		||||
0:89    Function Parameters: 
 | 
			
		||||
0:90    Sequence
 | 
			
		||||
0:90      Sequence
 | 
			
		||||
0:90        move second child to first child (temp float)
 | 
			
		||||
0:90          'a' (noContraction temp float)
 | 
			
		||||
0:90          Constant:
 | 
			
		||||
0:90            1.000000
 | 
			
		||||
0:91      Sequence
 | 
			
		||||
0:91        move second child to first child (temp float)
 | 
			
		||||
0:91          'b' (noContraction temp float)
 | 
			
		||||
0:91          Constant:
 | 
			
		||||
0:91            2.000000
 | 
			
		||||
0:92      Sequence
 | 
			
		||||
0:92        move second child to first child (temp float)
 | 
			
		||||
0:92          'result' (noContraction temp float)
 | 
			
		||||
0:92          add (noContraction temp float)
 | 
			
		||||
0:92            'a' (noContraction temp float)
 | 
			
		||||
0:92            'b' (noContraction temp float)
 | 
			
		||||
0:93      Branch: Return with expression
 | 
			
		||||
0:93        'result' (noContraction temp float)
 | 
			
		||||
0:96  Function Definition: precise_func_parameter(f1;f1; (global float)
 | 
			
		||||
0:96    Function Parameters: 
 | 
			
		||||
0:96      'b' (in float)
 | 
			
		||||
0:96      'c' (noContraction out float)
 | 
			
		||||
0:97    Sequence
 | 
			
		||||
0:97      Sequence
 | 
			
		||||
0:97        move second child to first child (temp float)
 | 
			
		||||
0:97          'a' (noContraction temp float)
 | 
			
		||||
0:97          Constant:
 | 
			
		||||
0:97            0.500000
 | 
			
		||||
0:98      move second child to first child (temp float)
 | 
			
		||||
0:98        'c' (noContraction out float)
 | 
			
		||||
0:98        add (noContraction temp float)
 | 
			
		||||
0:98          'a' (noContraction temp float)
 | 
			
		||||
0:98          'b' (noContraction in float)
 | 
			
		||||
0:99      Branch: Return with expression
 | 
			
		||||
0:99        subtract (temp float)
 | 
			
		||||
0:99          'a' (temp float)
 | 
			
		||||
0:99          'b' (in float)
 | 
			
		||||
0:102  Function Definition: matrix(mf23;mf32; (global 3X3 matrix of float)
 | 
			
		||||
0:102    Function Parameters: 
 | 
			
		||||
0:102      'a' (in 2X3 matrix of float)
 | 
			
		||||
0:102      'b' (in 3X2 matrix of float)
 | 
			
		||||
0:103    Sequence
 | 
			
		||||
0:103      Sequence
 | 
			
		||||
0:103        move second child to first child (temp 2X3 matrix of float)
 | 
			
		||||
0:103          'c' (noContraction temp 2X3 matrix of float)
 | 
			
		||||
0:103          Constant:
 | 
			
		||||
0:103            1.000000
 | 
			
		||||
0:103            2.000000
 | 
			
		||||
0:103            3.000000
 | 
			
		||||
0:103            4.000000
 | 
			
		||||
0:103            5.000000
 | 
			
		||||
0:103            6.000000
 | 
			
		||||
0:105      move second child to first child (temp 3X3 matrix of float)
 | 
			
		||||
0:105        'result' (noContraction temp 3X3 matrix of float)
 | 
			
		||||
0:105        matrix-multiply (noContraction temp 3X3 matrix of float)
 | 
			
		||||
0:105          add (noContraction temp 2X3 matrix of float)
 | 
			
		||||
0:105            'a' (noContraction in 2X3 matrix of float)
 | 
			
		||||
0:105            'c' (noContraction temp 2X3 matrix of float)
 | 
			
		||||
0:105          'b' (noContraction in 3X2 matrix of float)
 | 
			
		||||
0:106      Branch: Return with expression
 | 
			
		||||
0:106        'result' (noContraction temp 3X3 matrix of float)
 | 
			
		||||
0:109  Function Definition: main( (global void)
 | 
			
		||||
0:109    Function Parameters: 
 | 
			
		||||
0:?   Linker Objects
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1045
									
								
								Test/baseResults/precise_struct_block.vert.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1045
									
								
								Test/baseResults/precise_struct_block.vert.out
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -13,7 +13,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:20      Sequence
 | 
			
		||||
0:20        move second child to first child (temp highp 4-component vector of float)
 | 
			
		||||
0:20          't' (temp highp 4-component vector of float)
 | 
			
		||||
0:20          texture (global highp 4-component vector of float)
 | 
			
		||||
0:20          texture (global lowp 4-component vector of float)
 | 
			
		||||
0:20            's2D' (uniform lowp sampler2D)
 | 
			
		||||
0:20            Constant:
 | 
			
		||||
0:20              0.100000
 | 
			
		||||
@ -27,7 +27,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:21            0.200000
 | 
			
		||||
0:22      add second child into first child (temp highp 4-component vector of float)
 | 
			
		||||
0:22        't' (temp highp 4-component vector of float)
 | 
			
		||||
0:22        texture (global highp float)
 | 
			
		||||
0:22        texture (global mediump float)
 | 
			
		||||
0:22          's2dAS' (uniform mediump sampler2DArrayShadow)
 | 
			
		||||
0:22          Constant:
 | 
			
		||||
0:22            0.500000
 | 
			
		||||
@ -61,7 +61,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:20      Sequence
 | 
			
		||||
0:20        move second child to first child (temp highp 4-component vector of float)
 | 
			
		||||
0:20          't' (temp highp 4-component vector of float)
 | 
			
		||||
0:20          texture (global highp 4-component vector of float)
 | 
			
		||||
0:20          texture (global lowp 4-component vector of float)
 | 
			
		||||
0:20            's2D' (uniform lowp sampler2D)
 | 
			
		||||
0:20            Constant:
 | 
			
		||||
0:20              0.100000
 | 
			
		||||
@ -75,7 +75,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:21            0.200000
 | 
			
		||||
0:22      add second child into first child (temp highp 4-component vector of float)
 | 
			
		||||
0:22        't' (temp highp 4-component vector of float)
 | 
			
		||||
0:22        texture (global highp float)
 | 
			
		||||
0:22        texture (global mediump float)
 | 
			
		||||
0:22          's2dAS' (uniform mediump sampler2DArrayShadow)
 | 
			
		||||
0:22          Constant:
 | 
			
		||||
0:22            0.500000
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										0
									
								
								Test/baseResults/preprocessor.eof_missing.vert.err
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								Test/baseResults/preprocessor.eof_missing.vert.err
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										2
									
								
								Test/baseResults/preprocessor.eof_missing.vert.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								Test/baseResults/preprocessor.eof_missing.vert.out
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
noEOF
 | 
			
		||||
 | 
			
		||||
@ -95,3 +95,10 @@ abl2[1]: offset -1, type ffffffff, size 4, index -1
 | 
			
		||||
abl2[2]: offset -1, type ffffffff, size 4, index -1
 | 
			
		||||
abl2[3]: offset -1, type ffffffff, size 4, index -1
 | 
			
		||||
 | 
			
		||||
Vertex attribute reflection:
 | 
			
		||||
attributeFloat: offset 0, type 1406, size 0, index 0
 | 
			
		||||
attributeFloat2: offset 0, type 8b50, size 0, index 0
 | 
			
		||||
attributeFloat3: offset 0, type 8b51, size 0, index 0
 | 
			
		||||
attributeFloat4: offset 0, type 8b52, size 0, index 0
 | 
			
		||||
attributeMat4: offset 0, type 8b5c, size 0, index 0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,6 @@ ERROR: 0:97: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCount
 | 
			
		||||
ERROR: 0:106: '' : vertex input cannot be further qualified 
 | 
			
		||||
ERROR: 0:106: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_FrontColor
 | 
			
		||||
ERROR: 0:112: 'ColorIvn' : identifier not previously declared 
 | 
			
		||||
WARNING: 0:118: '' : unknown requalification 
 | 
			
		||||
ERROR: 0:132: 'shared' : not supported in this stage: vertex
 | 
			
		||||
ERROR: 0:134: '' : function does not return a value: funcA
 | 
			
		||||
ERROR: 0:136: '' : function does not return a value: funcB
 | 
			
		||||
@ -70,7 +69,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:148    Sequence
 | 
			
		||||
0:148      Sequence
 | 
			
		||||
0:148        move second child to first child (temp float)
 | 
			
		||||
0:148          'result' (temp float)
 | 
			
		||||
0:148          'result' (noContraction temp float)
 | 
			
		||||
0:148          add (temp float)
 | 
			
		||||
0:148            component-wise multiply (temp float)
 | 
			
		||||
0:148              'e' (in float)
 | 
			
		||||
@ -79,15 +78,15 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:148              'g' (in float)
 | 
			
		||||
0:148              'h' (in float)
 | 
			
		||||
0:150      Branch: Return with expression
 | 
			
		||||
0:150        'result' (temp float)
 | 
			
		||||
0:150        'result' (noContraction temp float)
 | 
			
		||||
0:153  Function Definition: func3(f1;f1;f1; (global float)
 | 
			
		||||
0:153    Function Parameters: 
 | 
			
		||||
0:153      'i' (in float)
 | 
			
		||||
0:153      'j' (in float)
 | 
			
		||||
0:153      'k' (out float)
 | 
			
		||||
0:153      'k' (noContraction out float)
 | 
			
		||||
0:155    Sequence
 | 
			
		||||
0:155      move second child to first child (temp float)
 | 
			
		||||
0:155        'k' (out float)
 | 
			
		||||
0:155        'k' (noContraction out float)
 | 
			
		||||
0:155        add (temp float)
 | 
			
		||||
0:155          component-wise multiply (temp float)
 | 
			
		||||
0:155            'i' (in float)
 | 
			
		||||
@ -111,8 +110,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:161              'c' (in 4-component vector of float)
 | 
			
		||||
0:161              'd' (in 4-component vector of float)
 | 
			
		||||
0:162      move second child to first child (temp 3-component vector of float)
 | 
			
		||||
0:162        vector swizzle (temp 3-component vector of float)
 | 
			
		||||
0:162          'v' (smooth out 4-component vector of float)
 | 
			
		||||
0:162        vector swizzle (noContraction temp 3-component vector of float)
 | 
			
		||||
0:162          'v' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:162          Sequence
 | 
			
		||||
0:162            Constant:
 | 
			
		||||
0:162              0 (const int)
 | 
			
		||||
@ -124,8 +123,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:162          'r' (temp 3-component vector of float)
 | 
			
		||||
0:162          's' (temp 3-component vector of float)
 | 
			
		||||
0:163      move second child to first child (temp float)
 | 
			
		||||
0:163        direct index (temp float)
 | 
			
		||||
0:163          'v' (smooth out 4-component vector of float)
 | 
			
		||||
0:163        direct index (noContraction temp float)
 | 
			
		||||
0:163          'v' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:163          Constant:
 | 
			
		||||
0:163            3 (const int)
 | 
			
		||||
0:163        add (temp float)
 | 
			
		||||
@ -148,8 +147,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:163              Constant:
 | 
			
		||||
0:163                3 (const int)
 | 
			
		||||
0:164      move second child to first child (temp float)
 | 
			
		||||
0:164        direct index (temp float)
 | 
			
		||||
0:164          'v' (smooth out 4-component vector of float)
 | 
			
		||||
0:164        direct index (noContraction temp float)
 | 
			
		||||
0:164          'v' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:164          Constant:
 | 
			
		||||
0:164            0 (const int)
 | 
			
		||||
0:164        Function Call: func(f1;f1;f1;f1; (global float)
 | 
			
		||||
@ -170,8 +169,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:164            Constant:
 | 
			
		||||
0:164              0 (const int)
 | 
			
		||||
0:166      move second child to first child (temp float)
 | 
			
		||||
0:166        direct index (temp float)
 | 
			
		||||
0:166          'v' (smooth out 4-component vector of float)
 | 
			
		||||
0:166        direct index (noContraction temp float)
 | 
			
		||||
0:166          'v' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:166          Constant:
 | 
			
		||||
0:166            0 (const int)
 | 
			
		||||
0:166        Function Call: func2(f1;f1;f1;f1; (global float)
 | 
			
		||||
@ -210,8 +209,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:167            'd' (in 4-component vector of float)
 | 
			
		||||
0:167            Constant:
 | 
			
		||||
0:167              0 (const int)
 | 
			
		||||
0:167        direct index (temp float)
 | 
			
		||||
0:167          'v' (smooth out 4-component vector of float)
 | 
			
		||||
0:167        direct index (noContraction temp float)
 | 
			
		||||
0:167          'v' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:167          Constant:
 | 
			
		||||
0:167            0 (const int)
 | 
			
		||||
0:169      Function Call: funcA(I21; (global 4-component vector of float)
 | 
			
		||||
@ -302,13 +301,13 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'anon@5' (out block{invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, flat out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
 | 
			
		||||
0:?     'ColorInv' (smooth out 3-component vector of float)
 | 
			
		||||
0:?     'Color4' (invariant centroid smooth out 3-component vector of float)
 | 
			
		||||
0:?     'position' (smooth out 4-component vector of float)
 | 
			
		||||
0:?     'position' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:?     'Color5' (smooth out 3-component vector of float)
 | 
			
		||||
0:?     'a' (in 4-component vector of float)
 | 
			
		||||
0:?     'b' (in 4-component vector of float)
 | 
			
		||||
0:?     'c' (in 4-component vector of float)
 | 
			
		||||
0:?     'd' (in 4-component vector of float)
 | 
			
		||||
0:?     'v' (smooth out 4-component vector of float)
 | 
			
		||||
0:?     'v' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:?     'anon@6' (layout(column_major shared ) coherent buffer block{layout(column_major shared ) readonly buffer 4-component vector of float member1, layout(column_major shared ) buffer 4-component vector of float member2})
 | 
			
		||||
0:?     'anon@7' (layout(column_major shared ) buffer block{layout(column_major shared ) coherent readonly buffer 4-component vector of float member1A, layout(column_major shared ) coherent buffer 4-component vector of float member2A})
 | 
			
		||||
0:?     'shv' (shared 4-component vector of float)
 | 
			
		||||
@ -354,7 +353,7 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:148    Sequence
 | 
			
		||||
0:148      Sequence
 | 
			
		||||
0:148        move second child to first child (temp float)
 | 
			
		||||
0:148          'result' (temp float)
 | 
			
		||||
0:148          'result' (noContraction temp float)
 | 
			
		||||
0:148          add (temp float)
 | 
			
		||||
0:148            component-wise multiply (temp float)
 | 
			
		||||
0:148              'e' (in float)
 | 
			
		||||
@ -363,15 +362,15 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:148              'g' (in float)
 | 
			
		||||
0:148              'h' (in float)
 | 
			
		||||
0:150      Branch: Return with expression
 | 
			
		||||
0:150        'result' (temp float)
 | 
			
		||||
0:150        'result' (noContraction temp float)
 | 
			
		||||
0:153  Function Definition: func3(f1;f1;f1; (global float)
 | 
			
		||||
0:153    Function Parameters: 
 | 
			
		||||
0:153      'i' (in float)
 | 
			
		||||
0:153      'j' (in float)
 | 
			
		||||
0:153      'k' (out float)
 | 
			
		||||
0:153      'k' (noContraction out float)
 | 
			
		||||
0:155    Sequence
 | 
			
		||||
0:155      move second child to first child (temp float)
 | 
			
		||||
0:155        'k' (out float)
 | 
			
		||||
0:155        'k' (noContraction out float)
 | 
			
		||||
0:155        add (temp float)
 | 
			
		||||
0:155          component-wise multiply (temp float)
 | 
			
		||||
0:155            'i' (in float)
 | 
			
		||||
@ -395,8 +394,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:161              'c' (in 4-component vector of float)
 | 
			
		||||
0:161              'd' (in 4-component vector of float)
 | 
			
		||||
0:162      move second child to first child (temp 3-component vector of float)
 | 
			
		||||
0:162        vector swizzle (temp 3-component vector of float)
 | 
			
		||||
0:162          'v' (smooth out 4-component vector of float)
 | 
			
		||||
0:162        vector swizzle (noContraction temp 3-component vector of float)
 | 
			
		||||
0:162          'v' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:162          Sequence
 | 
			
		||||
0:162            Constant:
 | 
			
		||||
0:162              0 (const int)
 | 
			
		||||
@ -408,8 +407,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:162          'r' (temp 3-component vector of float)
 | 
			
		||||
0:162          's' (temp 3-component vector of float)
 | 
			
		||||
0:163      move second child to first child (temp float)
 | 
			
		||||
0:163        direct index (temp float)
 | 
			
		||||
0:163          'v' (smooth out 4-component vector of float)
 | 
			
		||||
0:163        direct index (noContraction temp float)
 | 
			
		||||
0:163          'v' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:163          Constant:
 | 
			
		||||
0:163            3 (const int)
 | 
			
		||||
0:163        add (temp float)
 | 
			
		||||
@ -432,8 +431,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:163              Constant:
 | 
			
		||||
0:163                3 (const int)
 | 
			
		||||
0:164      move second child to first child (temp float)
 | 
			
		||||
0:164        direct index (temp float)
 | 
			
		||||
0:164          'v' (smooth out 4-component vector of float)
 | 
			
		||||
0:164        direct index (noContraction temp float)
 | 
			
		||||
0:164          'v' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:164          Constant:
 | 
			
		||||
0:164            0 (const int)
 | 
			
		||||
0:164        Function Call: func(f1;f1;f1;f1; (global float)
 | 
			
		||||
@ -454,8 +453,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:164            Constant:
 | 
			
		||||
0:164              0 (const int)
 | 
			
		||||
0:166      move second child to first child (temp float)
 | 
			
		||||
0:166        direct index (temp float)
 | 
			
		||||
0:166          'v' (smooth out 4-component vector of float)
 | 
			
		||||
0:166        direct index (noContraction temp float)
 | 
			
		||||
0:166          'v' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:166          Constant:
 | 
			
		||||
0:166            0 (const int)
 | 
			
		||||
0:166        Function Call: func2(f1;f1;f1;f1; (global float)
 | 
			
		||||
@ -494,8 +493,8 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:167            'd' (in 4-component vector of float)
 | 
			
		||||
0:167            Constant:
 | 
			
		||||
0:167              0 (const int)
 | 
			
		||||
0:167        direct index (temp float)
 | 
			
		||||
0:167          'v' (smooth out 4-component vector of float)
 | 
			
		||||
0:167        direct index (noContraction temp float)
 | 
			
		||||
0:167          'v' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:167          Constant:
 | 
			
		||||
0:167            0 (const int)
 | 
			
		||||
0:169      Function Call: funcA(I21; (global 4-component vector of float)
 | 
			
		||||
@ -586,13 +585,13 @@ ERROR: node is still EOpNull!
 | 
			
		||||
0:?     'anon@5' (out block{invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, flat out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
 | 
			
		||||
0:?     'ColorInv' (smooth out 3-component vector of float)
 | 
			
		||||
0:?     'Color4' (invariant centroid smooth out 3-component vector of float)
 | 
			
		||||
0:?     'position' (smooth out 4-component vector of float)
 | 
			
		||||
0:?     'position' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:?     'Color5' (smooth out 3-component vector of float)
 | 
			
		||||
0:?     'a' (in 4-component vector of float)
 | 
			
		||||
0:?     'b' (in 4-component vector of float)
 | 
			
		||||
0:?     'c' (in 4-component vector of float)
 | 
			
		||||
0:?     'd' (in 4-component vector of float)
 | 
			
		||||
0:?     'v' (smooth out 4-component vector of float)
 | 
			
		||||
0:?     'v' (noContraction smooth out 4-component vector of float)
 | 
			
		||||
0:?     'anon@6' (layout(column_major shared ) coherent buffer block{layout(column_major shared ) readonly buffer 4-component vector of float member1, layout(column_major shared ) buffer 4-component vector of float member2})
 | 
			
		||||
0:?     'anon@7' (layout(column_major shared ) buffer block{layout(column_major shared ) coherent readonly buffer 4-component vector of float member1A, layout(column_major shared ) coherent buffer 4-component vector of float member2A})
 | 
			
		||||
0:?     'shv' (shared 4-component vector of float)
 | 
			
		||||
 | 
			
		||||
@ -9,7 +9,6 @@ Linked geometry stage:
 | 
			
		||||
 | 
			
		||||
                              Capability Geometry
 | 
			
		||||
                              Capability GeometryPointSize
 | 
			
		||||
                              Capability ClipDistance
 | 
			
		||||
                              Capability GeometryStreams
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
 | 
			
		||||
@ -7,123 +7,121 @@ Linked compute stage:
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 67
 | 
			
		||||
// Id's are bound by 66
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint GLCompute 4  "main" 53
 | 
			
		||||
                              EntryPoint GLCompute 4  "main" 52
 | 
			
		||||
                              ExecutionMode 4 LocalSize 16 32 4
 | 
			
		||||
                              Source ESSL 310
 | 
			
		||||
                              Name 4  "main"
 | 
			
		||||
                              Name 13  "outb"
 | 
			
		||||
                              MemberName 13(outb) 0  "f"
 | 
			
		||||
                              MemberName 13(outb) 1  "g"
 | 
			
		||||
                              MemberName 13(outb) 2  "h"
 | 
			
		||||
                              MemberName 13(outb) 3  "uns"
 | 
			
		||||
                              Name 15  "outbname"
 | 
			
		||||
                              Name 19  "s"
 | 
			
		||||
                              Name 24  "outbna"
 | 
			
		||||
                              MemberName 24(outbna) 0  "k"
 | 
			
		||||
                              MemberName 24(outbna) 1  "na"
 | 
			
		||||
                              Name 26  "outbnamena"
 | 
			
		||||
                              Name 42  "i"
 | 
			
		||||
                              Name 48  "outs"
 | 
			
		||||
                              MemberName 48(outs) 0  "s"
 | 
			
		||||
                              MemberName 48(outs) 1  "va"
 | 
			
		||||
                              Name 50  "outnames"
 | 
			
		||||
                              Name 53  "gl_LocalInvocationID"
 | 
			
		||||
                              Decorate 12 ArrayStride 16
 | 
			
		||||
                              MemberDecorate 13(outb) 0 Offset 0
 | 
			
		||||
                              MemberDecorate 13(outb) 1 Offset 4
 | 
			
		||||
                              MemberDecorate 13(outb) 2 Offset 8
 | 
			
		||||
                              MemberDecorate 13(outb) 3 Offset 16
 | 
			
		||||
                              Decorate 13(outb) BufferBlock
 | 
			
		||||
                              Decorate 15(outbname) DescriptorSet 0
 | 
			
		||||
                              MemberDecorate 24(outbna) 0 Offset 0
 | 
			
		||||
                              MemberDecorate 24(outbna) 1 Offset 16
 | 
			
		||||
                              Decorate 24(outbna) BufferBlock
 | 
			
		||||
                              Decorate 26(outbnamena) DescriptorSet 0
 | 
			
		||||
                              Decorate 47 ArrayStride 16
 | 
			
		||||
                              MemberDecorate 48(outs) 0 Offset 0
 | 
			
		||||
                              MemberDecorate 48(outs) 1 Offset 16
 | 
			
		||||
                              Decorate 48(outs) BufferBlock
 | 
			
		||||
                              Decorate 50(outnames) DescriptorSet 0
 | 
			
		||||
                              Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId
 | 
			
		||||
                              Decorate 66 BuiltIn WorkgroupSize
 | 
			
		||||
                              Name 12  "outb"
 | 
			
		||||
                              MemberName 12(outb) 0  "f"
 | 
			
		||||
                              MemberName 12(outb) 1  "g"
 | 
			
		||||
                              MemberName 12(outb) 2  "h"
 | 
			
		||||
                              MemberName 12(outb) 3  "uns"
 | 
			
		||||
                              Name 14  "outbname"
 | 
			
		||||
                              Name 18  "s"
 | 
			
		||||
                              Name 23  "outbna"
 | 
			
		||||
                              MemberName 23(outbna) 0  "k"
 | 
			
		||||
                              MemberName 23(outbna) 1  "na"
 | 
			
		||||
                              Name 25  "outbnamena"
 | 
			
		||||
                              Name 41  "i"
 | 
			
		||||
                              Name 47  "outs"
 | 
			
		||||
                              MemberName 47(outs) 0  "s"
 | 
			
		||||
                              MemberName 47(outs) 1  "va"
 | 
			
		||||
                              Name 49  "outnames"
 | 
			
		||||
                              Name 52  "gl_LocalInvocationID"
 | 
			
		||||
                              Decorate 11 ArrayStride 16
 | 
			
		||||
                              MemberDecorate 12(outb) 0 Offset 0
 | 
			
		||||
                              MemberDecorate 12(outb) 1 Offset 4
 | 
			
		||||
                              MemberDecorate 12(outb) 2 Offset 8
 | 
			
		||||
                              MemberDecorate 12(outb) 3 Offset 16
 | 
			
		||||
                              Decorate 12(outb) BufferBlock
 | 
			
		||||
                              Decorate 14(outbname) DescriptorSet 0
 | 
			
		||||
                              MemberDecorate 23(outbna) 0 Offset 0
 | 
			
		||||
                              MemberDecorate 23(outbna) 1 Offset 16
 | 
			
		||||
                              Decorate 23(outbna) BufferBlock
 | 
			
		||||
                              Decorate 25(outbnamena) DescriptorSet 0
 | 
			
		||||
                              Decorate 46 ArrayStride 16
 | 
			
		||||
                              MemberDecorate 47(outs) 0 Offset 0
 | 
			
		||||
                              MemberDecorate 47(outs) 1 Offset 16
 | 
			
		||||
                              Decorate 47(outs) BufferBlock
 | 
			
		||||
                              Decorate 49(outnames) DescriptorSet 0
 | 
			
		||||
                              Decorate 52(gl_LocalInvocationID) BuiltIn LocalInvocationId
 | 
			
		||||
                              Decorate 65 BuiltIn WorkgroupSize
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeInt 32 0
 | 
			
		||||
               7:      6(int) Constant 1
 | 
			
		||||
               8:      6(int) Constant 4062
 | 
			
		||||
               9:      6(int) Constant 0
 | 
			
		||||
              10:             TypeFloat 32
 | 
			
		||||
              11:             TypeVector 10(float) 3
 | 
			
		||||
              12:             TypeRuntimeArray 11(fvec3)
 | 
			
		||||
        13(outb):             TypeStruct 10(float) 10(float) 10(float) 12
 | 
			
		||||
              14:             TypePointer Uniform 13(outb)
 | 
			
		||||
    15(outbname):     14(ptr) Variable Uniform
 | 
			
		||||
              16:             TypeInt 32 1
 | 
			
		||||
              17:     16(int) Constant 0
 | 
			
		||||
              18:             TypePointer Workgroup 10(float)
 | 
			
		||||
           19(s):     18(ptr) Variable Workgroup
 | 
			
		||||
              21:             TypePointer Uniform 10(float)
 | 
			
		||||
              23:             TypeVector 10(float) 4
 | 
			
		||||
      24(outbna):             TypeStruct 16(int) 23(fvec4)
 | 
			
		||||
              25:             TypePointer Uniform 24(outbna)
 | 
			
		||||
  26(outbnamena):     25(ptr) Variable Uniform
 | 
			
		||||
              27:     16(int) Constant 1
 | 
			
		||||
              30:             TypePointer Uniform 23(fvec4)
 | 
			
		||||
              32:     16(int) Constant 3
 | 
			
		||||
              33:     16(int) Constant 18
 | 
			
		||||
              36:     16(int) Constant 17
 | 
			
		||||
              37:   10(float) Constant 1077936128
 | 
			
		||||
              38:   11(fvec3) ConstantComposite 37 37 37
 | 
			
		||||
              39:             TypePointer Uniform 11(fvec3)
 | 
			
		||||
              41:             TypePointer Workgroup 16(int)
 | 
			
		||||
           42(i):     41(ptr) Variable Workgroup
 | 
			
		||||
              47:             TypeRuntimeArray 23(fvec4)
 | 
			
		||||
        48(outs):             TypeStruct 16(int) 47
 | 
			
		||||
              49:             TypePointer Uniform 48(outs)
 | 
			
		||||
    50(outnames):     49(ptr) Variable Uniform
 | 
			
		||||
              51:             TypeVector 6(int) 3
 | 
			
		||||
              52:             TypePointer Input 51(ivec3)
 | 
			
		||||
53(gl_LocalInvocationID):     52(ptr) Variable Input
 | 
			
		||||
              54:             TypePointer Input 6(int)
 | 
			
		||||
              61:             TypePointer Uniform 16(int)
 | 
			
		||||
              63:      6(int) Constant 16
 | 
			
		||||
              64:      6(int) Constant 32
 | 
			
		||||
              65:      6(int) Constant 4
 | 
			
		||||
              66:   51(ivec3) ConstantComposite 63 64 65
 | 
			
		||||
               8:      6(int) Constant 0
 | 
			
		||||
               9:             TypeFloat 32
 | 
			
		||||
              10:             TypeVector 9(float) 3
 | 
			
		||||
              11:             TypeRuntimeArray 10(fvec3)
 | 
			
		||||
        12(outb):             TypeStruct 9(float) 9(float) 9(float) 11
 | 
			
		||||
              13:             TypePointer Uniform 12(outb)
 | 
			
		||||
    14(outbname):     13(ptr) Variable Uniform
 | 
			
		||||
              15:             TypeInt 32 1
 | 
			
		||||
              16:     15(int) Constant 0
 | 
			
		||||
              17:             TypePointer Workgroup 9(float)
 | 
			
		||||
           18(s):     17(ptr) Variable Workgroup
 | 
			
		||||
              20:             TypePointer Uniform 9(float)
 | 
			
		||||
              22:             TypeVector 9(float) 4
 | 
			
		||||
      23(outbna):             TypeStruct 15(int) 22(fvec4)
 | 
			
		||||
              24:             TypePointer Uniform 23(outbna)
 | 
			
		||||
  25(outbnamena):     24(ptr) Variable Uniform
 | 
			
		||||
              26:     15(int) Constant 1
 | 
			
		||||
              29:             TypePointer Uniform 22(fvec4)
 | 
			
		||||
              31:     15(int) Constant 3
 | 
			
		||||
              32:     15(int) Constant 18
 | 
			
		||||
              35:     15(int) Constant 17
 | 
			
		||||
              36:    9(float) Constant 1077936128
 | 
			
		||||
              37:   10(fvec3) ConstantComposite 36 36 36
 | 
			
		||||
              38:             TypePointer Uniform 10(fvec3)
 | 
			
		||||
              40:             TypePointer Workgroup 15(int)
 | 
			
		||||
           41(i):     40(ptr) Variable Workgroup
 | 
			
		||||
              46:             TypeRuntimeArray 22(fvec4)
 | 
			
		||||
        47(outs):             TypeStruct 15(int) 46
 | 
			
		||||
              48:             TypePointer Uniform 47(outs)
 | 
			
		||||
    49(outnames):     48(ptr) Variable Uniform
 | 
			
		||||
              50:             TypeVector 6(int) 3
 | 
			
		||||
              51:             TypePointer Input 50(ivec3)
 | 
			
		||||
52(gl_LocalInvocationID):     51(ptr) Variable Input
 | 
			
		||||
              53:             TypePointer Input 6(int)
 | 
			
		||||
              60:             TypePointer Uniform 15(int)
 | 
			
		||||
              62:      6(int) Constant 16
 | 
			
		||||
              63:      6(int) Constant 32
 | 
			
		||||
              64:      6(int) Constant 4
 | 
			
		||||
              65:   50(ivec3) ConstantComposite 62 63 64
 | 
			
		||||
         4(main):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
                              MemoryBarrier 7 8
 | 
			
		||||
                              ControlBarrier 7 7 9
 | 
			
		||||
              20:   10(float) Load 19(s)
 | 
			
		||||
              22:     21(ptr) AccessChain 15(outbname) 17
 | 
			
		||||
                              Store 22 20
 | 
			
		||||
              28:   10(float) Load 19(s)
 | 
			
		||||
              29:   23(fvec4) CompositeConstruct 28 28 28 28
 | 
			
		||||
              31:     30(ptr) AccessChain 26(outbnamena) 27
 | 
			
		||||
                              Store 31 29
 | 
			
		||||
              34:     21(ptr) AccessChain 15(outbname) 32 33 9
 | 
			
		||||
              35:   10(float) Load 34
 | 
			
		||||
                              Store 19(s) 35
 | 
			
		||||
              40:     39(ptr) AccessChain 15(outbname) 32 36
 | 
			
		||||
                              Store 40 38
 | 
			
		||||
              43:     16(int) Load 42(i)
 | 
			
		||||
              44:   10(float) Load 19(s)
 | 
			
		||||
              45:   11(fvec3) CompositeConstruct 44 44 44
 | 
			
		||||
              46:     39(ptr) AccessChain 15(outbname) 32 43
 | 
			
		||||
                              Store 46 45
 | 
			
		||||
              55:     54(ptr) AccessChain 53(gl_LocalInvocationID) 9
 | 
			
		||||
              56:      6(int) Load 55
 | 
			
		||||
              57:   10(float) Load 19(s)
 | 
			
		||||
              58:   23(fvec4) CompositeConstruct 57 57 57 57
 | 
			
		||||
              59:     30(ptr) AccessChain 50(outnames) 27 56
 | 
			
		||||
                              Store 59 58
 | 
			
		||||
              60:     16(int) ArrayLength 15(outbname) 3
 | 
			
		||||
              62:     61(ptr) AccessChain 50(outnames) 17
 | 
			
		||||
                              Store 62 60
 | 
			
		||||
                              ControlBarrier 7 7 8
 | 
			
		||||
              19:    9(float) Load 18(s)
 | 
			
		||||
              21:     20(ptr) AccessChain 14(outbname) 16
 | 
			
		||||
                              Store 21 19
 | 
			
		||||
              27:    9(float) Load 18(s)
 | 
			
		||||
              28:   22(fvec4) CompositeConstruct 27 27 27 27
 | 
			
		||||
              30:     29(ptr) AccessChain 25(outbnamena) 26
 | 
			
		||||
                              Store 30 28
 | 
			
		||||
              33:     20(ptr) AccessChain 14(outbname) 31 32 8
 | 
			
		||||
              34:    9(float) Load 33
 | 
			
		||||
                              Store 18(s) 34
 | 
			
		||||
              39:     38(ptr) AccessChain 14(outbname) 31 35
 | 
			
		||||
                              Store 39 37
 | 
			
		||||
              42:     15(int) Load 41(i)
 | 
			
		||||
              43:    9(float) Load 18(s)
 | 
			
		||||
              44:   10(fvec3) CompositeConstruct 43 43 43
 | 
			
		||||
              45:     38(ptr) AccessChain 14(outbname) 31 42
 | 
			
		||||
                              Store 45 44
 | 
			
		||||
              54:     53(ptr) AccessChain 52(gl_LocalInvocationID) 8
 | 
			
		||||
              55:      6(int) Load 54
 | 
			
		||||
              56:    9(float) Load 18(s)
 | 
			
		||||
              57:   22(fvec4) CompositeConstruct 56 56 56 56
 | 
			
		||||
              58:     29(ptr) AccessChain 49(outnames) 26 55
 | 
			
		||||
                              Store 58 57
 | 
			
		||||
              59:     15(int) ArrayLength 14(outbname) 3
 | 
			
		||||
              61:     60(ptr) AccessChain 49(outnames) 16
 | 
			
		||||
                              Store 61 59
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										0
									
								
								Test/baseResults/spv.330.geom.out
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								Test/baseResults/spv.330.geom.out
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@ -11,6 +11,7 @@ Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
                              Capability Float64
 | 
			
		||||
                              Capability ImageGatherExtended
 | 
			
		||||
                              Capability ClipDistance
 | 
			
		||||
                              Capability SampledRect
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
 | 
			
		||||
@ -7,68 +7,68 @@ Linked tessellation control stage:
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 93
 | 
			
		||||
// Id's are bound by 94
 | 
			
		||||
 | 
			
		||||
                              Capability Tessellation
 | 
			
		||||
                              Capability TessellationPointSize
 | 
			
		||||
                              Capability ClipDistance
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint TessellationControl 4  "main" 23 40 43 46 52 66 73 79 83 84 87 88 91 92
 | 
			
		||||
                              EntryPoint TessellationControl 4  "main" 24 41 44 47 55 69 74 80 84 85 88 89 92 93
 | 
			
		||||
                              ExecutionMode 4 OutputVertices 4
 | 
			
		||||
                              Source GLSL 400
 | 
			
		||||
                              SourceExtension  "GL_ARB_separate_shader_objects"
 | 
			
		||||
                              Name 4  "main"
 | 
			
		||||
                              Name 12  "a"
 | 
			
		||||
                              Name 17  "p"
 | 
			
		||||
                              Name 19  "gl_PerVertex"
 | 
			
		||||
                              MemberName 19(gl_PerVertex) 0  "gl_Position"
 | 
			
		||||
                              MemberName 19(gl_PerVertex) 1  "gl_PointSize"
 | 
			
		||||
                              MemberName 19(gl_PerVertex) 2  "gl_ClipDistance"
 | 
			
		||||
                              Name 23  "gl_in"
 | 
			
		||||
                              Name 30  "ps"
 | 
			
		||||
                              Name 34  "cd"
 | 
			
		||||
                              Name 38  "pvi"
 | 
			
		||||
                              Name 40  "gl_PatchVerticesIn"
 | 
			
		||||
                              Name 42  "pid"
 | 
			
		||||
                              Name 43  "gl_PrimitiveID"
 | 
			
		||||
                              Name 45  "iid"
 | 
			
		||||
                              Name 46  "gl_InvocationID"
 | 
			
		||||
                              Name 48  "gl_PerVertex"
 | 
			
		||||
                              MemberName 48(gl_PerVertex) 0  "gl_Position"
 | 
			
		||||
                              MemberName 48(gl_PerVertex) 1  "gl_PointSize"
 | 
			
		||||
                              MemberName 48(gl_PerVertex) 2  "gl_ClipDistance"
 | 
			
		||||
                              Name 52  "gl_out"
 | 
			
		||||
                              Name 66  "gl_TessLevelOuter"
 | 
			
		||||
                              Name 73  "gl_TessLevelInner"
 | 
			
		||||
                              Name 78  "outa"
 | 
			
		||||
                              Name 79  "patchOut"
 | 
			
		||||
                              Name 83  "inb"
 | 
			
		||||
                              Name 84  "ind"
 | 
			
		||||
                              Name 87  "ivla"
 | 
			
		||||
                              Name 88  "ivlb"
 | 
			
		||||
                              Name 91  "ovla"
 | 
			
		||||
                              Name 92  "ovlb"
 | 
			
		||||
                              MemberDecorate 19(gl_PerVertex) 0 BuiltIn Position
 | 
			
		||||
                              MemberDecorate 19(gl_PerVertex) 1 BuiltIn PointSize
 | 
			
		||||
                              MemberDecorate 19(gl_PerVertex) 2 BuiltIn ClipDistance
 | 
			
		||||
                              Decorate 19(gl_PerVertex) Block
 | 
			
		||||
                              Decorate 40(gl_PatchVerticesIn) BuiltIn PatchVertices
 | 
			
		||||
                              Decorate 43(gl_PrimitiveID) BuiltIn PrimitiveId
 | 
			
		||||
                              Decorate 46(gl_InvocationID) BuiltIn InvocationId
 | 
			
		||||
                              MemberDecorate 48(gl_PerVertex) 0 BuiltIn Position
 | 
			
		||||
                              MemberDecorate 48(gl_PerVertex) 1 BuiltIn PointSize
 | 
			
		||||
                              MemberDecorate 48(gl_PerVertex) 2 BuiltIn ClipDistance
 | 
			
		||||
                              Decorate 48(gl_PerVertex) Block
 | 
			
		||||
                              Decorate 66(gl_TessLevelOuter) Patch
 | 
			
		||||
                              Decorate 66(gl_TessLevelOuter) BuiltIn TessLevelOuter
 | 
			
		||||
                              Decorate 73(gl_TessLevelInner) Patch
 | 
			
		||||
                              Decorate 73(gl_TessLevelInner) BuiltIn TessLevelInner
 | 
			
		||||
                              Decorate 79(patchOut) Patch
 | 
			
		||||
                              Decorate 87(ivla) Location 3
 | 
			
		||||
                              Decorate 88(ivlb) Location 4
 | 
			
		||||
                              Decorate 91(ovla) Location 3
 | 
			
		||||
                              Decorate 92(ovlb) Location 4
 | 
			
		||||
                              Name 20  "gl_PerVertex"
 | 
			
		||||
                              MemberName 20(gl_PerVertex) 0  "gl_Position"
 | 
			
		||||
                              MemberName 20(gl_PerVertex) 1  "gl_PointSize"
 | 
			
		||||
                              MemberName 20(gl_PerVertex) 2  "gl_ClipDistance"
 | 
			
		||||
                              Name 24  "gl_in"
 | 
			
		||||
                              Name 31  "ps"
 | 
			
		||||
                              Name 35  "cd"
 | 
			
		||||
                              Name 39  "pvi"
 | 
			
		||||
                              Name 41  "gl_PatchVerticesIn"
 | 
			
		||||
                              Name 43  "pid"
 | 
			
		||||
                              Name 44  "gl_PrimitiveID"
 | 
			
		||||
                              Name 46  "iid"
 | 
			
		||||
                              Name 47  "gl_InvocationID"
 | 
			
		||||
                              Name 51  "gl_PerVertex"
 | 
			
		||||
                              MemberName 51(gl_PerVertex) 0  "gl_Position"
 | 
			
		||||
                              MemberName 51(gl_PerVertex) 1  "gl_PointSize"
 | 
			
		||||
                              MemberName 51(gl_PerVertex) 2  "gl_ClipDistance"
 | 
			
		||||
                              Name 55  "gl_out"
 | 
			
		||||
                              Name 69  "gl_TessLevelOuter"
 | 
			
		||||
                              Name 74  "gl_TessLevelInner"
 | 
			
		||||
                              Name 79  "outa"
 | 
			
		||||
                              Name 80  "patchOut"
 | 
			
		||||
                              Name 84  "inb"
 | 
			
		||||
                              Name 85  "ind"
 | 
			
		||||
                              Name 88  "ivla"
 | 
			
		||||
                              Name 89  "ivlb"
 | 
			
		||||
                              Name 92  "ovla"
 | 
			
		||||
                              Name 93  "ovlb"
 | 
			
		||||
                              MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
 | 
			
		||||
                              MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
 | 
			
		||||
                              MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
 | 
			
		||||
                              Decorate 20(gl_PerVertex) Block
 | 
			
		||||
                              Decorate 41(gl_PatchVerticesIn) BuiltIn PatchVertices
 | 
			
		||||
                              Decorate 44(gl_PrimitiveID) BuiltIn PrimitiveId
 | 
			
		||||
                              Decorate 47(gl_InvocationID) BuiltIn InvocationId
 | 
			
		||||
                              MemberDecorate 51(gl_PerVertex) 0 BuiltIn Position
 | 
			
		||||
                              MemberDecorate 51(gl_PerVertex) 1 BuiltIn PointSize
 | 
			
		||||
                              MemberDecorate 51(gl_PerVertex) 2 BuiltIn ClipDistance
 | 
			
		||||
                              Decorate 51(gl_PerVertex) Block
 | 
			
		||||
                              Decorate 69(gl_TessLevelOuter) Patch
 | 
			
		||||
                              Decorate 69(gl_TessLevelOuter) BuiltIn TessLevelOuter
 | 
			
		||||
                              Decorate 74(gl_TessLevelInner) Patch
 | 
			
		||||
                              Decorate 74(gl_TessLevelInner) BuiltIn TessLevelInner
 | 
			
		||||
                              Decorate 80(patchOut) Patch
 | 
			
		||||
                              Decorate 88(ivla) Location 3
 | 
			
		||||
                              Decorate 89(ivlb) Location 4
 | 
			
		||||
                              Decorate 92(ovla) Location 3
 | 
			
		||||
                              Decorate 93(ovlb) Location 4
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeInt 32 0
 | 
			
		||||
@ -81,98 +81,99 @@ Linked tessellation control stage:
 | 
			
		||||
              14:             TypeFloat 32
 | 
			
		||||
              15:             TypeVector 14(float) 4
 | 
			
		||||
              16:             TypePointer Function 15(fvec4)
 | 
			
		||||
              18:             TypeArray 14(float) 7
 | 
			
		||||
19(gl_PerVertex):             TypeStruct 15(fvec4) 14(float) 18
 | 
			
		||||
              20:      6(int) Constant 32
 | 
			
		||||
              21:             TypeArray 19(gl_PerVertex) 20
 | 
			
		||||
              22:             TypePointer Input 21
 | 
			
		||||
       23(gl_in):     22(ptr) Variable Input
 | 
			
		||||
              24:     10(int) Constant 1
 | 
			
		||||
              25:     10(int) Constant 0
 | 
			
		||||
              26:             TypePointer Input 15(fvec4)
 | 
			
		||||
              29:             TypePointer Function 14(float)
 | 
			
		||||
              31:             TypePointer Input 14(float)
 | 
			
		||||
              35:     10(int) Constant 2
 | 
			
		||||
              39:             TypePointer Input 10(int)
 | 
			
		||||
40(gl_PatchVerticesIn):     39(ptr) Variable Input
 | 
			
		||||
43(gl_PrimitiveID):     39(ptr) Variable Input
 | 
			
		||||
46(gl_InvocationID):     39(ptr) Variable Input
 | 
			
		||||
48(gl_PerVertex):             TypeStruct 15(fvec4) 14(float) 18
 | 
			
		||||
              49:      6(int) Constant 4
 | 
			
		||||
              50:             TypeArray 48(gl_PerVertex) 49
 | 
			
		||||
              51:             TypePointer Output 50
 | 
			
		||||
      52(gl_out):     51(ptr) Variable Output
 | 
			
		||||
              55:             TypePointer Output 15(fvec4)
 | 
			
		||||
              59:             TypePointer Output 14(float)
 | 
			
		||||
              64:             TypeArray 14(float) 49
 | 
			
		||||
              65:             TypePointer Output 64
 | 
			
		||||
66(gl_TessLevelOuter):     65(ptr) Variable Output
 | 
			
		||||
              67:     10(int) Constant 3
 | 
			
		||||
              68:   14(float) Constant 1078774989
 | 
			
		||||
              70:      6(int) Constant 2
 | 
			
		||||
              71:             TypeArray 14(float) 70
 | 
			
		||||
              72:             TypePointer Output 71
 | 
			
		||||
73(gl_TessLevelInner):     72(ptr) Variable Output
 | 
			
		||||
              74:   14(float) Constant 1067869798
 | 
			
		||||
              76:             TypeArray 10(int) 49
 | 
			
		||||
              77:             TypePointer Private 76
 | 
			
		||||
        78(outa):     77(ptr) Variable Private
 | 
			
		||||
    79(patchOut):     55(ptr) Variable Output
 | 
			
		||||
              80:             TypeVector 14(float) 2
 | 
			
		||||
              81:             TypeArray 80(fvec2) 20
 | 
			
		||||
              82:             TypePointer Input 81
 | 
			
		||||
         83(inb):     82(ptr) Variable Input
 | 
			
		||||
         84(ind):     82(ptr) Variable Input
 | 
			
		||||
              85:             TypeArray 15(fvec4) 20
 | 
			
		||||
              86:             TypePointer Input 85
 | 
			
		||||
        87(ivla):     86(ptr) Variable Input
 | 
			
		||||
        88(ivlb):     86(ptr) Variable Input
 | 
			
		||||
              89:             TypeArray 15(fvec4) 49
 | 
			
		||||
              90:             TypePointer Output 89
 | 
			
		||||
        91(ovla):     90(ptr) Variable Output
 | 
			
		||||
        92(ovlb):     90(ptr) Variable Output
 | 
			
		||||
              18:      6(int) Constant 3
 | 
			
		||||
              19:             TypeArray 14(float) 18
 | 
			
		||||
20(gl_PerVertex):             TypeStruct 15(fvec4) 14(float) 19
 | 
			
		||||
              21:      6(int) Constant 32
 | 
			
		||||
              22:             TypeArray 20(gl_PerVertex) 21
 | 
			
		||||
              23:             TypePointer Input 22
 | 
			
		||||
       24(gl_in):     23(ptr) Variable Input
 | 
			
		||||
              25:     10(int) Constant 1
 | 
			
		||||
              26:     10(int) Constant 0
 | 
			
		||||
              27:             TypePointer Input 15(fvec4)
 | 
			
		||||
              30:             TypePointer Function 14(float)
 | 
			
		||||
              32:             TypePointer Input 14(float)
 | 
			
		||||
              36:     10(int) Constant 2
 | 
			
		||||
              40:             TypePointer Input 10(int)
 | 
			
		||||
41(gl_PatchVerticesIn):     40(ptr) Variable Input
 | 
			
		||||
44(gl_PrimitiveID):     40(ptr) Variable Input
 | 
			
		||||
47(gl_InvocationID):     40(ptr) Variable Input
 | 
			
		||||
              49:      6(int) Constant 2
 | 
			
		||||
              50:             TypeArray 14(float) 49
 | 
			
		||||
51(gl_PerVertex):             TypeStruct 15(fvec4) 14(float) 50
 | 
			
		||||
              52:      6(int) Constant 4
 | 
			
		||||
              53:             TypeArray 51(gl_PerVertex) 52
 | 
			
		||||
              54:             TypePointer Output 53
 | 
			
		||||
      55(gl_out):     54(ptr) Variable Output
 | 
			
		||||
              58:             TypePointer Output 15(fvec4)
 | 
			
		||||
              62:             TypePointer Output 14(float)
 | 
			
		||||
              67:             TypeArray 14(float) 52
 | 
			
		||||
              68:             TypePointer Output 67
 | 
			
		||||
69(gl_TessLevelOuter):     68(ptr) Variable Output
 | 
			
		||||
              70:     10(int) Constant 3
 | 
			
		||||
              71:   14(float) Constant 1078774989
 | 
			
		||||
              73:             TypePointer Output 50
 | 
			
		||||
74(gl_TessLevelInner):     73(ptr) Variable Output
 | 
			
		||||
              75:   14(float) Constant 1067869798
 | 
			
		||||
              77:             TypeArray 10(int) 52
 | 
			
		||||
              78:             TypePointer Private 77
 | 
			
		||||
        79(outa):     78(ptr) Variable Private
 | 
			
		||||
    80(patchOut):     58(ptr) Variable Output
 | 
			
		||||
              81:             TypeVector 14(float) 2
 | 
			
		||||
              82:             TypeArray 81(fvec2) 21
 | 
			
		||||
              83:             TypePointer Input 82
 | 
			
		||||
         84(inb):     83(ptr) Variable Input
 | 
			
		||||
         85(ind):     83(ptr) Variable Input
 | 
			
		||||
              86:             TypeArray 15(fvec4) 21
 | 
			
		||||
              87:             TypePointer Input 86
 | 
			
		||||
        88(ivla):     87(ptr) Variable Input
 | 
			
		||||
        89(ivlb):     87(ptr) Variable Input
 | 
			
		||||
              90:             TypeArray 15(fvec4) 52
 | 
			
		||||
              91:             TypePointer Output 90
 | 
			
		||||
        92(ovla):     91(ptr) Variable Output
 | 
			
		||||
        93(ovlb):     91(ptr) Variable Output
 | 
			
		||||
         4(main):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
           12(a):     11(ptr) Variable Function
 | 
			
		||||
           17(p):     16(ptr) Variable Function
 | 
			
		||||
          30(ps):     29(ptr) Variable Function
 | 
			
		||||
          34(cd):     29(ptr) Variable Function
 | 
			
		||||
         38(pvi):     11(ptr) Variable Function
 | 
			
		||||
         42(pid):     11(ptr) Variable Function
 | 
			
		||||
         45(iid):     11(ptr) Variable Function
 | 
			
		||||
          31(ps):     30(ptr) Variable Function
 | 
			
		||||
          35(cd):     30(ptr) Variable Function
 | 
			
		||||
         39(pvi):     11(ptr) Variable Function
 | 
			
		||||
         43(pid):     11(ptr) Variable Function
 | 
			
		||||
         46(iid):     11(ptr) Variable Function
 | 
			
		||||
                              MemoryBarrier 7 8
 | 
			
		||||
                              ControlBarrier 7 7 9
 | 
			
		||||
                              Store 12(a) 13
 | 
			
		||||
              27:     26(ptr) AccessChain 23(gl_in) 24 25
 | 
			
		||||
              28:   15(fvec4) Load 27
 | 
			
		||||
                              Store 17(p) 28
 | 
			
		||||
              32:     31(ptr) AccessChain 23(gl_in) 24 24
 | 
			
		||||
              33:   14(float) Load 32
 | 
			
		||||
                              Store 30(ps) 33
 | 
			
		||||
              36:     31(ptr) AccessChain 23(gl_in) 24 35 35
 | 
			
		||||
              37:   14(float) Load 36
 | 
			
		||||
                              Store 34(cd) 37
 | 
			
		||||
              41:     10(int) Load 40(gl_PatchVerticesIn)
 | 
			
		||||
                              Store 38(pvi) 41
 | 
			
		||||
              44:     10(int) Load 43(gl_PrimitiveID)
 | 
			
		||||
                              Store 42(pid) 44
 | 
			
		||||
              47:     10(int) Load 46(gl_InvocationID)
 | 
			
		||||
                              Store 45(iid) 47
 | 
			
		||||
              53:     10(int) Load 46(gl_InvocationID)
 | 
			
		||||
              54:   15(fvec4) Load 17(p)
 | 
			
		||||
              56:     55(ptr) AccessChain 52(gl_out) 53 25
 | 
			
		||||
                              Store 56 54
 | 
			
		||||
              57:     10(int) Load 46(gl_InvocationID)
 | 
			
		||||
              58:   14(float) Load 30(ps)
 | 
			
		||||
              60:     59(ptr) AccessChain 52(gl_out) 57 24
 | 
			
		||||
                              Store 60 58
 | 
			
		||||
              61:     10(int) Load 46(gl_InvocationID)
 | 
			
		||||
              62:   14(float) Load 34(cd)
 | 
			
		||||
              63:     59(ptr) AccessChain 52(gl_out) 61 35 24
 | 
			
		||||
                              Store 63 62
 | 
			
		||||
              69:     59(ptr) AccessChain 66(gl_TessLevelOuter) 67
 | 
			
		||||
                              Store 69 68
 | 
			
		||||
              75:     59(ptr) AccessChain 73(gl_TessLevelInner) 24
 | 
			
		||||
                              Store 75 74
 | 
			
		||||
              28:     27(ptr) AccessChain 24(gl_in) 25 26
 | 
			
		||||
              29:   15(fvec4) Load 28
 | 
			
		||||
                              Store 17(p) 29
 | 
			
		||||
              33:     32(ptr) AccessChain 24(gl_in) 25 25
 | 
			
		||||
              34:   14(float) Load 33
 | 
			
		||||
                              Store 31(ps) 34
 | 
			
		||||
              37:     32(ptr) AccessChain 24(gl_in) 25 36 36
 | 
			
		||||
              38:   14(float) Load 37
 | 
			
		||||
                              Store 35(cd) 38
 | 
			
		||||
              42:     10(int) Load 41(gl_PatchVerticesIn)
 | 
			
		||||
                              Store 39(pvi) 42
 | 
			
		||||
              45:     10(int) Load 44(gl_PrimitiveID)
 | 
			
		||||
                              Store 43(pid) 45
 | 
			
		||||
              48:     10(int) Load 47(gl_InvocationID)
 | 
			
		||||
                              Store 46(iid) 48
 | 
			
		||||
              56:     10(int) Load 47(gl_InvocationID)
 | 
			
		||||
              57:   15(fvec4) Load 17(p)
 | 
			
		||||
              59:     58(ptr) AccessChain 55(gl_out) 56 26
 | 
			
		||||
                              Store 59 57
 | 
			
		||||
              60:     10(int) Load 47(gl_InvocationID)
 | 
			
		||||
              61:   14(float) Load 31(ps)
 | 
			
		||||
              63:     62(ptr) AccessChain 55(gl_out) 60 25
 | 
			
		||||
                              Store 63 61
 | 
			
		||||
              64:     10(int) Load 47(gl_InvocationID)
 | 
			
		||||
              65:   14(float) Load 35(cd)
 | 
			
		||||
              66:     62(ptr) AccessChain 55(gl_out) 64 36 25
 | 
			
		||||
                              Store 66 65
 | 
			
		||||
              72:     62(ptr) AccessChain 69(gl_TessLevelOuter) 70
 | 
			
		||||
                              Store 72 71
 | 
			
		||||
              76:     62(ptr) AccessChain 74(gl_TessLevelInner) 25
 | 
			
		||||
                              Store 76 75
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
 | 
			
		||||
@ -7,14 +7,14 @@ Linked tessellation evaluation stage:
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 98
 | 
			
		||||
// Id's are bound by 96
 | 
			
		||||
 | 
			
		||||
                              Capability Tessellation
 | 
			
		||||
                              Capability TessellationPointSize
 | 
			
		||||
                              Capability ClipDistance
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint TessellationEvaluation 4  "main" 21 38 41 47 53 61 68 77 81 82 86 90 93 94 97
 | 
			
		||||
                              EntryPoint TessellationEvaluation 4  "main" 21 38 41 47 53 61 66 75 79 80 84 88 91 92 95
 | 
			
		||||
                              ExecutionMode 4 Triangles
 | 
			
		||||
                              ExecutionMode 4 SpacingFractionalOdd
 | 
			
		||||
                              ExecutionMode 4 VertexOrderCcw
 | 
			
		||||
@ -41,23 +41,23 @@ Linked tessellation evaluation stage:
 | 
			
		||||
                              Name 53  "gl_TessLevelOuter"
 | 
			
		||||
                              Name 57  "tli"
 | 
			
		||||
                              Name 61  "gl_TessLevelInner"
 | 
			
		||||
                              Name 66  "gl_PerVertex"
 | 
			
		||||
                              MemberName 66(gl_PerVertex) 0  "gl_Position"
 | 
			
		||||
                              MemberName 66(gl_PerVertex) 1  "gl_PointSize"
 | 
			
		||||
                              MemberName 66(gl_PerVertex) 2  "gl_ClipDistance"
 | 
			
		||||
                              Name 68  ""
 | 
			
		||||
                              Name 77  "patchIn"
 | 
			
		||||
                              Name 81  "inb"
 | 
			
		||||
                              Name 82  "ind"
 | 
			
		||||
                              Name 83  "testblb"
 | 
			
		||||
                              MemberName 83(testblb) 0  "f"
 | 
			
		||||
                              Name 86  "blb"
 | 
			
		||||
                              Name 87  "testbld"
 | 
			
		||||
                              MemberName 87(testbld) 0  "f"
 | 
			
		||||
                              Name 90  "bld"
 | 
			
		||||
                              Name 93  "ivla"
 | 
			
		||||
                              Name 94  "ivlb"
 | 
			
		||||
                              Name 97  "ovla"
 | 
			
		||||
                              Name 64  "gl_PerVertex"
 | 
			
		||||
                              MemberName 64(gl_PerVertex) 0  "gl_Position"
 | 
			
		||||
                              MemberName 64(gl_PerVertex) 1  "gl_PointSize"
 | 
			
		||||
                              MemberName 64(gl_PerVertex) 2  "gl_ClipDistance"
 | 
			
		||||
                              Name 66  ""
 | 
			
		||||
                              Name 75  "patchIn"
 | 
			
		||||
                              Name 79  "inb"
 | 
			
		||||
                              Name 80  "ind"
 | 
			
		||||
                              Name 81  "testblb"
 | 
			
		||||
                              MemberName 81(testblb) 0  "f"
 | 
			
		||||
                              Name 84  "blb"
 | 
			
		||||
                              Name 85  "testbld"
 | 
			
		||||
                              MemberName 85(testbld) 0  "f"
 | 
			
		||||
                              Name 88  "bld"
 | 
			
		||||
                              Name 91  "ivla"
 | 
			
		||||
                              Name 92  "ivlb"
 | 
			
		||||
                              Name 95  "ovla"
 | 
			
		||||
                              MemberDecorate 17(gl_PerVertex) 0 BuiltIn Position
 | 
			
		||||
                              MemberDecorate 17(gl_PerVertex) 1 BuiltIn PointSize
 | 
			
		||||
                              MemberDecorate 17(gl_PerVertex) 2 BuiltIn ClipDistance
 | 
			
		||||
@ -69,16 +69,16 @@ Linked tessellation evaluation stage:
 | 
			
		||||
                              Decorate 53(gl_TessLevelOuter) BuiltIn TessLevelOuter
 | 
			
		||||
                              Decorate 61(gl_TessLevelInner) Patch
 | 
			
		||||
                              Decorate 61(gl_TessLevelInner) BuiltIn TessLevelInner
 | 
			
		||||
                              MemberDecorate 66(gl_PerVertex) 0 BuiltIn Position
 | 
			
		||||
                              MemberDecorate 66(gl_PerVertex) 1 BuiltIn PointSize
 | 
			
		||||
                              MemberDecorate 66(gl_PerVertex) 2 BuiltIn ClipDistance
 | 
			
		||||
                              Decorate 66(gl_PerVertex) Block
 | 
			
		||||
                              Decorate 77(patchIn) Patch
 | 
			
		||||
                              Decorate 83(testblb) Block
 | 
			
		||||
                              Decorate 87(testbld) Block
 | 
			
		||||
                              Decorate 93(ivla) Location 23
 | 
			
		||||
                              Decorate 94(ivlb) Location 24
 | 
			
		||||
                              Decorate 97(ovla) Location 23
 | 
			
		||||
                              MemberDecorate 64(gl_PerVertex) 0 BuiltIn Position
 | 
			
		||||
                              MemberDecorate 64(gl_PerVertex) 1 BuiltIn PointSize
 | 
			
		||||
                              MemberDecorate 64(gl_PerVertex) 2 BuiltIn ClipDistance
 | 
			
		||||
                              Decorate 64(gl_PerVertex) Block
 | 
			
		||||
                              Decorate 75(patchIn) Patch
 | 
			
		||||
                              Decorate 81(testblb) Block
 | 
			
		||||
                              Decorate 85(testbld) Block
 | 
			
		||||
                              Decorate 91(ivla) Location 23
 | 
			
		||||
                              Decorate 92(ivlb) Location 24
 | 
			
		||||
                              Decorate 95(ovla) Location 23
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeInt 32 1
 | 
			
		||||
@ -88,7 +88,7 @@ Linked tessellation evaluation stage:
 | 
			
		||||
              11:             TypeVector 10(float) 4
 | 
			
		||||
              12:             TypePointer Function 11(fvec4)
 | 
			
		||||
              14:             TypeInt 32 0
 | 
			
		||||
              15:     14(int) Constant 1
 | 
			
		||||
              15:     14(int) Constant 3
 | 
			
		||||
              16:             TypeArray 10(float) 15
 | 
			
		||||
17(gl_PerVertex):             TypeStruct 11(fvec4) 10(float) 16
 | 
			
		||||
              18:     14(int) Constant 32
 | 
			
		||||
@ -117,34 +117,32 @@ Linked tessellation evaluation stage:
 | 
			
		||||
              59:             TypeArray 10(float) 58
 | 
			
		||||
              60:             TypePointer Input 59
 | 
			
		||||
61(gl_TessLevelInner):     60(ptr) Variable Input
 | 
			
		||||
              64:     14(int) Constant 3
 | 
			
		||||
              65:             TypeArray 10(float) 64
 | 
			
		||||
66(gl_PerVertex):             TypeStruct 11(fvec4) 10(float) 65
 | 
			
		||||
              67:             TypePointer Output 66(gl_PerVertex)
 | 
			
		||||
              68:     67(ptr) Variable Output
 | 
			
		||||
              70:             TypePointer Output 11(fvec4)
 | 
			
		||||
              73:             TypePointer Output 10(float)
 | 
			
		||||
     77(patchIn):     24(ptr) Variable Input
 | 
			
		||||
              78:             TypeVector 10(float) 2
 | 
			
		||||
              79:             TypeArray 78(fvec2) 18
 | 
			
		||||
              80:             TypePointer Input 79
 | 
			
		||||
         81(inb):     80(ptr) Variable Input
 | 
			
		||||
         82(ind):     80(ptr) Variable Input
 | 
			
		||||
     83(testblb):             TypeStruct 6(int)
 | 
			
		||||
              84:             TypeArray 83(testblb) 18
 | 
			
		||||
              85:             TypePointer Input 84
 | 
			
		||||
         86(blb):     85(ptr) Variable Input
 | 
			
		||||
     87(testbld):             TypeStruct 6(int)
 | 
			
		||||
              88:             TypeArray 87(testbld) 18
 | 
			
		||||
              89:             TypePointer Input 88
 | 
			
		||||
         90(bld):     89(ptr) Variable Input
 | 
			
		||||
              91:             TypeArray 11(fvec4) 18
 | 
			
		||||
              92:             TypePointer Input 91
 | 
			
		||||
        93(ivla):     92(ptr) Variable Input
 | 
			
		||||
        94(ivlb):     92(ptr) Variable Input
 | 
			
		||||
              95:             TypeArray 11(fvec4) 58
 | 
			
		||||
              96:             TypePointer Output 95
 | 
			
		||||
        97(ovla):     96(ptr) Variable Output
 | 
			
		||||
64(gl_PerVertex):             TypeStruct 11(fvec4) 10(float) 16
 | 
			
		||||
              65:             TypePointer Output 64(gl_PerVertex)
 | 
			
		||||
              66:     65(ptr) Variable Output
 | 
			
		||||
              68:             TypePointer Output 11(fvec4)
 | 
			
		||||
              71:             TypePointer Output 10(float)
 | 
			
		||||
     75(patchIn):     24(ptr) Variable Input
 | 
			
		||||
              76:             TypeVector 10(float) 2
 | 
			
		||||
              77:             TypeArray 76(fvec2) 18
 | 
			
		||||
              78:             TypePointer Input 77
 | 
			
		||||
         79(inb):     78(ptr) Variable Input
 | 
			
		||||
         80(ind):     78(ptr) Variable Input
 | 
			
		||||
     81(testblb):             TypeStruct 6(int)
 | 
			
		||||
              82:             TypeArray 81(testblb) 18
 | 
			
		||||
              83:             TypePointer Input 82
 | 
			
		||||
         84(blb):     83(ptr) Variable Input
 | 
			
		||||
     85(testbld):             TypeStruct 6(int)
 | 
			
		||||
              86:             TypeArray 85(testbld) 18
 | 
			
		||||
              87:             TypePointer Input 86
 | 
			
		||||
         88(bld):     87(ptr) Variable Input
 | 
			
		||||
              89:             TypeArray 11(fvec4) 18
 | 
			
		||||
              90:             TypePointer Input 89
 | 
			
		||||
        91(ivla):     90(ptr) Variable Input
 | 
			
		||||
        92(ivlb):     90(ptr) Variable Input
 | 
			
		||||
              93:             TypeArray 11(fvec4) 58
 | 
			
		||||
              94:             TypePointer Output 93
 | 
			
		||||
        95(ovla):     94(ptr) Variable Output
 | 
			
		||||
         4(main):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
            8(a):      7(ptr) Variable Function
 | 
			
		||||
@ -178,14 +176,14 @@ Linked tessellation evaluation stage:
 | 
			
		||||
              62:     29(ptr) AccessChain 61(gl_TessLevelInner) 22
 | 
			
		||||
              63:   10(float) Load 62
 | 
			
		||||
                              Store 57(tli) 63
 | 
			
		||||
              69:   11(fvec4) Load 13(p)
 | 
			
		||||
              71:     70(ptr) AccessChain 68 23
 | 
			
		||||
                              Store 71 69
 | 
			
		||||
              72:   10(float) Load 28(ps)
 | 
			
		||||
              74:     73(ptr) AccessChain 68 22
 | 
			
		||||
                              Store 74 72
 | 
			
		||||
              75:   10(float) Load 32(cd)
 | 
			
		||||
              76:     73(ptr) AccessChain 68 33 33
 | 
			
		||||
                              Store 76 75
 | 
			
		||||
              67:   11(fvec4) Load 13(p)
 | 
			
		||||
              69:     68(ptr) AccessChain 66 23
 | 
			
		||||
                              Store 69 67
 | 
			
		||||
              70:   10(float) Load 28(ps)
 | 
			
		||||
              72:     71(ptr) AccessChain 66 22
 | 
			
		||||
                              Store 72 70
 | 
			
		||||
              73:   10(float) Load 32(cd)
 | 
			
		||||
              74:     71(ptr) AccessChain 66 33 33
 | 
			
		||||
                              Store 74 73
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
 | 
			
		||||
@ -11,6 +11,7 @@ Linked geometry stage:
 | 
			
		||||
 | 
			
		||||
                              Capability Geometry
 | 
			
		||||
                              Capability GeometryPointSize
 | 
			
		||||
                              Capability ImageGatherExtended
 | 
			
		||||
                              Capability GeometryStreams
 | 
			
		||||
                              Capability MultiViewport
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,6 @@ Linked vertex stage:
 | 
			
		||||
// Id's are bound by 66
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
                              Capability ClipDistance
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Vertex 4  "main" 12 23 34 38 41 42 62 65
 | 
			
		||||
@ -63,18 +62,10 @@ Linked vertex stage:
 | 
			
		||||
                              Decorate 55(sampb2) Binding 5
 | 
			
		||||
                              Decorate 56(sampb4) DescriptorSet 0
 | 
			
		||||
                              Decorate 56(sampb4) Binding 31
 | 
			
		||||
                              MemberDecorate 59(S) 0 Flat
 | 
			
		||||
                              MemberDecorate 59(S) 0 Location 1
 | 
			
		||||
                              MemberDecorate 59(S) 1 Flat
 | 
			
		||||
                              MemberDecorate 59(S) 1 Location 2
 | 
			
		||||
                              MemberDecorate 59(S) 2 Flat
 | 
			
		||||
                              MemberDecorate 59(S) 2 Location 3
 | 
			
		||||
                              MemberDecorate 60(SS) 0 Flat
 | 
			
		||||
                              MemberDecorate 60(SS) 0 Location 0
 | 
			
		||||
                              MemberDecorate 60(SS) 1 Flat
 | 
			
		||||
                              MemberDecorate 60(SS) 1 Location 1
 | 
			
		||||
                              MemberDecorate 60(SS) 2 Flat
 | 
			
		||||
                              MemberDecorate 60(SS) 2 Location 4
 | 
			
		||||
                              Decorate 62(var) Location 0
 | 
			
		||||
                              MemberDecorate 63(MS) 0 Location 17
 | 
			
		||||
                              Decorate 63(MS) Block
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
 | 
			
		||||
@ -470,7 +470,7 @@ Linked fragment stage:
 | 
			
		||||
             339:               Label
 | 
			
		||||
             341:  179(bvec4)   Load 181(ub41)
 | 
			
		||||
             343:  179(bvec4)   Load 342(ub42)
 | 
			
		||||
             344:  179(bvec4)   IEqual 341 343
 | 
			
		||||
             344:  179(bvec4)   LogicalEqual 341 343
 | 
			
		||||
             345:   178(bool)   Any 344
 | 
			
		||||
                                Branch 340
 | 
			
		||||
             340:             Label
 | 
			
		||||
@ -482,7 +482,7 @@ Linked fragment stage:
 | 
			
		||||
             348:               Label
 | 
			
		||||
             350:  179(bvec4)   Load 181(ub41)
 | 
			
		||||
             351:  179(bvec4)   Load 342(ub42)
 | 
			
		||||
             352:  179(bvec4)   INotEqual 350 351
 | 
			
		||||
             352:  179(bvec4)   LogicalNotEqual 350 351
 | 
			
		||||
             353:   178(bool)   Any 352
 | 
			
		||||
                                Branch 349
 | 
			
		||||
             349:             Label
 | 
			
		||||
 | 
			
		||||
@ -10,8 +10,6 @@ Linked vertex stage:
 | 
			
		||||
// Id's are bound by 49
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
                              Capability ClipDistance
 | 
			
		||||
                              Capability CullDistance
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Vertex 4  "main" 24
 | 
			
		||||
@ -91,6 +89,6 @@ Linked vertex stage:
 | 
			
		||||
            9(b):      7(ptr) FunctionParameter
 | 
			
		||||
              11:             Label
 | 
			
		||||
              12:     6(bool) Load 9(b)
 | 
			
		||||
              14:     6(bool) INotEqual 12 13
 | 
			
		||||
              14:     6(bool) LogicalNotEqual 12 13
 | 
			
		||||
                              ReturnValue 14
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										626
									
								
								Test/baseResults/spv.int64.frag.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										626
									
								
								Test/baseResults/spv.int64.frag.out
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,626 @@
 | 
			
		||||
spv.int64.frag
 | 
			
		||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Missing functionality: shader int64
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 455
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
                              Capability Float64
 | 
			
		||||
                              Capability Int64
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "main"
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source GLSL 450
 | 
			
		||||
                              SourceExtension  "GL_ARB_gpu_shader_int64"
 | 
			
		||||
                              Name 4  "main"
 | 
			
		||||
                              Name 6  "literal("
 | 
			
		||||
                              Name 8  "typeCast("
 | 
			
		||||
                              Name 10  "operators("
 | 
			
		||||
                              Name 12  "builtinFuncs("
 | 
			
		||||
                              Name 16  "i64"
 | 
			
		||||
                              Name 24  "Uniforms"
 | 
			
		||||
                              MemberName 24(Uniforms) 0  "index"
 | 
			
		||||
                              Name 26  ""
 | 
			
		||||
                              Name 33  "indexable"
 | 
			
		||||
                              Name 38  "u64"
 | 
			
		||||
                              Name 47  "indexable"
 | 
			
		||||
                              Name 52  "i64v"
 | 
			
		||||
                              Name 56  "bv"
 | 
			
		||||
                              Name 65  "u64v"
 | 
			
		||||
                              Name 74  "iv"
 | 
			
		||||
                              Name 81  "uv"
 | 
			
		||||
                              Name 89  "fv"
 | 
			
		||||
                              Name 95  "dv"
 | 
			
		||||
                              Name 132  "u64v"
 | 
			
		||||
                              Name 137  "i64"
 | 
			
		||||
                              Name 157  "i"
 | 
			
		||||
                              Name 164  "uv"
 | 
			
		||||
                              Name 216  "b"
 | 
			
		||||
                              Name 276  "i64v"
 | 
			
		||||
                              Name 279  "i64"
 | 
			
		||||
                              Name 289  "u64v"
 | 
			
		||||
                              Name 291  "u64"
 | 
			
		||||
                              Name 363  "dv"
 | 
			
		||||
                              Name 382  "iv"
 | 
			
		||||
                              Name 387  "uv"
 | 
			
		||||
                              Name 391  "bv"
 | 
			
		||||
                              Name 452  "Block"
 | 
			
		||||
                              MemberName 452(Block) 0  "i64v"
 | 
			
		||||
                              MemberName 452(Block) 1  "u64"
 | 
			
		||||
                              Name 454  "block"
 | 
			
		||||
                              MemberDecorate 24(Uniforms) 0 Offset 0
 | 
			
		||||
                              Decorate 24(Uniforms) Block
 | 
			
		||||
                              Decorate 26 DescriptorSet 0
 | 
			
		||||
                              Decorate 26 Binding 0
 | 
			
		||||
                              MemberDecorate 452(Block) 0 Offset 0
 | 
			
		||||
                              MemberDecorate 452(Block) 1 Offset 24
 | 
			
		||||
                              Decorate 452(Block) Block
 | 
			
		||||
                              Decorate 454(block) DescriptorSet 0
 | 
			
		||||
                              Decorate 454(block) Binding 1
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
              14:             TypeInt 64 1
 | 
			
		||||
              15:             TypePointer Function 14(int)
 | 
			
		||||
              17:             TypeInt 32 0
 | 
			
		||||
              18:     17(int) Constant 3
 | 
			
		||||
              19:             TypeArray 14(int) 18
 | 
			
		||||
              20:     14(int) Constant 4008636143 4008636142
 | 
			
		||||
              21:     14(int) Constant 4294967295 4294967295
 | 
			
		||||
              22:     14(int) Constant 0 1
 | 
			
		||||
              23:          19 ConstantComposite 20 21 22
 | 
			
		||||
    24(Uniforms):             TypeStruct 17(int)
 | 
			
		||||
              25:             TypePointer Uniform 24(Uniforms)
 | 
			
		||||
              26:     25(ptr) Variable Uniform
 | 
			
		||||
              27:             TypeInt 32 1
 | 
			
		||||
              28:     27(int) Constant 0
 | 
			
		||||
              29:             TypePointer Uniform 17(int)
 | 
			
		||||
              32:             TypePointer Function 19
 | 
			
		||||
              36:             TypeInt 64 0
 | 
			
		||||
              37:             TypePointer Function 36(int)
 | 
			
		||||
              39:             TypeArray 36(int) 18
 | 
			
		||||
              40:     36(int) Constant 4294967295 4294967295
 | 
			
		||||
              41:     36(int) Constant 0 1
 | 
			
		||||
              42:     36(int) Constant 4294967295 1
 | 
			
		||||
              43:          39 ConstantComposite 40 41 42
 | 
			
		||||
              46:             TypePointer Function 39
 | 
			
		||||
              50:             TypeVector 14(int) 2
 | 
			
		||||
              51:             TypePointer Function 50(ivec2)
 | 
			
		||||
              53:             TypeBool
 | 
			
		||||
              54:             TypeVector 53(bool) 2
 | 
			
		||||
              55:             TypePointer Function 54(bvec2)
 | 
			
		||||
              58:     14(int) Constant 0 0
 | 
			
		||||
              59:     14(int) Constant 1 0
 | 
			
		||||
              60:   50(ivec2) ConstantComposite 58 58
 | 
			
		||||
              61:   50(ivec2) ConstantComposite 59 59
 | 
			
		||||
              63:             TypeVector 36(int) 2
 | 
			
		||||
              64:             TypePointer Function 63(ivec2)
 | 
			
		||||
              67:     36(int) Constant 0 0
 | 
			
		||||
              68:     36(int) Constant 1 0
 | 
			
		||||
              69:   63(ivec2) ConstantComposite 67 67
 | 
			
		||||
              70:   63(ivec2) ConstantComposite 68 68
 | 
			
		||||
              72:             TypeVector 27(int) 2
 | 
			
		||||
              73:             TypePointer Function 72(ivec2)
 | 
			
		||||
              79:             TypeVector 17(int) 2
 | 
			
		||||
              80:             TypePointer Function 79(ivec2)
 | 
			
		||||
              86:             TypeFloat 32
 | 
			
		||||
              87:             TypeVector 86(float) 2
 | 
			
		||||
              88:             TypePointer Function 87(fvec2)
 | 
			
		||||
              92:             TypeFloat 64
 | 
			
		||||
              93:             TypeVector 92(float) 2
 | 
			
		||||
              94:             TypePointer Function 93(fvec2)
 | 
			
		||||
             130:             TypeVector 36(int) 3
 | 
			
		||||
             131:             TypePointer Function 130(ivec3)
 | 
			
		||||
             134:             TypeVector 14(int) 3
 | 
			
		||||
             156:             TypePointer Function 27(int)
 | 
			
		||||
             162:             TypeVector 17(int) 3
 | 
			
		||||
             163:             TypePointer Function 162(ivec3)
 | 
			
		||||
             197:             TypeVector 27(int) 3
 | 
			
		||||
             200:     17(int) Constant 1
 | 
			
		||||
             201:             TypePointer Function 17(int)
 | 
			
		||||
             207:     17(int) Constant 2
 | 
			
		||||
             215:             TypePointer Function 53(bool)
 | 
			
		||||
             217:     17(int) Constant 0
 | 
			
		||||
             287:   50(ivec2) ConstantComposite 21 21
 | 
			
		||||
             296:  130(ivec3) ConstantComposite 67 67 67
 | 
			
		||||
             338:    53(bool) ConstantTrue
 | 
			
		||||
             345:    53(bool) ConstantFalse
 | 
			
		||||
             346:   54(bvec2) ConstantComposite 345 345
 | 
			
		||||
             358:             TypeVector 53(bool) 3
 | 
			
		||||
             359:  358(bvec3) ConstantComposite 345 345 345
 | 
			
		||||
             361:             TypeVector 92(float) 3
 | 
			
		||||
             362:             TypePointer Function 361(fvec3)
 | 
			
		||||
             367:             TypePointer Function 92(float)
 | 
			
		||||
             378:     27(int) Constant 1
 | 
			
		||||
             379:     27(int) Constant 2
 | 
			
		||||
             380:   72(ivec2) ConstantComposite 378 379
 | 
			
		||||
             385:   79(ivec2) ConstantComposite 207 18
 | 
			
		||||
             390:             TypePointer Function 358(bvec3)
 | 
			
		||||
      452(Block):             TypeStruct 134(ivec3) 36(int)
 | 
			
		||||
             453:             TypePointer Uniform 452(Block)
 | 
			
		||||
      454(block):    453(ptr) Variable Uniform
 | 
			
		||||
         4(main):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
     6(literal():           2 Function None 3
 | 
			
		||||
               7:             Label
 | 
			
		||||
         16(i64):     15(ptr) Variable Function
 | 
			
		||||
   33(indexable):     32(ptr) Variable Function
 | 
			
		||||
         38(u64):     37(ptr) Variable Function
 | 
			
		||||
   47(indexable):     46(ptr) Variable Function
 | 
			
		||||
              30:     29(ptr) AccessChain 26 28
 | 
			
		||||
              31:     17(int) Load 30
 | 
			
		||||
                              Store 33(indexable) 23
 | 
			
		||||
              34:     15(ptr) AccessChain 33(indexable) 31
 | 
			
		||||
              35:     14(int) Load 34
 | 
			
		||||
                              Store 16(i64) 35
 | 
			
		||||
              44:     29(ptr) AccessChain 26 28
 | 
			
		||||
              45:     17(int) Load 44
 | 
			
		||||
                              Store 47(indexable) 43
 | 
			
		||||
              48:     37(ptr) AccessChain 47(indexable) 45
 | 
			
		||||
              49:     36(int) Load 48
 | 
			
		||||
                              Store 38(u64) 49
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
    8(typeCast():           2 Function None 3
 | 
			
		||||
               9:             Label
 | 
			
		||||
        52(i64v):     51(ptr) Variable Function
 | 
			
		||||
          56(bv):     55(ptr) Variable Function
 | 
			
		||||
        65(u64v):     64(ptr) Variable Function
 | 
			
		||||
          74(iv):     73(ptr) Variable Function
 | 
			
		||||
          81(uv):     80(ptr) Variable Function
 | 
			
		||||
          89(fv):     88(ptr) Variable Function
 | 
			
		||||
          95(dv):     94(ptr) Variable Function
 | 
			
		||||
              57:   54(bvec2) Load 56(bv)
 | 
			
		||||
              62:   50(ivec2) Select 57 61 60
 | 
			
		||||
                              Store 52(i64v) 62
 | 
			
		||||
              66:   54(bvec2) Load 56(bv)
 | 
			
		||||
              71:   63(ivec2) Select 66 70 69
 | 
			
		||||
                              Store 65(u64v) 71
 | 
			
		||||
              75:   72(ivec2) Load 74(iv)
 | 
			
		||||
              76:   50(ivec2) SConvert 75
 | 
			
		||||
                              Store 52(i64v) 76
 | 
			
		||||
              77:   50(ivec2) Load 52(i64v)
 | 
			
		||||
              78:   72(ivec2) SConvert 77
 | 
			
		||||
                              Store 74(iv) 78
 | 
			
		||||
              82:   79(ivec2) Load 81(uv)
 | 
			
		||||
              83:   63(ivec2) UConvert 82
 | 
			
		||||
                              Store 65(u64v) 83
 | 
			
		||||
              84:   63(ivec2) Load 65(u64v)
 | 
			
		||||
              85:   79(ivec2) UConvert 84
 | 
			
		||||
                              Store 81(uv) 85
 | 
			
		||||
              90:   50(ivec2) Load 52(i64v)
 | 
			
		||||
              91:   87(fvec2) ConvertSToF 90
 | 
			
		||||
                              Store 89(fv) 91
 | 
			
		||||
              96:   50(ivec2) Load 52(i64v)
 | 
			
		||||
              97:   93(fvec2) ConvertSToF 96
 | 
			
		||||
                              Store 95(dv) 97
 | 
			
		||||
              98:   63(ivec2) Load 65(u64v)
 | 
			
		||||
              99:   87(fvec2) ConvertUToF 98
 | 
			
		||||
                              Store 89(fv) 99
 | 
			
		||||
             100:   63(ivec2) Load 65(u64v)
 | 
			
		||||
             101:   93(fvec2) ConvertUToF 100
 | 
			
		||||
                              Store 95(dv) 101
 | 
			
		||||
             102:   87(fvec2) Load 89(fv)
 | 
			
		||||
             103:   50(ivec2) ConvertFToS 102
 | 
			
		||||
                              Store 52(i64v) 103
 | 
			
		||||
             104:   93(fvec2) Load 95(dv)
 | 
			
		||||
             105:   50(ivec2) ConvertFToS 104
 | 
			
		||||
                              Store 52(i64v) 105
 | 
			
		||||
             106:   87(fvec2) Load 89(fv)
 | 
			
		||||
             107:   63(ivec2) ConvertFToU 106
 | 
			
		||||
                              Store 65(u64v) 107
 | 
			
		||||
             108:   93(fvec2) Load 95(dv)
 | 
			
		||||
             109:   63(ivec2) ConvertFToU 108
 | 
			
		||||
                              Store 65(u64v) 109
 | 
			
		||||
             110:   50(ivec2) Load 52(i64v)
 | 
			
		||||
             111:   54(bvec2) INotEqual 110 69
 | 
			
		||||
                              Store 56(bv) 111
 | 
			
		||||
             112:   63(ivec2) Load 65(u64v)
 | 
			
		||||
             113:   54(bvec2) INotEqual 112 69
 | 
			
		||||
                              Store 56(bv) 113
 | 
			
		||||
             114:   50(ivec2) Load 52(i64v)
 | 
			
		||||
             115:   63(ivec2) Bitcast 114
 | 
			
		||||
                              Store 65(u64v) 115
 | 
			
		||||
             116:   63(ivec2) Load 65(u64v)
 | 
			
		||||
             117:   50(ivec2) Bitcast 116
 | 
			
		||||
                              Store 52(i64v) 117
 | 
			
		||||
             118:   50(ivec2) Load 52(i64v)
 | 
			
		||||
             119:   72(ivec2) SConvert 118
 | 
			
		||||
             120:   79(ivec2) Bitcast 119
 | 
			
		||||
                              Store 81(uv) 120
 | 
			
		||||
             121:   79(ivec2) Load 81(uv)
 | 
			
		||||
             122:   63(ivec2) UConvert 121
 | 
			
		||||
             123:   50(ivec2) Bitcast 122
 | 
			
		||||
                              Store 52(i64v) 123
 | 
			
		||||
             124:   63(ivec2) Load 65(u64v)
 | 
			
		||||
             125:   79(ivec2) UConvert 124
 | 
			
		||||
             126:   72(ivec2) Bitcast 125
 | 
			
		||||
                              Store 74(iv) 126
 | 
			
		||||
             127:   72(ivec2) Load 74(iv)
 | 
			
		||||
             128:   50(ivec2) SConvert 127
 | 
			
		||||
             129:   63(ivec2) Bitcast 128
 | 
			
		||||
                              Store 65(u64v) 129
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
  10(operators():           2 Function None 3
 | 
			
		||||
              11:             Label
 | 
			
		||||
       132(u64v):    131(ptr) Variable Function
 | 
			
		||||
        137(i64):     15(ptr) Variable Function
 | 
			
		||||
          157(i):    156(ptr) Variable Function
 | 
			
		||||
         164(uv):    163(ptr) Variable Function
 | 
			
		||||
          216(b):    215(ptr) Variable Function
 | 
			
		||||
             133:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             135:  134(ivec3) CompositeConstruct 59 59 59
 | 
			
		||||
             136:  130(ivec3) IAdd 133 135
 | 
			
		||||
                              Store 132(u64v) 136
 | 
			
		||||
             138:     14(int) Load 137(i64)
 | 
			
		||||
             139:     14(int) ISub 138 59
 | 
			
		||||
                              Store 137(i64) 139
 | 
			
		||||
             140:     14(int) Load 137(i64)
 | 
			
		||||
             141:     14(int) IAdd 140 59
 | 
			
		||||
                              Store 137(i64) 141
 | 
			
		||||
             142:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             143:  134(ivec3) CompositeConstruct 59 59 59
 | 
			
		||||
             144:  130(ivec3) ISub 142 143
 | 
			
		||||
                              Store 132(u64v) 144
 | 
			
		||||
             145:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             146:  130(ivec3) Not 145
 | 
			
		||||
                              Store 132(u64v) 146
 | 
			
		||||
             147:     14(int) Load 137(i64)
 | 
			
		||||
                              Store 137(i64) 147
 | 
			
		||||
             148:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             149:  130(ivec3) SNegate 148
 | 
			
		||||
                              Store 132(u64v) 149
 | 
			
		||||
             150:     14(int) Load 137(i64)
 | 
			
		||||
             151:     14(int) Load 137(i64)
 | 
			
		||||
             152:     14(int) IAdd 151 150
 | 
			
		||||
                              Store 137(i64) 152
 | 
			
		||||
             153:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             154:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             155:  130(ivec3) ISub 154 153
 | 
			
		||||
                              Store 132(u64v) 155
 | 
			
		||||
             158:     27(int) Load 157(i)
 | 
			
		||||
             159:     14(int) SConvert 158
 | 
			
		||||
             160:     14(int) Load 137(i64)
 | 
			
		||||
             161:     14(int) IMul 160 159
 | 
			
		||||
                              Store 137(i64) 161
 | 
			
		||||
             165:  162(ivec3) Load 164(uv)
 | 
			
		||||
             166:  130(ivec3) UConvert 165
 | 
			
		||||
             167:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             168:  130(ivec3) UDiv 167 166
 | 
			
		||||
                              Store 132(u64v) 168
 | 
			
		||||
             169:     27(int) Load 157(i)
 | 
			
		||||
             170:     14(int) SConvert 169
 | 
			
		||||
             171:     36(int) Bitcast 170
 | 
			
		||||
             172:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             173:  130(ivec3) CompositeConstruct 171 171 171
 | 
			
		||||
             174:  130(ivec3) UMod 172 173
 | 
			
		||||
                              Store 132(u64v) 174
 | 
			
		||||
             175:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             176:  162(ivec3) Load 164(uv)
 | 
			
		||||
             177:  130(ivec3) UConvert 176
 | 
			
		||||
             178:  130(ivec3) IAdd 175 177
 | 
			
		||||
                              Store 132(u64v) 178
 | 
			
		||||
             179:     14(int) Load 137(i64)
 | 
			
		||||
             180:     27(int) Load 157(i)
 | 
			
		||||
             181:     14(int) SConvert 180
 | 
			
		||||
             182:     14(int) ISub 179 181
 | 
			
		||||
                              Store 137(i64) 182
 | 
			
		||||
             183:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             184:  162(ivec3) Load 164(uv)
 | 
			
		||||
             185:  130(ivec3) UConvert 184
 | 
			
		||||
             186:  130(ivec3) IMul 183 185
 | 
			
		||||
                              Store 132(u64v) 186
 | 
			
		||||
             187:     14(int) Load 137(i64)
 | 
			
		||||
             188:     27(int) Load 157(i)
 | 
			
		||||
             189:     14(int) SConvert 188
 | 
			
		||||
             190:     14(int) IMul 187 189
 | 
			
		||||
                              Store 137(i64) 190
 | 
			
		||||
             191:     14(int) Load 137(i64)
 | 
			
		||||
             192:     27(int) Load 157(i)
 | 
			
		||||
             193:     14(int) SConvert 192
 | 
			
		||||
             194:     14(int) SMod 191 193
 | 
			
		||||
                              Store 137(i64) 194
 | 
			
		||||
             195:     27(int) Load 157(i)
 | 
			
		||||
             196:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             198:  197(ivec3) CompositeConstruct 195 195 195
 | 
			
		||||
             199:  130(ivec3) ShiftLeftLogical 196 198
 | 
			
		||||
                              Store 132(u64v) 199
 | 
			
		||||
             202:    201(ptr) AccessChain 164(uv) 200
 | 
			
		||||
             203:     17(int) Load 202
 | 
			
		||||
             204:     14(int) Load 137(i64)
 | 
			
		||||
             205:     14(int) ShiftRightArithmetic 204 203
 | 
			
		||||
                              Store 137(i64) 205
 | 
			
		||||
             206:     14(int) Load 137(i64)
 | 
			
		||||
             208:     37(ptr) AccessChain 132(u64v) 207
 | 
			
		||||
             209:     36(int) Load 208
 | 
			
		||||
             210:     14(int) ShiftLeftLogical 206 209
 | 
			
		||||
                              Store 137(i64) 210
 | 
			
		||||
             211:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             212:     14(int) Load 137(i64)
 | 
			
		||||
             213:  134(ivec3) CompositeConstruct 212 212 212
 | 
			
		||||
             214:  130(ivec3) ShiftLeftLogical 211 213
 | 
			
		||||
                              Store 132(u64v) 214
 | 
			
		||||
             218:     37(ptr) AccessChain 132(u64v) 217
 | 
			
		||||
             219:     36(int) Load 218
 | 
			
		||||
             220:     14(int) Load 137(i64)
 | 
			
		||||
             221:     36(int) Bitcast 220
 | 
			
		||||
             222:    53(bool) INotEqual 219 221
 | 
			
		||||
                              Store 216(b) 222
 | 
			
		||||
             223:     14(int) Load 137(i64)
 | 
			
		||||
             224:     36(int) Bitcast 223
 | 
			
		||||
             225:     37(ptr) AccessChain 132(u64v) 217
 | 
			
		||||
             226:     36(int) Load 225
 | 
			
		||||
             227:    53(bool) IEqual 224 226
 | 
			
		||||
                              Store 216(b) 227
 | 
			
		||||
             228:     37(ptr) AccessChain 132(u64v) 217
 | 
			
		||||
             229:     36(int) Load 228
 | 
			
		||||
             230:    201(ptr) AccessChain 164(uv) 200
 | 
			
		||||
             231:     17(int) Load 230
 | 
			
		||||
             232:     36(int) UConvert 231
 | 
			
		||||
             233:    53(bool) UGreaterThan 229 232
 | 
			
		||||
                              Store 216(b) 233
 | 
			
		||||
             234:     14(int) Load 137(i64)
 | 
			
		||||
             235:     27(int) Load 157(i)
 | 
			
		||||
             236:     14(int) SConvert 235
 | 
			
		||||
             237:    53(bool) SLessThan 234 236
 | 
			
		||||
                              Store 216(b) 237
 | 
			
		||||
             238:     37(ptr) AccessChain 132(u64v) 200
 | 
			
		||||
             239:     36(int) Load 238
 | 
			
		||||
             240:    201(ptr) AccessChain 164(uv) 217
 | 
			
		||||
             241:     17(int) Load 240
 | 
			
		||||
             242:     36(int) UConvert 241
 | 
			
		||||
             243:    53(bool) UGreaterThanEqual 239 242
 | 
			
		||||
                              Store 216(b) 243
 | 
			
		||||
             244:     14(int) Load 137(i64)
 | 
			
		||||
             245:     27(int) Load 157(i)
 | 
			
		||||
             246:     14(int) SConvert 245
 | 
			
		||||
             247:    53(bool) SLessThanEqual 244 246
 | 
			
		||||
                              Store 216(b) 247
 | 
			
		||||
             248:     27(int) Load 157(i)
 | 
			
		||||
             249:     14(int) SConvert 248
 | 
			
		||||
             250:     36(int) Bitcast 249
 | 
			
		||||
             251:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             252:  130(ivec3) CompositeConstruct 250 250 250
 | 
			
		||||
             253:  130(ivec3) BitwiseOr 251 252
 | 
			
		||||
                              Store 132(u64v) 253
 | 
			
		||||
             254:     14(int) Load 137(i64)
 | 
			
		||||
             255:     27(int) Load 157(i)
 | 
			
		||||
             256:     14(int) SConvert 255
 | 
			
		||||
             257:     14(int) BitwiseOr 254 256
 | 
			
		||||
                              Store 137(i64) 257
 | 
			
		||||
             258:     27(int) Load 157(i)
 | 
			
		||||
             259:     14(int) SConvert 258
 | 
			
		||||
             260:     14(int) Load 137(i64)
 | 
			
		||||
             261:     14(int) BitwiseAnd 260 259
 | 
			
		||||
                              Store 137(i64) 261
 | 
			
		||||
             262:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             263:  162(ivec3) Load 164(uv)
 | 
			
		||||
             264:  130(ivec3) UConvert 263
 | 
			
		||||
             265:  130(ivec3) BitwiseAnd 262 264
 | 
			
		||||
                              Store 132(u64v) 265
 | 
			
		||||
             266:     14(int) Load 137(i64)
 | 
			
		||||
             267:     36(int) Bitcast 266
 | 
			
		||||
             268:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             269:  130(ivec3) CompositeConstruct 267 267 267
 | 
			
		||||
             270:  130(ivec3) BitwiseXor 268 269
 | 
			
		||||
                              Store 132(u64v) 270
 | 
			
		||||
             271:  130(ivec3) Load 132(u64v)
 | 
			
		||||
             272:     14(int) Load 137(i64)
 | 
			
		||||
             273:     36(int) Bitcast 272
 | 
			
		||||
             274:  130(ivec3) CompositeConstruct 273 273 273
 | 
			
		||||
             275:  130(ivec3) BitwiseXor 271 274
 | 
			
		||||
                              Store 132(u64v) 275
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
12(builtinFuncs():           2 Function None 3
 | 
			
		||||
              13:             Label
 | 
			
		||||
       276(i64v):     51(ptr) Variable Function
 | 
			
		||||
        279(i64):     15(ptr) Variable Function
 | 
			
		||||
       289(u64v):    131(ptr) Variable Function
 | 
			
		||||
        291(u64):     37(ptr) Variable Function
 | 
			
		||||
         363(dv):    362(ptr) Variable Function
 | 
			
		||||
         382(iv):     73(ptr) Variable Function
 | 
			
		||||
         387(uv):     80(ptr) Variable Function
 | 
			
		||||
         391(bv):    390(ptr) Variable Function
 | 
			
		||||
             277:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             278:   50(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 277
 | 
			
		||||
                              Store 276(i64v) 278
 | 
			
		||||
             280:     14(int) Load 279(i64)
 | 
			
		||||
             281:     14(int) ExtInst 1(GLSL.std.450) 7(SSign) 280
 | 
			
		||||
                              Store 279(i64) 281
 | 
			
		||||
             282:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             283:     14(int) Load 279(i64)
 | 
			
		||||
             284:   50(ivec2) CompositeConstruct 283 283
 | 
			
		||||
             285:   50(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 282 284
 | 
			
		||||
                              Store 276(i64v) 285
 | 
			
		||||
             286:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             288:   50(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 286 287
 | 
			
		||||
                              Store 276(i64v) 288
 | 
			
		||||
             290:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             292:     36(int) Load 291(u64)
 | 
			
		||||
             293:  130(ivec3) CompositeConstruct 292 292 292
 | 
			
		||||
             294:  130(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 290 293
 | 
			
		||||
                              Store 289(u64v) 294
 | 
			
		||||
             295:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             297:  130(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 295 296
 | 
			
		||||
                              Store 289(u64v) 297
 | 
			
		||||
             298:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             299:     14(int) Load 279(i64)
 | 
			
		||||
             300:   50(ivec2) CompositeConstruct 299 299
 | 
			
		||||
             301:   50(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 298 300
 | 
			
		||||
                              Store 276(i64v) 301
 | 
			
		||||
             302:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             303:   50(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 302 287
 | 
			
		||||
                              Store 276(i64v) 303
 | 
			
		||||
             304:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             305:     36(int) Load 291(u64)
 | 
			
		||||
             306:  130(ivec3) CompositeConstruct 305 305 305
 | 
			
		||||
             307:  130(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 304 306
 | 
			
		||||
                              Store 289(u64v) 307
 | 
			
		||||
             308:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             309:  130(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 308 296
 | 
			
		||||
                              Store 289(u64v) 309
 | 
			
		||||
             310:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             311:     14(int) Load 279(i64)
 | 
			
		||||
             312:     14(int) SNegate 311
 | 
			
		||||
             313:     14(int) Load 279(i64)
 | 
			
		||||
             314:   50(ivec2) CompositeConstruct 312 312
 | 
			
		||||
             315:   50(ivec2) CompositeConstruct 313 313
 | 
			
		||||
             316:   50(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 310 314 315
 | 
			
		||||
                              Store 276(i64v) 316
 | 
			
		||||
             317:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             318:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             319:   50(ivec2) SNegate 318
 | 
			
		||||
             320:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             321:   50(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 317 319 320
 | 
			
		||||
                              Store 276(i64v) 321
 | 
			
		||||
             322:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             323:     36(int) Load 291(u64)
 | 
			
		||||
             324:     36(int) SNegate 323
 | 
			
		||||
             325:     36(int) Load 291(u64)
 | 
			
		||||
             326:  130(ivec3) CompositeConstruct 324 324 324
 | 
			
		||||
             327:  130(ivec3) CompositeConstruct 325 325 325
 | 
			
		||||
             328:  130(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 322 326 327
 | 
			
		||||
                              Store 289(u64v) 328
 | 
			
		||||
             329:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             330:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             331:  130(ivec3) SNegate 330
 | 
			
		||||
             332:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             333:  130(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 329 331 332
 | 
			
		||||
                              Store 289(u64v) 333
 | 
			
		||||
             334:     15(ptr) AccessChain 276(i64v) 217
 | 
			
		||||
             335:     14(int) Load 334
 | 
			
		||||
             336:     15(ptr) AccessChain 276(i64v) 200
 | 
			
		||||
             337:     14(int) Load 336
 | 
			
		||||
             339:     14(int) Select 338 337 335
 | 
			
		||||
                              Store 279(i64) 339
 | 
			
		||||
             340:     14(int) Load 279(i64)
 | 
			
		||||
             341:   50(ivec2) CompositeConstruct 340 340
 | 
			
		||||
             342:     14(int) Load 279(i64)
 | 
			
		||||
             343:     14(int) SNegate 342
 | 
			
		||||
             344:   50(ivec2) CompositeConstruct 343 343
 | 
			
		||||
             347:   50(ivec2) Select 346 344 341
 | 
			
		||||
                              Store 276(i64v) 347
 | 
			
		||||
             348:     37(ptr) AccessChain 289(u64v) 217
 | 
			
		||||
             349:     36(int) Load 348
 | 
			
		||||
             350:     37(ptr) AccessChain 289(u64v) 200
 | 
			
		||||
             351:     36(int) Load 350
 | 
			
		||||
             352:     36(int) Select 338 351 349
 | 
			
		||||
                              Store 291(u64) 352
 | 
			
		||||
             353:     36(int) Load 291(u64)
 | 
			
		||||
             354:  130(ivec3) CompositeConstruct 353 353 353
 | 
			
		||||
             355:     36(int) Load 291(u64)
 | 
			
		||||
             356:     36(int) SNegate 355
 | 
			
		||||
             357:  130(ivec3) CompositeConstruct 356 356 356
 | 
			
		||||
             360:  130(ivec3) Select 359 357 354
 | 
			
		||||
                              Store 289(u64v) 360
 | 
			
		||||
             364:  361(fvec3) Load 363(dv)
 | 
			
		||||
             365:   93(fvec2) VectorShuffle 364 364 0 1
 | 
			
		||||
             366:   50(ivec2) Bitcast 365
 | 
			
		||||
                              Store 276(i64v) 366
 | 
			
		||||
             368:    367(ptr) AccessChain 363(dv) 207
 | 
			
		||||
             369:   92(float) Load 368
 | 
			
		||||
             370:     36(int) Bitcast 369
 | 
			
		||||
             371:     37(ptr) AccessChain 289(u64v) 217
 | 
			
		||||
                              Store 371 370
 | 
			
		||||
             372:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             373:   93(fvec2) Bitcast 372
 | 
			
		||||
             374:  361(fvec3) Load 363(dv)
 | 
			
		||||
             375:  361(fvec3) VectorShuffle 374 373 3 4 2
 | 
			
		||||
                              Store 363(dv) 375
 | 
			
		||||
             376:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             377:  361(fvec3) Bitcast 376
 | 
			
		||||
                              Store 363(dv) 377
 | 
			
		||||
             381:     14(int) ExtInst 1(GLSL.std.450) 0(Unknown) 380
 | 
			
		||||
                              Store 279(i64) 381
 | 
			
		||||
             383:     14(int) Load 279(i64)
 | 
			
		||||
             384:   72(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 383
 | 
			
		||||
                              Store 382(iv) 384
 | 
			
		||||
             386:     36(int) ExtInst 1(GLSL.std.450) 0(Unknown) 385
 | 
			
		||||
                              Store 291(u64) 386
 | 
			
		||||
             388:     36(int) Load 291(u64)
 | 
			
		||||
             389:   79(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 388
 | 
			
		||||
                              Store 387(uv) 389
 | 
			
		||||
             392:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             393:     36(int) Load 291(u64)
 | 
			
		||||
             394:  130(ivec3) CompositeConstruct 393 393 393
 | 
			
		||||
             395:  358(bvec3) ULessThan 392 394
 | 
			
		||||
                              Store 391(bv) 395
 | 
			
		||||
             396:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             397:     14(int) Load 279(i64)
 | 
			
		||||
             398:   50(ivec2) CompositeConstruct 397 397
 | 
			
		||||
             399:   54(bvec2) SLessThan 396 398
 | 
			
		||||
             400:  358(bvec3) Load 391(bv)
 | 
			
		||||
             401:  358(bvec3) VectorShuffle 400 399 3 4 2
 | 
			
		||||
                              Store 391(bv) 401
 | 
			
		||||
             402:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             403:     36(int) Load 291(u64)
 | 
			
		||||
             404:  130(ivec3) CompositeConstruct 403 403 403
 | 
			
		||||
             405:  358(bvec3) ULessThanEqual 402 404
 | 
			
		||||
                              Store 391(bv) 405
 | 
			
		||||
             406:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             407:     14(int) Load 279(i64)
 | 
			
		||||
             408:   50(ivec2) CompositeConstruct 407 407
 | 
			
		||||
             409:   54(bvec2) SLessThanEqual 406 408
 | 
			
		||||
             410:  358(bvec3) Load 391(bv)
 | 
			
		||||
             411:  358(bvec3) VectorShuffle 410 409 3 4 2
 | 
			
		||||
                              Store 391(bv) 411
 | 
			
		||||
             412:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             413:     36(int) Load 291(u64)
 | 
			
		||||
             414:  130(ivec3) CompositeConstruct 413 413 413
 | 
			
		||||
             415:  358(bvec3) UGreaterThan 412 414
 | 
			
		||||
                              Store 391(bv) 415
 | 
			
		||||
             416:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             417:     14(int) Load 279(i64)
 | 
			
		||||
             418:   50(ivec2) CompositeConstruct 417 417
 | 
			
		||||
             419:   54(bvec2) SGreaterThan 416 418
 | 
			
		||||
             420:  358(bvec3) Load 391(bv)
 | 
			
		||||
             421:  358(bvec3) VectorShuffle 420 419 3 4 2
 | 
			
		||||
                              Store 391(bv) 421
 | 
			
		||||
             422:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             423:     36(int) Load 291(u64)
 | 
			
		||||
             424:  130(ivec3) CompositeConstruct 423 423 423
 | 
			
		||||
             425:  358(bvec3) UGreaterThanEqual 422 424
 | 
			
		||||
                              Store 391(bv) 425
 | 
			
		||||
             426:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             427:     14(int) Load 279(i64)
 | 
			
		||||
             428:   50(ivec2) CompositeConstruct 427 427
 | 
			
		||||
             429:   54(bvec2) SGreaterThanEqual 426 428
 | 
			
		||||
             430:  358(bvec3) Load 391(bv)
 | 
			
		||||
             431:  358(bvec3) VectorShuffle 430 429 3 4 2
 | 
			
		||||
                              Store 391(bv) 431
 | 
			
		||||
             432:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             433:     36(int) Load 291(u64)
 | 
			
		||||
             434:  130(ivec3) CompositeConstruct 433 433 433
 | 
			
		||||
             435:  358(bvec3) IEqual 432 434
 | 
			
		||||
                              Store 391(bv) 435
 | 
			
		||||
             436:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             437:     14(int) Load 279(i64)
 | 
			
		||||
             438:   50(ivec2) CompositeConstruct 437 437
 | 
			
		||||
             439:   54(bvec2) IEqual 436 438
 | 
			
		||||
             440:  358(bvec3) Load 391(bv)
 | 
			
		||||
             441:  358(bvec3) VectorShuffle 440 439 3 4 2
 | 
			
		||||
                              Store 391(bv) 441
 | 
			
		||||
             442:  130(ivec3) Load 289(u64v)
 | 
			
		||||
             443:     36(int) Load 291(u64)
 | 
			
		||||
             444:  130(ivec3) CompositeConstruct 443 443 443
 | 
			
		||||
             445:  358(bvec3) INotEqual 442 444
 | 
			
		||||
                              Store 391(bv) 445
 | 
			
		||||
             446:   50(ivec2) Load 276(i64v)
 | 
			
		||||
             447:     14(int) Load 279(i64)
 | 
			
		||||
             448:   50(ivec2) CompositeConstruct 447 447
 | 
			
		||||
             449:   54(bvec2) INotEqual 446 448
 | 
			
		||||
             450:  358(bvec3) Load 391(bv)
 | 
			
		||||
             451:  358(bvec3) VectorShuffle 450 449 3 4 2
 | 
			
		||||
                              Store 391(bv) 451
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
@ -44,6 +44,12 @@ Linked vertex stage:
 | 
			
		||||
                              Name 173  "u3"
 | 
			
		||||
                              Name 182  "i3"
 | 
			
		||||
                              Name 247  "v4"
 | 
			
		||||
                              Decorate 210 RelaxedPrecision
 | 
			
		||||
                              Decorate 216 RelaxedPrecision
 | 
			
		||||
                              Decorate 223 RelaxedPrecision
 | 
			
		||||
                              Decorate 230 RelaxedPrecision
 | 
			
		||||
                              Decorate 234 RelaxedPrecision
 | 
			
		||||
                              Decorate 240 RelaxedPrecision
 | 
			
		||||
                              Decorate 261 RelaxedPrecision
 | 
			
		||||
                              Decorate 265 RelaxedPrecision
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
 | 
			
		||||
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