Updated GENie, BGFX, BX, added BIMG since it is separated now, updated all shader binaries and MAME part of code to support new interfaces [Miodrag Milanovic]

This commit is contained in:
Miodrag Milanovic 2017-12-01 13:22:27 +01:00
parent 6829ecb3b0
commit 3917627494
3295 changed files with 163957 additions and 82540 deletions

View File

@ -1,20 +1,21 @@
shallow_clone: true
os:
- Visual Studio 2015
- Visual Studio 2017
environment:
matrix:
- TOOLSET: vs2013
- TOOLSET: vs2015
- TOOLSET: vs2017
configuration:
- Debug
- Release
install:
- git clone https://github.com/bkaradzic/bx ..\bx
- ..\bx\tools\bin\windows\genie --with-tools %TOOLSET%
- git clone --depth 1 https://github.com/bkaradzic/bx ..\bx
- git clone --depth 1 https://github.com/bkaradzic/bimg ..\bimg
- ..\bx\tools\bin\windows\genie --with-tools --with-examples %TOOLSET%
build:
project: .build/projects/$(TOOLSET)/bgfx.sln

View File

@ -16,7 +16,8 @@ addons:
- clang
before_script:
git clone https://github.com/bkaradzic/bx ../bx
- git clone --depth 1 https://github.com/bkaradzic/bx ../bx
- git clone --depth 1 https://github.com/bkaradzic/bimg ../bimg
script:
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then make build CXX="g++-4.8" CC="gcc-4.8"; fi

View File

@ -1345,6 +1345,17 @@ inline void MemcpySubresource(
}
}
namespace MinGW_Workaround
{
inline D3D12_RESOURCE_DESC ID3D12ResourceGetDesc(ID3D12Resource* _resource)
{
typedef void (STDMETHODCALLTYPE ID3D12Resource::*PFN_GET_GET_DESC)(D3D12_RESOURCE_DESC*);
D3D12_RESOURCE_DESC desc;
(_resource->*(PFN_GET_GET_DESC)(&ID3D12Resource::GetDesc))(&desc);
return desc;
}
}
//------------------------------------------------------------------------------------------------
// Returns required size of a buffer to be used for data upload
inline UINT64 GetRequiredIntermediateSize(
@ -1352,7 +1363,7 @@ inline UINT64 GetRequiredIntermediateSize(
_In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources)
{
D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc();
D3D12_RESOURCE_DESC Desc = MinGW_Workaround::ID3D12ResourceGetDesc(pDestinationResource);
UINT64 RequiredSize = 0;
ID3D12Device* pDevice;
@ -1378,8 +1389,8 @@ inline UINT64 UpdateSubresources(
_In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData)
{
// Minor validation
D3D12_RESOURCE_DESC IntermediateDesc = pIntermediate->GetDesc();
D3D12_RESOURCE_DESC DestinationDesc = pDestinationResource->GetDesc();
D3D12_RESOURCE_DESC IntermediateDesc = MinGW_Workaround::ID3D12ResourceGetDesc(pIntermediate);
D3D12_RESOURCE_DESC DestinationDesc = MinGW_Workaround::ID3D12ResourceGetDesc(pDestinationResource);
if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
RequiredSize > (SIZE_T)-1 ||
@ -1448,7 +1459,7 @@ inline UINT64 UpdateSubresources(
UINT64* pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
UINT* pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc();
D3D12_RESOURCE_DESC Desc = MinGW_Workaround::ID3D12ResourceGetDesc(pDestinationResource);
ID3D12Device* pDevice;
pDestinationResource->GetDevice(__uuidof(ID3D12Device), reinterpret_cast<void**>(&pDevice));
pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
@ -1476,7 +1487,7 @@ inline UINT64 UpdateSubresources(
UINT NumRows[MaxSubresources];
UINT64 RowSizesInBytes[MaxSubresources];
D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc();
D3D12_RESOURCE_DESC Desc = MinGW_Workaround::ID3D12ResourceGetDesc(pDestinationResource);
ID3D12Device* pDevice;
pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast<void**>(&pDevice));
pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);

View File

@ -73,10 +73,8 @@
// BK - STFU!
# pragma GCC diagnostic ignored "-Wunknown-pragmas" // for clang to disable GCC pragmas
# pragma GCC diagnostic ignored "-Wpragmas" // for GCC to disable clang pragmas
# pragma GCC diagnostic ignored "-Wformat="
# pragma GCC diagnostic ignored "-Wformat-extra-args"
# pragma GCC diagnostic ignored "-Wignored-qualifiers"
# pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
# pragma GCC diagnostic ignored "-Wmissing-field-initializers"
# pragma GCC diagnostic ignored "-Wreorder"
# pragma GCC diagnostic ignored "-Woverloaded-virtual"
@ -85,6 +83,13 @@
# pragma GCC diagnostic ignored "-Wunused-parameter"
# pragma GCC diagnostic ignored "-Wunused-private-field"
# pragma GCC diagnostic ignored "-Wunused-variable"
# pragma GCC diagnostic ignored "-Wdelete-non-virtual-dtor"
# if !defined(__clang__)
# pragma GCC diagnostic ignored "-Wformat="
# pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
# endif
#endif

View File

@ -161,6 +161,9 @@ lod_exists_in_stage(const _mesa_glsl_parse_state *state)
*/
return state->stage == MESA_SHADER_VERTEX ||
state->is_version(130, 300) ||
state->EXT_texture_array_enable || /* BK - don't complain about texture array in fragment shaders. */
state->OES_texture_3D_enable || /* BK - shut up */
state->EXT_shader_texture_lod_enable || /* BK - pretend it's ok too */
state->ARB_shader_texture_lod_enable;
}

View File

@ -568,9 +568,9 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
EXT(EXT_separate_shader_objects, false, true, dummy_true),
EXT(EXT_shader_framebuffer_fetch, false, true, EXT_shader_framebuffer_fetch),
EXT(EXT_shader_integer_mix, true, true, EXT_shader_integer_mix),
EXT(EXT_shader_texture_lod, false, true, ARB_shader_texture_lod),
EXT(EXT_shader_texture_lod, true, true, ARB_shader_texture_lod), // BK - made it available in GLSL
EXT(EXT_shadow_samplers, false, true, EXT_shadow_samplers),
EXT(EXT_texture_array, true, false, EXT_texture_array),
EXT(EXT_texture_array, true, true, EXT_texture_array), // BK - made it available in ESSL
};
#undef EXT

View File

@ -7,7 +7,7 @@ version: "{build}"
os: Visual Studio 2013
platform:
- Any CPU
- x64
configuration:
- Debug
@ -17,6 +17,13 @@ branches:
only:
- master
# Travis advances the master-tot tag to current top of the tree after
# each push into the master branch, because it relies on that tag to
# upload build artifacts to the master-tot release. This will cause
# double testing for each push on Appveyor: one for the push, one for
# the tag advance. Disable testing tags.
skip_tags: true
clone_depth: 5
matrix:
@ -25,6 +32,7 @@ matrix:
# scripts that run after cloning repository
install:
- git clone https://github.com/google/googletest.git External/googletest
- C:/Python27/python.exe update_glslang_sources.py
build:
parallel: true # enable MSBuild parallel builds
@ -38,3 +46,45 @@ build_script:
test_script:
- ctest -C %CONFIGURATION% --output-on-failure
- cd ../Test && bash runtests
- cd ../build
after_test:
# For debug build, the generated dll has a postfix "d" in its name.
- ps: >-
If ($env:configuration -Match "Debug") {
$env:SUFFIX="d"
} Else {
$env:SUFFIX=""
}
- cd install
# Zip all glslang artifacts for uploading and deploying
- 7z a glslang-master-windows-"%PLATFORM%"-"%CONFIGURATION%".zip
bin\glslangValidator.exe
include\glslang\*
include\SPIRV\*
lib\glslang%SUFFIX%.lib
lib\HLSL%SUFFIX%.lib
lib\OGLCompiler%SUFFIX%.lib
lib\OSDependent%SUFFIX%.lib
lib\SPIRV%SUFFIX%.lib
lib\SPVRemapper%SUFFIX%.lib
lib\SPIRV-Tools%SUFFIX%.lib
lib\SPIRV-Tools-opt%SUFFIX%.lib
artifacts:
- path: build\install\*.zip
name: artifacts-zip
deploy:
- provider: GitHub
auth_token:
secure: YglcSYdl0TylEa59H4K6lylBEDr586NAt2EMgZquSo+iuPrwgZQuJLPCoihSm9y6
release: master-tot
description: "Continuous build of the latest master branch by Appveyor and Travis CI"
artifact: artifacts-zip
draft: false
prerelease: false
force_update: true
on:
branch: master
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

View File

@ -6,8 +6,5 @@ tags
TAGS
build/
Test/localResults/
Test/multiThread.out
Test/singleThread.out
Test/vert.spv
Test/frag.spv
External/googletest
External/spirv-tools

View File

@ -7,12 +7,15 @@ os:
- osx
# Use Ubuntu 14.04 LTS (Trusty) as the Linux testing environment.
sudo: required
sudo: false
dist: trusty
env:
- GLSLANG_BUILD_TYPE=Release
- GLSLANG_BUILD_TYPE=Debug
global:
- secure: aGFrgzyKp+84hKrGkxVWg8cHV61uqrKEHT38gfSQK6+WS4GfLOyH83p7WnsEBb7AMhzU7LMNFdvOFr6+NaMpVnqRvc40CEG1Q+lNg9Pq9mhIZLowvDrfqTL9kQ+8Nbw5Q6/dg6CTvY7fvRfpfCEmKIUZBRkoKUuHeuM1uy3IupFcdNuL5bSYn3Beo+apSJginh9DI4BLDXFUgBzTRSLLyCX5g3cpaeGGOCr8quJlYx75W6HRck5g9SZuLtUoH9GFEV3l+ZEWB8noErW+J56L03bwNwFuuAh321evw++oQk5KFa8rlDvar3SJ3b1RHB8u/eq5DBYMyaK/fS8+Q7QbGr8diF/wDe68bKO7U9IhpNfExXmczCpExjHomW5TQv4rYdGhygPMfW97aIsPRYyNKcl4fkmb7NDrM8w0Jscdq2g5c2Kz0ItyZoBri/NXLwFQQjaVCs7Pf97TjuMA7mK0GJmDTRzi6SrDYlWMt5BQL3y0CCojyfLIRcTh0CQjQI29s97bLfQrYAxt9GNNFR+HTXRLLrkaAlJkPGEPwUywlSfEThnvHLesNxYqemolAYpQT4ithoL4GehGIHmaxsW295aKVhuRf8K9eBODNqrfblvM42UHhjntT+92ZnQ/Gkq80GqaMxnxi4PO5FyPIxt0r981b54YBkWi8YA4P7w5pNI=
matrix:
- GLSLANG_BUILD_TYPE=Release
- GLSLANG_BUILD_TYPE=Debug
compiler:
- clang
@ -24,6 +27,9 @@ matrix:
# Skip GCC builds on Mac OS X.
- os: osx
compiler: gcc
include:
# Additional build using Android NDK.
- env: BUILD_NDK=ON
cache:
apt: true
@ -36,25 +42,82 @@ 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.
# Make sure that clang-3.6 is selected on Linux.
- if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "clang" ]]; then
export CC=clang-3.6 CXX=clang++-3.6;
fi
# Download Android NDK and Android CMake toolchain file.
- if [[ "$BUILD_NDK" == "ON" ]]; then
git clone --depth=1 https://github.com/urho3d/android-ndk.git $HOME/android-ndk;
export ANDROID_NDK=$HOME/android-ndk;
git clone --depth=1 https://github.com/taka-no-me/android-cmake.git $HOME/android-cmake;
export TOOLCHAIN_PATH=$HOME/android-cmake/android.toolchain.cmake;
fi
before_script:
- git clone https://github.com/google/googletest.git External/googletest
- git clone --depth=1 https://github.com/google/googletest.git External/googletest
- ./update_glslang_sources.py
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
# For Android, do release building using NDK without testing.
# For Linux and macOS, do debug/release building with testing.
- if [[ "$BUILD_NDK" == "ON" ]]; then
cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH}
-DANDROID_NATIVE_API_LEVEL=android-12
-DCMAKE_BUILD_TYPE=Release
-DANDROID_ABI="armeabi-v7a with NEON"
-DBUILD_TESTING=OFF ..;
make -j4;
else
cmake -DCMAKE_BUILD_TYPE=${GLSLANG_BUILD_TYPE}
-DCMAKE_INSTALL_PREFIX=`pwd`/install ..;
make -j4 install;
ctest --output-on-failure &&
cd ../Test && ./runtests;
fi
after_success:
# For debug build, the generated dll has a postfix "d" in its name.
- if [[ "${GLSLANG_BUILD_TYPE}" == "Debug" ]]; then
export SUFFIX="d";
else
export SUFFIX="";
fi
# Create tarball for deployment
- if [[ ${CC} == clang* && "${BUILD_NDK}" != "ON" ]]; then
cd ../build/install;
export TARBALL=glslang-master-${TRAVIS_OS_NAME}-${GLSLANG_BUILD_TYPE}.zip;
zip ${TARBALL}
bin/glslangValidator
include/glslang/*
include/SPIRV/*
lib/libglslang${SUFFIX}.a
lib/libHLSL${SUFFIX}.a
lib/libOGLCompiler${SUFFIX}.a
lib/libOSDependent${SUFFIX}.a
lib/libSPIRV${SUFFIX}.a
lib/libSPVRemapper${SUFFIX}.a
lib/libSPIRV-Tools${SUFFIX}.a
lib/libSPIRV-Tools-opt${SUFFIX}.a;
fi
before_deploy:
# Tag the current top of the tree as "master-tot".
# Travis CI replies on the tag name to properly push to GitHub Releases.
- git config --global user.name "Travis CI"
- git config --global user.email "builds@travis-ci.org"
- git tag -f master-tot
- git push -q -f https://${glslangtoken}@github.com/KhronosGroup/glslang --tags
deploy:
provider: releases
api_key: ${glslangtoken}
on:
branch: master
condition: ${CC} == clang* && ${BUILD_NDK} != ON
file: ${TARBALL}
skip_cleanup: true
overwrite: true

View File

@ -1,6 +1,19 @@
cmake_minimum_required(VERSION 2.8.11)
# increase to 3.1 once all major distributions
# include a version of CMake >= 3.1
cmake_minimum_required(VERSION 2.8.12)
if (POLICY CMP0048)
cmake_policy(SET CMP0048 NEW)
endif()
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# Adhere to GNU filesystem layout conventions
include(GNUInstallDirs)
option(SKIP_GLSLANG_INSTALL "Skip installation" ${SKIP_GLSLANG_INSTALL})
if(NOT ${SKIP_GLSLANG_INSTALL})
set(ENABLE_GLSLANG_INSTALL ON)
endif()
option(ENABLE_AMD_EXTENSIONS "Enables support of AMD-specific extensions" ON)
option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON)
@ -8,11 +21,15 @@ option(ENABLE_NV_EXTENSIONS "Enables support of Nvidia-specific extensions" ON)
option(ENABLE_HLSL "Enables HLSL input support" ON)
enable_testing()
option(ENABLE_OPT "Enables spirv-opt capability if present" ON)
set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "prefix")
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32)
set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE)
endif()
project(glslang)
# make testing optional
include(CTest)
if(ENABLE_AMD_EXTENSIONS)
add_definitions(-DAMD_EXTENSIONS)
@ -33,42 +50,59 @@ if(WIN32)
endif(MSVC)
add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
elseif(UNIX)
add_definitions(-fPIC)
add_definitions(-DGLSLANG_OSINCLUDE_UNIX)
else(WIN32)
message("unknown platform")
endif(WIN32)
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs
-Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable)
add_definitions(-Wno-reorder) # disable this from -Wall, since it happens all over.
add_definitions(-std=c++11)
if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs
-Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions)
add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over.
elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
add_definitions(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs
-Wunused-parameter -Wunused-value -Wunused-variable)
add_definitions(-Wno-reorder) # disable this from -Wall, since it happens all over.
add_definitions(-std=c++11)
add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs
-Wunused-parameter -Wunused-value -Wunused-variable)
add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over.
endif()
# Request C++11
if(${CMAKE_VERSION} VERSION_LESS 3.1)
# CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD
# remove this block once CMake >=3.1 has fixated in the ecosystem
add_compile_options(-std=c++11)
else()
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
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)
if(WIN32 AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
set_target_properties(${TARGET} PROPERTIES
LINK_FLAGS "-static -static-libgcc -static-libstdc++")
endif()
endfunction(glslang_set_link_args)
# We depend on these for later projects, so they should come first.
add_subdirectory(External)
if(NOT TARGET SPIRV-Tools-opt)
set(ENABLE_OPT OFF)
endif()
if(ENABLE_OPT)
message(STATUS "optimizer enabled")
add_definitions(-DENABLE_OPT)
elseif(ENABLE_HLSL)
message(STATUS "spirv-tools not linked - illegal SPIRV may be generated for HLSL")
endif()
add_subdirectory(glslang)
add_subdirectory(OGLCompilersDLL)
if(ENABLE_GLSLANG_BINARIES)
add_subdirectory(StandAlone)
add_subdirectory(StandAlone)
endif()
add_subdirectory(SPIRV)
if(ENABLE_HLSL)

View File

@ -1,34 +1,43 @@
# 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")
if(BUILD_TESTING)
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()
endif()
if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt)
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools)
set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests")
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools spirv-tools)
endif()
endif()

View File

@ -2,10 +2,13 @@ set(SOURCES InitializeDll.cpp InitializeDll.h)
add_library(OGLCompiler STATIC ${SOURCES})
set_property(TARGET OGLCompiler PROPERTY FOLDER glslang)
set_property(TARGET OGLCompiler PROPERTY POSITION_INDEPENDENT_CODE ON)
if(WIN32)
source_group("Source" FILES ${SOURCES})
endif(WIN32)
install(TARGETS OGLCompiler
ARCHIVE DESTINATION lib)
if(ENABLE_GLSLANG_INSTALL)
install(TARGETS OGLCompiler
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif(ENABLE_GLSLANG_INSTALL)

View File

@ -38,13 +38,17 @@
#include "InitializeDll.h"
#include "../glslang/Include/InitializeGlobals.h"
#include "../glslang/Public/ShaderLang.h"
#include "../glslang/Include/PoolAlloc.h"
namespace glslang {
OS_TLSIndex ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
// Per-process initialization.
// Needs to be called at least once before parsing, etc. is done.
// Will also do thread initialization for the calling thread; other
// threads will need to do that explicitly.
bool InitProcess()
{
glslang::GetGlobalLock();
@ -85,7 +89,9 @@ bool InitProcess()
return true;
}
// Per-thread scoped initialization.
// Must be called at least once by each new thread sharing the
// symbol tables, etc., needed to parse.
bool InitThread()
{
//
@ -99,17 +105,21 @@ bool InitThread()
if (OS_GetTLSValue(ThreadInitializeIndex) != 0)
return true;
InitializeMemoryPools();
if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) {
assert(0 && "InitThread(): Unable to set init flag.");
return false;
}
glslang::SetThreadPoolAllocator(nullptr);
return true;
}
// Not necessary to call this: InitThread() is reentrant, and the need
// to do per thread tear down has been removed.
//
// This is kept, with memory management removed, to satisfy any exiting
// calls to it that rely on it.
bool DetachThread()
{
bool success = true;
@ -125,14 +135,18 @@ bool DetachThread()
assert(0 && "DetachThread(): Unable to clear init flag.");
success = false;
}
FreeGlobalPools();
}
return success;
}
// Not necessary to call this: InitProcess() is reentrant.
//
// This is kept, with memory management removed, to satisfy any exiting
// calls to it that rely on it.
//
// Users of glslang should call shFinalize() or glslang::FinalizeProcess() for
// process-scoped memory tear down.
bool DetachProcess()
{
bool success = true;
@ -140,12 +154,8 @@ bool DetachProcess()
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
return true;
ShFinalize();
success = DetachThread();
FreePoolIndex();
OS_FreeTLSIndex(ThreadInitializeIndex);
ThreadInitializeIndex = OS_INVALID_TLS_INDEX;

View File

@ -40,8 +40,8 @@ namespace glslang {
bool InitProcess();
bool InitThread();
bool DetachThread();
bool DetachProcess();
bool DetachThread(); // not called from standalone, perhaps other tools rely on parts of it
bool DetachProcess(); // not called from standalone, perhaps other tools rely on parts of it
} // end namespace glslang

View File

@ -49,9 +49,16 @@ There is also a non-shader extension
Building
--------
Instead of building manually, you can also download the binaries for your
platform directly from the [master-tot release][master-tot-release] on GitHub.
Those binaries are automatically uploaded by the buildbots after successful
testing and they always reflect the current top of the tree of the master
branch.
### Dependencies
* [CMake][cmake]: for generating compilation targets.
* [Python 2.7][python]: for executing SPIRV-Tools scripts. (Optional if not using SPIRV-Tools.)
* [bison][bison]: _optional_, but needed when changing the grammar (glslang.y).
* [googletest][googletest]: _optional_, but should use if making any changes to glslang.
@ -74,6 +81,18 @@ cd <the directory glslang was cloned to, "External" will be a subdirectory>
git clone https://github.com/google/googletest.git External/googletest
```
If you wish to assure that SPIR-V generated from HLSL is legal for Vulkan,
or wish to invoke -Os to reduce SPIR-V size from HLSL or GLSL, install
spirv-tools with this:
```bash
./update_glslang_sources.py
```
For running the CMake GUI or Visual Studio with python dependencies, you will,
in addition to python within the cygwin environment, need a Windows [python][python]
installation, including selecting the `PATH` update.
#### 3) Configure
Assume the source directory is `$SOURCE_DIR` and
@ -301,6 +320,8 @@ Basic Internal Operation
[cmake]: https://cmake.org/
[python]: https://www.python.org/
[bison]: https://www.gnu.org/software/bison/
[googletest]: https://github.com/google/googletest
[bison-gnu-win32]: http://gnuwin32.sourceforge.net/packages/bison.htm
[master-tot-release]: https://github.com/KhronosGroup/glslang/releases/tag/master-tot

View File

@ -41,17 +41,30 @@ endif(ENABLE_NV_EXTENSIONS)
add_library(SPIRV STATIC ${SOURCES} ${HEADERS})
set_property(TARGET SPIRV PROPERTY FOLDER glslang)
target_link_libraries(SPIRV glslang)
set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON)
add_library(SPVRemapper STATIC ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON)
if(ENABLE_OPT)
target_include_directories(SPIRV
PRIVATE ${spirv-tools_SOURCE_DIR}/include
PRIVATE ${spirv-tools_SOURCE_DIR}/source
)
target_link_libraries(SPIRV glslang SPIRV-Tools-opt SPVRemapper)
else()
target_link_libraries(SPIRV glslang)
endif(ENABLE_OPT)
if(WIN32)
source_group("Source" FILES ${SOURCES} ${HEADERS})
source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
endif(WIN32)
install(TARGETS SPIRV SPVRemapper
ARCHIVE DESTINATION lib)
if(ENABLE_GLSLANG_INSTALL)
install(TARGETS SPIRV SPVRemapper
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION include/SPIRV/)
install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/)
endif(ENABLE_GLSLANG_INSTALL)

View File

@ -28,24 +28,16 @@
#define GLSLextAMD_H
enum BuiltIn;
enum Capability;
enum Decoration;
enum Op;
static const int GLSLextAMDVersion = 100;
static const int GLSLextAMDRevision = 2;
static const int GLSLextAMDRevision = 6;
// SPV_AMD_shader_ballot
static const char* const E_SPV_AMD_shader_ballot = "SPV_AMD_shader_ballot";
static const Op OpGroupIAddNonUniformAMD = static_cast<Op>(5000);
static const Op OpGroupFAddNonUniformAMD = static_cast<Op>(5001);
static const Op OpGroupFMinNonUniformAMD = static_cast<Op>(5002);
static const Op OpGroupUMinNonUniformAMD = static_cast<Op>(5003);
static const Op OpGroupSMinNonUniformAMD = static_cast<Op>(5004);
static const Op OpGroupFMaxNonUniformAMD = static_cast<Op>(5005);
static const Op OpGroupUMaxNonUniformAMD = static_cast<Op>(5006);
static const Op OpGroupSMaxNonUniformAMD = static_cast<Op>(5007);
enum ShaderBallotAMD {
ShaderBallotBadAMD = 0, // Don't use
@ -79,16 +71,6 @@ enum ShaderTrinaryMinMaxAMD {
// SPV_AMD_shader_explicit_vertex_parameter
static const char* const E_SPV_AMD_shader_explicit_vertex_parameter = "SPV_AMD_shader_explicit_vertex_parameter";
static const BuiltIn BuiltInBaryCoordNoPerspAMD = static_cast<BuiltIn>(4992);
static const BuiltIn BuiltInBaryCoordNoPerspCentroidAMD = static_cast<BuiltIn>(4993);
static const BuiltIn BuiltInBaryCoordNoPerspSampleAMD = static_cast<BuiltIn>(4994);
static const BuiltIn BuiltInBaryCoordSmoothAMD = static_cast<BuiltIn>(4995);
static const BuiltIn BuiltInBaryCoordSmoothCentroidAMD = static_cast<BuiltIn>(4996);
static const BuiltIn BuiltInBaryCoordSmoothSampleAMD = static_cast<BuiltIn>(4997);
static const BuiltIn BuiltInBaryCoordPullModelAMD = static_cast<BuiltIn>(4998);
static const Decoration DecorationExplicitInterpAMD = static_cast<Decoration>(4999);
enum ShaderExplicitVertexParameterAMD {
ShaderExplicitVertexParameterBadAMD = 0, // Don't use
@ -113,4 +95,23 @@ enum GcnShaderAMD {
// SPV_AMD_gpu_shader_half_float
static const char* const E_SPV_AMD_gpu_shader_half_float = "SPV_AMD_gpu_shader_half_float";
// SPV_AMD_texture_gather_bias_lod
static const char* const E_SPV_AMD_texture_gather_bias_lod = "SPV_AMD_texture_gather_bias_lod";
// SPV_AMD_gpu_shader_int16
static const char* const E_SPV_AMD_gpu_shader_int16 = "SPV_AMD_gpu_shader_int16";
// SPV_AMD_shader_image_load_store_lod
static const char* const E_SPV_AMD_shader_image_load_store_lod = "SPV_AMD_shader_image_load_store_lod";
static const Capability CapabilityImageReadWriteLodAMD = static_cast<Capability>(5015);
// SPV_AMD_shader_fragment_mask
static const char* const E_SPV_AMD_shader_fragment_mask = "SPV_AMD_shader_fragment_mask";
static const Capability CapabilityFragmentMaskAMD = static_cast<Capability>(5010);
static const Op OpFragmentMaskFetchAMD = static_cast<Op>(5011);
static const Op OpFragmentFetchAMD = static_cast<Op>(5012);
#endif // #ifndef GLSLextAMD_H

View File

@ -32,12 +32,17 @@ enum Op;
enum Capability;
static const int GLSLextKHRVersion = 100;
static const int GLSLextKHRRevision = 1;
static const int GLSLextKHRRevision = 2;
static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot";
static const char* const E_SPV_KHR_subgroup_vote = "SPV_KHR_subgroup_vote";
static const char* const E_SPV_KHR_device_group = "SPV_KHR_device_group";
static const char* const E_SPV_KHR_multiview = "SPV_KHR_multiview";
static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shader_draw_parameters";
static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot";
static const char* const E_SPV_KHR_subgroup_vote = "SPV_KHR_subgroup_vote";
static const char* const E_SPV_KHR_device_group = "SPV_KHR_device_group";
static const char* const E_SPV_KHR_multiview = "SPV_KHR_multiview";
static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shader_draw_parameters";
static const char* const E_SPV_KHR_16bit_storage = "SPV_KHR_16bit_storage";
static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class";
static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_depth_coverage";
static const char* const E_SPV_EXT_shader_stencil_export = "SPV_EXT_shader_stencil_export";
static const char* const E_SPV_EXT_shader_viewport_index_layer = "SPV_EXT_shader_viewport_index_layer";
#endif // #ifndef GLSLextKHR_H

File diff suppressed because it is too large Load Diff

View File

@ -32,6 +32,8 @@
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
#pragma once
#if _MSC_VER >= 1900
#pragma warning(disable : 4464) // relative include path contains '..'
#endif
@ -45,9 +47,20 @@
namespace glslang {
struct SpvOptions {
SpvOptions() : generateDebugInfo(false), disableOptimizer(true),
optimizeSize(false) { }
bool generateDebugInfo;
bool disableOptimizer;
bool optimizeSize;
};
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);
int GetSpirvGeneratorVersion();
void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
SpvOptions* options = nullptr);
void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
spv::SpvBuildLogger* logger, SpvOptions* options = nullptr);
void OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName);
void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName);

View File

@ -51,7 +51,7 @@
#include "spvIR.h"
#include <cassert>
#include <unordered_map>
#include <unordered_set>
using spv::Block;
using spv::Id;
@ -69,33 +69,33 @@ public:
void visit(Block* block)
{
assert(block);
if (visited_[block] || delayed_[block])
if (visited_.count(block) || delayed_.count(block))
return;
callback_(block);
visited_[block] = true;
visited_.insert(block);
Block* mergeBlock = nullptr;
Block* continueBlock = nullptr;
auto mergeInst = block->getMergeInstruction();
if (mergeInst) {
Id mergeId = mergeInst->getIdOperand(0);
mergeBlock = block->getParent().getParent().getInstruction(mergeId)->getBlock();
delayed_[mergeBlock] = true;
delayed_.insert(mergeBlock);
if (mergeInst->getOpCode() == spv::OpLoopMerge) {
Id continueId = mergeInst->getIdOperand(1);
continueBlock =
block->getParent().getParent().getInstruction(continueId)->getBlock();
delayed_[continueBlock] = true;
delayed_.insert(continueBlock);
}
}
const auto successors = block->getSuccessors();
for (auto it = successors.cbegin(); it != successors.cend(); ++it)
visit(*it);
if (continueBlock) {
delayed_[continueBlock] = false;
delayed_.erase(continueBlock);
visit(continueBlock);
}
if (mergeBlock) {
delayed_[mergeBlock] = false;
delayed_.erase(mergeBlock);
visit(mergeBlock);
}
}
@ -103,7 +103,7 @@ public:
private:
std::function<void(Block*)> callback_;
// Whether a block has already been visited or is being delayed.
std::unordered_map<Block *, bool> visited_, delayed_;
std::unordered_set<Block *> visited_, delayed_;
};
}

View File

@ -135,6 +135,9 @@ namespace spv {
const unsigned typeStart = idPos(id);
const spv::Op opCode = asOpCode(typeStart);
if (errorLatch)
return 0;
switch (opCode) {
case spv::OpTypeInt: // fall through...
case spv::OpTypeFloat: return (spv[typeStart+2]+31)/32;
@ -148,8 +151,10 @@ namespace spv {
unsigned spirvbin_t::idTypeSizeInWords(spv::Id id) const
{
const auto tid_it = idTypeSizeMap.find(id);
if (tid_it == idTypeSizeMap.end())
if (tid_it == idTypeSizeMap.end()) {
error("type size for ID not found");
return 0;
}
return tid_it->second;
}
@ -215,14 +220,19 @@ namespace spv {
bool spirvbin_t::isConstOp(spv::Op opCode) const
{
switch (opCode) {
case spv::OpConstantNull: error("unimplemented constant type");
case spv::OpConstantSampler: error("unimplemented constant type");
case spv::OpConstantNull:
case spv::OpConstantSampler:
error("unimplemented constant type");
return true;
case spv::OpConstantTrue:
case spv::OpConstantFalse:
case spv::OpConstantComposite:
case spv::OpConstant: return true;
default: return false;
case spv::OpConstant:
return true;
default:
return false;
}
}
@ -248,19 +258,31 @@ namespace spv {
{
assert(id != spv::NoResult && newId != spv::NoResult);
if (id > bound()) {
error(std::string("ID out of range: ") + std::to_string(id));
return spirvbin_t::unused;
}
if (id >= idMapL.size())
idMapL.resize(id+1, unused);
if (newId != unmapped && newId != unused) {
if (isOldIdUnused(id))
if (isOldIdUnused(id)) {
error(std::string("ID unused in module: ") + std::to_string(id));
return spirvbin_t::unused;
}
if (!isOldIdUnmapped(id))
if (!isOldIdUnmapped(id)) {
error(std::string("ID already mapped: ") + std::to_string(id) + " -> "
+ std::to_string(localId(id)));
+ std::to_string(localId(id)));
if (isNewIdMapped(newId))
return spirvbin_t::unused;
}
if (isNewIdMapped(newId)) {
error(std::string("ID already used in module: ") + std::to_string(newId));
return spirvbin_t::unused;
}
msg(4, 4, std::string("map: ") + std::to_string(id) + " -> " + std::to_string(newId));
setMapped(newId);
@ -294,6 +316,10 @@ namespace spv {
process(inst_fn_nop, // ignore instructions
[this](spv::Id& id) {
id = localId(id);
if (errorLatch)
return;
assert(id != unused && id != unmapped);
}
);
@ -312,14 +338,22 @@ namespace spv {
continue;
// Find a new mapping for any used but unmapped IDs
if (isOldIdUnmapped(id))
if (isOldIdUnmapped(id)) {
localId(id, unusedId = nextUnusedId(unusedId));
if (errorLatch)
return;
}
if (isOldIdUnmapped(id))
if (isOldIdUnmapped(id)) {
error(std::string("old ID not mapped: ") + std::to_string(id));
return;
}
// Track max bound
maxBound = std::max(maxBound, localId(id) + 1);
if (errorLatch)
return;
}
bound(maxBound); // reset header ID bound to as big as it now needs to be
@ -401,6 +435,9 @@ namespace spv {
if (typeId != spv::NoResult) {
const unsigned idTypeSize = typeSizeInWords(typeId);
if (errorLatch)
return false;
if (idTypeSize != 0)
idTypeSizeMap[resultId] = idTypeSize;
}
@ -416,17 +453,26 @@ namespace spv {
} else if (opCode == spv::Op::OpEntryPoint) {
entryPoint = asId(start + 2);
} else if (opCode == spv::Op::OpFunction) {
if (fnStart != 0)
if (fnStart != 0) {
error("nested function found");
return false;
}
fnStart = start;
fnRes = asId(start + 2);
} else if (opCode == spv::Op::OpFunctionEnd) {
assert(fnRes != spv::NoResult);
if (fnStart == 0)
if (fnStart == 0) {
error("function end without function start");
return false;
}
fnPos[fnRes] = range_t(fnStart, start + asWordCount(start));
fnStart = 0;
} else if (isConstOp(opCode)) {
if (errorLatch)
return false;
assert(asId(start + 2) != spv::NoResult);
typeConstPos.insert(start);
} else if (isTypeOp(opCode)) {
@ -446,29 +492,37 @@ namespace spv {
{
msg(2, 2, std::string("validating: "));
if (spv.size() < header_size)
if (spv.size() < header_size) {
error("file too short: ");
return;
}
if (magic() != spv::MagicNumber)
if (magic() != spv::MagicNumber) {
error("bad magic number");
return;
}
// field 1 = version
// field 2 = generator magic
// field 3 = result <id> bound
if (schemaNum() != 0)
if (schemaNum() != 0) {
error("bad schema, must be 0");
return;
}
}
int spirvbin_t::processInstruction(unsigned word, instfn_t instFn, idfn_t idFn)
{
const auto instructionStart = word;
const unsigned wordCount = asWordCount(instructionStart);
const spv::Op opCode = asOpCode(instructionStart);
const int nextInst = word++ + wordCount;
spv::Op opCode = asOpCode(instructionStart);
if (nextInst > int(spv.size()))
if (nextInst > int(spv.size())) {
error("spir instruction terminated too early");
return -1;
}
// Base for computing number of operands; will be updated as more is learned
unsigned numOperands = wordCount - 1;
@ -506,6 +560,18 @@ namespace spv {
// Store IDs from instruction in our map
for (int op = 0; numOperands > 0; ++op, --numOperands) {
// SpecConstantOp is special: it includes the operands of another opcode which is
// given as a literal in the 3rd word. We will switch over to pretending that the
// opcode being processed is the literal opcode value of the SpecConstantOp. See the
// SPIRV spec for details. This way we will handle IDs and literals as appropriate for
// the embedded op.
if (opCode == spv::OpSpecConstantOp) {
if (op == 0) {
opCode = asOpCode(word++); // this is the opcode embedded in the SpecConstantOp.
--numOperands;
}
}
switch (spv::InstructionDesc[opCode].operands.getClass(op)) {
case spv::OperandId:
case spv::OperandScope:
@ -538,6 +604,9 @@ namespace spv {
const unsigned literalSize = idTypeSizeInWords(idBuffer[literalSizePos]);
const unsigned numLiteralIdPairs = (nextInst-word) / (1+literalSize);
if (errorLatch)
return -1;
for (unsigned arg=0; arg<numLiteralIdPairs; ++arg) {
word += literalSize; // literal
idFn(asId(word++)); // label
@ -614,9 +683,13 @@ namespace spv {
// basic parsing and InstructionDesc table borrowed from SpvDisassemble.cpp...
unsigned nextInst = unsigned(spv.size());
for (unsigned word = begin; word < end; word = nextInst)
for (unsigned word = begin; word < end; word = nextInst) {
nextInst = processInstruction(word, instFn, idFn);
if (errorLatch)
return *this;
}
return *this;
}
@ -631,8 +704,11 @@ namespace spv {
for (const char c : name.first)
hashval = hashval * 1009 + c;
if (isOldIdUnmapped(name.second))
if (isOldIdUnmapped(name.second)) {
localId(name.second, nextUnusedId(hashval % softTypeIdLimit + firstMappedID));
if (errorLatch)
return;
}
}
}
@ -654,6 +730,9 @@ namespace spv {
[&](spv::Op, unsigned start) { instPos.push_back(start); return true; },
op_fn_nop);
if (errorLatch)
return;
// Window size for context-sensitive canonicalization values
// Empirical best size from a single data set. TODO: Would be a good tunable.
// We essentially perform a little convolution around each instruction,
@ -689,8 +768,12 @@ namespace spv {
hashval = hashval * 30103 + asOpCodeHash(instPos[i]); // 30103 = semiarbitrary prime
}
if (isOldIdUnmapped(resId))
if (isOldIdUnmapped(resId)) {
localId(resId, nextUnusedId(hashval % softTypeIdLimit + firstMappedID));
if (errorLatch)
return;
}
}
}
}
@ -783,6 +866,9 @@ namespace spv {
[&](spv::Id& id) { if (idMap.find(id) != idMap.end()) id = idMap[id]; }
);
if (errorLatch)
return;
// EXPERIMENTAL: Implicit output stores
fnLocalVars.clear();
idMap.clear();
@ -803,11 +889,17 @@ namespace spv {
},
op_fn_nop);
if (errorLatch)
return;
process(
inst_fn_nop,
[&](spv::Id& id) { if (idMap.find(id) != idMap.end()) id = idMap[id]; }
);
if (errorLatch)
return;
strip(); // strip out data we decided to eliminate
}
@ -907,6 +999,9 @@ namespace spv {
}
);
if (errorLatch)
return;
process(
[&](spv::Op opCode, unsigned start) {
if (opCode == spv::OpLoad && fnLocalVars.count(asId(start+3)) > 0)
@ -915,6 +1010,9 @@ namespace spv {
},
op_fn_nop);
if (errorLatch)
return;
// Chase replacements to their origins, in case there is a chain such as:
// 2 = store 1
// 3 = load 2
@ -948,6 +1046,9 @@ namespace spv {
}
);
if (errorLatch)
return;
strip(); // strip out data we decided to eliminate
}
@ -991,6 +1092,9 @@ namespace spv {
fn->second.first,
fn->second.second);
if (errorLatch)
return;
fn = fnPos.erase(fn);
} else ++fn;
}
@ -1023,6 +1127,9 @@ namespace spv {
[&](spv::Id& id) { if (varUseCount[id]) ++varUseCount[id]; }
);
if (errorLatch)
return;
// Remove single-use function variables + associated decorations and names
process(
[&](spv::Op opCode, unsigned start) {
@ -1064,6 +1171,9 @@ namespace spv {
[&](spv::Id& id) { if (isType[id]) ++typeUseCount[id]; }
);
if (errorLatch)
return;
// Remove single reference types
for (const auto typeStart : typeConstPos) {
const spv::Id typeId = asTypeConstId(typeStart);
@ -1073,6 +1183,9 @@ namespace spv {
stripInst(typeStart);
}
}
if (errorLatch)
return;
}
}
@ -1151,8 +1264,10 @@ namespace spv {
unsigned spirvbin_t::idPos(spv::Id id) const
{
const auto tid_it = idPosR.find(id);
if (tid_it == idPosR.end())
if (tid_it == idPosR.end()) {
error("ID not found");
return 0;
}
return tid_it->second;
}
@ -1251,8 +1366,14 @@ namespace spv {
const spv::Id resId = asTypeConstId(typeStart);
const std::uint32_t hashval = hashType(typeStart);
if (isOldIdUnmapped(resId))
if (errorLatch)
return;
if (isOldIdUnmapped(resId)) {
localId(resId, nextUnusedId(hashval % softTypeIdLimit + firstMappedID));
if (errorLatch)
return;
}
}
}
@ -1271,7 +1392,7 @@ namespace spv {
int strippedPos = 0;
for (unsigned word = 0; word < unsigned(spv.size()); ++word) {
if (strip_it != stripRange.end() && word >= strip_it->second)
while (strip_it != stripRange.end() && word >= strip_it->second)
++strip_it;
if (strip_it == stripRange.end() || word < strip_it->first || word >= strip_it->second)
@ -1298,24 +1419,49 @@ namespace spv {
msg(3, 4, std::string("ID bound: ") + std::to_string(bound()));
if (options & STRIP) stripDebug();
if (errorLatch) return;
strip(); // strip out data we decided to eliminate
if (errorLatch) return;
if (options & OPT_LOADSTORE) optLoadStore();
if (errorLatch) return;
if (options & OPT_FWD_LS) forwardLoadStores();
if (errorLatch) return;
if (options & DCE_FUNCS) dceFuncs();
if (errorLatch) return;
if (options & DCE_VARS) dceVars();
if (errorLatch) return;
if (options & DCE_TYPES) dceTypes();
if (errorLatch) return;
strip(); // strip out data we decided to eliminate
if (errorLatch) return;
stripDeadRefs(); // remove references to things we DCEed
if (errorLatch) return;
// after the last strip, we must clean any debug info referring to now-deleted data
if (options & MAP_TYPES) mapTypeConst();
if (errorLatch) return;
if (options & MAP_NAMES) mapNames();
if (errorLatch) return;
if (options & MAP_FUNCS) mapFnBodies();
if (errorLatch) return;
if (options & MAP_ALL) {
mapRemainder(); // map any unmapped IDs
if (errorLatch) return;
applyMap(); // Now remap each shader to the new IDs we've come up with
if (errorLatch) return;
}
}

View File

@ -39,6 +39,7 @@
#include <string>
#include <vector>
#include <cstdlib>
#include <exception>
namespace spv {
@ -111,7 +112,9 @@ namespace spv {
class spirvbin_t : public spirvbin_base_t
{
public:
spirvbin_t(int verbose = 0) : entryPoint(spv::NoResult), largestNewId(0), verbose(verbose) { }
spirvbin_t(int verbose = 0) : entryPoint(spv::NoResult), largestNewId(0), verbose(verbose), errorLatch(false)
{ }
virtual ~spirvbin_t() { }
// remap on an existing binary in memory
@ -165,7 +168,7 @@ private:
typedef std::unordered_map<spv::Id, unsigned> typesize_map_t;
// handle error
void error(const std::string& txt) const { errorHandler(txt); }
void error(const std::string& txt) const { errorLatch = true; errorHandler(txt); }
bool isConstOp(spv::Op opCode) const;
bool isTypeOp(spv::Op opCode) const;
@ -286,6 +289,11 @@ private:
std::uint32_t options;
int verbose; // verbosity level
// Error latch: this is set if the error handler is ever executed. It would be better to
// use a try/catch block and throw, but that's not desired for certain environments, so
// this is the alternative.
mutable bool errorLatch;
static errorfn_t errorHandler;
static logfn_t logHandler;
};

View File

@ -59,6 +59,9 @@ namespace spv {
Builder::Builder(unsigned int magicNumber, SpvBuildLogger* buildLogger) :
source(SourceLanguageUnknown),
sourceVersion(0),
sourceFileStringId(NoResult),
currentLine(0),
emitOpLines(false),
addressModel(AddressingModelLogical),
memoryModel(MemoryModelGLSL450),
builderNumber(magicNumber),
@ -84,6 +87,26 @@ Id Builder::import(const char* name)
return import->getResultId();
}
// Emit an OpLine if we've been asked to emit OpLines and the line number
// has changed since the last time, and is a valid line number.
void Builder::setLine(int lineNum)
{
if (lineNum != 0 && lineNum != currentLine) {
currentLine = lineNum;
if (emitOpLines)
addLine(sourceFileStringId, currentLine, 0);
}
}
void Builder::addLine(Id fileName, int lineNum, int column)
{
Instruction* line = new Instruction(OpLine);
line->addIdOperand(fileName);
line->addImmediateOperand(lineNum);
line->addImmediateOperand(column);
buildPoint->addInstruction(std::unique_ptr<Instruction>(line));
}
// For creating new groupedTypes (will return old type if the requested one was already made).
Id Builder::makeVoidType()
{
@ -379,6 +402,8 @@ Id Builder::makeFunctionType(Id returnType, const std::vector<Id>& paramTypes)
Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format)
{
assert(sampled == 1 || sampled == 2);
// try to find it
Instruction* type;
for (int t = 0; t < (int)groupedTypes[OpTypeImage].size(); ++t) {
@ -410,27 +435,27 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo
// deal with capabilities
switch (dim) {
case DimBuffer:
if (sampled)
if (sampled == 1)
addCapability(CapabilitySampledBuffer);
else
addCapability(CapabilityImageBuffer);
break;
case Dim1D:
if (sampled)
if (sampled == 1)
addCapability(CapabilitySampled1D);
else
addCapability(CapabilityImage1D);
break;
case DimCube:
if (arrayed) {
if (sampled)
if (sampled == 1)
addCapability(CapabilitySampledCubeArray);
else
addCapability(CapabilityImageCubeArray);
}
break;
case DimRect:
if (sampled)
if (sampled == 1)
addCapability(CapabilitySampledRect);
else
addCapability(CapabilityImageRect);
@ -443,10 +468,14 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo
}
if (ms) {
if (arrayed)
addCapability(CapabilityImageMSArray);
if (! sampled)
addCapability(CapabilityStorageImageMultisample);
if (sampled == 2) {
// Images used with subpass data are not storage
// images, so don't require the capability for them.
if (dim != Dim::DimSubpassData)
addCapability(CapabilityStorageImageMultisample);
if (arrayed)
addCapability(CapabilityImageMSArray);
}
}
return type->getResultId();
@ -928,17 +957,6 @@ void Builder::addMemberName(Id id, int memberNumber, const char* string)
names.push_back(std::unique_ptr<Instruction>(name));
}
void Builder::addLine(Id target, Id fileName, int lineNum, int column)
{
Instruction* line = new Instruction(OpLine);
line->addIdOperand(target);
line->addIdOperand(fileName);
line->addImmediateOperand(lineNum);
line->addImmediateOperand(column);
lines.push_back(std::unique_ptr<Instruction>(line));
}
void Builder::addDecoration(Id id, Decoration decoration, int num)
{
if (decoration == spv::DecorationMax)
@ -971,16 +989,16 @@ Function* Builder::makeEntryPoint(const char* entryPoint)
Block* entry;
std::vector<Id> params;
std::vector<Decoration> precisions;
std::vector<std::vector<Decoration>> decorations;
entryPointFunction = makeFunctionEntry(NoPrecision, makeVoidType(), entryPoint, params, precisions, &entry);
entryPointFunction = makeFunctionEntry(NoPrecision, makeVoidType(), entryPoint, params, decorations, &entry);
return entryPointFunction;
}
// Comments in header
Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name,
const std::vector<Id>& paramTypes, const std::vector<Decoration>& precisions, Block **entry)
const std::vector<Id>& paramTypes, const std::vector<std::vector<Decoration>>& decorations, Block **entry)
{
// Make the function and initial instructions in it
Id typeId = makeFunctionType(returnType, paramTypes);
@ -989,8 +1007,10 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const
// Set up the precisions
setPrecision(function->getId(), precision);
for (unsigned p = 0; p < (unsigned)precisions.size(); ++p)
setPrecision(firstParamId + p, precisions[p]);
for (unsigned p = 0; p < (unsigned)decorations.size(); ++p) {
for (int d = 0; d < (int)decorations[p].size(); ++d)
addDecoration(firstParamId + p, decorations[p][d]);
}
// CFG
if (entry) {
@ -1997,9 +2017,10 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector<Id>&
}
// Comments in header
Builder::If::If(Id cond, Builder& gb) :
Builder::If::If(Id cond, unsigned int ctrl, Builder& gb) :
builder(gb),
condition(cond),
control(ctrl),
elseBlock(0)
{
function = &builder.getBuildPoint()->getParent();
@ -2040,7 +2061,7 @@ void Builder::If::makeEndIf()
// Go back to the headerBlock and make the flow control split
builder.setBuildPoint(headerBlock);
builder.createSelectionMerge(mergeBlock, SelectionControlMaskNone);
builder.createSelectionMerge(mergeBlock, control);
if (elseBlock)
builder.createConditionalBranch(condition, thenBlock, elseBlock);
else
@ -2052,7 +2073,7 @@ void Builder::If::makeEndIf()
}
// Comments in header
void Builder::makeSwitch(Id selector, int numSegments, const std::vector<int>& caseValues,
void Builder::makeSwitch(Id selector, unsigned int control, int numSegments, const std::vector<int>& caseValues,
const std::vector<int>& valueIndexToSegment, int defaultSegment,
std::vector<Block*>& segmentBlocks)
{
@ -2065,7 +2086,7 @@ void Builder::makeSwitch(Id selector, int numSegments, const std::vector<int>& c
Block* mergeBlock = new Block(getUniqueId(), function);
// make and insert the switch's selection-merge instruction
createSelectionMerge(mergeBlock, SelectionControlMaskNone);
createSelectionMerge(mergeBlock, control);
// make the switch instruction
Instruction* switchInst = new Instruction(NoResult, NoType, OpSwitch);
@ -2411,12 +2432,9 @@ void Builder::dump(std::vector<unsigned int>& out) const
dumpInstructions(out, executionModes);
// Debug instructions
if (source != SourceLanguageUnknown) {
Instruction sourceInst(0, 0, OpSource);
sourceInst.addImmediateOperand(source);
sourceInst.addImmediateOperand(sourceVersion);
sourceInst.dump(out);
}
dumpInstructions(out, strings);
dumpModuleProcesses(out);
dumpSourceInstructions(out);
for (int e = 0; e < (int)sourceExtensions.size(); ++e) {
Instruction sourceExtInst(0, 0, OpSourceExtension);
sourceExtInst.addStringOperand(sourceExtensions[e]);
@ -2574,6 +2592,48 @@ void Builder::createConditionalBranch(Id condition, Block* thenBlock, Block* els
elseBlock->addPredecessor(buildPoint);
}
// OpSource
// [OpSourceContinued]
// ...
void Builder::dumpSourceInstructions(std::vector<unsigned int>& out) const
{
const int maxWordCount = 0xFFFF;
const int opSourceWordCount = 4;
const int nonNullBytesPerInstruction = 4 * (maxWordCount - opSourceWordCount) - 1;
if (source != SourceLanguageUnknown) {
// OpSource Language Version File Source
Instruction sourceInst(NoResult, NoType, OpSource);
sourceInst.addImmediateOperand(source);
sourceInst.addImmediateOperand(sourceVersion);
// File operand
if (sourceFileStringId != NoResult) {
sourceInst.addIdOperand(sourceFileStringId);
// Source operand
if (sourceText.size() > 0) {
int nextByte = 0;
std::string subString;
while ((int)sourceText.size() - nextByte > 0) {
subString = sourceText.substr(nextByte, nonNullBytesPerInstruction);
if (nextByte == 0) {
// OpSource
sourceInst.addStringOperand(subString.c_str());
sourceInst.dump(out);
} else {
// OpSourcContinued
Instruction sourceContinuedInst(OpSourceContinued);
sourceContinuedInst.addStringOperand(subString.c_str());
sourceContinuedInst.dump(out);
}
nextByte += nonNullBytesPerInstruction;
}
} else
sourceInst.dump(out);
} else
sourceInst.dump(out);
}
}
void Builder::dumpInstructions(std::vector<unsigned int>& out, const std::vector<std::unique_ptr<Instruction> >& instructions) const
{
for (int i = 0; i < (int)instructions.size(); ++i) {
@ -2581,4 +2641,15 @@ void Builder::dumpInstructions(std::vector<unsigned int>& out, const std::vector
}
}
void Builder::dumpModuleProcesses(std::vector<unsigned int>& out) const
{
for (int i = 0; i < (int)moduleProcesses.size(); ++i) {
// TODO: switch this out for the 1.1 headers
const spv::Op OpModuleProcessed = (spv::Op)330;
Instruction moduleProcessed(OpModuleProcessed);
moduleProcessed.addStringOperand(moduleProcesses[i]);
moduleProcessed.dump(out);
}
}
}; // end spv namespace

View File

@ -70,7 +70,17 @@ public:
source = lang;
sourceVersion = version;
}
void setSourceFile(const std::string& file)
{
Instruction* fileString = new Instruction(getUniqueId(), NoType, OpString);
fileString->addStringOperand(file.c_str());
sourceFileStringId = fileString->getResultId();
strings.push_back(std::unique_ptr<Instruction>(fileString));
}
void setSourceText(const std::string& text) { sourceText = text; }
void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); }
void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); }
void setEmitOpLines() { emitOpLines = true; }
void addExtension(const char* ext) { extensions.insert(ext); }
Id import(const char*);
void setMemoryModel(spv::AddressingModel addr, spv::MemoryModel mem)
@ -92,6 +102,12 @@ public:
return id;
}
// Log the current line, and if different than the last one,
// issue a new OpLine, using the current file name.
void setLine(int line);
// Low-level OpLine. See setLine() for a layered helper.
void addLine(Id fileName, int line, int column);
// For creating new types (will return old type if the requested one was already made).
Id makeVoidType();
Id makeBoolType();
@ -134,6 +150,9 @@ public:
bool isSampledImage(Id resultId) const { return isSampledImageType(getTypeId(resultId)); }
bool isBoolType(Id typeId) const { return groupedTypes[OpTypeBool].size() > 0 && typeId == groupedTypes[OpTypeBool].back()->getResultId(); }
bool isIntType(Id typeId) const { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) != 0; }
bool isUintType(Id typeId) const { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) == 0; }
bool isFloatType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat; }
bool isPointerType(Id typeId) const { return getTypeClass(typeId) == OpTypePointer; }
bool isScalarType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat || getTypeClass(typeId) == OpTypeInt || getTypeClass(typeId) == OpTypeBool; }
bool isVectorType(Id typeId) const { return getTypeClass(typeId) == OpTypeVector; }
@ -153,6 +172,13 @@ public:
unsigned int getConstantScalar(Id resultId) const { return module.getInstruction(resultId)->getImmediateOperand(0); }
StorageClass getStorageClass(Id resultId) const { return getTypeStorageClass(getTypeId(resultId)); }
int getScalarTypeWidth(Id typeId) const
{
Id scalarTypeId = getScalarTypeId(typeId);
assert(getTypeClass(scalarTypeId) == OpTypeInt || getTypeClass(scalarTypeId) == OpTypeFloat);
return module.getInstruction(scalarTypeId)->getImmediateOperand(0);
}
int getTypeNumColumns(Id typeId) const
{
assert(isMatrixType(typeId));
@ -189,6 +215,10 @@ public:
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); }
#ifdef AMD_EXTENSIONS
Id makeInt16Constant(short i, bool specConstant = false) { return makeIntConstant(makeIntType(16), (unsigned)((unsigned short)i), specConstant); }
Id makeUint16Constant(unsigned short u, bool specConstant = false) { return makeIntConstant(makeUintType(16), (unsigned)u, specConstant); }
#endif
Id makeFloatConstant(float f, bool specConstant = false);
Id makeDoubleConstant(double d, bool specConstant = false);
#ifdef AMD_EXTENSIONS
@ -203,7 +233,6 @@ public:
void addExecutionMode(Function*, ExecutionMode mode, int value1 = -1, int value2 = -1, int value3 = -1);
void addName(Id, const char* name);
void addMemberName(Id, int member, const char* name);
void addLine(Id target, Id fileName, int line, int column);
void addDecoration(Id, Decoration, int num = -1);
void addMemberDecoration(Id, unsigned int member, Decoration, int num = -1);
@ -219,7 +248,7 @@ public:
// Return the function, pass back the entry.
// The returned pointer is only valid for the lifetime of this builder.
Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, const std::vector<Id>& paramTypes,
const std::vector<Decoration>& precisions, Block **entry = 0);
const std::vector<std::vector<Decoration>>& precisions, Block **entry = 0);
// Create a return. An 'implicit' return is one not appearing in the source
// code. In the case of an implicit return, no post-return block is inserted.
@ -357,7 +386,7 @@ public:
// Helper to use for building nested control flow with if-then-else.
class If {
public:
If(Id condition, Builder& builder);
If(Id condition, unsigned int ctrl, Builder& builder);
~If() {}
void makeBeginElse();
@ -369,6 +398,7 @@ public:
Builder& builder;
Id condition;
unsigned int control;
Function* function;
Block* headerBlock;
Block* thenBlock;
@ -388,7 +418,7 @@ public:
// Returns the right set of basic blocks to start each code segment with, so that the caller's
// recursion stack can hold the memory for it.
//
void makeSwitch(Id condition, int numSegments, const std::vector<int>& caseValues,
void makeSwitch(Id condition, unsigned int control, int numSegments, const std::vector<int>& caseValues,
const std::vector<int>& valueToSegment, int defaultSegment, std::vector<Block*>& segmentBB); // return argument
// Add a branch to the innermost switch's merge block.
@ -551,12 +581,19 @@ public:
void simplifyAccessChainSwizzle();
void createAndSetNoPredecessorBlock(const char*);
void createSelectionMerge(Block* mergeBlock, unsigned int control);
void dumpSourceInstructions(std::vector<unsigned int>&) const;
void dumpInstructions(std::vector<unsigned int>&, const std::vector<std::unique_ptr<Instruction> >&) const;
void dumpModuleProcesses(std::vector<unsigned int>&) const;
SourceLanguage source;
int sourceVersion;
spv::Id sourceFileStringId;
std::string sourceText;
int currentLine;
bool emitOpLines;
std::set<std::string> extensions;
std::vector<const char*> sourceExtensions;
std::vector<const char*> moduleProcesses;
AddressingModel addressModel;
MemoryModel memoryModel;
std::set<spv::Capability> capabilities;
@ -569,6 +606,7 @@ public:
AccessChain accessChain;
// special blocks of instructions for output
std::vector<std::unique_ptr<Instruction> > strings;
std::vector<std::unique_ptr<Instruction> > imports;
std::vector<std::unique_ptr<Instruction> > entryPoints;
std::vector<std::unique_ptr<Instruction> > executionModes;
@ -589,7 +627,7 @@ public:
// Our loop stack.
std::stack<LoopBlocks> loops;
// The stream for outputing warnings and errors.
// The stream for outputting warnings and errors.
SpvBuildLogger* logger;
}; // end Builder class

View File

@ -68,9 +68,9 @@ namespace spv {
// Also, the ceilings are declared next to these, to help keep them in sync.
// Ceilings should be
// - one more than the maximum value an enumerant takes on, for non-mask enumerants
// (for non-sparse enums, this is the number of enumurants)
// (for non-sparse enums, this is the number of enumerants)
// - the number of bits consumed by the set of masks
// (for non-sparse mask enums, this is the number of enumurants)
// (for non-sparse mask enums, this is the number of enumerants)
//
const int SourceLanguageCeiling = 6; // HLSL todo: need official enumerant
@ -175,12 +175,13 @@ const char* ExecutionModeString(int mode)
case 31: return "ContractionOff";
case 32: return "Bad";
case 4446: return "PostDepthCoverage";
case ExecutionModeCeiling:
default: return "Bad";
}
}
const int StorageClassCeiling = 12;
const int StorageClassCeiling = 13;
const char* StorageClassString(int StorageClass)
{
@ -197,6 +198,7 @@ const char* StorageClassString(int StorageClass)
case 9: return "PushConstant";
case 10: return "AtomicCounter";
case 11: return "Image";
case 12: return "StorageBuffer";
case StorageClassCeiling:
default: return "Bad";
@ -329,6 +331,7 @@ const char* BuiltInString(int builtIn)
case 4424: return "BaseVertex";
case 4425: return "BaseInstance";
case 4426: return "DrawIndex";
case 5014: return "FragStencilRefEXT";
#ifdef AMD_EXTENSIONS
case 4992: return "BaryCoordNoPerspAMD";
@ -635,13 +638,15 @@ const char* SelectControlString(int cont)
}
}
const int LoopControlCeiling = 2;
const int LoopControlCeiling = 4;
const char* LoopControlString(int cont)
{
switch (cont) {
case 0: return "Unroll";
case 1: return "DontUnroll";
case 2: return "DependencyInfinite";
case 3: return "DependencyLength";
case LoopControlCeiling:
default: return "Bad";
@ -830,9 +835,25 @@ const char* CapabilityString(int info)
case 4427: return "DrawParameters";
case 4431: return "SubgroupVoteKHR";
case 4433: return "StorageUniformBufferBlock16";
case 4434: return "StorageUniform16";
case 4435: return "StoragePushConstant16";
case 4436: return "StorageInputOutput16";
case 4437: return "DeviceGroup";
case 4439: return "MultiView";
case 5013: return "StencilExportEXT";
#ifdef AMD_EXTENSIONS
case 5009: return "ImageGatherBiasLodAMD";
case 5010: return "FragmentMaskAMD";
case 5015: return "ImageReadWriteLodAMD";
#endif
case 4445: return "AtomicStorageOps";
case 4447: return "SampleMaskPostDepthCoverage";
#ifdef NV_EXTENSIONS
case 5251: return "GeometryShaderPassthroughNV";
case 5254: return "ShaderViewportIndexLayerNV";
@ -1187,6 +1208,9 @@ const char* OpcodeString(int op)
case 5005: return "OpGroupFMaxNonUniformAMD";
case 5006: return "OpGroupUMaxNonUniformAMD";
case 5007: return "OpGroupSMaxNonUniformAMD";
case 5011: return "OpFragmentMaskFetchAMD";
case 5012: return "OpFragmentFetchAMD";
#endif
case OpcodeCeiling:
@ -2849,6 +2873,15 @@ void Parameterize()
InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandId, "X");
InstructionDesc[OpFragmentMaskFetchAMD].capabilities.push_back(CapabilityFragmentMaskAMD);
InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Image'");
InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpFragmentFetchAMD].capabilities.push_back(CapabilityFragmentMaskAMD);
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Image'");
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'");
#endif
}

View File

@ -36,6 +36,8 @@
// Parameterize the SPIR-V enumerants.
//
#pragma once
#include "spirv.hpp"
#include <vector>

View File

@ -23,7 +23,7 @@
#include <limits>
#include <sstream>
#if defined(_MSC_VER) && _MSC_VER < 1700
#if defined(_MSC_VER) && _MSC_VER < 1800
namespace std {
bool isnan(double f)
{

View File

@ -47,11 +47,11 @@ namespace spv {
typedef unsigned int Id;
#define SPV_VERSION 0x10000
#define SPV_REVISION 10
#define SPV_REVISION 12
static const unsigned int MagicNumber = 0x07230203;
static const unsigned int Version = 0x00010000;
static const unsigned int Revision = 10;
static const unsigned int Revision = 12;
static const unsigned int OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16;
@ -61,6 +61,7 @@ enum SourceLanguage {
SourceLanguageGLSL = 2,
SourceLanguageOpenCL_C = 3,
SourceLanguageOpenCL_CPP = 4,
SourceLanguageHLSL = 5,
SourceLanguageMax = 0x7fffffff,
};
@ -121,6 +122,7 @@ enum ExecutionMode {
ExecutionModeOutputTriangleStrip = 29,
ExecutionModeVecTypeHint = 30,
ExecutionModeContractionOff = 31,
ExecutionModePostDepthCoverage = 4446,
ExecutionModeMax = 0x7fffffff,
};
@ -137,6 +139,7 @@ enum StorageClass {
StorageClassPushConstant = 9,
StorageClassAtomicCounter = 10,
StorageClassImage = 11,
StorageClassStorageBuffer = 12,
StorageClassMax = 0x7fffffff,
};
@ -374,6 +377,7 @@ enum Decoration {
DecorationNoContraction = 42,
DecorationInputAttachmentIndex = 43,
DecorationAlignment = 44,
DecorationExplicitInterpAMD = 4999,
DecorationOverrideCoverageNV = 5248,
DecorationPassthroughNV = 5250,
DecorationViewportRelativeNV = 5252,
@ -433,6 +437,14 @@ enum BuiltIn {
BuiltInDrawIndex = 4426,
BuiltInDeviceIndex = 4438,
BuiltInViewIndex = 4440,
BuiltInBaryCoordNoPerspAMD = 4992,
BuiltInBaryCoordNoPerspCentroidAMD = 4993,
BuiltInBaryCoordNoPerspSampleAMD = 4994,
BuiltInBaryCoordSmoothAMD = 4995,
BuiltInBaryCoordSmoothCentroidAMD = 4996,
BuiltInBaryCoordSmoothSampleAMD = 4997,
BuiltInBaryCoordPullModelAMD = 4998,
BuiltInFragStencilRefEXT = 5014,
BuiltInViewportMaskNV = 5253,
BuiltInSecondaryPositionNV = 5257,
BuiltInSecondaryViewportMaskNV = 5258,
@ -616,14 +628,23 @@ enum Capability {
CapabilitySubgroupBallotKHR = 4423,
CapabilityDrawParameters = 4427,
CapabilitySubgroupVoteKHR = 4431,
CapabilityStorageBuffer16BitAccess = 4433,
CapabilityStorageUniformBufferBlock16 = 4433,
CapabilityStorageUniform16 = 4434,
CapabilityUniformAndStorageBuffer16BitAccess = 4434,
CapabilityStoragePushConstant16 = 4435,
CapabilityStorageInputOutput16 = 4436,
CapabilityDeviceGroup = 4437,
CapabilityMultiView = 4439,
CapabilityVariablePointersStorageBuffer = 4441,
CapabilityVariablePointers = 4442,
CapabilityAtomicStorageOps = 4445,
CapabilitySampleMaskPostDepthCoverage = 4447,
CapabilityImageGatherBiasLodAMD = 5009,
CapabilityStencilExportEXT = 5013,
CapabilitySampleMaskOverrideCoverageNV = 5249,
CapabilityGeometryShaderPassthroughNV = 5251,
CapabilityShaderViewportIndexLayerEXT = 5254,
CapabilityShaderViewportIndexLayerNV = 5254,
CapabilityShaderViewportMaskNV = 5255,
CapabilityShaderStereoViewNV = 5259,
@ -932,6 +953,14 @@ enum Op {
OpSubgroupAnyKHR = 4429,
OpSubgroupAllEqualKHR = 4430,
OpSubgroupReadInvocationKHR = 4432,
OpGroupIAddNonUniformAMD = 5000,
OpGroupFAddNonUniformAMD = 5001,
OpGroupFMinNonUniformAMD = 5002,
OpGroupUMinNonUniformAMD = 5003,
OpGroupSMinNonUniformAMD = 5004,
OpGroupFMaxNonUniformAMD = 5005,
OpGroupUMaxNonUniformAMD = 5006,
OpGroupSMaxNonUniformAMD = 5007,
OpMax = 0x7fffffff,
};

View File

@ -65,6 +65,14 @@ const Id NoResult = 0;
const Id NoType = 0;
const Decoration NoPrecision = DecorationMax;
#ifdef __GNUC__
# define POTENTIALLY_UNUSED __attribute__((unused))
#else
# define POTENTIALLY_UNUSED
#endif
POTENTIALLY_UNUSED
const MemorySemanticsMask MemorySemanticsAllMemory =
(MemorySemanticsMask)(MemorySemanticsSequentiallyConsistentMask |
MemorySemanticsUniformMemoryMask |
@ -87,7 +95,6 @@ public:
void addImmediateOperand(unsigned int immediate) { operands.push_back(immediate); }
void addStringOperand(const char* str)
{
originalString = str;
unsigned int word;
char* wordString = (char*)&word;
char* wordPtr = wordString;
@ -120,7 +127,6 @@ public:
Id getTypeId() const { return typeId; }
Id getIdOperand(int op) const { return operands[op]; }
unsigned int getImmediateOperand(int op) const { return operands[op]; }
const char* getStringOperand() const { return originalString.c_str(); }
// Write out the binary form.
void dump(std::vector<unsigned int>& out) const
@ -151,7 +157,6 @@ protected:
Id typeId;
Op opCode;
std::vector<Id> operands;
std::string originalString; // could be optimized away; convenience for getting string operand
Block* block;
};

View File

@ -1,14 +1,13 @@
add_library(glslang-default-resource-limits
${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp
)
${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp)
set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang)
set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON)
target_include_directories(glslang-default-resource-limits
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PUBLIC ${PROJECT_SOURCE_DIR}
)
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PUBLIC ${PROJECT_SOURCE_DIR})
set(SOURCES StandAlone.cpp)
set(SOURCES StandAlone.cpp DirStackFileIncluder.h)
set(REMAPPER_SOURCES spirv-remap.cpp)
add_executable(glslangValidator ${SOURCES})
@ -24,7 +23,6 @@ set(LIBRARIES
SPVRemapper
glslang-default-resource-limits)
if(WIN32)
set(LIBRARIES ${LIBRARIES} psapi)
elseif(UNIX)
@ -40,8 +38,10 @@ if(WIN32)
source_group("Source" FILES ${SOURCES})
endif(WIN32)
install(TARGETS glslangValidator
RUNTIME DESTINATION bin)
if(ENABLE_GLSLANG_INSTALL)
install(TARGETS glslangValidator
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
install(TARGETS spirv-remap
RUNTIME DESTINATION bin)
install(TARGETS spirv-remap
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif(ENABLE_GLSLANG_INSTALL)

View File

@ -0,0 +1,141 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2017 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 3Dlabs Inc. Ltd. 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.
//
#pragma once
#include <vector>
#include <string>
#include <fstream>
#include <algorithm>
#include "./../glslang/Public/ShaderLang.h"
// Default include class for normal include convention of search backward
// through the stack of active include paths (for nested includes).
// Can be overridden to customize.
class DirStackFileIncluder : public glslang::TShader::Includer {
public:
DirStackFileIncluder() : externalLocalDirectoryCount(0) { }
virtual IncludeResult* includeLocal(const char* headerName,
const char* includerName,
size_t inclusionDepth) override
{
return readLocalPath(headerName, includerName, (int)inclusionDepth);
}
virtual IncludeResult* includeSystem(const char* headerName,
const char* /*includerName*/,
size_t /*inclusionDepth*/) override
{
return readSystemPath(headerName);
}
// Externally set directories. E.g., from a command-line -I<dir>.
// - Most-recently pushed are checked first.
// - All these are checked after the parse-time stack of local directories
// is checked.
// - This only applies to the "local" form of #include.
// - Makes its own copy of the path.
virtual void pushExternalLocalDirectory(const std::string& dir)
{
directoryStack.push_back(dir);
externalLocalDirectoryCount = (int)directoryStack.size();
}
virtual void releaseInclude(IncludeResult* result) override
{
if (result != nullptr) {
delete [] static_cast<tUserDataElement*>(result->userData);
delete result;
}
}
virtual ~DirStackFileIncluder() override { }
protected:
typedef char tUserDataElement;
std::vector<std::string> directoryStack;
int externalLocalDirectoryCount;
// Search for a valid "local" path based on combining the stack of include
// directories and the nominal name of the header.
virtual IncludeResult* readLocalPath(const char* headerName, const char* includerName, int depth)
{
// Discard popped include directories, and
// initialize when at parse-time first level.
directoryStack.resize(depth + externalLocalDirectoryCount);
if (depth == 1)
directoryStack.back() = getDirectory(includerName);
// Find a directory that works, using a reverse search of the include stack.
for (auto it = directoryStack.rbegin(); it != directoryStack.rend(); ++it) {
std::string path = *it + '/' + headerName;
std::replace(path.begin(), path.end(), '\\', '/');
std::ifstream file(path, std::ios_base::binary | std::ios_base::ate);
if (file) {
directoryStack.push_back(getDirectory(path));
return newIncludeResult(path, file, (int)file.tellg());
}
}
return nullptr;
}
// Search for a valid <system> path.
// Not implemented yet; returning nullptr signals failure to find.
virtual IncludeResult* readSystemPath(const char* /*headerName*/) const
{
return nullptr;
}
// Do actual reading of the file, filling in a new include result.
virtual IncludeResult* newIncludeResult(const std::string& path, std::ifstream& file, int length) const
{
char* content = new tUserDataElement [length];
file.seekg(0, file.beg);
file.read(content, length);
return new IncludeResult(path, content, length, content);
}
// If no path markers, return current working directory.
// Otherwise, strip file name and return path leading up to it.
virtual std::string getDirectory(const std::string path) const
{
size_t last = path.find_last_of("/\\");
return last == std::string::npos ? "." : path.substr(0, last);
}
};

File diff suppressed because it is too large Load Diff

View File

@ -36,8 +36,9 @@
#define WORKLIST_H_INCLUDED
#include "../glslang/OSDependent/osinclude.h"
#include <string>
#include <list>
#include <mutex>
#include <string>
namespace glslang {
@ -58,24 +59,19 @@ namespace glslang {
void add(TWorkItem* item)
{
GetGlobalLock();
std::lock_guard<std::mutex> guard(mutex);
worklist.push_back(item);
ReleaseGlobalLock();
}
bool remove(TWorkItem*& item)
{
GetGlobalLock();
std::lock_guard<std::mutex> guard(mutex);
if (worklist.empty())
return false;
item = worklist.front();
worklist.pop_front();
ReleaseGlobalLock();
return true;
}
@ -90,6 +86,7 @@ namespace glslang {
}
protected:
std::mutex mutex;
std::list<TWorkItem*> worklist;
};

View File

@ -0,0 +1,41 @@
#version 100
#extension GL_OES_EGL_image_external : enable
uniform samplerExternalOES sExt;
precision mediump samplerExternalOES;
uniform samplerExternalOES mediumExt;
uniform highp samplerExternalOES highExt;
void main()
{
texture2D(sExt, vec2(0.2));
texture2D(mediumExt, vec2(0.2));
texture2D(highExt, vec2(0.2));
texture2DProj(sExt, vec3(0.3));
texture2DProj(sExt, vec4(0.3));
int lod = 0;
highp float bias = 0.01;
textureSize(sExt, lod); // ERROR
texture(sExt, vec2(0.2)); // ERROR
texture(sExt, vec2(0.2), bias); // ERROR
textureProj(sExt, vec3(0.2)); // ERROR
textureProj(sExt, vec3(0.2), bias); // ERROR
textureProj(sExt, vec4(0.2)); // ERROR
textureProj(sExt, vec4(0.2), bias); // ERROR
texelFetch(sExt, ivec2(4), lod); // ERROR
texture3D(sExt, vec3(0.3)); // ERROR
texture2DProjLod(sExt, vec3(0.3), 0.3); // ERROR
texture(sExt, vec3(0.3)); // ERROR
textureProjLod(sExt, vec3(0.3), 0.3); // ERROR
}
#extension GL_OES_EGL_image_external : disable
#extension GL_OES_EGL_image_external_essl3 : enable
uniform samplerExternalOES badExt; // ERROR
#extension GL_OES_EGL_image_external_essl3 : disable
uniform samplerExternalOES badExt; // ERROR

View File

@ -184,4 +184,21 @@ void fooDeeparray()
yp = y;
xp = y; // ERROR, wrong size
yp = x; // ERROR, wrong size
}
layout(num_views = 2) in; // ERROR, no extension
void mwErr()
{
gl_ViewID_OVR; // ERROR, no extension
}
#extension GL_OVR_multiview : enable
layout(num_views = 2) uniform float mwUniform; // ERROR, must be global
layout(num_views = 2) in; // OK
void mwOk()
{
gl_ViewID_OVR;
}

View File

@ -0,0 +1,41 @@
#version 300 es
#extension GL_OES_EGL_image_external_essl3 : enable
uniform samplerExternalOES sExt;
precision mediump samplerExternalOES;
uniform samplerExternalOES mediumExt;
uniform highp samplerExternalOES highExt;
void main()
{
texture2D(sExt, vec2(0.2)); // ERROR
texture2D(mediumExt, vec2(0.2)); // ERROR
texture2D(highExt, vec2(0.2)); // ERROR
texture2DProj(sExt, vec3(0.3)); // ERROR
texture2DProj(sExt, vec4(0.3)); // ERROR
int lod = 0;
highp float bias = 0.01;
textureSize(sExt, lod);
texture(sExt, vec2(0.2));
texture(sExt, vec2(0.2), bias);
textureProj(sExt, vec3(0.2));
textureProj(sExt, vec3(0.2), bias);
textureProj(sExt, vec4(0.2));
textureProj(sExt, vec4(0.2), bias);
texelFetch(sExt, ivec2(4), lod);
texture3D(sExt, vec3(0.3)); // ERROR
texture2DProjLod(sExt, vec3(0.3), 0.3); // ERROR
texture(sExt, vec3(0.3)); // ERROR
textureProjLod(sExt, vec3(0.3), 0.3); // ERROR
}
#extension GL_OES_EGL_image_external_essl3 : disable
#extension GL_OES_EGL_image_external : enable
uniform samplerExternalOES badExt; // ERROR
#extension GL_OES_EGL_image_external : disable
uniform samplerExternalOES badExt; // ERROR

View File

@ -4,7 +4,7 @@ layout(local_size_x = 2) in;
layout(local_size_x = 16) in; // ERROR, changing
layout(local_size_z = 4096) in; // ERROR, too large
layout(local_size_x = 2) in;
layout(local_size_y = 0) in; // ERROR, 0 not allowed
const int total = gl_MaxComputeWorkGroupCount.y
+ gl_MaxComputeUniformComponents
+ gl_MaxComputeTextureImageUnits

View File

@ -0,0 +1,5 @@
#version 320 es
void main()
{
}

View File

@ -0,0 +1,225 @@
#version 320 es
out outbname { int a; } outbinst; // ERROR, not out block in fragment shader
in inbname {
int a;
vec4 v;
struct { int b; } s; // ERROR, nested struct definition
} inbinst;
in inbname2 {
layout(location = 12) int aAnon;
layout(location = 13) centroid in vec4 vAnon;
};
in layout(location = 13) vec4 aliased; // ERROR, aliased
in inbname2 { // ERROR, reuse of block name
int aAnon;
centroid in vec4 vAnon;
};
in badmember { // ERROR, aAnon already in global scope
int aAnon;
};
int inbname; // ERROR, redefinition of block name
vec4 vAnon; // ERROR, anon in global scope; redefinition
in arrayed {
float f;
} arrayedInst[4];
uniform int i;
void fooIO()
{
vec4 v = inbinst.v + vAnon;
v *= arrayedInst[2].f;
v *= arrayedInst[i].f;
}
in vec4 gl_FragCoord;
layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; // ERROR, non-ES
layout(early_fragment_tests) in;
out float gl_FragDepth;
layout(depth_any) out float gl_FragDepth; // ERROR, non-ES
void main()
{
gl_FragDepth = 0.2; // ERROR, early_fragment_tests declared
bool f = gl_FrontFacing;
}
out float gl_FragDepth;
void foo_GS()
{
highp int l = gl_Layer;
highp int p = gl_PrimitiveID;
}
in vec2 inf, ing;
uniform ivec2 offsets[4];
uniform sampler2D sArray[4];
uniform int sIndex;
layout(binding = 0) uniform atomic_uint auArray[2];
uniform ubName { int i; } ubInst[4];
buffer bbName { int i; } bbInst[4];
highp uniform writeonly image2D iArray[5];
const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4));
void pfoo()
{
precise vec2 h;
h = fma(inf, ing, h);
textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf));
textureGatherOffsets(sArray[0], vec2(0.1), constOffsets);
textureGatherOffsets(sArray[0], vec2(0.1), offsets); // ERROR, offset not constant
}
precision highp imageCubeArray ;
precision highp iimageCubeArray ;
precision highp uimageCubeArray ;
precision highp samplerCubeArray ;
precision highp samplerCubeArrayShadow;
precision highp isamplerCubeArray ;
precision highp usamplerCubeArray ;
uniform writeonly imageCubeArray CA1;
uniform writeonly iimageCubeArray CA2;
uniform writeonly uimageCubeArray CA3;
#ifdef GL_EXT_texture_cube_map_array
uniform samplerCubeArray CA4;
uniform samplerCubeArrayShadow CA5;
uniform isamplerCubeArray CA6;
uniform usamplerCubeArray CA7;
#endif
void CAT()
{
highp vec4 b4 = texture(CA4, vec4(0.5), 0.24);
highp ivec4 b6 = texture(CA6, vec4(0.5), 0.26);
highp uvec4 b7 = texture(CA7, vec4(0.5), 0.27);
}
void goodSample()
{
lowp int a1 = gl_SampleID;
mediump vec2 a2 = gl_SamplePosition;
highp int a3 = gl_SampleMaskIn[0];
gl_SampleMask[0] = a3;
mediump int n1 = gl_MaxSamples;
mediump int n2 = gl_NumSamples;
}
uniform layout(r32f) highp image2D im2Df;
uniform layout(r32ui) highp uimage2D im2Du;
uniform layout(r32i) highp iimage2D im2Di;
uniform ivec2 P;
uniform layout(rgba32f) highp image2D badIm2Df; // ERROR, needs readonly or writeonly
uniform layout(rgba8ui) highp uimage2D badIm2Du; // ERROR, needs readonly or writeonly
uniform layout(rgba16i) highp iimage2D badIm2Di; // ERROR, needs readonly or writeonly
void goodImageAtom()
{
float datf;
int dati;
uint datu;
imageAtomicAdd( im2Di, P, dati);
imageAtomicAdd( im2Du, P, datu);
imageAtomicMin( im2Di, P, dati);
imageAtomicMin( im2Du, P, datu);
imageAtomicMax( im2Di, P, dati);
imageAtomicMax( im2Du, P, datu);
imageAtomicAnd( im2Di, P, dati);
imageAtomicAnd( im2Du, P, datu);
imageAtomicOr( im2Di, P, dati);
imageAtomicOr( im2Du, P, datu);
imageAtomicXor( im2Di, P, dati);
imageAtomicXor( im2Du, P, datu);
imageAtomicExchange(im2Di, P, dati);
imageAtomicExchange(im2Du, P, datu);
imageAtomicExchange(im2Df, P, datf);
imageAtomicCompSwap(im2Di, P, 3, dati);
imageAtomicCompSwap(im2Du, P, 5u, datu);
imageAtomicMax(badIm2Di, P, dati); // ERROR, not an allowed layout() on the image
imageAtomicMax(badIm2Du, P, datu); // ERROR, not an allowed layout() on the image
imageAtomicExchange(badIm2Df, P, datf); // ERROR, not an allowed layout() on the image
}
centroid out vec4 colorCentroidBad; // ERROR
flat out vec4 colorBadFlat; // ERROR
smooth out vec4 colorBadSmooth; // ERROR
noperspective out vec4 colorBadNo; // ERROR
flat centroid in vec2 colorfc;
in float scalarIn;
sample in vec4 colorSampIn;
sample out vec4 colorSampleBad; // ERROR
flat sample in vec4 colorfsi;
sample in vec3 sampInArray[4];
void interp()
{
float res;
vec2 res2;
vec3 res3;
vec4 res4;
res2 = interpolateAtCentroid(colorfc);
res4 = interpolateAtCentroid(colorSampIn);
res4 = interpolateAtCentroid(colorfsi);
res = interpolateAtCentroid(scalarIn);
res3 = interpolateAtCentroid(sampInArray); // ERROR
res3 = interpolateAtCentroid(sampInArray[2]);
res2 = interpolateAtCentroid(sampInArray[2].xy); // ERROR
res3 = interpolateAtSample(sampInArray, 1); // ERROR
res3 = interpolateAtSample(sampInArray[i], 0);
res2 = interpolateAtSample(sampInArray[2].xy, 2); // ERROR
res = interpolateAtSample(scalarIn, 1);
res3 = interpolateAtOffset(sampInArray, vec2(0.2)); // ERROR
res3 = interpolateAtOffset(sampInArray[2], vec2(0.2));
res2 = interpolateAtOffset(sampInArray[2].xy, vec2(0.2)); // ERROR, no swizzle
res = interpolateAtOffset(scalarIn + scalarIn, vec2(0.2)); // ERROR, no binary ops other than dereference
res = interpolateAtOffset(scalarIn, vec2(0.2));
float f;
res = interpolateAtCentroid(f); // ERROR, not interpolant
res4 = interpolateAtSample(outp, 0); // ERROR, not interpolant
}
layout(blend_support_multiply) out;
layout(blend_support_screen) out;
layout(blend_support_overlay) out;
layout(blend_support_darken, blend_support_lighten) out;
layout(blend_support_colordodge) layout(blend_support_colorburn) out;
layout(blend_support_hardlight) out;
layout(blend_support_softlight) out;
layout(blend_support_difference) out;
layout(blend_support_exclusion) out;
layout(blend_support_hsl_hue) out;
layout(blend_support_hsl_saturation) out;
layout(blend_support_hsl_color) out;
layout(blend_support_hsl_luminosity) out;
layout(blend_support_all_equations) out;
layout(blend_support_hsl_luminosity) out; // okay to repeat
layout(blend_support_hsl_luminosity) in; // ERROR, only on "out"
layout(blend_support_hsl_luminosity) out vec4; // ERROR, only on standalone
layout(blend_support_hsl_luminosity) out vec4 badout; // ERROR, only on standalone
layout(blend_support_hsl_luminosity) struct badS {int i;}; // ERROR, only on standalone
layout(blend_support_hsl_luminosity) void blendFoo() { } // ERROR, only on standalone
void blendFoo(layout(blend_support_hsl_luminosity) vec3 v) { } // ERROR, only on standalone
layout(blend_support_flizbit) out; // ERROR, no flizbit
out vec4 outAA[2][2]; // ERROR

View File

@ -0,0 +1,134 @@
#version 320 es
precision mediump float;
in fromVertex {
in vec3 color;
} fromV[];
in vec4 nonBlockUnsized[];
out toFragment {
out vec3 color;
} toF;
out fromVertex { // okay to reuse a block name for another block name
vec3 color;
};
out fooB { // ERROR, cannot reuse block name as block instance
vec2 color;
} fromVertex;
int fromVertex; // ERROR, cannot reuse a block name for something else
out fooC { // ERROR, cannot have same name for block and instance name
vec2 color;
} fooC;
void main()
{
EmitVertex();
EndPrimitive();
EmitStreamVertex(1); // ERROR
EndStreamPrimitive(0); // ERROR
color = fromV[0].color;
gl_ClipDistance[3] = // ERROR, no ClipDistance
gl_in[1].gl_ClipDistance[2]; // ERROR, no ClipDistance
gl_Position = gl_in[0].gl_Position;
gl_PrimitiveID = gl_PrimitiveIDIn;
gl_Layer = 2;
}
layout(stream = 4) out vec4 ov4; // ERROR, no streams
layout(line_strip, points, triangle_strip, points, triangle_strip) out; // just means triangle_strip"
out ooutb { vec4 a; } ouuaa6;
layout(max_vertices = 200) out;
layout(max_vertices = 300) out; // ERROR, too big
void foo(layout(max_vertices = 4) int a) // ERROR
{
ouuaa6.a = vec4(1.0);
}
layout(line_strip, points, triangle_strip, points) out; // ERROR, changing output primitive
layout(line_strip, points) out; // ERROR, changing output primitive
layout(triangle_strip) in; // ERROR, not an input primitive
layout(triangle_strip) uniform; // ERROR
layout(triangle_strip) out vec4 badv4; // ERROR, not on a variable
layout(triangle_strip) in vec4 bad2v4[]; // ERROR, not on a variable or input
layout(invocations = 3) out outbn { int a; }; // 2 ERROR, not on a block, not until 4.0
out outbn2 {
layout(invocations = 3) int a; // 2 ERRORs, not on a block member, not until 4.0
layout(max_vertices = 3) int b; // ERROR, not on a block member
layout(triangle_strip) int c; // ERROR, not on a block member
} outbi;
layout(lines) out; // ERROR, not on output
layout(lines_adjacency) in;
layout(triangles) in; // ERROR, can't change it
layout(triangles_adjacency) in; // ERROR, can't change it
layout(invocations = 4) in;
in sameName {
int a15;
} insn[];
out sameName {
float f15;
};
uniform sameName {
bool b15;
};
const int summ = gl_MaxVertexAttribs +
gl_MaxGeometryInputComponents +
gl_MaxGeometryOutputComponents +
gl_MaxGeometryImageUniforms +
gl_MaxGeometryTextureImageUnits +
gl_MaxGeometryOutputVertices +
gl_MaxGeometryTotalOutputComponents +
gl_MaxGeometryUniformComponents +
gl_MaxGeometryAtomicCounters +
gl_MaxGeometryAtomicCounterBuffers +
gl_MaxVertexTextureImageUnits +
gl_MaxCombinedTextureImageUnits +
gl_MaxTextureImageUnits +
gl_MaxDrawBuffers;
void fooe1()
{
gl_ViewportIndex; // ERROR, not in ES
gl_MaxViewports; // ERROR, not in ES
insn.length(); // 4: lines_adjacency
int inv = gl_InvocationID;
}
in vec4 explArray[4];
in vec4 explArrayBad[5]; // ERROR, wrong size
in vec4 nonArrayed; // ERROR, not an array
flat out vec3 myColor1;
centroid out vec3 myColor2;
centroid in vec3 centr[];
sample out vec4 perSampleColor; // ERROR without sample extensions
layout(max_vertices = 200) out; // matching redecl
layout(location = 7, component = 2) in float comp[]; // ERROR, es has no component
void notHere()
{
gl_MaxGeometryVaryingComponents; // ERROR, not in ES
gl_VerticesIn; // ERROR, not in ES
}
void pointSize2()
{
highp float ps = gl_in[3].gl_PointSize; // ERROR, need extension
gl_PointSize = ps; // ERROR, need extension
}

View File

@ -0,0 +1,150 @@
#version 320 es
layout(vertices = 4) out;
out int outa[gl_out.length()];
layout(quads) in; // ERROR
layout(ccw) out; // ERROR
layout(fractional_even_spacing) in; // ERROR
patch in vec4 patchIn; // ERROR
patch out vec4 patchOut;
void main()
{
barrier();
int a = gl_MaxTessControlInputComponents +
gl_MaxTessControlOutputComponents +
gl_MaxTessControlTextureImageUnits +
gl_MaxTessControlUniformComponents +
gl_MaxTessControlTotalOutputComponents;
vec4 p = gl_in[1].gl_Position;
float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension
float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES
int pvi = gl_PatchVerticesIn;
int pid = gl_PrimitiveID;
int iid = gl_InvocationID;
gl_out[gl_InvocationID].gl_Position = p;
gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension
gl_out[gl_InvocationID].gl_ClipDistance[1] = cd; // ERROR, not in ES
gl_TessLevelOuter[3] = 3.2;
gl_TessLevelInner[1] = 1.3;
if (a > 10)
barrier(); // ERROR
else
barrier(); // ERROR
barrier();
do {
barrier(); // ERROR
} while (a > 10);
switch (a) {
default:
barrier(); // ERROR
break;
}
a < 12 ? a : (barrier(), a); // ERROR
{
barrier();
}
return;
barrier(); // ERROR
}
layout(vertices = 4) in; // ERROR, not on in
layout(vertices = 5) out; // ERROR, changing #
void foo()
{
gl_out[4].gl_Position; // ERROR, out of range
barrier(); // ERROR, not in main
}
in vec2 ina; // ERROR, not array
in vec2 inb[];
in vec2 inc[18]; // ERROR, wrong size
in vec2 ind[gl_MaxPatchVertices];
patch out float implA[]; // ERROR, not sized
#extension GL_ARB_separate_shader_objects : enable
layout(location = 3) in vec4 ivla[];
layout(location = 4) in vec4 ivlb[];
layout(location = 4) in vec4 ivlc[]; // ERROR, overlapping
layout(location = 3) out vec4 ovla[];
layout(location = 4) out vec4 ovlb[];
layout(location = 4) out vec4 ovlc[]; // ERROR, overlapping
patch out pinbn {
int a;
} pinbi;
centroid out vec3 myColor2[];
centroid in vec3 centr[];
sample out vec4 perSampleColor[];
layout(vertices = 4) out float badlay[]; // ERROR, not on a variable
out float misSized[5]; // ERROR, size doesn't match
out float okaySize[4];
void pointSize2()
{
float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension
gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension
}
precise vec3 pv3;
void goodfoop()
{
precise float d;
pv3 *= pv3;
pv3 = fma(pv3, pv3, pv3);
d = fma(d, d, d);
}
void bb()
{
gl_BoundingBoxOES[0] = vec4(0.0);
gl_BoundingBoxOES[1] = vec4(1.0);
gl_BoundingBoxOES[2] = vec4(2.0); // ERROR, overflow
}
out patch badpatchBName { // ERROR, array size required
float f;
} badpatchIName[];
out patch patchBName {
float f;
} patchIName[4];
void outputtingOutparam(out int a)
{
a = 2;
}
void outputting()
{
outa[gl_InvocationID] = 2;
outa[1] = 2; // ERROR, not gl_InvocationID
gl_out[0].gl_Position = vec4(1.0); // ERROR, not gl_InvocationID
outa[1];
gl_out[0];
outputtingOutparam(outa[0]); // ERROR, not gl_InvocationID
outputtingOutparam(outa[gl_InvocationID]);
patchIName[1].f = 3.14;
outa[(gl_InvocationID)] = 2;
}

View File

@ -0,0 +1,114 @@
#version 320 es
layout(vertices = 4) out; // ERROR
layout(quads, cw) in;
layout(triangles) in; // ERROR
layout(isolines) in; // ERROR
layout(ccw) in; // ERROR
layout(cw) in;
layout(fractional_odd_spacing) in;
layout(equal_spacing) in; // ERROR
layout(fractional_even_spacing) in; // ERROR
layout(point_mode) in;
patch in vec4 patchIn;
patch out vec4 patchOut; // ERROR
void main()
{
barrier(); // ERROR
int a = gl_MaxTessEvaluationInputComponents +
gl_MaxTessEvaluationOutputComponents +
gl_MaxTessEvaluationTextureImageUnits +
gl_MaxTessEvaluationUniformComponents +
gl_MaxTessPatchComponents +
gl_MaxPatchVertices +
gl_MaxTessGenLevel;
vec4 p = gl_in[1].gl_Position;
float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension
float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES
int pvi = gl_PatchVerticesIn;
int pid = gl_PrimitiveID;
vec3 tc = gl_TessCoord;
float tlo = gl_TessLevelOuter[3];
float tli = gl_TessLevelInner[1];
gl_Position = p;
gl_PointSize = ps; // ERROR, need point_size extension
gl_ClipDistance[2] = cd; // ERROR, not in ES
}
smooth patch in vec4 badp1; // ERROR
flat patch in vec4 badp2; // ERROR
noperspective patch in vec4 badp3; // ERROR
patch sample in vec3 badp4; // ERROR
#extension GL_ARB_separate_shader_objects : enable
in gl_PerVertex // ERROR, no size
{
vec4 gl_Position;
} gl_in[];
in gl_PerVertex // ERROR, second redeclaration of gl_in
{
vec4 gl_Position;
} gl_in[];
layout(quads, cw) out; // ERROR
layout(triangles) out; // ERROR
layout(isolines) out; // ERROR
layout(cw) out; // ERROR
layout(fractional_odd_spacing) out; // ERROR
layout(equal_spacing) out; // ERROR
layout(fractional_even_spacing) out; // ERROR
layout(point_mode) out; // ERROR
in vec2 ina; // ERROR, not array
in vec2 inb[];
in vec2 inc[18]; // ERROR, wrong size
in vec2 ind[gl_MaxPatchVertices];
in testbla { // ERROR, not array
int f;
} bla;
in testblb {
int f;
} blb[];
in testblc { // ERROR wrong size
int f;
} blc[18];
in testbld {
int f;
} bld[gl_MaxPatchVertices];
layout(location = 23) in vec4 ivla[];
layout(location = 24) in vec4 ivlb[];
layout(location = 24) in vec4 ivlc[]; // ERROR, overlap
layout(location = 23) out vec4 ovla[2];
layout(location = 24) out vec4 ovlb[2]; // ERROR, overlap
in float gl_TessLevelOuter[4]; // ERROR, can't redeclare
patch in pinbn {
int a;
} pinbi;
centroid out vec3 myColor2;
centroid in vec3 centr[];
sample out vec4 perSampleColor;
void bbbad()
{
gl_BoundingBoxOES; // ERROR, wrong stage
}

View File

@ -0,0 +1,255 @@
#version 320 es
out outbname {
int a;
out vec4 v;
highp sampler2D s; // ERROR, opaque type
} outbinst;
out outbname2 {
layout(location = 12) int aAnon;
layout(location = 13) vec4 vAnon;
};
layout(location = 12) out highp int aliased; // ERROR, aliasing location
in inbname { int a; } inbinst; // ERROR, no in block in vertex shader
out gl_PerVertex { // ERROR, has extra member
highp vec4 gl_Position;
highp vec4 t;
};
void main()
{
int sum = gl_VertexID +
gl_InstanceID;
gl_Position = vec4(1.0);
gl_PointSize = 2.0; // ERROR, removed by redeclaration
}
out gl_PerVertex { // ERROR, already used and already redeclared
highp vec4 gl_Position;
highp vec4 t;
};
smooth out smo { // ERROR, no smooth on a block
int i;
} smon;
flat out fmo { // ERROR, no flat on a block
int i;
} fmon;
centroid out cmo { // ERROR, no centroid on a block
int i;
} cmon;
invariant out imo { // ERROR, no invariant on a block
int i;
} imon;
in vec2 inf, ing;
uniform ivec2 offsets[4];
uniform sampler2D sArray[4];
uniform int sIndex;
layout(binding = 0) uniform atomic_uint auArray[2];
uniform ubName { int i; } ubInst[4];
buffer bbName { int i; } bbInst[4];
highp uniform writeonly image2D iArray[5];
const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4));
void pfoo()
{
precise vec2 h;
h = fma(inf, ing, h);
sArray[sIndex + 1];
ubInst[sIndex + 1];
bbInst[sIndex - 2]; // ERROR, still not supported
iArray[2];
iArray[sIndex - 2];
textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf));
textureGatherOffsets(sArray[0], vec2(0.1), constOffsets);
textureGatherOffsets(sArray[0], vec2(0.1), offsets); // ERROR, offset not constant
}
uniform samplerBuffer noPreSamp1; // ERROR, no default precision
uniform isamplerBuffer noPreSamp2; // ERROR, no default precision
uniform usamplerBuffer noPreSamp3; // ERROR, no default precision
uniform writeonly imageBuffer noPreSamp4; // ERROR, no default precision
uniform writeonly iimageBuffer noPreSamp5; // ERROR, no default precision
uniform writeonly uimageBuffer noPreSamp6; // ERROR, no default precision
precision highp samplerBuffer;
precision highp isamplerBuffer;
precision highp usamplerBuffer;
precision highp imageBuffer;
precision highp iimageBuffer;
precision highp uimageBuffer;
#ifdef GL_OES_texture_buffer
uniform samplerBuffer bufSamp1;
uniform isamplerBuffer bufSamp2;
uniform usamplerBuffer bufSamp3;
#endif
#ifdef GL_EXT_texture_buffer
uniform writeonly imageBuffer bufSamp4;
uniform writeonly iimageBuffer bufSamp5;
uniform writeonly uimageBuffer bufSamp6;
#endif
void bufferT()
{
highp int s1 = textureSize(bufSamp1);
highp int s2 = textureSize(bufSamp2);
highp int s3 = textureSize(bufSamp3);
highp int s4 = imageSize(bufSamp4);
highp int s5 = imageSize(bufSamp5);
highp int s6 = imageSize(bufSamp6);
highp vec4 f1 = texelFetch(bufSamp1, s1);
highp ivec4 f2 = texelFetch(bufSamp2, s2);
highp uvec4 f3 = texelFetch(bufSamp3, s3);
}
uniform writeonly imageCubeArray noPreCA1; // ERROR, no default precision
uniform writeonly iimageCubeArray noPreCA2; // ERROR, no default precision
uniform writeonly uimageCubeArray noPreCA3; // ERROR, no default precision
uniform samplerCubeArray noPreCA4; // ERROR, no default precision
uniform samplerCubeArrayShadow noPreCA5; // ERROR, no default precision
uniform isamplerCubeArray noPreCA6; // ERROR, no default precision
uniform usamplerCubeArray noPreCA7; // ERROR, no default precision
precision highp imageCubeArray ;
precision highp iimageCubeArray ;
precision highp uimageCubeArray ;
precision highp samplerCubeArray ;
precision highp samplerCubeArrayShadow;
precision highp isamplerCubeArray ;
precision highp usamplerCubeArray ;
uniform writeonly imageCubeArray CA1;
uniform writeonly iimageCubeArray CA2;
uniform writeonly uimageCubeArray CA3;
layout(rgba16f) uniform readonly imageCubeArray rCA1;
layout(rgba32i) uniform readonly iimageCubeArray rCA2;
layout(r32ui) uniform readonly uimageCubeArray rCA3;
#ifdef GL_OES_texture_cube_map_array
uniform samplerCubeArray CA4;
uniform samplerCubeArrayShadow CA5;
uniform isamplerCubeArray CA6;
uniform usamplerCubeArray CA7;
#endif
void CAT()
{
highp ivec3 s4 = textureSize(CA4, 1);
highp ivec3 s5 = textureSize(CA5, 1);
highp ivec3 s6 = textureSize(CA6, 1);
highp ivec3 s7 = textureSize(CA7, 1);
highp vec4 t4 = texture(CA4, vec4(0.5));
highp float t5 = texture(CA5, vec4(0.5), 3.0);
highp ivec4 t6 = texture(CA6, vec4(0.5));
highp uvec4 t7 = texture(CA7, vec4(0.5));
highp vec4 L4 = textureLod(CA4, vec4(0.5), 0.24);
highp ivec4 L6 = textureLod(CA6, vec4(0.5), 0.26);
highp uvec4 L7 = textureLod(CA7, vec4(0.5), 0.27);
highp vec4 g4 = textureGrad(CA4, vec4(0.5), vec3(0.1), vec3(0.2));
highp ivec4 g6 = textureGrad(CA6, vec4(0.5), vec3(0.1), vec3(0.2));
highp uvec4 g7 = textureGrad(CA7, vec4(0.5), vec3(0.1), vec3(0.2));
highp vec4 gath4 = textureGather(CA4, vec4(0.5));
highp vec4 gathC4 = textureGather(CA4, vec4(0.5), 2);
highp ivec4 gath6 = textureGather(CA6, vec4(0.5));
highp ivec4 gathC6 = textureGather(CA6, vec4(0.5), 1);
highp uvec4 gath7 = textureGather(CA7, vec4(0.5));
highp uvec4 gathC7 = textureGather(CA7, vec4(0.5), 0);
highp vec4 gath5 = textureGather(CA5, vec4(0.5), 2.5);
highp ivec3 s1 = imageSize(CA1);
highp ivec3 s2 = imageSize(CA2);
highp ivec3 s3 = imageSize(CA3);
imageStore(CA1, s3, vec4(1));
imageStore(CA2, s3, ivec4(1));
imageStore(CA3, s3, uvec4(1));
highp vec4 cl1 = imageLoad(rCA1, s3);
highp ivec4 cl2 = imageLoad(rCA2, s3);
highp uvec4 cl3 = imageLoad(rCA3, s3);
}
uniform sampler2DMSArray noPrec2DMS; // ERROR, no default
uniform isampler2DMSArray noPrec2DMSi; // ERROR, no default
uniform usampler2DMSArray noPrec2DMSu; // ERROR, no default
precision highp sampler2DMSArray;
precision highp isampler2DMSArray;
precision highp usampler2DMSArray;
uniform sampler2DMSArray samp2DMSA;
uniform isampler2DMSArray samp2DMSAi;
uniform usampler2DMSArray samp2DMSAu;
void MSA()
{
vec4 tf = texelFetch(samp2DMSA, ivec3(5), 2);
ivec4 tfi = texelFetch(samp2DMSAi, ivec3(5), 2);
uvec4 tfu = texelFetch(samp2DMSAu, ivec3(5), 2);
ivec3 tfs = textureSize(samp2DMSA);
ivec3 tfsi = textureSize(samp2DMSAi);
ivec3 tfsb = textureSize(samp2DMSAi, 4); // ERROR, no lod
ivec3 tfsu = textureSize(samp2DMSAu);
}
uniform layout(r32f) highp image2D im2Df;
uniform layout(r32ui) highp uimage2D im2Du;
uniform layout(r32i) highp iimage2D im2Di;
uniform ivec2 P;
void goodImageAtom()
{
float datf;
int dati;
uint datu;
imageAtomicAdd( im2Di, P, dati);
imageAtomicAdd( im2Du, P, datu);
imageAtomicMin( im2Di, P, dati);
imageAtomicMin( im2Du, P, datu);
imageAtomicMax( im2Di, P, dati);
imageAtomicMax( im2Du, P, datu);
imageAtomicAnd( im2Di, P, dati);
imageAtomicAnd( im2Du, P, datu);
imageAtomicOr( im2Di, P, dati);
imageAtomicOr( im2Du, P, datu);
imageAtomicXor( im2Di, P, dati);
imageAtomicXor( im2Du, P, datu);
imageAtomicExchange(im2Di, P, dati);
imageAtomicExchange(im2Du, P, datu);
imageAtomicExchange(im2Df, P, datf);
imageAtomicCompSwap(im2Di, P, 3, dati);
imageAtomicCompSwap(im2Du, P, 5u, datu);
}
sample out vec4 colorSample;
flat sample out vec4 colorfsi;
sample out vec3 sampInArray[4];
in vec4 inv4;
void badInterp()
{
interpolateAtCentroid(inv4); // ERROR, wrong stage
interpolateAtSample(inv4, 1); // ERROR, need extension
interpolateAtOffset(inv4, vec2(0.2)); // ERROR, need extension
}

View File

@ -184,10 +184,8 @@ void qlod()
lod = textureQueryLod(sampRect, pf2); // ERROR
}
struct SKeyMem { int precise; } KeyMem; // ERROR, keyword can't be a member
uniform uint uu;
out int iout;
out uint iout;
void bitwiseConv()
{
@ -195,3 +193,9 @@ void bitwiseConv()
iout += uu ^ i;
iout += i | uu;
}
subroutine(subT1, subT2);
subroutine float subT1() { return 1.0; }
subroutine float subT2() { return 1.0; }
struct SKeyMem { int precise; } KeyMem; // ERROR, keyword can't be a member

View File

@ -0,0 +1,2 @@
#version 435
void main() {}

View File

@ -1 +1,6 @@
#version 450 core
layout(local_size_x = 0) in; // ERROR, 0 not allowed
void main()
{
shared float f; // ERROR shared must be global
}

View File

@ -54,3 +54,15 @@ float cull(int i)
{
return (i >= 6) ? gl_CullDistance[5] : gl_CullDistance[i];
}
layout(location = 6) in bName1 {
float f;
layout(location = 7) float g;
mat4 m;
} bInst1;
layout(location = 12) in bName2 {
float f;
layout(location = 13) float g; // ERROR, location on array
} bInst2[3];
layout(early_fragment_tests) in float f; // ERROR, must be standalone

View File

@ -8,7 +8,12 @@ out gl_PerVertex {
float gl_CullDistance[3];
};
layout(triangles) in;
void main()
{
gl_in[3].gl_Position; // ERROR, out of range
gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];
}
layout(points) in float f[3]; // ERROR, must be standalone

View File

@ -12,3 +12,12 @@ void main()
{
gl_out[gl_InvocationID].gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];
}
layout(location = 4) out bName1 {
float f;
layout(location = 5) float g;
} bInst1[2];
layout(location = 6) out bName2 {
float f;
layout(location = 7) float g; // ERROR, location on array
} bInst2[2][3];

View File

@ -12,3 +12,10 @@ void main()
{
gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];
}
layout(equal_spacing) in float f1[]; // ERROR, must be standalone
layout(fractional_even_spacing) in float f2[]; // ERROR, must be standalone
layout(fractional_odd_spacing) in float f3[]; // ERROR, must be standalone
layout(cw) in float f4[]; // ERROR, must be standalone
layout(ccw) in float f5[]; // ERROR, must be standalone
layout(point_mode) in float f6[]; // ERROR, must be standalone

View File

@ -22,7 +22,27 @@ out SA outSA;
struct SS { float f; S s; };
out SS outSS;
layout(binding = 0) uniform atomic_uint aui;
uint ui;
void foo()
{
SS::f;
atomicCounterAdd(aui, ui); // ERROR, need 4.6
atomicCounterSubtract(aui, ui); // ERROR, need 4.6
atomicCounterMin(aui, ui); // ERROR, need 4.6
atomicCounterMax(aui, ui); // ERROR, need 4.6
atomicCounterAnd(aui, ui); // ERROR, need 4.6
atomicCounterOr(aui, ui); // ERROR, need 4.6
atomicCounterXor(aui, ui); // ERROR, need 4.6
atomicCounterExchange(aui, ui); // ERROR, need 4.6
atomicCounterCompSwap(aui, ui, ui); // ERROR, need 4.6
int a = gl_BaseVertex + gl_BaseInstance + gl_DrawID; // ERROR, need 4.6
bool b1;
anyInvocation(b1); // ERROR, need 4.6
allInvocations(b1); // ERROR, need 4.6
allInvocationsEqual(b1); // ERROR, need 4.6
}
; // ERROR: no extraneous semicolons

View File

@ -0,0 +1,17 @@
#version 460 core
struct S {
float f;
vec4 v;
};
in S s;
void main()
{
interpolateAtCentroid(s.v);
bool b1;
b1 = anyInvocation(b1);
b1 = allInvocations(b1);
b1 = allInvocationsEqual(b1);
}

View File

@ -0,0 +1,15 @@
#version 460 core
int i;
; // extraneous semicolon okay
float f;;;
void main()
{
bool b1;
b1 = anyInvocation(b1);
b1 = allInvocations(b1);
b1 = allInvocationsEqual(b1);
}
;
;

View File

@ -0,0 +1 @@
float4 i1;

View File

@ -0,0 +1,50 @@
hlsl.aliasOpaque.frag
WARNING: AST will form illegal SPIR-V; need to transform to legalize
// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 81
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 57
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 37 "gss2"
Name 39 "gss"
Name 43 "gtex"
Name 57 "@entryPointOutput"
Decorate 37(gss2) DescriptorSet 0
Decorate 39(gss) DescriptorSet 0
Decorate 43(gtex) DescriptorSet 0
Decorate 57(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeSampler
8: TypeFloat 32
10: TypeImage 8(float) 2D sampled format:Unknown
12: TypeVector 8(float) 4
25: TypeSampledImage 10
27: TypeVector 8(float) 2
28: 8(float) Constant 1045220557
29: 8(float) Constant 1050253722
30: 27(fvec2) ConstantComposite 28 29
36: TypePointer UniformConstant 6
37(gss2): 36(ptr) Variable UniformConstant
39(gss): 36(ptr) Variable UniformConstant
42: TypePointer UniformConstant 10
43(gtex): 42(ptr) Variable UniformConstant
46: 8(float) Constant 1077936128
56: TypePointer Output 12(fvec4)
57(@entryPointOutput): 56(ptr) Variable Output
4(main): 2 Function None 3
5: Label
68: 6 Load 39(gss)
69: 10 Load 43(gtex)
78: 25 SampledImage 69 68
79: 12(fvec4) ImageSampleImplicitLod 78 30
80: 12(fvec4) VectorTimesScalar 79 46
Store 57(@entryPointOutput) 80
Return
FunctionEnd

View File

@ -0,0 +1,65 @@
hlsl.flattenOpaque.frag
// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 144
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 97
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 38 "tex"
Name 70 "s.s2D"
Name 79 "s2.s2D"
Name 80 "s2.tex"
Name 97 "@entryPointOutput"
Decorate 38(tex) DescriptorSet 0
Decorate 70(s.s2D) DescriptorSet 0
Decorate 79(s2.s2D) DescriptorSet 0
Decorate 80(s2.tex) DescriptorSet 0
Decorate 97(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeSampler
8: TypeFloat 32
9: TypeVector 8(float) 4
14: TypeVector 8(float) 2
21: TypeImage 8(float) 2D sampled format:Unknown
37: TypePointer UniformConstant 21
38(tex): 37(ptr) Variable UniformConstant
41: TypeSampledImage 21
43: 8(float) Constant 1045220557
44: 8(float) Constant 1050253722
45: 14(fvec2) ConstantComposite 43 44
69: TypePointer UniformConstant 6
70(s.s2D): 69(ptr) Variable UniformConstant
79(s2.s2D): 69(ptr) Variable UniformConstant
80(s2.tex): 37(ptr) Variable UniformConstant
96: TypePointer Output 9(fvec4)
97(@entryPointOutput): 96(ptr) Variable Output
4(main): 2 Function None 3
5: Label
109: 6 Load 70(s.s2D)
123: 21 Load 38(tex)
125: 41 SampledImage 123 109
126: 9(fvec4) ImageSampleImplicitLod 125 45
111: 6 Load 70(s.s2D)
128: 21 Load 38(tex)
130: 41 SampledImage 128 111
132: 9(fvec4) ImageSampleImplicitLod 130 45
113: 9(fvec4) FAdd 126 132
114: 6 Load 79(s2.s2D)
115: 21 Load 80(s2.tex)
136: 41 SampledImage 115 114
137: 9(fvec4) ImageSampleImplicitLod 136 45
117: 9(fvec4) FAdd 113 137
118: 6 Load 79(s2.s2D)
119: 21 Load 80(s2.tex)
141: 41 SampledImage 119 118
143: 9(fvec4) ImageSampleImplicitLod 141 45
121: 9(fvec4) FAdd 117 143
Store 97(@entryPointOutput) 121
Return
FunctionEnd

View File

@ -0,0 +1,49 @@
hlsl.flattenOpaqueInit.vert
WARNING: AST will form illegal SPIR-V; need to transform to legalize
// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 125
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 82
Source HLSL 500
Name 4 "main"
Name 17 "FxaaTex"
MemberName 17(FxaaTex) 0 "smpl"
MemberName 17(FxaaTex) 1 "tex"
Name 38 "g_tInputTexture_sampler"
Name 42 "g_tInputTexture"
Name 82 "@entryPointOutput"
Decorate 38(g_tInputTexture_sampler) DescriptorSet 0
Decorate 42(g_tInputTexture) DescriptorSet 0
Decorate 82(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeSampler
8: TypeFloat 32
9: TypeImage 8(float) 2D sampled format:Unknown
11: TypeVector 8(float) 4
17(FxaaTex): TypeStruct 6 9
26: TypeSampledImage 9
28: TypeVector 8(float) 2
29: 8(float) Constant 1050253722
30: 8(float) Constant 1053609165
31: 28(fvec2) ConstantComposite 29 30
32: 8(float) Constant 0
37: TypePointer UniformConstant 6
38(g_tInputTexture_sampler): 37(ptr) Variable UniformConstant
41: TypePointer UniformConstant 9
42(g_tInputTexture): 41(ptr) Variable UniformConstant
81: TypePointer Output 11(fvec4)
82(@entryPointOutput): 81(ptr) Variable Output
4(main): 2 Function None 3
5: Label
96: 6 Load 38(g_tInputTexture_sampler)
97: 9 Load 42(g_tInputTexture)
123: 26 SampledImage 97 96
124: 11(fvec4) ImageSampleExplicitLod 123 31 Lod 32
Store 82(@entryPointOutput) 124
Return
FunctionEnd

View File

@ -0,0 +1,49 @@
hlsl.flattenOpaqueInitMix.vert
WARNING: AST will form illegal SPIR-V; need to transform to legalize
// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 100
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 68
Source HLSL 500
Name 4 "main"
Name 34 "FxaaTex"
MemberName 34(FxaaTex) 0 "smpl"
MemberName 34(FxaaTex) 1 "tex"
MemberName 34(FxaaTex) 2 "f"
Name 38 "g_tInputTexture_sampler"
Name 41 "g_tInputTexture"
Name 68 "@entryPointOutput"
Decorate 38(g_tInputTexture_sampler) DescriptorSet 0
Decorate 41(g_tInputTexture) DescriptorSet 0
Decorate 68(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeSampler
8: TypeFloat 32
9: TypeImage 8(float) 2D sampled format:Unknown
12: TypeVector 8(float) 4
24: TypeSampledImage 9
28: TypeVector 8(float) 2
30: 8(float) Constant 0
34(FxaaTex): TypeStruct 6 9 8(float)
37: TypePointer UniformConstant 6
38(g_tInputTexture_sampler): 37(ptr) Variable UniformConstant
40: TypePointer UniformConstant 9
41(g_tInputTexture): 40(ptr) Variable UniformConstant
43: 8(float) Constant 1056964608
67: TypePointer Output 12(fvec4)
68(@entryPointOutput): 67(ptr) Variable Output
4(main): 2 Function None 3
5: Label
79: 6 Load 38(g_tInputTexture_sampler)
80: 9 Load 41(g_tInputTexture)
95: 24 SampledImage 80 79
98: 28(fvec2) CompositeConstruct 43 43
99: 12(fvec4) ImageSampleExplicitLod 95 98 Lod 30
Store 68(@entryPointOutput) 99
Return
FunctionEnd

View File

@ -0,0 +1,48 @@
hlsl.flattenSubset.frag
WARNING: AST will form illegal SPIR-V; need to transform to legalize
// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 85
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 54 57
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 17 "samp"
Name 41 "tex"
Name 54 "vpos"
Name 57 "@entryPointOutput"
Decorate 17(samp) DescriptorSet 0
Decorate 41(tex) DescriptorSet 0
Decorate 54(vpos) Location 0
Decorate 57(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
13: TypeSampler
16: TypePointer UniformConstant 13
17(samp): 16(ptr) Variable UniformConstant
39: TypeImage 6(float) 2D sampled format:Unknown
40: TypePointer UniformConstant 39
41(tex): 40(ptr) Variable UniformConstant
44: TypeSampledImage 39
46: TypeVector 6(float) 2
47: 6(float) Constant 1056964608
48: 46(fvec2) ConstantComposite 47 47
53: TypePointer Input 7(fvec4)
54(vpos): 53(ptr) Variable Input
56: TypePointer Output 7(fvec4)
57(@entryPointOutput): 56(ptr) Variable Output
4(main): 2 Function None 3
5: Label
74: 13 Load 17(samp)
81: 39 Load 41(tex)
83: 44 SampledImage 81 74
84: 7(fvec4) ImageSampleImplicitLod 83 48
Store 57(@entryPointOutput) 84
Return
FunctionEnd

View File

@ -0,0 +1,37 @@
hlsl.flattenSubset2.frag
WARNING: AST will form illegal SPIR-V; need to transform to legalize
// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 44
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 40 43
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 31 "someTex"
Name 40 "vpos"
Name 43 "@entryPointOutput"
Decorate 31(someTex) DescriptorSet 0
Decorate 40(vpos) Location 0
Decorate 43(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
17: TypeImage 6(float) 2D sampled format:Unknown
30: TypePointer UniformConstant 17
31(someTex): 30(ptr) Variable UniformConstant
34: 6(float) Constant 0
35: 7(fvec4) ConstantComposite 34 34 34 34
39: TypePointer Input 7(fvec4)
40(vpos): 39(ptr) Variable Input
42: TypePointer Output 7(fvec4)
43(@entryPointOutput): 42(ptr) Variable Output
4(main): 2 Function None 3
5: Label
Store 43(@entryPointOutput) 35
Return
FunctionEnd

View File

@ -0,0 +1,91 @@
hlsl.partialFlattenLocal.vert
WARNING: AST will form illegal SPIR-V; need to transform to legalize
// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 148
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 90 93
Source HLSL 500
Name 4 "main"
Name 17 "tex"
Name 90 "pos"
Name 93 "@entryPointOutput"
Decorate 17(tex) DescriptorSet 0
Decorate 90(pos) Location 0
Decorate 93(@entryPointOutput) BuiltIn Position
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
13: TypeImage 6(float) 2D sampled format:Unknown
16: TypePointer UniformConstant 13
17(tex): 16(ptr) Variable UniformConstant
19: TypeVector 6(float) 3
20: TypeInt 32 0
21: 20(int) Constant 3
22: TypeArray 19(fvec3) 21
23: TypePointer Function 22
25: TypeInt 32 1
26: 25(int) Constant 0
27: 6(float) Constant 0
28: 19(fvec3) ConstantComposite 27 27 27
29: TypePointer Function 19(fvec3)
31: TypeVector 6(float) 2
32: 20(int) Constant 2
33: TypeArray 31(fvec2) 32
34: TypePointer Function 33
36: 6(float) Constant 1065353216
37: 31(fvec2) ConstantComposite 27 36
38: TypePointer Function 31(fvec2)
52: 25(int) Constant 1
53: TypeBool
89: TypePointer Input 7(fvec4)
90(pos): 89(ptr) Variable Input
92: TypePointer Output 7(fvec4)
93(@entryPointOutput): 92(ptr) Variable Output
4(main): 2 Function None 3
5: Label
98: 23(ptr) Variable Function
99: 34(ptr) Variable Function
91: 7(fvec4) Load 90(pos)
110: 29(ptr) AccessChain 98 26
Store 110 28
111: 38(ptr) AccessChain 99 26
Store 111 37
Branch 112
112: Label
147: 25(int) Phi 26 5 131 114
LoopMerge 113 114 None
Branch 115
115: Label
117: 53(bool) SLessThan 147 52
BranchConditional 117 118 113
118: Label
121: 38(ptr) AccessChain 99 147
122: 31(fvec2) Load 121
123: 29(ptr) AccessChain 98 147
124: 19(fvec3) Load 123
125: 31(fvec2) VectorShuffle 124 124 0 1
126: 31(fvec2) FAdd 125 122
127: 29(ptr) AccessChain 98 147
128: 19(fvec3) Load 127
129: 19(fvec3) VectorShuffle 128 126 3 4 2
Store 127 129
Branch 114
114: Label
131: 25(int) IAdd 147 52
Branch 112
113: Label
133: 22 Load 98
146: 19(fvec3) CompositeExtract 133 0
140: 6(float) CompositeExtract 146 0
141: 6(float) CompositeExtract 146 1
142: 6(float) CompositeExtract 146 2
143: 7(fvec4) CompositeConstruct 140 141 142 27
144: 7(fvec4) FAdd 91 143
Store 93(@entryPointOutput) 144
Return
FunctionEnd

View File

@ -0,0 +1,38 @@
hlsl.partialFlattenMixed.vert
WARNING: AST will form illegal SPIR-V; need to transform to legalize
// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 31
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 27 30
Source HLSL 500
Name 4 "main"
Name 20 "tex"
Name 27 "pos"
Name 30 "@entryPointOutput"
Decorate 20(tex) DescriptorSet 0
Decorate 27(pos) Location 0
Decorate 30(@entryPointOutput) BuiltIn Position
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
13: TypeImage 6(float) 2D sampled format:Unknown
14: TypeInt 32 0
15: 14(int) Constant 2
16: TypeArray 13 15
19: TypePointer UniformConstant 16
20(tex): 19(ptr) Variable UniformConstant
26: TypePointer Input 7(fvec4)
27(pos): 26(ptr) Variable Input
29: TypePointer Output 7(fvec4)
30(@entryPointOutput): 29(ptr) Variable Output
4(main): 2 Function None 3
5: Label
28: 7(fvec4) Load 27(pos)
Store 30(@entryPointOutput) 28
Return
FunctionEnd

View File

@ -84,7 +84,7 @@ ERROR: 0:194: '.' : cannot apply to an array: method
ERROR: 0:194: 'a' : can't use function syntax on variable
ERROR: 0:214: 'non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)' : not supported for this version or the enabled extensions
ERROR: 0:3000: '#error' : line of this error should be 3000
ERROR: 0:3002: '' : syntax error
ERROR: 0:3002: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON
ERROR: 77 compilation errors. No code generated.

View File

@ -0,0 +1,172 @@
100samplerExternal.frag
ERROR: 0:20: 'textureSize' : no matching overloaded function found
ERROR: 0:21: 'texture' : no matching overloaded function found
ERROR: 0:22: 'texture' : no matching overloaded function found
ERROR: 0:23: 'textureProj' : no matching overloaded function found
ERROR: 0:24: 'textureProj' : no matching overloaded function found
ERROR: 0:25: 'textureProj' : no matching overloaded function found
ERROR: 0:26: 'textureProj' : no matching overloaded function found
ERROR: 0:27: 'texelFetch' : no matching overloaded function found
ERROR: 0:29: 'texture3D' : no matching overloaded function found
ERROR: 0:30: 'texture2DProjLod' : no matching overloaded function found
ERROR: 0:31: 'texture' : no matching overloaded function found
ERROR: 0:32: 'textureProjLod' : no matching overloaded function found
ERROR: 0:38: 'samplerExternalOES' : required extension not requested: GL_OES_EGL_image_external
ERROR: 0:41: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON
ERROR: 14 compilation errors. No code generated.
Shader version: 100
Requested GL_OES_EGL_image_external
Requested GL_OES_EGL_image_external_essl3
ERROR: node is still EOpNull!
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
0:12 texture ( global lowp 4-component vector of float)
0:12 'sExt' ( uniform lowp samplerExternalOES)
0:12 Constant:
0:12 0.200000
0:12 0.200000
0:13 texture ( global mediump 4-component vector of float)
0:13 'mediumExt' ( uniform mediump samplerExternalOES)
0:13 Constant:
0:13 0.200000
0:13 0.200000
0:14 texture ( global highp 4-component vector of float)
0:14 'highExt' ( uniform highp samplerExternalOES)
0:14 Constant:
0:14 0.200000
0:14 0.200000
0:15 textureProj ( global lowp 4-component vector of float)
0:15 'sExt' ( uniform lowp samplerExternalOES)
0:15 Constant:
0:15 0.300000
0:15 0.300000
0:15 0.300000
0:16 textureProj ( global lowp 4-component vector of float)
0:16 'sExt' ( uniform lowp samplerExternalOES)
0:16 Constant:
0:16 0.300000
0:16 0.300000
0:16 0.300000
0:16 0.300000
0:18 Sequence
0:18 move second child to first child ( temp mediump int)
0:18 'lod' ( temp mediump int)
0:18 Constant:
0:18 0 (const int)
0:19 Sequence
0:19 move second child to first child ( temp highp float)
0:19 'bias' ( temp highp float)
0:19 Constant:
0:19 0.010000
0:20 Constant:
0:20 0.000000
0:21 Constant:
0:21 0.000000
0:22 Constant:
0:22 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:29 Constant:
0:29 0.000000
0:30 Constant:
0:30 0.000000
0:31 Constant:
0:31 0.000000
0:32 Constant:
0:32 0.000000
0:? Linker Objects
0:? 'sExt' ( uniform lowp samplerExternalOES)
0:? 'mediumExt' ( uniform mediump samplerExternalOES)
0:? 'highExt' ( uniform highp samplerExternalOES)
0:? 'badExt' ( uniform mediump samplerExternalOES)
Linked fragment stage:
Shader version: 100
Requested GL_OES_EGL_image_external
Requested GL_OES_EGL_image_external_essl3
ERROR: node is still EOpNull!
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
0:12 texture ( global lowp 4-component vector of float)
0:12 'sExt' ( uniform lowp samplerExternalOES)
0:12 Constant:
0:12 0.200000
0:12 0.200000
0:13 texture ( global mediump 4-component vector of float)
0:13 'mediumExt' ( uniform mediump samplerExternalOES)
0:13 Constant:
0:13 0.200000
0:13 0.200000
0:14 texture ( global highp 4-component vector of float)
0:14 'highExt' ( uniform highp samplerExternalOES)
0:14 Constant:
0:14 0.200000
0:14 0.200000
0:15 textureProj ( global lowp 4-component vector of float)
0:15 'sExt' ( uniform lowp samplerExternalOES)
0:15 Constant:
0:15 0.300000
0:15 0.300000
0:15 0.300000
0:16 textureProj ( global lowp 4-component vector of float)
0:16 'sExt' ( uniform lowp samplerExternalOES)
0:16 Constant:
0:16 0.300000
0:16 0.300000
0:16 0.300000
0:16 0.300000
0:18 Sequence
0:18 move second child to first child ( temp mediump int)
0:18 'lod' ( temp mediump int)
0:18 Constant:
0:18 0 (const int)
0:19 Sequence
0:19 move second child to first child ( temp highp float)
0:19 'bias' ( temp highp float)
0:19 Constant:
0:19 0.010000
0:20 Constant:
0:20 0.000000
0:21 Constant:
0:21 0.000000
0:22 Constant:
0:22 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:29 Constant:
0:29 0.000000
0:30 Constant:
0:30 0.000000
0:31 Constant:
0:31 0.000000
0:32 Constant:
0:32 0.000000
0:? Linker Objects
0:? 'sExt' ( uniform lowp samplerExternalOES)
0:? 'mediumExt' ( uniform mediump samplerExternalOES)
0:? 'highExt' ( uniform highp samplerExternalOES)
0:? 'badExt' ( uniform mediump samplerExternalOES)

View File

@ -52,7 +52,7 @@ ERROR: 0:209: 'assign' : cannot convert from ' const float' to ' temp 4-compone
ERROR: 0:212: 'sampler2DRect' : Reserved word.
ERROR: 0:244: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' global void' and a right operand of type ' const int' (or there is no acceptable conversion)
ERROR: 0:245: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' const int' and a right operand of type ' global void' (or there is no acceptable conversion)
ERROR: 0:248: '' : syntax error
ERROR: 0:248: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON
ERROR: 54 compilation errors. No code generated.

View File

@ -210,7 +210,6 @@ ERROR: node is still EOpNull!
0:? 'anon@0' ( out block{ 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})
400.tesc
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
@ -442,7 +441,6 @@ ERROR: node is still EOpNull!
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.
ERROR: 0:3: 'vertices' : there is no such layout identifier for this stage taking an assigned value
ERROR: 0:5: 'triangles' : cannot change previously set input primitive
ERROR: 0:6: 'isolines' : cannot change previously set input primitive
@ -612,7 +610,6 @@ ERROR: node is still EOpNull!
0:? 'pinbi' ( patch in block{ in int a})
410.tesc
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:4: 'length' : array must first be sized by a redeclaration or layout qualifier
ERROR: 1 compilation errors. No code generated.
@ -628,7 +625,6 @@ ERROR: node is still EOpNull!
0:? 'patchOut' ( patch out 4-component vector of float)
420.tesc
Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out
ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a
ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb
@ -747,7 +743,6 @@ ERROR: node is still EOpNull!
0:? 'vs_tcs_last' (layout( location=12) in 32-element array of 2X4 matrix of double)
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 ' 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
@ -759,7 +754,7 @@ ERROR: 0:29: 'constructor' : cannot convert parameter 2 from ' const 2X2 matrix
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: 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:40: 'constructor' : cannot convert parameter 1 from ' const structure{ global 4-component vector of float a, global 4-component vector of float b}' to ' temp structure{ global float s, global float t}'
ERROR: 0:70: 'initializer list' : wrong number of structure members
ERROR: 13 compilation errors. No code generated.

View File

@ -43,7 +43,7 @@ ERROR: 0:156: 'invariant' : can only apply to an output
ERROR: 0:157: 'invariant' : can only apply to an output
ERROR: 0:158: 'invariant' : can only apply to an output
ERROR: 0:160: 'imageBuffer' : Reserved word.
ERROR: 0:160: '' : syntax error
ERROR: 0:160: '' : syntax error, unexpected IMAGEBUFFER, expecting COMMA or SEMICOLON
ERROR: 45 compilation errors. No code generated.

View File

@ -43,10 +43,18 @@ ERROR: 0:172: 'std430' : requires the 'buffer' storage qualifier
ERROR: 0:175: '' : array size required
ERROR: 0:185: 'assign' : cannot convert from ' temp 4-element array of highp float' to ' temp 3-element array of highp float'
ERROR: 0:186: 'assign' : cannot convert from ' temp 3-element array of highp float' to ' temp 4-element array of highp float'
ERROR: 44 compilation errors. No code generated.
ERROR: 0:189: 'num_views' : required extension not requested: Possible extensions include:
GL_OVR_multiview
GL_OVR_multiview2
ERROR: 0:193: 'gl_ViewID_OVR' : required extension not requested: Possible extensions include:
GL_OVR_multiview
GL_OVR_multiview2
ERROR: 0:198: 'num_views' : can only apply to a standalone qualifier
ERROR: 47 compilation errors. No code generated.
Shader version: 300
Requested GL_OVR_multiview
ERROR: node is still EOpNull!
0:27 Function Definition: main( ( global void)
0:27 Function Parameters:
@ -289,6 +297,14 @@ ERROR: node is still EOpNull!
0:184 'y' ( temp 4-element array of highp float)
0:185 'xp' ( temp 3-element array of highp float)
0:186 'yp' ( temp 4-element array of highp float)
0:191 Function Definition: mwErr( ( global void)
0:191 Function Parameters:
0:193 Sequence
0:193 'gl_ViewID_OVR' ( in highp uint ViewIndex)
0:201 Function Definition: mwOk( ( global void)
0:201 Function Parameters:
0:203 Sequence
0:203 'gl_ViewID_OVR' ( in highp uint ViewIndex)
0:? Linker Objects
0:? 'm43' ( uniform highp 4X3 matrix of float)
0:? 'm33' ( uniform highp 3X3 matrix of float)
@ -323,6 +339,7 @@ ERROR: node is still EOpNull!
0:? 'Binst' (layout( column_major shared) uniform block{layout( column_major shared) uniform highp int a})
0:? 'Bfoo' ( global highp int)
0:? 'B430i' (layout( column_major std430) uniform block{layout( column_major std430 offset=0) uniform highp int a})
0:? 'mwUniform' ( uniform highp float)
0:? 'gl_VertexID' ( gl_VertexId highp int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
@ -331,6 +348,7 @@ Linked vertex stage:
Shader version: 300
Requested GL_OVR_multiview
ERROR: node is still EOpNull!
0:27 Function Definition: main( ( global void)
0:27 Function Parameters:
@ -481,6 +499,7 @@ ERROR: node is still EOpNull!
0:? 'Binst' (layout( column_major shared) uniform block{layout( column_major shared) uniform highp int a})
0:? 'Bfoo' ( global highp int)
0:? 'B430i' (layout( column_major std430) uniform block{layout( column_major std430 offset=0) uniform highp int a})
0:? 'mwUniform' ( uniform highp float)
0:? 'gl_VertexID' ( gl_VertexId highp int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)

View File

@ -0,0 +1,197 @@
300samplerExternal.frag
ERROR: 0:12: 'texture2D' : no matching overloaded function found
ERROR: 0:13: 'texture2D' : no matching overloaded function found
ERROR: 0:14: 'texture2D' : no matching overloaded function found
ERROR: 0:15: 'texture2DProj' : no matching overloaded function found
ERROR: 0:16: 'texture2DProj' : no matching overloaded function found
ERROR: 0:29: 'texture3D' : no matching overloaded function found
ERROR: 0:30: 'texture2DProjLod' : no matching overloaded function found
ERROR: 0:31: 'texture' : no matching overloaded function found
ERROR: 0:32: 'textureProjLod' : no matching overloaded function found
ERROR: 0:38: 'samplerExternalOES' : required extension not requested: GL_OES_EGL_image_external_essl3
ERROR: 0:41: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON
ERROR: 11 compilation errors. No code generated.
Shader version: 300
Requested GL_OES_EGL_image_external
Requested GL_OES_EGL_image_external_essl3
ERROR: node is still EOpNull!
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
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:16 Constant:
0:16 0.000000
0:18 Sequence
0:18 move second child to first child ( temp mediump int)
0:18 'lod' ( temp mediump int)
0:18 Constant:
0:18 0 (const int)
0:19 Sequence
0:19 move second child to first child ( temp highp float)
0:19 'bias' ( temp highp float)
0:19 Constant:
0:19 0.010000
0:20 textureSize ( global highp 2-component vector of int, operation at mediump)
0:20 'sExt' ( uniform lowp samplerExternalOES)
0:20 'lod' ( temp mediump int)
0:21 texture ( global lowp 4-component vector of float)
0:21 'sExt' ( uniform lowp samplerExternalOES)
0:21 Constant:
0:21 0.200000
0:21 0.200000
0:22 texture ( global lowp 4-component vector of float, operation at highp)
0:22 'sExt' ( uniform lowp samplerExternalOES)
0:22 Constant:
0:22 0.200000
0:22 0.200000
0:22 'bias' ( temp highp float)
0:23 textureProj ( global lowp 4-component vector of float)
0:23 'sExt' ( uniform lowp samplerExternalOES)
0:23 Constant:
0:23 0.200000
0:23 0.200000
0:23 0.200000
0:24 textureProj ( global lowp 4-component vector of float, operation at highp)
0:24 'sExt' ( uniform lowp samplerExternalOES)
0:24 Constant:
0:24 0.200000
0:24 0.200000
0:24 0.200000
0:24 'bias' ( temp highp float)
0:25 textureProj ( global lowp 4-component vector of float)
0:25 'sExt' ( uniform lowp samplerExternalOES)
0:25 Constant:
0:25 0.200000
0:25 0.200000
0:25 0.200000
0:25 0.200000
0:26 textureProj ( global lowp 4-component vector of float, operation at highp)
0:26 'sExt' ( uniform lowp samplerExternalOES)
0:26 Constant:
0:26 0.200000
0:26 0.200000
0:26 0.200000
0:26 0.200000
0:26 'bias' ( temp highp float)
0:27 textureFetch ( global lowp 4-component vector of float, operation at mediump)
0:27 'sExt' ( uniform lowp samplerExternalOES)
0:27 Constant:
0:27 4 (const int)
0:27 4 (const int)
0:27 'lod' ( temp mediump int)
0:29 Constant:
0:29 0.000000
0:30 Constant:
0:30 0.000000
0:31 Constant:
0:31 0.000000
0:32 Constant:
0:32 0.000000
0:? Linker Objects
0:? 'sExt' ( uniform lowp samplerExternalOES)
0:? 'mediumExt' ( uniform mediump samplerExternalOES)
0:? 'highExt' ( uniform highp samplerExternalOES)
0:? 'badExt' ( uniform mediump samplerExternalOES)
Linked fragment stage:
Shader version: 300
Requested GL_OES_EGL_image_external
Requested GL_OES_EGL_image_external_essl3
ERROR: node is still EOpNull!
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
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:16 Constant:
0:16 0.000000
0:18 Sequence
0:18 move second child to first child ( temp mediump int)
0:18 'lod' ( temp mediump int)
0:18 Constant:
0:18 0 (const int)
0:19 Sequence
0:19 move second child to first child ( temp highp float)
0:19 'bias' ( temp highp float)
0:19 Constant:
0:19 0.010000
0:20 textureSize ( global highp 2-component vector of int, operation at mediump)
0:20 'sExt' ( uniform lowp samplerExternalOES)
0:20 'lod' ( temp mediump int)
0:21 texture ( global lowp 4-component vector of float)
0:21 'sExt' ( uniform lowp samplerExternalOES)
0:21 Constant:
0:21 0.200000
0:21 0.200000
0:22 texture ( global lowp 4-component vector of float, operation at highp)
0:22 'sExt' ( uniform lowp samplerExternalOES)
0:22 Constant:
0:22 0.200000
0:22 0.200000
0:22 'bias' ( temp highp float)
0:23 textureProj ( global lowp 4-component vector of float)
0:23 'sExt' ( uniform lowp samplerExternalOES)
0:23 Constant:
0:23 0.200000
0:23 0.200000
0:23 0.200000
0:24 textureProj ( global lowp 4-component vector of float, operation at highp)
0:24 'sExt' ( uniform lowp samplerExternalOES)
0:24 Constant:
0:24 0.200000
0:24 0.200000
0:24 0.200000
0:24 'bias' ( temp highp float)
0:25 textureProj ( global lowp 4-component vector of float)
0:25 'sExt' ( uniform lowp samplerExternalOES)
0:25 Constant:
0:25 0.200000
0:25 0.200000
0:25 0.200000
0:25 0.200000
0:26 textureProj ( global lowp 4-component vector of float, operation at highp)
0:26 'sExt' ( uniform lowp samplerExternalOES)
0:26 Constant:
0:26 0.200000
0:26 0.200000
0:26 0.200000
0:26 0.200000
0:26 'bias' ( temp highp float)
0:27 textureFetch ( global lowp 4-component vector of float, operation at mediump)
0:27 'sExt' ( uniform lowp samplerExternalOES)
0:27 Constant:
0:27 4 (const int)
0:27 4 (const int)
0:27 'lod' ( temp mediump int)
0:29 Constant:
0:29 0.000000
0:30 Constant:
0:30 0.000000
0:31 Constant:
0:31 0.000000
0:32 Constant:
0:32 0.000000
0:? Linker Objects
0:? 'sExt' ( uniform lowp samplerExternalOES)
0:? 'mediumExt' ( uniform mediump samplerExternalOES)
0:? 'highExt' ( uniform highp samplerExternalOES)
0:? 'badExt' ( uniform mediump samplerExternalOES)

View File

@ -1,7 +1,7 @@
310.comp
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:4: 'local_size' : cannot change previously set size
ERROR: 0:5: 'local_size' : too large; see gl_MaxComputeWorkGroupSize
ERROR: 0:7: 'local_size_y' : must be at least 1
ERROR: 0:23: '' : array size required
ERROR: 0:39: 'in' : global storage input qualifier cannot be used in a compute shader
ERROR: 0:39: 'location qualifier on input' : not supported in this stage: compute
@ -16,7 +16,7 @@ ERROR: 0:47: 'local_size' : can only apply to 'in'
ERROR: 0:61: 'assign' : l-value required "ro" (can't modify a readonly buffer)
ERROR: 0:66: 'buffer' : buffers can be declared only as blocks
ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:76: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
ERROR: 0:76: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:81: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:82: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:87: 'imageAtomicCompSwap' : required extension not requested: GL_OES_shader_image_atomic
@ -54,12 +54,12 @@ ERROR: 0:171: 'samplerCubeArray' : Reserved word.
ERROR: 0:171: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:172: 'iimage2DRect' : Reserved word.
ERROR: 0:172: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:172: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
ERROR: 0:172: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:173: 'image2DMS' : Reserved word.
ERROR: 0:173: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
ERROR: 0:173: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:174: 'uimage2DMSArray' : Reserved word.
ERROR: 0:174: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:174: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
ERROR: 0:174: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:181: 'rgba32f' : format requires readonly or writeonly memory qualifier
ERROR: 0:182: 'rgba8i' : format requires readonly or writeonly memory qualifier
ERROR: 0:183: 'rgba16ui' : format requires readonly or writeonly memory qualifier
@ -84,7 +84,7 @@ WARNING: 0:238: '#define' : names containing consecutive underscores are reserve
ERROR: 0:244: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group
ERROR: 0:245: 'gl_ViewIndex' : undeclared identifier
ERROR: 0:255: 'gl_ViewIndex' : undeclared identifier
ERROR: 82 compilation errors. No code generated.
ERROR: 83 compilation errors. No code generated.
Shader version: 310

View File

@ -1,5 +1,4 @@
310.frag
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:2: 'float' : type requires declaration of default precision qualifier
ERROR: 0:8: 'origin_upper_left' : not supported with this profile: es
ERROR: 0:8: 'pixel_center_integer' : not supported with this profile: es
@ -19,13 +18,13 @@ ERROR: 0:44: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset,
ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
ERROR: 0:66: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:66: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
ERROR: 0:66: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:67: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:67: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
ERROR: 0:67: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:68: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
ERROR: 0:68: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:69: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:69: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
ERROR: 0:69: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:73: 'binding' : requires block, or sampler/image, or atomic-counter type
ERROR: 0:77: 'location' : location is too large
ERROR: 0:81: 'location' : too large for fragment output
@ -36,7 +35,7 @@ ERROR: 0:83: 'layout-id value' : cannot be negative
ERROR: 0:96: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:110: 'out' : cannot be bool
ERROR: 0:111: 'image2D' : sampler/image types can only be used in uniform variables or function parameters: imageOut
ERROR: 0:111: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
ERROR: 0:111: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:112: 'out' : cannot be a matrix
ERROR: 0:114: 'in' : cannot be bool
ERROR: 0:115: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: ino
@ -124,7 +123,7 @@ ERROR: 0:391: 'interpolateAtOffset' : first argument must be an interpolant, or
ERROR: 0:392: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:396: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:397: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:400: 'blend equation' : required extension not requested: GL_KHR_blend_equation_advanced
ERROR: 0:400: 'blend equation' : not supported for this version or the enabled extensions
ERROR: 0:423: 'blend equation' : can only apply to 'out'
ERROR: 0:424: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:425: 'blend equation' : can only apply to a standalone qualifier

View File

@ -1,5 +1,4 @@
310.geom
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:29: 'fromVertex' : block instance name redefinition
ERROR: 0:33: 'fromVertex' : redefinition
ERROR: 0:35: 'fooC' : block instance name redefinition

View File

@ -1,5 +1,4 @@
310.tesc
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:8: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:9: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:10: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)

View File

@ -1,5 +1,4 @@
310.tese
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:7: 'vertices' : there is no such layout identifier for this stage taking an assigned value
ERROR: 0:9: 'triangles' : cannot change previously set input primitive
ERROR: 0:10: 'isolines' : cannot change previously set input primitive

View File

@ -1,5 +1,4 @@
310.vert
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'shared' : not supported in this stage: vertex
ERROR: 0:4: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value
ERROR: 0:5: 'buffer' : buffers can be declared only as blocks

View File

@ -1,5 +1,4 @@
310AofA.vert
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:17: '' : array size required
ERROR: 0:23: '' : array size required
ERROR: 0:28: '[]' : only outermost dimension of an array of arrays can be implicitly sized
@ -321,7 +320,7 @@ ERROR: node is still EOpNull!
0:? Linker Objects
0:? 'name' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer implicitly-sized array of highp float u, layout( column_major shared) buffer implicitly-sized array of highp 4-component vector of float v})
0:? 'uname' (layout( column_major shared) uniform 3-element array of block{layout( column_major shared) uniform highp float u, layout( column_major shared) uniform implicitly-sized array of highp 4-component vector of float v})
0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of implicitly-sized array of highp 4-component vector of float v})
0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of 1-element array of highp 4-component vector of float v})
0:? 'name3' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})
0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of highp float)
0:? 'gu' ( global implicitly-sized array of 7-element array of highp float)
@ -362,7 +361,7 @@ ERROR: node is still EOpNull!
0:? Linker Objects
0:? 'name' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer implicitly-sized array of highp float u, layout( column_major shared) buffer implicitly-sized array of highp 4-component vector of float v})
0:? 'uname' (layout( column_major shared) uniform 3-element array of block{layout( column_major shared) uniform highp float u, layout( column_major shared) uniform 1-element array of highp 4-component vector of float v})
0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of implicitly-sized array of highp 4-component vector of float v})
0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of 1-element array of highp 4-component vector of float v})
0:? 'name3' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})
0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of highp float)
0:? 'gu' ( global 1-element array of 7-element array of highp float)

View File

@ -1,5 +1,4 @@
310implicitSizeArrayError.vert
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: '' : array size required
ERROR: 1 compilation errors. No code generated.

View File

@ -0,0 +1,19 @@
320.comp
Shader version: 320
local_size = (1, 1, 1)
0:? Sequence
0:3 Function Definition: main( ( global void)
0:3 Function Parameters:
0:? Linker Objects
Linked compute stage:
Shader version: 320
local_size = (1, 1, 1)
0:? Sequence
0:3 Function Definition: main( ( global void)
0:3 Function Parameters:
0:? Linker Objects

View File

@ -0,0 +1,576 @@
320.frag
ERROR: 0:3: 'output block' : not supported in this stage: fragment
ERROR: 0:7: 'float' : type requires declaration of default precision qualifier
ERROR: 0:8: '' : cannot nest a structure definition inside a structure or block
ERROR: 0:16: 'location' : overlapping use of location 13
ERROR: 0:18: 'inbname2' : Cannot reuse block name within the same interface: in
ERROR: 0:23: 'badmember' : nameless block contains a member that already has a name at global scope
ERROR: 0:27: 'inbname' : redefinition
ERROR: 0:29: 'vAnon' : redefinition
ERROR: 0:43: 'origin_upper_left' : not supported with this profile: es
ERROR: 0:43: 'pixel_center_integer' : not supported with this profile: es
ERROR: 0:43: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord
ERROR: 0:47: 'depth layout qualifier' : not supported with this profile: es
ERROR: 0:51: 'assign' : l-value required "gl_FragDepth" (can't modify gl_FragDepth if using early_fragment_tests)
ERROR: 0:79: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument
ERROR: 0:124: 'rgba32f' : format requires readonly or writeonly memory qualifier
ERROR: 0:125: 'rgba8ui' : format requires readonly or writeonly memory qualifier
ERROR: 0:126: 'rgba16i' : format requires readonly or writeonly memory qualifier
ERROR: 0:152: 'imageAtomicMax' : only supported on image with format r32i or r32ui
ERROR: 0:153: 'imageAtomicMax' : only supported on image with format r32i or r32ui
ERROR: 0:154: 'imageAtomicExchange' : only supported on image with format r32f
ERROR: 0:157: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output
ERROR: 0:158: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output
ERROR: 0:159: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output
ERROR: 0:160: 'noperspective' : Reserved word.
ERROR: 0:160: 'noperspective' : not supported with this profile: es
ERROR: 0:160: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output
ERROR: 0:165: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output
ERROR: 0:180: 'interpolateAtCentroid' : no matching overloaded function found
ERROR: 0:180: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float'
ERROR: 0:182: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:184: 'interpolateAtSample' : no matching overloaded function found
ERROR: 0:184: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float'
ERROR: 0:186: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:189: 'interpolateAtOffset' : no matching overloaded function found
ERROR: 0:189: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float'
ERROR: 0:191: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:192: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:196: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:197: 'outp' : undeclared identifier
ERROR: 0:197: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:197: 'assign' : cannot convert from ' global float' to ' temp mediump 4-component vector of float'
ERROR: 0:217: 'blend equation' : can only apply to 'out'
ERROR: 0:218: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:219: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:220: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:221: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:222: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:223: 'blend_support' : unknown blend equation
ERROR: 0:225: 'fragment-shader array-of-array output' : not supported with this profile: es
ERROR: 49 compilation errors. No code generated.
Shader version: 320
gl_FragCoord pixel center is integer
gl_FragCoord origin is upper left
using early_fragment_tests
using depth_any
using blend_support_multiply blend_support_screen blend_support_overlay blend_support_darken blend_support_lighten blend_support_colordodge blend_support_colorburn blend_support_hardlight blend_support_softlight blend_support_difference blend_support_exclusion blend_support_hsl_hue blend_support_hsl_saturation blend_support_hsl_color blend_support_hsl_luminosity blend_support_all_equations
ERROR: node is still EOpNull!
0:35 Function Definition: fooIO( ( global void)
0:35 Function Parameters:
0:37 Sequence
0:37 Sequence
0:37 move second child to first child ( temp mediump 4-component vector of float)
0:37 'v' ( temp mediump 4-component vector of float)
0:37 add ( temp mediump 4-component vector of float)
0:37 v: direct index for structure ( in mediump 4-component vector of float)
0:37 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s})
0:37 Constant:
0:37 1 (const int)
0:37 vAnon: direct index for structure (layout( location=13) centroid in mediump 4-component vector of float)
0:37 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon})
0:37 Constant:
0:37 1 (const uint)
0:38 vector scale second child into first child ( temp mediump 4-component vector of float)
0:38 'v' ( temp mediump 4-component vector of float)
0:38 f: direct index for structure ( in mediump float)
0:38 direct index ( temp block{ in mediump float f})
0:38 'arrayedInst' ( in 4-element array of block{ in mediump float f})
0:38 Constant:
0:38 2 (const int)
0:38 Constant:
0:38 0 (const int)
0:39 vector scale second child into first child ( temp mediump 4-component vector of float)
0:39 'v' ( temp mediump 4-component vector of float)
0:39 f: direct index for structure ( in mediump float)
0:39 indirect index ( temp block{ in mediump float f})
0:39 'arrayedInst' ( in 4-element array of block{ in mediump float f})
0:39 'i' ( uniform mediump int)
0:39 Constant:
0:39 0 (const int)
0:49 Function Definition: main( ( global void)
0:49 Function Parameters:
0:51 Sequence
0:51 move second child to first child ( temp highp float)
0:51 'gl_FragDepth' ( gl_FragDepth highp float FragDepth)
0:51 Constant:
0:51 0.200000
0:52 Sequence
0:52 move second child to first child ( temp bool)
0:52 'f' ( temp bool)
0:52 'gl_FrontFacing' ( gl_FrontFacing bool Face)
0:57 Function Definition: foo_GS( ( global void)
0:57 Function Parameters:
0:59 Sequence
0:59 Sequence
0:59 move second child to first child ( temp highp int)
0:59 'l' ( temp highp int)
0:59 'gl_Layer' ( flat in highp int Layer)
0:60 Sequence
0:60 move second child to first child ( temp highp int)
0:60 'p' ( temp highp int)
0:60 'gl_PrimitiveID' ( flat in highp int PrimitiveID)
0:73 Function Definition: pfoo( ( global void)
0:73 Function Parameters:
0:? Sequence
0:76 move second child to first child ( temp mediump 2-component vector of float)
0:76 'h' ( noContraction temp mediump 2-component vector of float)
0:76 fma ( global mediump 2-component vector of float)
0:76 'inf' ( smooth in mediump 2-component vector of float)
0:76 'ing' ( smooth in mediump 2-component vector of float)
0:76 'h' ( noContraction temp mediump 2-component vector of float)
0:77 textureGatherOffset ( global lowp 4-component vector of float)
0:77 direct index ( temp lowp sampler2D)
0:77 'sArray' ( uniform 4-element array of lowp sampler2D)
0:77 Constant:
0:77 0 (const int)
0:77 Constant:
0:77 0.100000
0:77 0.100000
0:77 Convert float to int ( temp lowp 2-component vector of int)
0:77 'inf' ( smooth in mediump 2-component vector of float)
0:78 textureGatherOffsets ( global lowp 4-component vector of float, operation at mediump)
0:78 direct index ( temp lowp sampler2D)
0:78 'sArray' ( uniform 4-element array of lowp sampler2D)
0:78 Constant:
0:78 0 (const int)
0:78 Constant:
0:78 0.100000
0:78 0.100000
0:78 Constant:
0:78 0 (const int)
0:78 0 (const int)
0:78 0 (const int)
0:78 0 (const int)
0:78 0 (const int)
0:78 0 (const int)
0:78 0 (const int)
0:78 0 (const int)
0:79 textureGatherOffsets ( global lowp 4-component vector of float, operation at mediump)
0:79 direct index ( temp lowp sampler2D)
0:79 'sArray' ( uniform 4-element array of lowp sampler2D)
0:79 Constant:
0:79 0 (const int)
0:79 Constant:
0:79 0.100000
0:79 0.100000
0:79 'offsets' ( uniform 4-element array of mediump 2-component vector of int)
0:102 Function Definition: CAT( ( global void)
0:102 Function Parameters:
0:104 Sequence
0:104 Sequence
0:104 move second child to first child ( temp highp 4-component vector of float)
0:104 'b4' ( temp highp 4-component vector of float)
0:104 texture ( global highp 4-component vector of float)
0:104 'CA4' ( uniform highp samplerCubeArray)
0:104 Constant:
0:104 0.500000
0:104 0.500000
0:104 0.500000
0:104 0.500000
0:104 Constant:
0:104 0.240000
0:105 Sequence
0:105 move second child to first child ( temp highp 4-component vector of int)
0:105 'b6' ( temp highp 4-component vector of int)
0:105 texture ( global highp 4-component vector of int)
0:105 'CA6' ( uniform highp isamplerCubeArray)
0:105 Constant:
0:105 0.500000
0:105 0.500000
0:105 0.500000
0:105 0.500000
0:105 Constant:
0:105 0.260000
0:106 Sequence
0:106 move second child to first child ( temp highp 4-component vector of uint)
0:106 'b7' ( temp highp 4-component vector of uint)
0:106 texture ( global highp 4-component vector of uint)
0:106 'CA7' ( uniform highp usamplerCubeArray)
0:106 Constant:
0:106 0.500000
0:106 0.500000
0:106 0.500000
0:106 0.500000
0:106 Constant:
0:106 0.270000
0:109 Function Definition: goodSample( ( global void)
0:109 Function Parameters:
0:111 Sequence
0:111 Sequence
0:111 move second child to first child ( temp lowp int)
0:111 'a1' ( temp lowp int)
0:111 'gl_SampleID' ( flat in lowp int SampleId)
0:112 Sequence
0:112 move second child to first child ( temp mediump 2-component vector of float)
0:112 'a2' ( temp mediump 2-component vector of float)
0:112 'gl_SamplePosition' ( smooth in mediump 2-component vector of float SamplePosition)
0:113 Sequence
0:113 move second child to first child ( temp highp int)
0:113 'a3' ( temp highp int)
0:113 direct index ( flat temp highp int SampleMaskIn)
0:113 'gl_SampleMaskIn' ( flat in implicitly-sized array of highp int SampleMaskIn)
0:113 Constant:
0:113 0 (const int)
0:114 move second child to first child ( temp highp int)
0:114 direct index ( temp highp int SampleMaskIn)
0:114 'gl_SampleMask' ( out implicitly-sized array of highp int SampleMaskIn)
0:114 Constant:
0:114 0 (const int)
0:114 'a3' ( temp highp int)
0:115 Sequence
0:115 move second child to first child ( temp mediump int)
0:115 'n1' ( temp mediump int)
0:115 Constant:
0:115 4 (const int)
0:116 Sequence
0:116 move second child to first child ( temp mediump int)
0:116 'n2' ( temp mediump int)
0:116 'gl_NumSamples' ( uniform lowp int)
0:128 Function Definition: goodImageAtom( ( global void)
0:128 Function Parameters:
0:? Sequence
0:134 imageAtomicAdd ( global highp int)
0:134 'im2Di' (layout( r32i) uniform highp iimage2D)
0:134 'P' ( uniform mediump 2-component vector of int)
0:134 'dati' ( temp mediump int)
0:135 imageAtomicAdd ( global highp uint)
0:135 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:135 'P' ( uniform mediump 2-component vector of int)
0:135 'datu' ( temp mediump uint)
0:136 imageAtomicMin ( global highp int)
0:136 'im2Di' (layout( r32i) uniform highp iimage2D)
0:136 'P' ( uniform mediump 2-component vector of int)
0:136 'dati' ( temp mediump int)
0:137 imageAtomicMin ( global highp uint)
0:137 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:137 'P' ( uniform mediump 2-component vector of int)
0:137 'datu' ( temp mediump uint)
0:138 imageAtomicMax ( global highp int)
0:138 'im2Di' (layout( r32i) uniform highp iimage2D)
0:138 'P' ( uniform mediump 2-component vector of int)
0:138 'dati' ( temp mediump int)
0:139 imageAtomicMax ( global highp uint)
0:139 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:139 'P' ( uniform mediump 2-component vector of int)
0:139 'datu' ( temp mediump uint)
0:140 imageAtomicAnd ( global highp int)
0:140 'im2Di' (layout( r32i) uniform highp iimage2D)
0:140 'P' ( uniform mediump 2-component vector of int)
0:140 'dati' ( temp mediump int)
0:141 imageAtomicAnd ( global highp uint)
0:141 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:141 'P' ( uniform mediump 2-component vector of int)
0:141 'datu' ( temp mediump uint)
0:142 imageAtomicOr ( global highp int)
0:142 'im2Di' (layout( r32i) uniform highp iimage2D)
0:142 'P' ( uniform mediump 2-component vector of int)
0:142 'dati' ( temp mediump int)
0:143 imageAtomicOr ( global highp uint)
0:143 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:143 'P' ( uniform mediump 2-component vector of int)
0:143 'datu' ( temp mediump uint)
0:144 imageAtomicXor ( global highp int)
0:144 'im2Di' (layout( r32i) uniform highp iimage2D)
0:144 'P' ( uniform mediump 2-component vector of int)
0:144 'dati' ( temp mediump int)
0:145 imageAtomicXor ( global highp uint)
0:145 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:145 'P' ( uniform mediump 2-component vector of int)
0:145 'datu' ( temp mediump uint)
0:146 imageAtomicExchange ( global highp int)
0:146 'im2Di' (layout( r32i) uniform highp iimage2D)
0:146 'P' ( uniform mediump 2-component vector of int)
0:146 'dati' ( temp mediump int)
0:147 imageAtomicExchange ( global highp uint)
0:147 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:147 'P' ( uniform mediump 2-component vector of int)
0:147 'datu' ( temp mediump uint)
0:148 imageAtomicExchange ( global highp float)
0:148 'im2Df' (layout( r32f) uniform highp image2D)
0:148 'P' ( uniform mediump 2-component vector of int)
0:148 'datf' ( temp mediump float)
0:149 imageAtomicCompSwap ( global highp int)
0:149 'im2Di' (layout( r32i) uniform highp iimage2D)
0:149 'P' ( uniform mediump 2-component vector of int)
0:149 Constant:
0:149 3 (const int)
0:149 'dati' ( temp mediump int)
0:150 imageAtomicCompSwap ( global highp uint)
0:150 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:150 'P' ( uniform mediump 2-component vector of int)
0:150 Constant:
0:150 5 (const uint)
0:150 'datu' ( temp mediump uint)
0:152 imageAtomicMax ( global highp int)
0:152 'badIm2Di' (layout( rgba16i) uniform highp iimage2D)
0:152 'P' ( uniform mediump 2-component vector of int)
0:152 'dati' ( temp mediump int)
0:153 imageAtomicMax ( global highp uint)
0:153 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D)
0:153 'P' ( uniform mediump 2-component vector of int)
0:153 'datu' ( temp mediump uint)
0:154 imageAtomicExchange ( global highp float)
0:154 'badIm2Df' (layout( rgba32f) uniform highp image2D)
0:154 'P' ( uniform mediump 2-component vector of int)
0:154 'datf' ( temp mediump float)
0:169 Function Definition: interp( ( global void)
0:169 Function Parameters:
0:? Sequence
0:176 move second child to first child ( temp mediump 2-component vector of float)
0:176 'res2' ( temp mediump 2-component vector of float)
0:176 interpolateAtCentroid ( global mediump 2-component vector of float)
0:176 'colorfc' ( centroid flat in mediump 2-component vector of float)
0:177 move second child to first child ( temp mediump 4-component vector of float)
0:177 'res4' ( temp mediump 4-component vector of float)
0:177 interpolateAtCentroid ( global mediump 4-component vector of float)
0:177 'colorSampIn' ( smooth sample in mediump 4-component vector of float)
0:178 move second child to first child ( temp mediump 4-component vector of float)
0:178 'res4' ( temp mediump 4-component vector of float)
0:178 interpolateAtCentroid ( global mediump 4-component vector of float)
0:178 'colorfsi' ( flat sample in mediump 4-component vector of float)
0:179 move second child to first child ( temp mediump float)
0:179 'res' ( temp mediump float)
0:179 interpolateAtCentroid ( global mediump float)
0:179 'scalarIn' ( smooth in mediump float)
0:180 'res3' ( temp mediump 3-component vector of float)
0:181 move second child to first child ( temp mediump 3-component vector of float)
0:181 'res3' ( temp mediump 3-component vector of float)
0:181 interpolateAtCentroid ( global mediump 3-component vector of float)
0:181 direct index ( smooth sample temp mediump 3-component vector of float)
0:181 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
0:181 Constant:
0:181 2 (const int)
0:182 move second child to first child ( temp mediump 2-component vector of float)
0:182 'res2' ( temp mediump 2-component vector of float)
0:182 interpolateAtCentroid ( global mediump 2-component vector of float)
0:182 vector swizzle ( temp mediump 2-component vector of float)
0:182 direct index ( smooth sample temp mediump 3-component vector of float)
0:182 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
0:182 Constant:
0:182 2 (const int)
0:182 Sequence
0:182 Constant:
0:182 0 (const int)
0:182 Constant:
0:182 1 (const int)
0:184 'res3' ( temp mediump 3-component vector of float)
0:185 move second child to first child ( temp mediump 3-component vector of float)
0:185 'res3' ( temp mediump 3-component vector of float)
0:185 interpolateAtSample ( global mediump 3-component vector of float)
0:185 indirect index ( smooth sample temp mediump 3-component vector of float)
0:185 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
0:185 'i' ( uniform mediump int)
0:185 Constant:
0:185 0 (const int)
0:186 move second child to first child ( temp mediump 2-component vector of float)
0:186 'res2' ( temp mediump 2-component vector of float)
0:186 interpolateAtSample ( global mediump 2-component vector of float)
0:186 vector swizzle ( temp mediump 2-component vector of float)
0:186 direct index ( smooth sample temp mediump 3-component vector of float)
0:186 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
0:186 Constant:
0:186 2 (const int)
0:186 Sequence
0:186 Constant:
0:186 0 (const int)
0:186 Constant:
0:186 1 (const int)
0:186 Constant:
0:186 2 (const int)
0:187 move second child to first child ( temp mediump float)
0:187 'res' ( temp mediump float)
0:187 interpolateAtSample ( global mediump float)
0:187 'scalarIn' ( smooth in mediump float)
0:187 Constant:
0:187 1 (const int)
0:189 'res3' ( temp mediump 3-component vector of float)
0:190 move second child to first child ( temp mediump 3-component vector of float)
0:190 'res3' ( temp mediump 3-component vector of float)
0:190 interpolateAtOffset ( global mediump 3-component vector of float)
0:190 direct index ( smooth sample temp mediump 3-component vector of float)
0:190 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
0:190 Constant:
0:190 2 (const int)
0:190 Constant:
0:190 0.200000
0:190 0.200000
0:191 move second child to first child ( temp mediump 2-component vector of float)
0:191 'res2' ( temp mediump 2-component vector of float)
0:191 interpolateAtOffset ( global mediump 2-component vector of float)
0:191 vector swizzle ( temp mediump 2-component vector of float)
0:191 direct index ( smooth sample temp mediump 3-component vector of float)
0:191 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
0:191 Constant:
0:191 2 (const int)
0:191 Sequence
0:191 Constant:
0:191 0 (const int)
0:191 Constant:
0:191 1 (const int)
0:191 Constant:
0:191 0.200000
0:191 0.200000
0:192 move second child to first child ( temp mediump float)
0:192 'res' ( temp mediump float)
0:192 interpolateAtOffset ( global mediump float)
0:192 add ( temp mediump float)
0:192 'scalarIn' ( smooth in mediump float)
0:192 'scalarIn' ( smooth in mediump float)
0:192 Constant:
0:192 0.200000
0:192 0.200000
0:193 move second child to first child ( temp mediump float)
0:193 'res' ( temp mediump float)
0:193 interpolateAtOffset ( global mediump float)
0:193 'scalarIn' ( smooth in mediump float)
0:193 Constant:
0:193 0.200000
0:193 0.200000
0:196 move second child to first child ( temp mediump float)
0:196 'res' ( temp mediump float)
0:196 interpolateAtCentroid ( global mediump float)
0:196 'f' ( temp mediump float)
0:197 'res4' ( temp mediump 4-component vector of float)
0:221 Function Definition: blendFoo( ( temp void)
0:221 Function Parameters:
0:222 Function Definition: blendFoo(vf3; ( global void)
0:222 Function Parameters:
0:222 'v' ( in mediump 3-component vector of float)
0:? Linker Objects
0:? 'outbinst' ( out block{ out mediump int a})
0:? 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s})
0:? 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon})
0:? 'aliased' (layout( location=13) smooth in mediump 4-component vector of float)
0:? 'arrayedInst' ( in 4-element array of block{ in mediump float f})
0:? 'i' ( uniform mediump int)
0:? 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord)
0:? 'gl_FragDepth' ( gl_FragDepth highp float FragDepth)
0:? 'inf' ( smooth in mediump 2-component vector of float)
0:? 'ing' ( smooth in mediump 2-component vector of float)
0:? 'offsets' ( uniform 4-element array of mediump 2-component vector of int)
0:? 'sArray' ( uniform 4-element array of lowp sampler2D)
0:? 'sIndex' ( uniform mediump int)
0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint)
0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump int i})
0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer mediump int i})
0:? 'iArray' ( writeonly uniform 5-element array of highp image2D)
0:? 'constOffsets' ( const 4-element array of mediump 2-component vector of int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 'CA1' ( writeonly uniform highp imageCubeArray)
0:? 'CA2' ( writeonly uniform highp iimageCubeArray)
0:? 'CA3' ( writeonly uniform highp uimageCubeArray)
0:? 'CA4' ( uniform highp samplerCubeArray)
0:? 'CA5' ( uniform highp samplerCubeArrayShadow)
0:? 'CA6' ( uniform highp isamplerCubeArray)
0:? 'CA7' ( uniform highp usamplerCubeArray)
0:? 'gl_SampleMaskIn' ( flat in implicitly-sized array of highp int SampleMaskIn)
0:? 'gl_SampleMask' ( out implicitly-sized array of highp int SampleMaskIn)
0:? 'im2Df' (layout( r32f) uniform highp image2D)
0:? 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:? 'im2Di' (layout( r32i) uniform highp iimage2D)
0:? 'P' ( uniform mediump 2-component vector of int)
0:? 'badIm2Df' (layout( rgba32f) uniform highp image2D)
0:? 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D)
0:? 'badIm2Di' (layout( rgba16i) uniform highp iimage2D)
0:? 'colorCentroidBad' ( centroid out mediump 4-component vector of float)
0:? 'colorBadFlat' ( flat out mediump 4-component vector of float)
0:? 'colorBadSmooth' ( smooth out mediump 4-component vector of float)
0:? 'colorBadNo' ( noperspective out mediump 4-component vector of float)
0:? 'colorfc' ( centroid flat in mediump 2-component vector of float)
0:? 'scalarIn' ( smooth in mediump float)
0:? 'colorSampIn' ( smooth sample in mediump 4-component vector of float)
0:? 'colorSampleBad' ( sample out mediump 4-component vector of float)
0:? 'colorfsi' ( flat sample in mediump 4-component vector of float)
0:? 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
0:? 'badout' ( out mediump 4-component vector of float)
0:? 'outAA' ( out 2-element array of 2-element array of mediump 4-component vector of float)
Linked fragment stage:
ERROR: Linking fragment stage: when more than one fragment shader output, all must have location qualifiers
Shader version: 320
gl_FragCoord pixel center is integer
gl_FragCoord origin is upper left
using early_fragment_tests
using depth_any
using blend_support_multiply blend_support_screen blend_support_overlay blend_support_darken blend_support_lighten blend_support_colordodge blend_support_colorburn blend_support_hardlight blend_support_softlight blend_support_difference blend_support_exclusion blend_support_hsl_hue blend_support_hsl_saturation blend_support_hsl_color blend_support_hsl_luminosity blend_support_all_equations
ERROR: node is still EOpNull!
0:49 Function Definition: main( ( global void)
0:49 Function Parameters:
0:51 Sequence
0:51 move second child to first child ( temp highp float)
0:51 'gl_FragDepth' ( gl_FragDepth highp float FragDepth)
0:51 Constant:
0:51 0.200000
0:52 Sequence
0:52 move second child to first child ( temp bool)
0:52 'f' ( temp bool)
0:52 'gl_FrontFacing' ( gl_FrontFacing bool Face)
0:? Linker Objects
0:? 'outbinst' ( out block{ out mediump int a})
0:? 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s})
0:? 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon})
0:? 'aliased' (layout( location=13) smooth in mediump 4-component vector of float)
0:? 'arrayedInst' ( in 4-element array of block{ in mediump float f})
0:? 'i' ( uniform mediump int)
0:? 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord)
0:? 'gl_FragDepth' ( gl_FragDepth highp float FragDepth)
0:? 'inf' ( smooth in mediump 2-component vector of float)
0:? 'ing' ( smooth in mediump 2-component vector of float)
0:? 'offsets' ( uniform 4-element array of mediump 2-component vector of int)
0:? 'sArray' ( uniform 4-element array of lowp sampler2D)
0:? 'sIndex' ( uniform mediump int)
0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint)
0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump int i})
0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer mediump int i})
0:? 'iArray' ( writeonly uniform 5-element array of highp image2D)
0:? 'constOffsets' ( const 4-element array of mediump 2-component vector of int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 'CA1' ( writeonly uniform highp imageCubeArray)
0:? 'CA2' ( writeonly uniform highp iimageCubeArray)
0:? 'CA3' ( writeonly uniform highp uimageCubeArray)
0:? 'CA4' ( uniform highp samplerCubeArray)
0:? 'CA5' ( uniform highp samplerCubeArrayShadow)
0:? 'CA6' ( uniform highp isamplerCubeArray)
0:? 'CA7' ( uniform highp usamplerCubeArray)
0:? 'gl_SampleMaskIn' ( flat in 1-element array of highp int SampleMaskIn)
0:? 'gl_SampleMask' ( out 1-element array of highp int SampleMaskIn)
0:? 'im2Df' (layout( r32f) uniform highp image2D)
0:? 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:? 'im2Di' (layout( r32i) uniform highp iimage2D)
0:? 'P' ( uniform mediump 2-component vector of int)
0:? 'badIm2Df' (layout( rgba32f) uniform highp image2D)
0:? 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D)
0:? 'badIm2Di' (layout( rgba16i) uniform highp iimage2D)
0:? 'colorCentroidBad' ( centroid out mediump 4-component vector of float)
0:? 'colorBadFlat' ( flat out mediump 4-component vector of float)
0:? 'colorBadSmooth' ( smooth out mediump 4-component vector of float)
0:? 'colorBadNo' ( noperspective out mediump 4-component vector of float)
0:? 'colorfc' ( centroid flat in mediump 2-component vector of float)
0:? 'scalarIn' ( smooth in mediump float)
0:? 'colorSampIn' ( smooth sample in mediump 4-component vector of float)
0:? 'colorSampleBad' ( sample out mediump 4-component vector of float)
0:? 'colorfsi' ( flat sample in mediump 4-component vector of float)
0:? 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
0:? 'badout' ( out mediump 4-component vector of float)
0:? 'outAA' ( out 2-element array of 2-element array of mediump 4-component vector of float)

View File

@ -0,0 +1,251 @@
320.geom
ERROR: 0:19: 'fromVertex' : block instance name redefinition
ERROR: 0:23: 'fromVertex' : redefinition
ERROR: 0:25: 'fooC' : block instance name redefinition
ERROR: 0:33: 'EmitStreamVertex' : no matching overloaded function found
ERROR: 0:34: 'EndStreamPrimitive' : no matching overloaded function found
ERROR: 0:37: 'gl_ClipDistance' : undeclared identifier
ERROR: 0:37: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector
ERROR: 0:38: 'gl_ClipDistance' : no such field in structure
ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:37: 'assign' : l-value required (can't modify a const)
ERROR: 0:45: 'selecting output stream' : not supported with this profile: es
ERROR: 0:52: 'max_vertices' : too large, must be less than gl_MaxGeometryOutputVertices
ERROR: 0:52: 'max_vertices' : cannot change previously set layout value
ERROR: 0:53: 'max_vertices' : can only apply to a standalone qualifier
ERROR: 0:58: 'points' : cannot change previously set output primitive
ERROR: 0:59: 'points' : cannot change previously set output primitive
ERROR: 0:60: 'triangle_strip' : cannot apply to input
ERROR: 0:61: 'triangle_strip' : cannot apply to: uniform
ERROR: 0:62: 'triangle_strip' : can only apply to a standalone qualifier
ERROR: 0:63: 'triangle_strip' : can only apply to a standalone qualifier
ERROR: 0:64: 'invocations' : can only apply to a standalone qualifier
ERROR: 0:66: 'invocations' : can only apply to a standalone qualifier
ERROR: 0:67: 'max_vertices' : can only apply to a standalone qualifier
ERROR: 0:68: 'triangle_strip' : can only apply to a standalone qualifier
ERROR: 0:71: 'lines' : cannot apply to 'out'
ERROR: 0:73: 'triangles' : cannot change previously set input primitive
ERROR: 0:74: 'triangles_adjacency' : cannot change previously set input primitive
ERROR: 0:106: 'gl_ViewportIndex' : undeclared identifier
ERROR: 0:107: 'gl_MaxViewports' : undeclared identifier
ERROR: 0:113: 'lines_adjacency' : inconsistent input primitive for array size of explArrayBad
ERROR: 0:114: 'in' : type must be an array: nonArrayed
ERROR: 0:122: 'component' : not supported with this profile: es
ERROR: 0:126: 'gl_MaxGeometryVaryingComponents' : undeclared identifier
ERROR: 0:127: 'gl_VerticesIn' : undeclared identifier
ERROR: 0:132: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_geometry_point_size
GL_OES_geometry_point_size
ERROR: 0:133: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_geometry_point_size
GL_OES_geometry_point_size
ERROR: 36 compilation errors. No code generated.
Shader version: 320
invocations = 4
max_vertices = 200
input primitive = lines_adjacency
output primitive = triangle_strip
ERROR: node is still EOpNull!
0:29 Function Definition: main( ( global void)
0:29 Function Parameters:
0:31 Sequence
0:31 EmitVertex ( global void)
0:32 EndPrimitive ( global void)
0:33 Constant:
0:33 0.000000
0:34 Constant:
0:34 0.000000
0:36 move second child to first child ( temp mediump 3-component vector of float)
0:36 color: direct index for structure (layout( stream=0) out mediump 3-component vector of float)
0:36 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color})
0:36 Constant:
0:36 0 (const uint)
0:36 color: direct index for structure ( in mediump 3-component vector of float)
0:36 direct index ( temp block{ in mediump 3-component vector of float color})
0:36 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color})
0:36 Constant:
0:36 0 (const int)
0:36 Constant:
0:36 0 (const int)
0:37 move second child to first child ( temp float)
0:37 Constant:
0:37 0.000000
0:38 Constant:
0:38 0.000000
0:39 move second child to first child ( temp highp 4-component vector of float)
0:39 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position)
0:39 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize})
0:39 Constant:
0:39 0 (const uint)
0:39 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
0:39 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:39 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
0:39 0 (const int)
0:41 move second child to first child ( temp highp int)
0:41 'gl_PrimitiveID' (layout( stream=0) out highp int PrimitiveID)
0:41 'gl_PrimitiveIDIn' ( in highp int PrimitiveID)
0:42 move second child to first child ( temp highp int)
0:42 'gl_Layer' (layout( stream=0) out highp int Layer)
0:42 Constant:
0:42 2 (const int)
0:53 Function Definition: foo(i1; ( global void)
0:53 Function Parameters:
0:53 'a' ( in highp int)
0:55 Sequence
0:55 move second child to first child ( temp mediump 4-component vector of float)
0:55 a: direct index for structure (layout( stream=0) out mediump 4-component vector of float)
0:55 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a})
0:55 Constant:
0:55 0 (const int)
0:55 Constant:
0:55 1.000000
0:55 1.000000
0:55 1.000000
0:55 1.000000
0:104 Function Definition: fooe1( ( global void)
0:104 Function Parameters:
0:106 Sequence
0:106 'gl_ViewportIndex' ( temp float)
0:107 'gl_MaxViewports' ( temp float)
0:108 Constant:
0:108 4 (const int)
0:109 Sequence
0:109 move second child to first child ( temp highp int)
0:109 'inv' ( temp highp int)
0:109 'gl_InvocationID' ( in highp int InvocationID)
0:124 Function Definition: notHere( ( global void)
0:124 Function Parameters:
0:126 Sequence
0:126 'gl_MaxGeometryVaryingComponents' ( temp float)
0:127 'gl_VerticesIn' ( temp float)
0:130 Function Definition: pointSize2( ( global void)
0:130 Function Parameters:
0:132 Sequence
0:132 Sequence
0:132 move second child to first child ( temp highp float)
0:132 'ps' ( temp highp float)
0:132 gl_PointSize: direct index for structure ( in highp float PointSize)
0:132 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:132 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:132 Constant:
0:132 3 (const int)
0:132 Constant:
0:132 1 (const int)
0:133 move second child to first child ( temp highp float)
0:133 gl_PointSize: direct index for structure (layout( stream=0) gl_PointSize highp float PointSize)
0:133 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize})
0:133 Constant:
0:133 1 (const uint)
0:133 'ps' ( temp highp float)
0:? Linker Objects
0:? 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color})
0:? 'nonBlockUnsized' ( in 4-element array of mediump 4-component vector of float)
0:? 'toF' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color})
0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color})
0:? 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:? 'ov4' (layout( stream=4) out mediump 4-component vector of float)
0:? 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a})
0:? 'badv4' (layout( stream=0) out mediump 4-component vector of float)
0:? 'bad2v4' ( in 4-element array of mediump 4-component vector of float)
0:? 'anon@1' (layout( stream=0) out block{layout( stream=0) out highp int a})
0:? 'outbi' (layout( stream=0) out block{layout( stream=0) out highp int a, layout( stream=0) out highp int b, layout( stream=0) out highp int c})
0:? 'insn' ( in 4-element array of block{ in highp int a15})
0:? 'anon@2' (layout( stream=0) out block{layout( stream=0) out mediump float f15})
0:? 'anon@3' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b15})
0:? 'summ' ( const highp int)
0:? 2752 (const int)
0:? 'explArray' ( in 4-element array of mediump 4-component vector of float)
0:? 'explArrayBad' ( in 5-element array of mediump 4-component vector of float)
0:? 'nonArrayed' ( in mediump 4-component vector of float)
0:? 'myColor1' (layout( stream=0) flat out mediump 3-component vector of float)
0:? 'myColor2' (layout( stream=0) centroid out mediump 3-component vector of float)
0:? 'centr' ( centroid in 4-element array of mediump 3-component vector of float)
0:? 'perSampleColor' (layout( stream=0) sample out mediump 4-component vector of float)
0:? 'comp' (layout( location=7 component=2) in 4-element array of mediump float)
Linked geometry stage:
Shader version: 320
invocations = 4
max_vertices = 200
input primitive = lines_adjacency
output primitive = triangle_strip
ERROR: node is still EOpNull!
0:29 Function Definition: main( ( global void)
0:29 Function Parameters:
0:31 Sequence
0:31 EmitVertex ( global void)
0:32 EndPrimitive ( global void)
0:33 Constant:
0:33 0.000000
0:34 Constant:
0:34 0.000000
0:36 move second child to first child ( temp mediump 3-component vector of float)
0:36 color: direct index for structure (layout( stream=0) out mediump 3-component vector of float)
0:36 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color})
0:36 Constant:
0:36 0 (const uint)
0:36 color: direct index for structure ( in mediump 3-component vector of float)
0:36 direct index ( temp block{ in mediump 3-component vector of float color})
0:36 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color})
0:36 Constant:
0:36 0 (const int)
0:36 Constant:
0:36 0 (const int)
0:37 move second child to first child ( temp float)
0:37 Constant:
0:37 0.000000
0:38 Constant:
0:38 0.000000
0:39 move second child to first child ( temp highp 4-component vector of float)
0:39 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position)
0:39 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize})
0:39 Constant:
0:39 0 (const uint)
0:39 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
0:39 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:39 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
0:39 0 (const int)
0:41 move second child to first child ( temp highp int)
0:41 'gl_PrimitiveID' (layout( stream=0) out highp int PrimitiveID)
0:41 'gl_PrimitiveIDIn' ( in highp int PrimitiveID)
0:42 move second child to first child ( temp highp int)
0:42 'gl_Layer' (layout( stream=0) out highp int Layer)
0:42 Constant:
0:42 2 (const int)
0:? Linker Objects
0:? 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color})
0:? 'nonBlockUnsized' ( in 4-element array of mediump 4-component vector of float)
0:? 'toF' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color})
0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color})
0:? 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:? 'ov4' (layout( stream=4) out mediump 4-component vector of float)
0:? 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a})
0:? 'badv4' (layout( stream=0) out mediump 4-component vector of float)
0:? 'bad2v4' ( in 4-element array of mediump 4-component vector of float)
0:? 'anon@1' (layout( stream=0) out block{layout( stream=0) out highp int a})
0:? 'outbi' (layout( stream=0) out block{layout( stream=0) out highp int a, layout( stream=0) out highp int b, layout( stream=0) out highp int c})
0:? 'insn' ( in 4-element array of block{ in highp int a15})
0:? 'anon@2' (layout( stream=0) out block{layout( stream=0) out mediump float f15})
0:? 'anon@3' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b15})
0:? 'summ' ( const highp int)
0:? 2752 (const int)
0:? 'explArray' ( in 4-element array of mediump 4-component vector of float)
0:? 'explArrayBad' ( in 5-element array of mediump 4-component vector of float)
0:? 'nonArrayed' ( in mediump 4-component vector of float)
0:? 'myColor1' (layout( stream=0) flat out mediump 3-component vector of float)
0:? 'myColor2' (layout( stream=0) centroid out mediump 3-component vector of float)
0:? 'centr' ( centroid in 4-element array of mediump 3-component vector of float)
0:? 'perSampleColor' (layout( stream=0) sample out mediump 4-component vector of float)
0:? 'comp' (layout( location=7 component=2) in 4-element array of mediump float)

View File

@ -0,0 +1,516 @@
320.tesc
ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:10: 'patch' : can only use on output in tessellation-control shader
ERROR: 0:24: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
GL_OES_tessellation_point_size
ERROR: 0:25: 'gl_ClipDistance' : no such field in structure
ERROR: 0:25: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:32: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
GL_OES_tessellation_point_size
ERROR: 0:33: 'gl_ClipDistance' : no such field in structure
ERROR: 0:33: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:33: 'assign' : l-value required (can't modify a const)
ERROR: 0:39: '' : tessellation control barrier() cannot be placed within flow control
ERROR: 0:41: '' : tessellation control barrier() cannot be placed within flow control
ERROR: 0:46: '' : tessellation control barrier() cannot be placed within flow control
ERROR: 0:51: '' : tessellation control barrier() cannot be placed within flow control
ERROR: 0:54: '' : tessellation control barrier() cannot be placed within flow control
ERROR: 0:61: '' : tessellation control barrier() cannot be placed after a return from main()
ERROR: 0:64: 'vertices' : can only apply to 'out'
ERROR: 0:65: 'vertices' : cannot change previously set layout value
ERROR: 0:69: '[' : array index out of range '4'
ERROR: 0:71: '' : tessellation control barrier() must be in main()
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:78: '' : array size required
ERROR: 0:84: 'location' : overlapping use of location 4
ERROR: 0:88: 'location' : overlapping use of location 4
ERROR: 0:98: 'vertices' : can only apply to a standalone qualifier
ERROR: 0:99: 'vertices' : inconsistent output number of vertices for array size of misSized
ERROR: 0:104: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
GL_OES_tessellation_point_size
ERROR: 0:105: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
GL_OES_tessellation_point_size
ERROR: 0:123: '[' : array index out of range '2'
ERROR: 0:126: '' : array size required
ERROR: 0:142: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID
ERROR: 0:143: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID
ERROR: 0:146: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID
ERROR: 35 compilation errors. No code generated.
Shader version: 320
Requested GL_ARB_separate_shader_objects
vertices = 4
ERROR: node is still EOpNull!
0:13 Function Definition: main( ( global void)
0:13 Function Parameters:
0:15 Sequence
0:15 Barrier ( global void)
0:17 Sequence
0:17 move second child to first child ( temp highp int)
0:17 'a' ( temp highp int)
0:17 Constant:
0:17 5392 (const int)
0:23 Sequence
0:23 move second child to first child ( temp highp 4-component vector of float)
0:23 'p' ( temp highp 4-component vector of float)
0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
0:23 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
0:23 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
0:23 Constant:
0:23 1 (const int)
0:23 Constant:
0:23 0 (const int)
0:24 Sequence
0:24 move second child to first child ( temp highp float)
0:24 'ps' ( temp highp float)
0:24 gl_PointSize: direct index for structure ( in highp float PointSize)
0:24 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
0:24 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
0:24 Constant:
0:24 1 (const int)
0:24 Constant:
0:24 1 (const int)
0:25 Sequence
0:25 move second child to first child ( temp highp float)
0:25 'cd' ( temp highp float)
0:25 Constant:
0:25 0.000000
0:27 Sequence
0:27 move second child to first child ( temp highp int)
0:27 'pvi' ( temp highp int)
0:27 'gl_PatchVerticesIn' ( in highp int PatchVertices)
0:28 Sequence
0:28 move second child to first child ( temp highp int)
0:28 'pid' ( temp highp int)
0:28 'gl_PrimitiveID' ( in highp int PrimitiveID)
0:29 Sequence
0:29 move second child to first child ( temp highp int)
0:29 'iid' ( temp highp int)
0:29 'gl_InvocationID' ( in highp int InvocationID)
0:31 move second child to first child ( temp highp 4-component vector of float)
0:31 gl_Position: direct index for structure ( out highp 4-component vector of float Position)
0:31 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:31 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:31 'gl_InvocationID' ( in highp int InvocationID)
0:31 Constant:
0:31 0 (const int)
0:31 'p' ( temp highp 4-component vector of float)
0:32 move second child to first child ( temp highp float)
0:32 gl_PointSize: direct index for structure ( out highp float PointSize)
0:32 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:32 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:32 'gl_InvocationID' ( in highp int InvocationID)
0:32 Constant:
0:32 1 (const int)
0:32 'ps' ( temp highp float)
0:33 move second child to first child ( temp highp float)
0:33 Constant:
0:33 0.000000
0:33 'cd' ( temp highp float)
0:35 move second child to first child ( temp highp float)
0:35 direct index ( patch temp highp float TessLevelOuter)
0:35 'gl_TessLevelOuter' ( patch out 4-element array of highp float TessLevelOuter)
0:35 Constant:
0:35 3 (const int)
0:35 Constant:
0:35 3.200000
0:36 move second child to first child ( temp highp float)
0:36 direct index ( patch temp highp float TessLevelInner)
0:36 'gl_TessLevelInner' ( patch out 2-element array of highp float TessLevelInner)
0:36 Constant:
0:36 1 (const int)
0:36 Constant:
0:36 1.300000
0:38 Test condition and select ( temp void)
0:38 Condition
0:38 Compare Greater Than ( temp bool)
0:38 'a' ( temp highp int)
0:38 Constant:
0:38 10 (const int)
0:38 true case
0:39 Barrier ( global void)
0:38 false case
0:41 Barrier ( global void)
0:43 Barrier ( global void)
0:47 Loop with condition not tested first
0:47 Loop Condition
0:47 Compare Greater Than ( temp bool)
0:47 'a' ( temp highp int)
0:47 Constant:
0:47 10 (const int)
0:47 Loop Body
0:46 Sequence
0:46 Barrier ( global void)
0:49 switch
0:49 condition
0:49 'a' ( temp highp int)
0:49 body
0:49 Sequence
0:50 default:
0:? Sequence
0:51 Barrier ( global void)
0:52 Branch: Break
0:54 Test condition and select ( temp highp int)
0:54 Condition
0:54 Compare Less Than ( temp bool)
0:54 'a' ( temp highp int)
0:54 Constant:
0:54 12 (const int)
0:54 true case
0:54 'a' ( temp highp int)
0:54 false case
0:54 Comma ( temp highp int)
0:54 Barrier ( global void)
0:54 'a' ( temp highp int)
0:56 Sequence
0:56 Barrier ( global void)
0:59 Branch: Return
0:61 Barrier ( global void)
0:67 Function Definition: foo( ( global void)
0:67 Function Parameters:
0:69 Sequence
0:69 gl_Position: direct index for structure ( out highp 4-component vector of float Position)
0:69 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:69 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:69 Constant:
0:69 4 (const int)
0:69 Constant:
0:69 0 (const int)
0:71 Barrier ( global void)
0:102 Function Definition: pointSize2( ( global void)
0:102 Function Parameters:
0:104 Sequence
0:104 Sequence
0:104 move second child to first child ( temp highp float)
0:104 'ps' ( temp highp float)
0:104 gl_PointSize: direct index for structure ( in highp float PointSize)
0:104 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
0:104 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
0:104 Constant:
0:104 1 (const int)
0:104 Constant:
0:104 1 (const int)
0:105 move second child to first child ( temp highp float)
0:105 gl_PointSize: direct index for structure ( out highp float PointSize)
0:105 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:105 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:105 'gl_InvocationID' ( in highp int InvocationID)
0:105 Constant:
0:105 1 (const int)
0:105 'ps' ( temp highp float)
0:110 Function Definition: goodfoop( ( global void)
0:110 Function Parameters:
0:? Sequence
0:114 multiply second child into first child ( temp highp 3-component vector of float)
0:114 'pv3' ( noContraction temp highp 3-component vector of float)
0:114 'pv3' ( noContraction temp highp 3-component vector of float)
0:115 move second child to first child ( temp highp 3-component vector of float)
0:115 'pv3' ( noContraction temp highp 3-component vector of float)
0:115 fma ( global highp 3-component vector of float)
0:115 'pv3' ( noContraction temp highp 3-component vector of float)
0:115 'pv3' ( noContraction temp highp 3-component vector of float)
0:115 'pv3' ( noContraction temp highp 3-component vector of float)
0:116 move second child to first child ( temp highp float)
0:116 'd' ( noContraction temp highp float)
0:116 fma ( global highp float)
0:116 'd' ( noContraction temp highp float)
0:116 'd' ( noContraction temp highp float)
0:116 'd' ( noContraction temp highp float)
0:119 Function Definition: bb( ( global void)
0:119 Function Parameters:
0:121 Sequence
0:121 move second child to first child ( temp highp 4-component vector of float)
0:121 direct index ( patch temp highp 4-component vector of float BoundingBox)
0:121 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox)
0:121 Constant:
0:121 0 (const int)
0:121 Constant:
0:121 0.000000
0:121 0.000000
0:121 0.000000
0:121 0.000000
0:122 move second child to first child ( temp highp 4-component vector of float)
0:122 direct index ( patch temp highp 4-component vector of float BoundingBox)
0:122 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox)
0:122 Constant:
0:122 1 (const int)
0:122 Constant:
0:122 1.000000
0:122 1.000000
0:122 1.000000
0:122 1.000000
0:123 move second child to first child ( temp highp 4-component vector of float)
0:123 direct index ( patch temp highp 4-component vector of float BoundingBox)
0:123 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox)
0:123 Constant:
0:123 2 (const int)
0:123 Constant:
0:123 2.000000
0:123 2.000000
0:123 2.000000
0:123 2.000000
0:134 Function Definition: outputtingOutparam(i1; ( global void)
0:134 Function Parameters:
0:134 'a' ( out highp int)
0:136 Sequence
0:136 move second child to first child ( temp highp int)
0:136 'a' ( out highp int)
0:136 Constant:
0:136 2 (const int)
0:139 Function Definition: outputting( ( global void)
0:139 Function Parameters:
0:141 Sequence
0:141 move second child to first child ( temp highp int)
0:141 indirect index ( temp highp int)
0:141 'outa' ( out 4-element array of highp int)
0:141 'gl_InvocationID' ( in highp int InvocationID)
0:141 Constant:
0:141 2 (const int)
0:142 move second child to first child ( temp highp int)
0:142 direct index ( temp highp int)
0:142 'outa' ( out 4-element array of highp int)
0:142 Constant:
0:142 1 (const int)
0:142 Constant:
0:142 2 (const int)
0:143 move second child to first child ( temp highp 4-component vector of float)
0:143 gl_Position: direct index for structure ( out highp 4-component vector of float Position)
0:143 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:143 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:143 Constant:
0:143 0 (const int)
0:143 Constant:
0:143 0 (const int)
0:143 Constant:
0:143 1.000000
0:143 1.000000
0:143 1.000000
0:143 1.000000
0:144 direct index ( temp highp int)
0:144 'outa' ( out 4-element array of highp int)
0:144 Constant:
0:144 1 (const int)
0:145 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:145 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:145 Constant:
0:145 0 (const int)
0:146 Function Call: outputtingOutparam(i1; ( global void)
0:146 direct index ( temp highp int)
0:146 'outa' ( out 4-element array of highp int)
0:146 Constant:
0:146 0 (const int)
0:147 Function Call: outputtingOutparam(i1; ( global void)
0:147 indirect index ( temp highp int)
0:147 'outa' ( out 4-element array of highp int)
0:147 'gl_InvocationID' ( in highp int InvocationID)
0:148 move second child to first child ( temp highp float)
0:148 f: direct index for structure ( out highp float)
0:148 direct index ( patch temp block{ out highp float f})
0:148 'patchIName' ( patch out 4-element array of block{ out highp float f})
0:148 Constant:
0:148 1 (const int)
0:148 Constant:
0:148 0 (const int)
0:148 Constant:
0:148 3.140000
0:149 move second child to first child ( temp highp int)
0:149 indirect index ( temp highp int)
0:149 'outa' ( out 4-element array of highp int)
0:149 'gl_InvocationID' ( in highp int InvocationID)
0:149 Constant:
0:149 2 (const int)
0:? Linker Objects
0:? 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:? 'outa' ( out 4-element array of highp int)
0:? 'patchIn' ( patch in highp 4-component vector of float)
0:? 'patchOut' ( patch out highp 4-component vector of float)
0:? 'ina' ( in highp 2-component vector of float)
0:? 'inb' ( in 32-element array of highp 2-component vector of float)
0:? 'inc' ( in 32-element array of highp 2-component vector of float)
0:? 'ind' ( in 32-element array of highp 2-component vector of float)
0:? 'implA' ( patch out implicitly-sized array of highp float)
0:? 'ivla' (layout( location=3) in 32-element array of highp 4-component vector of float)
0:? 'ivlb' (layout( location=4) in 32-element array of highp 4-component vector of float)
0:? 'ivlc' (layout( location=4) in 32-element array of highp 4-component vector of float)
0:? 'ovla' (layout( location=3) out 4-element array of highp 4-component vector of float)
0:? 'ovlb' (layout( location=4) out 4-element array of highp 4-component vector of float)
0:? 'ovlc' (layout( location=4) out 4-element array of highp 4-component vector of float)
0:? 'pinbi' ( patch out block{ out highp int a})
0:? 'myColor2' ( centroid out 4-element array of highp 3-component vector of float)
0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float)
0:? 'perSampleColor' ( sample out 4-element array of highp 4-component vector of float)
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' ( 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})
Linked tessellation control stage:
Shader version: 320
Requested GL_ARB_separate_shader_objects
vertices = 4
ERROR: node is still EOpNull!
0:13 Function Definition: main( ( global void)
0:13 Function Parameters:
0:15 Sequence
0:15 Barrier ( global void)
0:17 Sequence
0:17 move second child to first child ( temp highp int)
0:17 'a' ( temp highp int)
0:17 Constant:
0:17 5392 (const int)
0:23 Sequence
0:23 move second child to first child ( temp highp 4-component vector of float)
0:23 'p' ( temp highp 4-component vector of float)
0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
0:23 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
0:23 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
0:23 Constant:
0:23 1 (const int)
0:23 Constant:
0:23 0 (const int)
0:24 Sequence
0:24 move second child to first child ( temp highp float)
0:24 'ps' ( temp highp float)
0:24 gl_PointSize: direct index for structure ( in highp float PointSize)
0:24 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
0:24 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
0:24 Constant:
0:24 1 (const int)
0:24 Constant:
0:24 1 (const int)
0:25 Sequence
0:25 move second child to first child ( temp highp float)
0:25 'cd' ( temp highp float)
0:25 Constant:
0:25 0.000000
0:27 Sequence
0:27 move second child to first child ( temp highp int)
0:27 'pvi' ( temp highp int)
0:27 'gl_PatchVerticesIn' ( in highp int PatchVertices)
0:28 Sequence
0:28 move second child to first child ( temp highp int)
0:28 'pid' ( temp highp int)
0:28 'gl_PrimitiveID' ( in highp int PrimitiveID)
0:29 Sequence
0:29 move second child to first child ( temp highp int)
0:29 'iid' ( temp highp int)
0:29 'gl_InvocationID' ( in highp int InvocationID)
0:31 move second child to first child ( temp highp 4-component vector of float)
0:31 gl_Position: direct index for structure ( out highp 4-component vector of float Position)
0:31 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:31 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:31 'gl_InvocationID' ( in highp int InvocationID)
0:31 Constant:
0:31 0 (const int)
0:31 'p' ( temp highp 4-component vector of float)
0:32 move second child to first child ( temp highp float)
0:32 gl_PointSize: direct index for structure ( out highp float PointSize)
0:32 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:32 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:32 'gl_InvocationID' ( in highp int InvocationID)
0:32 Constant:
0:32 1 (const int)
0:32 'ps' ( temp highp float)
0:33 move second child to first child ( temp highp float)
0:33 Constant:
0:33 0.000000
0:33 'cd' ( temp highp float)
0:35 move second child to first child ( temp highp float)
0:35 direct index ( patch temp highp float TessLevelOuter)
0:35 'gl_TessLevelOuter' ( patch out 4-element array of highp float TessLevelOuter)
0:35 Constant:
0:35 3 (const int)
0:35 Constant:
0:35 3.200000
0:36 move second child to first child ( temp highp float)
0:36 direct index ( patch temp highp float TessLevelInner)
0:36 'gl_TessLevelInner' ( patch out 2-element array of highp float TessLevelInner)
0:36 Constant:
0:36 1 (const int)
0:36 Constant:
0:36 1.300000
0:38 Test condition and select ( temp void)
0:38 Condition
0:38 Compare Greater Than ( temp bool)
0:38 'a' ( temp highp int)
0:38 Constant:
0:38 10 (const int)
0:38 true case
0:39 Barrier ( global void)
0:38 false case
0:41 Barrier ( global void)
0:43 Barrier ( global void)
0:47 Loop with condition not tested first
0:47 Loop Condition
0:47 Compare Greater Than ( temp bool)
0:47 'a' ( temp highp int)
0:47 Constant:
0:47 10 (const int)
0:47 Loop Body
0:46 Sequence
0:46 Barrier ( global void)
0:49 switch
0:49 condition
0:49 'a' ( temp highp int)
0:49 body
0:49 Sequence
0:50 default:
0:? Sequence
0:51 Barrier ( global void)
0:52 Branch: Break
0:54 Test condition and select ( temp highp int)
0:54 Condition
0:54 Compare Less Than ( temp bool)
0:54 'a' ( temp highp int)
0:54 Constant:
0:54 12 (const int)
0:54 true case
0:54 'a' ( temp highp int)
0:54 false case
0:54 Comma ( temp highp int)
0:54 Barrier ( global void)
0:54 'a' ( temp highp int)
0:56 Sequence
0:56 Barrier ( global void)
0:59 Branch: Return
0:61 Barrier ( global void)
0:? Linker Objects
0:? 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:? 'outa' ( out 4-element array of highp int)
0:? 'patchIn' ( patch in highp 4-component vector of float)
0:? 'patchOut' ( patch out highp 4-component vector of float)
0:? 'ina' ( in highp 2-component vector of float)
0:? 'inb' ( in 32-element array of highp 2-component vector of float)
0:? 'inc' ( in 32-element array of highp 2-component vector of float)
0:? 'ind' ( in 32-element array of highp 2-component vector of float)
0:? 'implA' ( patch out 1-element array of highp float)
0:? 'ivla' (layout( location=3) in 32-element array of highp 4-component vector of float)
0:? 'ivlb' (layout( location=4) in 32-element array of highp 4-component vector of float)
0:? 'ivlc' (layout( location=4) in 32-element array of highp 4-component vector of float)
0:? 'ovla' (layout( location=3) out 4-element array of highp 4-component vector of float)
0:? 'ovlb' (layout( location=4) out 4-element array of highp 4-component vector of float)
0:? 'ovlc' (layout( location=4) out 4-element array of highp 4-component vector of float)
0:? 'pinbi' ( patch out block{ out highp int a})
0:? 'myColor2' ( centroid out 4-element array of highp 3-component vector of float)
0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float)
0:? 'perSampleColor' ( sample out 4-element array of highp 4-component vector of float)
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' ( 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})

View File

@ -0,0 +1,276 @@
320.tese
ERROR: 0:3: 'vertices' : there is no such layout identifier for this stage taking an assigned value
ERROR: 0:5: 'triangles' : cannot change previously set input primitive
ERROR: 0:6: 'isolines' : cannot change previously set input primitive
ERROR: 0:8: 'ccw' : cannot change previously set vertex order
ERROR: 0:12: 'equal_spacing' : cannot change previously set vertex spacing
ERROR: 0:13: 'fractional_even_spacing' : cannot change previously set vertex spacing
ERROR: 0:18: 'patch' : can only use on input in tessellation-evaluation shader
ERROR: 0:22: 'barrier' : no matching overloaded function found
ERROR: 0:33: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
GL_OES_tessellation_point_size
ERROR: 0:34: 'gl_ClipDistance' : no such field in structure
ERROR: 0:34: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:43: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
GL_OES_tessellation_point_size
ERROR: 0:44: 'gl_ClipDistance' : undeclared identifier
ERROR: 0:44: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector
ERROR: 0:44: 'assign' : l-value required (can't modify a const)
ERROR: 0:47: 'patch' : cannot use interpolation qualifiers with patch
ERROR: 0:48: 'patch' : cannot use interpolation qualifiers with patch
ERROR: 0:49: 'noperspective' : Reserved word.
ERROR: 0:49: 'noperspective' : not supported with this profile: es
ERROR: 0:49: 'patch' : cannot use interpolation qualifiers with patch
ERROR: 0:50: '' : can only have one auxiliary qualifier (centroid, patch, and sample)
ERROR: 0:54: 'gl_PerVertex' : block already declared with size, can't redeclare as implicitly-sized
ERROR: 0:59: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use
ERROR: 0:64: 'quads' : cannot apply to 'out'
ERROR: 0:64: 'cw' : can only apply to 'in'
ERROR: 0:65: 'triangles' : cannot apply to 'out'
ERROR: 0:66: 'isolines' : cannot apply to 'out'
ERROR: 0:67: 'cw' : can only apply to 'in'
ERROR: 0:68: 'fractional_odd_spacing' : can only apply to 'in'
ERROR: 0:69: 'equal_spacing' : can only apply to 'in'
ERROR: 0:70: 'fractional_even_spacing' : can only apply to 'in'
ERROR: 0:71: 'point_mode' : can only apply to 'in'
ERROR: 0:73: 'in' : type must be an array: ina
ERROR: 0:75: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized
ERROR: 0:78: 'in' : type must be an array: bla
ERROR: 0:86: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized
ERROR: 0:96: 'location' : overlapping use of location 24
ERROR: 0:99: 'location' : overlapping use of location 24
ERROR: 0:101: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved
ERROR: 0:113: 'gl_BoundingBoxOES' : undeclared identifier
ERROR: 40 compilation errors. No code generated.
Shader version: 320
Requested GL_ARB_separate_shader_objects
input primitive = quads
vertex spacing = fractional_odd_spacing
triangle order = cw
using point mode
ERROR: node is still EOpNull!
0:20 Function Definition: main( ( global void)
0:20 Function Parameters:
0:22 Sequence
0:22 Constant:
0:22 0.000000
0:24 Sequence
0:24 move second child to first child ( temp highp int)
0:24 'a' ( temp highp int)
0:24 Constant:
0:24 1512 (const int)
0:32 Sequence
0:32 move second child to first child ( temp highp 4-component vector of float)
0:32 'p' ( temp highp 4-component vector of float)
0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
0:32 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
0:32 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
0:32 Constant:
0:32 1 (const int)
0:32 Constant:
0:32 0 (const int)
0:33 Sequence
0:33 move second child to first child ( temp highp float)
0:33 'ps' ( temp highp float)
0:33 gl_PointSize: direct index for structure ( in highp float PointSize)
0:33 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
0:33 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 1 (const int)
0:34 Sequence
0:34 move second child to first child ( temp highp float)
0:34 'cd' ( temp highp float)
0:34 Constant:
0:34 0.000000
0:36 Sequence
0:36 move second child to first child ( temp highp int)
0:36 'pvi' ( temp highp int)
0:36 'gl_PatchVerticesIn' ( in highp int PatchVertices)
0:37 Sequence
0:37 move second child to first child ( temp highp int)
0:37 'pid' ( temp highp int)
0:37 'gl_PrimitiveID' ( in highp int PrimitiveID)
0:38 Sequence
0:38 move second child to first child ( temp highp 3-component vector of float)
0:38 'tc' ( temp highp 3-component vector of float)
0:38 'gl_TessCoord' ( in highp 3-component vector of float TessCoord)
0:39 Sequence
0:39 move second child to first child ( temp highp float)
0:39 'tlo' ( temp highp float)
0:39 direct index ( patch temp highp float TessLevelOuter)
0:39 'gl_TessLevelOuter' ( patch in 4-element array of highp float TessLevelOuter)
0:39 Constant:
0:39 3 (const int)
0:40 Sequence
0:40 move second child to first child ( temp highp float)
0:40 'tli' ( temp highp float)
0:40 direct index ( patch temp highp float TessLevelInner)
0:40 'gl_TessLevelInner' ( patch in 2-element array of highp float TessLevelInner)
0:40 Constant:
0:40 1 (const int)
0:42 move second child to first child ( temp highp 4-component vector of float)
0:42 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
0:42 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize})
0:42 Constant:
0:42 0 (const uint)
0:42 'p' ( temp highp 4-component vector of float)
0:43 move second child to first child ( temp highp float)
0:43 gl_PointSize: direct index for structure ( gl_PointSize highp float PointSize)
0:43 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize})
0:43 Constant:
0:43 1 (const uint)
0:43 'ps' ( temp highp float)
0:44 move second child to first child ( temp highp float)
0:44 Constant:
0:44 0.000000
0:44 'cd' ( temp highp float)
0:111 Function Definition: bbbad( ( global void)
0:111 Function Parameters:
0:113 Sequence
0:113 'gl_BoundingBoxOES' ( temp float)
0:? Linker Objects
0:? 'patchIn' ( patch in highp 4-component vector of float)
0:? 'patchOut' ( patch out highp 4-component vector of float)
0:? 'badp1' ( smooth patch in highp 4-component vector of float)
0:? 'badp2' ( flat patch in highp 4-component vector of float)
0:? 'badp3' ( noperspective patch in highp 4-component vector of float)
0:? 'badp4' ( patch sample in highp 3-component vector of float)
0:? 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position})
0:? 'ina' ( in highp 2-component vector of float)
0:? 'inb' ( in 32-element array of highp 2-component vector of float)
0:? 'inc' ( in 32-element array of highp 2-component vector of float)
0:? 'ind' ( in 32-element array of highp 2-component vector of float)
0:? 'bla' ( in block{ in highp int f})
0:? 'blb' ( in 32-element array of block{ in highp int f})
0:? 'blc' ( in 32-element array of block{ in highp int f})
0:? 'bld' ( in 32-element array of block{ in highp int f})
0:? 'ivla' (layout( location=23) in 32-element array of highp 4-component vector of float)
0:? 'ivlb' (layout( location=24) in 32-element array of highp 4-component vector of float)
0:? 'ivlc' (layout( location=24) in 32-element array of highp 4-component vector of float)
0:? 'ovla' (layout( location=23) out 2-element array of highp 4-component vector of float)
0:? 'ovlb' (layout( location=24) out 2-element array of highp 4-component vector of float)
0:? 'pinbi' ( patch in block{ in highp int a})
0:? 'myColor2' ( centroid out highp 3-component vector of float)
0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float)
0:? 'perSampleColor' ( sample out highp 4-component vector of float)
Linked tessellation evaluation stage:
Shader version: 320
Requested GL_ARB_separate_shader_objects
input primitive = quads
vertex spacing = fractional_odd_spacing
triangle order = cw
using point mode
ERROR: node is still EOpNull!
0:20 Function Definition: main( ( global void)
0:20 Function Parameters:
0:22 Sequence
0:22 Constant:
0:22 0.000000
0:24 Sequence
0:24 move second child to first child ( temp highp int)
0:24 'a' ( temp highp int)
0:24 Constant:
0:24 1512 (const int)
0:32 Sequence
0:32 move second child to first child ( temp highp 4-component vector of float)
0:32 'p' ( temp highp 4-component vector of float)
0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
0:32 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
0:32 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
0:32 Constant:
0:32 1 (const int)
0:32 Constant:
0:32 0 (const int)
0:33 Sequence
0:33 move second child to first child ( temp highp float)
0:33 'ps' ( temp highp float)
0:33 gl_PointSize: direct index for structure ( in highp float PointSize)
0:33 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
0:33 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 1 (const int)
0:34 Sequence
0:34 move second child to first child ( temp highp float)
0:34 'cd' ( temp highp float)
0:34 Constant:
0:34 0.000000
0:36 Sequence
0:36 move second child to first child ( temp highp int)
0:36 'pvi' ( temp highp int)
0:36 'gl_PatchVerticesIn' ( in highp int PatchVertices)
0:37 Sequence
0:37 move second child to first child ( temp highp int)
0:37 'pid' ( temp highp int)
0:37 'gl_PrimitiveID' ( in highp int PrimitiveID)
0:38 Sequence
0:38 move second child to first child ( temp highp 3-component vector of float)
0:38 'tc' ( temp highp 3-component vector of float)
0:38 'gl_TessCoord' ( in highp 3-component vector of float TessCoord)
0:39 Sequence
0:39 move second child to first child ( temp highp float)
0:39 'tlo' ( temp highp float)
0:39 direct index ( patch temp highp float TessLevelOuter)
0:39 'gl_TessLevelOuter' ( patch in 4-element array of highp float TessLevelOuter)
0:39 Constant:
0:39 3 (const int)
0:40 Sequence
0:40 move second child to first child ( temp highp float)
0:40 'tli' ( temp highp float)
0:40 direct index ( patch temp highp float TessLevelInner)
0:40 'gl_TessLevelInner' ( patch in 2-element array of highp float TessLevelInner)
0:40 Constant:
0:40 1 (const int)
0:42 move second child to first child ( temp highp 4-component vector of float)
0:42 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
0:42 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize})
0:42 Constant:
0:42 0 (const uint)
0:42 'p' ( temp highp 4-component vector of float)
0:43 move second child to first child ( temp highp float)
0:43 gl_PointSize: direct index for structure ( gl_PointSize highp float PointSize)
0:43 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize})
0:43 Constant:
0:43 1 (const uint)
0:43 'ps' ( temp highp float)
0:44 move second child to first child ( temp highp float)
0:44 Constant:
0:44 0.000000
0:44 'cd' ( temp highp float)
0:? Linker Objects
0:? 'patchIn' ( patch in highp 4-component vector of float)
0:? 'patchOut' ( patch out highp 4-component vector of float)
0:? 'badp1' ( smooth patch in highp 4-component vector of float)
0:? 'badp2' ( flat patch in highp 4-component vector of float)
0:? 'badp3' ( noperspective patch in highp 4-component vector of float)
0:? 'badp4' ( patch sample in highp 3-component vector of float)
0:? 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position})
0:? 'ina' ( in highp 2-component vector of float)
0:? 'inb' ( in 32-element array of highp 2-component vector of float)
0:? 'inc' ( in 32-element array of highp 2-component vector of float)
0:? 'ind' ( in 32-element array of highp 2-component vector of float)
0:? 'bla' ( in block{ in highp int f})
0:? 'blb' ( in 32-element array of block{ in highp int f})
0:? 'blc' ( in 32-element array of block{ in highp int f})
0:? 'bld' ( in 32-element array of block{ in highp int f})
0:? 'ivla' (layout( location=23) in 32-element array of highp 4-component vector of float)
0:? 'ivlb' (layout( location=24) in 32-element array of highp 4-component vector of float)
0:? 'ivlc' (layout( location=24) in 32-element array of highp 4-component vector of float)
0:? 'ovla' (layout( location=23) out 2-element array of highp 4-component vector of float)
0:? 'ovlb' (layout( location=24) out 2-element array of highp 4-component vector of float)
0:? 'pinbi' ( patch in block{ in highp int a})
0:? 'myColor2' ( centroid out highp 3-component vector of float)
0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float)
0:? 'perSampleColor' ( sample out highp 4-component vector of float)

View File

@ -0,0 +1,797 @@
320.vert
ERROR: 0:6: 's' : member of block cannot be or contain a sampler, image, or atomic_uint type
ERROR: 0:14: 'location' : overlapping use of location 12
ERROR: 0:16: 'input block' : not supported in this stage: vertex
ERROR: 0:18: 'gl_PerVertex' : block redeclaration has extra members
ERROR: 0:28: 'gl_PointSize' : member of nameless block was not redeclared
ERROR: 0:28: 'assign' : cannot convert from ' const float' to ' gl_PointSize highp void PointSize'
ERROR: 0:31: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use
ERROR: 0:36: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block
ERROR: 0:40: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block
ERROR: 0:44: 'centroid' : cannot use centroid qualifier on an interface block
ERROR: 0:48: 'invariant' : cannot use invariant qualifier on an interface block
ERROR: 0:68: 'variable indexing buffer block array' : not supported with this profile: es
ERROR: 0:73: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument
ERROR: 0:76: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:77: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:78: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:79: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:80: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:81: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:116: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:117: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:118: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:120: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:121: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:122: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:123: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:191: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:192: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:193: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:211: 'textureSize' : no matching overloaded function found
ERROR: 0:211: '=' : cannot convert from ' const float' to ' temp highp 3-component vector of int'
ERROR: 0:252: 'interpolateAtCentroid' : no matching overloaded function found
ERROR: 0:253: 'interpolateAtSample' : no matching overloaded function found
ERROR: 0:254: 'interpolateAtOffset' : no matching overloaded function found
ERROR: 34 compilation errors. No code generated.
Shader version: 320
ERROR: node is still EOpNull!
0:23 Function Definition: main( ( global void)
0:23 Function Parameters:
0:25 Sequence
0:25 Sequence
0:25 move second child to first child ( temp highp int)
0:25 'sum' ( temp highp int)
0:25 add ( temp highp int)
0:25 'gl_VertexID' ( gl_VertexId highp int VertexId)
0:26 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
0:27 move second child to first child ( temp highp 4-component vector of float)
0:27 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
0:27 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, })
0:27 Constant:
0:27 0 (const uint)
0:27 Constant:
0:27 1.000000
0:27 1.000000
0:27 1.000000
0:27 1.000000
0:28 gl_PointSize: direct index for structure ( gl_PointSize highp void PointSize)
0:28 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, })
0:28 Constant:
0:28 1 (const uint)
0:62 Function Definition: pfoo( ( global void)
0:62 Function Parameters:
0:? Sequence
0:65 move second child to first child ( temp highp 2-component vector of float)
0:65 'h' ( noContraction temp highp 2-component vector of float)
0:65 fma ( global highp 2-component vector of float)
0:65 'inf' ( in highp 2-component vector of float)
0:65 'ing' ( in highp 2-component vector of float)
0:65 'h' ( noContraction temp highp 2-component vector of float)
0:66 indirect index ( temp lowp sampler2D)
0:66 'sArray' ( uniform 4-element array of lowp sampler2D)
0:66 add ( temp highp int)
0:66 'sIndex' ( uniform highp int)
0:66 Constant:
0:66 1 (const int)
0:67 indirect index (layout( column_major shared) temp block{layout( column_major shared) uniform highp int i})
0:67 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i})
0:67 add ( temp highp int)
0:67 'sIndex' ( uniform highp int)
0:67 Constant:
0:67 1 (const int)
0:68 indirect index (layout( column_major shared) temp block{layout( column_major shared) buffer highp int i})
0:68 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i})
0:68 subtract ( temp highp int)
0:68 'sIndex' ( uniform highp int)
0:68 Constant:
0:68 2 (const int)
0:69 direct index ( writeonly temp highp image2D)
0:69 'iArray' ( writeonly uniform 5-element array of highp image2D)
0:69 Constant:
0:69 2 (const int)
0:70 indirect index ( writeonly temp highp image2D)
0:70 'iArray' ( writeonly uniform 5-element array of highp image2D)
0:70 subtract ( temp highp int)
0:70 'sIndex' ( uniform highp int)
0:70 Constant:
0:70 2 (const int)
0:71 textureGatherOffset ( global lowp 4-component vector of float)
0:71 direct index ( temp lowp sampler2D)
0:71 'sArray' ( uniform 4-element array of lowp sampler2D)
0:71 Constant:
0:71 0 (const int)
0:71 Constant:
0:71 0.100000
0:71 0.100000
0:71 Convert float to int ( temp lowp 2-component vector of int)
0:71 'inf' ( in highp 2-component vector of float)
0:72 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp)
0:72 direct index ( temp lowp sampler2D)
0:72 'sArray' ( uniform 4-element array of lowp sampler2D)
0:72 Constant:
0:72 0 (const int)
0:72 Constant:
0:72 0.100000
0:72 0.100000
0:72 Constant:
0:72 0 (const int)
0:72 0 (const int)
0:72 0 (const int)
0:72 0 (const int)
0:72 0 (const int)
0:72 0 (const int)
0:72 0 (const int)
0:72 0 (const int)
0:73 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp)
0:73 direct index ( temp lowp sampler2D)
0:73 'sArray' ( uniform 4-element array of lowp sampler2D)
0:73 Constant:
0:73 0 (const int)
0:73 Constant:
0:73 0.100000
0:73 0.100000
0:73 'offsets' ( uniform 4-element array of highp 2-component vector of int)
0:101 Function Definition: bufferT( ( global void)
0:101 Function Parameters:
0:103 Sequence
0:103 Sequence
0:103 move second child to first child ( temp highp int)
0:103 's1' ( temp highp int)
0:103 textureSize ( global highp int)
0:103 'bufSamp1' ( uniform highp samplerBuffer)
0:104 Sequence
0:104 move second child to first child ( temp highp int)
0:104 's2' ( temp highp int)
0:104 textureSize ( global highp int)
0:104 'bufSamp2' ( uniform highp isamplerBuffer)
0:105 Sequence
0:105 move second child to first child ( temp highp int)
0:105 's3' ( temp highp int)
0:105 textureSize ( global highp int)
0:105 'bufSamp3' ( uniform highp usamplerBuffer)
0:107 Sequence
0:107 move second child to first child ( temp highp int)
0:107 's4' ( temp highp int)
0:107 imageQuerySize ( global highp int)
0:107 'bufSamp4' ( writeonly uniform highp imageBuffer)
0:108 Sequence
0:108 move second child to first child ( temp highp int)
0:108 's5' ( temp highp int)
0:108 imageQuerySize ( global highp int)
0:108 'bufSamp5' ( writeonly uniform highp iimageBuffer)
0:109 Sequence
0:109 move second child to first child ( temp highp int)
0:109 's6' ( temp highp int)
0:109 imageQuerySize ( global highp int)
0:109 'bufSamp6' ( writeonly uniform highp uimageBuffer)
0:111 Sequence
0:111 move second child to first child ( temp highp 4-component vector of float)
0:111 'f1' ( temp highp 4-component vector of float)
0:111 textureFetch ( global highp 4-component vector of float)
0:111 'bufSamp1' ( uniform highp samplerBuffer)
0:111 's1' ( temp highp int)
0:112 Sequence
0:112 move second child to first child ( temp highp 4-component vector of int)
0:112 'f2' ( temp highp 4-component vector of int)
0:112 textureFetch ( global highp 4-component vector of int)
0:112 'bufSamp2' ( uniform highp isamplerBuffer)
0:112 's2' ( temp highp int)
0:113 Sequence
0:113 move second child to first child ( temp highp 4-component vector of uint)
0:113 'f3' ( temp highp 4-component vector of uint)
0:113 textureFetch ( global highp 4-component vector of uint)
0:113 'bufSamp3' ( uniform highp usamplerBuffer)
0:113 's3' ( temp highp int)
0:149 Function Definition: CAT( ( global void)
0:149 Function Parameters:
0:151 Sequence
0:151 Sequence
0:151 move second child to first child ( temp highp 3-component vector of int)
0:151 's4' ( temp highp 3-component vector of int)
0:151 textureSize ( global highp 3-component vector of int)
0:151 'CA4' ( uniform highp samplerCubeArray)
0:151 Constant:
0:151 1 (const int)
0:152 Sequence
0:152 move second child to first child ( temp highp 3-component vector of int)
0:152 's5' ( temp highp 3-component vector of int)
0:152 textureSize ( global highp 3-component vector of int)
0:152 'CA5' ( uniform highp samplerCubeArrayShadow)
0:152 Constant:
0:152 1 (const int)
0:153 Sequence
0:153 move second child to first child ( temp highp 3-component vector of int)
0:153 's6' ( temp highp 3-component vector of int)
0:153 textureSize ( global highp 3-component vector of int)
0:153 'CA6' ( uniform highp isamplerCubeArray)
0:153 Constant:
0:153 1 (const int)
0:154 Sequence
0:154 move second child to first child ( temp highp 3-component vector of int)
0:154 's7' ( temp highp 3-component vector of int)
0:154 textureSize ( global highp 3-component vector of int)
0:154 'CA7' ( uniform highp usamplerCubeArray)
0:154 Constant:
0:154 1 (const int)
0:156 Sequence
0:156 move second child to first child ( temp highp 4-component vector of float)
0:156 't4' ( temp highp 4-component vector of float)
0:156 texture ( global highp 4-component vector of float)
0:156 'CA4' ( uniform highp samplerCubeArray)
0:156 Constant:
0:156 0.500000
0:156 0.500000
0:156 0.500000
0:156 0.500000
0:157 Sequence
0:157 move second child to first child ( temp highp float)
0:157 't5' ( temp highp float)
0:157 texture ( global highp float)
0:157 'CA5' ( uniform highp samplerCubeArrayShadow)
0:157 Constant:
0:157 0.500000
0:157 0.500000
0:157 0.500000
0:157 0.500000
0:157 Constant:
0:157 3.000000
0:158 Sequence
0:158 move second child to first child ( temp highp 4-component vector of int)
0:158 't6' ( temp highp 4-component vector of int)
0:158 texture ( global highp 4-component vector of int)
0:158 'CA6' ( uniform highp isamplerCubeArray)
0:158 Constant:
0:158 0.500000
0:158 0.500000
0:158 0.500000
0:158 0.500000
0:159 Sequence
0:159 move second child to first child ( temp highp 4-component vector of uint)
0:159 't7' ( temp highp 4-component vector of uint)
0:159 texture ( global highp 4-component vector of uint)
0:159 'CA7' ( uniform highp usamplerCubeArray)
0:159 Constant:
0:159 0.500000
0:159 0.500000
0:159 0.500000
0:159 0.500000
0:161 Sequence
0:161 move second child to first child ( temp highp 4-component vector of float)
0:161 'L4' ( temp highp 4-component vector of float)
0:161 textureLod ( global highp 4-component vector of float)
0:161 'CA4' ( uniform highp samplerCubeArray)
0:161 Constant:
0:161 0.500000
0:161 0.500000
0:161 0.500000
0:161 0.500000
0:161 Constant:
0:161 0.240000
0:162 Sequence
0:162 move second child to first child ( temp highp 4-component vector of int)
0:162 'L6' ( temp highp 4-component vector of int)
0:162 textureLod ( global highp 4-component vector of int)
0:162 'CA6' ( uniform highp isamplerCubeArray)
0:162 Constant:
0:162 0.500000
0:162 0.500000
0:162 0.500000
0:162 0.500000
0:162 Constant:
0:162 0.260000
0:163 Sequence
0:163 move second child to first child ( temp highp 4-component vector of uint)
0:163 'L7' ( temp highp 4-component vector of uint)
0:163 textureLod ( global highp 4-component vector of uint)
0:163 'CA7' ( uniform highp usamplerCubeArray)
0:163 Constant:
0:163 0.500000
0:163 0.500000
0:163 0.500000
0:163 0.500000
0:163 Constant:
0:163 0.270000
0:165 Sequence
0:165 move second child to first child ( temp highp 4-component vector of float)
0:165 'g4' ( temp highp 4-component vector of float)
0:165 textureGrad ( global highp 4-component vector of float)
0:165 'CA4' ( uniform highp samplerCubeArray)
0:165 Constant:
0:165 0.500000
0:165 0.500000
0:165 0.500000
0:165 0.500000
0:165 Constant:
0:165 0.100000
0:165 0.100000
0:165 0.100000
0:165 Constant:
0:165 0.200000
0:165 0.200000
0:165 0.200000
0:166 Sequence
0:166 move second child to first child ( temp highp 4-component vector of int)
0:166 'g6' ( temp highp 4-component vector of int)
0:166 textureGrad ( global highp 4-component vector of int)
0:166 'CA6' ( uniform highp isamplerCubeArray)
0:166 Constant:
0:166 0.500000
0:166 0.500000
0:166 0.500000
0:166 0.500000
0:166 Constant:
0:166 0.100000
0:166 0.100000
0:166 0.100000
0:166 Constant:
0:166 0.200000
0:166 0.200000
0:166 0.200000
0:167 Sequence
0:167 move second child to first child ( temp highp 4-component vector of uint)
0:167 'g7' ( temp highp 4-component vector of uint)
0:167 textureGrad ( global highp 4-component vector of uint)
0:167 'CA7' ( uniform highp usamplerCubeArray)
0:167 Constant:
0:167 0.500000
0:167 0.500000
0:167 0.500000
0:167 0.500000
0:167 Constant:
0:167 0.100000
0:167 0.100000
0:167 0.100000
0:167 Constant:
0:167 0.200000
0:167 0.200000
0:167 0.200000
0:169 Sequence
0:169 move second child to first child ( temp highp 4-component vector of float)
0:169 'gath4' ( temp highp 4-component vector of float)
0:169 textureGather ( global highp 4-component vector of float)
0:169 'CA4' ( uniform highp samplerCubeArray)
0:169 Constant:
0:169 0.500000
0:169 0.500000
0:169 0.500000
0:169 0.500000
0:170 Sequence
0:170 move second child to first child ( temp highp 4-component vector of float)
0:170 'gathC4' ( temp highp 4-component vector of float)
0:170 textureGather ( global highp 4-component vector of float)
0:170 'CA4' ( uniform highp samplerCubeArray)
0:170 Constant:
0:170 0.500000
0:170 0.500000
0:170 0.500000
0:170 0.500000
0:170 Constant:
0:170 2 (const int)
0:171 Sequence
0:171 move second child to first child ( temp highp 4-component vector of int)
0:171 'gath6' ( temp highp 4-component vector of int)
0:171 textureGather ( global highp 4-component vector of int)
0:171 'CA6' ( uniform highp isamplerCubeArray)
0:171 Constant:
0:171 0.500000
0:171 0.500000
0:171 0.500000
0:171 0.500000
0:172 Sequence
0:172 move second child to first child ( temp highp 4-component vector of int)
0:172 'gathC6' ( temp highp 4-component vector of int)
0:172 textureGather ( global highp 4-component vector of int)
0:172 'CA6' ( uniform highp isamplerCubeArray)
0:172 Constant:
0:172 0.500000
0:172 0.500000
0:172 0.500000
0:172 0.500000
0:172 Constant:
0:172 1 (const int)
0:173 Sequence
0:173 move second child to first child ( temp highp 4-component vector of uint)
0:173 'gath7' ( temp highp 4-component vector of uint)
0:173 textureGather ( global highp 4-component vector of uint)
0:173 'CA7' ( uniform highp usamplerCubeArray)
0:173 Constant:
0:173 0.500000
0:173 0.500000
0:173 0.500000
0:173 0.500000
0:174 Sequence
0:174 move second child to first child ( temp highp 4-component vector of uint)
0:174 'gathC7' ( temp highp 4-component vector of uint)
0:174 textureGather ( global highp 4-component vector of uint)
0:174 'CA7' ( uniform highp usamplerCubeArray)
0:174 Constant:
0:174 0.500000
0:174 0.500000
0:174 0.500000
0:174 0.500000
0:174 Constant:
0:174 0 (const int)
0:176 Sequence
0:176 move second child to first child ( temp highp 4-component vector of float)
0:176 'gath5' ( temp highp 4-component vector of float)
0:176 textureGather ( global highp 4-component vector of float)
0:176 'CA5' ( uniform highp samplerCubeArrayShadow)
0:176 Constant:
0:176 0.500000
0:176 0.500000
0:176 0.500000
0:176 0.500000
0:176 Constant:
0:176 2.500000
0:178 Sequence
0:178 move second child to first child ( temp highp 3-component vector of int)
0:178 's1' ( temp highp 3-component vector of int)
0:178 imageQuerySize ( global highp 3-component vector of int)
0:178 'CA1' ( writeonly uniform highp imageCubeArray)
0:179 Sequence
0:179 move second child to first child ( temp highp 3-component vector of int)
0:179 's2' ( temp highp 3-component vector of int)
0:179 imageQuerySize ( global highp 3-component vector of int)
0:179 'CA2' ( writeonly uniform highp iimageCubeArray)
0:180 Sequence
0:180 move second child to first child ( temp highp 3-component vector of int)
0:180 's3' ( temp highp 3-component vector of int)
0:180 imageQuerySize ( global highp 3-component vector of int)
0:180 'CA3' ( writeonly uniform highp uimageCubeArray)
0:182 imageStore ( global highp void)
0:182 'CA1' ( writeonly uniform highp imageCubeArray)
0:182 's3' ( temp highp 3-component vector of int)
0:182 Constant:
0:182 1.000000
0:182 1.000000
0:182 1.000000
0:182 1.000000
0:183 imageStore ( global highp void)
0:183 'CA2' ( writeonly uniform highp iimageCubeArray)
0:183 's3' ( temp highp 3-component vector of int)
0:183 Constant:
0:183 1 (const int)
0:183 1 (const int)
0:183 1 (const int)
0:183 1 (const int)
0:184 imageStore ( global highp void)
0:184 'CA3' ( writeonly uniform highp uimageCubeArray)
0:184 's3' ( temp highp 3-component vector of int)
0:184 Constant:
0:184 1 (const uint)
0:184 1 (const uint)
0:184 1 (const uint)
0:184 1 (const uint)
0:186 Sequence
0:186 move second child to first child ( temp highp 4-component vector of float)
0:186 'cl1' ( temp highp 4-component vector of float)
0:186 imageLoad ( global highp 4-component vector of float)
0:186 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray)
0:186 's3' ( temp highp 3-component vector of int)
0:187 Sequence
0:187 move second child to first child ( temp highp 4-component vector of int)
0:187 'cl2' ( temp highp 4-component vector of int)
0:187 imageLoad ( global highp 4-component vector of int)
0:187 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray)
0:187 's3' ( temp highp 3-component vector of int)
0:188 Sequence
0:188 move second child to first child ( temp highp 4-component vector of uint)
0:188 'cl3' ( temp highp 4-component vector of uint)
0:188 imageLoad ( global highp 4-component vector of uint)
0:188 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray)
0:188 's3' ( temp highp 3-component vector of int)
0:203 Function Definition: MSA( ( global void)
0:203 Function Parameters:
0:205 Sequence
0:205 Sequence
0:205 move second child to first child ( temp highp 4-component vector of float)
0:205 'tf' ( temp highp 4-component vector of float)
0:205 textureFetch ( global highp 4-component vector of float)
0:205 'samp2DMSA' ( uniform highp sampler2DMSArray)
0:205 Constant:
0:205 5 (const int)
0:205 5 (const int)
0:205 5 (const int)
0:205 Constant:
0:205 2 (const int)
0:206 Sequence
0:206 move second child to first child ( temp highp 4-component vector of int)
0:206 'tfi' ( temp highp 4-component vector of int)
0:206 textureFetch ( global highp 4-component vector of int)
0:206 'samp2DMSAi' ( uniform highp isampler2DMSArray)
0:206 Constant:
0:206 5 (const int)
0:206 5 (const int)
0:206 5 (const int)
0:206 Constant:
0:206 2 (const int)
0:207 Sequence
0:207 move second child to first child ( temp highp 4-component vector of uint)
0:207 'tfu' ( temp highp 4-component vector of uint)
0:207 textureFetch ( global highp 4-component vector of uint)
0:207 'samp2DMSAu' ( uniform highp usampler2DMSArray)
0:207 Constant:
0:207 5 (const int)
0:207 5 (const int)
0:207 5 (const int)
0:207 Constant:
0:207 2 (const int)
0:209 Sequence
0:209 move second child to first child ( temp highp 3-component vector of int)
0:209 'tfs' ( temp highp 3-component vector of int)
0:209 textureSize ( global highp 3-component vector of int)
0:209 'samp2DMSA' ( uniform highp sampler2DMSArray)
0:210 Sequence
0:210 move second child to first child ( temp highp 3-component vector of int)
0:210 'tfsi' ( temp highp 3-component vector of int)
0:210 textureSize ( global highp 3-component vector of int)
0:210 'samp2DMSAi' ( uniform highp isampler2DMSArray)
0:212 Sequence
0:212 move second child to first child ( temp highp 3-component vector of int)
0:212 'tfsu' ( temp highp 3-component vector of int)
0:212 textureSize ( global highp 3-component vector of int)
0:212 'samp2DMSAu' ( uniform highp usampler2DMSArray)
0:220 Function Definition: goodImageAtom( ( global void)
0:220 Function Parameters:
0:? Sequence
0:226 imageAtomicAdd ( global highp int)
0:226 'im2Di' (layout( r32i) uniform highp iimage2D)
0:226 'P' ( uniform highp 2-component vector of int)
0:226 'dati' ( temp highp int)
0:227 imageAtomicAdd ( global highp uint)
0:227 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:227 'P' ( uniform highp 2-component vector of int)
0:227 'datu' ( temp highp uint)
0:228 imageAtomicMin ( global highp int)
0:228 'im2Di' (layout( r32i) uniform highp iimage2D)
0:228 'P' ( uniform highp 2-component vector of int)
0:228 'dati' ( temp highp int)
0:229 imageAtomicMin ( global highp uint)
0:229 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:229 'P' ( uniform highp 2-component vector of int)
0:229 'datu' ( temp highp uint)
0:230 imageAtomicMax ( global highp int)
0:230 'im2Di' (layout( r32i) uniform highp iimage2D)
0:230 'P' ( uniform highp 2-component vector of int)
0:230 'dati' ( temp highp int)
0:231 imageAtomicMax ( global highp uint)
0:231 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:231 'P' ( uniform highp 2-component vector of int)
0:231 'datu' ( temp highp uint)
0:232 imageAtomicAnd ( global highp int)
0:232 'im2Di' (layout( r32i) uniform highp iimage2D)
0:232 'P' ( uniform highp 2-component vector of int)
0:232 'dati' ( temp highp int)
0:233 imageAtomicAnd ( global highp uint)
0:233 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:233 'P' ( uniform highp 2-component vector of int)
0:233 'datu' ( temp highp uint)
0:234 imageAtomicOr ( global highp int)
0:234 'im2Di' (layout( r32i) uniform highp iimage2D)
0:234 'P' ( uniform highp 2-component vector of int)
0:234 'dati' ( temp highp int)
0:235 imageAtomicOr ( global highp uint)
0:235 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:235 'P' ( uniform highp 2-component vector of int)
0:235 'datu' ( temp highp uint)
0:236 imageAtomicXor ( global highp int)
0:236 'im2Di' (layout( r32i) uniform highp iimage2D)
0:236 'P' ( uniform highp 2-component vector of int)
0:236 'dati' ( temp highp int)
0:237 imageAtomicXor ( global highp uint)
0:237 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:237 'P' ( uniform highp 2-component vector of int)
0:237 'datu' ( temp highp uint)
0:238 imageAtomicExchange ( global highp int)
0:238 'im2Di' (layout( r32i) uniform highp iimage2D)
0:238 'P' ( uniform highp 2-component vector of int)
0:238 'dati' ( temp highp int)
0:239 imageAtomicExchange ( global highp uint)
0:239 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:239 'P' ( uniform highp 2-component vector of int)
0:239 'datu' ( temp highp uint)
0:240 imageAtomicExchange ( global highp float)
0:240 'im2Df' (layout( r32f) uniform highp image2D)
0:240 'P' ( uniform highp 2-component vector of int)
0:240 'datf' ( temp highp float)
0:241 imageAtomicCompSwap ( global highp int)
0:241 'im2Di' (layout( r32i) uniform highp iimage2D)
0:241 'P' ( uniform highp 2-component vector of int)
0:241 Constant:
0:241 3 (const int)
0:241 'dati' ( temp highp int)
0:242 imageAtomicCompSwap ( global highp uint)
0:242 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:242 'P' ( uniform highp 2-component vector of int)
0:242 Constant:
0:242 5 (const uint)
0:242 'datu' ( temp highp uint)
0:250 Function Definition: badInterp( ( global void)
0:250 Function Parameters:
0:252 Sequence
0:252 Constant:
0:252 0.000000
0:253 Constant:
0:253 0.000000
0:254 Constant:
0:254 0.000000
0:? Linker Objects
0:? 'outbinst' ( out block{ out highp int a, out highp 4-component vector of float v, out highp sampler2D s})
0:? 'anon@0' ( out block{layout( location=12) out highp int aAnon, layout( location=13) out highp 4-component vector of float vAnon})
0:? 'aliased' (layout( location=12) smooth out highp int)
0:? 'inbinst' ( in block{ in highp int a})
0:? 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, })
0:? 'smon' ( smooth out block{ out highp int i})
0:? 'fmon' ( flat out block{ out highp int i})
0:? 'cmon' ( centroid out block{ out highp int i})
0:? 'imon' ( invariant out block{ out highp int i})
0:? 'inf' ( in highp 2-component vector of float)
0:? 'ing' ( in highp 2-component vector of float)
0:? 'offsets' ( uniform 4-element array of highp 2-component vector of int)
0:? 'sArray' ( uniform 4-element array of lowp sampler2D)
0:? 'sIndex' ( uniform highp int)
0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint)
0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i})
0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i})
0:? 'iArray' ( writeonly uniform 5-element array of highp image2D)
0:? 'constOffsets' ( const 4-element array of highp 2-component vector of int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 'noPreSamp1' ( uniform mediump samplerBuffer)
0:? 'noPreSamp2' ( uniform mediump isamplerBuffer)
0:? 'noPreSamp3' ( uniform mediump usamplerBuffer)
0:? 'noPreSamp4' ( writeonly uniform mediump imageBuffer)
0:? 'noPreSamp5' ( writeonly uniform mediump iimageBuffer)
0:? 'noPreSamp6' ( writeonly uniform mediump uimageBuffer)
0:? 'bufSamp1' ( uniform highp samplerBuffer)
0:? 'bufSamp2' ( uniform highp isamplerBuffer)
0:? 'bufSamp3' ( uniform highp usamplerBuffer)
0:? 'bufSamp4' ( writeonly uniform highp imageBuffer)
0:? 'bufSamp5' ( writeonly uniform highp iimageBuffer)
0:? 'bufSamp6' ( writeonly uniform highp uimageBuffer)
0:? 'noPreCA1' ( writeonly uniform mediump imageCubeArray)
0:? 'noPreCA2' ( writeonly uniform mediump iimageCubeArray)
0:? 'noPreCA3' ( writeonly uniform mediump uimageCubeArray)
0:? 'noPreCA4' ( uniform mediump samplerCubeArray)
0:? 'noPreCA5' ( uniform mediump samplerCubeArrayShadow)
0:? 'noPreCA6' ( uniform mediump isamplerCubeArray)
0:? 'noPreCA7' ( uniform mediump usamplerCubeArray)
0:? 'CA1' ( writeonly uniform highp imageCubeArray)
0:? 'CA2' ( writeonly uniform highp iimageCubeArray)
0:? 'CA3' ( writeonly uniform highp uimageCubeArray)
0:? 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray)
0:? 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray)
0:? 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray)
0:? 'CA4' ( uniform highp samplerCubeArray)
0:? 'CA5' ( uniform highp samplerCubeArrayShadow)
0:? 'CA6' ( uniform highp isamplerCubeArray)
0:? 'CA7' ( uniform highp usamplerCubeArray)
0:? 'noPrec2DMS' ( uniform mediump sampler2DMSArray)
0:? 'noPrec2DMSi' ( uniform mediump isampler2DMSArray)
0:? 'noPrec2DMSu' ( uniform mediump usampler2DMSArray)
0:? 'samp2DMSA' ( uniform highp sampler2DMSArray)
0:? 'samp2DMSAi' ( uniform highp isampler2DMSArray)
0:? 'samp2DMSAu' ( uniform highp usampler2DMSArray)
0:? 'im2Df' (layout( r32f) uniform highp image2D)
0:? 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:? 'im2Di' (layout( r32i) uniform highp iimage2D)
0:? 'P' ( uniform highp 2-component vector of int)
0:? 'colorSample' ( smooth sample out highp 4-component vector of float)
0:? 'colorfsi' ( flat sample out highp 4-component vector of float)
0:? 'sampInArray' ( smooth sample out 4-element array of highp 3-component vector of float)
0:? 'inv4' ( in highp 4-component vector of float)
0:? 'gl_VertexID' ( gl_VertexId highp int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
Linked vertex stage:
Shader version: 320
ERROR: node is still EOpNull!
0:23 Function Definition: main( ( global void)
0:23 Function Parameters:
0:25 Sequence
0:25 Sequence
0:25 move second child to first child ( temp highp int)
0:25 'sum' ( temp highp int)
0:25 add ( temp highp int)
0:25 'gl_VertexID' ( gl_VertexId highp int VertexId)
0:26 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
0:27 move second child to first child ( temp highp 4-component vector of float)
0:27 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
0:27 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, })
0:27 Constant:
0:27 0 (const uint)
0:27 Constant:
0:27 1.000000
0:27 1.000000
0:27 1.000000
0:27 1.000000
0:28 gl_PointSize: direct index for structure ( gl_PointSize highp void PointSize)
0:28 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, })
0:28 Constant:
0:28 1 (const uint)
0:? Linker Objects
0:? 'outbinst' ( out block{ out highp int a, out highp 4-component vector of float v, out highp sampler2D s})
0:? 'anon@0' ( out block{layout( location=12) out highp int aAnon, layout( location=13) out highp 4-component vector of float vAnon})
0:? 'aliased' (layout( location=12) smooth out highp int)
0:? 'inbinst' ( in block{ in highp int a})
0:? 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, })
0:? 'smon' ( smooth out block{ out highp int i})
0:? 'fmon' ( flat out block{ out highp int i})
0:? 'cmon' ( centroid out block{ out highp int i})
0:? 'imon' ( invariant out block{ out highp int i})
0:? 'inf' ( in highp 2-component vector of float)
0:? 'ing' ( in highp 2-component vector of float)
0:? 'offsets' ( uniform 4-element array of highp 2-component vector of int)
0:? 'sArray' ( uniform 4-element array of lowp sampler2D)
0:? 'sIndex' ( uniform highp int)
0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint)
0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i})
0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i})
0:? 'iArray' ( writeonly uniform 5-element array of highp image2D)
0:? 'constOffsets' ( const 4-element array of highp 2-component vector of int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 0 (const int)
0:? 'noPreSamp1' ( uniform mediump samplerBuffer)
0:? 'noPreSamp2' ( uniform mediump isamplerBuffer)
0:? 'noPreSamp3' ( uniform mediump usamplerBuffer)
0:? 'noPreSamp4' ( writeonly uniform mediump imageBuffer)
0:? 'noPreSamp5' ( writeonly uniform mediump iimageBuffer)
0:? 'noPreSamp6' ( writeonly uniform mediump uimageBuffer)
0:? 'bufSamp1' ( uniform highp samplerBuffer)
0:? 'bufSamp2' ( uniform highp isamplerBuffer)
0:? 'bufSamp3' ( uniform highp usamplerBuffer)
0:? 'bufSamp4' ( writeonly uniform highp imageBuffer)
0:? 'bufSamp5' ( writeonly uniform highp iimageBuffer)
0:? 'bufSamp6' ( writeonly uniform highp uimageBuffer)
0:? 'noPreCA1' ( writeonly uniform mediump imageCubeArray)
0:? 'noPreCA2' ( writeonly uniform mediump iimageCubeArray)
0:? 'noPreCA3' ( writeonly uniform mediump uimageCubeArray)
0:? 'noPreCA4' ( uniform mediump samplerCubeArray)
0:? 'noPreCA5' ( uniform mediump samplerCubeArrayShadow)
0:? 'noPreCA6' ( uniform mediump isamplerCubeArray)
0:? 'noPreCA7' ( uniform mediump usamplerCubeArray)
0:? 'CA1' ( writeonly uniform highp imageCubeArray)
0:? 'CA2' ( writeonly uniform highp iimageCubeArray)
0:? 'CA3' ( writeonly uniform highp uimageCubeArray)
0:? 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray)
0:? 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray)
0:? 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray)
0:? 'CA4' ( uniform highp samplerCubeArray)
0:? 'CA5' ( uniform highp samplerCubeArrayShadow)
0:? 'CA6' ( uniform highp isamplerCubeArray)
0:? 'CA7' ( uniform highp usamplerCubeArray)
0:? 'noPrec2DMS' ( uniform mediump sampler2DMSArray)
0:? 'noPrec2DMSi' ( uniform mediump isampler2DMSArray)
0:? 'noPrec2DMSu' ( uniform mediump usampler2DMSArray)
0:? 'samp2DMSA' ( uniform highp sampler2DMSArray)
0:? 'samp2DMSAi' ( uniform highp isampler2DMSArray)
0:? 'samp2DMSAu' ( uniform highp usampler2DMSArray)
0:? 'im2Df' (layout( r32f) uniform highp image2D)
0:? 'im2Du' (layout( r32ui) uniform highp uimage2D)
0:? 'im2Di' (layout( r32i) uniform highp iimage2D)
0:? 'P' ( uniform highp 2-component vector of int)
0:? 'colorSample' ( smooth sample out highp 4-component vector of float)
0:? 'colorfsi' ( flat sample out highp 4-component vector of float)
0:? 'sampInArray' ( smooth sample out 4-element array of highp 3-component vector of float)
0:? 'inv4' ( in highp 4-component vector of float)
0:? 'gl_VertexID' ( gl_VertexId highp int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)

View File

@ -100,7 +100,7 @@ ERROR: node is still EOpNull!
0:? 'v20' ( smooth in 4-component vector of float)
0:? 'v21' (layout( location=60) smooth in float)
0:? 'v22' (layout( location=2) smooth in float)
0:? 'anon@1' ( in block{layout( location=1 component=0) in float f1, layout( location=3) in float f2})
0:? 'anon@1' ( in block{layout( location=1) in float f1, layout( location=3) in float f2})
0:? 'uinst' (layout( location=1 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2})
0:? 'v3' (layout( location=6) smooth in 4-component vector of float)
0:? 'v4' ( smooth in 4-component vector of float)
@ -108,12 +108,12 @@ ERROR: node is still EOpNull!
0:? 'v6' (layout( location=30) smooth in 4-component vector of float)
0:? 'v23' (layout( location=61) smooth in float)
0:? 'v24' (layout( location=62) smooth in float)
0:? 'ininst2' ( in block{layout( location=28 component=0) in bool b1, layout( location=29 component=0) in float f1, layout( location=25) in float f2, layout( location=26 component=0) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23 component=0) in 4-component vector of float f4, layout( location=24 component=0) in 4-component vector of float f5})
0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2, layout( location=26) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23) in 4-component vector of float f4, layout( location=24) in 4-component vector of float f5})
0:? 'uinst2' (layout( location=13 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2})
0:? 'in3' ( in block{ in float f1, layout( location=40) in float f2})
0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2})
0:? 's' (layout( location=33) smooth in structure{ global 3-component vector of float a, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c, temp 2-component vector of float A})
0:? 'anon@2' ( in block{layout( location=44 component=0) in 4-component vector of float d, layout( location=45 component=0) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48 component=0) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42 component=0) in 4-component vector of float i, layout( location=43 component=0) in 4-component vector of float j, layout( location=44 component=0) in 4-component vector of float k})
0:? 'anon@2' ( in block{layout( location=44) in 4-component vector of float d, layout( location=45) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42) in 4-component vector of float i, layout( location=43) in 4-component vector of float j, layout( location=44) in 4-component vector of float k})
0:? 'outVar2' (layout( location=4095 index=0) out 4-component vector of float)
0:? 'outVar3' (layout( location=0 index=1) out 4-component vector of float)
0:? 'outVar4' (layout( location=0 index=1) out 4-component vector of float)
@ -165,7 +165,7 @@ ERROR: node is still EOpNull!
0:? 'v20' ( smooth in 4-component vector of float)
0:? 'v21' (layout( location=60) smooth in float)
0:? 'v22' (layout( location=2) smooth in float)
0:? 'anon@1' ( in block{layout( location=1 component=0) in float f1, layout( location=3) in float f2})
0:? 'anon@1' ( in block{layout( location=1) in float f1, layout( location=3) in float f2})
0:? 'uinst' (layout( location=1 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2})
0:? 'v3' (layout( location=6) smooth in 4-component vector of float)
0:? 'v4' ( smooth in 4-component vector of float)
@ -173,12 +173,12 @@ ERROR: node is still EOpNull!
0:? 'v6' (layout( location=30) smooth in 4-component vector of float)
0:? 'v23' (layout( location=61) smooth in float)
0:? 'v24' (layout( location=62) smooth in float)
0:? 'ininst2' ( in block{layout( location=28 component=0) in bool b1, layout( location=29 component=0) in float f1, layout( location=25) in float f2, layout( location=26 component=0) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23 component=0) in 4-component vector of float f4, layout( location=24 component=0) in 4-component vector of float f5})
0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2, layout( location=26) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23) in 4-component vector of float f4, layout( location=24) in 4-component vector of float f5})
0:? 'uinst2' (layout( location=13 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2})
0:? 'in3' ( in block{ in float f1, layout( location=40) in float f2})
0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2})
0:? 's' (layout( location=33) smooth in structure{ global 3-component vector of float a, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c, temp 2-component vector of float A})
0:? 'anon@2' ( in block{layout( location=44 component=0) in 4-component vector of float d, layout( location=45 component=0) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48 component=0) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42 component=0) in 4-component vector of float i, layout( location=43 component=0) in 4-component vector of float j, layout( location=44 component=0) in 4-component vector of float k})
0:? 'anon@2' ( in block{layout( location=44) in 4-component vector of float d, layout( location=45) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42) in 4-component vector of float i, layout( location=43) in 4-component vector of float j, layout( location=44) in 4-component vector of float k})
0:? 'outVar2' (layout( location=4095 index=0) out 4-component vector of float)
0:? 'outVar3' (layout( location=0 index=1) out 4-component vector of float)
0:? 'outVar4' (layout( location=0 index=1) out 4-component vector of float)

View File

@ -1,5 +1,4 @@
400.frag
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:18: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument
ERROR: 0:22: 'textureGatherOffset(...)' : must be a compile-time constant: component argument
ERROR: 0:23: 'textureGatherOffset(...)' : must be 0, 1, 2, or 3: component argument
@ -34,8 +33,12 @@ ERROR: 0:183: 'textureQueryLod' : no matching overloaded function found
ERROR: 0:183: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
ERROR: 0:184: 'textureQueryLod' : no matching overloaded function found
ERROR: 0:184: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
ERROR: 0:187: '' : syntax error
ERROR: 35 compilation errors. No code generated.
ERROR: 0:197: 'subroutine' : feature not yet implemented
ERROR: 0:197: '' : default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification
ERROR: 0:198: 'subroutine' : feature not yet implemented
ERROR: 0:199: 'subroutine' : feature not yet implemented
ERROR: 0:201: '' : syntax error, unexpected PRECISE, expecting IDENTIFIER
ERROR: 39 compilation errors. No code generated.
Shader version: 400
@ -469,6 +472,39 @@ ERROR: node is still EOpNull!
0:181 'pf3' ( temp 3-component vector of float)
0:183 'lod' ( temp 2-component vector of float)
0:184 'lod' ( temp 2-component vector of float)
0:190 Function Definition: bitwiseConv( ( global void)
0:190 Function Parameters:
0:192 Sequence
0:192 move second child to first child ( temp uint)
0:192 'iout' ( out uint)
0:192 bitwise and ( temp uint)
0:192 'uu' ( uniform uint)
0:192 Convert int to uint ( temp uint)
0:192 'i' ( flat in int)
0:193 add second child into first child ( temp uint)
0:193 'iout' ( out uint)
0:193 exclusive-or ( temp uint)
0:193 'uu' ( uniform uint)
0:193 Convert int to uint ( temp uint)
0:193 'i' ( flat in int)
0:194 add second child into first child ( temp uint)
0:194 'iout' ( out uint)
0:194 inclusive-or ( temp uint)
0:194 Convert int to uint ( temp uint)
0:194 'i' ( flat in int)
0:194 'uu' ( uniform uint)
0:198 Function Definition: subT1( ( temp float)
0:198 Function Parameters:
0:198 Sequence
0:198 Branch: Return with expression
0:198 Constant:
0:198 1.000000
0:199 Function Definition: subT2( ( temp float)
0:199 Function Parameters:
0:199 Sequence
0:199 Branch: Return with expression
0:199 Constant:
0:199 1.000000
0:? Linker Objects
0:? 'c2D' ( smooth in 2-component vector of float)
0:? 'i' ( flat in int)
@ -512,6 +548,8 @@ ERROR: node is still EOpNull!
0:? 'sampCubeAs' ( uniform samplerCubeArrayShadow)
0:? 'sampBuf' ( uniform samplerBuffer)
0:? 'sampRect' ( uniform sampler2DRect)
0:? 'uu' ( uniform uint)
0:? 'iout' ( out uint)
Linked fragment stage:
@ -685,4 +723,6 @@ ERROR: node is still EOpNull!
0:? 'sampCubeAs' ( uniform samplerCubeArrayShadow)
0:? 'sampBuf' ( uniform samplerBuffer)
0:? 'sampRect' ( uniform sampler2DRect)
0:? 'uu' ( uniform uint)
0:? 'iout' ( out uint)

View File

@ -1,5 +1,4 @@
400.geom
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:12: 'invocations' : can only apply to a standalone qualifier
ERROR: 0:20: 'patch' : not supported in this stage: geometry
ERROR: 0:20: 'gl_PointSize' : cannot add layout to redeclared block member

View File

@ -1,5 +1,4 @@
400.tesc
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)

View File

@ -1,5 +1,4 @@
400.tese
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'vertices' : there is no such layout identifier for this stage taking an assigned value
ERROR: 0:5: 'triangles' : cannot change previously set input primitive
ERROR: 0:6: 'isolines' : cannot change previously set input primitive

View File

@ -1,5 +1,4 @@
400.vert
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions
ERROR: 0:4: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions
ERROR: 0:5: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions

View File

@ -1,5 +1,4 @@
410.geom
Warning, version 410 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:8: 'myIn' : cannot redeclare a built-in block with a user name
ERROR: 0:12: 'gl_myIn' : no declaration found for redeclaration
ERROR: 0:20: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use

View File

@ -1,5 +1,4 @@
410.tesc
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:4: 'length' : array must first be sized by a redeclaration or layout qualifier
ERROR: 1 compilation errors. No code generated.

View File

@ -1,6 +1,4 @@
410.vert
Warning, version 410 is not yet complete; most version-specific features are present, but some are missing.
Shader version: 410
0:? Sequence
0:7 Function Definition: main( ( global void)

View File

@ -1,5 +1,4 @@
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.

View File

@ -1,10 +1,9 @@
420.frag
Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:4: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth
ERROR: 0:11: 'layout qualifier' : can only apply depth layout to gl_FragDepth
ERROR: 0:12: 'gl_FragDepth' : cannot redeclare after use
WARNING: 0:14: 'atomic_uint' : implicitly sized atomic_uint array treated as having one element for tracking the default offset
ERROR: 3 compilation errors. No code generated.
ERROR: 0:14: 'atomic_uint' : array must be explicitly sized
ERROR: 4 compilation errors. No code generated.
Shader version: 420

View File

@ -1,5 +1,4 @@
420.geom
Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:9: 'length' : array must first be sized by a redeclaration or layout qualifier
ERROR: 0:11: '[' : array must be sized by a redeclaration or layout qualifier before being indexed with a variable
ERROR: 0:42: 'assign' : l-value required (can't modify a const)

View File

@ -1,5 +1,4 @@
420.tesc
Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out
ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a
ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb

View File

@ -1,5 +1,4 @@
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 ' 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
@ -11,7 +10,7 @@ ERROR: 0:29: 'constructor' : cannot convert parameter 2 from ' const 2X2 matrix
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: 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:40: 'constructor' : cannot convert parameter 1 from ' const structure{ global 4-component vector of float a, global 4-component vector of float b}' to ' temp structure{ global float s, global float t}'
ERROR: 0:70: 'initializer list' : wrong number of structure members
ERROR: 13 compilation errors. No code generated.

View File

@ -1,5 +1,4 @@
420.vert
Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:2: '#version' : must occur first in shader
WARNING: 0:3: varying deprecated in version 130; may be removed in future release
ERROR: 0:3: 'varying' : no longer supported in core profile; removed in version 420
@ -33,7 +32,7 @@ ERROR: 0:85: '' : vertex input cannot be further qualified
ERROR: 0:86: 'patch' : not supported in this stage: vertex
ERROR: 0:100: '=' : global const initializers must be constant ' const int'
ERROR: 0:101: '' : array size must be a constant integer expression
ERROR: 0:107: 'image variables declared 'writeonly' without a format layout qualifier' : not supported for this version or the enabled extensions
ERROR: 0:107: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported for this version or the enabled extensions
ERROR: 0:114: 'imageAtomicMin' : only supported on image with format r32i or r32ui
ERROR: 0:115: 'imageAtomicMax' : no matching overloaded function found
ERROR: 0:119: 'writeonly' : argument cannot drop memory qualifier when passed to formal parameter

View File

@ -1,5 +1,4 @@
420_size_gl_in.geom
Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:19: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use
ERROR: 1 compilation errors. No code generated.

Some files were not shown because too many files have changed in this diff Show More