summaryrefslogtreecommitdiff
path: root/chromium/third_party/swiftshader
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-05-24 11:40:17 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-05-24 12:42:11 +0000
commit5d87695f37678f96492b258bbab36486c59866b4 (patch)
treebe9783bbaf04fb930c4d74ca9c00b5e7954c8bc6 /chromium/third_party/swiftshader
parent6c11fb357ec39bf087b8b632e2b1e375aef1b38b (diff)
downloadqtwebengine-chromium-5d87695f37678f96492b258bbab36486c59866b4.tar.gz
BASELINE: Update Chromium to 75.0.3770.56
Change-Id: I86d2007fd27a45d5797eee06f4c9369b8b50ac4f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/third_party/swiftshader')
-rw-r--r--chromium/third_party/swiftshader/.travis.yml4
-rw-r--r--chromium/third_party/swiftshader/.vscode/c_cpp_properties.json56
-rw-r--r--chromium/third_party/swiftshader/.vscode/launch.json175
-rw-r--r--chromium/third_party/swiftshader/Android.bp4
-rw-r--r--chromium/third_party/swiftshader/Android.mk30
-rw-r--r--chromium/third_party/swiftshader/CMakeLists.txt204
-rw-r--r--chromium/third_party/swiftshader/CONTRIBUTORS.txt5
-rw-r--r--chromium/third_party/swiftshader/README.md2
-rw-r--r--chromium/third_party/swiftshader/SwiftShader.sln1004
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ALL_BUILD.vcxproj88
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ALL_BUILD.vcxproj.filters2
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/GLCompiler.vcxproj77
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/GLCompiler.vcxproj.filters14
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/OGLES2HelloAPI.vcxproj35
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/OGLES2HelloAPI.vcxproj.filters4
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorLLVM.vcxproj29
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorLLVM.vcxproj.filters22
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorUnitTests.vcxproj21
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorUnitTests.vcxproj.filters12
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.sln495
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.vcxproj105
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.vcxproj.filters22
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/gles-unittests.vcxproj (renamed from chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/unittests.vcxproj)57
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/gles-unittests.vcxproj.filters (renamed from chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/unittests.vcxproj.filters)4
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libEGL.vcxproj61
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libEGL.vcxproj.filters110
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLES_CM.vcxproj87
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLES_CM.vcxproj.filters126
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLESv2.vcxproj115
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLESv2.vcxproj.filters138
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libvk_swiftshader.vcxproj261
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libvk_swiftshader.vcxproj.filters469
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/llvm.vcxproj1748
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/llvm.vcxproj.filters13
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/ALL_BUILD.vcxproj32
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/ALL_BUILD.vcxproj.filters2
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools-shared.vcxproj645
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools-shared.vcxproj.filters65
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools.vcxproj645
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools.vcxproj.filters65
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/core_tables.vcxproj22
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/core_tables.vcxproj.filters10
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/enum_string_mapping.vcxproj16
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/enum_string_mapping.vcxproj.filters8
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/extinst_tables.vcxproj46
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/extinst_tables.vcxproj.filters10
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/link/SPIRV-Tools-link.vcxproj19
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/link/SPIRV-Tools-link.vcxproj.filters4
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/opt/SPIRV-Tools-opt.vcxproj191
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/opt/SPIRV-Tools-opt.vcxproj.filters10
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/reduce/SPIRV-Tools-reduce.vcxproj47
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/reduce/SPIRV-Tools-reduce.vcxproj.filters10
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-build-version.vcxproj16
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-build-version.vcxproj.filters8
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-debuginfo.vcxproj16
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-debuginfo.vcxproj.filters8
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-header-DebugInfo.vcxproj16
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-header-DebugInfo.vcxproj.filters8
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-gcn-shader.vcxproj16
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-gcn-shader.vcxproj.filters8
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-ballot.vcxproj16
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-ballot.vcxproj.filters8
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj16
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj.filters8
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-trinary-minmax.vcxproj16
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-trinary-minmax.vcxproj.filters8
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-vimsyntax.vcxproj16
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-vimsyntax.vcxproj.filters8
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-pkg-config.vcxproj10
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-pkg-config.vcxproj.filters6
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-shared-pkg-config.vcxproj10
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-shared-pkg-config.vcxproj.filters6
-rw-r--r--chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools.sln264
-rw-r--r--chromium/third_party/swiftshader/build/android.toolchain.cmake13
-rw-r--r--chromium/third_party/swiftshader/docs/ReactorDebugInfo.md237
-rw-r--r--chromium/third_party/swiftshader/docs/dEQP.md162
-rw-r--r--chromium/third_party/swiftshader/kokoro/gcp_ubuntu/continuous.cfg4
-rwxr-xr-xchromium/third_party/swiftshader/kokoro/gcp_ubuntu/continuous.sh18
-rw-r--r--chromium/third_party/swiftshader/kokoro/gcp_ubuntu/presubmit.cfg4
-rw-r--r--chromium/third_party/swiftshader/kokoro/gcp_windows/continuous.bat7
-rw-r--r--chromium/third_party/swiftshader/kokoro/gcp_windows/continuous.cfg5
-rw-r--r--chromium/third_party/swiftshader/kokoro/gcp_windows/presubmit.cfg5
-rw-r--r--chromium/third_party/swiftshader/src/Android.bp201
-rw-r--r--chromium/third_party/swiftshader/src/Android.mk6
-rw-r--r--chromium/third_party/swiftshader/src/Common/Debug.hpp2
-rw-r--r--chromium/third_party/swiftshader/src/Common/Memory.cpp19
-rw-r--r--chromium/third_party/swiftshader/src/Common/RecursiveLock.hpp72
-rw-r--r--chromium/third_party/swiftshader/src/Common/Resource.hpp54
-rw-r--r--chromium/third_party/swiftshader/src/D3D8/D3D8.vcxproj3
-rw-r--r--chromium/third_party/swiftshader/src/D3D9/D3D9.vcxproj17
-rw-r--r--chromium/third_party/swiftshader/src/Device/Blitter.cpp632
-rw-r--r--chromium/third_party/swiftshader/src/Device/Blitter.hpp29
-rw-r--r--chromium/third_party/swiftshader/src/Device/Context.cpp121
-rw-r--r--chromium/third_party/swiftshader/src/Device/Context.hpp68
-rw-r--r--chromium/third_party/swiftshader/src/Device/PixelProcessor.cpp114
-rw-r--r--chromium/third_party/swiftshader/src/Device/PixelProcessor.hpp36
-rw-r--r--chromium/third_party/swiftshader/src/Device/Primitive.hpp2
-rw-r--r--chromium/third_party/swiftshader/src/Device/QuadRasterizer.cpp74
-rw-r--r--chromium/third_party/swiftshader/src/Device/Renderer.cpp503
-rw-r--r--chromium/third_party/swiftshader/src/Device/Renderer.hpp93
-rw-r--r--chromium/third_party/swiftshader/src/Device/RoutineCache.hpp23
-rw-r--r--chromium/third_party/swiftshader/src/Device/Sampler.cpp53
-rw-r--r--chromium/third_party/swiftshader/src/Device/Sampler.hpp25
-rw-r--r--chromium/third_party/swiftshader/src/Device/SetupProcessor.cpp3
-rw-r--r--chromium/third_party/swiftshader/src/Device/Stream.hpp11
-rw-r--r--chromium/third_party/swiftshader/src/Device/Surface.cpp5543
-rw-r--r--chromium/third_party/swiftshader/src/Device/Surface.hpp484
-rw-r--r--chromium/third_party/swiftshader/src/Device/SwiftConfig.cpp8
-rw-r--r--chromium/third_party/swiftshader/src/Device/SwiftConfig.hpp1
-rw-r--r--chromium/third_party/swiftshader/src/Device/VertexProcessor.cpp27
-rw-r--r--chromium/third_party/swiftshader/src/Device/VertexProcessor.hpp2
-rw-r--r--chromium/third_party/swiftshader/src/Main/FrameBufferAndroid.cpp54
-rw-r--r--chromium/third_party/swiftshader/src/Main/libX11.hpp2
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/common/Image.hpp8
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/common/debug.cpp4
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/common/debug.h2
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/compiler/Compiler.vcxproj2
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/compiler/ConstantUnion.h2
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/compiler/ParseHelper.cpp4
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/compiler/ParseHelper.h2
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/compiler/SymbolTable.h2
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/compiler/debug.h2
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/compiler/glslang.y4
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/compiler/glslang_tab.cpp4
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/compiler/preprocessor/preprocessor.vcxproj1
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libEGL/Config.cpp12
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libEGL/Display.cpp8
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libEGL/Display.h6
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp8
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp9
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libEGL/libEGL.vcxproj2
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libEGL/main.cpp92
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLES_CM/Android.mk2
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.vcxproj1
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Android.mk2
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Context.cpp43
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Context.h2
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Texture.cpp47
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Texture.h4
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLESv2/TransformFeedback.cpp22
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLESv2/TransformFeedback.h4
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.cpp105
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.vcxproj2
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLESv2/utilities.cpp7
-rw-r--r--chromium/third_party/swiftshader/src/OpenGL/libGLESv2/utilities.h1
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/ComputeProgram.cpp208
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/ComputeProgram.hpp82
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/PixelProgram.cpp73
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/PixelProgram.hpp11
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/PixelRoutine.cpp403
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/PixelRoutine.hpp18
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/SamplerCore.cpp268
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/SamplerCore.hpp2
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/SetupRoutine.cpp36
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/SpirvID.hpp1
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/SpirvShader.cpp4094
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/SpirvShader.hpp609
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/SpirvShaderSampling.cpp132
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/SpirvShader_dbg.cpp8
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/VertexProgram.cpp75
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/VertexProgram.hpp24
-rw-r--r--chromium/third_party/swiftshader/src/Pipeline/VertexRoutine.cpp6
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/BUILD.gn1
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/Debug.cpp53
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/Debug.hpp95
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/ExecutableMemory.cpp19
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/LLVMReactor.cpp4827
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/LLVMReactor.hpp52
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/LLVMReactorDebugInfo.cpp543
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/LLVMReactorDebugInfo.hpp211
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/Nucleus.hpp5
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/Reactor.cpp4160
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/Reactor.hpp438
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/Reactor.vcxproj214
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/Reactor.vcxproj.filters12
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.cpp311
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.vcxproj5
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.vcxproj.user11
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/Subzero.sln34
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/Subzero.vcxproj2
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/Subzero.vcxproj.filters3
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/SubzeroLLVMDependencies.vcxproj1
-rw-r--r--chromium/third_party/swiftshader/src/Reactor/SubzeroReactor.cpp4194
-rw-r--r--chromium/third_party/swiftshader/src/Renderer/PixelProcessor.cpp2
-rw-r--r--chromium/third_party/swiftshader/src/Renderer/Renderer.hpp1
-rw-r--r--chromium/third_party/swiftshader/src/Renderer/RoutineCache.hpp23
-rw-r--r--chromium/third_party/swiftshader/src/Renderer/SetupProcessor.cpp2
-rw-r--r--chromium/third_party/swiftshader/src/Renderer/VertexProcessor.cpp2
-rw-r--r--chromium/third_party/swiftshader/src/SwiftShader/SwiftShader.vcxproj5
-rw-r--r--chromium/third_party/swiftshader/src/System/Debug.hpp2
-rw-r--r--chromium/third_party/swiftshader/src/System/Math.hpp8
-rw-r--r--chromium/third_party/swiftshader/src/System/Memory.cpp19
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkBuffer.cpp35
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkBuffer.hpp4
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkBufferView.cpp40
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkBufferView.hpp10
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkCommandBuffer.cpp788
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkCommandBuffer.hpp34
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkCommandPool.cpp14
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkConfig.h12
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkDebug.cpp50
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkDebug.hpp102
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkDescriptorPool.cpp23
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSet.hpp44
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSetLayout.cpp352
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSetLayout.hpp60
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkDescriptorUpdateTemplate.cpp74
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkDescriptorUpdateTemplate.hpp47
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkDevice.cpp8
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkDevice.hpp7
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkEvent.hpp16
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkFormat.cpp1974
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkFormat.h79
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkFramebuffer.cpp27
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkFramebuffer.hpp6
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkGetProcAddress.cpp69
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkImage.cpp472
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkImage.hpp50
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkImageView.cpp115
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkImageView.hpp25
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkObject.hpp23
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkPhysicalDevice.cpp105
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkPhysicalDevice.hpp6
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkPipeline.cpp293
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkPipeline.hpp18
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkPipelineCache.cpp79
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkPipelineCache.hpp25
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkPipelineLayout.cpp23
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkPipelineLayout.hpp7
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkQueryPool.cpp145
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkQueryPool.hpp36
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkQueue.cpp21
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkQueue.hpp3
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/VkSampler.hpp31
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/libVulkan.cpp579
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/libvk_swiftshader.def (renamed from chromium/third_party/swiftshader/src/Vulkan/swiftshader_icd.def)0
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/libvk_swiftshader.lds3
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/main.cpp14
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/vk_swiftshader_icd.json.tmpl4
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/vulkan.vcxproj70
-rw-r--r--chromium/third_party/swiftshader/src/Vulkan/vulkan.vcxproj.filters109
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBuffer.cpp569
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBuffer.hpp108
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferAndroid.cpp145
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferAndroid.hpp47
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferDD.cpp503
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferDD.hpp69
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferGDI.cpp162
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferGDI.hpp56
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferOSX.hpp49
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferOSX.mm103
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferOzone.cpp54
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferOzone.hpp40
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferWin.cpp78
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferWin.hpp59
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferX11.cpp192
-rw-r--r--chromium/third_party/swiftshader/src/WSI/FrameBufferX11.hpp52
-rw-r--r--chromium/third_party/swiftshader/src/WSI/VkSurfaceKHR.cpp15
-rw-r--r--chromium/third_party/swiftshader/src/WSI/VkSurfaceKHR.hpp26
-rw-r--r--chromium/third_party/swiftshader/src/WSI/VkSwapchainKHR.cpp76
-rw-r--r--chromium/third_party/swiftshader/src/WSI/VkSwapchainKHR.hpp23
-rw-r--r--chromium/third_party/swiftshader/src/WSI/XlibSurfaceKHR.cpp64
-rw-r--r--chromium/third_party/swiftshader/src/WSI/XlibSurfaceKHR.hpp11
-rw-r--r--chromium/third_party/swiftshader/src/WSI/libX11.hpp2
-rw-r--r--chromium/third_party/swiftshader/third_party/LLVM/Android.bp455
-rw-r--r--chromium/third_party/swiftshader/third_party/LLVM/Android.mk447
-rw-r--r--chromium/third_party/swiftshader/third_party/LLVM/include/llvm/Analysis/LoopInfo.h9
-rw-r--r--chromium/third_party/swiftshader/third_party/LLVM/include/llvm/SymbolTableListTraits.h3
-rw-r--r--chromium/third_party/swiftshader/third_party/LLVM/include/llvm/intrinsics_gen.vcxproj4
-rw-r--r--chromium/third_party/swiftshader/third_party/LLVM/lib/CodeGen/MachineModuleInfo.cpp7
-rw-r--r--chromium/third_party/swiftshader/third_party/LLVM/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp4
-rw-r--r--chromium/third_party/swiftshader/third_party/LLVM/lib/MC/WinCOFFObjectWriter.cpp11
-rw-r--r--chromium/third_party/swiftshader/third_party/LLVM/lib/Support/CrashRecoveryContext.cpp7
-rw-r--r--chromium/third_party/swiftshader/third_party/LLVM/lib/Support/Unix/Program.inc3
-rw-r--r--chromium/third_party/swiftshader/third_party/LLVM/lib/Support/Unix/Signals.inc8
-rw-r--r--chromium/third_party/swiftshader/third_party/LLVM/lib/Transforms/InstCombine/InstCombinePHI.cpp198
-rw-r--r--chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Advanced/ChameleonMan/OGLES2/Build/WindowsVC2010/OGLES2ChameleonMan.vcxproj1
-rw-r--r--chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Beginner/01_HelloAPI/OGLES2/Build/WindowsVC2010/OGLES2HelloAPI.vcxproj1
-rw-r--r--chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Beginner/04_BasicTnL/OGLES/Build/WindowsVC2010/OGLESBasicTnL.vcxproj1
-rw-r--r--chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Intermediate/ColourGrading/OGLES3/Build/WindowsVC2010/OGLES3ColourGrading.vcxproj1
-rw-r--r--chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Intermediate/DisplacementMap/OGLES2/Build/WindowsVC2010/OGLES2DisplacementMap.vcxproj1
-rw-r--r--chromium/third_party/swiftshader/third_party/PowerVR_SDK/Tools/OGLES2/Build/WindowsVC2010/OGLES2Tools.vcxproj5
-rw-r--r--chromium/third_party/swiftshader/third_party/PowerVR_SDK/Tools/OGLES3/Build/WindowsVC2010/OGLES3Tools.vcxproj5
-rw-r--r--chromium/third_party/swiftshader/third_party/SPIRV-Headers/Android.bp34
-rw-r--r--chromium/third_party/swiftshader/third_party/SPIRV-Tools/Android.bp255
-rw-r--r--chromium/third_party/swiftshader/third_party/libbacktrace/config/darwin/include/backtrace-supported.h66
-rw-r--r--chromium/third_party/swiftshader/third_party/libbacktrace/config/darwin/include/config.h150
-rw-r--r--chromium/third_party/swiftshader/third_party/libbacktrace/config/linux/include/backtrace-supported.h66
-rw-r--r--chromium/third_party/swiftshader/third_party/libbacktrace/config/linux/include/config.h150
-rw-r--r--chromium/third_party/swiftshader/third_party/llvm-7.0/BUILD.gn4
-rw-r--r--chromium/third_party/swiftshader/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h2
291 files changed, 22833 insertions, 26091 deletions
diff --git a/chromium/third_party/swiftshader/.travis.yml b/chromium/third_party/swiftshader/.travis.yml
index 361d8e925ab..a4a5d5ce516 100644
--- a/chromium/third_party/swiftshader/.travis.yml
+++ b/chromium/third_party/swiftshader/.travis.yml
@@ -19,10 +19,10 @@ env:
script:
- $CXX --version
- - mkdir build && cd build
+ - mkdir -p build && cd build
- cmake -DREACTOR_BACKEND=$REACTOR_BACKEND ..
- make -j2
- - ./unittests
+ - ./gles-unittests
- ./ReactorUnitTests
notifications:
diff --git a/chromium/third_party/swiftshader/.vscode/c_cpp_properties.json b/chromium/third_party/swiftshader/.vscode/c_cpp_properties.json
new file mode 100644
index 00000000000..873a5a6b7d5
--- /dev/null
+++ b/chromium/third_party/swiftshader/.vscode/c_cpp_properties.json
@@ -0,0 +1,56 @@
+{
+ "configurations": [
+ {
+ "name": "Linux",
+ "defines": [
+ "REACTOR_LLVM_VERSION=7",
+ "ENABLE_RR_DEBUG_INFO=1"
+ ],
+ "includePath": [
+ "${workspaceFolder}/src",
+ "${workspaceFolder}/include",
+ "${workspaceFolder}/third_party/SPIRV-Headers/include",
+ "${workspaceFolder}/third_party/llvm-7.0/llvm/include",
+ "${workspaceFolder}/third_party/llvm-7.0/configs/common/include",
+ "${workspaceFolder}/third_party/llvm-7.0/configs/linux/include"
+ ],
+ "cStandard": "c11",
+ "cppStandard": "c++11"
+ },
+ {
+ "name": "Mac",
+ "defines": [
+ "REACTOR_LLVM_VERSION=7",
+ "ENABLE_RR_DEBUG_INFO=1"
+ ],
+ "includePath": [
+ "${workspaceFolder}/src",
+ "${workspaceFolder}/include",
+ "${workspaceFolder}/third_party/SPIRV-Headers/include",
+ "${workspaceFolder}/third_party/llvm-7.0/llvm/include",
+ "${workspaceFolder}/third_party/llvm-7.0/configs/common/include",
+ "${workspaceFolder}/third_party/llvm-7.0/configs/darwin/include"
+ ],
+ "cStandard": "c11",
+ "cppStandard": "c++11"
+ },
+ {
+ "name": "Win32",
+ "defines": [
+ "REACTOR_LLVM_VERSION=7",
+ "ENABLE_RR_DEBUG_INFO=1"
+ ],
+ "includePath": [
+ "${workspaceFolder}/src",
+ "${workspaceFolder}/include",
+ "${workspaceFolder}/third_party/SPIRV-Headers/include",
+ "${workspaceFolder}/third_party/llvm-7.0/llvm/include",
+ "${workspaceFolder}/third_party/llvm-7.0/configs/common/include",
+ "${workspaceFolder}/third_party/llvm-7.0/configs/windows/include"
+ ],
+ "cStandard": "c11",
+ "cppStandard": "c++11"
+ }
+ ],
+ "version": 4
+} \ No newline at end of file
diff --git a/chromium/third_party/swiftshader/.vscode/launch.json b/chromium/third_party/swiftshader/.vscode/launch.json
deleted file mode 100644
index c184044b11a..00000000000
--- a/chromium/third_party/swiftshader/.vscode/launch.json
+++ /dev/null
@@ -1,175 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Gnome",
- "type": "cppdbg",
- "request": "launch",
- "preLaunchTask": "make",
- "program": "${workspaceRoot}/debug/OGLESIntroducingPVRApi",
- "args": ["LD_LIBRARY_PATH=./"],
- "stopAtEntry": false,
- "cwd": "${workspaceRoot}/debug/",
- "environment": [],
- "externalConsole": true,
- "linux": {
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ]
- },
- "osx": {
- "MIMode": "lldb"
- },
- "windows": {
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ]
- }
- },
- {
- "name": "Glass",
- "type": "cppdbg",
- "request": "launch",
- "preLaunchTask": "make",
- "program": "${workspaceRoot}/debug/OGLESGlass",
- "args": ["LD_LIBRARY_PATH=./"],
- "stopAtEntry": false,
- "cwd": "${workspaceRoot}/debug/",
- "environment": [],
- "externalConsole": true,
- "linux": {
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ]
- },
- "osx": {
- "MIMode": "lldb"
- },
- "windows": {
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ]
- }
- },
- {
- "name": "SubzeroTest",
- "type": "cppdbg",
- "request": "launch",
- "preLaunchTask": "make",
- "program": "${workspaceRoot}/debug/SubzeroTest",
- "args": [],
- "stopAtEntry": false,
- "cwd": "${workspaceRoot}",
- "environment": [],
- "externalConsole": true,
- "linux": {
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ]
- },
- "osx": {
- "MIMode": "lldb"
- },
- "windows": {
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ]
- }
- },
- {
- "name": "OGLES2HelloAPI",
- "type": "cppdbg",
- "request": "launch",
- "preLaunchTask": "make",
- "program": "${workspaceRoot}/debug/OGLES2HelloAPI",
- "args": [],
- "stopAtEntry": false,
- "cwd": "${workspaceRoot}",
- "environment": [],
- "externalConsole": true,
- "linux": {
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ]
- },
- "osx": {
- "MIMode": "lldb"
- },
- "windows": {
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ]
- }
- },
- {
- "name": "C++ Attach",
- "type": "cppdbg",
- "request": "attach",
- "program": "enter program name, for example ${workspaceRoot}/a.out",
- "processId": "${command:pickProcess}",
- "linux": {
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ]
- },
- "osx": {
- "MIMode": "lldb"
- },
- "windows": {
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ]
- }
- }
- ]
-} \ No newline at end of file
diff --git a/chromium/third_party/swiftshader/Android.bp b/chromium/third_party/swiftshader/Android.bp
index b81c37c0fa2..9a6f9c1b407 100644
--- a/chromium/third_party/swiftshader/Android.bp
+++ b/chromium/third_party/swiftshader/Android.bp
@@ -91,6 +91,8 @@ cc_defaults {
cc_library_headers {
name: "swiftshader_platform_headers",
host_supported: true,
+ device_supported: true,
+ vendor_available: true,
export_include_dirs: ["include"],
}
@@ -104,6 +106,6 @@ cc_library_headers {
subdirs = [
"src",
"third_party/llvm-subzero",
- "third_party/LLVM",
+ "third_party/llvm-7.0",
"third_party/subzero",
]
diff --git a/chromium/third_party/swiftshader/Android.mk b/chromium/third_party/swiftshader/Android.mk
index 1cc9690ff1e..f7d5eaaf9ea 100644
--- a/chromium/third_party/swiftshader/Android.mk
+++ b/chromium/third_party/swiftshader/Android.mk
@@ -17,47 +17,25 @@
LOCAL_PATH := $(call my-dir)
swiftshader_root := $(LOCAL_PATH)
-# Default LLVM version for SwiftShader's JIT compiler (Reactor).
-REACTOR_LLVM_VERSION ?= 7
+# LLVM version for SwiftShader's JIT compiler (Reactor).
+REACTOR_LLVM_VERSION := 7
# Subzero is an alternative JIT compiler. It is smaller and generally slower.
REACTOR_USE_SUBZERO := false
-ifeq ($(REACTOR_LLVM_VERSION),3)
-# Reactor with LLVM 3.0 doesn't support ARM. Use Subzero as the Reactor JIT
-# back-end on ARM.
-ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm))
-REACTOR_USE_SUBZERO := true
-endif
-endif
-
-# Subzero and LLVM 7.0 require C++11.
+# SwiftShader requires C++11.
# Full C++11 support is only available from Marshmallow and up.
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23 && echo PreMarshmallow),PreMarshmallow)
-# Fall back to LLVM 3.0.
-REACTOR_USE_SUBZERO := false
-REACTOR_LLVM_VERSION := 3
-endif
-
-# Check whether $(TARGET_ARCH) is supported.
-ifeq ($(REACTOR_LLVM_VERSION),3)
-ifneq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64 arm))
swiftshader_unsupported_build := true
endif
-endif
-ifeq ($(REACTOR_LLVM_VERSION),7)
+# Check whether $(TARGET_ARCH) is supported.
ifneq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64 arm arm64))
swiftshader_unsupported_build := true
endif
-endif
ifneq ($(swiftshader_unsupported_build),true)
include $(swiftshader_root)/src/Android.mk
include $(swiftshader_root)/tests/GLESUnitTests/Android.mk
-ifeq ($(REACTOR_LLVM_VERSION),3)
-include $(swiftshader_root)/third_party/LLVM/Android.mk
-else
include $(swiftshader_root)/third_party/llvm-7.0/Android.mk
endif
-endif
diff --git a/chromium/third_party/swiftshader/CMakeLists.txt b/chromium/third_party/swiftshader/CMakeLists.txt
index 965f7dd7096..9bd3a176192 100644
--- a/chromium/third_party/swiftshader/CMakeLists.txt
+++ b/chromium/third_party/swiftshader/CMakeLists.txt
@@ -18,6 +18,9 @@ endif()
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
set(LINUX ON)
+elseif(CMAKE_SYSTEM_NAME MATCHES "Android")
+ set(ANDROID ON)
+ set(CMAKE_CXX_FLAGS "-DANDROID_NDK_BUILD")
elseif(WIN32)
elseif(APPLE)
else()
@@ -76,8 +79,9 @@ option (MSAN "Build with memory sanitizer" 0)
option (ASAN "Build with address sanitizer" 0)
option (TSAN "Build with thread sanitizer" 0)
option (UBSAN "Build with undefined behavior sanitizer" 0)
-option (WARNINGS_AS_ERRORS "Treat all warnings as errors" 0)
+option (WARNINGS_AS_ERRORS "Treat all warnings as errors" 1)
option (DCHECK_ALWAYS_ON "Check validation macros even in release builds" 0)
+option (REACTOR_EMIT_DEBUG_INFO "Emit debug info for JIT functions" 0)
if(ARCH STREQUAL "arm")
set(DEFAULT_REACTOR_BACKEND "Subzero")
@@ -109,13 +113,26 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# Initialize submodules
###########################################################
-if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/.git)
- message(WARNING "
- third_party/googletest submodule missing.
- Running 'git submodule update --init' to download it:
- ")
+if (NOT TARGET gtest)
+ if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/.git)
+ message(WARNING "
+ third_party/googletest submodule missing.
+ Running 'git submodule update --init' to download it:
+ ")
- execute_process(COMMAND git submodule update --init)
+ execute_process(COMMAND git submodule update --init)
+ endif()
+endif()
+
+if (NOT TARGET libbacktrace)
+ if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/src/.git)
+ message(WARNING "
+ third_party/libbacktrace/src submodule missing.
+ Running 'git submodule update --init' to download it:
+ ")
+
+ execute_process(COMMAND git submodule update --init)
+ endif()
endif()
###########################################################
@@ -189,6 +206,9 @@ else()
set(LLVM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-7.0/llvm)
set(LLVM_CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-7.0/configs)
endif()
+set(LIBBACKTRACE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/src)
+set(LIBBACKTRACE_CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/config)
+set(LIBBACKTRACE_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/src)
set(SUBZERO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/subzero)
set(SUBZERO_LLVM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-subzero)
set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests)
@@ -221,6 +241,7 @@ else()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
CLANG_VERSION_STRING VERSION_GREATER_EQUAL 5)
set_cpp_flag("-Werror=unused-lambda-capture")
+ set_cpp_flag("-Werror=string-conversion")
endif()
# Remove xor, and, or and friends from the list of keywords, they are used
@@ -276,14 +297,21 @@ else()
set_cpp_flag("-DDCHECK_ALWAYS_ON")
endif()
+ if(REACTOR_EMIT_DEBUG_INFO)
+ set_cpp_flag("-DENABLE_RR_DEBUG_INFO")
+ endif()
+
# Disable pedanitc warnings
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set_cpp_flag("-Wno-ignored-attributes") # ignoring attributes on template argument 'X'
set_cpp_flag("-Wno-attributes") # 'X' attribute ignored
set_cpp_flag("-Wno-strict-aliasing") # dereferencing type-punned pointer will break strict-aliasing rules
+ set_cpp_flag("-Wno-comment") # multi-line comment
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set_cpp_flag("-Wno-unneeded-internal-declaration") # function 'X' is not needed and will not be emitted
set_cpp_flag("-Wno-unused-private-field") # private field 'offset' is not used - TODO: Consider enabling this once Vulkan is further implemented.
+ set_cpp_flag("-Wno-comment") # multi-line comment
+ set_cpp_flag("-Wno-undefined-var-template") # instantiation of variable 'X' required here, but no definition is available
endif()
# For distribution it is more important to be slim than super optimized
@@ -684,6 +712,8 @@ elseif(LINUX)
set(LLVM_INCLUDE_DIR ${LLVM_DIR}/include-linux)
elseif(APPLE)
set(LLVM_INCLUDE_DIR ${LLVM_DIR}/include-osx)
+elseif(ANDROID)
+ set(LLVM_INCLUDE_DIR ${LLVM_DIR}/include-android)
endif()
list(APPEND LLVM_INCLUDE_DIR
@@ -782,6 +812,9 @@ set(LLVM_LIST
${LLVM_DIR}/lib/Analysis/ValueLatticeUtils.cpp
${LLVM_DIR}/lib/Analysis/ValueTracking.cpp
${LLVM_DIR}/lib/Analysis/VectorUtils.cpp
+ ${LLVM_DIR}/lib/AsmParser/LLLexer.cpp
+ ${LLVM_DIR}/lib/AsmParser/LLParser.cpp
+ ${LLVM_DIR}/lib/AsmParser/Parser.cpp
${LLVM_DIR}/lib/BinaryFormat/Dwarf.cpp
${LLVM_DIR}/lib/BinaryFormat/Magic.cpp
${LLVM_DIR}/lib/BinaryFormat/Wasm.cpp
@@ -1737,16 +1770,28 @@ elseif(ARCH STREQUAL "arm")
${LLVM_DIR}/lib/Target/ARM/ARMLegalizerInfo.cpp
${LLVM_DIR}/lib/Target/ARM/ARMOptimizeBarriersPass.cpp
)
- endif()
+endif()
+
+if(REACTOR_EMIT_DEBUG_INFO)
+ list(APPEND LLVM_LIST
+ ${LLVM_DIR}/lib/Demangle/ItaniumDemangle.cpp
+ )
+endif(REACTOR_EMIT_DEBUG_INFO)
set(LLVM_INCLUDE_DIR "")
if(WIN32)
list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/windows/include)
+ list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/windows/include)
elseif(LINUX)
list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/linux/include)
+ list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/linux/include)
elseif(APPLE)
list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/darwin/include)
+ list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/darwin/include)
+elseif(ANDROID)
+ list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/android/include)
+ list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/android/include)
endif()
list(APPEND LLVM_INCLUDE_DIR
@@ -1770,11 +1815,23 @@ endif() # REACTOR_LLVM_VERSION
set(LLVM_COMPILE_FLAGS)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
list(APPEND LLVM_COMPILE_FLAGS
- "-Wno-comment" # multi-line comment
"-Wno-noexcept-type" # mangled name for ‘X’ will change in C++17 because the exception specification is part of a function type
"-Wno-maybe-uninitialized" # ‘X’ may be used uninitialized in this function
"-Wno-unused-but-set-variable" # variable ‘X’ set but not used
)
+elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
+ set(LLVM_DISABLE_WARNINGS
+ "/wd4141" # 'inline': used more than once
+ "/wd4146" # unary minus operator applied to unsigned type, result still unsigned
+ "/wd4244" # 'X': conversion from 'uint64_t' to 'const unsigned int', possible loss of data
+ "/wd4267" # 'X': conversion from 'size_t' to 'unsigned int', possible loss of data
+ "/wd4291" # 'void X new(size_t,unsigned int,unsigned int)': no matching operator delete found; memory will not be freed if initialization throws an exception
+ "/wd4319" # 'X': zero extending 'unsigned int' to 'uint64_t' of greater size
+ "/wd4624" # 'X': destructor was implicitly defined as deleted
+ "/wd4805" # 'X': unsafe mix of type 'unsigned int' and type 'bool' in operation
+ "/wd4996" # 'X': Call to 'Y' with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct.
+ )
+ set(LLVM_COMPILE_FLAGS "/D \"_SCL_SECURE_NO_WARNINGS\" ${LLVM_DISABLE_WARNINGS}")
endif()
string (REPLACE ";" " " LLVM_COMPILE_FLAGS "${LLVM_COMPILE_FLAGS}")
@@ -1871,6 +1928,7 @@ if(${REACTOR_BACKEND} STREQUAL "Subzero")
)
set(SUBZERO_REACTOR_LIST
+ ${SOURCE_DIR}/Reactor/Reactor.cpp
${SOURCE_DIR}/Reactor/SubzeroReactor.cpp
${SOURCE_DIR}/Reactor/Routine.cpp
${SOURCE_DIR}/Reactor/Optimizer.cpp
@@ -1922,6 +1980,7 @@ set(COMMON_INCLUDE_DIR
${SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/include
${LLVM_INCLUDE_DIR}
+ ${LIBBACKTRACE_INCLUDE_DIR}
)
set(OPENGL_INCLUDE_DIR
${OPENGL_DIR}
@@ -1962,8 +2021,41 @@ list(REMOVE_ITEM SWIFTSHADER_LIST
${SOURCE_DIR}/Common/GrallocAndroid.hpp
)
+if(REACTOR_EMIT_DEBUG_INFO)
+ set(LIBBACKTRACE_LIST
+ ${LIBBACKTRACE_DIR}/atomic.c
+ ${LIBBACKTRACE_DIR}/backtrace.c
+ ${LIBBACKTRACE_DIR}/backtrace.h
+ ${LIBBACKTRACE_DIR}/dwarf.c
+ ${LIBBACKTRACE_DIR}/fileline.c
+ ${LIBBACKTRACE_DIR}/filenames.h
+ ${LIBBACKTRACE_DIR}/internal.h
+ ${LIBBACKTRACE_DIR}/mmap.c
+ ${LIBBACKTRACE_DIR}/mmapio.c
+ ${LIBBACKTRACE_DIR}/posix.c
+ ${LIBBACKTRACE_DIR}/print.c
+ ${LIBBACKTRACE_DIR}/simple.c
+ ${LIBBACKTRACE_DIR}/sort.c
+ ${LIBBACKTRACE_DIR}/state.c
+ ${LIBBACKTRACE_INCLUDE_DIR}/backtrace-supported.h
+ ${LIBBACKTRACE_INCLUDE_DIR}/config.h
+ )
+
+ if(WIN32)
+ list(APPEND LIBBACKTRACE_LIST ${LIBBACKTRACE_DIR}/pecoff.c)
+ elseif(LINUX)
+ list(APPEND LIBBACKTRACE_LIST ${LIBBACKTRACE_DIR}/elf.c)
+ elseif(APPLE)
+ message(FATAL_ERROR "libbacktrace does not support mach-o yet")
+ endif()
+endif(REACTOR_EMIT_DEBUG_INFO)
+
set(REACTOR_LLVM_LIST
+ ${SOURCE_DIR}/Reactor/Reactor.cpp
${SOURCE_DIR}/Reactor/LLVMReactor.cpp
+ ${SOURCE_DIR}/Reactor/LLVMReactor.hpp
+ ${SOURCE_DIR}/Reactor/LLVMReactorDebugInfo.cpp
+ ${SOURCE_DIR}/Reactor/LLVMReactorDebugInfo.hpp
${SOURCE_DIR}/Reactor/Nucleus.hpp
${SOURCE_DIR}/Reactor/Routine.cpp
${SOURCE_DIR}/Reactor/Routine.hpp
@@ -2118,6 +2210,14 @@ elseif(APPLE)
list(APPEND OPENGL_COMPILER_LIST
${OPENGL_COMPILER_DIR}/ossource_posix.cpp
)
+elseif(ANDROID)
+ list(APPEND SWIFTSHADER_LIST
+ ${SOURCE_DIR}/Main/FrameBufferAndroid.cpp
+ ${SOURCE_DIR}/Main/FrameBufferAndroid.hpp
+ )
+ list(APPEND OPENGL_COMPILER_LIST
+ ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
+ )
endif()
if(WIN32)
@@ -2153,6 +2253,17 @@ set_target_properties(ReactorLLVM PROPERTIES
)
target_link_libraries(ReactorLLVM llvm ${OS_LIBS})
+if(REACTOR_EMIT_DEBUG_INFO)
+ add_library(Libbacktrace STATIC ${LIBBACKTRACE_LIST})
+ set_target_properties(Libbacktrace PROPERTIES
+ INCLUDE_DIRECTORIES "${LIBBACKTRACE_INCLUDE_DIR}"
+ POSITION_INDEPENDENT_CODE 1
+ FOLDER "Core"
+ )
+ target_link_libraries(Libbacktrace ${OS_LIBS})
+ target_link_libraries(ReactorLLVM Libbacktrace)
+endif(REACTOR_EMIT_DEBUG_INFO)
+
if(${REACTOR_BACKEND} STREQUAL "LLVM")
set(Reactor ReactorLLVM)
elseif(${REACTOR_BACKEND} STREQUAL "Subzero")
@@ -2183,6 +2294,9 @@ if(BUILD_EGL)
COMPILE_DEFINITIONS "EGL_EGLEXT_PROTOTYPES; EGLAPI=; NO_SANITIZE_FUNCTION=;"
PREFIX ""
)
+ if (ANDROID)
+ set_target_properties(libEGL PROPERTIES SUFFIX "_swiftshader.so")
+ endif ()
set_shared_library_export_map(libEGL ${SOURCE_DIR}/OpenGL/libEGL)
target_link_libraries(libEGL ${OS_LIBS})
add_custom_command(
@@ -2190,8 +2304,8 @@ if(BUILD_EGL)
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libEGL>/translator
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> $<TARGET_FILE_DIR:libEGL>/translator/${LIB_PREFIX}EGL_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> ${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
)
endif()
@@ -2203,6 +2317,9 @@ if(BUILD_GLESv2)
COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES; GL_API=; GL_APICALL=; GLAPI=; NO_SANITIZE_FUNCTION=;"
PREFIX ""
)
+ if (ANDROID)
+ set_target_properties(libGLESv2 PROPERTIES SUFFIX "_swiftshader.so")
+ endif ()
set_shared_library_export_map(libGLESv2 ${SOURCE_DIR}/OpenGL/libGLESv2)
target_link_libraries(libGLESv2 SwiftShader ${Reactor} GLCompiler ${OS_LIBS})
add_custom_command(
@@ -2210,8 +2327,8 @@ if(BUILD_GLESv2)
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLESv2>/translator
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> $<TARGET_FILE_DIR:libGLESv2>/translator/${LIB_PREFIX}GLES_V2_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> ${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
)
endif()
@@ -2223,6 +2340,9 @@ if(BUILD_GLES_CM)
COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES; EGLAPI=; GL_API=; GL_APICALL=; GLAPI=;"
PREFIX ""
)
+ if (ANDROID)
+ set_target_properties(libGLES_CM PROPERTIES SUFFIX "_swiftshader.so")
+ endif ()
set_shared_library_export_map(libGLES_CM ${SOURCE_DIR}/OpenGL/libGLES_CM)
target_link_libraries(libGLES_CM SwiftShader ${Reactor} GLCompiler ${OS_LIBS})
add_custom_command(
@@ -2234,11 +2354,13 @@ if(BUILD_GLES_CM)
endif()
if(BUILD_VULKAN)
- # This variable is also used by SPIRV-Tools to locate SPIRV-Headers
- set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/SPIRV-Headers")
- list(APPEND VULKAN_INCLUDE_DIR "${SPIRV-Headers_SOURCE_DIR}/include")
+ if (NOT TARGET SPIRV-Tools)
+ # This variable is also used by SPIRV-Tools to locate SPIRV-Headers
+ set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/SPIRV-Headers")
+ list(APPEND VULKAN_INCLUDE_DIR "${SPIRV-Headers_SOURCE_DIR}/include")
- add_subdirectory(third_party/SPIRV-Tools)
+ add_subdirectory(third_party/SPIRV-Tools)
+ endif()
add_library(libvk_swiftshader SHARED ${VULKAN_LIST})
set_target_properties(libvk_swiftshader PROPERTIES
@@ -2254,12 +2376,12 @@ if(BUILD_VULKAN)
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libvk_swiftshader>/translator
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> $<TARGET_FILE_DIR:libvk_swiftshader>/translator/${LIB_PREFIX}Vulkan_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> ${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
)
configure_file(
"${VULKAN_DIR}/vk_swiftshader_icd.json.tmpl"
- "${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/vk_swiftshader_icd.json")
+ "${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/vk_swiftshader_icd.json")
endif()
###########################################################
@@ -2327,25 +2449,55 @@ if(BUILD_TESTS)
endif()
if(BUILD_TESTS)
- set(UNITTESTS_LIST
+ set(GLES_UNITTESTS_LIST
${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/main.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/unittests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
)
- set(UNITTESTS_INCLUDE_DIR
+ set(GLES_UNITTESTS_INCLUDE_DIR
+ ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include/
+ ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include/
+ ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/
+ )
+
+ add_executable(gles-unittests ${GLES_UNITTESTS_LIST})
+ set_target_properties(gles-unittests PROPERTIES
+ INCLUDE_DIRECTORIES "${GLES_UNITTESTS_INCLUDE_DIR}"
+ FOLDER "Tests"
+ COMPILE_DEFINITIONS "STANDALONE"
+ )
+
+ target_link_libraries(gles-unittests libEGL libGLESv2 ${OS_LIBS})
+ if(ANDROID)
+ target_link_libraries(gles-unittests -landroid)
+ endif()
+endif()
+
+if(BUILD_TESTS AND BUILD_VULKAN)
+ set(VK_UNITTESTS_LIST
+ ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/Device.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/Driver.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/main.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/unittests.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
+ )
+
+ set(VK_UNITTESTS_INCLUDE_DIR
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include/
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include/
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
+ ${CMAKE_CURRENT_SOURCE_DIR}/third_party/SPIRV-Tools/include
${CMAKE_CURRENT_SOURCE_DIR}/include/
)
- add_executable(unittests ${UNITTESTS_LIST})
- set_target_properties(unittests PROPERTIES
- INCLUDE_DIRECTORIES "${UNITTESTS_INCLUDE_DIR}"
+ add_executable(vk-unittests ${VK_UNITTESTS_LIST})
+ set_target_properties(vk-unittests PROPERTIES
+ INCLUDE_DIRECTORIES "${VK_UNITTESTS_INCLUDE_DIR}"
FOLDER "Tests"
COMPILE_DEFINITIONS "STANDALONE"
)
- target_link_libraries(unittests libEGL libGLESv2 ${OS_LIBS})
+ target_link_libraries(vk-unittests ${OS_LIBS} SPIRV-Tools)
endif()
diff --git a/chromium/third_party/swiftshader/CONTRIBUTORS.txt b/chromium/third_party/swiftshader/CONTRIBUTORS.txt
index 77a91b61df1..0ee860a2863 100644
--- a/chromium/third_party/swiftshader/CONTRIBUTORS.txt
+++ b/chromium/third_party/swiftshader/CONTRIBUTORS.txt
@@ -26,6 +26,11 @@ Google Inc.
Meng-Lin Wu <marleymoo@google.com>
Krzysztof Kosiński <krzysio@google.com>
Chris Forbes <chrisforbes@google.com>
+ Ben Clayton <bclayton@google.com>
+ Hernan Liatis <hliatis@google.com>
+ Logan (Tzu-hsiang) Chien <loganchien@google.com>
+ Stephen White <senorblanco@google.com>
+ Raymond Chiu <chiur@google.com>
TransGaming Inc.
Nicolas Capens
diff --git a/chromium/third_party/swiftshader/README.md b/chromium/third_party/swiftshader/README.md
index 5d63e614f37..fe1a4abb09e 100644
--- a/chromium/third_party/swiftshader/README.md
+++ b/chromium/third_party/swiftshader/README.md
@@ -25,7 +25,7 @@ Android and Chrome (OS) build environments are also supported.
cmake ..
make --jobs=8
- ./unittests
+ ./gles-unittests
./OGLES2HelloAPI
Usage
diff --git a/chromium/third_party/swiftshader/SwiftShader.sln b/chromium/third_party/swiftshader/SwiftShader.sln
index 33701b18306..b90da4f2414 100644
--- a/chromium/third_party/swiftshader/SwiftShader.sln
+++ b/chromium/third_party/swiftshader/SwiftShader.sln
@@ -20,181 +20,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libGLESv2", "src\OpenGL\lib
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libEGL", "src\OpenGL\libEGL\libEGL.vcxproj", "{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMAnalysis", "third_party\LLVM\lib\Analysis\LLVMAnalysis.vcxproj", "{97EDF19C-6360-4770-9255-EBA2F1A13E9B}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}
- {76F7B8C2-C825-40DC-BB68-9D987275E320} = {76F7B8C2-C825-40DC-BB68-9D987275E320}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMCodeGen", "third_party\LLVM\lib\CodeGen\LLVMCodeGen.vcxproj", "{7BE5F26F-0525-42BB-AAED-56C5B4582B99}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {5C514254-58EE-4850-8743-F5D7BEAA3E66} = {5C514254-58EE-4850-8743-F5D7BEAA3E66}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB} = {8AB70E5D-2814-4682-AF9F-3062758BAEAB}
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C} = {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B} = {97EDF19C-6360-4770-9255-EBA2F1A13E9B}
- {76F7B8C2-C825-40DC-BB68-9D987275E320} = {76F7B8C2-C825-40DC-BB68-9D987275E320}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMCore", "third_party\LLVM\lib\VMCore\LLVMCore.vcxproj", "{00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMExecutionEngine", "third_party\LLVM\lib\ExecutionEngine\LLVMExecutionEngine.vcxproj", "{75362C64-1B52-4266-B079-22C8E00F53D5}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB} = {8AB70E5D-2814-4682-AF9F-3062758BAEAB}
- {76F7B8C2-C825-40DC-BB68-9D987275E320} = {76F7B8C2-C825-40DC-BB68-9D987275E320}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMInstCombine", "third_party\LLVM\lib\Transforms\InstCombine\LLVMInstCombine.vcxproj", "{D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {5C514254-58EE-4850-8743-F5D7BEAA3E66} = {5C514254-58EE-4850-8743-F5D7BEAA3E66}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B} = {97EDF19C-6360-4770-9255-EBA2F1A13E9B}
- {76F7B8C2-C825-40DC-BB68-9D987275E320} = {76F7B8C2-C825-40DC-BB68-9D987275E320}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMJIT", "third_party\LLVM\lib\ExecutionEngine\JIT\LLVMJIT.vcxproj", "{F03005CF-B4DB-46D1-B673-E268C3B0C3F7}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}
- {75362C64-1B52-4266-B079-22C8E00F53D5} = {75362C64-1B52-4266-B079-22C8E00F53D5}
- {76F7B8C2-C825-40DC-BB68-9D987275E320} = {76F7B8C2-C825-40DC-BB68-9D987275E320}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMMC", "third_party\LLVM\lib\MC\LLVMMC.vcxproj", "{8AB70E5D-2814-4682-AF9F-3062758BAEAB}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMScalarOpts", "third_party\LLVM\lib\Transforms\Scalar\LLVMScalarOpts.vcxproj", "{A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}"
- ProjectSection(ProjectDependencies) = postProject
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36} = {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {5C514254-58EE-4850-8743-F5D7BEAA3E66} = {5C514254-58EE-4850-8743-F5D7BEAA3E66}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B} = {97EDF19C-6360-4770-9255-EBA2F1A13E9B}
- {76F7B8C2-C825-40DC-BB68-9D987275E320} = {76F7B8C2-C825-40DC-BB68-9D987275E320}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMSelectionDAG", "third_party\LLVM\lib\CodeGen\SelectionDAG\LLVMSelectionDAG.vcxproj", "{CDC80E5C-954B-4BCB-8C81-58645F5103A5}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {5C514254-58EE-4850-8743-F5D7BEAA3E66} = {5C514254-58EE-4850-8743-F5D7BEAA3E66}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB} = {8AB70E5D-2814-4682-AF9F-3062758BAEAB}
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99} = {7BE5F26F-0525-42BB-AAED-56C5B4582B99}
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B} = {97EDF19C-6360-4770-9255-EBA2F1A13E9B}
- {76F7B8C2-C825-40DC-BB68-9D987275E320} = {76F7B8C2-C825-40DC-BB68-9D987275E320}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMSupport", "third_party\LLVM\lib\Support\LLVMSupport.vcxproj", "{C688DD59-C6CB-4B33-B56F-A7D6F3761524}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMTableGen", "third_party\LLVM\lib\TableGen\LLVMTableGen.vcxproj", "{BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}"
- ProjectSection(ProjectDependencies) = postProject
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMTarget", "third_party\LLVM\lib\Target\LLVMTarget.vcxproj", "{76F7B8C2-C825-40DC-BB68-9D987275E320}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB} = {8AB70E5D-2814-4682-AF9F-3062758BAEAB}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMTransformUtils", "third_party\LLVM\lib\Transforms\Utils\LLVMTransformUtils.vcxproj", "{5C514254-58EE-4850-8743-F5D7BEAA3E66}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B} = {97EDF19C-6360-4770-9255-EBA2F1A13E9B}
- {76F7B8C2-C825-40DC-BB68-9D987275E320} = {76F7B8C2-C825-40DC-BB68-9D987275E320}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMX86AsmPrinter", "third_party\LLVM\lib\Target\X86\InstPrinter\LLVMX86AsmPrinter.vcxproj", "{80FE41DF-5232-4FC1-8697-461026A708CF}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB} = {8AB70E5D-2814-4682-AF9F-3062758BAEAB}
- {531B1D71-5EE6-4576-971E-9CC28B0B3868} = {531B1D71-5EE6-4576-971E-9CC28B0B3868}
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC} = {9DEAA5E7-D432-4770-B96D-221B56D74FCC}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMX86CodeGen", "third_party\LLVM\lib\Target\X86\LLVMX86CodeGen.vcxproj", "{F513CBEF-B281-4B76-9CB5-7D31CECC739A}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5} = {CDC80E5C-954B-4BCB-8C81-58645F5103A5}
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB} = {8AB70E5D-2814-4682-AF9F-3062758BAEAB}
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99} = {7BE5F26F-0525-42BB-AAED-56C5B4582B99}
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6} = {5C3DAD88-8163-499D-BB6C-6F44174F87B6}
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B} = {97EDF19C-6360-4770-9255-EBA2F1A13E9B}
- {76F7B8C2-C825-40DC-BB68-9D987275E320} = {76F7B8C2-C825-40DC-BB68-9D987275E320}
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75} = {1F8587CB-0779-44BB-AFA4-03DD8A036D75}
- {80FE41DF-5232-4FC1-8697-461026A708CF} = {80FE41DF-5232-4FC1-8697-461026A708CF}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMX86Desc", "third_party\LLVM\lib\Target\X86\MCTargetDesc\LLVMX86Desc.vcxproj", "{5C3DAD88-8163-499D-BB6C-6F44174F87B6}"
- ProjectSection(ProjectDependencies) = postProject
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC} = {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB} = {8AB70E5D-2814-4682-AF9F-3062758BAEAB}
- {531B1D71-5EE6-4576-971E-9CC28B0B3868} = {531B1D71-5EE6-4576-971E-9CC28B0B3868}
- {80FE41DF-5232-4FC1-8697-461026A708CF} = {80FE41DF-5232-4FC1-8697-461026A708CF}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMX86Info", "third_party\LLVM\lib\Target\X86\TargetInfo\LLVMX86Info.vcxproj", "{180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB} = {8AB70E5D-2814-4682-AF9F-3062758BAEAB}
- {531B1D71-5EE6-4576-971E-9CC28B0B3868} = {531B1D71-5EE6-4576-971E-9CC28B0B3868}
- {76F7B8C2-C825-40DC-BB68-9D987275E320} = {76F7B8C2-C825-40DC-BB68-9D987275E320}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLVMX86Utils", "third_party\LLVM\lib\Target\X86\Utils\LLVMX86Utils.vcxproj", "{9DEAA5E7-D432-4770-B96D-221B56D74FCC}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}
- {531B1D71-5EE6-4576-971E-9CC28B0B3868} = {531B1D71-5EE6-4576-971E-9CC28B0B3868}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "X86CommonTableGen", "third_party\LLVM\lib\Target\X86\X86CommonTableGen.vcxproj", "{531B1D71-5EE6-4576-971E-9CC28B0B3868}"
- ProjectSection(ProjectDependencies) = postProject
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {E9B87B46-1EB0-4D95-9049-41B148FBADCD}
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75} = {1F8587CB-0779-44BB-AFA4-03DD8A036D75}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intrinsics_gen", "third_party\LLVM\include\llvm\intrinsics_gen.vcxproj", "{E9B87B46-1EB0-4D95-9049-41B148FBADCD}"
- ProjectSection(ProjectDependencies) = postProject
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75} = {1F8587CB-0779-44BB-AFA4-03DD8A036D75}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llvm-tblgen", "third_party\LLVM\utils\TableGen\llvm-tblgen.vcxproj", "{1F8587CB-0779-44BB-AFA4-03DD8A036D75}"
- ProjectSection(ProjectDependencies) = postProject
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {C688DD59-C6CB-4B33-B56F-A7D6F3761524}
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C} = {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}
- EndProjectSection
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Compiler", "src\OpenGL\compiler\Compiler.vcxproj", "{5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "preprocessor", "src\OpenGL\compiler\preprocessor\preprocessor.vcxproj", "{92940255-AB4B-42FB-A2C4-0FAB19C3C48A}"
@@ -258,678 +83,441 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VertexRoutineFuzzer", "test
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Vulkan", "src\Vulkan\vulkan.vcxproj", "{E1C34B66-C942-4B9A-B8C3-9A12625650D3}"
ProjectSection(ProjectDependencies) = postProject
- {00BC7103-607E-30AB-AC01-9BCCB4B497D3} = {00BC7103-607E-30AB-AC01-9BCCB4B497D3}
- {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7} = {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {2866BC19-5FA8-3D67-8D94-751A3803A3DF}
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18} = {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactorUnitTests", "src\Reactor\ReactorUnitTests.vcxproj", "{4EC107AB-89E8-4A0B-8366-B3E81085AE07}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VulkanUnitTests", "tests\VulkanUnitTests\VulkanUnitTests.vcxproj", "{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}"
+ ProjectSection(ProjectDependencies) = postProject
+ {E1C34B66-C942-4B9A-B8C3-9A12625650D3} = {E1C34B66-C942-4B9A-B8C3-9A12625650D3}
+ EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools", "SPIRV-Tools", "{ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\SPIRV-Tools.vcxproj", "{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\SPIRV-Tools.vcxproj", "{2866BC19-5FA8-3D67-8D94-751A3803A3DF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-opt", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\opt\SPIRV-Tools-opt.vcxproj", "{2F8B8E0B-1B59-3671-91FE-A0E499B82D18}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-opt", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\opt\SPIRV-Tools-opt.vcxproj", "{00BC7103-607E-30AB-AC01-9BCCB4B497D3}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_tables", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\core_tables.vcxproj", "{95A9028D-402E-33FB-89FA-D07A85302C47}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_tables", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\core_tables.vcxproj", "{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "enum_string_mapping", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\enum_string_mapping.vcxproj", "{1FFA8633-FFB4-3B7C-9F44-A42B791944C9}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "enum_string_mapping", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\enum_string_mapping.vcxproj", "{34CB4705-0332-3134-BE31-AE71FCF9B26C}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "extinst_tables", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\extinst_tables.vcxproj", "{136BDBF5-3C3E-3763-B285-79E67F8E442F}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "extinst_tables", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\extinst_tables.vcxproj", "{4827C1A9-38A6-34C2-BCE6-9BD67E09F956}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-header-DebugInfo", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-header-DebugInfo.vcxproj", "{B0183B68-4A3E-382F-A66C-520DA9CF24F9}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-header-DebugInfo", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-header-DebugInfo.vcxproj", "{F2CF5409-EC66-380C-9D99-E7DE526F5065}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-debuginfo", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-debuginfo.vcxproj", "{2F264302-EFA1-396F-AD64-0AC05E686177}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-debuginfo", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-debuginfo.vcxproj", "{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-gcn-shader", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-gcn-shader.vcxproj", "{2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-gcn-shader", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-gcn-shader.vcxproj", "{776D987A-006A-39B1-BBAB-620E77F07525}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-ballot", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-ballot.vcxproj", "{07107D83-83B6-3BE6-8827-20DB1D90942F}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-ballot", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-ballot.vcxproj", "{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-explicit-vertex-parameter", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj", "{684F4245-24D8-3E74-ACCE-4FC6407F80FC}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-explicit-vertex-parameter", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj", "{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-trinary-minmax", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-trinary-minmax.vcxproj", "{EC14378D-27D2-31F1-B61E-9A92CB3E00A6}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-trinary-minmax", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-trinary-minmax.vcxproj", "{972385EE-2A79-349F-997A-09272FBAB677}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llvm", "build\Visual Studio 15 2017 Win64\llvm.vcxproj", "{B9E0EFB7-8E1B-303D-9222-13F7A82B7858}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
- Profile|Win32 = Profile|Win32
+ Debug|x86 = Debug|x86
Profile|x64 = Profile|x64
- Release|Win32 = Release|Win32
+ Profile|x86 = Profile|x86
Release|x64 = Release|x64
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Debug|Win32.ActiveCfg = Debug|Win32
- {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Debug|Win32.Build.0 = Debug|Win32
{7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Debug|x64.ActiveCfg = Debug|x64
{7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Debug|x64.Build.0 = Debug|x64
- {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Profile|Win32.ActiveCfg = Profile|Win32
- {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Profile|Win32.Build.0 = Profile|Win32
+ {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Debug|x86.ActiveCfg = Debug|Win32
+ {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Debug|x86.Build.0 = Debug|Win32
{7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Profile|x64.ActiveCfg = Profile|x64
{7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Profile|x64.Build.0 = Profile|x64
- {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Release|Win32.ActiveCfg = Release|Win32
- {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Release|Win32.Build.0 = Release|Win32
+ {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Profile|x86.ActiveCfg = Profile|Win32
+ {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Profile|x86.Build.0 = Profile|Win32
{7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Release|x64.ActiveCfg = Release|x64
{7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Release|x64.Build.0 = Release|x64
- {28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Debug|Win32.ActiveCfg = Debug|Win32
- {28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Debug|Win32.Build.0 = Debug|Win32
+ {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Release|x86.ActiveCfg = Release|Win32
+ {7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}.Release|x86.Build.0 = Release|Win32
{28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Debug|x64.ActiveCfg = Debug|x64
{28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Debug|x64.Build.0 = Debug|x64
- {28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Profile|Win32.ActiveCfg = Profile|Win32
- {28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Profile|Win32.Build.0 = Profile|Win32
+ {28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Debug|x86.ActiveCfg = Debug|Win32
+ {28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Debug|x86.Build.0 = Debug|Win32
{28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Profile|x64.ActiveCfg = Profile|x64
{28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Profile|x64.Build.0 = Profile|x64
- {28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Release|Win32.ActiveCfg = Release|Win32
- {28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Release|Win32.Build.0 = Release|Win32
+ {28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Profile|x86.ActiveCfg = Profile|Win32
+ {28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Profile|x86.Build.0 = Profile|Win32
{28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Release|x64.ActiveCfg = Release|x64
{28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Release|x64.Build.0 = Release|x64
- {B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|Win32.ActiveCfg = Debug|Win32
- {B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|Win32.Build.0 = Debug|Win32
+ {28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Release|x86.ActiveCfg = Release|Win32
+ {28FD076D-10B5-4BD8-A4CF-F44C7002A803}.Release|x86.Build.0 = Release|Win32
{B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|x64.ActiveCfg = Debug|x64
{B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|x64.Build.0 = Debug|x64
- {B5871A7A-968C-42E3-A33B-981E6F448E78}.Profile|Win32.ActiveCfg = Profile|Win32
- {B5871A7A-968C-42E3-A33B-981E6F448E78}.Profile|Win32.Build.0 = Profile|Win32
+ {B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|x86.ActiveCfg = Debug|Win32
+ {B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|x86.Build.0 = Debug|Win32
{B5871A7A-968C-42E3-A33B-981E6F448E78}.Profile|x64.ActiveCfg = Profile|x64
{B5871A7A-968C-42E3-A33B-981E6F448E78}.Profile|x64.Build.0 = Profile|x64
- {B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|Win32.ActiveCfg = Release|Win32
- {B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|Win32.Build.0 = Release|Win32
+ {B5871A7A-968C-42E3-A33B-981E6F448E78}.Profile|x86.ActiveCfg = Profile|Win32
+ {B5871A7A-968C-42E3-A33B-981E6F448E78}.Profile|x86.Build.0 = Profile|Win32
{B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|x64.ActiveCfg = Release|x64
{B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|x64.Build.0 = Release|x64
- {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|Win32.ActiveCfg = Debug|Win32
- {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|Win32.Build.0 = Debug|Win32
+ {B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|x86.ActiveCfg = Release|Win32
+ {B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|x86.Build.0 = Release|Win32
{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|x64.ActiveCfg = Debug|x64
{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|x64.Build.0 = Debug|x64
- {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Profile|Win32.ActiveCfg = Profile|Win32
- {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Profile|Win32.Build.0 = Profile|Win32
+ {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|x86.ActiveCfg = Debug|Win32
+ {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|x86.Build.0 = Debug|Win32
{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Profile|x64.ActiveCfg = Profile|x64
{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Profile|x64.Build.0 = Profile|x64
- {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|Win32.ActiveCfg = Release|Win32
- {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|Win32.Build.0 = Release|Win32
+ {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Profile|x86.ActiveCfg = Profile|Win32
+ {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Profile|x86.Build.0 = Profile|Win32
{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|x64.ActiveCfg = Release|x64
{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|x64.Build.0 = Release|x64
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B}.Debug|Win32.ActiveCfg = Debug|Win32
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B}.Debug|Win32.Build.0 = Debug|Win32
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B}.Debug|x64.ActiveCfg = Debug|x64
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B}.Debug|x64.Build.0 = Debug|x64
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B}.Profile|Win32.ActiveCfg = Profile|Win32
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B}.Profile|Win32.Build.0 = Profile|Win32
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B}.Profile|x64.ActiveCfg = Profile|x64
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B}.Profile|x64.Build.0 = Profile|x64
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B}.Release|Win32.ActiveCfg = Release|Win32
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B}.Release|Win32.Build.0 = Release|Win32
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B}.Release|x64.ActiveCfg = Release|x64
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B}.Release|x64.Build.0 = Release|x64
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99}.Debug|Win32.ActiveCfg = Debug|Win32
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99}.Debug|Win32.Build.0 = Debug|Win32
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99}.Debug|x64.ActiveCfg = Debug|x64
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99}.Debug|x64.Build.0 = Debug|x64
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99}.Profile|Win32.ActiveCfg = Profile|Win32
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99}.Profile|Win32.Build.0 = Profile|Win32
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99}.Profile|x64.ActiveCfg = Profile|x64
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99}.Profile|x64.Build.0 = Profile|x64
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99}.Release|Win32.ActiveCfg = Release|Win32
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99}.Release|Win32.Build.0 = Release|Win32
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99}.Release|x64.ActiveCfg = Release|x64
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99}.Release|x64.Build.0 = Release|x64
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}.Debug|Win32.ActiveCfg = Debug|Win32
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}.Debug|Win32.Build.0 = Debug|Win32
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}.Debug|x64.ActiveCfg = Debug|x64
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}.Debug|x64.Build.0 = Debug|x64
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}.Profile|Win32.ActiveCfg = Profile|Win32
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}.Profile|Win32.Build.0 = Profile|Win32
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}.Profile|x64.ActiveCfg = Profile|x64
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}.Profile|x64.Build.0 = Profile|x64
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}.Release|Win32.ActiveCfg = Release|Win32
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}.Release|Win32.Build.0 = Release|Win32
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}.Release|x64.ActiveCfg = Release|x64
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1}.Release|x64.Build.0 = Release|x64
- {75362C64-1B52-4266-B079-22C8E00F53D5}.Debug|Win32.ActiveCfg = Debug|Win32
- {75362C64-1B52-4266-B079-22C8E00F53D5}.Debug|Win32.Build.0 = Debug|Win32
- {75362C64-1B52-4266-B079-22C8E00F53D5}.Debug|x64.ActiveCfg = Debug|x64
- {75362C64-1B52-4266-B079-22C8E00F53D5}.Debug|x64.Build.0 = Debug|x64
- {75362C64-1B52-4266-B079-22C8E00F53D5}.Profile|Win32.ActiveCfg = Profile|Win32
- {75362C64-1B52-4266-B079-22C8E00F53D5}.Profile|Win32.Build.0 = Profile|Win32
- {75362C64-1B52-4266-B079-22C8E00F53D5}.Profile|x64.ActiveCfg = Profile|x64
- {75362C64-1B52-4266-B079-22C8E00F53D5}.Profile|x64.Build.0 = Profile|x64
- {75362C64-1B52-4266-B079-22C8E00F53D5}.Release|Win32.ActiveCfg = Release|Win32
- {75362C64-1B52-4266-B079-22C8E00F53D5}.Release|Win32.Build.0 = Release|Win32
- {75362C64-1B52-4266-B079-22C8E00F53D5}.Release|x64.ActiveCfg = Release|x64
- {75362C64-1B52-4266-B079-22C8E00F53D5}.Release|x64.Build.0 = Release|x64
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}.Debug|Win32.ActiveCfg = Debug|Win32
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}.Debug|Win32.Build.0 = Debug|Win32
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}.Debug|x64.ActiveCfg = Debug|x64
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}.Debug|x64.Build.0 = Debug|x64
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}.Profile|Win32.ActiveCfg = Profile|Win32
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}.Profile|Win32.Build.0 = Profile|Win32
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}.Profile|x64.ActiveCfg = Profile|x64
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}.Profile|x64.Build.0 = Profile|x64
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}.Release|Win32.ActiveCfg = Release|Win32
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}.Release|Win32.Build.0 = Release|Win32
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}.Release|x64.ActiveCfg = Release|x64
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36}.Release|x64.Build.0 = Release|x64
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7}.Debug|Win32.ActiveCfg = Debug|Win32
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7}.Debug|Win32.Build.0 = Debug|Win32
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7}.Debug|x64.ActiveCfg = Debug|x64
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7}.Debug|x64.Build.0 = Debug|x64
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7}.Profile|Win32.ActiveCfg = Profile|Win32
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7}.Profile|Win32.Build.0 = Profile|Win32
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7}.Profile|x64.ActiveCfg = Profile|x64
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7}.Profile|x64.Build.0 = Profile|x64
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7}.Release|Win32.ActiveCfg = Release|Win32
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7}.Release|Win32.Build.0 = Release|Win32
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7}.Release|x64.ActiveCfg = Release|x64
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7}.Release|x64.Build.0 = Release|x64
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB}.Debug|Win32.ActiveCfg = Debug|Win32
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB}.Debug|Win32.Build.0 = Debug|Win32
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB}.Debug|x64.ActiveCfg = Debug|x64
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB}.Debug|x64.Build.0 = Debug|x64
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB}.Profile|Win32.ActiveCfg = Profile|Win32
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB}.Profile|Win32.Build.0 = Profile|Win32
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB}.Profile|x64.ActiveCfg = Profile|x64
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB}.Profile|x64.Build.0 = Profile|x64
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB}.Release|Win32.ActiveCfg = Release|Win32
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB}.Release|Win32.Build.0 = Release|Win32
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB}.Release|x64.ActiveCfg = Release|x64
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB}.Release|x64.Build.0 = Release|x64
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}.Debug|Win32.ActiveCfg = Debug|Win32
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}.Debug|Win32.Build.0 = Debug|Win32
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}.Debug|x64.ActiveCfg = Debug|x64
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}.Debug|x64.Build.0 = Debug|x64
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}.Profile|Win32.ActiveCfg = Profile|Win32
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}.Profile|Win32.Build.0 = Profile|Win32
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}.Profile|x64.ActiveCfg = Profile|x64
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}.Profile|x64.Build.0 = Profile|x64
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}.Release|Win32.ActiveCfg = Release|Win32
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}.Release|Win32.Build.0 = Release|Win32
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}.Release|x64.ActiveCfg = Release|x64
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C}.Release|x64.Build.0 = Release|x64
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5}.Debug|Win32.ActiveCfg = Debug|Win32
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5}.Debug|Win32.Build.0 = Debug|Win32
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5}.Debug|x64.ActiveCfg = Debug|x64
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5}.Debug|x64.Build.0 = Debug|x64
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5}.Profile|Win32.ActiveCfg = Profile|Win32
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5}.Profile|Win32.Build.0 = Profile|Win32
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5}.Profile|x64.ActiveCfg = Profile|x64
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5}.Profile|x64.Build.0 = Profile|x64
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5}.Release|Win32.ActiveCfg = Release|Win32
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5}.Release|Win32.Build.0 = Release|Win32
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5}.Release|x64.ActiveCfg = Release|x64
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5}.Release|x64.Build.0 = Release|x64
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524}.Debug|Win32.ActiveCfg = Debug|Win32
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524}.Debug|Win32.Build.0 = Debug|Win32
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524}.Debug|x64.ActiveCfg = Debug|x64
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524}.Debug|x64.Build.0 = Debug|x64
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524}.Profile|Win32.ActiveCfg = Profile|Win32
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524}.Profile|Win32.Build.0 = Profile|Win32
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524}.Profile|x64.ActiveCfg = Profile|x64
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524}.Profile|x64.Build.0 = Profile|x64
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524}.Release|Win32.ActiveCfg = Release|Win32
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524}.Release|Win32.Build.0 = Release|Win32
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524}.Release|x64.ActiveCfg = Release|x64
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524}.Release|x64.Build.0 = Release|x64
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}.Debug|Win32.ActiveCfg = Debug|Win32
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}.Debug|Win32.Build.0 = Debug|Win32
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}.Debug|x64.ActiveCfg = Debug|x64
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}.Debug|x64.Build.0 = Debug|x64
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}.Profile|Win32.ActiveCfg = Profile|Win32
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}.Profile|Win32.Build.0 = Profile|Win32
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}.Profile|x64.ActiveCfg = Profile|x64
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}.Profile|x64.Build.0 = Profile|x64
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}.Release|Win32.ActiveCfg = Release|Win32
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}.Release|Win32.Build.0 = Release|Win32
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}.Release|x64.ActiveCfg = Release|x64
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C}.Release|x64.Build.0 = Release|x64
- {76F7B8C2-C825-40DC-BB68-9D987275E320}.Debug|Win32.ActiveCfg = Debug|Win32
- {76F7B8C2-C825-40DC-BB68-9D987275E320}.Debug|Win32.Build.0 = Debug|Win32
- {76F7B8C2-C825-40DC-BB68-9D987275E320}.Debug|x64.ActiveCfg = Debug|x64
- {76F7B8C2-C825-40DC-BB68-9D987275E320}.Debug|x64.Build.0 = Debug|x64
- {76F7B8C2-C825-40DC-BB68-9D987275E320}.Profile|Win32.ActiveCfg = Profile|Win32
- {76F7B8C2-C825-40DC-BB68-9D987275E320}.Profile|Win32.Build.0 = Profile|Win32
- {76F7B8C2-C825-40DC-BB68-9D987275E320}.Profile|x64.ActiveCfg = Profile|x64
- {76F7B8C2-C825-40DC-BB68-9D987275E320}.Profile|x64.Build.0 = Profile|x64
- {76F7B8C2-C825-40DC-BB68-9D987275E320}.Release|Win32.ActiveCfg = Release|Win32
- {76F7B8C2-C825-40DC-BB68-9D987275E320}.Release|Win32.Build.0 = Release|Win32
- {76F7B8C2-C825-40DC-BB68-9D987275E320}.Release|x64.ActiveCfg = Release|x64
- {76F7B8C2-C825-40DC-BB68-9D987275E320}.Release|x64.Build.0 = Release|x64
- {5C514254-58EE-4850-8743-F5D7BEAA3E66}.Debug|Win32.ActiveCfg = Debug|Win32
- {5C514254-58EE-4850-8743-F5D7BEAA3E66}.Debug|Win32.Build.0 = Debug|Win32
- {5C514254-58EE-4850-8743-F5D7BEAA3E66}.Debug|x64.ActiveCfg = Debug|x64
- {5C514254-58EE-4850-8743-F5D7BEAA3E66}.Debug|x64.Build.0 = Debug|x64
- {5C514254-58EE-4850-8743-F5D7BEAA3E66}.Profile|Win32.ActiveCfg = Profile|Win32
- {5C514254-58EE-4850-8743-F5D7BEAA3E66}.Profile|Win32.Build.0 = Profile|Win32
- {5C514254-58EE-4850-8743-F5D7BEAA3E66}.Profile|x64.ActiveCfg = Profile|x64
- {5C514254-58EE-4850-8743-F5D7BEAA3E66}.Profile|x64.Build.0 = Profile|x64
- {5C514254-58EE-4850-8743-F5D7BEAA3E66}.Release|Win32.ActiveCfg = Release|Win32
- {5C514254-58EE-4850-8743-F5D7BEAA3E66}.Release|Win32.Build.0 = Release|Win32
- {5C514254-58EE-4850-8743-F5D7BEAA3E66}.Release|x64.ActiveCfg = Release|x64
- {5C514254-58EE-4850-8743-F5D7BEAA3E66}.Release|x64.Build.0 = Release|x64
- {80FE41DF-5232-4FC1-8697-461026A708CF}.Debug|Win32.ActiveCfg = Debug|Win32
- {80FE41DF-5232-4FC1-8697-461026A708CF}.Debug|Win32.Build.0 = Debug|Win32
- {80FE41DF-5232-4FC1-8697-461026A708CF}.Debug|x64.ActiveCfg = Debug|x64
- {80FE41DF-5232-4FC1-8697-461026A708CF}.Debug|x64.Build.0 = Debug|x64
- {80FE41DF-5232-4FC1-8697-461026A708CF}.Profile|Win32.ActiveCfg = Profile|Win32
- {80FE41DF-5232-4FC1-8697-461026A708CF}.Profile|Win32.Build.0 = Profile|Win32
- {80FE41DF-5232-4FC1-8697-461026A708CF}.Profile|x64.ActiveCfg = Profile|x64
- {80FE41DF-5232-4FC1-8697-461026A708CF}.Profile|x64.Build.0 = Profile|x64
- {80FE41DF-5232-4FC1-8697-461026A708CF}.Release|Win32.ActiveCfg = Release|Win32
- {80FE41DF-5232-4FC1-8697-461026A708CF}.Release|Win32.Build.0 = Release|Win32
- {80FE41DF-5232-4FC1-8697-461026A708CF}.Release|x64.ActiveCfg = Release|x64
- {80FE41DF-5232-4FC1-8697-461026A708CF}.Release|x64.Build.0 = Release|x64
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A}.Debug|Win32.ActiveCfg = Debug|Win32
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A}.Debug|Win32.Build.0 = Debug|Win32
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A}.Debug|x64.ActiveCfg = Debug|x64
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A}.Debug|x64.Build.0 = Debug|x64
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A}.Profile|Win32.ActiveCfg = Profile|Win32
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A}.Profile|Win32.Build.0 = Profile|Win32
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A}.Profile|x64.ActiveCfg = Profile|x64
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A}.Profile|x64.Build.0 = Profile|x64
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A}.Release|Win32.ActiveCfg = Release|Win32
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A}.Release|Win32.Build.0 = Release|Win32
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A}.Release|x64.ActiveCfg = Release|x64
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A}.Release|x64.Build.0 = Release|x64
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6}.Debug|Win32.ActiveCfg = Debug|Win32
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6}.Debug|Win32.Build.0 = Debug|Win32
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6}.Debug|x64.ActiveCfg = Debug|x64
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6}.Debug|x64.Build.0 = Debug|x64
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6}.Profile|Win32.ActiveCfg = Profile|Win32
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6}.Profile|Win32.Build.0 = Profile|Win32
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6}.Profile|x64.ActiveCfg = Profile|x64
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6}.Profile|x64.Build.0 = Profile|x64
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6}.Release|Win32.ActiveCfg = Release|Win32
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6}.Release|Win32.Build.0 = Release|Win32
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6}.Release|x64.ActiveCfg = Release|x64
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6}.Release|x64.Build.0 = Release|x64
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}.Debug|Win32.ActiveCfg = Debug|Win32
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}.Debug|Win32.Build.0 = Debug|Win32
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}.Debug|x64.ActiveCfg = Debug|x64
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}.Debug|x64.Build.0 = Debug|x64
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}.Profile|Win32.ActiveCfg = Profile|Win32
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}.Profile|Win32.Build.0 = Profile|Win32
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}.Profile|x64.ActiveCfg = Profile|x64
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}.Profile|x64.Build.0 = Profile|x64
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}.Release|Win32.ActiveCfg = Release|Win32
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}.Release|Win32.Build.0 = Release|Win32
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}.Release|x64.ActiveCfg = Release|x64
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC}.Release|x64.Build.0 = Release|x64
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC}.Debug|Win32.ActiveCfg = Debug|Win32
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC}.Debug|Win32.Build.0 = Debug|Win32
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC}.Debug|x64.ActiveCfg = Debug|x64
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC}.Debug|x64.Build.0 = Debug|x64
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC}.Profile|Win32.ActiveCfg = Profile|Win32
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC}.Profile|Win32.Build.0 = Profile|Win32
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC}.Profile|x64.ActiveCfg = Profile|x64
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC}.Profile|x64.Build.0 = Profile|x64
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC}.Release|Win32.ActiveCfg = Release|Win32
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC}.Release|Win32.Build.0 = Release|Win32
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC}.Release|x64.ActiveCfg = Release|x64
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC}.Release|x64.Build.0 = Release|x64
- {531B1D71-5EE6-4576-971E-9CC28B0B3868}.Debug|Win32.ActiveCfg = Debug|Win32
- {531B1D71-5EE6-4576-971E-9CC28B0B3868}.Debug|Win32.Build.0 = Debug|Win32
- {531B1D71-5EE6-4576-971E-9CC28B0B3868}.Debug|x64.ActiveCfg = Debug|x64
- {531B1D71-5EE6-4576-971E-9CC28B0B3868}.Debug|x64.Build.0 = Debug|x64
- {531B1D71-5EE6-4576-971E-9CC28B0B3868}.Profile|Win32.ActiveCfg = Profile|Win32
- {531B1D71-5EE6-4576-971E-9CC28B0B3868}.Profile|Win32.Build.0 = Profile|Win32
- {531B1D71-5EE6-4576-971E-9CC28B0B3868}.Profile|x64.ActiveCfg = Profile|x64
- {531B1D71-5EE6-4576-971E-9CC28B0B3868}.Profile|x64.Build.0 = Profile|x64
- {531B1D71-5EE6-4576-971E-9CC28B0B3868}.Release|Win32.ActiveCfg = Release|Win32
- {531B1D71-5EE6-4576-971E-9CC28B0B3868}.Release|Win32.Build.0 = Release|Win32
- {531B1D71-5EE6-4576-971E-9CC28B0B3868}.Release|x64.ActiveCfg = Release|x64
- {531B1D71-5EE6-4576-971E-9CC28B0B3868}.Release|x64.Build.0 = Release|x64
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD}.Debug|Win32.ActiveCfg = Debug|Win32
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD}.Debug|Win32.Build.0 = Debug|Win32
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD}.Debug|x64.ActiveCfg = Debug|x64
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD}.Debug|x64.Build.0 = Debug|x64
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD}.Profile|Win32.ActiveCfg = Profile|Win32
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD}.Profile|Win32.Build.0 = Profile|Win32
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD}.Profile|x64.ActiveCfg = Profile|x64
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD}.Profile|x64.Build.0 = Profile|x64
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD}.Release|Win32.ActiveCfg = Release|Win32
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD}.Release|Win32.Build.0 = Release|Win32
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD}.Release|x64.ActiveCfg = Release|x64
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD}.Release|x64.Build.0 = Release|x64
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75}.Debug|Win32.ActiveCfg = Debug|Win32
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75}.Debug|Win32.Build.0 = Debug|Win32
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75}.Debug|x64.ActiveCfg = Debug|x64
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75}.Debug|x64.Build.0 = Debug|x64
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75}.Profile|Win32.ActiveCfg = Profile|Win32
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75}.Profile|Win32.Build.0 = Profile|Win32
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75}.Profile|x64.ActiveCfg = Profile|x64
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75}.Profile|x64.Build.0 = Profile|x64
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75}.Release|Win32.ActiveCfg = Release|Win32
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75}.Release|Win32.Build.0 = Release|Win32
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75}.Release|x64.ActiveCfg = Release|x64
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75}.Release|x64.Build.0 = Release|x64
- {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|Win32.ActiveCfg = Debug|Win32
- {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|Win32.Build.0 = Debug|Win32
+ {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|x86.ActiveCfg = Release|Win32
+ {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|x86.Build.0 = Release|Win32
{5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|x64.ActiveCfg = Debug|x64
{5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|x64.Build.0 = Debug|x64
- {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Profile|Win32.ActiveCfg = Profile|Win32
- {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Profile|Win32.Build.0 = Profile|Win32
+ {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|x86.ActiveCfg = Debug|Win32
+ {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|x86.Build.0 = Debug|Win32
{5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Profile|x64.ActiveCfg = Profile|x64
{5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Profile|x64.Build.0 = Profile|x64
- {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|Win32.ActiveCfg = Release|Win32
- {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|Win32.Build.0 = Release|Win32
+ {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Profile|x86.ActiveCfg = Profile|Win32
+ {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Profile|x86.Build.0 = Profile|Win32
{5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|x64.ActiveCfg = Release|x64
{5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|x64.Build.0 = Release|x64
- {92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Debug|Win32.ActiveCfg = Debug|Win32
- {92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Debug|Win32.Build.0 = Debug|Win32
+ {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|x86.ActiveCfg = Release|Win32
+ {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|x86.Build.0 = Release|Win32
{92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Debug|x64.ActiveCfg = Debug|x64
{92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Debug|x64.Build.0 = Debug|x64
- {92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Profile|Win32.ActiveCfg = Release|Win32
- {92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Profile|Win32.Build.0 = Release|Win32
+ {92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Debug|x86.ActiveCfg = Debug|Win32
+ {92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Debug|x86.Build.0 = Debug|Win32
{92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Profile|x64.ActiveCfg = Release|x64
{92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Profile|x64.Build.0 = Release|x64
- {92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Release|Win32.ActiveCfg = Release|Win32
- {92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Release|Win32.Build.0 = Release|Win32
+ {92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Profile|x86.ActiveCfg = Release|Win32
+ {92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Profile|x86.Build.0 = Release|Win32
{92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Release|x64.ActiveCfg = Release|x64
{92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Release|x64.Build.0 = Release|x64
- {235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Debug|Win32.ActiveCfg = Debug|Win32
- {235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Debug|Win32.Build.0 = Debug|Win32
+ {92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Release|x86.ActiveCfg = Release|Win32
+ {92940255-AB4B-42FB-A2C4-0FAB19C3C48A}.Release|x86.Build.0 = Release|Win32
{235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Debug|x64.ActiveCfg = Debug|x64
{235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Debug|x64.Build.0 = Debug|x64
- {235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Profile|Win32.ActiveCfg = Profile|Win32
- {235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Profile|Win32.Build.0 = Profile|Win32
+ {235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Debug|x86.ActiveCfg = Debug|Win32
+ {235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Debug|x86.Build.0 = Debug|Win32
{235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Profile|x64.ActiveCfg = Profile|x64
{235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Profile|x64.Build.0 = Profile|x64
- {235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Release|Win32.ActiveCfg = Release|Win32
- {235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Release|Win32.Build.0 = Release|Win32
+ {235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Profile|x86.ActiveCfg = Profile|Win32
+ {235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Profile|x86.Build.0 = Profile|Win32
{235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Release|x64.ActiveCfg = Release|x64
{235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Release|x64.Build.0 = Release|x64
- {F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Debug|Win32.ActiveCfg = Debug|Win32
- {F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Debug|Win32.Build.0 = Debug|Win32
+ {235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Release|x86.ActiveCfg = Release|Win32
+ {235B1D85-E6B6-45E2-BA5D-5C60396428FF}.Release|x86.Build.0 = Release|Win32
{F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Debug|x64.ActiveCfg = Debug|x64
{F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Debug|x64.Build.0 = Debug|x64
- {F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Profile|Win32.ActiveCfg = Profile|Win32
- {F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Profile|Win32.Build.0 = Profile|Win32
+ {F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Debug|x86.ActiveCfg = Debug|Win32
+ {F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Debug|x86.Build.0 = Debug|Win32
{F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Profile|x64.ActiveCfg = Profile|x64
{F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Profile|x64.Build.0 = Profile|x64
- {F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Release|Win32.ActiveCfg = Release|Win32
- {F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Release|Win32.Build.0 = Release|Win32
+ {F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Profile|x86.ActiveCfg = Profile|Win32
+ {F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Profile|x86.Build.0 = Profile|Win32
{F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Release|x64.ActiveCfg = Release|x64
{F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Release|x64.Build.0 = Release|x64
- {9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Debug|Win32.ActiveCfg = Debug|Win32
- {9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Debug|Win32.Build.0 = Debug|Win32
+ {F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Release|x86.ActiveCfg = Release|Win32
+ {F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}.Release|x86.Build.0 = Release|Win32
{9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Debug|x64.ActiveCfg = Debug|x64
{9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Debug|x64.Build.0 = Debug|x64
- {9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Profile|Win32.ActiveCfg = Release|Win32
- {9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Profile|Win32.Build.0 = Release|Win32
+ {9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Debug|x86.ActiveCfg = Debug|Win32
+ {9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Debug|x86.Build.0 = Debug|Win32
{9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Profile|x64.ActiveCfg = Release|x64
{9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Profile|x64.Build.0 = Release|x64
- {9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Release|Win32.ActiveCfg = Release|Win32
- {9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Release|Win32.Build.0 = Release|Win32
+ {9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Profile|x86.ActiveCfg = Release|Win32
+ {9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Profile|x86.Build.0 = Release|Win32
{9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Release|x64.ActiveCfg = Release|x64
{9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Release|x64.Build.0 = Release|x64
- {9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Debug|Win32.ActiveCfg = Debug|Win32
- {9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Debug|Win32.Build.0 = Debug|Win32
+ {9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Release|x86.ActiveCfg = Release|Win32
+ {9CF4408B-9B08-481F-95DA-3DF0846DABE4}.Release|x86.Build.0 = Release|Win32
{9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Debug|x64.ActiveCfg = Debug|x64
{9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Debug|x64.Build.0 = Debug|x64
- {9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Profile|Win32.ActiveCfg = Release|Win32
- {9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Profile|Win32.Build.0 = Release|Win32
+ {9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Debug|x86.ActiveCfg = Debug|Win32
+ {9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Debug|x86.Build.0 = Debug|Win32
{9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Profile|x64.ActiveCfg = Release|x64
{9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Profile|x64.Build.0 = Release|x64
- {9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Release|Win32.ActiveCfg = Release|Win32
- {9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Release|Win32.Build.0 = Release|Win32
+ {9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Profile|x86.ActiveCfg = Release|Win32
+ {9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Profile|x86.Build.0 = Release|Win32
{9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Release|x64.ActiveCfg = Release|x64
{9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Release|x64.Build.0 = Release|x64
- {AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Debug|Win32.ActiveCfg = Debug|Win32
- {AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Debug|Win32.Build.0 = Debug|Win32
+ {9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Release|x86.ActiveCfg = Release|Win32
+ {9DAFEE32-19F6-4410-AA09-2B564FB86F62}.Release|x86.Build.0 = Release|Win32
{AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Debug|x64.ActiveCfg = Debug|x64
{AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Debug|x64.Build.0 = Debug|x64
- {AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Profile|Win32.ActiveCfg = Release|Win32
- {AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Profile|Win32.Build.0 = Release|Win32
+ {AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Debug|x86.ActiveCfg = Debug|Win32
+ {AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Debug|x86.Build.0 = Debug|Win32
{AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Profile|x64.ActiveCfg = Release|x64
{AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Profile|x64.Build.0 = Release|x64
- {AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Release|Win32.ActiveCfg = Release|Win32
- {AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Release|Win32.Build.0 = Release|Win32
+ {AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Profile|x86.ActiveCfg = Release|Win32
+ {AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Profile|x86.Build.0 = Release|Win32
{AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Release|x64.ActiveCfg = Release|x64
{AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Release|x64.Build.0 = Release|x64
- {2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Debug|Win32.ActiveCfg = Debug|Win32
- {2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Debug|Win32.Build.0 = Debug|Win32
+ {AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Release|x86.ActiveCfg = Release|Win32
+ {AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}.Release|x86.Build.0 = Release|Win32
{2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Debug|x64.ActiveCfg = Debug|x64
{2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Debug|x64.Build.0 = Debug|x64
- {2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Profile|Win32.ActiveCfg = Release|Win32
- {2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Profile|Win32.Build.0 = Release|Win32
+ {2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Debug|x86.ActiveCfg = Debug|Win32
+ {2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Debug|x86.Build.0 = Debug|Win32
{2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Profile|x64.ActiveCfg = Release|x64
{2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Profile|x64.Build.0 = Release|x64
- {2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Release|Win32.ActiveCfg = Release|Win32
- {2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Release|Win32.Build.0 = Release|Win32
+ {2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Profile|x86.ActiveCfg = Release|Win32
+ {2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Profile|x86.Build.0 = Release|Win32
{2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Release|x64.ActiveCfg = Release|x64
{2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Release|x64.Build.0 = Release|x64
- {04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Debug|Win32.ActiveCfg = Debug|Win32
- {04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Debug|Win32.Build.0 = Debug|Win32
+ {2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Release|x86.ActiveCfg = Release|Win32
+ {2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}.Release|x86.Build.0 = Release|Win32
{04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Debug|x64.ActiveCfg = Debug|x64
{04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Debug|x64.Build.0 = Debug|x64
- {04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Profile|Win32.ActiveCfg = Release|Win32
- {04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Profile|Win32.Build.0 = Release|Win32
+ {04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Debug|x86.ActiveCfg = Debug|Win32
+ {04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Debug|x86.Build.0 = Debug|Win32
{04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Profile|x64.ActiveCfg = Release|x64
{04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Profile|x64.Build.0 = Release|x64
- {04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Release|Win32.ActiveCfg = Release|Win32
- {04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Release|Win32.Build.0 = Release|Win32
+ {04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Profile|x86.ActiveCfg = Release|Win32
+ {04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Profile|x86.Build.0 = Release|Win32
{04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Release|x64.ActiveCfg = Release|x64
{04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Release|x64.Build.0 = Release|x64
- {09ABE661-9BC0-4152-A820-1FB0522CAC01}.Debug|Win32.ActiveCfg = Debug|Win32
- {09ABE661-9BC0-4152-A820-1FB0522CAC01}.Debug|Win32.Build.0 = Debug|Win32
+ {04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Release|x86.ActiveCfg = Release|Win32
+ {04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}.Release|x86.Build.0 = Release|Win32
{09ABE661-9BC0-4152-A820-1FB0522CAC01}.Debug|x64.ActiveCfg = Debug|x64
{09ABE661-9BC0-4152-A820-1FB0522CAC01}.Debug|x64.Build.0 = Debug|x64
- {09ABE661-9BC0-4152-A820-1FB0522CAC01}.Profile|Win32.ActiveCfg = Release|Win32
- {09ABE661-9BC0-4152-A820-1FB0522CAC01}.Profile|Win32.Build.0 = Release|Win32
+ {09ABE661-9BC0-4152-A820-1FB0522CAC01}.Debug|x86.ActiveCfg = Debug|Win32
+ {09ABE661-9BC0-4152-A820-1FB0522CAC01}.Debug|x86.Build.0 = Debug|Win32
{09ABE661-9BC0-4152-A820-1FB0522CAC01}.Profile|x64.ActiveCfg = Release|x64
{09ABE661-9BC0-4152-A820-1FB0522CAC01}.Profile|x64.Build.0 = Release|x64
- {09ABE661-9BC0-4152-A820-1FB0522CAC01}.Release|Win32.ActiveCfg = Release|Win32
- {09ABE661-9BC0-4152-A820-1FB0522CAC01}.Release|Win32.Build.0 = Release|Win32
+ {09ABE661-9BC0-4152-A820-1FB0522CAC01}.Profile|x86.ActiveCfg = Release|Win32
+ {09ABE661-9BC0-4152-A820-1FB0522CAC01}.Profile|x86.Build.0 = Release|Win32
{09ABE661-9BC0-4152-A820-1FB0522CAC01}.Release|x64.ActiveCfg = Release|x64
{09ABE661-9BC0-4152-A820-1FB0522CAC01}.Release|x64.Build.0 = Release|x64
- {9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Debug|Win32.ActiveCfg = Debug|Win32
- {9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Debug|Win32.Build.0 = Debug|Win32
+ {09ABE661-9BC0-4152-A820-1FB0522CAC01}.Release|x86.ActiveCfg = Release|Win32
+ {09ABE661-9BC0-4152-A820-1FB0522CAC01}.Release|x86.Build.0 = Release|Win32
{9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Debug|x64.ActiveCfg = Debug|x64
{9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Debug|x64.Build.0 = Debug|x64
- {9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Profile|Win32.ActiveCfg = Release|Win32
- {9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Profile|Win32.Build.0 = Release|Win32
+ {9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Debug|x86.ActiveCfg = Debug|Win32
+ {9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Debug|x86.Build.0 = Debug|Win32
{9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Profile|x64.ActiveCfg = Release|x64
{9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Profile|x64.Build.0 = Release|x64
- {9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Release|Win32.ActiveCfg = Release|Win32
- {9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Release|Win32.Build.0 = Release|Win32
+ {9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Profile|x86.ActiveCfg = Release|Win32
+ {9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Profile|x86.Build.0 = Release|Win32
{9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Release|x64.ActiveCfg = Release|x64
{9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Release|x64.Build.0 = Release|x64
- {F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Debug|Win32.ActiveCfg = Debug|Win32
- {F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Debug|Win32.Build.0 = Debug|Win32
+ {9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Release|x86.ActiveCfg = Release|Win32
+ {9088FC9E-9843-4E0D-85D0-1B657AFC480A}.Release|x86.Build.0 = Release|Win32
{F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Debug|x64.ActiveCfg = Debug|Win32
- {F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Profile|Win32.ActiveCfg = Profile|Win32
- {F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Profile|Win32.Build.0 = Profile|Win32
+ {F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Debug|x86.ActiveCfg = Debug|Win32
+ {F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Debug|x86.Build.0 = Debug|Win32
{F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Profile|x64.ActiveCfg = Profile|Win32
- {F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Release|Win32.ActiveCfg = Release|Win32
- {F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Release|Win32.Build.0 = Release|Win32
+ {F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Profile|x86.ActiveCfg = Profile|Win32
+ {F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Profile|x86.Build.0 = Profile|Win32
{F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Release|x64.ActiveCfg = Release|Win32
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Debug|Win32.ActiveCfg = Debug|Win32
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Debug|Win32.Build.0 = Debug|Win32
+ {F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Release|x86.ActiveCfg = Release|Win32
+ {F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}.Release|x86.Build.0 = Release|Win32
{0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Debug|x64.ActiveCfg = Debug|x64
{0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Debug|x64.Build.0 = Debug|x64
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Profile|Win32.ActiveCfg = Release|Win32
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Profile|Win32.Build.0 = Release|Win32
+ {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Debug|x86.ActiveCfg = Debug|Win32
+ {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Debug|x86.Build.0 = Debug|Win32
{0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Profile|x64.ActiveCfg = Release|x64
{0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Profile|x64.Build.0 = Release|x64
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Release|Win32.ActiveCfg = Release|Win32
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Release|Win32.Build.0 = Release|Win32
+ {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Profile|x86.ActiveCfg = Release|Win32
+ {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Profile|x86.Build.0 = Release|Win32
{0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Release|x64.ActiveCfg = Release|x64
{0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Release|x64.Build.0 = Release|x64
- {E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Debug|Win32.ActiveCfg = Debug|Win32
- {E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Debug|Win32.Build.0 = Debug|Win32
+ {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Release|x86.ActiveCfg = Release|Win32
+ {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Release|x86.Build.0 = Release|Win32
{E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Debug|x64.ActiveCfg = Debug|x64
{E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Debug|x64.Build.0 = Debug|x64
- {E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Profile|Win32.ActiveCfg = Release|Win32
- {E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Profile|Win32.Build.0 = Release|Win32
+ {E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Debug|x86.ActiveCfg = Debug|Win32
+ {E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Debug|x86.Build.0 = Debug|Win32
{E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Profile|x64.ActiveCfg = Release|x64
{E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Profile|x64.Build.0 = Release|x64
- {E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Release|Win32.ActiveCfg = Release|Win32
- {E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Release|Win32.Build.0 = Release|Win32
+ {E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Profile|x86.ActiveCfg = Release|Win32
+ {E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Profile|x86.Build.0 = Release|Win32
{E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Release|x64.ActiveCfg = Release|x64
{E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Release|x64.Build.0 = Release|x64
- {CF8EBC89-8762-49DC-9440-6C82B3499913}.Debug|Win32.ActiveCfg = Debug|Win32
- {CF8EBC89-8762-49DC-9440-6C82B3499913}.Debug|Win32.Build.0 = Debug|Win32
+ {E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Release|x86.ActiveCfg = Release|Win32
+ {E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}.Release|x86.Build.0 = Release|Win32
{CF8EBC89-8762-49DC-9440-6C82B3499913}.Debug|x64.ActiveCfg = Debug|x64
{CF8EBC89-8762-49DC-9440-6C82B3499913}.Debug|x64.Build.0 = Debug|x64
- {CF8EBC89-8762-49DC-9440-6C82B3499913}.Profile|Win32.ActiveCfg = Release|Win32
- {CF8EBC89-8762-49DC-9440-6C82B3499913}.Profile|Win32.Build.0 = Release|Win32
+ {CF8EBC89-8762-49DC-9440-6C82B3499913}.Debug|x86.ActiveCfg = Debug|Win32
+ {CF8EBC89-8762-49DC-9440-6C82B3499913}.Debug|x86.Build.0 = Debug|Win32
{CF8EBC89-8762-49DC-9440-6C82B3499913}.Profile|x64.ActiveCfg = Release|x64
{CF8EBC89-8762-49DC-9440-6C82B3499913}.Profile|x64.Build.0 = Release|x64
- {CF8EBC89-8762-49DC-9440-6C82B3499913}.Release|Win32.ActiveCfg = Release|Win32
- {CF8EBC89-8762-49DC-9440-6C82B3499913}.Release|Win32.Build.0 = Release|Win32
+ {CF8EBC89-8762-49DC-9440-6C82B3499913}.Profile|x86.ActiveCfg = Release|Win32
+ {CF8EBC89-8762-49DC-9440-6C82B3499913}.Profile|x86.Build.0 = Release|Win32
{CF8EBC89-8762-49DC-9440-6C82B3499913}.Release|x64.ActiveCfg = Release|x64
{CF8EBC89-8762-49DC-9440-6C82B3499913}.Release|x64.Build.0 = Release|x64
- {FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Debug|Win32.ActiveCfg = Debug|Win32
- {FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Debug|Win32.Build.0 = Debug|Win32
+ {CF8EBC89-8762-49DC-9440-6C82B3499913}.Release|x86.ActiveCfg = Release|Win32
+ {CF8EBC89-8762-49DC-9440-6C82B3499913}.Release|x86.Build.0 = Release|Win32
{FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Debug|x64.ActiveCfg = Debug|x64
{FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Debug|x64.Build.0 = Debug|x64
- {FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Profile|Win32.ActiveCfg = Release|Win32
- {FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Profile|Win32.Build.0 = Release|Win32
+ {FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Debug|x86.ActiveCfg = Debug|Win32
+ {FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Debug|x86.Build.0 = Debug|Win32
{FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Profile|x64.ActiveCfg = Release|x64
{FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Profile|x64.Build.0 = Release|x64
- {FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Release|Win32.ActiveCfg = Release|Win32
- {FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Release|Win32.Build.0 = Release|Win32
+ {FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Profile|x86.ActiveCfg = Release|Win32
+ {FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Profile|x86.Build.0 = Release|Win32
{FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Release|x64.ActiveCfg = Release|x64
{FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Release|x64.Build.0 = Release|x64
- {E1C34B66-C942-4B9A-B8C3-9A12625650D3}.Debug|Win32.ActiveCfg = Debug|x64
+ {FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Release|x86.ActiveCfg = Release|Win32
+ {FBDCFF88-0CE1-43C3-B694-8F45946FAFE3}.Release|x86.Build.0 = Release|Win32
{E1C34B66-C942-4B9A-B8C3-9A12625650D3}.Debug|x64.ActiveCfg = Debug|x64
{E1C34B66-C942-4B9A-B8C3-9A12625650D3}.Debug|x64.Build.0 = Debug|x64
- {E1C34B66-C942-4B9A-B8C3-9A12625650D3}.Profile|Win32.ActiveCfg = Release|x64
+ {E1C34B66-C942-4B9A-B8C3-9A12625650D3}.Debug|x86.ActiveCfg = Debug|x64
{E1C34B66-C942-4B9A-B8C3-9A12625650D3}.Profile|x64.ActiveCfg = Release|x64
{E1C34B66-C942-4B9A-B8C3-9A12625650D3}.Profile|x64.Build.0 = Release|x64
- {E1C34B66-C942-4B9A-B8C3-9A12625650D3}.Release|Win32.ActiveCfg = Release|x64
+ {E1C34B66-C942-4B9A-B8C3-9A12625650D3}.Profile|x86.ActiveCfg = Release|x64
{E1C34B66-C942-4B9A-B8C3-9A12625650D3}.Release|x64.ActiveCfg = Release|x64
{E1C34B66-C942-4B9A-B8C3-9A12625650D3}.Release|x64.Build.0 = Release|x64
- {4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Debug|Win32.ActiveCfg = Debug|Win32
- {4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Debug|Win32.Build.0 = Debug|Win32
+ {E1C34B66-C942-4B9A-B8C3-9A12625650D3}.Release|x86.ActiveCfg = Release|x64
{4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Debug|x64.ActiveCfg = Debug|x64
{4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Debug|x64.Build.0 = Debug|x64
- {4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Profile|Win32.ActiveCfg = Release|Win32
- {4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Profile|Win32.Build.0 = Release|Win32
+ {4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Debug|x86.ActiveCfg = Debug|Win32
+ {4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Debug|x86.Build.0 = Debug|Win32
{4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Profile|x64.ActiveCfg = Release|x64
{4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Profile|x64.Build.0 = Release|x64
- {4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Release|Win32.ActiveCfg = Release|Win32
- {4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Release|Win32.Build.0 = Release|Win32
+ {4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Profile|x86.ActiveCfg = Release|Win32
+ {4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Profile|x86.Build.0 = Release|Win32
{4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Release|x64.ActiveCfg = Release|x64
{4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Release|x64.Build.0 = Release|x64
- {16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Debug|Win32.ActiveCfg = Debug|x64
+ {4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Release|x86.ActiveCfg = Release|Win32
+ {4EC107AB-89E8-4A0B-8366-B3E81085AE07}.Release|x86.Build.0 = Release|Win32
{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Debug|x64.ActiveCfg = Debug|x64
{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Debug|x64.Build.0 = Debug|x64
- {16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Profile|Win32.ActiveCfg = Release|x64
- {16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Profile|Win32.Deploy.0 = Release|x64
+ {16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Debug|x86.ActiveCfg = Debug|x64
{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Profile|x64.ActiveCfg = Release|x64
{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Profile|x64.Build.0 = Release|x64
- {16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Release|Win32.ActiveCfg = Release|x64
+ {16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Profile|x86.ActiveCfg = Release|x64
+ {16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Profile|x86.Deploy.0 = Release|x64
{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Release|x64.ActiveCfg = Release|x64
{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Release|x64.Build.0 = Release|x64
- {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Debug|Win32.ActiveCfg = Debug|x64
- {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Debug|x64.ActiveCfg = Debug|x64
- {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Debug|x64.Build.0 = Debug|x64
- {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Profile|Win32.ActiveCfg = Release|x64
- {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Profile|Win32.Build.0 = Release|x64
- {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Profile|x64.ActiveCfg = Release|x64
- {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Profile|x64.Build.0 = Release|x64
- {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Release|Win32.ActiveCfg = Release|x64
- {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Release|x64.ActiveCfg = Release|x64
- {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Release|x64.Build.0 = Release|x64
- {00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Debug|Win32.ActiveCfg = Debug|x64
- {00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Debug|x64.ActiveCfg = Debug|x64
- {00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Debug|x64.Build.0 = Debug|x64
- {00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Profile|Win32.ActiveCfg = Release|x64
- {00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Profile|Win32.Build.0 = Release|x64
- {00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Profile|x64.ActiveCfg = Release|x64
- {00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Profile|x64.Build.0 = Release|x64
- {00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Release|Win32.ActiveCfg = Release|x64
- {00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Release|x64.ActiveCfg = Release|x64
- {00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Release|x64.Build.0 = Release|x64
- {DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Debug|Win32.ActiveCfg = Debug|x64
- {DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Debug|x64.ActiveCfg = Debug|x64
- {DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Debug|x64.Build.0 = Debug|x64
- {DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Profile|Win32.ActiveCfg = Release|x64
- {DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Profile|Win32.Build.0 = Release|x64
- {DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Profile|x64.ActiveCfg = Release|x64
- {DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Profile|x64.Build.0 = Release|x64
- {DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Release|Win32.ActiveCfg = Release|x64
- {DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Release|x64.ActiveCfg = Release|x64
- {DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Release|x64.Build.0 = Release|x64
- {34CB4705-0332-3134-BE31-AE71FCF9B26C}.Debug|Win32.ActiveCfg = Debug|x64
- {34CB4705-0332-3134-BE31-AE71FCF9B26C}.Debug|x64.ActiveCfg = Debug|x64
- {34CB4705-0332-3134-BE31-AE71FCF9B26C}.Debug|x64.Build.0 = Debug|x64
- {34CB4705-0332-3134-BE31-AE71FCF9B26C}.Profile|Win32.ActiveCfg = Release|x64
- {34CB4705-0332-3134-BE31-AE71FCF9B26C}.Profile|Win32.Build.0 = Release|x64
- {34CB4705-0332-3134-BE31-AE71FCF9B26C}.Profile|x64.ActiveCfg = Release|x64
- {34CB4705-0332-3134-BE31-AE71FCF9B26C}.Profile|x64.Build.0 = Release|x64
- {34CB4705-0332-3134-BE31-AE71FCF9B26C}.Release|Win32.ActiveCfg = Release|x64
- {34CB4705-0332-3134-BE31-AE71FCF9B26C}.Release|x64.ActiveCfg = Release|x64
- {34CB4705-0332-3134-BE31-AE71FCF9B26C}.Release|x64.Build.0 = Release|x64
- {4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Debug|Win32.ActiveCfg = Debug|x64
- {4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Debug|x64.ActiveCfg = Debug|x64
- {4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Debug|x64.Build.0 = Debug|x64
- {4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Profile|Win32.ActiveCfg = Release|x64
- {4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Profile|Win32.Build.0 = Release|x64
- {4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Profile|x64.ActiveCfg = Release|x64
- {4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Profile|x64.Build.0 = Release|x64
- {4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Release|Win32.ActiveCfg = Release|x64
- {4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Release|x64.ActiveCfg = Release|x64
- {4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Release|x64.Build.0 = Release|x64
- {F2CF5409-EC66-380C-9D99-E7DE526F5065}.Debug|Win32.ActiveCfg = Debug|x64
- {F2CF5409-EC66-380C-9D99-E7DE526F5065}.Debug|x64.ActiveCfg = Debug|x64
- {F2CF5409-EC66-380C-9D99-E7DE526F5065}.Debug|x64.Build.0 = Debug|x64
- {F2CF5409-EC66-380C-9D99-E7DE526F5065}.Profile|Win32.ActiveCfg = Release|x64
- {F2CF5409-EC66-380C-9D99-E7DE526F5065}.Profile|Win32.Build.0 = Release|x64
- {F2CF5409-EC66-380C-9D99-E7DE526F5065}.Profile|x64.ActiveCfg = Release|x64
- {F2CF5409-EC66-380C-9D99-E7DE526F5065}.Profile|x64.Build.0 = Release|x64
- {F2CF5409-EC66-380C-9D99-E7DE526F5065}.Release|Win32.ActiveCfg = Release|x64
- {F2CF5409-EC66-380C-9D99-E7DE526F5065}.Release|x64.ActiveCfg = Release|x64
- {F2CF5409-EC66-380C-9D99-E7DE526F5065}.Release|x64.Build.0 = Release|x64
- {84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Debug|Win32.ActiveCfg = Debug|x64
- {84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Debug|x64.ActiveCfg = Debug|x64
- {84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Debug|x64.Build.0 = Debug|x64
- {84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Profile|Win32.ActiveCfg = Release|x64
- {84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Profile|Win32.Build.0 = Release|x64
- {84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Profile|x64.ActiveCfg = Release|x64
- {84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Profile|x64.Build.0 = Release|x64
- {84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Release|Win32.ActiveCfg = Release|x64
- {84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Release|x64.ActiveCfg = Release|x64
- {84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Release|x64.Build.0 = Release|x64
- {776D987A-006A-39B1-BBAB-620E77F07525}.Debug|Win32.ActiveCfg = Debug|x64
- {776D987A-006A-39B1-BBAB-620E77F07525}.Debug|x64.ActiveCfg = Debug|x64
- {776D987A-006A-39B1-BBAB-620E77F07525}.Debug|x64.Build.0 = Debug|x64
- {776D987A-006A-39B1-BBAB-620E77F07525}.Profile|Win32.ActiveCfg = Release|x64
- {776D987A-006A-39B1-BBAB-620E77F07525}.Profile|Win32.Build.0 = Release|x64
- {776D987A-006A-39B1-BBAB-620E77F07525}.Profile|x64.ActiveCfg = Release|x64
- {776D987A-006A-39B1-BBAB-620E77F07525}.Profile|x64.Build.0 = Release|x64
- {776D987A-006A-39B1-BBAB-620E77F07525}.Release|Win32.ActiveCfg = Release|x64
- {776D987A-006A-39B1-BBAB-620E77F07525}.Release|x64.ActiveCfg = Release|x64
- {776D987A-006A-39B1-BBAB-620E77F07525}.Release|x64.Build.0 = Release|x64
- {C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Debug|Win32.ActiveCfg = Debug|x64
- {C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Debug|x64.ActiveCfg = Debug|x64
- {C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Debug|x64.Build.0 = Debug|x64
- {C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Profile|Win32.ActiveCfg = Release|x64
- {C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Profile|Win32.Build.0 = Release|x64
- {C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Profile|x64.ActiveCfg = Release|x64
- {C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Profile|x64.Build.0 = Release|x64
- {C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Release|Win32.ActiveCfg = Release|x64
- {C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Release|x64.ActiveCfg = Release|x64
- {C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Release|x64.Build.0 = Release|x64
- {4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Debug|Win32.ActiveCfg = Debug|x64
- {4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Debug|x64.ActiveCfg = Debug|x64
- {4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Debug|x64.Build.0 = Debug|x64
- {4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Profile|Win32.ActiveCfg = Release|x64
- {4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Profile|Win32.Build.0 = Release|x64
- {4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Profile|x64.ActiveCfg = Release|x64
- {4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Profile|x64.Build.0 = Release|x64
- {4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Release|Win32.ActiveCfg = Release|x64
- {4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Release|x64.ActiveCfg = Release|x64
- {4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Release|x64.Build.0 = Release|x64
- {972385EE-2A79-349F-997A-09272FBAB677}.Debug|Win32.ActiveCfg = Debug|x64
- {972385EE-2A79-349F-997A-09272FBAB677}.Debug|x64.ActiveCfg = Debug|x64
- {972385EE-2A79-349F-997A-09272FBAB677}.Debug|x64.Build.0 = Debug|x64
- {972385EE-2A79-349F-997A-09272FBAB677}.Profile|Win32.ActiveCfg = Release|x64
- {972385EE-2A79-349F-997A-09272FBAB677}.Profile|Win32.Build.0 = Release|x64
- {972385EE-2A79-349F-997A-09272FBAB677}.Profile|x64.ActiveCfg = Release|x64
- {972385EE-2A79-349F-997A-09272FBAB677}.Profile|x64.Build.0 = Release|x64
- {972385EE-2A79-349F-997A-09272FBAB677}.Release|Win32.ActiveCfg = Release|x64
- {972385EE-2A79-349F-997A-09272FBAB677}.Release|x64.ActiveCfg = Release|x64
- {972385EE-2A79-349F-997A-09272FBAB677}.Release|x64.Build.0 = Release|x64
+ {16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Release|x86.ActiveCfg = Release|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Debug|x64.ActiveCfg = Debug|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Debug|x64.Build.0 = Debug|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Debug|x86.ActiveCfg = Debug|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Profile|x64.ActiveCfg = Release|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Profile|x64.Build.0 = Release|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Profile|x86.ActiveCfg = Release|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Profile|x86.Build.0 = Release|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Release|x64.ActiveCfg = Release|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Release|x64.Build.0 = Release|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Release|x86.ActiveCfg = Release|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Debug|x64.ActiveCfg = Debug|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Debug|x64.Build.0 = Debug|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Debug|x86.ActiveCfg = Debug|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Profile|x64.ActiveCfg = Release|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Profile|x64.Build.0 = Release|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Profile|x86.ActiveCfg = Release|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Profile|x86.Build.0 = Release|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Release|x64.ActiveCfg = Release|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Release|x64.Build.0 = Release|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Release|x86.ActiveCfg = Release|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Debug|x64.ActiveCfg = Debug|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Debug|x64.Build.0 = Debug|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Debug|x86.ActiveCfg = Debug|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Profile|x64.ActiveCfg = Release|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Profile|x64.Build.0 = Release|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Profile|x86.ActiveCfg = Release|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Profile|x86.Build.0 = Release|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Release|x64.ActiveCfg = Release|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Release|x64.Build.0 = Release|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Release|x86.ActiveCfg = Release|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Debug|x64.ActiveCfg = Debug|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Debug|x64.Build.0 = Debug|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Debug|x86.ActiveCfg = Debug|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Profile|x64.ActiveCfg = Release|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Profile|x64.Build.0 = Release|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Profile|x86.ActiveCfg = Release|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Profile|x86.Build.0 = Release|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Release|x64.ActiveCfg = Release|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Release|x64.Build.0 = Release|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Release|x86.ActiveCfg = Release|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Debug|x64.ActiveCfg = Debug|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Debug|x64.Build.0 = Debug|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Debug|x86.ActiveCfg = Debug|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Profile|x64.ActiveCfg = Release|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Profile|x64.Build.0 = Release|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Profile|x86.ActiveCfg = Release|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Profile|x86.Build.0 = Release|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Release|x64.ActiveCfg = Release|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Release|x64.Build.0 = Release|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Release|x86.ActiveCfg = Release|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Debug|x64.ActiveCfg = Debug|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Debug|x64.Build.0 = Debug|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Debug|x86.ActiveCfg = Debug|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Profile|x64.ActiveCfg = Release|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Profile|x64.Build.0 = Release|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Profile|x86.ActiveCfg = Release|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Profile|x86.Build.0 = Release|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Release|x64.ActiveCfg = Release|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Release|x64.Build.0 = Release|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Release|x86.ActiveCfg = Release|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Debug|x64.ActiveCfg = Debug|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Debug|x64.Build.0 = Debug|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Debug|x86.ActiveCfg = Debug|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Profile|x64.ActiveCfg = Release|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Profile|x64.Build.0 = Release|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Profile|x86.ActiveCfg = Release|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Profile|x86.Build.0 = Release|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Release|x64.ActiveCfg = Release|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Release|x64.Build.0 = Release|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Release|x86.ActiveCfg = Release|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Debug|x64.ActiveCfg = Debug|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Debug|x64.Build.0 = Debug|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Debug|x86.ActiveCfg = Debug|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Profile|x64.ActiveCfg = Release|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Profile|x64.Build.0 = Release|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Profile|x86.ActiveCfg = Release|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Profile|x86.Build.0 = Release|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Release|x64.ActiveCfg = Release|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Release|x64.Build.0 = Release|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Release|x86.ActiveCfg = Release|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Debug|x64.ActiveCfg = Debug|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Debug|x64.Build.0 = Debug|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Debug|x86.ActiveCfg = Debug|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Profile|x64.ActiveCfg = Release|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Profile|x64.Build.0 = Release|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Profile|x86.ActiveCfg = Release|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Profile|x86.Build.0 = Release|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Release|x64.ActiveCfg = Release|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Release|x64.Build.0 = Release|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Release|x86.ActiveCfg = Release|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Debug|x64.ActiveCfg = Debug|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Debug|x64.Build.0 = Debug|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Debug|x86.ActiveCfg = Debug|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Profile|x64.ActiveCfg = Release|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Profile|x64.Build.0 = Release|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Profile|x86.ActiveCfg = Release|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Profile|x86.Build.0 = Release|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Release|x64.ActiveCfg = Release|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Release|x64.Build.0 = Release|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Release|x86.ActiveCfg = Release|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Debug|x64.ActiveCfg = Debug|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Debug|x64.Build.0 = Debug|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Debug|x86.ActiveCfg = Debug|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Profile|x64.ActiveCfg = Release|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Profile|x64.Build.0 = Release|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Profile|x86.ActiveCfg = Release|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Profile|x86.Build.0 = Release|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Release|x64.ActiveCfg = Release|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Release|x64.Build.0 = Release|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Release|x86.ActiveCfg = Release|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Debug|x64.ActiveCfg = Debug|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Debug|x64.Build.0 = Debug|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Debug|x86.ActiveCfg = Debug|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Profile|x64.ActiveCfg = Release|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Profile|x64.Build.0 = Release|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Profile|x86.ActiveCfg = Release|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Profile|x86.Build.0 = Release|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Release|x64.ActiveCfg = Release|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Release|x64.Build.0 = Release|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Release|x86.ActiveCfg = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -937,27 +525,6 @@ Global
GlobalSection(NestedProjects) = preSolution
{B5871A7A-968C-42E3-A33B-981E6F448E78} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}
{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}
- {97EDF19C-6360-4770-9255-EBA2F1A13E9B} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {7BE5F26F-0525-42BB-AAED-56C5B4582B99} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {00F3295C-F7A0-43D3-BD0B-1BC0515B30E1} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {75362C64-1B52-4266-B079-22C8E00F53D5} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {D35C7204-D4E0-4EE5-8B6D-BA1B589F5D36} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {F03005CF-B4DB-46D1-B673-E268C3B0C3F7} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {8AB70E5D-2814-4682-AF9F-3062758BAEAB} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {A3C67D8F-E19A-46EF-91AB-C7840FE2B97C} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {CDC80E5C-954B-4BCB-8C81-58645F5103A5} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {C688DD59-C6CB-4B33-B56F-A7D6F3761524} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {BD8EE868-0D68-4A92-B277-3C9EBDC5EC3C} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {76F7B8C2-C825-40DC-BB68-9D987275E320} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {5C514254-58EE-4850-8743-F5D7BEAA3E66} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {80FE41DF-5232-4FC1-8697-461026A708CF} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {F513CBEF-B281-4B76-9CB5-7D31CECC739A} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {5C3DAD88-8163-499D-BB6C-6F44174F87B6} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {180DA636-1B92-4DD4-AF86-DB32BBF7BDAC} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {9DEAA5E7-D432-4770-B96D-221B56D74FCC} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {531B1D71-5EE6-4576-971E-9CC28B0B3868} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {E9B87B46-1EB0-4D95-9049-41B148FBADCD} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
- {1F8587CB-0779-44BB-AFA4-03DD8A036D75} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
{5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}
{92940255-AB4B-42FB-A2C4-0FAB19C3C48A} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}
{235B1D85-E6B6-45E2-BA5D-5C60396428FF} = {D33114D7-E582-4D61-B27D-FAB0297C43FF}
@@ -973,17 +540,18 @@ Global
{FBDCFF88-0CE1-43C3-B694-8F45946FAFE3} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}
{4EC107AB-89E8-4A0B-8366-B3E81085AE07} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}
{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}
- {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
- {00BC7103-607E-30AB-AC01-9BCCB4B497D3} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
- {DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
- {34CB4705-0332-3134-BE31-AE71FCF9B26C} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
- {4827C1A9-38A6-34C2-BCE6-9BD67E09F956} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
- {F2CF5409-EC66-380C-9D99-E7DE526F5065} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
- {84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
- {776D987A-006A-39B1-BBAB-620E77F07525} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
- {C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
- {4F3EC7EE-847C-3F60-8E0A-F646459BC5F5} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
- {972385EE-2A79-349F-997A-09272FBAB677} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
+ {95A9028D-402E-33FB-89FA-D07A85302C47} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
+ {2F264302-EFA1-396F-AD64-0AC05E686177} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
+ {07107D83-83B6-3BE6-8827-20DB1D90942F} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858} = {B408B98A-E888-4ECF-81E0-7A37A6854B17}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4DF423D2-8425-48A7-9CEC-835C4C3CA957}
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ALL_BUILD.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ALL_BUILD.vcxproj
index 84278f6070c..f7e95343acd 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ALL_BUILD.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ALL_BUILD.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{93979AE4-08B2-324E-AACE-6FFC302D2505}</ProjectGuid>
+ <ProjectGuid>{B2B07DA3-A388-307E-A283-3904C31F1CE2}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -68,76 +68,118 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\GLCompiler.vcxproj">
- <Project>{74318028-369F-3EA0-8A99-A341020416D6}</Project>
+ <Project>{B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}</Project>
<Name>GLCompiler</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\OGLES2HelloAPI.vcxproj">
- <Project>{14CBFE6C-4A95-3390-846D-C5B8E0B631CB}</Project>
+ <Project>{F5F127F5-2128-30AA-BCB8-935979A13F41}</Project>
<Name>OGLES2HelloAPI</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\ReactorLLVM.vcxproj">
- <Project>{3E565C6C-4B64-3128-A009-4A91C77E00E5}</Project>
+ <Project>{2EA2C687-489E-32F2-8D89-B90620301359}</Project>
<Name>ReactorLLVM</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\ReactorUnitTests.vcxproj">
- <Project>{635B11E4-0F2D-368F-929C-945C5EF943FD}</Project>
+ <Project>{4B70B7B0-44A0-31A9-A8DF-2367BBB103F9}</Project>
<Name>ReactorUnitTests</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\SPIRV-Tools.vcxproj">
- <Project>{EF1AF598-E402-38F1-A74A-35F18A1EC1CC}</Project>
+ <Project>{2866BC19-5FA8-3D67-8D94-751A3803A3DF}</Project>
<Name>SPIRV-Tools</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\link\SPIRV-Tools-link.vcxproj">
- <Project>{5F3076C6-2971-39DF-A3BE-A78FB0411AAE}</Project>
+ <Project>{AC311772-F314-3373-B869-71CD6C30634D}</Project>
<Name>SPIRV-Tools-link</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\opt\SPIRV-Tools-opt.vcxproj">
- <Project>{6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}</Project>
+ <Project>{2F8B8E0B-1B59-3671-91FE-A0E499B82D18}</Project>
<Name>SPIRV-Tools-opt</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\reduce\SPIRV-Tools-reduce.vcxproj">
- <Project>{F6702FDF-019F-3B2F-9CAD-15C15CD4F871}</Project>
+ <Project>{C672D2D1-E638-3565-87EC-11172BD73995}</Project>
<Name>SPIRV-Tools-reduce</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\SPIRV-Tools-shared.vcxproj">
- <Project>{62B58F28-8443-346E-8A29-F389A2C9CBAD}</Project>
+ <Project>{DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}</Project>
<Name>SPIRV-Tools-shared</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\SwiftShader.vcxproj">
- <Project>{996E1D94-926B-3585-9466-CDB769D7188C}</Project>
+ <Project>{BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}</Project>
<Name>SwiftShader</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\libEGL.vcxproj">
- <Project>{B49D30BB-AC67-3799-8A4E-B5F883BB229B}</Project>
+ <Project>{956A3BCB-1113-3FD7-87CC-908C6073E1FB}</Project>
<Name>libEGL</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\libGLES_CM.vcxproj">
- <Project>{3915EFF3-638D-330F-BD1B-9E8D85D2FB1F}</Project>
+ <Project>{88C96A70-4C80-3CAC-9EE4-7B95DB194D39}</Project>
<Name>libGLES_CM</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\libGLESv2.vcxproj">
- <Project>{E22D780F-96F6-3714-B708-4875F7F8F6FF}</Project>
+ <Project>{1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF}</Project>
<Name>libGLESv2</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\libvk_swiftshader.vcxproj">
- <Project>{32940355-6B50-33D6-BDC8-56E00F8D88BC}</Project>
+ <Project>{1B4D7DF7-FCDB-342F-9D20-F9E0262B6964}</Project>
<Name>libvk_swiftshader</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\llvm.vcxproj">
- <Project>{9B24984C-F78C-3EF7-907B-2B0D2CDB5695}</Project>
+ <Project>{B9E0EFB7-8E1B-303D-9222-13F7A82B7858}</Project>
<Name>llvm</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spirv-tools-pkg-config.vcxproj">
- <Project>{EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}</Project>
+ <Project>{96492351-1995-3B6B-A091-E7F4918E443B}</Project>
<Name>spirv-tools-pkg-config</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spirv-tools-shared-pkg-config.vcxproj">
- <Project>{0FA45296-9836-3DE4-BEA5-F2029797A16F}</Project>
+ <Project>{049A6034-6699-3DDF-BF15-47C981793305}</Project>
<Name>spirv-tools-shared-pkg-config</Name>
- </ProjectReference>
- <ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\unittests.vcxproj">
- <Project>{4BDD6A5B-67E0-33DF-950C-4AD0ABB1D729}</Project>
- <Name>unittests</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
+ </ProjectReference>
+ <ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\gles-unittests.vcxproj">
+ <Project>{BC5A59A0-B151-32E5-9090-B06A8D88F902}</Project>
+ <Name>gles-unittests</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
+ </ProjectReference>
+ <ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\vk-unittests.vcxproj">
+ <Project>{5A8F73B9-27CC-3054-8674-0B1ACFDA170B}</Project>
+ <Name>vk-unittests</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ALL_BUILD.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ALL_BUILD.vcxproj.filters
index 5351b68524a..c048a6582ef 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ALL_BUILD.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ALL_BUILD.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
</ItemGroup>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/GLCompiler.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/GLCompiler.vcxproj
index b493aa2a003..7ebfeab77fa 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/GLCompiler.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/GLCompiler.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{74318028-369F-3EA0-8A99-A341020416D6}</ProjectGuid>
+ <ProjectGuid>{B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -64,6 +64,7 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -96,10 +97,12 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -118,84 +121,84 @@
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\AnalyzeCallDepth.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\Compiler.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\Diagnostics.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\DirectiveHandler.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\InfoSink.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\Initialize.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\InitializeParseContext.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\IntermTraverse.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\Intermediate.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\OutputASM.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\ParseHelper.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\PoolAlloc.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\SymbolTable.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\TranslatorASM.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\ValidateLimitations.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\ValidateSwitch.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\debug.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\glslang_lex.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\glslang_tab.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\intermOut.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\parseConst.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\DiagnosticsBase.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\DirectiveHandlerBase.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\DirectiveParser.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\ExpressionParser.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Input.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Lexer.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Macro.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\MacroExpander.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Preprocessor.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Token.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Tokenizer.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\util.cpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\AnalyzeCallDepth.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\AnalyzeCallDepth.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\BaseTypes.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\Common.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\Compiler.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\Compiler.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\ConstantUnion.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\Diagnostics.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\Diagnostics.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\DirectiveHandler.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\DirectiveHandler.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\ExtensionBehavior.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\InfoSink.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\InfoSink.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\Initialize.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\Initialize.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\InitializeGlobals.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\InitializeParseContext.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\InitializeParseContext.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\IntermTraverse.cpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\Intermediate.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\MMap.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\OutputASM.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\OutputASM.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\ParseHelper.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\ParseHelper.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\PoolAlloc.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\PoolAlloc.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\Pragma.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\SymbolTable.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\SymbolTable.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\TranslatorASM.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\TranslatorASM.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\Types.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\ValidateLimitations.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\ValidateLimitations.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\ValidateSwitch.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\ValidateSwitch.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\debug.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\debug.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\glslang.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\glslang_lex.cpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\glslang_tab.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\glslang_tab.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\intermOut.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\intermediate.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\localintermediate.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\osinclude.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\parseConst.cpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\DiagnosticsBase.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\DiagnosticsBase.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\DirectiveHandlerBase.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\DirectiveHandlerBase.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\DirectiveParser.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\DirectiveParser.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\ExpressionParser.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\ExpressionParser.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Input.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Input.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Lexer.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Lexer.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Macro.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Macro.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\MacroExpander.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\MacroExpander.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Preprocessor.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Preprocessor.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\SourceLocation.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Token.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Token.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Tokenizer.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\Tokenizer.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\length_limits.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\numeric_lex.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\preprocessor\pp_utils.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\util.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\compiler\util.h" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\ossource_win.cpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\compiler\ossource_win.cpp" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/GLCompiler.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/GLCompiler.vcxproj.filters
index c04020326f2..9dce05a5cb0 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/GLCompiler.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/GLCompiler.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)src\OpenGL\compiler\AnalyzeCallDepth.cpp">
@@ -240,16 +240,16 @@
</ItemGroup>
<ItemGroup>
<Filter Include="src">
- <UniqueIdentifier>{13574A07-B880-3431-8401-B66983F72A05}</UniqueIdentifier>
+ <UniqueIdentifier>{1D32CFC4-3897-312A-881D-1722E268FA32}</UniqueIdentifier>
</Filter>
- <Filter Include="src\OpenGL\compiler\preprocessor">
- <UniqueIdentifier>{9DCCFE59-E55F-37D1-B9F1-AC419B68ABFD}</UniqueIdentifier>
+ <Filter Include="src\OpenGL">
+ <UniqueIdentifier>{290F2129-951C-3257-8777-9DC8BFFF50AF}</UniqueIdentifier>
</Filter>
<Filter Include="src\OpenGL\compiler">
- <UniqueIdentifier>{AEE5967E-F68B-3972-BDE5-AF7D77265A4C}</UniqueIdentifier>
+ <UniqueIdentifier>{A1DAC9E2-7F60-3CE0-81E0-780EFC1C467F}</UniqueIdentifier>
</Filter>
- <Filter Include="src\OpenGL">
- <UniqueIdentifier>{51160DCB-631F-348A-A69D-7F054A400827}</UniqueIdentifier>
+ <Filter Include="src\OpenGL\compiler\preprocessor">
+ <UniqueIdentifier>{86B2E060-5745-3994-AC91-109FEEAA1A82}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/OGLES2HelloAPI.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/OGLES2HelloAPI.vcxproj
index 4ebda9d762d..a438fd2d233 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/OGLES2HelloAPI.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/OGLES2HelloAPI.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{14CBFE6C-4A95-3390-846D-C5B8E0B631CB}</ProjectGuid>
+ <ProjectGuid>{F5F127F5-2128-30AA-BCB8-935979A13F41}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -68,6 +68,7 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -110,10 +111,12 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -142,32 +145,44 @@
</ProjectReference>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="$(SolutionDir)third_party\PowerVR_SDK\Examples\Beginner\01_HelloAPI\OGLES2\OGLES2HelloAPI_Windows.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\PowerVR_SDK\Examples\Beginner\01_HelloAPI\OGLES2\OGLES2HelloAPI_Windows.cpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\GLCompiler.vcxproj">
- <Project>{74318028-369F-3EA0-8A99-A341020416D6}</Project>
+ <Project>{B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}</Project>
<Name>GLCompiler</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\ReactorLLVM.vcxproj">
- <Project>{3E565C6C-4B64-3128-A009-4A91C77E00E5}</Project>
+ <Project>{2EA2C687-489E-32F2-8D89-B90620301359}</Project>
<Name>ReactorLLVM</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\SwiftShader.vcxproj">
- <Project>{996E1D94-926B-3585-9466-CDB769D7188C}</Project>
+ <Project>{BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}</Project>
<Name>SwiftShader</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\libEGL.vcxproj">
- <Project>{B49D30BB-AC67-3799-8A4E-B5F883BB229B}</Project>
+ <Project>{956A3BCB-1113-3FD7-87CC-908C6073E1FB}</Project>
<Name>libEGL</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\libGLESv2.vcxproj">
- <Project>{E22D780F-96F6-3714-B708-4875F7F8F6FF}</Project>
+ <Project>{1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF}</Project>
<Name>libGLESv2</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\llvm.vcxproj">
- <Project>{9B24984C-F78C-3EF7-907B-2B0D2CDB5695}</Project>
+ <Project>{B9E0EFB7-8E1B-303D-9222-13F7A82B7858}</Project>
<Name>llvm</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/OGLES2HelloAPI.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/OGLES2HelloAPI.vcxproj.filters
index 90d7b480dc1..9abd2b4a6ae 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/OGLES2HelloAPI.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/OGLES2HelloAPI.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)third_party\PowerVR_SDK\Examples\Beginner\01_HelloAPI\OGLES2\OGLES2HelloAPI_Windows.cpp">
@@ -7,7 +7,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="Source Files">
- <UniqueIdentifier>{2F259CF2-FDFE-365E-920F-2228D7410C8D}</UniqueIdentifier>
+ <UniqueIdentifier>{307AEBE6-F217-340D-9701-0167F1D37482}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorLLVM.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorLLVM.vcxproj
index 308849ec7a7..289698d20a8 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorLLVM.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorLLVM.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{3E565C6C-4B64-3128-A009-4A91C77E00E5}</ProjectGuid>
+ <ProjectGuid>{2EA2C687-489E-32F2-8D89-B90620301359}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -64,6 +64,7 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -96,10 +97,12 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -118,25 +121,31 @@
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
+ <ClCompile Include="$(SolutionDir)src\Reactor\Reactor.cpp" />
<ClCompile Include="$(SolutionDir)src\Reactor\LLVMReactor.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Reactor\LLVMReactor.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Reactor\LLVMReactorDebugInfo.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Reactor\LLVMReactorDebugInfo.hpp" />
<ClInclude Include="$(SolutionDir)src\Reactor\Nucleus.hpp" />
- <ClCompile Include="$(SolutionDir)src\Reactor\Routine.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Reactor\Routine.cpp" />
<ClInclude Include="$(SolutionDir)src\Reactor\Routine.hpp" />
- <ClCompile Include="$(SolutionDir)src\Reactor\LLVMRoutine.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Reactor\LLVMRoutine.cpp" />
<ClInclude Include="$(SolutionDir)src\Reactor\LLVMRoutine.hpp" />
- <ClCompile Include="$(SolutionDir)src\Reactor\LLVMRoutineManager.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Reactor\LLVMRoutineManager.cpp" />
<ClInclude Include="$(SolutionDir)src\Reactor\LLVMRoutineManager.hpp" />
- <ClCompile Include="$(SolutionDir)src\Reactor\CPUID.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Reactor\CPUID.cpp" />
<ClInclude Include="$(SolutionDir)src\Reactor\CPUID.hpp" />
- <ClCompile Include="$(SolutionDir)src\Reactor\Debug.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Reactor\Debug.cpp" />
<ClInclude Include="$(SolutionDir)src\Reactor\Debug.hpp" />
- <ClCompile Include="$(SolutionDir)src\Reactor\ExecutableMemory.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Reactor\ExecutableMemory.cpp" />
<ClInclude Include="$(SolutionDir)src\Reactor\ExecutableMemory.hpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\llvm.vcxproj">
- <Project>{9B24984C-F78C-3EF7-907B-2B0D2CDB5695}</Project>
+ <Project>{B9E0EFB7-8E1B-303D-9222-13F7A82B7858}</Project>
<Name>llvm</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorLLVM.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorLLVM.vcxproj.filters
index 20b724d7705..46a5c68e644 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorLLVM.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorLLVM.vcxproj.filters
@@ -1,9 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
+ <ClCompile Include="$(SolutionDir)src\Reactor\Reactor.cpp">
+ <Filter>src\Reactor</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)src\Reactor\LLVMReactor.cpp">
<Filter>src\Reactor</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Reactor\LLVMReactorDebugInfo.cpp">
+ <Filter>src\Reactor</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)src\Reactor\Routine.cpp">
<Filter>src\Reactor</Filter>
</ClCompile>
@@ -30,6 +36,12 @@
<ClInclude Include="$(SolutionDir)src\Reactor\Routine.hpp">
<Filter>src\Reactor</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Reactor\LLVMReactor.hpp">
+ <Filter>src\Reactor</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Reactor\LLVMReactorDebugInfo.hpp">
+ <Filter>src\Reactor</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)src\Reactor\LLVMRoutine.hpp">
<Filter>src\Reactor</Filter>
</ClInclude>
@@ -47,11 +59,11 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
- <Filter Include="src\Reactor">
- <UniqueIdentifier>{01629916-7B58-386F-9C49-915800FE4A05}</UniqueIdentifier>
- </Filter>
<Filter Include="src">
- <UniqueIdentifier>{13574A07-B880-3431-8401-B66983F72A05}</UniqueIdentifier>
+ <UniqueIdentifier>{1D32CFC4-3897-312A-881D-1722E268FA32}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\Reactor">
+ <UniqueIdentifier>{F51AFC28-EF81-3443-9FD8-3EAA2D053082}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorUnitTests.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorUnitTests.vcxproj
index 9ed543842fa..619e976b2c7 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorUnitTests.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorUnitTests.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{635B11E4-0F2D-368F-929C-945C5EF943FD}</ProjectGuid>
+ <ProjectGuid>{4B70B7B0-44A0-31A9-A8DF-2367BBB103F9}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -68,6 +68,7 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -110,10 +111,12 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -142,17 +145,21 @@
</ProjectReference>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="$(SolutionDir)src\Reactor\ReactorUnitTests.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\googletest\googletest\src\gtest-all.cc" />
+ <ClCompile Include="$(SolutionDir)src\Reactor\ReactorUnitTests.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\googletest\googletest\src\gtest-all.cc" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\ReactorLLVM.vcxproj">
- <Project>{3E565C6C-4B64-3128-A009-4A91C77E00E5}</Project>
+ <Project>{2EA2C687-489E-32F2-8D89-B90620301359}</Project>
<Name>ReactorLLVM</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\llvm.vcxproj">
- <Project>{9B24984C-F78C-3EF7-907B-2B0D2CDB5695}</Project>
+ <Project>{B9E0EFB7-8E1B-303D-9222-13F7A82B7858}</Project>
<Name>llvm</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorUnitTests.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorUnitTests.vcxproj.filters
index 3332d5c8065..9235326c06c 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorUnitTests.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/ReactorUnitTests.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)src\Reactor\ReactorUnitTests.cpp">
@@ -9,14 +9,14 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
- <Filter Include="src\Reactor">
- <UniqueIdentifier>{01629916-7B58-386F-9C49-915800FE4A05}</UniqueIdentifier>
- </Filter>
<Filter Include="Source Files">
- <UniqueIdentifier>{2F259CF2-FDFE-365E-920F-2228D7410C8D}</UniqueIdentifier>
+ <UniqueIdentifier>{307AEBE6-F217-340D-9701-0167F1D37482}</UniqueIdentifier>
</Filter>
<Filter Include="src">
- <UniqueIdentifier>{13574A07-B880-3431-8401-B66983F72A05}</UniqueIdentifier>
+ <UniqueIdentifier>{1D32CFC4-3897-312A-881D-1722E268FA32}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\Reactor">
+ <UniqueIdentifier>{F51AFC28-EF81-3443-9FD8-3EAA2D053082}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.sln b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.sln
index e40491821a5..126906199f5 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.sln
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.sln
@@ -1,205 +1,211 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CMakePredefinedTargets", "CMakePredefinedTargets", "{81FD0586-FEDF-33EE-85EC-35FE7EC8667D}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CMakePredefinedTargets", "CMakePredefinedTargets", "{5C0043D5-C4A7-3794-80B8-1838D50364AB}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{966AFC8E-3F99-3406-B1A4-F429063F7CD0}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{F5E3A037-65B6-315C-A12F-41E06C983058}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LLVM", "LLVM", "{6E04BB9F-C9BB-327E-82DE-CD3AD32C87B3}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LLVM", "LLVM", "{F8AB40FC-4ECD-3274-BC5B-F9E15E2564FE}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "OpenGL", "OpenGL", "{2202E8C3-74C3-38E3-B019-05A731F62855}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "OpenGL", "OpenGL", "{F65894DC-9636-3FA9-9068-572DBF7F5126}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools build", "SPIRV-Tools build", "{4E87A75D-9056-39FC-B704-6ED9351D9643}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools build", "SPIRV-Tools build", "{3D4925D7-A068-3AAE-A7E7-BC42FA711B33}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools libraries", "SPIRV-Tools libraries", "{F5313650-26B7-3FD1-949B-778051D0087B}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools libraries", "SPIRV-Tools libraries", "{3E491021-A61D-35E3-A471-EE7FD2DCB291}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools utilities", "SPIRV-Tools utilities", "{8351EE33-11D6-3363-BCC3-4F708BF29B48}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools utilities", "SPIRV-Tools utilities", "{5C70A9BE-0B12-37F5-AC43-A348866101A1}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{6D288011-32DF-3CEE-8379-7787990F36DF}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{FFD56AC5-F278-31C7-8A34-58F29694034D}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{9DC8B69F-25E1-3EC7-A575-F725CB4AEB29}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{E2FEE265-4C4F-3559-A383-9FC680626E2D}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Vulkan", "Vulkan", "{57C8905F-4FBE-3D7E-89D7-E8CB65A87A4C}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Vulkan", "Vulkan", "{5B0DE4D9-2EC7-3B5E-8EFD-A4B4D9B78E1E}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALL_BUILD", "ALL_BUILD.vcxproj", "{93979AE4-08B2-324E-AACE-6FFC302D2505}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALL_BUILD", "ALL_BUILD.vcxproj", "{B2B07DA3-A388-307E-A283-3904C31F1CE2}"
ProjectSection(ProjectDependencies) = postProject
- {74318028-369F-3EA0-8A99-A341020416D6} = {74318028-369F-3EA0-8A99-A341020416D6}
- {14CBFE6C-4A95-3390-846D-C5B8E0B631CB} = {14CBFE6C-4A95-3390-846D-C5B8E0B631CB}
- {3E565C6C-4B64-3128-A009-4A91C77E00E5} = {3E565C6C-4B64-3128-A009-4A91C77E00E5}
- {635B11E4-0F2D-368F-929C-945C5EF943FD} = {635B11E4-0F2D-368F-929C-945C5EF943FD}
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC} = {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}
- {5F3076C6-2971-39DF-A3BE-A78FB0411AAE} = {5F3076C6-2971-39DF-A3BE-A78FB0411AAE}
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327} = {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}
- {F6702FDF-019F-3B2F-9CAD-15C15CD4F871} = {F6702FDF-019F-3B2F-9CAD-15C15CD4F871}
- {62B58F28-8443-346E-8A29-F389A2C9CBAD} = {62B58F28-8443-346E-8A29-F389A2C9CBAD}
- {996E1D94-926B-3585-9466-CDB769D7188C} = {996E1D94-926B-3585-9466-CDB769D7188C}
- {B49D30BB-AC67-3799-8A4E-B5F883BB229B} = {B49D30BB-AC67-3799-8A4E-B5F883BB229B}
- {3915EFF3-638D-330F-BD1B-9E8D85D2FB1F} = {3915EFF3-638D-330F-BD1B-9E8D85D2FB1F}
- {E22D780F-96F6-3714-B708-4875F7F8F6FF} = {E22D780F-96F6-3714-B708-4875F7F8F6FF}
- {32940355-6B50-33D6-BDC8-56E00F8D88BC} = {32940355-6B50-33D6-BDC8-56E00F8D88BC}
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695} = {9B24984C-F78C-3EF7-907B-2B0D2CDB5695}
- {EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7} = {EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}
- {0FA45296-9836-3DE4-BEA5-F2029797A16F} = {0FA45296-9836-3DE4-BEA5-F2029797A16F}
- {4BDD6A5B-67E0-33DF-950C-4AD0ABB1D729} = {4BDD6A5B-67E0-33DF-950C-4AD0ABB1D729}
+ {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C} = {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}
+ {F5F127F5-2128-30AA-BCB8-935979A13F41} = {F5F127F5-2128-30AA-BCB8-935979A13F41}
+ {2EA2C687-489E-32F2-8D89-B90620301359} = {2EA2C687-489E-32F2-8D89-B90620301359}
+ {4B70B7B0-44A0-31A9-A8DF-2367BBB103F9} = {4B70B7B0-44A0-31A9-A8DF-2367BBB103F9}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {2866BC19-5FA8-3D67-8D94-751A3803A3DF}
+ {AC311772-F314-3373-B869-71CD6C30634D} = {AC311772-F314-3373-B869-71CD6C30634D}
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18} = {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}
+ {C672D2D1-E638-3565-87EC-11172BD73995} = {C672D2D1-E638-3565-87EC-11172BD73995}
+ {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240} = {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}
+ {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6} = {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}
+ {956A3BCB-1113-3FD7-87CC-908C6073E1FB} = {956A3BCB-1113-3FD7-87CC-908C6073E1FB}
+ {88C96A70-4C80-3CAC-9EE4-7B95DB194D39} = {88C96A70-4C80-3CAC-9EE4-7B95DB194D39}
+ {1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF} = {1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF}
+ {1B4D7DF7-FCDB-342F-9D20-F9E0262B6964} = {1B4D7DF7-FCDB-342F-9D20-F9E0262B6964}
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858} = {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}
+ {96492351-1995-3B6B-A091-E7F4918E443B} = {96492351-1995-3B6B-A091-E7F4918E443B}
+ {049A6034-6699-3DDF-BF15-47C981793305} = {049A6034-6699-3DDF-BF15-47C981793305}
+ {BC5A59A0-B151-32E5-9090-B06A8D88F902} = {BC5A59A0-B151-32E5-9090-B06A8D88F902}
+ {5A8F73B9-27CC-3054-8674-0B1ACFDA170B} = {5A8F73B9-27CC-3054-8674-0B1ACFDA170B}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GLCompiler", "GLCompiler.vcxproj", "{74318028-369F-3EA0-8A99-A341020416D6}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GLCompiler", "GLCompiler.vcxproj", "{B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OGLES2HelloAPI", "OGLES2HelloAPI.vcxproj", "{14CBFE6C-4A95-3390-846D-C5B8E0B631CB}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OGLES2HelloAPI", "OGLES2HelloAPI.vcxproj", "{F5F127F5-2128-30AA-BCB8-935979A13F41}"
ProjectSection(ProjectDependencies) = postProject
- {74318028-369F-3EA0-8A99-A341020416D6} = {74318028-369F-3EA0-8A99-A341020416D6}
- {3E565C6C-4B64-3128-A009-4A91C77E00E5} = {3E565C6C-4B64-3128-A009-4A91C77E00E5}
- {996E1D94-926B-3585-9466-CDB769D7188C} = {996E1D94-926B-3585-9466-CDB769D7188C}
- {B49D30BB-AC67-3799-8A4E-B5F883BB229B} = {B49D30BB-AC67-3799-8A4E-B5F883BB229B}
- {E22D780F-96F6-3714-B708-4875F7F8F6FF} = {E22D780F-96F6-3714-B708-4875F7F8F6FF}
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695} = {9B24984C-F78C-3EF7-907B-2B0D2CDB5695}
+ {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C} = {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}
+ {2EA2C687-489E-32F2-8D89-B90620301359} = {2EA2C687-489E-32F2-8D89-B90620301359}
+ {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6} = {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}
+ {956A3BCB-1113-3FD7-87CC-908C6073E1FB} = {956A3BCB-1113-3FD7-87CC-908C6073E1FB}
+ {1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF} = {1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF}
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858} = {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactorLLVM", "ReactorLLVM.vcxproj", "{3E565C6C-4B64-3128-A009-4A91C77E00E5}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactorLLVM", "ReactorLLVM.vcxproj", "{2EA2C687-489E-32F2-8D89-B90620301359}"
ProjectSection(ProjectDependencies) = postProject
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695} = {9B24984C-F78C-3EF7-907B-2B0D2CDB5695}
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858} = {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactorUnitTests", "ReactorUnitTests.vcxproj", "{635B11E4-0F2D-368F-929C-945C5EF943FD}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactorUnitTests", "ReactorUnitTests.vcxproj", "{4B70B7B0-44A0-31A9-A8DF-2367BBB103F9}"
ProjectSection(ProjectDependencies) = postProject
- {3E565C6C-4B64-3128-A009-4A91C77E00E5} = {3E565C6C-4B64-3128-A009-4A91C77E00E5}
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695} = {9B24984C-F78C-3EF7-907B-2B0D2CDB5695}
+ {2EA2C687-489E-32F2-8D89-B90620301359} = {2EA2C687-489E-32F2-8D89-B90620301359}
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858} = {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools", "third_party\SPIRV-Tools\source\SPIRV-Tools.vcxproj", "{EF1AF598-E402-38F1-A74A-35F18A1EC1CC}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools", "third_party\SPIRV-Tools\source\SPIRV-Tools.vcxproj", "{2866BC19-5FA8-3D67-8D94-751A3803A3DF}"
ProjectSection(ProjectDependencies) = postProject
- {610A8C03-DBA2-3774-9E63-A8F8DE9BB082} = {610A8C03-DBA2-3774-9E63-A8F8DE9BB082}
- {878391C5-E52B-3DC9-AA48-92D3EB99C2EE} = {878391C5-E52B-3DC9-AA48-92D3EB99C2EE}
- {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF} = {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}
+ {95A9028D-402E-33FB-89FA-D07A85302C47} = {95A9028D-402E-33FB-89FA-D07A85302C47}
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9} = {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F} = {136BDBF5-3C3E-3763-B285-79E67F8E442F}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-link", "third_party\SPIRV-Tools\source\link\SPIRV-Tools-link.vcxproj", "{5F3076C6-2971-39DF-A3BE-A78FB0411AAE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-link", "third_party\SPIRV-Tools\source\link\SPIRV-Tools-link.vcxproj", "{AC311772-F314-3373-B869-71CD6C30634D}"
ProjectSection(ProjectDependencies) = postProject
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC} = {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327} = {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {2866BC19-5FA8-3D67-8D94-751A3803A3DF}
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18} = {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-opt", "third_party\SPIRV-Tools\source\opt\SPIRV-Tools-opt.vcxproj", "{6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-opt", "third_party\SPIRV-Tools\source\opt\SPIRV-Tools-opt.vcxproj", "{2F8B8E0B-1B59-3671-91FE-A0E499B82D18}"
ProjectSection(ProjectDependencies) = postProject
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC} = {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {2866BC19-5FA8-3D67-8D94-751A3803A3DF}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-reduce", "third_party\SPIRV-Tools\source\reduce\SPIRV-Tools-reduce.vcxproj", "{F6702FDF-019F-3B2F-9CAD-15C15CD4F871}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-reduce", "third_party\SPIRV-Tools\source\reduce\SPIRV-Tools-reduce.vcxproj", "{C672D2D1-E638-3565-87EC-11172BD73995}"
ProjectSection(ProjectDependencies) = postProject
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC} = {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327} = {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {2866BC19-5FA8-3D67-8D94-751A3803A3DF}
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18} = {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-shared", "third_party\SPIRV-Tools\source\SPIRV-Tools-shared.vcxproj", "{62B58F28-8443-346E-8A29-F389A2C9CBAD}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-shared", "third_party\SPIRV-Tools\source\SPIRV-Tools-shared.vcxproj", "{DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}"
ProjectSection(ProjectDependencies) = postProject
- {610A8C03-DBA2-3774-9E63-A8F8DE9BB082} = {610A8C03-DBA2-3774-9E63-A8F8DE9BB082}
- {878391C5-E52B-3DC9-AA48-92D3EB99C2EE} = {878391C5-E52B-3DC9-AA48-92D3EB99C2EE}
- {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF} = {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}
+ {95A9028D-402E-33FB-89FA-D07A85302C47} = {95A9028D-402E-33FB-89FA-D07A85302C47}
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9} = {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F} = {136BDBF5-3C3E-3763-B285-79E67F8E442F}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwiftShader", "SwiftShader.vcxproj", "{996E1D94-926B-3585-9466-CDB769D7188C}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwiftShader", "SwiftShader.vcxproj", "{BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_tables", "third_party\SPIRV-Tools\source\core_tables.vcxproj", "{610A8C03-DBA2-3774-9E63-A8F8DE9BB082}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_tables", "third_party\SPIRV-Tools\source\core_tables.vcxproj", "{95A9028D-402E-33FB-89FA-D07A85302C47}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "enum_string_mapping", "third_party\SPIRV-Tools\source\enum_string_mapping.vcxproj", "{878391C5-E52B-3DC9-AA48-92D3EB99C2EE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "enum_string_mapping", "third_party\SPIRV-Tools\source\enum_string_mapping.vcxproj", "{1FFA8633-FFB4-3B7C-9F44-A42B791944C9}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "extinst_tables", "third_party\SPIRV-Tools\source\extinst_tables.vcxproj", "{305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "extinst_tables", "third_party\SPIRV-Tools\source\extinst_tables.vcxproj", "{136BDBF5-3C3E-3763-B285-79E67F8E442F}"
ProjectSection(ProjectDependencies) = postProject
- {75B0856F-5AC7-31E6-91C6-AD88B3745281} = {75B0856F-5AC7-31E6-91C6-AD88B3745281}
- {15CEFCBE-B270-3849-9E1F-A5A35F5374C3} = {15CEFCBE-B270-3849-9E1F-A5A35F5374C3}
- {413EAFA1-B915-3FB9-8065-261CD1875597} = {413EAFA1-B915-3FB9-8065-261CD1875597}
- {F353E330-643D-353C-9031-52ED11A7E914} = {F353E330-643D-353C-9031-52ED11A7E914}
- {36E309E0-4447-33C6-92DA-FFF8793CF0A6} = {36E309E0-4447-33C6-92DA-FFF8793CF0A6}
- {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44} = {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}
+ {2F264302-EFA1-396F-AD64-0AC05E686177} = {2F264302-EFA1-396F-AD64-0AC05E686177}
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9} = {B0183B68-4A3E-382F-A66C-520DA9CF24F9}
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50} = {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}
+ {07107D83-83B6-3BE6-8827-20DB1D90942F} = {07107D83-83B6-3BE6-8827-20DB1D90942F}
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC} = {684F4245-24D8-3E74-ACCE-4FC6407F80FC}
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6} = {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libEGL", "libEGL.vcxproj", "{B49D30BB-AC67-3799-8A4E-B5F883BB229B}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libEGL", "libEGL.vcxproj", "{956A3BCB-1113-3FD7-87CC-908C6073E1FB}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libGLES_CM", "libGLES_CM.vcxproj", "{3915EFF3-638D-330F-BD1B-9E8D85D2FB1F}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libGLES_CM", "libGLES_CM.vcxproj", "{88C96A70-4C80-3CAC-9EE4-7B95DB194D39}"
ProjectSection(ProjectDependencies) = postProject
- {74318028-369F-3EA0-8A99-A341020416D6} = {74318028-369F-3EA0-8A99-A341020416D6}
- {3E565C6C-4B64-3128-A009-4A91C77E00E5} = {3E565C6C-4B64-3128-A009-4A91C77E00E5}
- {996E1D94-926B-3585-9466-CDB769D7188C} = {996E1D94-926B-3585-9466-CDB769D7188C}
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695} = {9B24984C-F78C-3EF7-907B-2B0D2CDB5695}
+ {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C} = {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}
+ {2EA2C687-489E-32F2-8D89-B90620301359} = {2EA2C687-489E-32F2-8D89-B90620301359}
+ {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6} = {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858} = {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libGLESv2", "libGLESv2.vcxproj", "{E22D780F-96F6-3714-B708-4875F7F8F6FF}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libGLESv2", "libGLESv2.vcxproj", "{1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF}"
ProjectSection(ProjectDependencies) = postProject
- {74318028-369F-3EA0-8A99-A341020416D6} = {74318028-369F-3EA0-8A99-A341020416D6}
- {3E565C6C-4B64-3128-A009-4A91C77E00E5} = {3E565C6C-4B64-3128-A009-4A91C77E00E5}
- {996E1D94-926B-3585-9466-CDB769D7188C} = {996E1D94-926B-3585-9466-CDB769D7188C}
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695} = {9B24984C-F78C-3EF7-907B-2B0D2CDB5695}
+ {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C} = {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}
+ {2EA2C687-489E-32F2-8D89-B90620301359} = {2EA2C687-489E-32F2-8D89-B90620301359}
+ {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6} = {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858} = {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvk_swiftshader", "libvk_swiftshader.vcxproj", "{32940355-6B50-33D6-BDC8-56E00F8D88BC}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvk_swiftshader", "libvk_swiftshader.vcxproj", "{1B4D7DF7-FCDB-342F-9D20-F9E0262B6964}"
ProjectSection(ProjectDependencies) = postProject
- {3E565C6C-4B64-3128-A009-4A91C77E00E5} = {3E565C6C-4B64-3128-A009-4A91C77E00E5}
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC} = {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327} = {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695} = {9B24984C-F78C-3EF7-907B-2B0D2CDB5695}
+ {2EA2C687-489E-32F2-8D89-B90620301359} = {2EA2C687-489E-32F2-8D89-B90620301359}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {2866BC19-5FA8-3D67-8D94-751A3803A3DF}
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18} = {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858} = {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llvm", "llvm.vcxproj", "{9B24984C-F78C-3EF7-907B-2B0D2CDB5695}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llvm", "llvm.vcxproj", "{B9E0EFB7-8E1B-303D-9222-13F7A82B7858}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-build-version", "third_party\SPIRV-Tools\source\spirv-tools-build-version.vcxproj", "{033737D3-CE97-35DD-B911-848DB912467D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-build-version", "third_party\SPIRV-Tools\source\spirv-tools-build-version.vcxproj", "{9E3BFB5B-D84A-3E8C-8B84-566073AC0DE3}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-debuginfo", "third_party\SPIRV-Tools\source\spirv-tools-debuginfo.vcxproj", "{75B0856F-5AC7-31E6-91C6-AD88B3745281}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-debuginfo", "third_party\SPIRV-Tools\source\spirv-tools-debuginfo.vcxproj", "{2F264302-EFA1-396F-AD64-0AC05E686177}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-header-DebugInfo", "third_party\SPIRV-Tools\source\spirv-tools-header-DebugInfo.vcxproj", "{15CEFCBE-B270-3849-9E1F-A5A35F5374C3}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-header-DebugInfo", "third_party\SPIRV-Tools\source\spirv-tools-header-DebugInfo.vcxproj", "{B0183B68-4A3E-382F-A66C-520DA9CF24F9}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-pkg-config", "third_party\SPIRV-Tools\spirv-tools-pkg-config.vcxproj", "{EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-pkg-config", "third_party\SPIRV-Tools\spirv-tools-pkg-config.vcxproj", "{96492351-1995-3B6B-A091-E7F4918E443B}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-shared-pkg-config", "third_party\SPIRV-Tools\spirv-tools-shared-pkg-config.vcxproj", "{0FA45296-9836-3DE4-BEA5-F2029797A16F}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-shared-pkg-config", "third_party\SPIRV-Tools\spirv-tools-shared-pkg-config.vcxproj", "{049A6034-6699-3DDF-BF15-47C981793305}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-gcn-shader", "third_party\SPIRV-Tools\source\spirv-tools-spv-amd-gcn-shader.vcxproj", "{413EAFA1-B915-3FB9-8065-261CD1875597}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-gcn-shader", "third_party\SPIRV-Tools\source\spirv-tools-spv-amd-gcn-shader.vcxproj", "{2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-ballot", "third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-ballot.vcxproj", "{F353E330-643D-353C-9031-52ED11A7E914}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-ballot", "third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-ballot.vcxproj", "{07107D83-83B6-3BE6-8827-20DB1D90942F}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-explicit-vertex-parameter", "third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj", "{36E309E0-4447-33C6-92DA-FFF8793CF0A6}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-explicit-vertex-parameter", "third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj", "{684F4245-24D8-3E74-ACCE-4FC6407F80FC}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-trinary-minmax", "third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-trinary-minmax.vcxproj", "{896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-trinary-minmax", "third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-trinary-minmax.vcxproj", "{EC14378D-27D2-31F1-B61E-9A92CB3E00A6}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-vimsyntax", "third_party\SPIRV-Tools\source\spirv-tools-vimsyntax.vcxproj", "{CE4E38AC-2FE5-356C-860E-C894AAC00DFF}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-vimsyntax", "third_party\SPIRV-Tools\source\spirv-tools-vimsyntax.vcxproj", "{8EC2136C-E0E9-3340-86AE-5463BAA01ABB}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unittests", "unittests.vcxproj", "{4BDD6A5B-67E0-33DF-950C-4AD0ABB1D729}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gles-unittests", "gles-unittests.vcxproj", "{BC5A59A0-B151-32E5-9090-B06A8D88F902}"
ProjectSection(ProjectDependencies) = postProject
- {74318028-369F-3EA0-8A99-A341020416D6} = {74318028-369F-3EA0-8A99-A341020416D6}
- {3E565C6C-4B64-3128-A009-4A91C77E00E5} = {3E565C6C-4B64-3128-A009-4A91C77E00E5}
- {996E1D94-926B-3585-9466-CDB769D7188C} = {996E1D94-926B-3585-9466-CDB769D7188C}
- {B49D30BB-AC67-3799-8A4E-B5F883BB229B} = {B49D30BB-AC67-3799-8A4E-B5F883BB229B}
- {E22D780F-96F6-3714-B708-4875F7F8F6FF} = {E22D780F-96F6-3714-B708-4875F7F8F6FF}
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695} = {9B24984C-F78C-3EF7-907B-2B0D2CDB5695}
+ {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C} = {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}
+ {2EA2C687-489E-32F2-8D89-B90620301359} = {2EA2C687-489E-32F2-8D89-B90620301359}
+ {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6} = {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}
+ {956A3BCB-1113-3FD7-87CC-908C6073E1FB} = {956A3BCB-1113-3FD7-87CC-908C6073E1FB}
+ {1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF} = {1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF}
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858} = {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vk-unittests", "vk-unittests.vcxproj", "{5A8F73B9-27CC-3054-8674-0B1ACFDA170B}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {2866BC19-5FA8-3D67-8D94-751A3803A3DF}
EndProjectSection
EndProject
Global
@@ -208,150 +214,155 @@ Global
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {93979AE4-08B2-324E-AACE-6FFC302D2505}.Debug|x64.ActiveCfg = Debug|x64
- {93979AE4-08B2-324E-AACE-6FFC302D2505}.Release|x64.ActiveCfg = Release|x64
- {74318028-369F-3EA0-8A99-A341020416D6}.Debug|x64.ActiveCfg = Debug|x64
- {74318028-369F-3EA0-8A99-A341020416D6}.Debug|x64.Build.0 = Debug|x64
- {74318028-369F-3EA0-8A99-A341020416D6}.Release|x64.ActiveCfg = Release|x64
- {74318028-369F-3EA0-8A99-A341020416D6}.Release|x64.Build.0 = Release|x64
- {14CBFE6C-4A95-3390-846D-C5B8E0B631CB}.Debug|x64.ActiveCfg = Debug|x64
- {14CBFE6C-4A95-3390-846D-C5B8E0B631CB}.Debug|x64.Build.0 = Debug|x64
- {14CBFE6C-4A95-3390-846D-C5B8E0B631CB}.Release|x64.ActiveCfg = Release|x64
- {14CBFE6C-4A95-3390-846D-C5B8E0B631CB}.Release|x64.Build.0 = Release|x64
- {3E565C6C-4B64-3128-A009-4A91C77E00E5}.Debug|x64.ActiveCfg = Debug|x64
- {3E565C6C-4B64-3128-A009-4A91C77E00E5}.Debug|x64.Build.0 = Debug|x64
- {3E565C6C-4B64-3128-A009-4A91C77E00E5}.Release|x64.ActiveCfg = Release|x64
- {3E565C6C-4B64-3128-A009-4A91C77E00E5}.Release|x64.Build.0 = Release|x64
- {635B11E4-0F2D-368F-929C-945C5EF943FD}.Debug|x64.ActiveCfg = Debug|x64
- {635B11E4-0F2D-368F-929C-945C5EF943FD}.Debug|x64.Build.0 = Debug|x64
- {635B11E4-0F2D-368F-929C-945C5EF943FD}.Release|x64.ActiveCfg = Release|x64
- {635B11E4-0F2D-368F-929C-945C5EF943FD}.Release|x64.Build.0 = Release|x64
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}.Debug|x64.ActiveCfg = Debug|x64
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}.Debug|x64.Build.0 = Debug|x64
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}.Release|x64.ActiveCfg = Release|x64
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}.Release|x64.Build.0 = Release|x64
- {5F3076C6-2971-39DF-A3BE-A78FB0411AAE}.Debug|x64.ActiveCfg = Debug|x64
- {5F3076C6-2971-39DF-A3BE-A78FB0411AAE}.Debug|x64.Build.0 = Debug|x64
- {5F3076C6-2971-39DF-A3BE-A78FB0411AAE}.Release|x64.ActiveCfg = Release|x64
- {5F3076C6-2971-39DF-A3BE-A78FB0411AAE}.Release|x64.Build.0 = Release|x64
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}.Debug|x64.ActiveCfg = Debug|x64
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}.Debug|x64.Build.0 = Debug|x64
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}.Release|x64.ActiveCfg = Release|x64
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}.Release|x64.Build.0 = Release|x64
- {F6702FDF-019F-3B2F-9CAD-15C15CD4F871}.Debug|x64.ActiveCfg = Debug|x64
- {F6702FDF-019F-3B2F-9CAD-15C15CD4F871}.Debug|x64.Build.0 = Debug|x64
- {F6702FDF-019F-3B2F-9CAD-15C15CD4F871}.Release|x64.ActiveCfg = Release|x64
- {F6702FDF-019F-3B2F-9CAD-15C15CD4F871}.Release|x64.Build.0 = Release|x64
- {62B58F28-8443-346E-8A29-F389A2C9CBAD}.Debug|x64.ActiveCfg = Debug|x64
- {62B58F28-8443-346E-8A29-F389A2C9CBAD}.Debug|x64.Build.0 = Debug|x64
- {62B58F28-8443-346E-8A29-F389A2C9CBAD}.Release|x64.ActiveCfg = Release|x64
- {62B58F28-8443-346E-8A29-F389A2C9CBAD}.Release|x64.Build.0 = Release|x64
- {996E1D94-926B-3585-9466-CDB769D7188C}.Debug|x64.ActiveCfg = Debug|x64
- {996E1D94-926B-3585-9466-CDB769D7188C}.Debug|x64.Build.0 = Debug|x64
- {996E1D94-926B-3585-9466-CDB769D7188C}.Release|x64.ActiveCfg = Release|x64
- {996E1D94-926B-3585-9466-CDB769D7188C}.Release|x64.Build.0 = Release|x64
- {610A8C03-DBA2-3774-9E63-A8F8DE9BB082}.Debug|x64.ActiveCfg = Debug|x64
- {610A8C03-DBA2-3774-9E63-A8F8DE9BB082}.Debug|x64.Build.0 = Debug|x64
- {610A8C03-DBA2-3774-9E63-A8F8DE9BB082}.Release|x64.ActiveCfg = Release|x64
- {610A8C03-DBA2-3774-9E63-A8F8DE9BB082}.Release|x64.Build.0 = Release|x64
- {878391C5-E52B-3DC9-AA48-92D3EB99C2EE}.Debug|x64.ActiveCfg = Debug|x64
- {878391C5-E52B-3DC9-AA48-92D3EB99C2EE}.Debug|x64.Build.0 = Debug|x64
- {878391C5-E52B-3DC9-AA48-92D3EB99C2EE}.Release|x64.ActiveCfg = Release|x64
- {878391C5-E52B-3DC9-AA48-92D3EB99C2EE}.Release|x64.Build.0 = Release|x64
- {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}.Debug|x64.ActiveCfg = Debug|x64
- {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}.Debug|x64.Build.0 = Debug|x64
- {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}.Release|x64.ActiveCfg = Release|x64
- {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}.Release|x64.Build.0 = Release|x64
- {B49D30BB-AC67-3799-8A4E-B5F883BB229B}.Debug|x64.ActiveCfg = Debug|x64
- {B49D30BB-AC67-3799-8A4E-B5F883BB229B}.Debug|x64.Build.0 = Debug|x64
- {B49D30BB-AC67-3799-8A4E-B5F883BB229B}.Release|x64.ActiveCfg = Release|x64
- {B49D30BB-AC67-3799-8A4E-B5F883BB229B}.Release|x64.Build.0 = Release|x64
- {3915EFF3-638D-330F-BD1B-9E8D85D2FB1F}.Debug|x64.ActiveCfg = Debug|x64
- {3915EFF3-638D-330F-BD1B-9E8D85D2FB1F}.Debug|x64.Build.0 = Debug|x64
- {3915EFF3-638D-330F-BD1B-9E8D85D2FB1F}.Release|x64.ActiveCfg = Release|x64
- {3915EFF3-638D-330F-BD1B-9E8D85D2FB1F}.Release|x64.Build.0 = Release|x64
- {E22D780F-96F6-3714-B708-4875F7F8F6FF}.Debug|x64.ActiveCfg = Debug|x64
- {E22D780F-96F6-3714-B708-4875F7F8F6FF}.Debug|x64.Build.0 = Debug|x64
- {E22D780F-96F6-3714-B708-4875F7F8F6FF}.Release|x64.ActiveCfg = Release|x64
- {E22D780F-96F6-3714-B708-4875F7F8F6FF}.Release|x64.Build.0 = Release|x64
- {32940355-6B50-33D6-BDC8-56E00F8D88BC}.Debug|x64.ActiveCfg = Debug|x64
- {32940355-6B50-33D6-BDC8-56E00F8D88BC}.Debug|x64.Build.0 = Debug|x64
- {32940355-6B50-33D6-BDC8-56E00F8D88BC}.Release|x64.ActiveCfg = Release|x64
- {32940355-6B50-33D6-BDC8-56E00F8D88BC}.Release|x64.Build.0 = Release|x64
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695}.Debug|x64.ActiveCfg = Debug|x64
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695}.Debug|x64.Build.0 = Debug|x64
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695}.Release|x64.ActiveCfg = Release|x64
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695}.Release|x64.Build.0 = Release|x64
- {033737D3-CE97-35DD-B911-848DB912467D}.Debug|x64.ActiveCfg = Debug|x64
- {033737D3-CE97-35DD-B911-848DB912467D}.Release|x64.ActiveCfg = Release|x64
- {75B0856F-5AC7-31E6-91C6-AD88B3745281}.Debug|x64.ActiveCfg = Debug|x64
- {75B0856F-5AC7-31E6-91C6-AD88B3745281}.Debug|x64.Build.0 = Debug|x64
- {75B0856F-5AC7-31E6-91C6-AD88B3745281}.Release|x64.ActiveCfg = Release|x64
- {75B0856F-5AC7-31E6-91C6-AD88B3745281}.Release|x64.Build.0 = Release|x64
- {15CEFCBE-B270-3849-9E1F-A5A35F5374C3}.Debug|x64.ActiveCfg = Debug|x64
- {15CEFCBE-B270-3849-9E1F-A5A35F5374C3}.Debug|x64.Build.0 = Debug|x64
- {15CEFCBE-B270-3849-9E1F-A5A35F5374C3}.Release|x64.ActiveCfg = Release|x64
- {15CEFCBE-B270-3849-9E1F-A5A35F5374C3}.Release|x64.Build.0 = Release|x64
- {EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}.Debug|x64.ActiveCfg = Debug|x64
- {EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}.Debug|x64.Build.0 = Debug|x64
- {EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}.Release|x64.ActiveCfg = Release|x64
- {EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}.Release|x64.Build.0 = Release|x64
- {0FA45296-9836-3DE4-BEA5-F2029797A16F}.Debug|x64.ActiveCfg = Debug|x64
- {0FA45296-9836-3DE4-BEA5-F2029797A16F}.Debug|x64.Build.0 = Debug|x64
- {0FA45296-9836-3DE4-BEA5-F2029797A16F}.Release|x64.ActiveCfg = Release|x64
- {0FA45296-9836-3DE4-BEA5-F2029797A16F}.Release|x64.Build.0 = Release|x64
- {413EAFA1-B915-3FB9-8065-261CD1875597}.Debug|x64.ActiveCfg = Debug|x64
- {413EAFA1-B915-3FB9-8065-261CD1875597}.Debug|x64.Build.0 = Debug|x64
- {413EAFA1-B915-3FB9-8065-261CD1875597}.Release|x64.ActiveCfg = Release|x64
- {413EAFA1-B915-3FB9-8065-261CD1875597}.Release|x64.Build.0 = Release|x64
- {F353E330-643D-353C-9031-52ED11A7E914}.Debug|x64.ActiveCfg = Debug|x64
- {F353E330-643D-353C-9031-52ED11A7E914}.Debug|x64.Build.0 = Debug|x64
- {F353E330-643D-353C-9031-52ED11A7E914}.Release|x64.ActiveCfg = Release|x64
- {F353E330-643D-353C-9031-52ED11A7E914}.Release|x64.Build.0 = Release|x64
- {36E309E0-4447-33C6-92DA-FFF8793CF0A6}.Debug|x64.ActiveCfg = Debug|x64
- {36E309E0-4447-33C6-92DA-FFF8793CF0A6}.Debug|x64.Build.0 = Debug|x64
- {36E309E0-4447-33C6-92DA-FFF8793CF0A6}.Release|x64.ActiveCfg = Release|x64
- {36E309E0-4447-33C6-92DA-FFF8793CF0A6}.Release|x64.Build.0 = Release|x64
- {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}.Debug|x64.ActiveCfg = Debug|x64
- {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}.Debug|x64.Build.0 = Debug|x64
- {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}.Release|x64.ActiveCfg = Release|x64
- {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}.Release|x64.Build.0 = Release|x64
- {CE4E38AC-2FE5-356C-860E-C894AAC00DFF}.Debug|x64.ActiveCfg = Debug|x64
- {CE4E38AC-2FE5-356C-860E-C894AAC00DFF}.Release|x64.ActiveCfg = Release|x64
- {4BDD6A5B-67E0-33DF-950C-4AD0ABB1D729}.Debug|x64.ActiveCfg = Debug|x64
- {4BDD6A5B-67E0-33DF-950C-4AD0ABB1D729}.Debug|x64.Build.0 = Debug|x64
- {4BDD6A5B-67E0-33DF-950C-4AD0ABB1D729}.Release|x64.ActiveCfg = Release|x64
- {4BDD6A5B-67E0-33DF-950C-4AD0ABB1D729}.Release|x64.Build.0 = Release|x64
+ {B2B07DA3-A388-307E-A283-3904C31F1CE2}.Debug|x64.ActiveCfg = Debug|x64
+ {B2B07DA3-A388-307E-A283-3904C31F1CE2}.Release|x64.ActiveCfg = Release|x64
+ {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}.Debug|x64.ActiveCfg = Debug|x64
+ {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}.Debug|x64.Build.0 = Debug|x64
+ {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}.Release|x64.ActiveCfg = Release|x64
+ {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}.Release|x64.Build.0 = Release|x64
+ {F5F127F5-2128-30AA-BCB8-935979A13F41}.Debug|x64.ActiveCfg = Debug|x64
+ {F5F127F5-2128-30AA-BCB8-935979A13F41}.Debug|x64.Build.0 = Debug|x64
+ {F5F127F5-2128-30AA-BCB8-935979A13F41}.Release|x64.ActiveCfg = Release|x64
+ {F5F127F5-2128-30AA-BCB8-935979A13F41}.Release|x64.Build.0 = Release|x64
+ {2EA2C687-489E-32F2-8D89-B90620301359}.Debug|x64.ActiveCfg = Debug|x64
+ {2EA2C687-489E-32F2-8D89-B90620301359}.Debug|x64.Build.0 = Debug|x64
+ {2EA2C687-489E-32F2-8D89-B90620301359}.Release|x64.ActiveCfg = Release|x64
+ {2EA2C687-489E-32F2-8D89-B90620301359}.Release|x64.Build.0 = Release|x64
+ {4B70B7B0-44A0-31A9-A8DF-2367BBB103F9}.Debug|x64.ActiveCfg = Debug|x64
+ {4B70B7B0-44A0-31A9-A8DF-2367BBB103F9}.Debug|x64.Build.0 = Debug|x64
+ {4B70B7B0-44A0-31A9-A8DF-2367BBB103F9}.Release|x64.ActiveCfg = Release|x64
+ {4B70B7B0-44A0-31A9-A8DF-2367BBB103F9}.Release|x64.Build.0 = Release|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Debug|x64.ActiveCfg = Debug|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Debug|x64.Build.0 = Debug|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Release|x64.ActiveCfg = Release|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Release|x64.Build.0 = Release|x64
+ {AC311772-F314-3373-B869-71CD6C30634D}.Debug|x64.ActiveCfg = Debug|x64
+ {AC311772-F314-3373-B869-71CD6C30634D}.Debug|x64.Build.0 = Debug|x64
+ {AC311772-F314-3373-B869-71CD6C30634D}.Release|x64.ActiveCfg = Release|x64
+ {AC311772-F314-3373-B869-71CD6C30634D}.Release|x64.Build.0 = Release|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Debug|x64.ActiveCfg = Debug|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Debug|x64.Build.0 = Debug|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Release|x64.ActiveCfg = Release|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Release|x64.Build.0 = Release|x64
+ {C672D2D1-E638-3565-87EC-11172BD73995}.Debug|x64.ActiveCfg = Debug|x64
+ {C672D2D1-E638-3565-87EC-11172BD73995}.Debug|x64.Build.0 = Debug|x64
+ {C672D2D1-E638-3565-87EC-11172BD73995}.Release|x64.ActiveCfg = Release|x64
+ {C672D2D1-E638-3565-87EC-11172BD73995}.Release|x64.Build.0 = Release|x64
+ {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}.Debug|x64.ActiveCfg = Debug|x64
+ {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}.Debug|x64.Build.0 = Debug|x64
+ {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}.Release|x64.ActiveCfg = Release|x64
+ {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}.Release|x64.Build.0 = Release|x64
+ {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}.Debug|x64.ActiveCfg = Debug|x64
+ {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}.Debug|x64.Build.0 = Debug|x64
+ {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}.Release|x64.ActiveCfg = Release|x64
+ {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}.Release|x64.Build.0 = Release|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Debug|x64.ActiveCfg = Debug|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Debug|x64.Build.0 = Debug|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Release|x64.ActiveCfg = Release|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Release|x64.Build.0 = Release|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Debug|x64.ActiveCfg = Debug|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Debug|x64.Build.0 = Debug|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Release|x64.ActiveCfg = Release|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Release|x64.Build.0 = Release|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Debug|x64.ActiveCfg = Debug|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Debug|x64.Build.0 = Debug|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Release|x64.ActiveCfg = Release|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Release|x64.Build.0 = Release|x64
+ {956A3BCB-1113-3FD7-87CC-908C6073E1FB}.Debug|x64.ActiveCfg = Debug|x64
+ {956A3BCB-1113-3FD7-87CC-908C6073E1FB}.Debug|x64.Build.0 = Debug|x64
+ {956A3BCB-1113-3FD7-87CC-908C6073E1FB}.Release|x64.ActiveCfg = Release|x64
+ {956A3BCB-1113-3FD7-87CC-908C6073E1FB}.Release|x64.Build.0 = Release|x64
+ {88C96A70-4C80-3CAC-9EE4-7B95DB194D39}.Debug|x64.ActiveCfg = Debug|x64
+ {88C96A70-4C80-3CAC-9EE4-7B95DB194D39}.Debug|x64.Build.0 = Debug|x64
+ {88C96A70-4C80-3CAC-9EE4-7B95DB194D39}.Release|x64.ActiveCfg = Release|x64
+ {88C96A70-4C80-3CAC-9EE4-7B95DB194D39}.Release|x64.Build.0 = Release|x64
+ {1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF}.Debug|x64.ActiveCfg = Debug|x64
+ {1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF}.Debug|x64.Build.0 = Debug|x64
+ {1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF}.Release|x64.ActiveCfg = Release|x64
+ {1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF}.Release|x64.Build.0 = Release|x64
+ {1B4D7DF7-FCDB-342F-9D20-F9E0262B6964}.Debug|x64.ActiveCfg = Debug|x64
+ {1B4D7DF7-FCDB-342F-9D20-F9E0262B6964}.Debug|x64.Build.0 = Debug|x64
+ {1B4D7DF7-FCDB-342F-9D20-F9E0262B6964}.Release|x64.ActiveCfg = Release|x64
+ {1B4D7DF7-FCDB-342F-9D20-F9E0262B6964}.Release|x64.Build.0 = Release|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Debug|x64.ActiveCfg = Debug|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Debug|x64.Build.0 = Debug|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Release|x64.ActiveCfg = Release|x64
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858}.Release|x64.Build.0 = Release|x64
+ {9E3BFB5B-D84A-3E8C-8B84-566073AC0DE3}.Debug|x64.ActiveCfg = Debug|x64
+ {9E3BFB5B-D84A-3E8C-8B84-566073AC0DE3}.Release|x64.ActiveCfg = Release|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Debug|x64.ActiveCfg = Debug|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Debug|x64.Build.0 = Debug|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Release|x64.ActiveCfg = Release|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Release|x64.Build.0 = Release|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Debug|x64.ActiveCfg = Debug|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Debug|x64.Build.0 = Debug|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Release|x64.ActiveCfg = Release|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Release|x64.Build.0 = Release|x64
+ {96492351-1995-3B6B-A091-E7F4918E443B}.Debug|x64.ActiveCfg = Debug|x64
+ {96492351-1995-3B6B-A091-E7F4918E443B}.Debug|x64.Build.0 = Debug|x64
+ {96492351-1995-3B6B-A091-E7F4918E443B}.Release|x64.ActiveCfg = Release|x64
+ {96492351-1995-3B6B-A091-E7F4918E443B}.Release|x64.Build.0 = Release|x64
+ {049A6034-6699-3DDF-BF15-47C981793305}.Debug|x64.ActiveCfg = Debug|x64
+ {049A6034-6699-3DDF-BF15-47C981793305}.Debug|x64.Build.0 = Debug|x64
+ {049A6034-6699-3DDF-BF15-47C981793305}.Release|x64.ActiveCfg = Release|x64
+ {049A6034-6699-3DDF-BF15-47C981793305}.Release|x64.Build.0 = Release|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Debug|x64.ActiveCfg = Debug|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Debug|x64.Build.0 = Debug|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Release|x64.ActiveCfg = Release|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Release|x64.Build.0 = Release|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Debug|x64.ActiveCfg = Debug|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Debug|x64.Build.0 = Debug|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Release|x64.ActiveCfg = Release|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Release|x64.Build.0 = Release|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Debug|x64.ActiveCfg = Debug|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Debug|x64.Build.0 = Debug|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Release|x64.ActiveCfg = Release|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Release|x64.Build.0 = Release|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Debug|x64.ActiveCfg = Debug|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Debug|x64.Build.0 = Debug|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Release|x64.ActiveCfg = Release|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Release|x64.Build.0 = Release|x64
+ {8EC2136C-E0E9-3340-86AE-5463BAA01ABB}.Debug|x64.ActiveCfg = Debug|x64
+ {8EC2136C-E0E9-3340-86AE-5463BAA01ABB}.Release|x64.ActiveCfg = Release|x64
+ {BC5A59A0-B151-32E5-9090-B06A8D88F902}.Debug|x64.ActiveCfg = Debug|x64
+ {BC5A59A0-B151-32E5-9090-B06A8D88F902}.Debug|x64.Build.0 = Debug|x64
+ {BC5A59A0-B151-32E5-9090-B06A8D88F902}.Release|x64.ActiveCfg = Release|x64
+ {BC5A59A0-B151-32E5-9090-B06A8D88F902}.Release|x64.Build.0 = Release|x64
+ {5A8F73B9-27CC-3054-8674-0B1ACFDA170B}.Debug|x64.ActiveCfg = Debug|x64
+ {5A8F73B9-27CC-3054-8674-0B1ACFDA170B}.Debug|x64.Build.0 = Debug|x64
+ {5A8F73B9-27CC-3054-8674-0B1ACFDA170B}.Release|x64.ActiveCfg = Release|x64
+ {5A8F73B9-27CC-3054-8674-0B1ACFDA170B}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {93979AE4-08B2-324E-AACE-6FFC302D2505} = {81FD0586-FEDF-33EE-85EC-35FE7EC8667D}
- {3E565C6C-4B64-3128-A009-4A91C77E00E5} = {966AFC8E-3F99-3406-B1A4-F429063F7CD0}
- {996E1D94-926B-3585-9466-CDB769D7188C} = {966AFC8E-3F99-3406-B1A4-F429063F7CD0}
- {9B24984C-F78C-3EF7-907B-2B0D2CDB5695} = {6E04BB9F-C9BB-327E-82DE-CD3AD32C87B3}
- {74318028-369F-3EA0-8A99-A341020416D6} = {2202E8C3-74C3-38E3-B019-05A731F62855}
- {B49D30BB-AC67-3799-8A4E-B5F883BB229B} = {2202E8C3-74C3-38E3-B019-05A731F62855}
- {3915EFF3-638D-330F-BD1B-9E8D85D2FB1F} = {2202E8C3-74C3-38E3-B019-05A731F62855}
- {E22D780F-96F6-3714-B708-4875F7F8F6FF} = {2202E8C3-74C3-38E3-B019-05A731F62855}
- {033737D3-CE97-35DD-B911-848DB912467D} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {75B0856F-5AC7-31E6-91C6-AD88B3745281} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {15CEFCBE-B270-3849-9E1F-A5A35F5374C3} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {413EAFA1-B915-3FB9-8065-261CD1875597} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {F353E330-643D-353C-9031-52ED11A7E914} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {36E309E0-4447-33C6-92DA-FFF8793CF0A6} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC} = {F5313650-26B7-3FD1-949B-778051D0087B}
- {5F3076C6-2971-39DF-A3BE-A78FB0411AAE} = {F5313650-26B7-3FD1-949B-778051D0087B}
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327} = {F5313650-26B7-3FD1-949B-778051D0087B}
- {F6702FDF-019F-3B2F-9CAD-15C15CD4F871} = {F5313650-26B7-3FD1-949B-778051D0087B}
- {62B58F28-8443-346E-8A29-F389A2C9CBAD} = {F5313650-26B7-3FD1-949B-778051D0087B}
- {CE4E38AC-2FE5-356C-860E-C894AAC00DFF} = {8351EE33-11D6-3363-BCC3-4F708BF29B48}
- {14CBFE6C-4A95-3390-846D-C5B8E0B631CB} = {6D288011-32DF-3CEE-8379-7787990F36DF}
- {635B11E4-0F2D-368F-929C-945C5EF943FD} = {9DC8B69F-25E1-3EC7-A575-F725CB4AEB29}
- {4BDD6A5B-67E0-33DF-950C-4AD0ABB1D729} = {9DC8B69F-25E1-3EC7-A575-F725CB4AEB29}
- {32940355-6B50-33D6-BDC8-56E00F8D88BC} = {57C8905F-4FBE-3D7E-89D7-E8CB65A87A4C}
+ {B2B07DA3-A388-307E-A283-3904C31F1CE2} = {5C0043D5-C4A7-3794-80B8-1838D50364AB}
+ {2EA2C687-489E-32F2-8D89-B90620301359} = {F5E3A037-65B6-315C-A12F-41E06C983058}
+ {BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6} = {F5E3A037-65B6-315C-A12F-41E06C983058}
+ {B9E0EFB7-8E1B-303D-9222-13F7A82B7858} = {F8AB40FC-4ECD-3274-BC5B-F9E15E2564FE}
+ {B81F13DD-ACFB-3AB7-A071-3AD849D68E5C} = {F65894DC-9636-3FA9-9068-572DBF7F5126}
+ {956A3BCB-1113-3FD7-87CC-908C6073E1FB} = {F65894DC-9636-3FA9-9068-572DBF7F5126}
+ {88C96A70-4C80-3CAC-9EE4-7B95DB194D39} = {F65894DC-9636-3FA9-9068-572DBF7F5126}
+ {1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF} = {F65894DC-9636-3FA9-9068-572DBF7F5126}
+ {9E3BFB5B-D84A-3E8C-8B84-566073AC0DE3} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {2F264302-EFA1-396F-AD64-0AC05E686177} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {07107D83-83B6-3BE6-8827-20DB1D90942F} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {3E491021-A61D-35E3-A471-EE7FD2DCB291}
+ {AC311772-F314-3373-B869-71CD6C30634D} = {3E491021-A61D-35E3-A471-EE7FD2DCB291}
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18} = {3E491021-A61D-35E3-A471-EE7FD2DCB291}
+ {C672D2D1-E638-3565-87EC-11172BD73995} = {3E491021-A61D-35E3-A471-EE7FD2DCB291}
+ {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240} = {3E491021-A61D-35E3-A471-EE7FD2DCB291}
+ {8EC2136C-E0E9-3340-86AE-5463BAA01ABB} = {5C70A9BE-0B12-37F5-AC43-A348866101A1}
+ {F5F127F5-2128-30AA-BCB8-935979A13F41} = {FFD56AC5-F278-31C7-8A34-58F29694034D}
+ {4B70B7B0-44A0-31A9-A8DF-2367BBB103F9} = {E2FEE265-4C4F-3559-A383-9FC680626E2D}
+ {BC5A59A0-B151-32E5-9090-B06A8D88F902} = {E2FEE265-4C4F-3559-A383-9FC680626E2D}
+ {5A8F73B9-27CC-3054-8674-0B1ACFDA170B} = {E2FEE265-4C4F-3559-A383-9FC680626E2D}
+ {1B4D7DF7-FCDB-342F-9D20-F9E0262B6964} = {5B0DE4D9-2EC7-3B5E-8EFD-A4B4D9B78E1E}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {52AFCD95-923B-3D02-AD06-7AA636E46A75}
+ SolutionGuid = {7F649050-97C1-31C4-BC48-C88A7B5644B3}
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.vcxproj
index 074d58333f3..6696a0a2b39 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{996E1D94-926B-3585-9466-CDB769D7188C}</ProjectGuid>
+ <ProjectGuid>{BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -64,6 +64,7 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -96,10 +97,12 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -118,110 +121,110 @@
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="$(SolutionDir)src\Common\CPUID.cpp" />
- <ClCompile Include="$(SolutionDir)src\Common\Configurator.cpp" />
- <ClCompile Include="$(SolutionDir)src\Common\Debug.cpp" />
- <ClCompile Include="$(SolutionDir)src\Common\Half.cpp" />
- <ClCompile Include="$(SolutionDir)src\Common\Math.cpp" />
- <ClCompile Include="$(SolutionDir)src\Common\Memory.cpp" />
- <ClCompile Include="$(SolutionDir)src\Common\Resource.cpp" />
- <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp" />
- <ClCompile Include="$(SolutionDir)src\Common\Socket.cpp" />
- <ClCompile Include="$(SolutionDir)src\Common\Thread.cpp" />
- <ClCompile Include="$(SolutionDir)src\Common\Timer.cpp" />
- <ClInclude Include="$(SolutionDir)src\Common\Version.h" />
+ <ClCompile Include="$(SolutionDir)src\Common\CPUID.cpp" />
<ClInclude Include="$(SolutionDir)src\Common\CPUID.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Common\Configurator.cpp" />
<ClInclude Include="$(SolutionDir)src\Common\Configurator.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Common\Debug.cpp" />
<ClInclude Include="$(SolutionDir)src\Common\Debug.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Common\Half.cpp" />
<ClInclude Include="$(SolutionDir)src\Common\Half.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Common\Math.cpp" />
<ClInclude Include="$(SolutionDir)src\Common\Math.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Common\Memory.cpp" />
<ClInclude Include="$(SolutionDir)src\Common\Memory.hpp" />
<ClInclude Include="$(SolutionDir)src\Common\MutexLock.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Common\Resource.cpp" />
<ClInclude Include="$(SolutionDir)src\Common\Resource.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp" />
<ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Common\Socket.cpp" />
<ClInclude Include="$(SolutionDir)src\Common\Socket.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Common\Thread.cpp" />
<ClInclude Include="$(SolutionDir)src\Common\Thread.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Common\Timer.cpp" />
<ClInclude Include="$(SolutionDir)src\Common\Timer.hpp" />
<ClInclude Include="$(SolutionDir)src\Common\Types.hpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\Blitter.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\Clipper.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\Color.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\Context.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\ETC_Decoder.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\Matrix.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\PixelProcessor.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\Plane.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\Point.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\QuadRasterizer.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\Renderer.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\Sampler.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\SetupProcessor.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\Surface.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\TextureStage.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\Vector.cpp" />
- <ClCompile Include="$(SolutionDir)src\Renderer\VertexProcessor.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Common\Version.h" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\Blitter.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Blitter.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\Clipper.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Clipper.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\Color.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Color.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\Context.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Context.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\ETC_Decoder.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\ETC_Decoder.hpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\LRUCache.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\Matrix.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Matrix.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\PixelProcessor.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\PixelProcessor.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\Plane.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Plane.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\Point.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Point.hpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Polygon.hpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Primitive.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\QuadRasterizer.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\QuadRasterizer.hpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Rasterizer.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\Renderer.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Renderer.hpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\RoutineCache.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\Sampler.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Sampler.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\SetupProcessor.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\SetupProcessor.hpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Stream.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\Surface.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Surface.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\TextureStage.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\TextureStage.hpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Triangle.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\Vector.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Vector.hpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\Vertex.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Renderer\VertexProcessor.cpp" />
<ClInclude Include="$(SolutionDir)src\Renderer\VertexProcessor.hpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\Constants.cpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\PixelPipeline.cpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\PixelProgram.cpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\PixelRoutine.cpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\PixelShader.cpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\SamplerCore.cpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\SetupRoutine.cpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\Shader.cpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\ShaderCore.cpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\VertexPipeline.cpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\VertexProgram.cpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\VertexRoutine.cpp" />
- <ClCompile Include="$(SolutionDir)src\Shader\VertexShader.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\Constants.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\Constants.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\PixelPipeline.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\PixelPipeline.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\PixelProgram.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\PixelProgram.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\PixelRoutine.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\PixelRoutine.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\PixelShader.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\PixelShader.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\SamplerCore.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\SamplerCore.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\SetupRoutine.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\SetupRoutine.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\Shader.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\Shader.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\ShaderCore.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\ShaderCore.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\VertexPipeline.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\VertexPipeline.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\VertexProgram.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\VertexProgram.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\VertexRoutine.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\VertexRoutine.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Shader\VertexShader.cpp" />
<ClInclude Include="$(SolutionDir)src\Shader\VertexShader.hpp" />
- <ClCompile Include="$(SolutionDir)src\Main\Config.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Main\Config.cpp" />
<ClInclude Include="$(SolutionDir)src\Main\Config.hpp" />
- <ClCompile Include="$(SolutionDir)src\Main\FrameBuffer.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Main\FrameBuffer.cpp" />
<ClInclude Include="$(SolutionDir)src\Main\FrameBuffer.hpp" />
- <ClCompile Include="$(SolutionDir)src\Main\SwiftConfig.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Main\SwiftConfig.cpp" />
<ClInclude Include="$(SolutionDir)src\Main\SwiftConfig.hpp" />
- <ClCompile Include="$(SolutionDir)src\Main\FrameBufferDD.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Main\FrameBufferDD.cpp" />
<ClInclude Include="$(SolutionDir)src\Main\FrameBufferDD.hpp" />
- <ClCompile Include="$(SolutionDir)src\Main\FrameBufferGDI.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Main\FrameBufferGDI.cpp" />
<ClInclude Include="$(SolutionDir)src\Main\FrameBufferGDI.hpp" />
- <ClCompile Include="$(SolutionDir)src\Main\FrameBufferWin.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Main\FrameBufferWin.cpp" />
<ClInclude Include="$(SolutionDir)src\Main\FrameBufferWin.hpp" />
</ItemGroup>
<ItemGroup>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.vcxproj.filters
index 99d6879ce2c..0d4956e7f60 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/SwiftShader.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)src\Common\CPUID.cpp">
@@ -144,9 +144,6 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
- <ClInclude Include="$(SolutionDir)src\Common\Version.h">
- <Filter>src\Common</Filter>
- </ClInclude>
<ClInclude Include="$(SolutionDir)src\Common\CPUID.hpp">
<Filter>src\Common</Filter>
</ClInclude>
@@ -186,6 +183,9 @@
<ClInclude Include="$(SolutionDir)src\Common\Types.hpp">
<Filter>src\Common</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Common\Version.h">
+ <Filter>src\Common</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)src\Renderer\Blitter.hpp">
<Filter>src\Renderer</Filter>
</ClInclude>
@@ -320,20 +320,20 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
+ <Filter Include="src">
+ <UniqueIdentifier>{1D32CFC4-3897-312A-881D-1722E268FA32}</UniqueIdentifier>
+ </Filter>
<Filter Include="src\Common">
- <UniqueIdentifier>{11C36704-F487-3E48-94BD-78A5C5D796BD}</UniqueIdentifier>
+ <UniqueIdentifier>{A5044873-798E-3043-A230-A04C929E232C}</UniqueIdentifier>
</Filter>
<Filter Include="src\Main">
- <UniqueIdentifier>{3C9F38B6-307F-3432-AF88-723555B88F6E}</UniqueIdentifier>
+ <UniqueIdentifier>{E932C17D-A7C0-39E3-825A-16AC820D5D5B}</UniqueIdentifier>
</Filter>
<Filter Include="src\Renderer">
- <UniqueIdentifier>{5717B640-0503-3C5F-9414-3077EBFAFCB8}</UniqueIdentifier>
+ <UniqueIdentifier>{3B1B7D30-F6FA-3C0B-BCD1-C45BB3DB9639}</UniqueIdentifier>
</Filter>
<Filter Include="src\Shader">
- <UniqueIdentifier>{2964277E-BF3D-3C43-9745-26D3BF41B62B}</UniqueIdentifier>
- </Filter>
- <Filter Include="src">
- <UniqueIdentifier>{13574A07-B880-3431-8401-B66983F72A05}</UniqueIdentifier>
+ <UniqueIdentifier>{BDC888B5-165C-33B9-9D0A-B8FD19D37B60}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/unittests.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/gles-unittests.vcxproj
index 3523398624d..fef45b79246 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/unittests.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/gles-unittests.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,11 +14,11 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{4BDD6A5B-67E0-33DF-950C-4AD0ABB1D729}</ProjectGuid>
+ <ProjectGuid>{BC5A59A0-B151-32E5-9090-B06A8D88F902}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
- <ProjectName>unittests</ProjectName>
+ <ProjectName>gles-unittests</ProjectName>
<VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
@@ -42,14 +42,14 @@
<PropertyGroup>
<_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">unittests.dir\Debug\</IntDir>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">unittests</TargetName>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">gles-unittests.dir\Debug\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">gles-unittests</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.exe</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</GenerateManifest>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">unittests.dir\Release\</IntDir>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">unittests</TargetName>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">gles-unittests.dir\Release\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">gles-unittests</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.exe</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</GenerateManifest>
@@ -68,6 +68,7 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;STANDALONE;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -90,8 +91,8 @@
<AdditionalOptions>%(AdditionalOptions) /machine:x64</AdditionalOptions>
<GenerateDebugInformation>true</GenerateDebugInformation>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
- <ImportLibrary>$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/unittests.lib</ImportLibrary>
- <ProgramDataBaseFile>$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/unittests.pdb</ProgramDataBaseFile>
+ <ImportLibrary>$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/gles-unittests.lib</ImportLibrary>
+ <ProgramDataBaseFile>$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/gles-unittests.pdb</ProgramDataBaseFile>
<SubSystem>Console</SubSystem>
</Link>
<ProjectReference>
@@ -110,10 +111,12 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;STANDALONE;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;STANDALONE;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -133,8 +136,8 @@
<AdditionalOptions>%(AdditionalOptions) /machine:x64</AdditionalOptions>
<GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
- <ImportLibrary>$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/unittests.lib</ImportLibrary>
- <ProgramDataBaseFile>$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/unittests.pdb</ProgramDataBaseFile>
+ <ImportLibrary>$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/gles-unittests.lib</ImportLibrary>
+ <ProgramDataBaseFile>$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/gles-unittests.pdb</ProgramDataBaseFile>
<SubSystem>Console</SubSystem>
</Link>
<ProjectReference>
@@ -142,34 +145,46 @@
</ProjectReference>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="$(SolutionDir)tests\GLESUnitTests\main.cpp" />
- <ClCompile Include="$(SolutionDir)tests\GLESUnitTests\unittests.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\googletest\googletest\src\gtest-all.cc" />
+ <ClCompile Include="$(SolutionDir)tests\GLESUnitTests\main.cpp" />
+ <ClCompile Include="$(SolutionDir)tests\GLESUnitTests\unittests.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\googletest\googletest\src\gtest-all.cc" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\GLCompiler.vcxproj">
- <Project>{74318028-369F-3EA0-8A99-A341020416D6}</Project>
+ <Project>{B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}</Project>
<Name>GLCompiler</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\ReactorLLVM.vcxproj">
- <Project>{3E565C6C-4B64-3128-A009-4A91C77E00E5}</Project>
+ <Project>{2EA2C687-489E-32F2-8D89-B90620301359}</Project>
<Name>ReactorLLVM</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\SwiftShader.vcxproj">
- <Project>{996E1D94-926B-3585-9466-CDB769D7188C}</Project>
+ <Project>{BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}</Project>
<Name>SwiftShader</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\libEGL.vcxproj">
- <Project>{B49D30BB-AC67-3799-8A4E-B5F883BB229B}</Project>
+ <Project>{956A3BCB-1113-3FD7-87CC-908C6073E1FB}</Project>
<Name>libEGL</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\libGLESv2.vcxproj">
- <Project>{E22D780F-96F6-3714-B708-4875F7F8F6FF}</Project>
+ <Project>{1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF}</Project>
<Name>libGLESv2</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\llvm.vcxproj">
- <Project>{9B24984C-F78C-3EF7-907B-2B0D2CDB5695}</Project>
+ <Project>{B9E0EFB7-8E1B-303D-9222-13F7A82B7858}</Project>
<Name>llvm</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/unittests.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/gles-unittests.vcxproj.filters
index 69fd73979c7..b02c9e428ed 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/unittests.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/gles-unittests.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)tests\GLESUnitTests\main.cpp">
@@ -13,7 +13,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="Source Files">
- <UniqueIdentifier>{2F259CF2-FDFE-365E-920F-2228D7410C8D}</UniqueIdentifier>
+ <UniqueIdentifier>{307AEBE6-F217-340D-9701-0167F1D37482}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libEGL.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libEGL.vcxproj
index 44633dd6a7c..9145675cf5e 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libEGL.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libEGL.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{B49D30BB-AC67-3799-8A4E-B5F883BB229B}</ProjectGuid>
+ <ProjectGuid>{956A3BCB-1113-3FD7-87CC-908C6073E1FB}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -68,6 +68,7 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;EGL_EGLEXT_PROTOTYPES; EGLAPI=; NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Debug";libEGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -91,9 +92,9 @@
if %errorlevel% neq 0 goto :cmEnd
"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/libEGL.dll" "$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/translator/lib64EGL_translator.dll"
if %errorlevel% neq 0 goto :cmEnd
-"cmake" -E make_directory $(SolutionDir)out/Windows/
+"cmake" -E make_directory "$(SolutionDir)build/Visual Studio 15 2017 Win64/Windows/"
if %errorlevel% neq 0 goto :cmEnd
-"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/libEGL.dll" $(SolutionDir)out/Windows/
+"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/libEGL.dll" "$(SolutionDir)build/Visual Studio 15 2017 Win64/Windows/"
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
@@ -129,10 +130,12 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;EGL_EGLEXT_PROTOTYPES; EGLAPI=; NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Release";libEGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;EGL_EGLEXT_PROTOTYPES; EGLAPI=; NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR=\"Release\";libEGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -153,9 +156,9 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
if %errorlevel% neq 0 goto :cmEnd
"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/libEGL.dll" "$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/translator/lib64EGL_translator.dll"
if %errorlevel% neq 0 goto :cmEnd
-"cmake" -E make_directory $(SolutionDir)out/Windows/
+"cmake" -E make_directory "$(SolutionDir)build/Visual Studio 15 2017 Win64/Windows/"
if %errorlevel% neq 0 goto :cmEnd
-"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/libEGL.dll" $(SolutionDir)out/Windows/
+"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/libEGL.dll" "$(SolutionDir)build/Visual Studio 15 2017 Win64/Windows/"
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
@@ -180,27 +183,6 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
</ProjectReference>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="$(SolutionDir)src\OpenGL\libEGL\Config.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libEGL\Display.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libEGL\Surface.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libEGL\libEGL.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libEGL\main.cpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Config.h" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Display.h" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\main.h" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\resource.h" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Context.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\OSXUtils.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Surface.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Sync.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Texture.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\libEGL.hpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\Object.cpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Object.hpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\debug.cpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\debug.h" />
- <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp" />
- <ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp" />
<ClInclude Include="$(SolutionDir)include\Android\android\api-level.h" />
<ClInclude Include="$(SolutionDir)include\Android\android\sync.h" />
<ClInclude Include="$(SolutionDir)include\Android\cutils\native_handle.h" />
@@ -247,7 +229,28 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<ClInclude Include="$(SolutionDir)include\vulkan\vulkan_xcb.h" />
<ClInclude Include="$(SolutionDir)include\vulkan\vulkan_xlib.h" />
<ClInclude Include="$(SolutionDir)include\vulkan\vulkan_xlib_xrandr.h" />
- <ResourceCompile Include="$(SolutionDir)src\OpenGL\libEGL\libEGL.rc" />
+ <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\Object.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Object.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\debug.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\debug.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libEGL\Config.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Config.h" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Context.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libEGL\Display.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Display.h" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\OSXUtils.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libEGL\Surface.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Surface.hpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Sync.hpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Texture.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libEGL\libEGL.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\libEGL.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libEGL\main.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\main.h" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\resource.h" />
+ <ResourceCompile Include="$(SolutionDir)src\OpenGL\libEGL\libEGL.rc" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libEGL.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libEGL.vcxproj.filters
index c55ddf46033..8cdbd6a8083 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libEGL.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libEGL.vcxproj.filters
@@ -1,6 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
+ <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp">
+ <Filter>src\Common</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\Object.cpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\debug.cpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)src\OpenGL\libEGL\Config.cpp">
<Filter>src\OpenGL\libEGL</Filter>
</ClCompile>
@@ -16,56 +25,8 @@
<ClCompile Include="$(SolutionDir)src\OpenGL\libEGL\main.cpp">
<Filter>src\OpenGL\libEGL</Filter>
</ClCompile>
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\Object.cpp">
- <Filter>src\OpenGL\common</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\debug.cpp">
- <Filter>src\OpenGL\common</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp">
- <Filter>src\Common</Filter>
- </ClCompile>
</ItemGroup>
<ItemGroup>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Config.h">
- <Filter>src\OpenGL\libEGL</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Display.h">
- <Filter>src\OpenGL\libEGL</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\main.h">
- <Filter>src\OpenGL\libEGL</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\resource.h">
- <Filter>src\OpenGL\libEGL</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Context.hpp">
- <Filter>src\OpenGL\libEGL</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\OSXUtils.hpp">
- <Filter>src\OpenGL\libEGL</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Surface.hpp">
- <Filter>src\OpenGL\libEGL</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Sync.hpp">
- <Filter>src\OpenGL\libEGL</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Texture.hpp">
- <Filter>src\OpenGL\libEGL</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\libEGL.hpp">
- <Filter>src\OpenGL\libEGL</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Object.hpp">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\debug.h">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp">
- <Filter>src\Common</Filter>
- </ClInclude>
<ClInclude Include="$(SolutionDir)include\Android\android\api-level.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -204,6 +165,45 @@
<ClInclude Include="$(SolutionDir)include\vulkan\vulkan_xlib_xrandr.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp">
+ <Filter>src\Common</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Object.hpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\debug.h">
+ <Filter>src\OpenGL\common</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Config.h">
+ <Filter>src\OpenGL\libEGL</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Context.hpp">
+ <Filter>src\OpenGL\libEGL</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Display.h">
+ <Filter>src\OpenGL\libEGL</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\OSXUtils.hpp">
+ <Filter>src\OpenGL\libEGL</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Surface.hpp">
+ <Filter>src\OpenGL\libEGL</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Sync.hpp">
+ <Filter>src\OpenGL\libEGL</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\Texture.hpp">
+ <Filter>src\OpenGL\libEGL</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\libEGL.hpp">
+ <Filter>src\OpenGL\libEGL</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\main.h">
+ <Filter>src\OpenGL\libEGL</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libEGL\resource.h">
+ <Filter>src\OpenGL\libEGL</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="$(SolutionDir)src\OpenGL\libEGL\libEGL.rc">
@@ -212,22 +212,22 @@
</ItemGroup>
<ItemGroup>
<Filter Include="Header Files">
- <UniqueIdentifier>{06D2D69E-DE55-30BE-A8A1-FE6C66324860}</UniqueIdentifier>
+ <UniqueIdentifier>{BC4B8AD2-A096-36EC-A16A-CFEE34C3D52C}</UniqueIdentifier>
</Filter>
<Filter Include="src">
- <UniqueIdentifier>{13574A07-B880-3431-8401-B66983F72A05}</UniqueIdentifier>
+ <UniqueIdentifier>{1D32CFC4-3897-312A-881D-1722E268FA32}</UniqueIdentifier>
</Filter>
<Filter Include="src\Common">
- <UniqueIdentifier>{11C36704-F487-3E48-94BD-78A5C5D796BD}</UniqueIdentifier>
+ <UniqueIdentifier>{A5044873-798E-3043-A230-A04C929E232C}</UniqueIdentifier>
</Filter>
<Filter Include="src\OpenGL">
- <UniqueIdentifier>{51160DCB-631F-348A-A69D-7F054A400827}</UniqueIdentifier>
+ <UniqueIdentifier>{290F2129-951C-3257-8777-9DC8BFFF50AF}</UniqueIdentifier>
</Filter>
<Filter Include="src\OpenGL\common">
- <UniqueIdentifier>{004AF498-11B5-3CDE-B8E3-7CCE434B2929}</UniqueIdentifier>
+ <UniqueIdentifier>{F51CD29B-086E-30A5-B7F8-70E7D3FCA481}</UniqueIdentifier>
</Filter>
<Filter Include="src\OpenGL\libEGL">
- <UniqueIdentifier>{C37C965A-83A0-359C-B12C-21A1EAFCC071}</UniqueIdentifier>
+ <UniqueIdentifier>{6968CDD7-723B-375B-BD80-23AC7BFC455C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLES_CM.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLES_CM.vcxproj
index df5927db34d..41dffc42725 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLES_CM.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLES_CM.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{3915EFF3-638D-330F-BD1B-9E8D85D2FB1F}</ProjectGuid>
+ <ProjectGuid>{88C96A70-4C80-3CAC-9EE4-7B95DB194D39}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -68,6 +68,7 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;GL_GLEXT_PROTOTYPES; EGLAPI=; GL_API=; GL_APICALL=; GLAPI=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Debug";libGLES_CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -125,10 +126,12 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;GL_GLEXT_PROTOTYPES; EGLAPI=; GL_API=; GL_APICALL=; GLAPI=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Release";libGLES_CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;GL_GLEXT_PROTOTYPES; EGLAPI=; GL_API=; GL_APICALL=; GLAPI=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR=\"Release\";libGLES_CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -172,66 +175,74 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
</ProjectReference>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Buffer.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Context.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Device.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Framebuffer.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\IndexDataManager.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Renderbuffer.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\ResourceManager.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Texture.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\VertexDataManager.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\libGLES_CM.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\main.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\utilities.cpp" />
+ <ClInclude Include="$(SolutionDir)include\GLES\gl.h" />
+ <ClInclude Include="$(SolutionDir)include\GLES\glext.h" />
+ <ClInclude Include="$(SolutionDir)include\GLES\glplatform.h" />
+ <ClInclude Include="$(SolutionDir)include\KHR\khrplatform.h" />
+ <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\Image.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Image.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\MatrixStack.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\MatrixStack.hpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\NameSpace.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\Object.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Object.hpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Surface.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\debug.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\debug.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Buffer.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\Buffer.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Context.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\Context.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Device.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\Device.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Framebuffer.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\Framebuffer.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\IndexDataManager.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\IndexDataManager.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Renderbuffer.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\Renderbuffer.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\ResourceManager.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\ResourceManager.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Texture.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\Texture.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\VertexDataManager.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\VertexDataManager.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\libGLES_CM.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\libGLES_CM.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\main.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\main.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\mathutil.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\resource.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\utilities.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\utilities.h" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\Device.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\libGLES_CM.hpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\Image.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\MatrixStack.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\Object.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\debug.cpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\debug.h" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Image.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\MatrixStack.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\NameSpace.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Object.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Surface.hpp" />
- <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp" />
- <ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp" />
- <ClInclude Include="$(SolutionDir)include\KHR\khrplatform.h" />
- <ClInclude Include="$(SolutionDir)include\GLES\gl.h" />
- <ClInclude Include="$(SolutionDir)include\GLES\glext.h" />
- <ClInclude Include="$(SolutionDir)include\GLES\glplatform.h" />
- <ResourceCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\libGLES_CM.rc" />
+ <ResourceCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\libGLES_CM.rc" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\GLCompiler.vcxproj">
- <Project>{74318028-369F-3EA0-8A99-A341020416D6}</Project>
+ <Project>{B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}</Project>
<Name>GLCompiler</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\ReactorLLVM.vcxproj">
- <Project>{3E565C6C-4B64-3128-A009-4A91C77E00E5}</Project>
+ <Project>{2EA2C687-489E-32F2-8D89-B90620301359}</Project>
<Name>ReactorLLVM</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\SwiftShader.vcxproj">
- <Project>{996E1D94-926B-3585-9466-CDB769D7188C}</Project>
+ <Project>{BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}</Project>
<Name>SwiftShader</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\llvm.vcxproj">
- <Project>{9B24984C-F78C-3EF7-907B-2B0D2CDB5695}</Project>
+ <Project>{B9E0EFB7-8E1B-303D-9222-13F7A82B7858}</Project>
<Name>llvm</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLES_CM.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLES_CM.vcxproj.filters
index c1e685affb8..2cbbd34bf86 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLES_CM.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLES_CM.vcxproj.filters
@@ -1,6 +1,21 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
+ <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp">
+ <Filter>src\Common</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\Image.cpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\MatrixStack.cpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\Object.cpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\debug.cpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\Buffer.cpp">
<Filter>src\OpenGL\libGLES_CM</Filter>
</ClCompile>
@@ -37,29 +52,50 @@
<ClCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\utilities.cpp">
<Filter>src\OpenGL\libGLES_CM</Filter>
</ClCompile>
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\Image.cpp">
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="$(SolutionDir)include\GLES\gl.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)include\GLES\glext.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)include\GLES\glplatform.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)include\KHR\khrplatform.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp">
+ <Filter>src\Common</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Image.hpp">
<Filter>src\OpenGL\common</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\MatrixStack.cpp">
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\MatrixStack.hpp">
<Filter>src\OpenGL\common</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\Object.cpp">
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\NameSpace.hpp">
<Filter>src\OpenGL\common</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\debug.cpp">
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Object.hpp">
<Filter>src\OpenGL\common</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp">
- <Filter>src\Common</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Surface.hpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\debug.h">
+ <Filter>src\OpenGL\common</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\Buffer.h">
<Filter>src\OpenGL\libGLES_CM</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\Context.h">
<Filter>src\OpenGL\libGLES_CM</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\Device.hpp">
+ <Filter>src\OpenGL\libGLES_CM</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\Framebuffer.h">
<Filter>src\OpenGL\libGLES_CM</Filter>
</ClInclude>
@@ -78,6 +114,9 @@
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\VertexDataManager.h">
<Filter>src\OpenGL\libGLES_CM</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\libGLES_CM.hpp">
+ <Filter>src\OpenGL\libGLES_CM</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\main.h">
<Filter>src\OpenGL\libGLES_CM</Filter>
</ClInclude>
@@ -90,45 +129,6 @@
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\utilities.h">
<Filter>src\OpenGL\libGLES_CM</Filter>
</ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\Device.hpp">
- <Filter>src\OpenGL\libGLES_CM</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libGLES_CM\libGLES_CM.hpp">
- <Filter>src\OpenGL\libGLES_CM</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\debug.h">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Image.hpp">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\MatrixStack.hpp">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\NameSpace.hpp">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Object.hpp">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Surface.hpp">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp">
- <Filter>src\Common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)include\KHR\khrplatform.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)include\GLES\gl.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)include\GLES\glext.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)include\GLES\glplatform.h">
- <Filter>Header Files</Filter>
- </ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="$(SolutionDir)src\OpenGL\libGLES_CM\libGLES_CM.rc">
@@ -136,23 +136,23 @@
</ResourceCompile>
</ItemGroup>
<ItemGroup>
- <Filter Include="src\OpenGL\common">
- <UniqueIdentifier>{004AF498-11B5-3CDE-B8E3-7CCE434B2929}</UniqueIdentifier>
- </Filter>
- <Filter Include="src\OpenGL\libGLES_CM">
- <UniqueIdentifier>{59A27B28-963D-3B21-9F87-062C74160C7D}</UniqueIdentifier>
- </Filter>
<Filter Include="Header Files">
- <UniqueIdentifier>{06D2D69E-DE55-30BE-A8A1-FE6C66324860}</UniqueIdentifier>
+ <UniqueIdentifier>{BC4B8AD2-A096-36EC-A16A-CFEE34C3D52C}</UniqueIdentifier>
</Filter>
<Filter Include="src">
- <UniqueIdentifier>{13574A07-B880-3431-8401-B66983F72A05}</UniqueIdentifier>
+ <UniqueIdentifier>{1D32CFC4-3897-312A-881D-1722E268FA32}</UniqueIdentifier>
</Filter>
<Filter Include="src\Common">
- <UniqueIdentifier>{11C36704-F487-3E48-94BD-78A5C5D796BD}</UniqueIdentifier>
+ <UniqueIdentifier>{A5044873-798E-3043-A230-A04C929E232C}</UniqueIdentifier>
</Filter>
<Filter Include="src\OpenGL">
- <UniqueIdentifier>{51160DCB-631F-348A-A69D-7F054A400827}</UniqueIdentifier>
+ <UniqueIdentifier>{290F2129-951C-3257-8777-9DC8BFFF50AF}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\OpenGL\common">
+ <UniqueIdentifier>{F51CD29B-086E-30A5-B7F8-70E7D3FCA481}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\OpenGL\libGLES_CM">
+ <UniqueIdentifier>{17987D8C-90EE-39D1-9D8D-9B8202A6F273}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLESv2.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLESv2.vcxproj
index d4beb18200e..7ebb20d83d8 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLESv2.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLESv2.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{E22D780F-96F6-3714-B708-4875F7F8F6FF}</ProjectGuid>
+ <ProjectGuid>{1F9E81A7-B091-3D9E-AFDD-0DF597ED1EEF}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -68,6 +68,7 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;GL_GLEXT_PROTOTYPES; GL_API=; GL_APICALL=; GLAPI=; NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Debug";libGLESv2_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -91,9 +92,9 @@
if %errorlevel% neq 0 goto :cmEnd
"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/libGLESv2.dll" "$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/translator/lib64GLES_V2_translator.dll"
if %errorlevel% neq 0 goto :cmEnd
-"cmake" -E make_directory $(SolutionDir)out/Windows/
+"cmake" -E make_directory "$(SolutionDir)build/Visual Studio 15 2017 Win64/Windows/"
if %errorlevel% neq 0 goto :cmEnd
-"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/libGLESv2.dll" $(SolutionDir)out/Windows/
+"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/libGLESv2.dll" "$(SolutionDir)build/Visual Studio 15 2017 Win64/Windows/"
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
@@ -129,10 +130,12 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;GL_GLEXT_PROTOTYPES; GL_API=; GL_APICALL=; GLAPI=; NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Release";libGLESv2_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;GL_GLEXT_PROTOTYPES; GL_API=; GL_APICALL=; GLAPI=; NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR=\"Release\";libGLESv2_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -153,9 +156,9 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
if %errorlevel% neq 0 goto :cmEnd
"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/libGLESv2.dll" "$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/translator/lib64GLES_V2_translator.dll"
if %errorlevel% neq 0 goto :cmEnd
-"cmake" -E make_directory $(SolutionDir)out/Windows/
+"cmake" -E make_directory "$(SolutionDir)build/Visual Studio 15 2017 Win64/Windows/"
if %errorlevel% neq 0 goto :cmEnd
-"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/libGLESv2.dll" $(SolutionDir)out/Windows/
+"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/libGLESv2.dll" "$(SolutionDir)build/Visual Studio 15 2017 Win64/Windows/"
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
@@ -180,84 +183,92 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
</ProjectReference>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Buffer.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Context.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Device.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Fence.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Framebuffer.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\IndexDataManager.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Program.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Query.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Renderbuffer.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\ResourceManager.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Shader.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Texture.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\TransformFeedback.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\VertexArray.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\VertexDataManager.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\entry_points.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\libGLESv2.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\libGLESv3.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\main.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\utilities.cpp" />
+ <ClInclude Include="$(SolutionDir)include\GLES2\gl2.h" />
+ <ClInclude Include="$(SolutionDir)include\GLES2\gl2ext.h" />
+ <ClInclude Include="$(SolutionDir)include\GLES2\gl2platform.h" />
+ <ClInclude Include="$(SolutionDir)include\GLES3\gl3.h" />
+ <ClInclude Include="$(SolutionDir)include\GLES3\gl3platform.h" />
+ <ClInclude Include="$(SolutionDir)include\KHR\khrplatform.h" />
+ <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\Image.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Image.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\MatrixStack.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\MatrixStack.hpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\NameSpace.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\Object.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Object.hpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Surface.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\debug.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\debug.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Buffer.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Buffer.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Context.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Context.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Device.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Device.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Fence.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Fence.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Framebuffer.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Framebuffer.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\IndexDataManager.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\IndexDataManager.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Program.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Program.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Query.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Query.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Renderbuffer.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Renderbuffer.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\ResourceManager.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\ResourceManager.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Sampler.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Shader.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Shader.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Texture.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Texture.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\TransformFeedback.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\TransformFeedback.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\VertexArray.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\VertexArray.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\VertexDataManager.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\VertexDataManager.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\entry_points.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\entry_points.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\libGLESv2.cpp" />
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\libGLESv2.hpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\libGLESv3.cpp" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\main.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\main.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\mathutil.h" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\resource.h" />
+ <ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\utilities.cpp" />
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\utilities.h" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Device.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\libGLESv2.hpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\Image.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\MatrixStack.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\Object.cpp" />
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\debug.cpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\debug.h" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Image.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\MatrixStack.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\NameSpace.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Object.hpp" />
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Surface.hpp" />
- <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp" />
- <ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp" />
- <ClInclude Include="$(SolutionDir)include\KHR\khrplatform.h" />
- <ClInclude Include="$(SolutionDir)include\GLES2\gl2.h" />
- <ClInclude Include="$(SolutionDir)include\GLES2\gl2ext.h" />
- <ClInclude Include="$(SolutionDir)include\GLES2\gl2platform.h" />
- <ClInclude Include="$(SolutionDir)include\GLES3\gl3.h" />
- <ClInclude Include="$(SolutionDir)include\GLES3\gl3platform.h" />
- <ResourceCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\libGLESv2.rc" />
+ <ResourceCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\libGLESv2.rc" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\GLCompiler.vcxproj">
- <Project>{74318028-369F-3EA0-8A99-A341020416D6}</Project>
+ <Project>{B81F13DD-ACFB-3AB7-A071-3AD849D68E5C}</Project>
<Name>GLCompiler</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\ReactorLLVM.vcxproj">
- <Project>{3E565C6C-4B64-3128-A009-4A91C77E00E5}</Project>
+ <Project>{2EA2C687-489E-32F2-8D89-B90620301359}</Project>
<Name>ReactorLLVM</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\SwiftShader.vcxproj">
- <Project>{996E1D94-926B-3585-9466-CDB769D7188C}</Project>
+ <Project>{BFECAAAF-ADE7-36E8-BA23-4ABDE5A1A8B6}</Project>
<Name>SwiftShader</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\llvm.vcxproj">
- <Project>{9B24984C-F78C-3EF7-907B-2B0D2CDB5695}</Project>
+ <Project>{B9E0EFB7-8E1B-303D-9222-13F7A82B7858}</Project>
<Name>llvm</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLESv2.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLESv2.vcxproj.filters
index 3dbfc5bd6f2..79aaf6df3d5 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLESv2.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libGLESv2.vcxproj.filters
@@ -1,6 +1,21 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
+ <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp">
+ <Filter>src\Common</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\Image.cpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\MatrixStack.cpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\Object.cpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\OpenGL\common\debug.cpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\Buffer.cpp">
<Filter>src\OpenGL\libGLESv2</Filter>
</ClCompile>
@@ -61,29 +76,56 @@
<ClCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\utilities.cpp">
<Filter>src\OpenGL\libGLESv2</Filter>
</ClCompile>
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\Image.cpp">
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="$(SolutionDir)include\GLES2\gl2.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)include\GLES2\gl2ext.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)include\GLES2\gl2platform.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)include\GLES3\gl3.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)include\GLES3\gl3platform.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)include\KHR\khrplatform.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp">
+ <Filter>src\Common</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Image.hpp">
<Filter>src\OpenGL\common</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\MatrixStack.cpp">
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\MatrixStack.hpp">
<Filter>src\OpenGL\common</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\Object.cpp">
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\NameSpace.hpp">
<Filter>src\OpenGL\common</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\OpenGL\common\debug.cpp">
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Object.hpp">
<Filter>src\OpenGL\common</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Common\SharedLibrary.cpp">
- <Filter>src\Common</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\Surface.hpp">
+ <Filter>src\OpenGL\common</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\common\debug.h">
+ <Filter>src\OpenGL\common</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Buffer.h">
<Filter>src\OpenGL\libGLESv2</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Context.h">
<Filter>src\OpenGL\libGLESv2</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Device.hpp">
+ <Filter>src\OpenGL\libGLESv2</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Fence.h">
<Filter>src\OpenGL\libGLESv2</Filter>
</ClInclude>
@@ -126,6 +168,9 @@
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\entry_points.h">
<Filter>src\OpenGL\libGLESv2</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\libGLESv2.hpp">
+ <Filter>src\OpenGL\libGLESv2</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\main.h">
<Filter>src\OpenGL\libGLESv2</Filter>
</ClInclude>
@@ -138,51 +183,6 @@
<ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\utilities.h">
<Filter>src\OpenGL\libGLESv2</Filter>
</ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\Device.hpp">
- <Filter>src\OpenGL\libGLESv2</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\libGLESv2\libGLESv2.hpp">
- <Filter>src\OpenGL\libGLESv2</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\debug.h">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Image.hpp">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\MatrixStack.hpp">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\NameSpace.hpp">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Object.hpp">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\OpenGL\common\Surface.hpp">
- <Filter>src\OpenGL\common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Common\SharedLibrary.hpp">
- <Filter>src\Common</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)include\KHR\khrplatform.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)include\GLES2\gl2.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)include\GLES2\gl2ext.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)include\GLES2\gl2platform.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)include\GLES3\gl3.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)include\GLES3\gl3platform.h">
- <Filter>Header Files</Filter>
- </ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="$(SolutionDir)src\OpenGL\libGLESv2\libGLESv2.rc">
@@ -191,22 +191,22 @@
</ItemGroup>
<ItemGroup>
<Filter Include="Header Files">
- <UniqueIdentifier>{06D2D69E-DE55-30BE-A8A1-FE6C66324860}</UniqueIdentifier>
+ <UniqueIdentifier>{BC4B8AD2-A096-36EC-A16A-CFEE34C3D52C}</UniqueIdentifier>
</Filter>
<Filter Include="src">
- <UniqueIdentifier>{13574A07-B880-3431-8401-B66983F72A05}</UniqueIdentifier>
- </Filter>
- <Filter Include="src\OpenGL\common">
- <UniqueIdentifier>{004AF498-11B5-3CDE-B8E3-7CCE434B2929}</UniqueIdentifier>
- </Filter>
- <Filter Include="src\OpenGL\libGLESv2">
- <UniqueIdentifier>{C5E9F0D5-53EB-36BA-9599-94F75E21EAFB}</UniqueIdentifier>
+ <UniqueIdentifier>{1D32CFC4-3897-312A-881D-1722E268FA32}</UniqueIdentifier>
</Filter>
<Filter Include="src\Common">
- <UniqueIdentifier>{11C36704-F487-3E48-94BD-78A5C5D796BD}</UniqueIdentifier>
+ <UniqueIdentifier>{A5044873-798E-3043-A230-A04C929E232C}</UniqueIdentifier>
</Filter>
<Filter Include="src\OpenGL">
- <UniqueIdentifier>{51160DCB-631F-348A-A69D-7F054A400827}</UniqueIdentifier>
+ <UniqueIdentifier>{290F2129-951C-3257-8777-9DC8BFFF50AF}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\OpenGL\common">
+ <UniqueIdentifier>{F51CD29B-086E-30A5-B7F8-70E7D3FCA481}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\OpenGL\libGLESv2">
+ <UniqueIdentifier>{495F672E-50F2-316B-A632-6EC922EA0A84}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libvk_swiftshader.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libvk_swiftshader.vcxproj
index 103b13bb161..717c41d382f 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libvk_swiftshader.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libvk_swiftshader.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{32940355-6B50-33D6-BDC8-56E00F8D88BC}</ProjectGuid>
+ <ProjectGuid>{1B4D7DF7-FCDB-342F-9D20-F9E0262B6964}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -56,7 +56,7 @@
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)src\Vulkan;$(SolutionDir)src;$(SolutionDir)include;$(SolutionDir)third_party\llvm-7.0\configs\windows\include;$(SolutionDir)third_party\llvm-7.0\llvm\include;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\include;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\IR;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;$(SolutionDir)third_party\SPIRV-Headers\include;$(SolutionDir)third_party\SPIRV-Tools\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)include;$(SolutionDir)third_party\llvm-7.0\configs\windows\include;$(SolutionDir)third_party\llvm-7.0\llvm\include;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\include;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\IR;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;$(SolutionDir)third_party\SPIRV-Headers\include;$(SolutionDir)third_party\SPIRV-Tools\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AssemblerListingLocation>Debug/</AssemblerListingLocation>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<CompileAs>CompileAsCpp</CompileAs>
@@ -68,16 +68,17 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Debug";libvk_swiftshader_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR=\"Debug\";libvk_swiftshader_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)src\Vulkan;$(SolutionDir)src;$(SolutionDir)include;$(SolutionDir)third_party\llvm-7.0\configs\windows\include;$(SolutionDir)third_party\llvm-7.0\llvm\include;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\include;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\IR;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;$(SolutionDir)third_party\SPIRV-Headers\include;$(SolutionDir)third_party\SPIRV-Tools\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)include;$(SolutionDir)third_party\llvm-7.0\configs\windows\include;$(SolutionDir)third_party\llvm-7.0\llvm\include;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\include;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\IR;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;$(SolutionDir)third_party\SPIRV-Headers\include;$(SolutionDir)third_party\SPIRV-Tools\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Midl>
- <AdditionalIncludeDirectories>$(SolutionDir)src\Vulkan;$(SolutionDir)src;$(SolutionDir)include;$(SolutionDir)third_party\llvm-7.0\configs\windows\include;$(SolutionDir)third_party\llvm-7.0\llvm\include;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\include;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\IR;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;$(SolutionDir)third_party\SPIRV-Headers\include;$(SolutionDir)third_party\SPIRV-Tools\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)include;$(SolutionDir)third_party\llvm-7.0\configs\windows\include;$(SolutionDir)third_party\llvm-7.0\llvm\include;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\include;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\IR;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;$(SolutionDir)third_party\SPIRV-Headers\include;$(SolutionDir)third_party\SPIRV-Tools\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
<HeaderFileName>%(Filename).h</HeaderFileName>
<TypeLibraryName>%(Filename).tlb</TypeLibraryName>
@@ -91,9 +92,9 @@
if %errorlevel% neq 0 goto :cmEnd
"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/libvk_swiftshader.dll" "$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/translator/lib64Vulkan_translator.dll"
if %errorlevel% neq 0 goto :cmEnd
-"cmake" -E make_directory $(SolutionDir)out/Windows/
+"cmake" -E make_directory "$(SolutionDir)build/Visual Studio 15 2017 Win64/Windows/"
if %errorlevel% neq 0 goto :cmEnd
-"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/libvk_swiftshader.dll" $(SolutionDir)out/Windows/
+"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Debug/libvk_swiftshader.dll" "$(SolutionDir)build/Visual Studio 15 2017 Win64/Windows/"
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
@@ -119,7 +120,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)src\Vulkan;$(SolutionDir)src;$(SolutionDir)include;$(SolutionDir)third_party\llvm-7.0\configs\windows\include;$(SolutionDir)third_party\llvm-7.0\llvm\include;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\include;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\IR;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;$(SolutionDir)third_party\SPIRV-Headers\include;$(SolutionDir)third_party\SPIRV-Tools\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)include;$(SolutionDir)third_party\llvm-7.0\configs\windows\include;$(SolutionDir)third_party\llvm-7.0\llvm\include;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\include;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\IR;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;$(SolutionDir)third_party\SPIRV-Headers\include;$(SolutionDir)third_party\SPIRV-Tools\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AssemblerListingLocation>Release/</AssemblerListingLocation>
<CompileAs>CompileAsCpp</CompileAs>
<ExceptionHandling>Sync</ExceptionHandling>
@@ -129,17 +130,19 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Release";libvk_swiftshader_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;NO_SANITIZE_FUNCTION=;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR=\"Release\";libvk_swiftshader_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)src\Vulkan;$(SolutionDir)src;$(SolutionDir)include;$(SolutionDir)third_party\llvm-7.0\configs\windows\include;$(SolutionDir)third_party\llvm-7.0\llvm\include;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\include;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\IR;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;$(SolutionDir)third_party\SPIRV-Headers\include;$(SolutionDir)third_party\SPIRV-Tools\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)include;$(SolutionDir)third_party\llvm-7.0\configs\windows\include;$(SolutionDir)third_party\llvm-7.0\llvm\include;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\include;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\IR;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;$(SolutionDir)third_party\SPIRV-Headers\include;$(SolutionDir)third_party\SPIRV-Tools\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Midl>
- <AdditionalIncludeDirectories>$(SolutionDir)src\Vulkan;$(SolutionDir)src;$(SolutionDir)include;$(SolutionDir)third_party\llvm-7.0\configs\windows\include;$(SolutionDir)third_party\llvm-7.0\llvm\include;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\include;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\IR;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;$(SolutionDir)third_party\SPIRV-Headers\include;$(SolutionDir)third_party\SPIRV-Tools\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)include;$(SolutionDir)third_party\llvm-7.0\configs\windows\include;$(SolutionDir)third_party\llvm-7.0\llvm\include;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\include;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\IR;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\AArch64;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\ARM;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\Mips;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Target\X86;$(SolutionDir)third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;$(SolutionDir)third_party\SPIRV-Headers\include;$(SolutionDir)third_party\SPIRV-Tools\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
<HeaderFileName>%(Filename).h</HeaderFileName>
<TypeLibraryName>%(Filename).tlb</TypeLibraryName>
@@ -153,9 +156,9 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
if %errorlevel% neq 0 goto :cmEnd
"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/libvk_swiftshader.dll" "$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/translator/lib64Vulkan_translator.dll"
if %errorlevel% neq 0 goto :cmEnd
-"cmake" -E make_directory $(SolutionDir)out/Windows/
+"cmake" -E make_directory "$(SolutionDir)build/Visual Studio 15 2017 Win64/Windows/"
if %errorlevel% neq 0 goto :cmEnd
-"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/libvk_swiftshader.dll" $(SolutionDir)out/Windows/
+"cmake" -E copy "$(SolutionDir)build/Visual Studio 15 2017 Win64/Release/libvk_swiftshader.dll" "$(SolutionDir)build/Visual Studio 15 2017 Win64/Windows/"
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
@@ -180,144 +183,152 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
</ProjectReference>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkBuffer.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkCommandBuffer.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkCommandPool.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkDebug.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkDescriptorPool.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkDescriptorSetLayout.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkDevice.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkDeviceMemory.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkFramebuffer.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkGetProcAddress.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkImage.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkImageView.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkInstance.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkMemory.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkPhysicalDevice.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkPipeline.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkPipelineLayout.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkPromotedExtensions.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkQueryPool.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkQueue.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkRenderPass.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkShaderModule.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\libVulkan.cpp" />
- <ClCompile Include="$(SolutionDir)src\Vulkan\main.cpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\Version.h" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkConfig.h" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkDestroy.h" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkGetProcAddress.h" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkMemory.h" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\resource.h" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkBuffer.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkBufferView.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkCommandBuffer.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkCommandPool.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkDebug.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkDescriptorPool.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkDescriptorSetLayout.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkDevice.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkDeviceMemory.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkEvent.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkFence.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkFramebuffer.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkImage.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkImageView.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkInstance.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkObject.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkPhysicalDevice.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkPipeline.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkPipelineCache.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkPipelineLayout.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkQueryPool.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkQueue.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkRenderPass.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkSampler.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkSemaphore.hpp" />
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkShaderModule.hpp" />
- <ClCompile Include="$(SolutionDir)src\System\CPUID.cpp" />
- <ClInclude Include="$(SolutionDir)src\System\CPUID.hpp" />
- <ClCompile Include="$(SolutionDir)src\System\Configurator.cpp" />
- <ClInclude Include="$(SolutionDir)src\System\Configurator.hpp" />
- <ClCompile Include="$(SolutionDir)src\System\Debug.cpp" />
- <ClInclude Include="$(SolutionDir)src\System\Debug.hpp" />
- <ClCompile Include="$(SolutionDir)src\System\Half.cpp" />
- <ClInclude Include="$(SolutionDir)src\System\Half.hpp" />
- <ClCompile Include="$(SolutionDir)src\System\Math.cpp" />
- <ClInclude Include="$(SolutionDir)src\System\Math.hpp" />
- <ClCompile Include="$(SolutionDir)src\System\Memory.cpp" />
- <ClInclude Include="$(SolutionDir)src\System\Memory.hpp" />
- <ClCompile Include="$(SolutionDir)src\System\Resource.cpp" />
- <ClInclude Include="$(SolutionDir)src\System\Resource.hpp" />
- <ClCompile Include="$(SolutionDir)src\System\Socket.cpp" />
- <ClInclude Include="$(SolutionDir)src\System\Socket.hpp" />
- <ClCompile Include="$(SolutionDir)src\System\Thread.cpp" />
- <ClInclude Include="$(SolutionDir)src\System\Thread.hpp" />
- <ClCompile Include="$(SolutionDir)src\System\Timer.cpp" />
- <ClInclude Include="$(SolutionDir)src\System\Timer.hpp" />
- <ClCompile Include="$(SolutionDir)src\Device\Blitter.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\Clipper.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\Color.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\Config.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\Context.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\ETC_Decoder.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\Matrix.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\PixelProcessor.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\Plane.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\Point.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\QuadRasterizer.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\Renderer.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\Sampler.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\SetupProcessor.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\Surface.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\SwiftConfig.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\Vector.cpp" />
- <ClCompile Include="$(SolutionDir)src\Device\VertexProcessor.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\Blitter.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\Blitter.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\Clipper.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\Clipper.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\Color.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\Color.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\Config.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\Config.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\Context.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\Context.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\ETC_Decoder.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\ETC_Decoder.hpp" />
<ClInclude Include="$(SolutionDir)src\Device\LRUCache.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\Matrix.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\Matrix.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\PixelProcessor.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\PixelProcessor.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\Plane.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\Plane.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\Point.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\Point.hpp" />
<ClInclude Include="$(SolutionDir)src\Device\Polygon.hpp" />
<ClInclude Include="$(SolutionDir)src\Device\Primitive.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\QuadRasterizer.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\QuadRasterizer.hpp" />
<ClInclude Include="$(SolutionDir)src\Device\Rasterizer.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\Renderer.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\Renderer.hpp" />
<ClInclude Include="$(SolutionDir)src\Device\RoutineCache.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\Sampler.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\Sampler.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\SetupProcessor.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\SetupProcessor.hpp" />
<ClInclude Include="$(SolutionDir)src\Device\Stream.hpp" />
- <ClInclude Include="$(SolutionDir)src\Device\Surface.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\SwiftConfig.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\SwiftConfig.hpp" />
<ClInclude Include="$(SolutionDir)src\Device\Triangle.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\Vector.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\Vector.hpp" />
<ClInclude Include="$(SolutionDir)src\Device\Vertex.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Device\VertexProcessor.cpp" />
<ClInclude Include="$(SolutionDir)src\Device\VertexProcessor.hpp" />
- <ClCompile Include="$(SolutionDir)src\Pipeline\Constants.cpp" />
- <ClCompile Include="$(SolutionDir)src\Pipeline\PixelProgram.cpp" />
- <ClCompile Include="$(SolutionDir)src\Pipeline\PixelRoutine.cpp" />
- <ClCompile Include="$(SolutionDir)src\Pipeline\SamplerCore.cpp" />
- <ClCompile Include="$(SolutionDir)src\Pipeline\SetupRoutine.cpp" />
- <ClCompile Include="$(SolutionDir)src\Pipeline\ShaderCore.cpp" />
- <ClCompile Include="$(SolutionDir)src\Pipeline\SpirvShader.cpp" />
- <ClCompile Include="$(SolutionDir)src\Pipeline\VertexProgram.cpp" />
- <ClCompile Include="$(SolutionDir)src\Pipeline\VertexRoutine.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Pipeline\ComputeProgram.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Pipeline\ComputeProgram.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Pipeline\Constants.cpp" />
<ClInclude Include="$(SolutionDir)src\Pipeline\Constants.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Pipeline\PixelProgram.cpp" />
<ClInclude Include="$(SolutionDir)src\Pipeline\PixelProgram.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Pipeline\PixelRoutine.cpp" />
<ClInclude Include="$(SolutionDir)src\Pipeline\PixelRoutine.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Pipeline\SamplerCore.cpp" />
<ClInclude Include="$(SolutionDir)src\Pipeline\SamplerCore.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Pipeline\SetupRoutine.cpp" />
<ClInclude Include="$(SolutionDir)src\Pipeline\SetupRoutine.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Pipeline\ShaderCore.cpp" />
<ClInclude Include="$(SolutionDir)src\Pipeline\ShaderCore.hpp" />
+ <ClInclude Include="$(SolutionDir)src\Pipeline\SpirvID.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Pipeline\SpirvShader.cpp" />
<ClInclude Include="$(SolutionDir)src\Pipeline\SpirvShader.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Pipeline\SpirvShaderSampling.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Pipeline\SpirvShader_dbg.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Pipeline\VertexProgram.cpp" />
<ClInclude Include="$(SolutionDir)src\Pipeline\VertexProgram.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Pipeline\VertexRoutine.cpp" />
<ClInclude Include="$(SolutionDir)src\Pipeline\VertexRoutine.hpp" />
+ <ClCompile Include="$(SolutionDir)src\System\CPUID.cpp" />
+ <ClInclude Include="$(SolutionDir)src\System\CPUID.hpp" />
+ <ClCompile Include="$(SolutionDir)src\System\Configurator.cpp" />
+ <ClInclude Include="$(SolutionDir)src\System\Configurator.hpp" />
+ <ClCompile Include="$(SolutionDir)src\System\Debug.cpp" />
+ <ClInclude Include="$(SolutionDir)src\System\Debug.hpp" />
+ <ClCompile Include="$(SolutionDir)src\System\Half.cpp" />
+ <ClInclude Include="$(SolutionDir)src\System\Half.hpp" />
+ <ClCompile Include="$(SolutionDir)src\System\Math.cpp" />
+ <ClInclude Include="$(SolutionDir)src\System\Math.hpp" />
+ <ClCompile Include="$(SolutionDir)src\System\Memory.cpp" />
+ <ClInclude Include="$(SolutionDir)src\System\Memory.hpp" />
+ <ClCompile Include="$(SolutionDir)src\System\Resource.cpp" />
+ <ClInclude Include="$(SolutionDir)src\System\Resource.hpp" />
+ <ClCompile Include="$(SolutionDir)src\System\Socket.cpp" />
+ <ClInclude Include="$(SolutionDir)src\System\Socket.hpp" />
+ <ClCompile Include="$(SolutionDir)src\System\Thread.cpp" />
+ <ClInclude Include="$(SolutionDir)src\System\Thread.hpp" />
+ <ClCompile Include="$(SolutionDir)src\System\Timer.cpp" />
+ <ClInclude Include="$(SolutionDir)src\System\Timer.hpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\Version.h" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkBuffer.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkBuffer.hpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkBufferView.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkBufferView.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkCommandBuffer.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkCommandBuffer.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkCommandPool.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkCommandPool.hpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkConfig.h" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkDebug.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDebug.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkDescriptorPool.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDescriptorPool.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkDescriptorSetLayout.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDescriptorSetLayout.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkDescriptorUpdateTemplate.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDescriptorUpdateTemplate.hpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDestroy.h" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkDevice.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDevice.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkDeviceMemory.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDeviceMemory.hpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkEvent.hpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkFence.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkFormat.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkFormat.h" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkFramebuffer.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkFramebuffer.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkGetProcAddress.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkGetProcAddress.h" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkImage.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkImage.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkImageView.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkImageView.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkInstance.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkInstance.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkMemory.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkMemory.h" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkObject.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkPhysicalDevice.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkPhysicalDevice.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkPipeline.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkPipeline.hpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkPipelineCache.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkPipelineLayout.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkPipelineLayout.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkPromotedExtensions.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkQueryPool.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkQueryPool.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkQueue.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkQueue.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkRenderPass.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkRenderPass.hpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkSampler.hpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkSemaphore.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkShaderModule.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkShaderModule.hpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\libVulkan.cpp" />
+ <ClCompile Include="$(SolutionDir)src\Vulkan\main.cpp" />
+ <ClInclude Include="$(SolutionDir)src\Vulkan\resource.h" />
<ClCompile Include="$(SolutionDir)src\WSI\VkSurfaceKHR.cpp" />
<ClInclude Include="$(SolutionDir)src\WSI\VkSurfaceKHR.hpp" />
<ClCompile Include="$(SolutionDir)src\WSI\VkSwapchainKHR.cpp" />
@@ -325,20 +336,28 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\ReactorLLVM.vcxproj">
- <Project>{3E565C6C-4B64-3128-A009-4A91C77E00E5}</Project>
+ <Project>{2EA2C687-489E-32F2-8D89-B90620301359}</Project>
<Name>ReactorLLVM</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\SPIRV-Tools.vcxproj">
- <Project>{EF1AF598-E402-38F1-A74A-35F18A1EC1CC}</Project>
+ <Project>{2866BC19-5FA8-3D67-8D94-751A3803A3DF}</Project>
<Name>SPIRV-Tools</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\opt\SPIRV-Tools-opt.vcxproj">
- <Project>{6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}</Project>
+ <Project>{2F8B8E0B-1B59-3671-91FE-A0E499B82D18}</Project>
<Name>SPIRV-Tools-opt</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\llvm.vcxproj">
- <Project>{9B24984C-F78C-3EF7-907B-2B0D2CDB5695}</Project>
+ <Project>{B9E0EFB7-8E1B-303D-9222-13F7A82B7858}</Project>
<Name>llvm</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libvk_swiftshader.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libvk_swiftshader.vcxproj.filters
index 425a9a28b7c..22180c1ad2e 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libvk_swiftshader.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/libvk_swiftshader.vcxproj.filters
@@ -1,108 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkBuffer.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkCommandBuffer.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkCommandPool.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkDebug.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkDescriptorPool.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkDescriptorSetLayout.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkDevice.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkDeviceMemory.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkFramebuffer.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkGetProcAddress.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkImage.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkImageView.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkInstance.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkMemory.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkPhysicalDevice.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkPipeline.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkPipelineLayout.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkPromotedExtensions.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkQueryPool.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkQueue.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkRenderPass.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\VkShaderModule.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\libVulkan.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\Vulkan\main.cpp">
- <Filter>src\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\System\CPUID.cpp">
- <Filter>src\System</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\System\Configurator.cpp">
- <Filter>src\System</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\System\Debug.cpp">
- <Filter>src\System</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\System\Half.cpp">
- <Filter>src\System</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\System\Math.cpp">
- <Filter>src\System</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\System\Memory.cpp">
- <Filter>src\System</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\System\Resource.cpp">
- <Filter>src\System</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\System\Socket.cpp">
- <Filter>src\System</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\System\Thread.cpp">
- <Filter>src\System</Filter>
- </ClCompile>
- <ClCompile Include="$(SolutionDir)src\System\Timer.cpp">
- <Filter>src\System</Filter>
- </ClCompile>
<ClCompile Include="$(SolutionDir)src\Device\Blitter.cpp">
<Filter>src\Device</Filter>
</ClCompile>
@@ -145,9 +43,6 @@
<ClCompile Include="$(SolutionDir)src\Device\SetupProcessor.cpp">
<Filter>src\Device</Filter>
</ClCompile>
- <ClCompile Include="$(SolutionDir)src\Device\Surface.cpp">
- <Filter>src\Device</Filter>
- </ClCompile>
<ClCompile Include="$(SolutionDir)src\Device\SwiftConfig.cpp">
<Filter>src\Device</Filter>
</ClCompile>
@@ -157,6 +52,9 @@
<ClCompile Include="$(SolutionDir)src\Device\VertexProcessor.cpp">
<Filter>src\Device</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Pipeline\ComputeProgram.cpp">
+ <Filter>src\Pipeline</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)src\Pipeline\Constants.cpp">
<Filter>src\Pipeline</Filter>
</ClCompile>
@@ -178,140 +76,137 @@
<ClCompile Include="$(SolutionDir)src\Pipeline\SpirvShader.cpp">
<Filter>src\Pipeline</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Pipeline\SpirvShader_dbg.cpp">
+ <Filter>src\Pipeline</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Pipeline\SpirvShaderSampling.cpp">
+ <Filter>src\Pipeline</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)src\Pipeline\VertexProgram.cpp">
<Filter>src\Pipeline</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)src\Pipeline\VertexRoutine.cpp">
<Filter>src\Pipeline</Filter>
</ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="$(SolutionDir)src\Vulkan\Version.h">
- <Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkConfig.h">
- <Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkDestroy.h">
- <Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkGetProcAddress.h">
- <Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkMemory.h">
- <Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\resource.h">
+ <ClCompile Include="$(SolutionDir)src\System\CPUID.cpp">
+ <Filter>src\System</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\System\Configurator.cpp">
+ <Filter>src\System</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\System\Debug.cpp">
+ <Filter>src\System</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\System\Half.cpp">
+ <Filter>src\System</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\System\Math.cpp">
+ <Filter>src\System</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\System\Memory.cpp">
+ <Filter>src\System</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\System\Resource.cpp">
+ <Filter>src\System</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\System\Socket.cpp">
+ <Filter>src\System</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\System\Thread.cpp">
+ <Filter>src\System</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\System\Timer.cpp">
+ <Filter>src\System</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkBuffer.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkBuffer.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkBufferView.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkBufferView.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkCommandBuffer.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkCommandBuffer.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkCommandPool.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkCommandPool.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkDebug.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkDebug.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkDescriptorPool.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkDescriptorPool.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkDescriptorSetLayout.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkDescriptorSetLayout.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkDescriptorUpdateTemplate.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkDevice.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkDevice.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkDeviceMemory.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkDeviceMemory.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkEvent.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkFormat.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkFence.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkFramebuffer.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkFramebuffer.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkGetProcAddress.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkImage.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkImage.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkImageView.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkImageView.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkInstance.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkInstance.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkObject.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkMemory.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkPhysicalDevice.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkPhysicalDevice.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkPipeline.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkPipeline.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkPipelineCache.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkPipelineLayout.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkPipelineLayout.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkPromotedExtensions.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkQueryPool.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkQueryPool.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkQueue.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkQueue.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkRenderPass.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkRenderPass.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkSampler.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\VkShaderModule.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkSemaphore.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\libVulkan.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\Vulkan\VkShaderModule.hpp">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\Vulkan\main.cpp">
<Filter>src\Vulkan</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\System\CPUID.hpp">
- <Filter>src\System</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\System\Configurator.hpp">
- <Filter>src\System</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\System\Debug.hpp">
- <Filter>src\System</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\System\Half.hpp">
- <Filter>src\System</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\System\Math.hpp">
- <Filter>src\System</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\System\Memory.hpp">
- <Filter>src\System</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\System\Resource.hpp">
- <Filter>src\System</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\System\Socket.hpp">
- <Filter>src\System</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\System\Thread.hpp">
- <Filter>src\System</Filter>
- </ClInclude>
- <ClInclude Include="$(SolutionDir)src\System\Timer.hpp">
- <Filter>src\System</Filter>
- </ClInclude>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\WSI\VkSurfaceKHR.cpp">
+ <Filter>src\WSI</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)src\WSI\VkSwapchainKHR.cpp">
+ <Filter>src\WSI</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
<ClInclude Include="$(SolutionDir)src\Device\Blitter.hpp">
<Filter>src\Device</Filter>
</ClInclude>
@@ -372,9 +267,6 @@
<ClInclude Include="$(SolutionDir)src\Device\Stream.hpp">
<Filter>src\Device</Filter>
</ClInclude>
- <ClInclude Include="$(SolutionDir)src\Device\Surface.hpp">
- <Filter>src\Device</Filter>
- </ClInclude>
<ClInclude Include="$(SolutionDir)src\Device\SwiftConfig.hpp">
<Filter>src\Device</Filter>
</ClInclude>
@@ -390,6 +282,9 @@
<ClInclude Include="$(SolutionDir)src\Device\VertexProcessor.hpp">
<Filter>src\Device</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Pipeline\ComputeProgram.hpp">
+ <Filter>src\Pipeline</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)src\Pipeline\Constants.hpp">
<Filter>src\Pipeline</Filter>
</ClInclude>
@@ -408,6 +303,9 @@
<ClInclude Include="$(SolutionDir)src\Pipeline\ShaderCore.hpp">
<Filter>src\Pipeline</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Pipeline\SpirvID.hpp">
+ <Filter>src\Pipeline</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)src\Pipeline\SpirvShader.hpp">
<Filter>src\Pipeline</Filter>
</ClInclude>
@@ -417,22 +315,163 @@
<ClInclude Include="$(SolutionDir)src\Pipeline\VertexRoutine.hpp">
<Filter>src\Pipeline</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)src\System\CPUID.hpp">
+ <Filter>src\System</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\System\Configurator.hpp">
+ <Filter>src\System</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\System\Debug.hpp">
+ <Filter>src\System</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\System\Half.hpp">
+ <Filter>src\System</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\System\Math.hpp">
+ <Filter>src\System</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\System\Memory.hpp">
+ <Filter>src\System</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\System\Resource.hpp">
+ <Filter>src\System</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\System\Socket.hpp">
+ <Filter>src\System</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\System\Thread.hpp">
+ <Filter>src\System</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\System\Timer.hpp">
+ <Filter>src\System</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\Version.h">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkBuffer.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkBufferView.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkCommandBuffer.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkCommandPool.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkConfig.h">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDebug.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDescriptorPool.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDescriptorSetLayout.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDescriptorUpdateTemplate.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDestroy.h">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDevice.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkDeviceMemory.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkEvent.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkFence.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkFormat.h">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkFramebuffer.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkGetProcAddress.h">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkImage.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkImageView.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkInstance.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkMemory.h">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkObject.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkPhysicalDevice.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkPipeline.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkPipelineCache.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkPipelineLayout.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkQueryPool.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkQueue.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkRenderPass.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkSampler.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkSemaphore.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\VkShaderModule.hpp">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\Vulkan\resource.h">
+ <Filter>src\Vulkan</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\WSI\VkSurfaceKHR.hpp">
+ <Filter>src\WSI</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)src\WSI\VkSwapchainKHR.hpp">
+ <Filter>src\WSI</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="src">
- <UniqueIdentifier>{13574A07-B880-3431-8401-B66983F72A05}</UniqueIdentifier>
+ <UniqueIdentifier>{1D32CFC4-3897-312A-881D-1722E268FA32}</UniqueIdentifier>
</Filter>
<Filter Include="src\Device">
- <UniqueIdentifier>{B659ADB5-A612-3A36-91F5-814BCBE77EBD}</UniqueIdentifier>
+ <UniqueIdentifier>{B6C7A296-A2E3-3AD7-AB21-D8704E068C23}</UniqueIdentifier>
</Filter>
<Filter Include="src\Pipeline">
- <UniqueIdentifier>{539B44DC-F559-303B-B851-F6AA848CBFD3}</UniqueIdentifier>
+ <UniqueIdentifier>{DB68B895-F268-3B01-9904-1630288F10F5}</UniqueIdentifier>
</Filter>
<Filter Include="src\System">
- <UniqueIdentifier>{560E3C7E-2D9D-3220-9CE2-7D1A97C0B7F7}</UniqueIdentifier>
+ <UniqueIdentifier>{1A9F70A4-66B3-30AE-A388-EA8F71BE5E85}</UniqueIdentifier>
</Filter>
<Filter Include="src\Vulkan">
- <UniqueIdentifier>{6FC06AEC-BBAF-32F5-96F0-10B1D4D5100A}</UniqueIdentifier>
+ <UniqueIdentifier>{5E41697B-4CDE-339E-90E4-78382FB4F934}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\WSI">
+ <UniqueIdentifier>{46FE1358-AF13-386D-B739-661ABC59C446}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/llvm.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/llvm.vcxproj
index 68d25c289cf..95a9c25a80e 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/llvm.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/llvm.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{9B24984C-F78C-3EF7-907B-2B0D2CDB5695}</ProjectGuid>
+ <ProjectGuid>{B9E0EFB7-8E1B-303D-9222-13F7A82B7858}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -64,6 +64,7 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;__STDC_CONSTANT_MACROS; __STDC_LIMIT_MACROS;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -96,10 +97,12 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;__STDC_CONSTANT_MACROS; __STDC_LIMIT_MACROS;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;__STDC_CONSTANT_MACROS; __STDC_LIMIT_MACROS;_CRT_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -118,909 +121,912 @@
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\AliasAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\AliasAnalysisEvaluator.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\AliasAnalysisSummary.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\AliasSetTracker.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\Analysis.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\AliasAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\AliasAnalysisEvaluator.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\AliasAnalysisSummary.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\AliasSetTracker.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\Analysis.cpp">
<ObjectFileName>$(IntDir)/third_party/llvm-7.0/llvm/lib/Analysis/Analysis.cpp.obj</ObjectFileName>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\AssumptionCache.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\BasicAliasAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\BlockFrequencyInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\BlockFrequencyInfoImpl.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\BranchProbabilityInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CFG.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CFGPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CFLAndersAliasAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CFLSteensAliasAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CGSCCPassManager.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CallGraph.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CallGraphSCCPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CallPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CaptureTracking.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CmpInstAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CodeMetrics.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ConstantFolding.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CostModel.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\Delinearization.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\DemandedBits.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\DependenceAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\DivergenceAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\DomPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\DominanceFrontier.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\EHPersonalities.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\GlobalsModRef.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\IVUsers.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\IndirectCallPromotionAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\InlineCost.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\InstCount.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\InstructionSimplify.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\Interval.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\IntervalPartition.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\IteratedDominanceFrontier.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LazyBlockFrequencyInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LazyBranchProbabilityInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LazyCallGraph.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LazyValueInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\Lint.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\Loads.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LoopAccessAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LoopAnalysisManager.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LoopInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LoopPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LoopUnrollAnalyzer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemDepPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemDerefPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemoryBuiltins.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemoryDependenceAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemoryLocation.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemorySSA.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemorySSAUpdater.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ModuleDebugInfoPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ModuleSummaryAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MustExecute.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ObjCARCAliasAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ObjCARCAnalysisUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ObjCARCInstKind.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\OptimizationRemarkEmitter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\OrderedBasicBlock.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\PHITransAddr.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\PhiValues.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\PostDominators.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ProfileSummaryInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\PtrUseVisitor.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\RegionInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\RegionPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\RegionPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ScalarEvolution.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ScalarEvolutionAliasAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ScalarEvolutionExpander.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ScalarEvolutionNormalization.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ScopedNoAliasAA.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\SyntheticCountsUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\TargetLibraryInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\TargetTransformInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\Trace.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\TypeBasedAliasAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\TypeMetadataUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ValueLattice.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ValueLatticeUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ValueTracking.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\VectorUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\BinaryFormat\Dwarf.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\BinaryFormat\Magic.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\BinaryFormat\Wasm.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Reader\BitReader.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Reader\BitcodeReader.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Reader\BitstreamReader.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Reader\MetadataLoader.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Reader\ValueList.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Writer\BitWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Writer\BitcodeWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Writer\BitcodeWriterPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Writer\ValueEnumerator.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AggressiveAntiDepBreaker.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AllocationOrder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\Analysis.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\AssumptionCache.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\BasicAliasAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\BlockFrequencyInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\BlockFrequencyInfoImpl.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\BranchProbabilityInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CFG.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CFGPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CFLAndersAliasAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CFLSteensAliasAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CGSCCPassManager.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CallGraph.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CallGraphSCCPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CallPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CaptureTracking.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CmpInstAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CodeMetrics.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ConstantFolding.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\CostModel.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\Delinearization.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\DemandedBits.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\DependenceAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\DivergenceAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\DomPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\DominanceFrontier.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\EHPersonalities.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\GlobalsModRef.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\IVUsers.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\IndirectCallPromotionAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\InlineCost.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\InstCount.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\InstructionSimplify.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\Interval.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\IntervalPartition.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\IteratedDominanceFrontier.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LazyBlockFrequencyInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LazyBranchProbabilityInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LazyCallGraph.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LazyValueInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\Lint.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\Loads.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LoopAccessAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LoopAnalysisManager.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LoopInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LoopPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\LoopUnrollAnalyzer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemDepPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemDerefPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemoryBuiltins.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemoryDependenceAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemoryLocation.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemorySSA.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MemorySSAUpdater.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ModuleDebugInfoPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ModuleSummaryAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\MustExecute.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ObjCARCAliasAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ObjCARCAnalysisUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ObjCARCInstKind.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\OptimizationRemarkEmitter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\OrderedBasicBlock.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\PHITransAddr.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\PhiValues.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\PostDominators.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ProfileSummaryInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\PtrUseVisitor.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\RegionInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\RegionPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\RegionPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ScalarEvolution.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ScalarEvolutionAliasAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ScalarEvolutionExpander.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ScalarEvolutionNormalization.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ScopedNoAliasAA.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\SyntheticCountsUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\TargetLibraryInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\TargetTransformInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\Trace.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\TypeBasedAliasAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\TypeMetadataUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ValueLattice.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ValueLatticeUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\ValueTracking.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\VectorUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\AsmParser\LLLexer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\AsmParser\LLParser.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\AsmParser\Parser.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\BinaryFormat\Dwarf.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\BinaryFormat\Magic.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\BinaryFormat\Wasm.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Reader\BitReader.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Reader\BitcodeReader.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Reader\BitstreamReader.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Reader\MetadataLoader.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Reader\ValueList.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Writer\BitWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Writer\BitcodeWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Writer\BitcodeWriterPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Bitcode\Writer\ValueEnumerator.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AggressiveAntiDepBreaker.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AllocationOrder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\Analysis.cpp">
<ObjectFileName>$(IntDir)/third_party/llvm-7.0/llvm/lib/CodeGen/Analysis.cpp.obj</ObjectFileName>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\ARMException.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\AccelTable.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\AddressPool.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\AsmPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\AsmPrinterDwarf.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\AsmPrinterInlineAsm.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\CodeViewDebug.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DIE.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DIEHash.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DbgValueHistoryCalculator.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DebugHandlerBase.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DebugLocStream.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfCFIException.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfCompileUnit.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfDebug.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfExpression.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfFile.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfStringPool.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfUnit.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\EHStreamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\ErlangGCPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\OcamlGCPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\WinCFGuard.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\WinException.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AtomicExpandPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\BasicTargetTransformInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\BranchFolding.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\BranchRelaxation.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\BreakFalseDeps.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\BuiltinGCs.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\CFIInstrInserter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\CalcSpillWeights.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\CallingConvLower.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\CodeGen.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\CodeGenPrepare.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\CriticalAntiDepBreaker.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\DFAPacketizer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\DeadMachineInstructionElim.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\DetectDeadLanes.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\DwarfEHPrepare.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\EarlyIfConversion.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\EdgeBundles.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ExecutionDomainFix.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ExpandISelPseudos.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ExpandMemCmp.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ExpandPostRAPseudos.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ExpandReductions.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\FEntryInserter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\FaultMaps.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\FuncletLayout.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GCMetadata.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GCMetadataPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GCRootLowering.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GCStrategy.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\CallLowering.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\Combiner.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\CombinerHelper.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\GlobalISel.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\IRTranslator.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\InstructionSelect.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\InstructionSelector.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\LegalityPredicates.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\LegalizeMutations.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\Legalizer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\LegalizerHelper.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\LegalizerInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\Localizer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\MachineIRBuilder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\RegBankSelect.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\RegisterBank.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\RegisterBankInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\Utils.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\ARMException.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\AccelTable.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\AddressPool.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\AsmPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\AsmPrinterDwarf.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\AsmPrinterInlineAsm.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\CodeViewDebug.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DIE.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DIEHash.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DbgValueHistoryCalculator.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DebugHandlerBase.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DebugLocStream.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfCFIException.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfCompileUnit.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfDebug.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfExpression.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfFile.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfStringPool.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\DwarfUnit.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\EHStreamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\ErlangGCPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\OcamlGCPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\WinCFGuard.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AsmPrinter\WinException.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\AtomicExpandPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\BasicTargetTransformInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\BranchFolding.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\BranchRelaxation.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\BreakFalseDeps.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\BuiltinGCs.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\CFIInstrInserter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\CalcSpillWeights.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\CallingConvLower.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\CodeGen.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\CodeGenPrepare.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\CriticalAntiDepBreaker.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\DFAPacketizer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\DeadMachineInstructionElim.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\DetectDeadLanes.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\DwarfEHPrepare.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\EarlyIfConversion.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\EdgeBundles.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ExecutionDomainFix.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ExpandISelPseudos.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ExpandMemCmp.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ExpandPostRAPseudos.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ExpandReductions.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\FEntryInserter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\FaultMaps.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\FuncletLayout.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GCMetadata.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GCMetadataPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GCRootLowering.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GCStrategy.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\CallLowering.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\Combiner.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\CombinerHelper.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\GlobalISel.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\IRTranslator.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\InstructionSelect.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\InstructionSelector.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\LegalityPredicates.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\LegalizeMutations.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\Legalizer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\LegalizerHelper.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\LegalizerInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\Localizer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\MachineIRBuilder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\RegBankSelect.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\RegisterBank.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\RegisterBankInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalISel\Utils.cpp">
<ObjectFileName>$(IntDir)/third_party/llvm-7.0/llvm/lib/CodeGen/GlobalISel/Utils.cpp.obj</ObjectFileName>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalMerge.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\IfConversion.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ImplicitNullChecks.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\IndirectBrExpandPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\InlineSpiller.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\InterferenceCache.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\InterleavedAccessPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\IntrinsicLowering.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LLVMTargetMachine.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LatencyPriorityQueue.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LazyMachineBlockFrequencyInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LexicalScopes.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveDebugValues.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveDebugVariables.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveInterval.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveIntervalUnion.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveIntervals.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LivePhysRegs.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveRangeCalc.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveRangeEdit.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveRangeShrink.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveRegMatrix.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveRegUnits.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveStacks.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveVariables.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LocalStackSlotAllocation.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LoopTraversal.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LowLevelType.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\GlobalMerge.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\IfConversion.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ImplicitNullChecks.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\IndirectBrExpandPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\InlineSpiller.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\InterferenceCache.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\InterleavedAccessPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\IntrinsicLowering.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LLVMTargetMachine.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LatencyPriorityQueue.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LazyMachineBlockFrequencyInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LexicalScopes.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveDebugValues.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveDebugVariables.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveInterval.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveIntervalUnion.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveIntervals.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LivePhysRegs.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveRangeCalc.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveRangeEdit.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveRangeShrink.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveRegMatrix.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveRegUnits.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveStacks.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LiveVariables.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LocalStackSlotAllocation.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LoopTraversal.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LowLevelType.cpp">
<ObjectFileName>$(IntDir)/third_party/llvm-7.0/llvm/lib/CodeGen/LowLevelType.cpp.obj</ObjectFileName>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LowerEmuTLS.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MIRCanonicalizerPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MIRPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MIRPrintingPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineBasicBlock.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineBlockFrequencyInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineBlockPlacement.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineBranchProbabilityInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineCSE.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineCombiner.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineCopyPropagation.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineDominanceFrontier.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineDominators.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineFrameInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineFunction.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineFunctionPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineFunctionPrinterPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineInstr.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineInstrBundle.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineLICM.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineLoopInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineModuleInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineModuleInfoImpls.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineOperand.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineOptimizationRemarkEmitter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineOutliner.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachinePassRegistry.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachinePipeliner.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachinePostDominators.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineRegionInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineRegisterInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineSSAUpdater.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineScheduler.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineSink.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineTraceMetrics.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineVerifier.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MacroFusion.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\OptimizePHIs.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PHIElimination.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PHIEliminationUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ParallelCG.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PatchableFunction.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PeepholeOptimizer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PostRAHazardRecognizer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PostRASchedulerList.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PreISelIntrinsicLowering.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ProcessImplicitDefs.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PrologEpilogInserter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PseudoSourceValue.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ReachingDefAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegAllocBase.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegAllocBasic.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegAllocFast.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegAllocGreedy.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegAllocPBQP.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegUsageInfoCollector.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegUsageInfoPropagate.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegisterClassInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegisterCoalescer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegisterPressure.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegisterScavenging.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegisterUsageInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RenameIndependentSubregs.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ResetMachineFunctionPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SafeStack.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SafeStackColoring.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SafeStackLayout.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ScalarizeMaskedMemIntrin.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ScheduleDAG.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ScheduleDAGInstrs.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ScheduleDAGPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ScoreboardHazardRecognizer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\DAGCombiner.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\FastISel.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\FunctionLoweringInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\InstrEmitter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeDAG.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeFloatTypes.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeIntegerTypes.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeTypes.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeTypesGeneric.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeVectorOps.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeVectorTypes.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\ResourcePriorityQueue.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\ScheduleDAGFast.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\ScheduleDAGRRList.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\ScheduleDAGSDNodes.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\ScheduleDAGVLIW.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAG.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAGAddressAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAGBuilder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAGDumper.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAGISel.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAGPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAGTargetInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\StatepointLowering.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\TargetLowering.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ShadowStackGCLowering.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ShrinkWrap.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SjLjEHPrepare.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SlotIndexes.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SpillPlacement.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SplitKit.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\StackColoring.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\StackMapLivenessAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\StackMaps.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\StackProtector.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\StackSlotColoring.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TailDuplication.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TailDuplicator.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetFrameLoweringImpl.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetInstrInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetLoweringBase.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetLoweringObjectFileImpl.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetOptionsImpl.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetPassConfig.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetRegisterInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetSchedule.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetSubtargetInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TwoAddressInstructionPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\UnreachableBlockElim.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ValueTypes.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\VirtRegMap.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\WasmEHPrepare.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\WinEHPrepare.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\XRayInstrumentation.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\AppendingTypeTableBuilder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\CVSymbolVisitor.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\CVTypeVisitor.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\CodeViewError.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\CodeViewRecordIO.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\ContinuationRecordBuilder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugChecksumsSubsection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugCrossExSubsection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugCrossImpSubsection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugFrameDataSubsection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugInlineeLinesSubsection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugLinesSubsection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugStringTableSubsection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugSubsection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugSubsectionRecord.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugSubsectionVisitor.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugSymbolRVASubsection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugSymbolsSubsection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\EnumTables.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\Formatters.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\GlobalTypeTableBuilder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\LazyRandomTypeCollection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\Line.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\MergingTypeTableBuilder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\RecordName.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\RecordSerialization.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\SimpleTypeSerializer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\StringsAndChecksums.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\SymbolDumper.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\SymbolRecordMapping.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\SymbolSerializer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeDumpVisitor.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeHashing.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeIndex.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeIndexDiscovery.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeRecordMapping.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeStreamMerger.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeTableCollection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\ExecutionEngine.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\ExecutionEngineBindings.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\GDBRegistrationListener.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\CompileOnDemandLayer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\Core.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\LowerEmuTLS.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MIRCanonicalizerPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MIRPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MIRPrintingPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineBasicBlock.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineBlockFrequencyInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineBlockPlacement.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineBranchProbabilityInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineCSE.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineCombiner.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineCopyPropagation.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineDominanceFrontier.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineDominators.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineFrameInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineFunction.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineFunctionPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineFunctionPrinterPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineInstr.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineInstrBundle.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineLICM.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineLoopInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineModuleInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineModuleInfoImpls.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineOperand.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineOptimizationRemarkEmitter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineOutliner.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachinePassRegistry.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachinePipeliner.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachinePostDominators.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineRegionInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineRegisterInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineSSAUpdater.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineScheduler.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineSink.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineTraceMetrics.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MachineVerifier.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\MacroFusion.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\OptimizePHIs.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PHIElimination.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PHIEliminationUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ParallelCG.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PatchableFunction.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PeepholeOptimizer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PostRAHazardRecognizer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PostRASchedulerList.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PreISelIntrinsicLowering.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ProcessImplicitDefs.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PrologEpilogInserter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\PseudoSourceValue.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ReachingDefAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegAllocBase.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegAllocBasic.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegAllocFast.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegAllocGreedy.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegAllocPBQP.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegUsageInfoCollector.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegUsageInfoPropagate.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegisterClassInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegisterCoalescer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegisterPressure.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegisterScavenging.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RegisterUsageInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\RenameIndependentSubregs.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ResetMachineFunctionPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SafeStack.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SafeStackColoring.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SafeStackLayout.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ScalarizeMaskedMemIntrin.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ScheduleDAG.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ScheduleDAGInstrs.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ScheduleDAGPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ScoreboardHazardRecognizer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\DAGCombiner.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\FastISel.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\FunctionLoweringInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\InstrEmitter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeDAG.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeFloatTypes.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeIntegerTypes.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeTypes.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeTypesGeneric.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeVectorOps.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\LegalizeVectorTypes.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\ResourcePriorityQueue.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\ScheduleDAGFast.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\ScheduleDAGRRList.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\ScheduleDAGSDNodes.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\ScheduleDAGVLIW.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAG.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAGAddressAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAGBuilder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAGDumper.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAGISel.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAGPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\SelectionDAGTargetInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\StatepointLowering.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SelectionDAG\TargetLowering.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ShadowStackGCLowering.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ShrinkWrap.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SjLjEHPrepare.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SlotIndexes.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SpillPlacement.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\SplitKit.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\StackColoring.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\StackMapLivenessAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\StackMaps.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\StackProtector.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\StackSlotColoring.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TailDuplication.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TailDuplicator.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetFrameLoweringImpl.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetInstrInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetLoweringBase.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetLoweringObjectFileImpl.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetOptionsImpl.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetPassConfig.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetRegisterInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetSchedule.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TargetSubtargetInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\TwoAddressInstructionPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\UnreachableBlockElim.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\ValueTypes.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\VirtRegMap.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\WasmEHPrepare.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\WinEHPrepare.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\CodeGen\XRayInstrumentation.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\AppendingTypeTableBuilder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\CVSymbolVisitor.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\CVTypeVisitor.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\CodeViewError.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\CodeViewRecordIO.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\ContinuationRecordBuilder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugChecksumsSubsection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugCrossExSubsection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugCrossImpSubsection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugFrameDataSubsection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugInlineeLinesSubsection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugLinesSubsection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugStringTableSubsection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugSubsection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugSubsectionRecord.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugSubsectionVisitor.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugSymbolRVASubsection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\DebugSymbolsSubsection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\EnumTables.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\Formatters.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\GlobalTypeTableBuilder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\LazyRandomTypeCollection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\Line.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\MergingTypeTableBuilder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\RecordName.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\RecordSerialization.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\SimpleTypeSerializer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\StringsAndChecksums.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\SymbolDumper.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\SymbolRecordMapping.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\SymbolSerializer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeDumpVisitor.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeHashing.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeIndex.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeIndexDiscovery.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeRecordMapping.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeStreamMerger.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\DebugInfo\CodeView\TypeTableCollection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\ExecutionEngine.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\ExecutionEngineBindings.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\GDBRegistrationListener.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\CompileOnDemandLayer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\Core.cpp">
<ObjectFileName>$(IntDir)/third_party/llvm-7.0/llvm/lib/ExecutionEngine/Orc/Core.cpp.obj</ObjectFileName>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\ExecutionUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\IRCompileLayer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\IRTransformLayer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\IndirectionUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\LLJIT.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\Layer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\Legacy.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\NullResolver.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\ObjectTransformLayer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\OrcABISupport.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\OrcCBindings.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\OrcError.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\OrcMCJITReplacement.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\RPCUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\RTDyldObjectLinkingLayer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\JITSymbol.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\RTDyldMemoryManager.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\RuntimeDyld.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\RuntimeDyldCOFF.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\RuntimeDyldChecker.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\RuntimeDyldELF.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\RuntimeDyldMachO.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\Targets\RuntimeDyldELFMips.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\SectionMemoryManager.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\TargetSelect.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\AsmWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Attributes.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\AutoUpgrade.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\BasicBlock.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Comdat.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\ConstantFold.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\ConstantRange.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Constants.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Core.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\ExecutionUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\IRCompileLayer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\IRTransformLayer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\IndirectionUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\LLJIT.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\Layer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\Legacy.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\NullResolver.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\ObjectTransformLayer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\OrcABISupport.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\OrcCBindings.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\OrcError.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\OrcMCJITReplacement.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\RPCUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\Orc\RTDyldObjectLinkingLayer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\JITSymbol.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\RTDyldMemoryManager.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\RuntimeDyld.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\RuntimeDyldCOFF.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\RuntimeDyldChecker.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\RuntimeDyldELF.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\RuntimeDyldMachO.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\RuntimeDyld\Targets\RuntimeDyldELFMips.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\SectionMemoryManager.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ExecutionEngine\TargetSelect.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\AsmWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Attributes.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\AutoUpgrade.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\BasicBlock.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Comdat.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\ConstantFold.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\ConstantRange.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Constants.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Core.cpp">
<ObjectFileName>$(IntDir)/third_party/llvm-7.0/llvm/lib/IR/Core.cpp.obj</ObjectFileName>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DIBuilder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DataLayout.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DebugInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DebugInfoMetadata.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DebugLoc.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DiagnosticHandler.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DiagnosticInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DiagnosticPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DomTreeUpdater.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Dominators.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Function.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\GVMaterializer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Globals.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\IRBuilder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\IRPrintingPasses.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\InlineAsm.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Instruction.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Instructions.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\IntrinsicInst.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\LLVMContext.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\LLVMContextImpl.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\LegacyPassManager.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\MDBuilder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Mangler.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Metadata.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Module.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\ModuleSummaryIndex.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Operator.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\OptBisect.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Pass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\PassManager.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\PassRegistry.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\ProfileSummary.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\SafepointIRVerifier.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Statepoint.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Type.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\TypeFinder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Use.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\User.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Value.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\ValueSymbolTable.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Verifier.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IRReader\IRReader.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\ConstantPools.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\ELFObjectWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmBackend.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmInfoCOFF.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmInfoDarwin.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmInfoELF.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmInfoWasm.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmMacro.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmStreamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAssembler.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCCodeEmitter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCCodePadder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCCodeView.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCContext.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCDisassembler\Disassembler.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCDisassembler\MCDisassembler.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCDisassembler\MCExternalSymbolizer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCDisassembler\MCRelocationInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCDisassembler\MCSymbolizer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCDwarf.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCELFObjectTargetWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCELFStreamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCExpr.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCFragment.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCInst.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCInstPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCInstrAnalysis.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCInstrDesc.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCLabel.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCLinkerOptimizationHint.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCMachOStreamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCMachObjectTargetWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCNullStreamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCObjectFileInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCObjectStreamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCObjectWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\AsmLexer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\AsmParser.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\COFFAsmParser.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\DarwinAsmParser.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\ELFAsmParser.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\MCAsmLexer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\MCAsmParser.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\MCAsmParserExtension.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\MCTargetAsmParser.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCRegisterInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSchedule.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSection.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSectionCOFF.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSectionELF.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSectionMachO.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSectionWasm.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCStreamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSubtargetInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSymbol.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSymbolELF.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCTargetOptions.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCValue.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCWasmObjectTargetWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCWasmStreamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCWin64EH.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCWinCOFFStreamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCWinEH.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MachObjectWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\StringTableBuilder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\SubtargetFeature.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\WasmObjectWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\WinCOFFObjectWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\Archive.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\ArchiveWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\Binary.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\COFFImportFile.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\COFFModuleDefinition.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\COFFObjectFile.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\Decompressor.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\ELF.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\ELFObjectFile.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\Error.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DIBuilder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DataLayout.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DebugInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DebugInfoMetadata.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DebugLoc.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DiagnosticHandler.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DiagnosticInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DiagnosticPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\DomTreeUpdater.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Dominators.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Function.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\GVMaterializer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Globals.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\IRBuilder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\IRPrintingPasses.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\InlineAsm.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Instruction.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Instructions.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\IntrinsicInst.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\LLVMContext.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\LLVMContextImpl.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\LegacyPassManager.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\MDBuilder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Mangler.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Metadata.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Module.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\ModuleSummaryIndex.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Operator.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\OptBisect.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Pass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\PassManager.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\PassRegistry.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\ProfileSummary.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\SafepointIRVerifier.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Statepoint.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Type.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\TypeFinder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Use.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\User.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Value.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\ValueSymbolTable.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IR\Verifier.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\IRReader\IRReader.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\ConstantPools.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\ELFObjectWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmBackend.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmInfoCOFF.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmInfoDarwin.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmInfoELF.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmInfoWasm.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmMacro.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAsmStreamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCAssembler.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCCodeEmitter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCCodePadder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCCodeView.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCContext.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCDisassembler\Disassembler.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCDisassembler\MCDisassembler.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCDisassembler\MCExternalSymbolizer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCDisassembler\MCRelocationInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCDisassembler\MCSymbolizer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCDwarf.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCELFObjectTargetWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCELFStreamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCExpr.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCFragment.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCInst.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCInstPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCInstrAnalysis.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCInstrDesc.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCLabel.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCLinkerOptimizationHint.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCMachOStreamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCMachObjectTargetWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCNullStreamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCObjectFileInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCObjectStreamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCObjectWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\AsmLexer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\AsmParser.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\COFFAsmParser.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\DarwinAsmParser.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\ELFAsmParser.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\MCAsmLexer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\MCAsmParser.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\MCAsmParserExtension.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCParser\MCTargetAsmParser.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCRegisterInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSchedule.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSection.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSectionCOFF.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSectionELF.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSectionMachO.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSectionWasm.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCStreamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSubtargetInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSymbol.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCSymbolELF.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCTargetOptions.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCValue.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCWasmObjectTargetWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCWasmStreamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCWin64EH.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCWinCOFFStreamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MCWinEH.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\MachObjectWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\StringTableBuilder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\SubtargetFeature.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\WasmObjectWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\MC\WinCOFFObjectWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\Archive.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\ArchiveWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\Binary.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\COFFImportFile.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\COFFModuleDefinition.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\COFFObjectFile.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\Decompressor.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\ELF.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\ELFObjectFile.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\Error.cpp">
<ObjectFileName>$(IntDir)/third_party/llvm-7.0/llvm/lib/Object/Error.cpp.obj</ObjectFileName>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\IRObjectFile.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\IRSymtab.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\MachOObjectFile.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\MachOUniversal.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\ModuleSymbolTable.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\Object.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\ObjectFile.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\RecordStreamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\SymbolSize.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\SymbolicFile.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\WasmObjectFile.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\WindowsResource.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\GCOV.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\InstrProf.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\InstrProfReader.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\InstrProfWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\ProfileSummaryBuilder.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\SampleProf.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\SampleProfReader.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\SampleProfWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\AMDGPUMetadata.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\APFloat.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\APInt.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\APSInt.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ARMAttributeParser.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ARMBuildAttrs.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ARMWinEH.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Allocator.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Atomic.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\BinaryStreamError.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\BinaryStreamReader.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\BinaryStreamRef.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\BinaryStreamWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\BlockFrequency.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\BranchProbability.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\COM.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\CachePruning.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Chrono.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\CodeGenCoverage.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\CommandLine.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Compression.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ConvertUTF.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ConvertUTFWrapper.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\CrashRecoveryContext.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\DAGDeltaAlgorithm.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\DJB.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\DataExtractor.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Debug.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\DebugCounter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\DeltaAlgorithm.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\DynamicLibrary.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Errno.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Error.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\IRObjectFile.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\IRSymtab.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\MachOObjectFile.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\MachOUniversal.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\ModuleSymbolTable.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\Object.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\ObjectFile.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\RecordStreamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\SymbolSize.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\SymbolicFile.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\WasmObjectFile.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Object\WindowsResource.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\GCOV.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\InstrProf.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\InstrProfReader.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\InstrProfWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\ProfileSummaryBuilder.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\SampleProf.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\SampleProfReader.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\ProfileData\SampleProfWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\AMDGPUMetadata.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\APFloat.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\APInt.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\APSInt.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ARMAttributeParser.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ARMBuildAttrs.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ARMWinEH.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Allocator.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Atomic.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\BinaryStreamError.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\BinaryStreamReader.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\BinaryStreamRef.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\BinaryStreamWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\BlockFrequency.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\BranchProbability.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\COM.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\CachePruning.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Chrono.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\CodeGenCoverage.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\CommandLine.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Compression.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ConvertUTF.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ConvertUTFWrapper.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\CrashRecoveryContext.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\DAGDeltaAlgorithm.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\DJB.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\DataExtractor.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Debug.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\DebugCounter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\DeltaAlgorithm.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\DynamicLibrary.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Errno.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Error.cpp">
<ObjectFileName>$(IntDir)/third_party/llvm-7.0/llvm/lib/Support/Error.cpp.obj</ObjectFileName>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ErrorHandling.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\FileOutputBuffer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\FileUtilities.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\FoldingSet.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\FormatVariadic.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\FormattedStream.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\GlobPattern.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\GraphWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Hashing.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Host.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\InitLLVM.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\IntEqClasses.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\IntervalMap.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\JSON.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\JamCRC.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\KnownBits.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\LEB128.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\LineIterator.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Locale.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\LockFileManager.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\LowLevelType.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ErrorHandling.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\FileOutputBuffer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\FileUtilities.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\FoldingSet.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\FormatVariadic.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\FormattedStream.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\GlobPattern.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\GraphWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Hashing.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Host.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\InitLLVM.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\IntEqClasses.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\IntervalMap.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\JSON.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\JamCRC.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\KnownBits.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\LEB128.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\LineIterator.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Locale.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\LockFileManager.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\LowLevelType.cpp">
<ObjectFileName>$(IntDir)/third_party/llvm-7.0/llvm/lib/Support/LowLevelType.cpp.obj</ObjectFileName>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\MD5.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ManagedStatic.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\MathExtras.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Memory.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\MemoryBuffer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Mutex.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\NativeFormatting.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Options.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Parallel.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Path.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\PluginLoader.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\PrettyStackTrace.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Process.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Program.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\RWMutex.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\RandomNumberGenerator.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Regex.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\SHA1.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ScaledNumber.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ScopedPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Signals.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\SmallPtrSet.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\SmallVector.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\SourceMgr.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\SpecialCaseList.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Statistic.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\StringExtras.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\StringMap.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\StringPool.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\StringRef.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\StringSaver.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\SystemUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\TarWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\TargetParser.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\TargetRegistry.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ThreadLocal.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ThreadPool.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Threading.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Timer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ToolOutputFile.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\TrigramIndex.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Triple.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Twine.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Unicode.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\UnicodeCaseFold.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Valgrind.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\VersionTuple.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Watchdog.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\WithColor.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\YAMLParser.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\YAMLTraits.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\circular_raw_ostream.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\raw_os_ostream.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\raw_ostream.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\regcomp.c" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\MD5.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ManagedStatic.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\MathExtras.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Memory.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\MemoryBuffer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Mutex.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\NativeFormatting.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Options.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Parallel.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Path.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\PluginLoader.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\PrettyStackTrace.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Process.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Program.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\RWMutex.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\RandomNumberGenerator.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Regex.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\SHA1.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ScaledNumber.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ScopedPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Signals.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\SmallPtrSet.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\SmallVector.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\SourceMgr.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\SpecialCaseList.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Statistic.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\StringExtras.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\StringMap.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\StringPool.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\StringRef.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\StringSaver.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\SystemUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\TarWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\TargetParser.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\TargetRegistry.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ThreadLocal.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ThreadPool.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Threading.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Timer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\ToolOutputFile.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\TrigramIndex.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Triple.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Twine.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Unicode.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\UnicodeCaseFold.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Valgrind.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\VersionTuple.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\Watchdog.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\WithColor.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\YAMLParser.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\YAMLTraits.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\circular_raw_ostream.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\raw_os_ostream.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\raw_ostream.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\regcomp.c">
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsC</CompileAs>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\regerror.c" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\regerror.c">
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsC</CompileAs>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\regexec.c" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\regexec.c">
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsC</CompileAs>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\regfree.c" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\regfree.c">
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsC</CompileAs>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\regstrlcpy.c" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\regstrlcpy.c">
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsC</CompileAs>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\xxhash.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Target.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\TargetIntrinsicInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\TargetLoweringObjectFile.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\TargetMachine.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\TargetMachineC.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineAddSub.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineAndOrXor.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineCalls.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineCasts.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineCompares.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineLoadStoreAlloca.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineMulDivRem.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombinePHI.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineSelect.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineShifts.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineSimplifyDemanded.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineVectorOps.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstructionCombining.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\ADCE.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\AlignmentFromAssumptions.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\BDCE.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\CallSiteSplitting.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\ConstantHoisting.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\ConstantProp.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\CorrelatedValuePropagation.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\DCE.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\DeadStoreElimination.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\DivRemPairs.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\EarlyCSE.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\FlattenCFGPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\Float2Int.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\GVN.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\GVNHoist.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\GVNSink.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\GuardWidening.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\IVUsersPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\IndVarSimplify.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\InductiveRangeCheckElimination.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\InferAddressSpaces.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\InstSimplifyPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\JumpThreading.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LICM.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopAccessAnalysisPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopDataPrefetch.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopDeletion.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopDistribute.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopIdiomRecognize.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopInstSimplify.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopInterchange.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopLoadElimination.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopPassManager.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopPredication.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopRerollPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopRotation.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopSimplifyCFG.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopSink.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopStrengthReduce.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopUnrollAndJamPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopUnrollPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopUnswitch.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopVersioningLICM.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LowerAtomic.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LowerExpectIntrinsic.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LowerGuardIntrinsic.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\MemCpyOptimizer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\MergeICmps.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\MergedLoadStoreMotion.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\NaryReassociate.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\NewGVN.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\PartiallyInlineLibCalls.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\PlaceSafepoints.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\Reassociate.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\Reg2Mem.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\RewriteStatepointsForGC.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SCCP.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SROA.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\Scalar.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\Scalarizer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SeparateConstOffsetFromGEP.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SimpleLoopUnswitch.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SimplifyCFGPass.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\Sink.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SpeculateAroundPHIs.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SpeculativeExecution.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\StraightLineStrengthReduce.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\StructurizeCFG.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\TailRecursionElimination.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\ASanStackFrameLayout.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\AddDiscriminators.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\BasicBlockUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\BreakCriticalEdges.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\BuildLibCalls.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\BypassSlowDivision.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\CallPromotionUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\CloneFunction.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\CloneModule.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\CodeExtractor.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\CtorUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\DemoteRegToStack.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\EntryExitInstrumenter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\EscapeEnumerator.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\Evaluator.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\FlattenCFG.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\FunctionComparator.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\FunctionImportUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\GlobalStatus.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\ImportedFunctionsInliningStatistics.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\InlineFunction.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\InstructionNamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\IntegerDivision.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LCSSA.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LibCallsShrinkWrap.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\Local.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopRotationUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopSimplify.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopUnroll.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopUnrollAndJam.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopUnrollPeel.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopUnrollRuntime.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopVersioning.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LowerInvoke.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LowerMemIntrinsics.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LowerSwitch.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\Mem2Reg.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\MetaRenamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\ModuleUtils.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\NameAnonGlobals.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\OrderedInstructions.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\PredicateInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\PromoteMemoryToRegister.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SSAUpdater.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SSAUpdaterBulk.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SanitizerStats.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SimplifyCFG.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SimplifyIndVar.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SimplifyLibCalls.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SplitModule.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\StripGCRelocates.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\StripNonLineTableDebugInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SymbolRewriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\UnifyFunctionExitNodes.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\Utils.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Support\xxhash.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\Target.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\TargetIntrinsicInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\TargetLoweringObjectFile.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\TargetMachine.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\TargetMachineC.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineAddSub.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineAndOrXor.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineCalls.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineCasts.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineCompares.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineLoadStoreAlloca.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineMulDivRem.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombinePHI.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineSelect.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineShifts.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineSimplifyDemanded.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstCombineVectorOps.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\InstCombine\InstructionCombining.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\ADCE.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\AlignmentFromAssumptions.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\BDCE.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\CallSiteSplitting.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\ConstantHoisting.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\ConstantProp.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\CorrelatedValuePropagation.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\DCE.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\DeadStoreElimination.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\DivRemPairs.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\EarlyCSE.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\FlattenCFGPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\Float2Int.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\GVN.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\GVNHoist.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\GVNSink.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\GuardWidening.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\IVUsersPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\IndVarSimplify.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\InductiveRangeCheckElimination.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\InferAddressSpaces.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\InstSimplifyPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\JumpThreading.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LICM.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopAccessAnalysisPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopDataPrefetch.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopDeletion.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopDistribute.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopIdiomRecognize.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopInstSimplify.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopInterchange.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopLoadElimination.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopPassManager.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopPredication.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopRerollPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopRotation.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopSimplifyCFG.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopSink.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopStrengthReduce.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopUnrollAndJamPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopUnrollPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopUnswitch.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LoopVersioningLICM.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LowerAtomic.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LowerExpectIntrinsic.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\LowerGuardIntrinsic.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\MemCpyOptimizer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\MergeICmps.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\MergedLoadStoreMotion.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\NaryReassociate.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\NewGVN.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\PartiallyInlineLibCalls.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\PlaceSafepoints.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\Reassociate.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\Reg2Mem.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\RewriteStatepointsForGC.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SCCP.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SROA.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\Scalar.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\Scalarizer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SeparateConstOffsetFromGEP.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SimpleLoopUnswitch.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SimplifyCFGPass.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\Sink.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SpeculateAroundPHIs.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\SpeculativeExecution.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\StraightLineStrengthReduce.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\StructurizeCFG.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Scalar\TailRecursionElimination.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\ASanStackFrameLayout.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\AddDiscriminators.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\BasicBlockUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\BreakCriticalEdges.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\BuildLibCalls.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\BypassSlowDivision.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\CallPromotionUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\CloneFunction.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\CloneModule.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\CodeExtractor.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\CtorUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\DemoteRegToStack.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\EntryExitInstrumenter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\EscapeEnumerator.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\Evaluator.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\FlattenCFG.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\FunctionComparator.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\FunctionImportUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\GlobalStatus.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\ImportedFunctionsInliningStatistics.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\InlineFunction.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\InstructionNamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\IntegerDivision.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LCSSA.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LibCallsShrinkWrap.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\Local.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopRotationUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopSimplify.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopUnroll.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopUnrollAndJam.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopUnrollPeel.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopUnrollRuntime.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LoopVersioning.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LowerInvoke.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LowerMemIntrinsics.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\LowerSwitch.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\Mem2Reg.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\MetaRenamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\ModuleUtils.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\NameAnonGlobals.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\OrderedInstructions.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\PredicateInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\PromoteMemoryToRegister.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SSAUpdater.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SSAUpdaterBulk.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SanitizerStats.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SimplifyCFG.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SimplifyIndVar.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SimplifyLibCalls.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SplitModule.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\StripGCRelocates.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\StripNonLineTableDebugInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\SymbolRewriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\UnifyFunctionExitNodes.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\Utils.cpp">
<ObjectFileName>$(IntDir)/third_party/llvm-7.0/llvm/lib/Transforms/Utils/Utils.cpp.obj</ObjectFileName>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\VNCoercion.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\ValueMapper.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\AsmParser\X86AsmInstrumentation.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\AsmParser\X86AsmParser.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\InstPrinter\X86ATTInstPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\InstPrinter\X86InstComments.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\InstPrinter\X86InstPrinterCommon.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\InstPrinter\X86IntelInstPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86AsmBackend.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86ELFObjectWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86MCAsmInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86MCCodeEmitter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86MCTargetDesc.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86MachObjectWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86WinCOFFObjectWriter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86WinCOFFStreamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86WinCOFFTargetStreamer.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\ShadowCallStack.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\TargetInfo\X86TargetInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\Utils\X86ShuffleDecode.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86AsmPrinter.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86AvoidStoreForwardingBlocks.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86CallFrameOptimization.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86CallLowering.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86CallingConv.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86CmovConversion.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86DomainReassignment.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86EvexToVex.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86ExpandPseudo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FastISel.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FixupBWInsts.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FixupLEAs.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FixupSetCC.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FlagsCopyLowering.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FloatingPoint.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FrameLowering.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86ISelDAGToDAG.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86ISelLowering.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86IndirectBranchTracking.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86InstrFMA3Info.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86InstrFoldTables.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86InstrInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86InstructionSelector.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86InterleavedAccess.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86LegalizerInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86MCInstLower.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86MachineFunctionInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86MacroFusion.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86OptimizeLEAs.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86PadShortFunction.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86RegisterBankInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86RegisterInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86RetpolineThunks.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86SelectionDAGInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86ShuffleDecodeConstantPool.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86SpeculativeLoadHardening.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86Subtarget.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86TargetMachine.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86TargetObjectFile.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86TargetTransformInfo.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86VZeroUpper.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86WinAllocaExpander.cpp" />
- <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86WinEHState.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\VNCoercion.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Transforms\Utils\ValueMapper.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\AsmParser\X86AsmInstrumentation.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\AsmParser\X86AsmParser.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\InstPrinter\X86ATTInstPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\InstPrinter\X86InstComments.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\InstPrinter\X86InstPrinterCommon.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\InstPrinter\X86IntelInstPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86AsmBackend.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86ELFObjectWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86MCAsmInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86MCCodeEmitter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86MCTargetDesc.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86MachObjectWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86WinCOFFObjectWriter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86WinCOFFStreamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\MCTargetDesc\X86WinCOFFTargetStreamer.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\ShadowCallStack.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\TargetInfo\X86TargetInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\Utils\X86ShuffleDecode.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86AsmPrinter.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86AvoidStoreForwardingBlocks.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86CallFrameOptimization.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86CallLowering.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86CallingConv.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86CmovConversion.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86DomainReassignment.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86EvexToVex.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86ExpandPseudo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FastISel.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FixupBWInsts.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FixupLEAs.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FixupSetCC.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FlagsCopyLowering.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FloatingPoint.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86FrameLowering.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86ISelDAGToDAG.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86ISelLowering.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86IndirectBranchTracking.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86InstrFMA3Info.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86InstrFoldTables.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86InstrInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86InstructionSelector.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86InterleavedAccess.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86LegalizerInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86MCInstLower.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86MachineFunctionInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86MacroFusion.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86OptimizeLEAs.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86PadShortFunction.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86RegisterBankInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86RegisterInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86RetpolineThunks.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86SelectionDAGInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86ShuffleDecodeConstantPool.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86SpeculativeLoadHardening.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86Subtarget.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86TargetMachine.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86TargetObjectFile.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86TargetTransformInfo.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86VZeroUpper.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86WinAllocaExpander.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Target\X86\X86WinEHState.cpp" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/llvm.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/llvm.vcxproj.filters
index 27a2904732e..980aee707c7 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/llvm.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/llvm.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\AliasAnalysis.cpp">
@@ -265,6 +265,15 @@
<ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\Analysis\VectorUtils.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\AsmParser\LLLexer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\AsmParser\LLParser.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\AsmParser\Parser.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)third_party\llvm-7.0\llvm\lib\BinaryFormat\Dwarf.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -2608,7 +2617,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="Source Files">
- <UniqueIdentifier>{2F259CF2-FDFE-365E-920F-2228D7410C8D}</UniqueIdentifier>
+ <UniqueIdentifier>{307AEBE6-F217-340D-9701-0167F1D37482}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/ALL_BUILD.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/ALL_BUILD.vcxproj
index 664c58f3bc5..7e9f82422d3 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/ALL_BUILD.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/ALL_BUILD.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{93979AE4-08B2-324E-AACE-6FFC302D2505}</ProjectGuid>
+ <ProjectGuid>{B2B07DA3-A388-307E-A283-3904C31F1CE2}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -68,32 +68,46 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\SPIRV-Tools.vcxproj">
- <Project>{EF1AF598-E402-38F1-A74A-35F18A1EC1CC}</Project>
+ <Project>{2866BC19-5FA8-3D67-8D94-751A3803A3DF}</Project>
<Name>SPIRV-Tools</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\link\SPIRV-Tools-link.vcxproj">
- <Project>{5F3076C6-2971-39DF-A3BE-A78FB0411AAE}</Project>
+ <Project>{AC311772-F314-3373-B869-71CD6C30634D}</Project>
<Name>SPIRV-Tools-link</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\opt\SPIRV-Tools-opt.vcxproj">
- <Project>{6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}</Project>
+ <Project>{2F8B8E0B-1B59-3671-91FE-A0E499B82D18}</Project>
<Name>SPIRV-Tools-opt</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\reduce\SPIRV-Tools-reduce.vcxproj">
- <Project>{F6702FDF-019F-3B2F-9CAD-15C15CD4F871}</Project>
+ <Project>{C672D2D1-E638-3565-87EC-11172BD73995}</Project>
<Name>SPIRV-Tools-reduce</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\SPIRV-Tools-shared.vcxproj">
- <Project>{62B58F28-8443-346E-8A29-F389A2C9CBAD}</Project>
+ <Project>{DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}</Project>
<Name>SPIRV-Tools-shared</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spirv-tools-pkg-config.vcxproj">
- <Project>{EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}</Project>
+ <Project>{96492351-1995-3B6B-A091-E7F4918E443B}</Project>
<Name>spirv-tools-pkg-config</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spirv-tools-shared-pkg-config.vcxproj">
- <Project>{0FA45296-9836-3DE4-BEA5-F2029797A16F}</Project>
+ <Project>{049A6034-6699-3DDF-BF15-47C981793305}</Project>
<Name>spirv-tools-shared-pkg-config</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/ALL_BUILD.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/ALL_BUILD.vcxproj.filters
index 5351b68524a..c048a6582ef 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/ALL_BUILD.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/ALL_BUILD.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
</ItemGroup>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools-shared.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools-shared.vcxproj
index 40a947c7eb3..61977c9ef63 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools-shared.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools-shared.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{62B58F28-8443-346E-8A29-F389A2C9CBAD}</ProjectGuid>
+ <ProjectGuid>{DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -71,6 +71,7 @@
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<TreatWarningAsError>true</TreatWarningAsError>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;SPIRV_TOOLS_IMPLEMENTATION;SPIRV_TOOLS_SHAREDLIB;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR="Debug";SPIRV_Tools_shared_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -116,10 +117,12 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<TreatWarningAsError>true</TreatWarningAsError>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;SPIRV_TOOLS_IMPLEMENTATION;SPIRV_TOOLS_SHAREDLIB;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR="Release";SPIRV_Tools_shared_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;SPIRV_TOOLS_IMPLEMENTATION;SPIRV_TOOLS_SHAREDLIB;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR=\"Release\";SPIRV_Tools_shared_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -148,493 +151,7 @@
</ProjectReference>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\extension_enum.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate enum-string mapping for SPIR-V vunified1.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --spirv-core-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json --extinst-debuginfo-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--extension-enum-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/extension_enum.inc" "--enum-string-mapping-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/enum_string_mapping.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/extension_enum.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\extension_enum.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\enum_string_mapping.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate enum-string mapping for SPIR-V vunified1.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --spirv-core-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json --extinst-debuginfo-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--extension-enum-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/extension_enum.inc" "--enum-string-mapping-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/enum_string_mapping.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/extension_enum.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\extension_enum.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\enum_string_mapping.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\core.insts-unified1.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate info tables for SPIR-V vunified1 core instructions and operands.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --spirv-core-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json --extinst-debuginfo-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--core-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/core.insts-unified1.inc" "--operand-kinds-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/operand.kinds-unified1.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/core.insts-unified1.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\core.insts-unified1.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\operand.kinds-unified1.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate info tables for SPIR-V vunified1 core instructions and operands.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --spirv-core-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json --extinst-debuginfo-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--core-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/core.insts-unified1.inc" "--operand-kinds-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/operand.kinds-unified1.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/core.insts-unified1.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\core.insts-unified1.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\operand.kinds-unified1.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\generators.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate tables based on the SPIR-V XML registry.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_registry_tables.py --xml=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/spir-v.xml "--generator-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/generators.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/generators.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_registry_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\spir-v.xml;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\generators.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate tables based on the SPIR-V XML registry.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_registry_tables.py --xml=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/spir-v.xml "--generator-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/generators.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/generators.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_registry_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\spir-v.xml;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\generators.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\opencl.std.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate info tables for OpenCL extended instructions and operands vunified1.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-opencl-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.std.100.grammar.json "--opencl-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/opencl.std.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/opencl.std.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.opencl.std.100.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\opencl.std.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate info tables for OpenCL extended instructions and operands vunified1.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-opencl-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.std.100.grammar.json "--opencl-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/opencl.std.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/opencl.std.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.opencl.std.100.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\opencl.std.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\glsl.std.450.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate info tables for GLSL extended instructions and operands vunified1.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-glsl-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/extinst.glsl.std.450.grammar.json "--glsl-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/glsl.std.450.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/glsl.std.450.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.glsl.std.450.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\glsl.std.450.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate info tables for GLSL extended instructions and operands vunified1.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-glsl-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/extinst.glsl.std.450.grammar.json "--glsl-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/glsl.std.450.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/glsl.std.450.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.glsl.std.450.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\glsl.std.450.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-explicit-vertex-parameter.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for spv-amd-shader-explicit-vertex-parameter.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-explicit-vertex-parameter.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-explicit-vertex-parameter.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for spv-amd-shader-explicit-vertex-parameter.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-explicit-vertex-parameter.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-explicit-vertex-parameter.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-explicit-vertex-parameter</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-explicit-vertex-parameter</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-trinary-minmax.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for spv-amd-shader-trinary-minmax.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-trinary-minmax.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-trinary-minmax.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-trinary-minmax.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-trinary-minmax.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for spv-amd-shader-trinary-minmax.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-trinary-minmax.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-trinary-minmax.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-trinary-minmax.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-trinary-minmax.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-trinary-minmax.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-trinary-minmax.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-trinary-minmax</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-trinary-minmax.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-trinary-minmax</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-gcn-shader.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for spv-amd-gcn-shader.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-gcn-shader.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-gcn-shader.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-gcn-shader.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-gcn-shader.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for spv-amd-gcn-shader.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-gcn-shader.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-gcn-shader.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-gcn-shader.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-gcn-shader.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-gcn-shader.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-gcn-shader.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-gcn-shader</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-gcn-shader.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-gcn-shader</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-ballot.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for spv-amd-shader-ballot.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-ballot.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-ballot.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-ballot.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-ballot.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for spv-amd-shader-ballot.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-ballot.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-ballot.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-ballot.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-ballot.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-ballot.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-ballot.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-ballot</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-ballot.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-ballot</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\debuginfo.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for debuginfo.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/debuginfo.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/debuginfo.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for debuginfo.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/debuginfo.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/debuginfo.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-debuginfo.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-debuginfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-debuginfo</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-debuginfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-debuginfo</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\DebugInfo.h.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate language specific header for DebugInfo.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_language_headers.py --extinst-name=DebugInfo --extinst-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--extinst-output-base=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/DebugInfo"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/DebugInfo.h.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_language_headers.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate language specific header for DebugInfo.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_language_headers.py --extinst-name=DebugInfo --extinst-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--extinst-output-base=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/DebugInfo"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/DebugInfo.h.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_language_headers.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-header-DebugInfo.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-header-DebugInfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-header-DebugInfo</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-header-DebugInfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-header-DebugInfo</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\build-version.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\build-version.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Update build-version.inc in the SPIRV-Tools build directory (if necessary).</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/update_build_version.py $(SolutionDir)third_party/SPIRV-Tools "$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/build-version.inc"
@@ -645,7 +162,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/build-version.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\update_build_version.py;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/build-version.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\update_build_version.py;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\build-version.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Update build-version.inc in the SPIRV-Tools build directory (if necessary).</Message>
@@ -658,7 +175,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/build-version.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\update_build_version.py;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/build-version.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\update_build_version.py;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\build-version.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
@@ -704,7 +221,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\text.h" />
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\text_handler.h" />
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate.h" />
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\bit_vector.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\bit_vector.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -716,7 +233,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\parse_number.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\parse_number.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -728,7 +245,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\string_utils.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\string_utils.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -740,7 +257,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\assembly_grammar.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\assembly_grammar.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -752,7 +269,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\binary.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\binary.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -764,7 +281,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\diagnostic.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\diagnostic.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -776,7 +293,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\disassemble.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\disassemble.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -788,7 +305,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\enum_string_mapping.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\enum_string_mapping.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -800,7 +317,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\ext_inst.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\ext_inst.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -812,7 +329,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\extensions.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\extensions.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -824,7 +341,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\id_descriptor.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\id_descriptor.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -836,7 +353,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\libspirv.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\libspirv.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -848,7 +365,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\name_mapper.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\name_mapper.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -860,7 +377,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opcode.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opcode.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -872,7 +389,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\operand.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\operand.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -884,7 +401,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\parsed_operand.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\parsed_operand.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -896,7 +413,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\print.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\print.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -908,7 +425,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\software_version.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\software_version.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -920,7 +437,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_endian.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_endian.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -932,7 +449,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_optimizer_options.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_optimizer_options.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -944,7 +461,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_reducer_options.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_reducer_options.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -956,7 +473,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_target_env.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_target_env.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -968,7 +485,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_validator_options.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_validator_options.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -980,7 +497,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\table.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\table.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -992,7 +509,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\text.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\text.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1004,7 +521,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\text_handler.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\text_handler.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1016,7 +533,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1028,7 +545,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_adjacency.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_adjacency.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1040,7 +557,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_annotation.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_annotation.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1052,7 +569,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_arithmetics.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_arithmetics.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1064,7 +581,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_atomics.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_atomics.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1076,7 +593,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_barriers.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_barriers.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1088,7 +605,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_bitwise.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_bitwise.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1100,7 +617,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_builtins.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_builtins.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1112,7 +629,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_capability.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_capability.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1124,7 +641,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_cfg.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_cfg.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1136,7 +653,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_composites.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_composites.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1148,7 +665,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_constants.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_constants.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1160,7 +677,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_conversion.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_conversion.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1172,7 +689,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_datarules.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_datarules.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1184,7 +701,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_debug.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_debug.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1196,7 +713,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_decorations.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_decorations.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1208,7 +725,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_derivatives.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_derivatives.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1220,7 +737,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_extensions.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_extensions.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1232,7 +749,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_execution_limitations.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_execution_limitations.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1244,7 +761,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_function.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_function.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1256,7 +773,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_id.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_id.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1268,7 +785,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_image.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_image.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1280,7 +797,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_interfaces.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_interfaces.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1292,7 +809,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_instruction.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_instruction.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1304,7 +821,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_layout.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_layout.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1316,7 +833,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_literals.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_literals.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1328,7 +845,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_logicals.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_logicals.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1340,7 +857,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_memory.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_memory.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1352,7 +869,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_memory_semantics.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_memory_semantics.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1364,7 +881,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_mode_setting.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_mode_setting.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1376,7 +893,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_non_uniform.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_non_uniform.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1388,7 +905,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_primitives.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_primitives.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1400,7 +917,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_scopes.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_scopes.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1412,7 +929,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_type.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_type.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1425,7 +942,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\decoration.h" />
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\basic_block.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\basic_block.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1437,7 +954,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\construct.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\construct.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1449,7 +966,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\function.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\function.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1461,7 +978,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\instruction.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\instruction.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1473,7 +990,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validation_state.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validation_state.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1485,7 +1002,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\pch_source.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\pch_source.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</PrecompiledHeaderFile>
@@ -1498,16 +1015,22 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\core_tables.vcxproj">
- <Project>{610A8C03-DBA2-3774-9E63-A8F8DE9BB082}</Project>
+ <Project>{95A9028D-402E-33FB-89FA-D07A85302C47}</Project>
<Name>core_tables</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\enum_string_mapping.vcxproj">
- <Project>{878391C5-E52B-3DC9-AA48-92D3EB99C2EE}</Project>
+ <Project>{1FFA8633-FFB4-3B7C-9F44-A42B791944C9}</Project>
<Name>enum_string_mapping</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\extinst_tables.vcxproj">
- <Project>{305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}</Project>
+ <Project>{136BDBF5-3C3E-3763-B285-79E67F8E442F}</Project>
<Name>extinst_tables</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools-shared.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools-shared.vcxproj.filters
index b366d83dac3..377b913d858 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools-shared.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools-shared.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\bit_vector.cpp">
@@ -326,70 +326,19 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\extension_enum.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\core.insts-unified1.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\generators.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\opencl.std.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\glsl.std.450.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-explicit-vertex-parameter.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-trinary-minmax.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-trinary-minmax.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-gcn-shader.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-gcn-shader.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-ballot.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-ballot.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\debuginfo.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-debuginfo.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\DebugInfo.h.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-header-DebugInfo.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\build-version.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\build-version.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{2F259CF2-FDFE-365E-920F-2228D7410C8D}</UniqueIdentifier>
+ <Filter Include="CMake Rules">
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files">
- <UniqueIdentifier>{06D2D69E-DE55-30BE-A8A1-FE6C66324860}</UniqueIdentifier>
+ <UniqueIdentifier>{BC4B8AD2-A096-36EC-A16A-CFEE34C3D52C}</UniqueIdentifier>
</Filter>
- <Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{307AEBE6-F217-340D-9701-0167F1D37482}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools.vcxproj
index d3e988edd4e..d0a50835435 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{EF1AF598-E402-38F1-A74A-35F18A1EC1CC}</ProjectGuid>
+ <ProjectGuid>{2866BC19-5FA8-3D67-8D94-751A3803A3DF}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -67,6 +67,7 @@
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<TreatWarningAsError>true</TreatWarningAsError>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -102,10 +103,12 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<TreatWarningAsError>true</TreatWarningAsError>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -124,493 +127,7 @@
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\extension_enum.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate enum-string mapping for SPIR-V vunified1.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --spirv-core-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json --extinst-debuginfo-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--extension-enum-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/extension_enum.inc" "--enum-string-mapping-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/enum_string_mapping.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/extension_enum.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\extension_enum.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\enum_string_mapping.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate enum-string mapping for SPIR-V vunified1.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --spirv-core-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json --extinst-debuginfo-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--extension-enum-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/extension_enum.inc" "--enum-string-mapping-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/enum_string_mapping.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/extension_enum.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\extension_enum.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\enum_string_mapping.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\core.insts-unified1.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate info tables for SPIR-V vunified1 core instructions and operands.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --spirv-core-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json --extinst-debuginfo-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--core-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/core.insts-unified1.inc" "--operand-kinds-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/operand.kinds-unified1.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/core.insts-unified1.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\core.insts-unified1.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\operand.kinds-unified1.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate info tables for SPIR-V vunified1 core instructions and operands.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --spirv-core-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json --extinst-debuginfo-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--core-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/core.insts-unified1.inc" "--operand-kinds-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/operand.kinds-unified1.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/core.insts-unified1.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\core.insts-unified1.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\operand.kinds-unified1.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\generators.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate tables based on the SPIR-V XML registry.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_registry_tables.py --xml=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/spir-v.xml "--generator-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/generators.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/generators.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_registry_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\spir-v.xml;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\generators.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate tables based on the SPIR-V XML registry.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_registry_tables.py --xml=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/spir-v.xml "--generator-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/generators.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/generators.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_registry_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\spir-v.xml;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\generators.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\opencl.std.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate info tables for OpenCL extended instructions and operands vunified1.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-opencl-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.std.100.grammar.json "--opencl-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/opencl.std.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/opencl.std.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.opencl.std.100.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\opencl.std.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate info tables for OpenCL extended instructions and operands vunified1.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-opencl-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.std.100.grammar.json "--opencl-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/opencl.std.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/opencl.std.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.opencl.std.100.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\opencl.std.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\glsl.std.450.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate info tables for GLSL extended instructions and operands vunified1.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-glsl-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/extinst.glsl.std.450.grammar.json "--glsl-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/glsl.std.450.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/glsl.std.450.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.glsl.std.450.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\glsl.std.450.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate info tables for GLSL extended instructions and operands vunified1.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-glsl-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/extinst.glsl.std.450.grammar.json "--glsl-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/glsl.std.450.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/glsl.std.450.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.glsl.std.450.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\glsl.std.450.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-explicit-vertex-parameter.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for spv-amd-shader-explicit-vertex-parameter.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-explicit-vertex-parameter.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-explicit-vertex-parameter.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for spv-amd-shader-explicit-vertex-parameter.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-explicit-vertex-parameter.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-explicit-vertex-parameter.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-explicit-vertex-parameter</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-explicit-vertex-parameter</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-trinary-minmax.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for spv-amd-shader-trinary-minmax.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-trinary-minmax.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-trinary-minmax.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-trinary-minmax.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-trinary-minmax.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for spv-amd-shader-trinary-minmax.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-trinary-minmax.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-trinary-minmax.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-trinary-minmax.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-trinary-minmax.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-trinary-minmax.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-trinary-minmax.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-trinary-minmax</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-trinary-minmax.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-trinary-minmax</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-gcn-shader.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for spv-amd-gcn-shader.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-gcn-shader.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-gcn-shader.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-gcn-shader.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-gcn-shader.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for spv-amd-gcn-shader.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-gcn-shader.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-gcn-shader.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-gcn-shader.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-gcn-shader.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-gcn-shader.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-gcn-shader.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-gcn-shader</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-gcn-shader.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-gcn-shader</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-ballot.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for spv-amd-shader-ballot.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-ballot.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-ballot.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-ballot.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-ballot.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for spv-amd-shader-ballot.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-ballot.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-ballot.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-ballot.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-ballot.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-ballot.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-ballot.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-ballot</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-ballot.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-ballot</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\debuginfo.insts.inc.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for debuginfo.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/debuginfo.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/debuginfo.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for debuginfo.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/debuginfo.insts.inc"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/debuginfo.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-debuginfo.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-debuginfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-debuginfo</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-debuginfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-debuginfo</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\DebugInfo.h.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate language specific header for DebugInfo.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_language_headers.py --extinst-name=DebugInfo --extinst-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--extinst-output-base=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/DebugInfo"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/DebugInfo.h.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_language_headers.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate language specific header for DebugInfo.</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_language_headers.py --extinst-name=DebugInfo --extinst-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--extinst-output-base=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/DebugInfo"
-if %errorlevel% neq 0 goto :cmEnd
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/DebugInfo.h.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_language_headers.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-header-DebugInfo.rule">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-header-DebugInfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-header-DebugInfo</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">setlocal
-:cmEnd
-endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
-:cmErrorLevel
-exit /b %1
-:cmDone
-if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-header-DebugInfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-header-DebugInfo</Outputs>
- <LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\build-version.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\build-version.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Update build-version.inc in the SPIRV-Tools build directory (if necessary).</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/update_build_version.py $(SolutionDir)third_party/SPIRV-Tools "$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/build-version.inc"
@@ -621,7 +138,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/build-version.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\update_build_version.py;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/build-version.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\update_build_version.py;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\build-version.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Update build-version.inc in the SPIRV-Tools build directory (if necessary).</Message>
@@ -634,7 +151,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/build-version.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\update_build_version.py;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/build-version.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\update_build_version.py;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\build-version.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
@@ -680,7 +197,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\text.h" />
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\text_handler.h" />
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate.h" />
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\bit_vector.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\bit_vector.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -692,7 +209,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\parse_number.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\parse_number.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -704,7 +221,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\string_utils.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\string_utils.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -716,7 +233,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\assembly_grammar.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\assembly_grammar.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -728,7 +245,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\binary.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\binary.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -740,7 +257,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\diagnostic.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\diagnostic.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -752,7 +269,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\disassemble.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\disassemble.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -764,7 +281,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\enum_string_mapping.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\enum_string_mapping.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -776,7 +293,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\ext_inst.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\ext_inst.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -788,7 +305,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\extensions.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\extensions.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -800,7 +317,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\id_descriptor.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\id_descriptor.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -812,7 +329,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\libspirv.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\libspirv.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -824,7 +341,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\name_mapper.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\name_mapper.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -836,7 +353,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opcode.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opcode.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -848,7 +365,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\operand.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\operand.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -860,7 +377,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\parsed_operand.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\parsed_operand.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -872,7 +389,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\print.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\print.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -884,7 +401,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\software_version.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\software_version.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -896,7 +413,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_endian.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_endian.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -908,7 +425,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_optimizer_options.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_optimizer_options.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -920,7 +437,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_reducer_options.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_reducer_options.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -932,7 +449,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_target_env.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_target_env.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -944,7 +461,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_validator_options.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\spirv_validator_options.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -956,7 +473,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\table.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\table.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -968,7 +485,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\text.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\text.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -980,7 +497,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\text_handler.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\text_handler.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -992,7 +509,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1004,7 +521,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_adjacency.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_adjacency.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1016,7 +533,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_annotation.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_annotation.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1028,7 +545,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_arithmetics.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_arithmetics.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1040,7 +557,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_atomics.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_atomics.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1052,7 +569,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_barriers.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_barriers.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1064,7 +581,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_bitwise.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_bitwise.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1076,7 +593,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_builtins.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_builtins.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1088,7 +605,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_capability.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_capability.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1100,7 +617,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_cfg.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_cfg.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1112,7 +629,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_composites.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_composites.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1124,7 +641,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_constants.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_constants.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1136,7 +653,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_conversion.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_conversion.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1148,7 +665,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_datarules.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_datarules.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1160,7 +677,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_debug.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_debug.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1172,7 +689,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_decorations.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_decorations.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1184,7 +701,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_derivatives.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_derivatives.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1196,7 +713,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_extensions.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_extensions.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1208,7 +725,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_execution_limitations.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_execution_limitations.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1220,7 +737,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_function.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_function.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1232,7 +749,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_id.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_id.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1244,7 +761,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_image.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_image.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1256,7 +773,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_interfaces.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_interfaces.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1268,7 +785,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_instruction.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_instruction.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1280,7 +797,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_layout.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_layout.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1292,7 +809,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_literals.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_literals.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1304,7 +821,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_logicals.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_logicals.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1316,7 +833,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_memory.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_memory.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1328,7 +845,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_memory_semantics.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_memory_semantics.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1340,7 +857,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_mode_setting.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_mode_setting.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1352,7 +869,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_non_uniform.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_non_uniform.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1364,7 +881,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_primitives.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_primitives.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1376,7 +893,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_scopes.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_scopes.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1388,7 +905,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_type.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validate_type.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1401,7 +918,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\decoration.h" />
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\basic_block.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\basic_block.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1413,7 +930,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\construct.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\construct.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1425,7 +942,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\function.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\function.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1437,7 +954,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\instruction.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\instruction.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1449,7 +966,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validation_state.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\val\validation_state.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1461,7 +978,7 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\pch_source.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\pch_source.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source.h</PrecompiledHeaderFile>
@@ -1474,16 +991,22 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\core_tables.vcxproj">
- <Project>{610A8C03-DBA2-3774-9E63-A8F8DE9BB082}</Project>
+ <Project>{95A9028D-402E-33FB-89FA-D07A85302C47}</Project>
<Name>core_tables</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\enum_string_mapping.vcxproj">
- <Project>{878391C5-E52B-3DC9-AA48-92D3EB99C2EE}</Project>
+ <Project>{1FFA8633-FFB4-3B7C-9F44-A42B791944C9}</Project>
<Name>enum_string_mapping</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\extinst_tables.vcxproj">
- <Project>{305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}</Project>
+ <Project>{136BDBF5-3C3E-3763-B285-79E67F8E442F}</Project>
<Name>extinst_tables</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools.vcxproj.filters
index b366d83dac3..377b913d858 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/SPIRV-Tools.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\util\bit_vector.cpp">
@@ -326,70 +326,19 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\extension_enum.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\core.insts-unified1.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\generators.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\opencl.std.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\glsl.std.450.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-explicit-vertex-parameter.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-trinary-minmax.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-trinary-minmax.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-gcn-shader.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-gcn-shader.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-ballot.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-ballot.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\debuginfo.insts.inc.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-debuginfo.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\DebugInfo.h.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-header-DebugInfo.rule">
- <Filter>CMake Rules</Filter>
- </CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\build-version.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\build-version.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{2F259CF2-FDFE-365E-920F-2228D7410C8D}</UniqueIdentifier>
+ <Filter Include="CMake Rules">
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files">
- <UniqueIdentifier>{06D2D69E-DE55-30BE-A8A1-FE6C66324860}</UniqueIdentifier>
+ <UniqueIdentifier>{BC4B8AD2-A096-36EC-A16A-CFEE34C3D52C}</UniqueIdentifier>
</Filter>
- <Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{307AEBE6-F217-340D-9701-0167F1D37482}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/core_tables.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/core_tables.vcxproj
index 03381aa8d15..08d39cff88c 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/core_tables.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/core_tables.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{610A8C03-DBA2-3774-9E63-A8F8DE9BB082}</ProjectGuid>
+ <ProjectGuid>{95A9028D-402E-33FB-89FA-D07A85302C47}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\core.insts-unified1.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\core.insts-unified1.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate info tables for SPIR-V vunified1 core instructions and operands.</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --spirv-core-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json --extinst-debuginfo-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--core-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/core.insts-unified1.inc" "--operand-kinds-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/operand.kinds-unified1.inc"
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/core.insts-unified1.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/core.insts-unified1.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\core.insts-unified1.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\operand.kinds-unified1.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate info tables for SPIR-V vunified1 core instructions and operands.</Message>
@@ -89,13 +89,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/core.insts-unified1.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/core.insts-unified1.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\core.insts-unified1.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\operand.kinds-unified1.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\generators.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\generators.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate tables based on the SPIR-V XML registry.</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_registry_tables.py --xml=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/spir-v.xml "--generator-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/generators.inc"
@@ -106,7 +106,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/generators.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_registry_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\spir-v.xml;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/generators.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_registry_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\spir-v.xml;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\generators.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate tables based on the SPIR-V XML registry.</Message>
@@ -119,13 +119,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/generators.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_registry_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\spir-v.xml;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/generators.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_registry_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\spir-v.xml;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\generators.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\core_tables.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\core_tables.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
:cmEnd
@@ -134,7 +134,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/core_tables.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\core.insts-unified1.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\generators.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\operand.kinds-unified1.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/core_tables.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\core.insts-unified1.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\generators.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\operand.kinds-unified1.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\core_tables</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -145,7 +145,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/core_tables.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\core.insts-unified1.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\generators.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\operand.kinds-unified1.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/core_tables.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\core.insts-unified1.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\generators.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\operand.kinds-unified1.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\core_tables</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/core_tables.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/core_tables.vcxproj.filters
index 11fceabbd7a..1f9e68fd375 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/core_tables.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/core_tables.vcxproj.filters
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\core.insts-unified1.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\core.insts-unified1.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\generators.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\generators.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\core_tables.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\core_tables.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -16,7 +16,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/enum_string_mapping.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/enum_string_mapping.vcxproj
index 18c18da3656..e04f970e70e 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/enum_string_mapping.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/enum_string_mapping.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{878391C5-E52B-3DC9-AA48-92D3EB99C2EE}</ProjectGuid>
+ <ProjectGuid>{1FFA8633-FFB4-3B7C-9F44-A42B791944C9}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\extension_enum.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\extension_enum.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate enum-string mapping for SPIR-V vunified1.</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --spirv-core-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json --extinst-debuginfo-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--extension-enum-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/extension_enum.inc" "--enum-string-mapping-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/enum_string_mapping.inc"
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/extension_enum.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/extension_enum.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\extension_enum.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\enum_string_mapping.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate enum-string mapping for SPIR-V vunified1.</Message>
@@ -89,13 +89,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/extension_enum.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/extension_enum.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\extension_enum.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\enum_string_mapping.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\enum_string_mapping.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\enum_string_mapping.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
:cmEnd
@@ -104,7 +104,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/enum_string_mapping.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\extension_enum.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\enum_string_mapping.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/enum_string_mapping.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\extension_enum.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\enum_string_mapping.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\enum_string_mapping</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -115,7 +115,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/enum_string_mapping.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\extension_enum.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\enum_string_mapping.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/enum_string_mapping.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\extension_enum.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\enum_string_mapping.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\enum_string_mapping</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/enum_string_mapping.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/enum_string_mapping.vcxproj.filters
index cd2400cfa93..0e7c2bdee4a 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/enum_string_mapping.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/enum_string_mapping.vcxproj.filters
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\extension_enum.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\extension_enum.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\enum_string_mapping.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\enum_string_mapping.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -13,7 +13,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/extinst_tables.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/extinst_tables.vcxproj
index 650198959b7..8afd8335b56 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/extinst_tables.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/extinst_tables.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}</ProjectGuid>
+ <ProjectGuid>{136BDBF5-3C3E-3763-B285-79E67F8E442F}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\opencl.std.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\opencl.std.insts.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate info tables for OpenCL extended instructions and operands vunified1.</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-opencl-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.std.100.grammar.json "--opencl-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/opencl.std.insts.inc"
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/opencl.std.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.opencl.std.100.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/opencl.std.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.opencl.std.100.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\opencl.std.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate info tables for OpenCL extended instructions and operands vunified1.</Message>
@@ -89,13 +89,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/opencl.std.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.opencl.std.100.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/opencl.std.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.opencl.std.100.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\opencl.std.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\glsl.std.450.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\glsl.std.450.insts.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate info tables for GLSL extended instructions and operands vunified1.</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-glsl-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/extinst.glsl.std.450.grammar.json "--glsl-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/glsl.std.450.insts.inc"
@@ -106,7 +106,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/glsl.std.450.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.glsl.std.450.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/glsl.std.450.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.glsl.std.450.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\glsl.std.450.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate info tables for GLSL extended instructions and operands vunified1.</Message>
@@ -119,13 +119,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/glsl.std.450.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.glsl.std.450.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/glsl.std.450.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.glsl.std.450.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\glsl.std.450.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\extinst_tables.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\extinst_tables.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
:cmEnd
@@ -134,7 +134,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/extinst_tables.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\opencl.std.insts.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\glsl.std.450.insts.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/extinst_tables.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\opencl.std.insts.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\glsl.std.450.insts.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\extinst_tables</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -145,7 +145,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/extinst_tables.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\opencl.std.insts.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\glsl.std.450.insts.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/extinst_tables.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\opencl.std.insts.inc;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\glsl.std.450.insts.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\extinst_tables</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
@@ -155,28 +155,40 @@ if %errorlevel% neq 0 goto :VCEnd</Command>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-debuginfo.vcxproj">
- <Project>{75B0856F-5AC7-31E6-91C6-AD88B3745281}</Project>
+ <Project>{2F264302-EFA1-396F-AD64-0AC05E686177}</Project>
<Name>spirv-tools-debuginfo</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-header-DebugInfo.vcxproj">
- <Project>{15CEFCBE-B270-3849-9E1F-A5A35F5374C3}</Project>
+ <Project>{B0183B68-4A3E-382F-A66C-520DA9CF24F9}</Project>
<Name>spirv-tools-header-DebugInfo</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-gcn-shader.vcxproj">
- <Project>{413EAFA1-B915-3FB9-8065-261CD1875597}</Project>
+ <Project>{2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}</Project>
<Name>spirv-tools-spv-amd-gcn-shader</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-ballot.vcxproj">
- <Project>{F353E330-643D-353C-9031-52ED11A7E914}</Project>
+ <Project>{07107D83-83B6-3BE6-8827-20DB1D90942F}</Project>
<Name>spirv-tools-spv-amd-shader-ballot</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj">
- <Project>{36E309E0-4447-33C6-92DA-FFF8793CF0A6}</Project>
+ <Project>{684F4245-24D8-3E74-ACCE-4FC6407F80FC}</Project>
<Name>spirv-tools-spv-amd-shader-explicit-vertex-parameter</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-trinary-minmax.vcxproj">
- <Project>{896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}</Project>
+ <Project>{EC14378D-27D2-31F1-B61E-9A92CB3E00A6}</Project>
<Name>spirv-tools-spv-amd-shader-trinary-minmax</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/extinst_tables.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/extinst_tables.vcxproj.filters
index 81b75454a74..aec3cddd53e 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/extinst_tables.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/extinst_tables.vcxproj.filters
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\opencl.std.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\opencl.std.insts.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\glsl.std.450.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\glsl.std.450.insts.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\extinst_tables.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\extinst_tables.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -16,7 +16,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/link/SPIRV-Tools-link.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/link/SPIRV-Tools-link.vcxproj
index d803f5744a5..2bd8cc72e7f 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/link/SPIRV-Tools-link.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/link/SPIRV-Tools-link.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{5F3076C6-2971-39DF-A3BE-A78FB0411AAE}</ProjectGuid>
+ <ProjectGuid>{AC311772-F314-3373-B869-71CD6C30634D}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -66,6 +66,7 @@
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<TreatWarningAsError>true</TreatWarningAsError>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -100,10 +101,12 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<TreatWarningAsError>true</TreatWarningAsError>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -122,16 +125,20 @@
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\link\linker.cpp" />
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\link\linker.cpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\SPIRV-Tools.vcxproj">
- <Project>{EF1AF598-E402-38F1-A74A-35F18A1EC1CC}</Project>
+ <Project>{2866BC19-5FA8-3D67-8D94-751A3803A3DF}</Project>
<Name>SPIRV-Tools</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\opt\SPIRV-Tools-opt.vcxproj">
- <Project>{6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}</Project>
+ <Project>{2F8B8E0B-1B59-3671-91FE-A0E499B82D18}</Project>
<Name>SPIRV-Tools-opt</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/link/SPIRV-Tools-link.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/link/SPIRV-Tools-link.vcxproj.filters
index 72d6d53e81b..a1c49446e32 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/link/SPIRV-Tools-link.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/link/SPIRV-Tools-link.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\link\linker.cpp">
@@ -7,7 +7,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="Source Files">
- <UniqueIdentifier>{2F259CF2-FDFE-365E-920F-2228D7410C8D}</UniqueIdentifier>
+ <UniqueIdentifier>{307AEBE6-F217-340D-9701-0167F1D37482}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/opt/SPIRV-Tools-opt.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/opt/SPIRV-Tools-opt.vcxproj
index 0b0173b74f8..923d5480088 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/opt/SPIRV-Tools-opt.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/opt/SPIRV-Tools-opt.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}</ProjectGuid>
+ <ProjectGuid>{2F8B8E0B-1B59-3671-91FE-A0E499B82D18}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -67,6 +67,7 @@
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<TreatWarningAsError>true</TreatWarningAsError>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -102,10 +103,12 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<TreatWarningAsError>true</TreatWarningAsError>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -216,7 +219,7 @@
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\value_number_table.h" />
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\vector_dce.h" />
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\workaround1209.h" />
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\aggressive_dead_code_elim_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\aggressive_dead_code_elim_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -228,7 +231,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\basic_block.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\basic_block.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -240,7 +243,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\block_merge_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\block_merge_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -252,7 +255,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\build_module.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\build_module.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -264,7 +267,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\ccp_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\ccp_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -276,7 +279,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\cfg_cleanup_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\cfg_cleanup_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -288,7 +291,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\cfg.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\cfg.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -300,7 +303,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\code_sink.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\code_sink.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -312,7 +315,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\combine_access_chains.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\combine_access_chains.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -324,7 +327,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\common_uniform_elim_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\common_uniform_elim_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -336,7 +339,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\compact_ids_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\compact_ids_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -348,7 +351,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\composite.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\composite.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -360,7 +363,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\const_folding_rules.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\const_folding_rules.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -372,7 +375,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\constants.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\constants.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -384,7 +387,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\copy_prop_arrays.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\copy_prop_arrays.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -396,7 +399,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\dead_branch_elim_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\dead_branch_elim_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -408,7 +411,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\dead_insert_elim_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\dead_insert_elim_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -420,7 +423,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\dead_variable_elimination.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\dead_variable_elimination.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -432,7 +435,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\decoration_manager.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\decoration_manager.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -444,7 +447,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\def_use_manager.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\def_use_manager.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -456,7 +459,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\dominator_analysis.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\dominator_analysis.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -468,7 +471,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\dominator_tree.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\dominator_tree.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -480,7 +483,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\eliminate_dead_constant_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\eliminate_dead_constant_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -492,7 +495,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\eliminate_dead_functions_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\eliminate_dead_functions_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -504,7 +507,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\feature_manager.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\feature_manager.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -516,7 +519,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\flatten_decoration_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\flatten_decoration_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -528,7 +531,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\fold.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\fold.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -540,7 +543,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\folding_rules.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\folding_rules.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -552,7 +555,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\fold_spec_constant_op_and_composite_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\fold_spec_constant_op_and_composite_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -564,7 +567,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\freeze_spec_constant_value_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\freeze_spec_constant_value_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -576,7 +579,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\function.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\function.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -588,7 +591,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\if_conversion.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\if_conversion.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -600,7 +603,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\inline_exhaustive_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\inline_exhaustive_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -612,7 +615,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\inline_opaque_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\inline_opaque_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -624,7 +627,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\inline_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\inline_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -636,7 +639,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\inst_bindless_check_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\inst_bindless_check_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -648,7 +651,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\instruction.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\instruction.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -660,7 +663,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\instruction_list.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\instruction_list.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -672,7 +675,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\instrument_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\instrument_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -684,7 +687,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\ir_context.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\ir_context.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -696,7 +699,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\ir_loader.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\ir_loader.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -708,7 +711,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\licm_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\licm_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -720,7 +723,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\local_access_chain_convert_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\local_access_chain_convert_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -732,7 +735,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\local_redundancy_elimination.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\local_redundancy_elimination.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -744,7 +747,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\local_single_block_elim_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\local_single_block_elim_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -756,7 +759,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\local_single_store_elim_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\local_single_store_elim_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -768,7 +771,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\local_ssa_elim_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\local_ssa_elim_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -780,7 +783,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_dependence.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_dependence.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -792,7 +795,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_dependence_helpers.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_dependence_helpers.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -804,7 +807,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_descriptor.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_descriptor.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -816,7 +819,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_fission.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_fission.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -828,7 +831,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_fusion.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_fusion.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -840,7 +843,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_fusion_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_fusion_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -852,7 +855,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_peeling.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_peeling.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -864,7 +867,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_utils.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_utils.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -876,7 +879,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_unroller.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_unroller.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -888,7 +891,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_unswitch_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\loop_unswitch_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -900,7 +903,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\mem_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\mem_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -912,7 +915,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\merge_return_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\merge_return_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -924,7 +927,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\module.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\module.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -936,7 +939,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\optimizer.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\optimizer.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -948,7 +951,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -960,7 +963,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\pass_manager.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\pass_manager.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -972,7 +975,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\private_to_local_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\private_to_local_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -984,7 +987,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\process_lines_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\process_lines_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -996,7 +999,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\propagator.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\propagator.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1008,7 +1011,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\reduce_load_size.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\reduce_load_size.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1020,7 +1023,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\redundancy_elimination.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\redundancy_elimination.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1032,7 +1035,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\register_pressure.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\register_pressure.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1044,7 +1047,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\remove_duplicates_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\remove_duplicates_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1056,7 +1059,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\replace_invalid_opc.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\replace_invalid_opc.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1068,7 +1071,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\scalar_analysis.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\scalar_analysis.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1080,7 +1083,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\scalar_analysis_simplification.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\scalar_analysis_simplification.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1092,7 +1095,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\scalar_replacement_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\scalar_replacement_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1104,7 +1107,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\set_spec_constant_default_value_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\set_spec_constant_default_value_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1116,7 +1119,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\simplification_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\simplification_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1128,7 +1131,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\ssa_rewrite_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\ssa_rewrite_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1140,7 +1143,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\strength_reduction_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\strength_reduction_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1152,7 +1155,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\strip_debug_info_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\strip_debug_info_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1164,7 +1167,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\strip_reflect_info_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\strip_reflect_info_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1176,7 +1179,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\struct_cfg_analysis.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\struct_cfg_analysis.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1188,7 +1191,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\type_manager.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\type_manager.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1200,7 +1203,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\types.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\types.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1212,7 +1215,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\unify_const_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\unify_const_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1224,7 +1227,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\upgrade_memory_model.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\upgrade_memory_model.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1236,7 +1239,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\value_number_table.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\value_number_table.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1248,7 +1251,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\vector_dce.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\vector_dce.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1260,7 +1263,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\workaround1209.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\workaround1209.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -1272,7 +1275,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_opt.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_opt.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\pch_source_opt.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\pch_source_opt.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_opt.h</PrecompiledHeaderFile>
@@ -1285,8 +1288,10 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\SPIRV-Tools.vcxproj">
- <Project>{EF1AF598-E402-38F1-A74A-35F18A1EC1CC}</Project>
+ <Project>{2866BC19-5FA8-3D67-8D94-751A3803A3DF}</Project>
<Name>SPIRV-Tools</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/opt/SPIRV-Tools-opt.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/opt/SPIRV-Tools-opt.vcxproj.filters
index a042ef81244..1a2c5fc57c1 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/opt/SPIRV-Tools-opt.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/opt/SPIRV-Tools-opt.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\opt\aggressive_dead_code_elim_pass.cpp">
@@ -548,11 +548,11 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{2F259CF2-FDFE-365E-920F-2228D7410C8D}</UniqueIdentifier>
- </Filter>
<Filter Include="Header Files">
- <UniqueIdentifier>{06D2D69E-DE55-30BE-A8A1-FE6C66324860}</UniqueIdentifier>
+ <UniqueIdentifier>{BC4B8AD2-A096-36EC-A16A-CFEE34C3D52C}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{307AEBE6-F217-340D-9701-0167F1D37482}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/reduce/SPIRV-Tools-reduce.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/reduce/SPIRV-Tools-reduce.vcxproj
index fb0d7bda3ce..19d5e5eb1d2 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/reduce/SPIRV-Tools-reduce.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/reduce/SPIRV-Tools-reduce.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{F6702FDF-019F-3B2F-9CAD-15C15CD4F871}</ProjectGuid>
+ <ProjectGuid>{C672D2D1-E638-3565-87EC-11172BD73995}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -67,6 +67,7 @@
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<TreatWarningAsError>true</TreatWarningAsError>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -102,10 +103,12 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<TreatWarningAsError>true</TreatWarningAsError>
+ <UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
- <DebugInformationFormat></DebugInformationFormat>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SBCS;WINVER=0x501;NOMINMAX;STRICT;REACTOR_LLVM_VERSION=7;SPIRV_WINDOWS;SPIRV_COLOR_TERMINAL;SPIRV_CHECK_CONTEXT;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -138,7 +141,7 @@
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\remove_unreferenced_instruction_reduction_pass.h" />
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\structured_loop_to_selection_reduction_opportunity.h" />
<ClInclude Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\structured_loop_to_selection_reduction_pass.h" />
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\change_operand_reduction_opportunity.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\change_operand_reduction_opportunity.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -150,7 +153,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\change_operand_to_undef_reduction_opportunity.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\change_operand_to_undef_reduction_opportunity.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -162,7 +165,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\operand_to_const_reduction_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\operand_to_const_reduction_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -174,7 +177,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\operand_to_undef_reduction_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\operand_to_undef_reduction_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -186,7 +189,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\operand_to_dominating_id_reduction_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\operand_to_dominating_id_reduction_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -198,7 +201,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\reducer.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\reducer.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -210,7 +213,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\reduction_opportunity.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\reduction_opportunity.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -222,7 +225,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\reduction_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\reduction_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -234,7 +237,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\reduction_util.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\reduction_util.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -246,7 +249,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\remove_instruction_reduction_opportunity.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\remove_instruction_reduction_opportunity.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -258,7 +261,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\remove_unreferenced_instruction_reduction_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\remove_unreferenced_instruction_reduction_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -270,7 +273,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\remove_opname_instruction_reduction_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\remove_opname_instruction_reduction_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -282,7 +285,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\structured_loop_to_selection_reduction_opportunity.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\structured_loop_to_selection_reduction_opportunity.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -294,7 +297,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\structured_loop_to_selection_reduction_pass.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\structured_loop_to_selection_reduction_pass.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</ForcedIncludeFiles>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
@@ -306,7 +309,7 @@
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\pch_source_reduce.pch</PrecompiledHeaderOutputFile>
</ClCompile>
- <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\pch_source_reduce.cpp" >
+ <ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\pch_source_reduce.cpp">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalOptions) /Zm300</AdditionalOptions>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">pch_source_reduce.h</PrecompiledHeaderFile>
@@ -319,12 +322,16 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\SPIRV-Tools.vcxproj">
- <Project>{EF1AF598-E402-38F1-A74A-35F18A1EC1CC}</Project>
+ <Project>{2866BC19-5FA8-3D67-8D94-751A3803A3DF}</Project>
<Name>SPIRV-Tools</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\opt\SPIRV-Tools-opt.vcxproj">
- <Project>{6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}</Project>
+ <Project>{2F8B8E0B-1B59-3671-91FE-A0E499B82D18}</Project>
<Name>SPIRV-Tools-opt</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/reduce/SPIRV-Tools-reduce.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/reduce/SPIRV-Tools-reduce.vcxproj.filters
index 5c155d3a5b9..2513d01f9f2 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/reduce/SPIRV-Tools-reduce.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/reduce/SPIRV-Tools-reduce.vcxproj.filters
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)third_party\SPIRV-Tools\source\reduce\change_operand_reduction_opportunity.cpp">
@@ -92,11 +92,11 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{2F259CF2-FDFE-365E-920F-2228D7410C8D}</UniqueIdentifier>
- </Filter>
<Filter Include="Header Files">
- <UniqueIdentifier>{06D2D69E-DE55-30BE-A8A1-FE6C66324860}</UniqueIdentifier>
+ <UniqueIdentifier>{BC4B8AD2-A096-36EC-A16A-CFEE34C3D52C}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{307AEBE6-F217-340D-9701-0167F1D37482}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-build-version.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-build-version.vcxproj
index f058c16c483..019527b0320 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-build-version.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-build-version.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{033737D3-CE97-35DD-B911-848DB912467D}</ProjectGuid>
+ <ProjectGuid>{9E3BFB5B-D84A-3E8C-8B84-566073AC0DE3}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\build-version.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\build-version.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Update build-version.inc in the SPIRV-Tools build directory (if necessary).</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/update_build_version.py $(SolutionDir)third_party/SPIRV-Tools "$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/build-version.inc"
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/build-version.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\update_build_version.py;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/build-version.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\update_build_version.py;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\build-version.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Update build-version.inc in the SPIRV-Tools build directory (if necessary).</Message>
@@ -89,13 +89,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/build-version.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\update_build_version.py;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/build-version.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\update_build_version.py;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\build-version.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-build-version.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-build-version.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
:cmEnd
@@ -104,7 +104,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-build-version.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\build-version.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-build-version.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\build-version.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-build-version</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -115,7 +115,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-build-version.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\build-version.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-build-version.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\build-version.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-build-version</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-build-version.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-build-version.vcxproj.filters
index cc7aead69dd..7d3d3027b9a 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-build-version.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-build-version.vcxproj.filters
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\build-version.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\build-version.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-build-version.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-build-version.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -13,7 +13,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-debuginfo.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-debuginfo.vcxproj
index 3201dd15b0c..70d7d10cc5a 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-debuginfo.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-debuginfo.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{75B0856F-5AC7-31E6-91C6-AD88B3745281}</ProjectGuid>
+ <ProjectGuid>{2F264302-EFA1-396F-AD64-0AC05E686177}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\debuginfo.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\debuginfo.insts.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for debuginfo.</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/debuginfo.insts.inc"
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/debuginfo.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/debuginfo.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for debuginfo.</Message>
@@ -89,13 +89,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/debuginfo.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/debuginfo.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-debuginfo.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-debuginfo.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
:cmEnd
@@ -104,7 +104,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-debuginfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-debuginfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-debuginfo</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -115,7 +115,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-debuginfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-debuginfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\debuginfo.insts.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-debuginfo</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-debuginfo.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-debuginfo.vcxproj.filters
index 7ce3a2453a8..14e31e6ec2b 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-debuginfo.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-debuginfo.vcxproj.filters
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\debuginfo.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\debuginfo.insts.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-debuginfo.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-debuginfo.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -13,7 +13,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-header-DebugInfo.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-header-DebugInfo.vcxproj
index 47b949b4ba4..bcb483b1123 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-header-DebugInfo.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-header-DebugInfo.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{15CEFCBE-B270-3849-9E1F-A5A35F5374C3}</ProjectGuid>
+ <ProjectGuid>{B0183B68-4A3E-382F-A66C-520DA9CF24F9}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\DebugInfo.h.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\DebugInfo.h.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate language specific header for DebugInfo.</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_language_headers.py --extinst-name=DebugInfo --extinst-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json "--extinst-output-base=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/DebugInfo"
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/DebugInfo.h.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_language_headers.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/DebugInfo.h.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_language_headers.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate language specific header for DebugInfo.</Message>
@@ -89,13 +89,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/DebugInfo.h.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_language_headers.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/DebugInfo.h.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_language_headers.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-header-DebugInfo.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-header-DebugInfo.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
:cmEnd
@@ -104,7 +104,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-header-DebugInfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-header-DebugInfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-header-DebugInfo</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -115,7 +115,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-header-DebugInfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-header-DebugInfo.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\DebugInfo.h;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-header-DebugInfo</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-header-DebugInfo.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-header-DebugInfo.vcxproj.filters
index 8627e62663f..90c469f9ba2 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-header-DebugInfo.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-header-DebugInfo.vcxproj.filters
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\DebugInfo.h.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\DebugInfo.h.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-header-DebugInfo.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-header-DebugInfo.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -13,7 +13,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-gcn-shader.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-gcn-shader.vcxproj
index db0f1906fef..afd547a57f9 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-gcn-shader.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-gcn-shader.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{413EAFA1-B915-3FB9-8065-261CD1875597}</ProjectGuid>
+ <ProjectGuid>{2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-gcn-shader.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\spv-amd-gcn-shader.insts.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for spv-amd-gcn-shader.</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-gcn-shader.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-gcn-shader.insts.inc"
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-gcn-shader.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-gcn-shader.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/spv-amd-gcn-shader.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-gcn-shader.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for spv-amd-gcn-shader.</Message>
@@ -89,13 +89,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-gcn-shader.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-gcn-shader.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/spv-amd-gcn-shader.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-gcn-shader.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-gcn-shader.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-spv-amd-gcn-shader.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
:cmEnd
@@ -104,7 +104,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-gcn-shader.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-spv-amd-gcn-shader.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-gcn-shader</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -115,7 +115,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-gcn-shader.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-spv-amd-gcn-shader.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-gcn-shader.insts.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-gcn-shader</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-gcn-shader.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-gcn-shader.vcxproj.filters
index 1ee621296be..5fedb2039cc 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-gcn-shader.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-gcn-shader.vcxproj.filters
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-gcn-shader.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\spv-amd-gcn-shader.insts.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-gcn-shader.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-spv-amd-gcn-shader.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -13,7 +13,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-ballot.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-ballot.vcxproj
index 467eee340e0..988e0a265a9 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-ballot.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-ballot.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{F353E330-643D-353C-9031-52ED11A7E914}</ProjectGuid>
+ <ProjectGuid>{07107D83-83B6-3BE6-8827-20DB1D90942F}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-ballot.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\spv-amd-shader-ballot.insts.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for spv-amd-shader-ballot.</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-ballot.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-ballot.insts.inc"
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-ballot.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-ballot.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/spv-amd-shader-ballot.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-ballot.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for spv-amd-shader-ballot.</Message>
@@ -89,13 +89,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-ballot.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-ballot.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/spv-amd-shader-ballot.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-ballot.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-ballot.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-spv-amd-shader-ballot.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
:cmEnd
@@ -104,7 +104,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-ballot.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-spv-amd-shader-ballot.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-ballot</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -115,7 +115,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-ballot.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-spv-amd-shader-ballot.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-ballot.insts.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-ballot</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-ballot.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-ballot.vcxproj.filters
index 24369065461..5a09cd3dad9 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-ballot.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-ballot.vcxproj.filters
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-ballot.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\spv-amd-shader-ballot.insts.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-ballot.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-spv-amd-shader-ballot.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -13,7 +13,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj
index 6e4ac0b88d7..12a7409a825 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{36E309E0-4447-33C6-92DA-FFF8793CF0A6}</ProjectGuid>
+ <ProjectGuid>{684F4245-24D8-3E74-ACCE-4FC6407F80FC}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-explicit-vertex-parameter.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\spv-amd-shader-explicit-vertex-parameter.insts.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for spv-amd-shader-explicit-vertex-parameter.</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-explicit-vertex-parameter.insts.inc"
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-explicit-vertex-parameter.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/spv-amd-shader-explicit-vertex-parameter.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for spv-amd-shader-explicit-vertex-parameter.</Message>
@@ -89,13 +89,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-explicit-vertex-parameter.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/spv-amd-shader-explicit-vertex-parameter.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
:cmEnd
@@ -104,7 +104,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-explicit-vertex-parameter</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -115,7 +115,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-explicit-vertex-parameter.insts.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-explicit-vertex-parameter</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj.filters
index 74f75979edf..fc297f4701d 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj.filters
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-explicit-vertex-parameter.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\spv-amd-shader-explicit-vertex-parameter.insts.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-spv-amd-shader-explicit-vertex-parameter.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -13,7 +13,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-trinary-minmax.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-trinary-minmax.vcxproj
index bdec0f0a317..a17003b33a0 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-trinary-minmax.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-trinary-minmax.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}</ProjectGuid>
+ <ProjectGuid>{EC14378D-27D2-31F1-B61E-9A92CB3E00A6}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-trinary-minmax.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\spv-amd-shader-trinary-minmax.insts.inc.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate extended instruction tables for spv-amd-shader-trinary-minmax.</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.spv-amd-shader-trinary-minmax.grammar.json "--vendor-insts-output=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spv-amd-shader-trinary-minmax.insts.inc"
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-trinary-minmax.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-trinary-minmax.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/spv-amd-shader-trinary-minmax.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-trinary-minmax.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate extended instruction tables for spv-amd-shader-trinary-minmax.</Message>
@@ -89,13 +89,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spv-amd-shader-trinary-minmax.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-trinary-minmax.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/spv-amd-shader-trinary-minmax.insts.inc.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_grammar_tables.py;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.spv-amd-shader-trinary-minmax.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-trinary-minmax.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-spv-amd-shader-trinary-minmax.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
:cmEnd
@@ -104,7 +104,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-trinary-minmax.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-spv-amd-shader-trinary-minmax.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-trinary-minmax</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -115,7 +115,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-spv-amd-shader-trinary-minmax.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-spv-amd-shader-trinary-minmax.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spv-amd-shader-trinary-minmax.insts.inc;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-spv-amd-shader-trinary-minmax</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-trinary-minmax.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-trinary-minmax.vcxproj.filters
index 9348f983540..104c52cd826 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-trinary-minmax.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-spv-amd-shader-trinary-minmax.vcxproj.filters
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spv-amd-shader-trinary-minmax.insts.inc.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\spv-amd-shader-trinary-minmax.insts.inc.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-spv-amd-shader-trinary-minmax.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-spv-amd-shader-trinary-minmax.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -13,7 +13,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-vimsyntax.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-vimsyntax.vcxproj
index 74dd0b19cdc..b4c9bb794df 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-vimsyntax.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-vimsyntax.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{CE4E38AC-2FE5-356C-860E-C894AAC00DFF}</ProjectGuid>
+ <ProjectGuid>{8EC2136C-E0E9-3340-86AE-5463BAA01ABB}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spvasm.vim.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\spvasm.vim.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate spvasm.vim: Vim syntax file for SPIR-V assembly.</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
python $(SolutionDir)third_party/SPIRV-Tools/utils/generate_vim_syntax.py --spirv-core-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json --extinst-debuginfo-grammar=$(SolutionDir)third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json --extinst-glsl-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/extinst.glsl.std.450.grammar.json --extinst-opencl-grammar=$(SolutionDir)third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.std.100.grammar.json "&gt;$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spvasm.vim"
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spvasm.vim.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_vim_syntax.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.glsl.std.450.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.opencl.std.100.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/spvasm.vim.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_vim_syntax.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.glsl.std.450.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.opencl.std.100.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spvasm.vim</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate spvasm.vim: Vim syntax file for SPIR-V assembly.</Message>
@@ -89,13 +89,13 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/d839d777cdb37cdb07021ff3b0cf0243/spvasm.vim.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_vim_syntax.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.glsl.std.450.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.opencl.std.100.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/9dfff45db06cc5e650558716138bc064/spvasm.vim.rule;$(SolutionDir)third_party\SPIRV-Tools\utils\generate_vim_syntax.py;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\spirv.core.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.glsl.std.450.grammar.json;$(SolutionDir)third_party\SPIRV-Headers\include\spirv\unified1\extinst.opencl.std.100.grammar.json;$(SolutionDir)third_party\SPIRV-Tools\source\extinst.debuginfo.grammar.json;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spvasm.vim</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-vimsyntax.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-vimsyntax.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
:cmEnd
@@ -104,7 +104,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-vimsyntax.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spvasm.vim;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-vimsyntax.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spvasm.vim;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-vimsyntax</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -115,7 +115,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/412e367eb8014dedeaefb6a88c64e3ed/spirv-tools-vimsyntax.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spvasm.vim;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/18df793f4fb1c21db34fc298696ce393/spirv-tools-vimsyntax.rule;$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\spvasm.vim;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\CMakeFiles\spirv-tools-vimsyntax</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-vimsyntax.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-vimsyntax.vcxproj.filters
index 4adaa1f1f16..046c918f2dc 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-vimsyntax.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/source/spirv-tools-vimsyntax.vcxproj.filters
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\d839d777cdb37cdb07021ff3b0cf0243\spvasm.vim.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\9dfff45db06cc5e650558716138bc064\spvasm.vim.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\412e367eb8014dedeaefb6a88c64e3ed\spirv-tools-vimsyntax.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\18df793f4fb1c21db34fc298696ce393\spirv-tools-vimsyntax.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -13,7 +13,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-pkg-config.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-pkg-config.vcxproj
index e884ec2b42d..467cb324289 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-pkg-config.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-pkg-config.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}</ProjectGuid>
+ <ProjectGuid>{96492351-1995-3B6B-A091-E7F4918E443B}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\27d298d334ba2598781edad1159af4a3\spirv-tools-pkg-config.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\94aa4ac18413140bb96afa28d59cf59e\spirv-tools-pkg-config.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
"cmake" -DCHANGES_FILE=$(SolutionDir)third_party/SPIRV-Tools/CHANGES -DTEMPLATE_FILE=$(SolutionDir)third_party/SPIRV-Tools/cmake/SPIRV-Tools.pc.in "-DOUT_FILE=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/SPIRV-Tools.pc" "-DCMAKE_INSTALL_PREFIX=C:/Program Files/SwiftShader" -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_INCLUDEDIR=include "-DSPIRV_LIBRARIES=-lSPIRV-Tools -lSPIRV-Tools-link -lSPIRV-Tools-opt" -P $(SolutionDir)third_party/SPIRV-Tools/cmake/write_pkg_config.cmake
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/27d298d334ba2598781edad1159af4a3/spirv-tools-pkg-config.rule;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;$(SolutionDir)third_party\SPIRV-Tools\cmake\SPIRV-Tools.pc.in;$(SolutionDir)third_party\SPIRV-Tools\cmake\write_pkg_config.cmake;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/94aa4ac18413140bb96afa28d59cf59e/spirv-tools-pkg-config.rule;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;$(SolutionDir)third_party\SPIRV-Tools\cmake\SPIRV-Tools.pc.in;$(SolutionDir)third_party\SPIRV-Tools\cmake\write_pkg_config.cmake;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\CMakeFiles\spirv-tools-pkg-config</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -89,7 +89,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/27d298d334ba2598781edad1159af4a3/spirv-tools-pkg-config.rule;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;$(SolutionDir)third_party\SPIRV-Tools\cmake\SPIRV-Tools.pc.in;$(SolutionDir)third_party\SPIRV-Tools\cmake\write_pkg_config.cmake;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/94aa4ac18413140bb96afa28d59cf59e/spirv-tools-pkg-config.rule;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;$(SolutionDir)third_party\SPIRV-Tools\cmake\SPIRV-Tools.pc.in;$(SolutionDir)third_party\SPIRV-Tools\cmake\write_pkg_config.cmake;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\CMakeFiles\spirv-tools-pkg-config</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-pkg-config.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-pkg-config.vcxproj.filters
index c955fd13616..a10c909885e 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-pkg-config.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-pkg-config.vcxproj.filters
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\27d298d334ba2598781edad1159af4a3\spirv-tools-pkg-config.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\94aa4ac18413140bb96afa28d59cf59e\spirv-tools-pkg-config.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -10,7 +10,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-shared-pkg-config.vcxproj b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-shared-pkg-config.vcxproj
index b0a8220225a..82e61fd2362 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-shared-pkg-config.vcxproj
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-shared-pkg-config.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
@@ -14,7 +14,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{0FA45296-9836-3DE4-BEA5-F2029797A16F}</ProjectGuid>
+ <ProjectGuid>{049A6034-6699-3DDF-BF15-47C981793305}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
@@ -65,7 +65,7 @@
</Midl>
</ItemDefinitionGroup>
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\27d298d334ba2598781edad1159af4a3\spirv-tools-shared-pkg-config.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\94aa4ac18413140bb96afa28d59cf59e\spirv-tools-shared-pkg-config.rule">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"></Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">setlocal
"cmake" -DCHANGES_FILE=$(SolutionDir)third_party/SPIRV-Tools/CHANGES -DTEMPLATE_FILE=$(SolutionDir)third_party/SPIRV-Tools/cmake/SPIRV-Tools-shared.pc.in "-DOUT_FILE=$(SolutionDir)build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/SPIRV-Tools-shared.pc" "-DCMAKE_INSTALL_PREFIX=C:/Program Files/SwiftShader" -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_INCLUDEDIR=include -DSPIRV_SHARED_LIBRARIES=-lSPIRV-Tools-shared -P $(SolutionDir)third_party/SPIRV-Tools/cmake/write_pkg_config.cmake
@@ -76,7 +76,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/27d298d334ba2598781edad1159af4a3/spirv-tools-shared-pkg-config.rule;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;$(SolutionDir)third_party\SPIRV-Tools\cmake\SPIRV-Tools-shared.pc.in;$(SolutionDir)third_party\SPIRV-Tools\cmake\write_pkg_config.cmake;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/94aa4ac18413140bb96afa28d59cf59e/spirv-tools-shared-pkg-config.rule;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;$(SolutionDir)third_party\SPIRV-Tools\cmake\SPIRV-Tools-shared.pc.in;$(SolutionDir)third_party\SPIRV-Tools\cmake\write_pkg_config.cmake;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\CMakeFiles\spirv-tools-shared-pkg-config</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'"></Message>
@@ -89,7 +89,7 @@ endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/27d298d334ba2598781edad1159af4a3/spirv-tools-shared-pkg-config.rule;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;$(SolutionDir)third_party\SPIRV-Tools\cmake\SPIRV-Tools-shared.pc.in;$(SolutionDir)third_party\SPIRV-Tools\cmake\write_pkg_config.cmake;%(AdditionalInputs)</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build/Visual Studio 15 2017 Win64/CMakeFiles/94aa4ac18413140bb96afa28d59cf59e/spirv-tools-shared-pkg-config.rule;$(SolutionDir)third_party\SPIRV-Tools\CHANGES;$(SolutionDir)third_party\SPIRV-Tools\cmake\SPIRV-Tools-shared.pc.in;$(SolutionDir)third_party\SPIRV-Tools\cmake\write_pkg_config.cmake;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\CMakeFiles\spirv-tools-shared-pkg-config</Outputs>
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
</CustomBuild>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-shared-pkg-config.vcxproj.filters b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-shared-pkg-config.vcxproj.filters
index db415a83b56..abe82501698 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-shared-pkg-config.vcxproj.filters
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools-shared-pkg-config.vcxproj.filters
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\27d298d334ba2598781edad1159af4a3\spirv-tools-shared-pkg-config.rule">
+ <CustomBuild Include="$(SolutionDir)build\Visual Studio 15 2017 Win64\CMakeFiles\94aa4ac18413140bb96afa28d59cf59e\spirv-tools-shared-pkg-config.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
@@ -10,7 +10,7 @@
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
- <UniqueIdentifier>{E7120DB7-422E-375E-9E9C-67A8C10F86DB}</UniqueIdentifier>
+ <UniqueIdentifier>{F9C83099-B062-3CB2-AD40-CA4D4008C58C}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
diff --git a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools.sln b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools.sln
index edd551bf826..67b11a7dd55 100644
--- a/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools.sln
+++ b/chromium/third_party/swiftshader/build/Visual Studio 15 2017 Win64/third_party/SPIRV-Tools/spirv-tools.sln
@@ -1,110 +1,110 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CMakePredefinedTargets", "CMakePredefinedTargets", "{81FD0586-FEDF-33EE-85EC-35FE7EC8667D}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CMakePredefinedTargets", "CMakePredefinedTargets", "{5C0043D5-C4A7-3794-80B8-1838D50364AB}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools build", "SPIRV-Tools build", "{4E87A75D-9056-39FC-B704-6ED9351D9643}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools build", "SPIRV-Tools build", "{3D4925D7-A068-3AAE-A7E7-BC42FA711B33}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools libraries", "SPIRV-Tools libraries", "{F5313650-26B7-3FD1-949B-778051D0087B}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools libraries", "SPIRV-Tools libraries", "{3E491021-A61D-35E3-A471-EE7FD2DCB291}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools utilities", "SPIRV-Tools utilities", "{8351EE33-11D6-3363-BCC3-4F708BF29B48}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools utilities", "SPIRV-Tools utilities", "{5C70A9BE-0B12-37F5-AC43-A348866101A1}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALL_BUILD", "ALL_BUILD.vcxproj", "{93979AE4-08B2-324E-AACE-6FFC302D2505}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALL_BUILD", "ALL_BUILD.vcxproj", "{B2B07DA3-A388-307E-A283-3904C31F1CE2}"
ProjectSection(ProjectDependencies) = postProject
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC} = {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}
- {5F3076C6-2971-39DF-A3BE-A78FB0411AAE} = {5F3076C6-2971-39DF-A3BE-A78FB0411AAE}
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327} = {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}
- {F6702FDF-019F-3B2F-9CAD-15C15CD4F871} = {F6702FDF-019F-3B2F-9CAD-15C15CD4F871}
- {62B58F28-8443-346E-8A29-F389A2C9CBAD} = {62B58F28-8443-346E-8A29-F389A2C9CBAD}
- {EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7} = {EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}
- {0FA45296-9836-3DE4-BEA5-F2029797A16F} = {0FA45296-9836-3DE4-BEA5-F2029797A16F}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {2866BC19-5FA8-3D67-8D94-751A3803A3DF}
+ {AC311772-F314-3373-B869-71CD6C30634D} = {AC311772-F314-3373-B869-71CD6C30634D}
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18} = {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}
+ {C672D2D1-E638-3565-87EC-11172BD73995} = {C672D2D1-E638-3565-87EC-11172BD73995}
+ {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240} = {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}
+ {96492351-1995-3B6B-A091-E7F4918E443B} = {96492351-1995-3B6B-A091-E7F4918E443B}
+ {049A6034-6699-3DDF-BF15-47C981793305} = {049A6034-6699-3DDF-BF15-47C981793305}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools", "source\SPIRV-Tools.vcxproj", "{EF1AF598-E402-38F1-A74A-35F18A1EC1CC}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools", "source\SPIRV-Tools.vcxproj", "{2866BC19-5FA8-3D67-8D94-751A3803A3DF}"
ProjectSection(ProjectDependencies) = postProject
- {610A8C03-DBA2-3774-9E63-A8F8DE9BB082} = {610A8C03-DBA2-3774-9E63-A8F8DE9BB082}
- {878391C5-E52B-3DC9-AA48-92D3EB99C2EE} = {878391C5-E52B-3DC9-AA48-92D3EB99C2EE}
- {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF} = {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}
+ {95A9028D-402E-33FB-89FA-D07A85302C47} = {95A9028D-402E-33FB-89FA-D07A85302C47}
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9} = {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F} = {136BDBF5-3C3E-3763-B285-79E67F8E442F}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-link", "source\link\SPIRV-Tools-link.vcxproj", "{5F3076C6-2971-39DF-A3BE-A78FB0411AAE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-link", "source\link\SPIRV-Tools-link.vcxproj", "{AC311772-F314-3373-B869-71CD6C30634D}"
ProjectSection(ProjectDependencies) = postProject
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC} = {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327} = {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {2866BC19-5FA8-3D67-8D94-751A3803A3DF}
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18} = {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-opt", "source\opt\SPIRV-Tools-opt.vcxproj", "{6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-opt", "source\opt\SPIRV-Tools-opt.vcxproj", "{2F8B8E0B-1B59-3671-91FE-A0E499B82D18}"
ProjectSection(ProjectDependencies) = postProject
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC} = {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {2866BC19-5FA8-3D67-8D94-751A3803A3DF}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-reduce", "source\reduce\SPIRV-Tools-reduce.vcxproj", "{F6702FDF-019F-3B2F-9CAD-15C15CD4F871}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-reduce", "source\reduce\SPIRV-Tools-reduce.vcxproj", "{C672D2D1-E638-3565-87EC-11172BD73995}"
ProjectSection(ProjectDependencies) = postProject
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC} = {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327} = {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {2866BC19-5FA8-3D67-8D94-751A3803A3DF}
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18} = {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-shared", "source\SPIRV-Tools-shared.vcxproj", "{62B58F28-8443-346E-8A29-F389A2C9CBAD}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-shared", "source\SPIRV-Tools-shared.vcxproj", "{DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}"
ProjectSection(ProjectDependencies) = postProject
- {610A8C03-DBA2-3774-9E63-A8F8DE9BB082} = {610A8C03-DBA2-3774-9E63-A8F8DE9BB082}
- {878391C5-E52B-3DC9-AA48-92D3EB99C2EE} = {878391C5-E52B-3DC9-AA48-92D3EB99C2EE}
- {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF} = {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}
+ {95A9028D-402E-33FB-89FA-D07A85302C47} = {95A9028D-402E-33FB-89FA-D07A85302C47}
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9} = {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F} = {136BDBF5-3C3E-3763-B285-79E67F8E442F}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_tables", "source\core_tables.vcxproj", "{610A8C03-DBA2-3774-9E63-A8F8DE9BB082}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_tables", "source\core_tables.vcxproj", "{95A9028D-402E-33FB-89FA-D07A85302C47}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "enum_string_mapping", "source\enum_string_mapping.vcxproj", "{878391C5-E52B-3DC9-AA48-92D3EB99C2EE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "enum_string_mapping", "source\enum_string_mapping.vcxproj", "{1FFA8633-FFB4-3B7C-9F44-A42B791944C9}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "extinst_tables", "source\extinst_tables.vcxproj", "{305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "extinst_tables", "source\extinst_tables.vcxproj", "{136BDBF5-3C3E-3763-B285-79E67F8E442F}"
ProjectSection(ProjectDependencies) = postProject
- {75B0856F-5AC7-31E6-91C6-AD88B3745281} = {75B0856F-5AC7-31E6-91C6-AD88B3745281}
- {15CEFCBE-B270-3849-9E1F-A5A35F5374C3} = {15CEFCBE-B270-3849-9E1F-A5A35F5374C3}
- {413EAFA1-B915-3FB9-8065-261CD1875597} = {413EAFA1-B915-3FB9-8065-261CD1875597}
- {F353E330-643D-353C-9031-52ED11A7E914} = {F353E330-643D-353C-9031-52ED11A7E914}
- {36E309E0-4447-33C6-92DA-FFF8793CF0A6} = {36E309E0-4447-33C6-92DA-FFF8793CF0A6}
- {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44} = {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}
+ {2F264302-EFA1-396F-AD64-0AC05E686177} = {2F264302-EFA1-396F-AD64-0AC05E686177}
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9} = {B0183B68-4A3E-382F-A66C-520DA9CF24F9}
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50} = {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}
+ {07107D83-83B6-3BE6-8827-20DB1D90942F} = {07107D83-83B6-3BE6-8827-20DB1D90942F}
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC} = {684F4245-24D8-3E74-ACCE-4FC6407F80FC}
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6} = {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-build-version", "source\spirv-tools-build-version.vcxproj", "{033737D3-CE97-35DD-B911-848DB912467D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-build-version", "source\spirv-tools-build-version.vcxproj", "{9E3BFB5B-D84A-3E8C-8B84-566073AC0DE3}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-debuginfo", "source\spirv-tools-debuginfo.vcxproj", "{75B0856F-5AC7-31E6-91C6-AD88B3745281}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-debuginfo", "source\spirv-tools-debuginfo.vcxproj", "{2F264302-EFA1-396F-AD64-0AC05E686177}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-header-DebugInfo", "source\spirv-tools-header-DebugInfo.vcxproj", "{15CEFCBE-B270-3849-9E1F-A5A35F5374C3}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-header-DebugInfo", "source\spirv-tools-header-DebugInfo.vcxproj", "{B0183B68-4A3E-382F-A66C-520DA9CF24F9}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-pkg-config", "spirv-tools-pkg-config.vcxproj", "{EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-pkg-config", "spirv-tools-pkg-config.vcxproj", "{96492351-1995-3B6B-A091-E7F4918E443B}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-shared-pkg-config", "spirv-tools-shared-pkg-config.vcxproj", "{0FA45296-9836-3DE4-BEA5-F2029797A16F}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-shared-pkg-config", "spirv-tools-shared-pkg-config.vcxproj", "{049A6034-6699-3DDF-BF15-47C981793305}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-gcn-shader", "source\spirv-tools-spv-amd-gcn-shader.vcxproj", "{413EAFA1-B915-3FB9-8065-261CD1875597}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-gcn-shader", "source\spirv-tools-spv-amd-gcn-shader.vcxproj", "{2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-ballot", "source\spirv-tools-spv-amd-shader-ballot.vcxproj", "{F353E330-643D-353C-9031-52ED11A7E914}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-ballot", "source\spirv-tools-spv-amd-shader-ballot.vcxproj", "{07107D83-83B6-3BE6-8827-20DB1D90942F}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-explicit-vertex-parameter", "source\spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj", "{36E309E0-4447-33C6-92DA-FFF8793CF0A6}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-explicit-vertex-parameter", "source\spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj", "{684F4245-24D8-3E74-ACCE-4FC6407F80FC}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-trinary-minmax", "source\spirv-tools-spv-amd-shader-trinary-minmax.vcxproj", "{896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-trinary-minmax", "source\spirv-tools-spv-amd-shader-trinary-minmax.vcxproj", "{EC14378D-27D2-31F1-B61E-9A92CB3E00A6}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-vimsyntax", "source\spirv-tools-vimsyntax.vcxproj", "{CE4E38AC-2FE5-356C-860E-C894AAC00DFF}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-vimsyntax", "source\spirv-tools-vimsyntax.vcxproj", "{8EC2136C-E0E9-3340-86AE-5463BAA01ABB}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
@@ -114,95 +114,95 @@ Global
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {93979AE4-08B2-324E-AACE-6FFC302D2505}.Debug|x64.ActiveCfg = Debug|x64
- {93979AE4-08B2-324E-AACE-6FFC302D2505}.Release|x64.ActiveCfg = Release|x64
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}.Debug|x64.ActiveCfg = Debug|x64
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}.Debug|x64.Build.0 = Debug|x64
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}.Release|x64.ActiveCfg = Release|x64
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC}.Release|x64.Build.0 = Release|x64
- {5F3076C6-2971-39DF-A3BE-A78FB0411AAE}.Debug|x64.ActiveCfg = Debug|x64
- {5F3076C6-2971-39DF-A3BE-A78FB0411AAE}.Debug|x64.Build.0 = Debug|x64
- {5F3076C6-2971-39DF-A3BE-A78FB0411AAE}.Release|x64.ActiveCfg = Release|x64
- {5F3076C6-2971-39DF-A3BE-A78FB0411AAE}.Release|x64.Build.0 = Release|x64
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}.Debug|x64.ActiveCfg = Debug|x64
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}.Debug|x64.Build.0 = Debug|x64
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}.Release|x64.ActiveCfg = Release|x64
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327}.Release|x64.Build.0 = Release|x64
- {F6702FDF-019F-3B2F-9CAD-15C15CD4F871}.Debug|x64.ActiveCfg = Debug|x64
- {F6702FDF-019F-3B2F-9CAD-15C15CD4F871}.Debug|x64.Build.0 = Debug|x64
- {F6702FDF-019F-3B2F-9CAD-15C15CD4F871}.Release|x64.ActiveCfg = Release|x64
- {F6702FDF-019F-3B2F-9CAD-15C15CD4F871}.Release|x64.Build.0 = Release|x64
- {62B58F28-8443-346E-8A29-F389A2C9CBAD}.Debug|x64.ActiveCfg = Debug|x64
- {62B58F28-8443-346E-8A29-F389A2C9CBAD}.Debug|x64.Build.0 = Debug|x64
- {62B58F28-8443-346E-8A29-F389A2C9CBAD}.Release|x64.ActiveCfg = Release|x64
- {62B58F28-8443-346E-8A29-F389A2C9CBAD}.Release|x64.Build.0 = Release|x64
- {610A8C03-DBA2-3774-9E63-A8F8DE9BB082}.Debug|x64.ActiveCfg = Debug|x64
- {610A8C03-DBA2-3774-9E63-A8F8DE9BB082}.Debug|x64.Build.0 = Debug|x64
- {610A8C03-DBA2-3774-9E63-A8F8DE9BB082}.Release|x64.ActiveCfg = Release|x64
- {610A8C03-DBA2-3774-9E63-A8F8DE9BB082}.Release|x64.Build.0 = Release|x64
- {878391C5-E52B-3DC9-AA48-92D3EB99C2EE}.Debug|x64.ActiveCfg = Debug|x64
- {878391C5-E52B-3DC9-AA48-92D3EB99C2EE}.Debug|x64.Build.0 = Debug|x64
- {878391C5-E52B-3DC9-AA48-92D3EB99C2EE}.Release|x64.ActiveCfg = Release|x64
- {878391C5-E52B-3DC9-AA48-92D3EB99C2EE}.Release|x64.Build.0 = Release|x64
- {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}.Debug|x64.ActiveCfg = Debug|x64
- {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}.Debug|x64.Build.0 = Debug|x64
- {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}.Release|x64.ActiveCfg = Release|x64
- {305BFA6C-9DD5-3C60-9FA2-8C953D7418AF}.Release|x64.Build.0 = Release|x64
- {033737D3-CE97-35DD-B911-848DB912467D}.Debug|x64.ActiveCfg = Debug|x64
- {033737D3-CE97-35DD-B911-848DB912467D}.Release|x64.ActiveCfg = Release|x64
- {75B0856F-5AC7-31E6-91C6-AD88B3745281}.Debug|x64.ActiveCfg = Debug|x64
- {75B0856F-5AC7-31E6-91C6-AD88B3745281}.Debug|x64.Build.0 = Debug|x64
- {75B0856F-5AC7-31E6-91C6-AD88B3745281}.Release|x64.ActiveCfg = Release|x64
- {75B0856F-5AC7-31E6-91C6-AD88B3745281}.Release|x64.Build.0 = Release|x64
- {15CEFCBE-B270-3849-9E1F-A5A35F5374C3}.Debug|x64.ActiveCfg = Debug|x64
- {15CEFCBE-B270-3849-9E1F-A5A35F5374C3}.Debug|x64.Build.0 = Debug|x64
- {15CEFCBE-B270-3849-9E1F-A5A35F5374C3}.Release|x64.ActiveCfg = Release|x64
- {15CEFCBE-B270-3849-9E1F-A5A35F5374C3}.Release|x64.Build.0 = Release|x64
- {EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}.Debug|x64.ActiveCfg = Debug|x64
- {EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}.Debug|x64.Build.0 = Debug|x64
- {EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}.Release|x64.ActiveCfg = Release|x64
- {EC5297D9-ED1C-3BE6-BF71-3D76CD9B2AA7}.Release|x64.Build.0 = Release|x64
- {0FA45296-9836-3DE4-BEA5-F2029797A16F}.Debug|x64.ActiveCfg = Debug|x64
- {0FA45296-9836-3DE4-BEA5-F2029797A16F}.Debug|x64.Build.0 = Debug|x64
- {0FA45296-9836-3DE4-BEA5-F2029797A16F}.Release|x64.ActiveCfg = Release|x64
- {0FA45296-9836-3DE4-BEA5-F2029797A16F}.Release|x64.Build.0 = Release|x64
- {413EAFA1-B915-3FB9-8065-261CD1875597}.Debug|x64.ActiveCfg = Debug|x64
- {413EAFA1-B915-3FB9-8065-261CD1875597}.Debug|x64.Build.0 = Debug|x64
- {413EAFA1-B915-3FB9-8065-261CD1875597}.Release|x64.ActiveCfg = Release|x64
- {413EAFA1-B915-3FB9-8065-261CD1875597}.Release|x64.Build.0 = Release|x64
- {F353E330-643D-353C-9031-52ED11A7E914}.Debug|x64.ActiveCfg = Debug|x64
- {F353E330-643D-353C-9031-52ED11A7E914}.Debug|x64.Build.0 = Debug|x64
- {F353E330-643D-353C-9031-52ED11A7E914}.Release|x64.ActiveCfg = Release|x64
- {F353E330-643D-353C-9031-52ED11A7E914}.Release|x64.Build.0 = Release|x64
- {36E309E0-4447-33C6-92DA-FFF8793CF0A6}.Debug|x64.ActiveCfg = Debug|x64
- {36E309E0-4447-33C6-92DA-FFF8793CF0A6}.Debug|x64.Build.0 = Debug|x64
- {36E309E0-4447-33C6-92DA-FFF8793CF0A6}.Release|x64.ActiveCfg = Release|x64
- {36E309E0-4447-33C6-92DA-FFF8793CF0A6}.Release|x64.Build.0 = Release|x64
- {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}.Debug|x64.ActiveCfg = Debug|x64
- {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}.Debug|x64.Build.0 = Debug|x64
- {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}.Release|x64.ActiveCfg = Release|x64
- {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44}.Release|x64.Build.0 = Release|x64
- {CE4E38AC-2FE5-356C-860E-C894AAC00DFF}.Debug|x64.ActiveCfg = Debug|x64
- {CE4E38AC-2FE5-356C-860E-C894AAC00DFF}.Release|x64.ActiveCfg = Release|x64
+ {B2B07DA3-A388-307E-A283-3904C31F1CE2}.Debug|x64.ActiveCfg = Debug|x64
+ {B2B07DA3-A388-307E-A283-3904C31F1CE2}.Release|x64.ActiveCfg = Release|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Debug|x64.ActiveCfg = Debug|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Debug|x64.Build.0 = Debug|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Release|x64.ActiveCfg = Release|x64
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF}.Release|x64.Build.0 = Release|x64
+ {AC311772-F314-3373-B869-71CD6C30634D}.Debug|x64.ActiveCfg = Debug|x64
+ {AC311772-F314-3373-B869-71CD6C30634D}.Debug|x64.Build.0 = Debug|x64
+ {AC311772-F314-3373-B869-71CD6C30634D}.Release|x64.ActiveCfg = Release|x64
+ {AC311772-F314-3373-B869-71CD6C30634D}.Release|x64.Build.0 = Release|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Debug|x64.ActiveCfg = Debug|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Debug|x64.Build.0 = Debug|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Release|x64.ActiveCfg = Release|x64
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18}.Release|x64.Build.0 = Release|x64
+ {C672D2D1-E638-3565-87EC-11172BD73995}.Debug|x64.ActiveCfg = Debug|x64
+ {C672D2D1-E638-3565-87EC-11172BD73995}.Debug|x64.Build.0 = Debug|x64
+ {C672D2D1-E638-3565-87EC-11172BD73995}.Release|x64.ActiveCfg = Release|x64
+ {C672D2D1-E638-3565-87EC-11172BD73995}.Release|x64.Build.0 = Release|x64
+ {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}.Debug|x64.ActiveCfg = Debug|x64
+ {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}.Debug|x64.Build.0 = Debug|x64
+ {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}.Release|x64.ActiveCfg = Release|x64
+ {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240}.Release|x64.Build.0 = Release|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Debug|x64.ActiveCfg = Debug|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Debug|x64.Build.0 = Debug|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Release|x64.ActiveCfg = Release|x64
+ {95A9028D-402E-33FB-89FA-D07A85302C47}.Release|x64.Build.0 = Release|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Debug|x64.ActiveCfg = Debug|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Debug|x64.Build.0 = Debug|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Release|x64.ActiveCfg = Release|x64
+ {1FFA8633-FFB4-3B7C-9F44-A42B791944C9}.Release|x64.Build.0 = Release|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Debug|x64.ActiveCfg = Debug|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Debug|x64.Build.0 = Debug|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Release|x64.ActiveCfg = Release|x64
+ {136BDBF5-3C3E-3763-B285-79E67F8E442F}.Release|x64.Build.0 = Release|x64
+ {9E3BFB5B-D84A-3E8C-8B84-566073AC0DE3}.Debug|x64.ActiveCfg = Debug|x64
+ {9E3BFB5B-D84A-3E8C-8B84-566073AC0DE3}.Release|x64.ActiveCfg = Release|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Debug|x64.ActiveCfg = Debug|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Debug|x64.Build.0 = Debug|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Release|x64.ActiveCfg = Release|x64
+ {2F264302-EFA1-396F-AD64-0AC05E686177}.Release|x64.Build.0 = Release|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Debug|x64.ActiveCfg = Debug|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Debug|x64.Build.0 = Debug|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Release|x64.ActiveCfg = Release|x64
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9}.Release|x64.Build.0 = Release|x64
+ {96492351-1995-3B6B-A091-E7F4918E443B}.Debug|x64.ActiveCfg = Debug|x64
+ {96492351-1995-3B6B-A091-E7F4918E443B}.Debug|x64.Build.0 = Debug|x64
+ {96492351-1995-3B6B-A091-E7F4918E443B}.Release|x64.ActiveCfg = Release|x64
+ {96492351-1995-3B6B-A091-E7F4918E443B}.Release|x64.Build.0 = Release|x64
+ {049A6034-6699-3DDF-BF15-47C981793305}.Debug|x64.ActiveCfg = Debug|x64
+ {049A6034-6699-3DDF-BF15-47C981793305}.Debug|x64.Build.0 = Debug|x64
+ {049A6034-6699-3DDF-BF15-47C981793305}.Release|x64.ActiveCfg = Release|x64
+ {049A6034-6699-3DDF-BF15-47C981793305}.Release|x64.Build.0 = Release|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Debug|x64.ActiveCfg = Debug|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Debug|x64.Build.0 = Debug|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Release|x64.ActiveCfg = Release|x64
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50}.Release|x64.Build.0 = Release|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Debug|x64.ActiveCfg = Debug|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Debug|x64.Build.0 = Debug|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Release|x64.ActiveCfg = Release|x64
+ {07107D83-83B6-3BE6-8827-20DB1D90942F}.Release|x64.Build.0 = Release|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Debug|x64.ActiveCfg = Debug|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Debug|x64.Build.0 = Debug|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Release|x64.ActiveCfg = Release|x64
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC}.Release|x64.Build.0 = Release|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Debug|x64.ActiveCfg = Debug|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Debug|x64.Build.0 = Debug|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Release|x64.ActiveCfg = Release|x64
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6}.Release|x64.Build.0 = Release|x64
+ {8EC2136C-E0E9-3340-86AE-5463BAA01ABB}.Debug|x64.ActiveCfg = Debug|x64
+ {8EC2136C-E0E9-3340-86AE-5463BAA01ABB}.Release|x64.ActiveCfg = Release|x64
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {93979AE4-08B2-324E-AACE-6FFC302D2505} = {81FD0586-FEDF-33EE-85EC-35FE7EC8667D}
- {033737D3-CE97-35DD-B911-848DB912467D} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {75B0856F-5AC7-31E6-91C6-AD88B3745281} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {15CEFCBE-B270-3849-9E1F-A5A35F5374C3} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {413EAFA1-B915-3FB9-8065-261CD1875597} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {F353E330-643D-353C-9031-52ED11A7E914} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {36E309E0-4447-33C6-92DA-FFF8793CF0A6} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {896E2DEC-7AEC-3E49-B5BC-C3A6E6E28A44} = {4E87A75D-9056-39FC-B704-6ED9351D9643}
- {EF1AF598-E402-38F1-A74A-35F18A1EC1CC} = {F5313650-26B7-3FD1-949B-778051D0087B}
- {5F3076C6-2971-39DF-A3BE-A78FB0411AAE} = {F5313650-26B7-3FD1-949B-778051D0087B}
- {6ABDA7CD-3BBA-3190-AE38-B0BBE6CB9327} = {F5313650-26B7-3FD1-949B-778051D0087B}
- {F6702FDF-019F-3B2F-9CAD-15C15CD4F871} = {F5313650-26B7-3FD1-949B-778051D0087B}
- {62B58F28-8443-346E-8A29-F389A2C9CBAD} = {F5313650-26B7-3FD1-949B-778051D0087B}
- {CE4E38AC-2FE5-356C-860E-C894AAC00DFF} = {8351EE33-11D6-3363-BCC3-4F708BF29B48}
+ {B2B07DA3-A388-307E-A283-3904C31F1CE2} = {5C0043D5-C4A7-3794-80B8-1838D50364AB}
+ {9E3BFB5B-D84A-3E8C-8B84-566073AC0DE3} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {2F264302-EFA1-396F-AD64-0AC05E686177} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {B0183B68-4A3E-382F-A66C-520DA9CF24F9} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {2AA6420C-8F89-3979-A58E-8A3F3DBDAB50} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {07107D83-83B6-3BE6-8827-20DB1D90942F} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {684F4245-24D8-3E74-ACCE-4FC6407F80FC} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {EC14378D-27D2-31F1-B61E-9A92CB3E00A6} = {3D4925D7-A068-3AAE-A7E7-BC42FA711B33}
+ {2866BC19-5FA8-3D67-8D94-751A3803A3DF} = {3E491021-A61D-35E3-A471-EE7FD2DCB291}
+ {AC311772-F314-3373-B869-71CD6C30634D} = {3E491021-A61D-35E3-A471-EE7FD2DCB291}
+ {2F8B8E0B-1B59-3671-91FE-A0E499B82D18} = {3E491021-A61D-35E3-A471-EE7FD2DCB291}
+ {C672D2D1-E638-3565-87EC-11172BD73995} = {3E491021-A61D-35E3-A471-EE7FD2DCB291}
+ {DB6DF656-7D9C-35B1-B7C4-8FFEAE504240} = {3E491021-A61D-35E3-A471-EE7FD2DCB291}
+ {8EC2136C-E0E9-3340-86AE-5463BAA01ABB} = {5C70A9BE-0B12-37F5-AC43-A348866101A1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {57B13D28-2B8C-3881-841B-31D197265574}
+ SolutionGuid = {67550F90-8280-3A1D-8DB3-D450D6A1798A}
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
diff --git a/chromium/third_party/swiftshader/build/android.toolchain.cmake b/chromium/third_party/swiftshader/build/android.toolchain.cmake
new file mode 100644
index 00000000000..d9806e340b0
--- /dev/null
+++ b/chromium/third_party/swiftshader/build/android.toolchain.cmake
@@ -0,0 +1,13 @@
+set(CMAKE_SYSTEM_NAME Android)
+if(NOT $ENV{ANDROID_HOME} STREQUAL "")
+ set(CMAKE_ANDROID_NDK $ENV{ANDROID_HOME}/ndk-bundle)
+else()
+ set(CMAKE_ANDROID_NDK $ENV{HOME}/Android/Sdk/ndk-bundle)
+endif()
+set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION clang)
+set(CMAKE_ANDROID_ARCH_ABI arm64-v8a)
+set(CMAKE_ANDROID_STL_TYPE c++_shared)
+if(APPLE)
+ set(CMAKE_RANLIB "${CMAKE_ANDROID_NDK}/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/aarch64-linux-android/bin/ranlib")
+ set(CMAKE_AR "${CMAKE_ANDROID_NDK}/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/aarch64-linux-android/bin/ar")
+endif()
diff --git a/chromium/third_party/swiftshader/docs/ReactorDebugInfo.md b/chromium/third_party/swiftshader/docs/ReactorDebugInfo.md
new file mode 100644
index 00000000000..3b612d46548
--- /dev/null
+++ b/chromium/third_party/swiftshader/docs/ReactorDebugInfo.md
@@ -0,0 +1,237 @@
+# Reactor Debug Info Generation
+
+## Introduction
+
+Reactor produces Just In Time compiled dynamic executable code and can be used to JIT high performance functions specialized for runtime
+configurations, or to even build a compiler.
+
+In order to debug executable code at a higher level than disassembly, source code files are required.
+
+Reactor has two potential sources of source code:
+
+1. The C++ source code of the program that calls into Reactor.
+2. External source files read by the program and passed to Reactor.
+
+While case (2) is preferable for implementing a compiler, this is currently not
+implemented.
+
+Reactor implements case (1) and this can be used by GDB to single line step and
+inspect variables.
+
+## Supported Platforms
+
+Currently:
+
+* Debug info generation is only supported on Linux with the LLVM 7
+backend.
+* GDB is the only supported debugger.
+* The program must be compiled with debug info iteself.
+
+## Enabling
+
+Debug generation is enabled with `REACTOR_EMIT_DEBUG_INFO` CMake flag (defaults
+to disabled).
+
+## Implementation details
+
+### Source Location
+
+All Reactor functions begin with a call to `RR_DEBUG_INFO_UPDATE_LOC()`, which calls into `rr::DebugInfo::EmitLocation()`.
+
+`rr::DebugInfo::EmitLocation()` calls `rr::DebugInfo::getCallerBacktrace()`,
+which in turn uses [`libbacktrace`](https://github.com/ianlancetaylor/libbacktrace)
+to unwind the stack and find the file, function and line of the caller.
+
+This information is passed to `llvm::IRBuilder<>::SetCurrentDebugLocation`
+to emit source line information for the next LLVM instructions to be built.
+
+### Variables
+
+There are 3 aspects to generating variable debug information:
+
+#### 1. Variable names
+
+Constructing a Reactor `LValue`:
+
+```C++
+rr::Int a = 1;
+```
+
+Will emit an LLVM `alloca` instruction to allocate the storage of the variable,
+and emit another to initialize it to the constant `1`. While fluent, none of the
+Reactor calls see the name of the C++ local variable "`a`", and the LLVM `alloca`
+value gets a meaningless numerical value.
+
+There are two potential ways that Reactor can obtain the variable name:
+
+1. Use the running executable's own debug information to examine the local
+ declaration and extract the local variable's name.
+2. Use the backtrace information to parse the name from the source file.
+
+While (1) is arguably a cleaner and more robust solution, (2) is
+easier to implement and can work for the majority of use cases.
+
+(2) is the current solution implemented.
+
+`rr::DebugInfo::getOrParseFileTokens()` scans a source file line by line, and
+uses a regular expression to look for patterns of `<type> <name>`. Matching is not
+precise, but is adequate to find locals constructed with and without assignment.
+
+#### 2. Variable binding
+
+Given that we can find a variable name for a given source line, we need a way of
+binding the LLVM values to the name.
+
+Given our trivial example:
+
+```C++
+rr::Int a = 1
+```
+
+The `rr::Int` constructor calls `RR_DEBUG_INFO_EMIT_VAR()` passing the storage
+value as single argument. `RR_DEBUG_INFO_EMIT_VAR()` performs the backtrace
+to find the source file and line and uses the token information produced by
+`rr::DebugInfo::getOrParseFileTokens()` to identify the variable name.
+
+However, things get a bit more complicated when there are multiple variables
+being constructed on the same line.
+
+Take for example:
+
+```C++
+rr::Int a = rr::Int(1) + rr::Int(2)
+```
+
+Here we have 3 calls to the `rr::Int` constructor, each calling down
+to `RR_DEBUG_INFO_EMIT_VAR()`.
+
+To disambiguate which of these should be bound to the variable name "`a`",
+`rr::DebugInfo::EmitVariable()` buffers the binding into
+`scope.pending` and the last binding for a given line is used by
+`DebugInfo::emitPending()`. For variable construction and assignment, C++
+guarantees that the LHS is the last value to be constructed.
+
+This solution is not perfect.
+
+Multi-line expressions, multiple assignments on a single line, macro obfuscation
+can all break variable bindings - however the majority of typical cases work.
+
+#### 3. Variable scope
+
+`rr::DebugInfo` maintains a stack of `llvm::DIScope`s and `llvm::DILocation`s
+that mirrors the current backtrace for function being called.
+
+A synthetic call stack is produced by chaining `llvm::DILocation`s with
+`InlinedAt`s.
+
+For example, at the declaration of `i`:
+
+```C++
+void B()
+{
+ rr::Int i; // <- here
+}
+
+void A()
+{
+ B();
+}
+
+int main(int argc, const char* argv[])
+{
+ A();
+}
+```
+
+The `DIScope` hierarchy would be:
+
+```C++
+ DIFile: "foo.cpp"
+rr::DebugInfo::diScope[0].di: ↳ DISubprogram: "main"
+rr::DebugInfo::diScope[1].di: ↳ DISubprogram: "A"
+rr::DebugInfo::diScope[2].di: ↳ DISubprogram: "B"
+```
+
+The `DILocation` hierarchy would be:
+
+```C++
+rr::DebugInfo::diRootLocation: DILocation(DISubprogram: "ReactorFunction")
+rr::DebugInfo::diScope[0].location: ↳ DILocation(DISubprogram: "main")
+rr::DebugInfo::diScope[1].location: ↳ DILocation(DISubprogram: "A")
+rr::DebugInfo::diScope[2].location: ↳ DILocation(DISubprogram: "B")
+```
+
+Where '↳' represents an `InlinedAt`.
+
+
+`rr::DebugInfo::diScope` is updated by `rr::DebugInfo::syncScope()`.
+
+`llvm::DIScope`s typically do not nest - there is usually a separate
+`llvm::DISubprogram` for each function in the callstack. All local variables
+within a function will typically share the same scope, regardless of whether
+they are declared within a sub-block.
+
+Loops and jumps within a function add complexity. Consider:
+
+```C++
+void B()
+{
+ rr::Int i = 0;
+}
+
+void A()
+{
+ for (int i = 0; i < 3; i++)
+ {
+ rr::Int x = 0;
+ }
+ B();
+}
+
+int main(int argc, const char* argv[])
+{
+ A();
+}
+```
+
+In this particular example Reactor will not be aware of the `for` loop, and will
+attempt to create three variables called "`x`" in the same function scope for `A()`.
+Duplicate symbols in the same `llvm::DIScope` result in undefined behavior.
+
+To solve this, `rr::DebugInfo::syncScope()` observes when a function jumps
+backwards, and forks the current `llvm::DILexicalBlock` for the function. This
+results in a number of `llvm::DILexicalBlock` chains, each declaring variables
+that shadow the previous block.
+
+At the declaration of `i`, the `DIScope` hierarchy would be:
+
+```C++
+ DIFile: "foo.cpp"
+rr::DebugInfo::diScope[0].di: ↳ DISubprogram: "main"
+ ↳ DISubprogram: "A"
+ | ↳ DILexicalBlock: "A".1
+rr::DebugInfo::diScope[1].di: | ↳ DILexicalBlock: "A".2
+rr::DebugInfo::diScope[2].di: ↳ DISubprogram: "B"
+```
+
+The `DILocation` hierarchy would be:
+
+```C++
+rr::DebugInfo::diRootLocation: DILocation(DISubprogram: "ReactorFunction")
+rr::DebugInfo::diScope[0].location: ↳ DILocation(DISubprogram: "main")
+rr::DebugInfo::diScope[1].location: ↳ DILocation(DILexicalBlock: "A".2)
+rr::DebugInfo::diScope[2].location: ↳ DILocation(DISubprogram: "B")
+```
+
+### Debugger integration
+
+Once the debug information has been generated, it needs to be handed to the
+debugger.
+
+Reactor uses [`llvm::JITEventListener::createGDBRegistrationListener()`](http://llvm.org/doxygen/classllvm_1_1JITEventListener.html#a004abbb5a0d48ac376dfbe3e3c97c306)
+to inform GDB of the JIT'd program and its debugging information.
+More information [can be found here](https://llvm.org/docs/DebuggingJITedCode.html).
+
+LLDB should be able to support this same mechanism, but at the time of writing
+this does not appear to work.
+
diff --git a/chromium/third_party/swiftshader/docs/dEQP.md b/chromium/third_party/swiftshader/docs/dEQP.md
index 81c618e6bb1..0024b0e32a6 100644
--- a/chromium/third_party/swiftshader/docs/dEQP.md
+++ b/chromium/third_party/swiftshader/docs/dEQP.md
@@ -1,7 +1,7 @@
dEQP
====
-These steps are specifically for testing SwiftShader's OpenGL ES 3.0 implementation using dEQP on Windows (Linux differences at the bottom).
+These steps are specifically for testing SwiftShader's OpenGL ES 3.0 implementation using dEQP on Windows (steps for Linux below the Windows instructions).
Prerequisites
-------------
@@ -55,11 +55,11 @@ Building the code
```
mkdir build
cd build
- cmake ..
+ cmake .. -G "Visual Studio 15 2017 Win64"
```
Note: If you have multiple versions of Visual Studio installed and you want to make sure cmake is using the correct version of Visual Studio, you can specify it by calling, for example:
- `cmake .. -G "Visual Studio 15 2017 Win64"`
+ `cmake .. -G "Visual Studio <version> Win64"`
Also note: don't call 'cmake .' directly in the root directory. It will make things fails later on. If you do, simply erase the files created by CMake and follow the steps above.
@@ -76,6 +76,8 @@ Building the code
python scripts\build_caselists.py <path to cherry>\data
```
+ Note: you need to run `python scripts\build_caselists.py <path to cherry>\data` every time you update dEQP.
+
Preparing the server
--------------------
@@ -87,15 +89,15 @@ Preparing the server
Testing OpenGL ES
-----------------
-20. a) Assuming you already built SwiftShader, copy these two files:
+20. a) Assuming you already built SwiftShader in the `build` folder, copy these two files:
`libEGL.dll`\
`libGLESv2.dll`
From:
- `<path to SwiftShader>\out\Release_x64` or\
- `<path to SwiftShader>\out\Debug_x64`
+ `<path to SwiftShader>\build\Release_x64` or\
+ `<path to SwiftShader>\build\Debug_x64`
To:
@@ -106,8 +108,8 @@ Testing Vulkan
20. b) Assuming you already built SwiftShader, copy and rename this file:
- `<path to SwiftShader>\out\Release_x64\vk_swiftshader.dll` or\
- `<path to SwiftShader>\out\Debug_x64\vk_swiftshader.dll`
+ `<path to SwiftShader>\build\Release_x64\vk_swiftshader.dll` or\
+ `<path to SwiftShader>\build\Debug_x64\vk_swiftshader.dll`
To:
@@ -136,53 +138,139 @@ Mustpass sets
dEQP contains more tests than what is expected to pass by a conformant implementation (e.g. some tests are considered too strict, or assume certain undefined behavior). The [android\cts\master\gles3-master.txt](https://android.googlesource.com/platform/external/deqp/+/master/android/cts/master/gles3-master.txt) text file which can be loaded in Cherry's 'Test sets' tab to only run the latest tests expected to pass by certified Android devices.
-Running dEQP on Linux
----------------------
+Linux
+-----
+
+The Linux process is similar to Windows. However it doesn't use Release or Debug variants and it uses shared object files instead of DLLs.
+
+1. Install the latest [Python 2.X](https://www.python.org/downloads/)
+2. Install GCC and Make. In a terminal, run:
+
+ `sudo apt-get install gcc make`
+
+3. Install [CMake](https://cmake.org/download/)
+4. Install [Go](https://golang.org/doc/install) 32-bit (Important: must be 32 bit)
+5. Install Git. In a terminal, run:
+
+ `sudo apt-get install git`
+
+6. Download the [Vulkan SDK](https://vulkan.lunarg.com/) and unpack it into a location you like.
+
+Getting the Code
+----------------
+
+7. Get Swiftshader. In a terminal, go to the location you want to keep Swiftshader, and run:
+
+ ```
+ git clone https://swiftshader.googlesource.com/SwiftShader && (cd SwiftShader && curl -Lo `git rev-parse --git-dir`/hooks/commit-msg https://gerrit-review.googlesource.com/tools/hooks/commit-msg ; chmod +x `git rev-parse --git-dir`/hooks/commit-msg)
+ ```
+
+ This will also install the commit hooks you need for committing to SwiftShader.
+
+8. Get dEQP:
+
+ `git clone sso://googleplex-android/platform/external/deqp`
+
+9. Get dEQP's dependencies. In your dEQP root directory, run:
+
+ `python external/fetch_sources.py`
+
+10. Get Cherry, similar to step 8:
+
+ `git clone https://android.googlesource.com/platform/external/cherry`
+
+11. Set environment variable. Open ~/.bashrc in your preferred editor and add the following line:
+
+ GOPATH='`<path to cherry>`'
+
+Building the code
+-----------------
+
+12. Build Swiftshader. In the Swiftshader root dir, run:
+ ```
+ cd build
+ cmake ..
+ make --jobs=$(nproc)
+ ```
+
+13. Set your environment variables. In the terminal in which you'll be building dEQP, run the following commands:
-Differences to the steps above:
+ ```
+ export LD_LIBRARY_PATH="<Vulkan SDK location>/x86_64/lib:$LD_LIBRARY_PATH"
+ export LD_LIBRARY_PATH="<Swiftshader location>/build:$LD_LIBRARY_PATH"
+ ```
-1. Instead of copying the .dll files, you need to set LD_LIBRARY_PATH to point to SwiftShader's build directory.
-2. Use `make` instead of Visual Studio.
-3. There are no Debug/Release directories or .exe suffixes, so remove them from DeviceConfig in data.go.
+ It's important that you perform this step before you build dEQP in the next step. CMake will search for library files in LD_LIBRARY_PATH. If it cannot discover Swiftshader's libEGL and libGLESv2 shared object files, then CMake will default to using your system's libEGL.so and libGLESv2.so files.
-Running dEQP Vulkan tests on Linux
-----------------------------------
+14. Build dEQP. In the dEQP root dir, run:
+ ```
+ mkdir build
+ cd build
+ cmake ..
+ make --jobs=$(nproc)
+ ```
-1. Get dEQP source code:
+ Also note: don't call 'cmake .' directly in the root directory. It will make things fails later on. If you do, simply erase the files created by CMake and follow the steps above.
- `git clone https://android.googlesource.com/platform/external/deqp`
+15. Generate test cases:
+ ```
+ mkdir <path to cherry>/data
+ cd <path to dEQP>
+ python scripts/build_caselists.py <path to cherry>/data
+ ```
-2. Fetch dEQP's dependencies:
+ Note: you need to run `python scripts/build_caselists.py <path to cherry>/data` every time you update dEQP.
- `cd deqp`\
- `python external/fetch_sources.py`
+Preparing the server
+--------------------
-3. Run cmake and generate Makefiles:
+16. Edit `<path to cherry>/cherry/data.go`
+* Search for ".exe" and remove all instances.
+* Search for `../candy-build/deqp-wgl/execserver/Release` and replace that by `<path to deqp>/build/execserver/`
+* Just above, add an option to CommandLine: `--deqp-gl-context-type=egl`
+* Just below, remove 'Debug/' from the BinaryPath.
- `mkdir build`\
- `cd build`\
- `cmake ..`
+Testing OpenGL ES
+-----------------
-4. Build dEQP:
+17. a) Assuming you setup the LD_LIBRARY_PATH environment variable prior to running CMake in the dEQP build directory, you're all set.
- `make`
+Testing Vulkan
+--------------
+
+17. b) Use SwiftShader as an [Installable Client Driver](https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/LoaderAndLayerInterface.md#installable-client-drivers) (ICD). Add the following line to your `~/.bashrc`:
-5. Configure dEQP to use SwiftShader's Vulkan driver:
+ `export VK_ICD_FILENAMES="<path to SwiftShader>/build/Linux/vk_swiftshader_icd.json"`
- We do this by setting the `VK_ICD_FILENAMES` environment variable to point to SwiftShader's `vk_swiftshader_icd.json` file. Replace (or `export`) `$SWIFTSHADER_ROOT` to the root checkout directory of SwiftShader, and type:
+ Then run `source ~/.bashrc` the terminal(s) you'll be running tests from.
- `export VK_ICD_FILENAMES=$SWIFTSHADER_ROOT/out/Linux/vk_swiftshader_icd.json`
-6. Run the tests:
+Running the tests
+-----------------
- Assuming the current working directory is still `$DEQP_ROOT/build`, type:
+18. Start the test server. Go to `<path to cherry>` and run:
- `external/vulkancts/modules/vulkan/deqp-vk`
+ `go run server.go`
+
+19. Open your favorite browser and navigate to `localhost:8080`
+
+ Get Started -> Choose Device 'localhost' -> Select Tests 'dEQP-GLES3' -> Execute tests!
- If `deqp-vk` returns an error similar to:
+20. To make sure that you're running SwiftShader's drivers, select only the dEQP-GLES3->info->vendor and dEQP-VK->info->platform tests. In the next window, click on these tests in the left pane. If you see Google inc for the GLES3 test and your Linux machine in the VK test, then you've set your suite up properly.
- `libVulkan.cpp:69: VkResult vkCreateInstance(const VkInstanceCreateInfo*, const VkAllocationCallbacks*, VkInstance_T**): Assertion 'false' failed.`
+21. If you want to run Vulkan tests in the command line, go to the build directory in dEQP root. Then run the following command:
- Then it is likely that your system is using a broken Vulkan loader. [Grab the Vulkan SDK from here](https://vulkan.lunarg.com/), and update `LD_LIBRARY_PATH` to search the SDK's `libs` directory:
+ `external/vulkanacts/modules/vulkan/deqp-vk`
- `export LD_LIBRARY_PATH=$VULKAN_SDK_PATH/x86_64/lib:$LD_LIBRARY_PATH`
+ You can also run individual tests with:
+
+ `external/vulkanacts/modules/vulkan/deqp-vk --deqp-case=<test name>`
+
+ And you can find a list of the test names in `<Swiftshader root>/tests/regres/testlists/vk-master.txt` However, deqp-vk will cease upon the first failure. It's recommended that you use cherry for your testing needs unless you know what you're doing.
+
+22. To check that you're running SwiftShader in cherry, start the server
+
+Mustpass sets
+-------------
+
+dEQP contains more tests than what is expected to pass by a conformant implementation (e.g. some tests are considered too strict, or assume certain undefined behavior). The [android\cts\master\gles3-master.txt](https://android.googlesource.com/platform/external/deqp/+/master/android/cts/master/gles3-master.txt) text file which can be loaded in Cherry's 'Test sets' tab to only run the latest tests expected to pass by certified Android devices.
diff --git a/chromium/third_party/swiftshader/kokoro/gcp_ubuntu/continuous.cfg b/chromium/third_party/swiftshader/kokoro/gcp_ubuntu/continuous.cfg
deleted file mode 100644
index a20f25693e0..00000000000
--- a/chromium/third_party/swiftshader/kokoro/gcp_ubuntu/continuous.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Location of the continuous bash script in Git.
-build_file: "SwiftShader/kokoro/gcp_ubuntu/continuous.sh"
diff --git a/chromium/third_party/swiftshader/kokoro/gcp_ubuntu/continuous.sh b/chromium/third_party/swiftshader/kokoro/gcp_ubuntu/continuous.sh
deleted file mode 100755
index eea4f8fa50d..00000000000
--- a/chromium/third_party/swiftshader/kokoro/gcp_ubuntu/continuous.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-
-# Fail on any error.
-set -e
-# Display commands being run.
-set -x
-
-cd git/SwiftShader
-
-git submodule update --init
-
-mkdir -p build && cd build
-
-cmake ..
-make --jobs=$(nproc)
-
-# Run the GLES unit tests.
-./unittests \ No newline at end of file
diff --git a/chromium/third_party/swiftshader/kokoro/gcp_ubuntu/presubmit.cfg b/chromium/third_party/swiftshader/kokoro/gcp_ubuntu/presubmit.cfg
deleted file mode 100644
index a20f25693e0..00000000000
--- a/chromium/third_party/swiftshader/kokoro/gcp_ubuntu/presubmit.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Location of the continuous bash script in Git.
-build_file: "SwiftShader/kokoro/gcp_ubuntu/continuous.sh"
diff --git a/chromium/third_party/swiftshader/kokoro/gcp_windows/continuous.bat b/chromium/third_party/swiftshader/kokoro/gcp_windows/continuous.bat
deleted file mode 100644
index aebfe610854..00000000000
--- a/chromium/third_party/swiftshader/kokoro/gcp_windows/continuous.bat
+++ /dev/null
@@ -1,7 +0,0 @@
-@echo on
-
-cd git\SwiftShader
-
-git submodule update --init
-
-"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild" SwiftShader.sln
diff --git a/chromium/third_party/swiftshader/kokoro/gcp_windows/continuous.cfg b/chromium/third_party/swiftshader/kokoro/gcp_windows/continuous.cfg
deleted file mode 100644
index cc51591901c..00000000000
--- a/chromium/third_party/swiftshader/kokoro/gcp_windows/continuous.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Location of the continuous script in Git.
-build_file: "SwiftShader/kokoro/gcp_windows/continuous.bat"
-
diff --git a/chromium/third_party/swiftshader/kokoro/gcp_windows/presubmit.cfg b/chromium/third_party/swiftshader/kokoro/gcp_windows/presubmit.cfg
deleted file mode 100644
index cc51591901c..00000000000
--- a/chromium/third_party/swiftshader/kokoro/gcp_windows/presubmit.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Location of the continuous script in Git.
-build_file: "SwiftShader/kokoro/gcp_windows/continuous.bat"
-
diff --git a/chromium/third_party/swiftshader/src/Android.bp b/chromium/third_party/swiftshader/src/Android.bp
index 9dbc324b7c2..f4838cb44b2 100644
--- a/chromium/third_party/swiftshader/src/Android.bp
+++ b/chromium/third_party/swiftshader/src/Android.bp
@@ -174,14 +174,47 @@ cc_defaults {
defaults: [ "libswiftshader_common_defaults" ],
srcs: [
+ "Reactor/Reactor.cpp",
"Reactor/LLVMReactor.cpp",
"Reactor/Routine.cpp",
"Reactor/LLVMRoutine.cpp",
"Reactor/LLVMRoutineManager.cpp",
],
+ cflags: [
+ "-DREACTOR_LLVM_VERSION=7",
+ "-Wno-unused-parameter",
+ "-Wno-implicit-fallthrough",
+ ],
+
+ static_libs: [
+ "libLLVM7_swiftshader",
+ ],
+}
+
+cc_defaults {
+ name: "libswiftshadervk_llvm_defaults",
+
+ srcs: [
+ "Reactor/Reactor.cpp",
+ "Reactor/LLVMReactor.cpp",
+ "Reactor/Routine.cpp",
+ "Reactor/LLVMRoutine.cpp",
+ "Reactor/LLVMRoutineManager.cpp",
+ ],
+
+ cflags: [
+ "-DREACTOR_LLVM_VERSION=7",
+ "-Wno-unused-parameter",
+ "-Wno-implicit-fallthrough",
+ ],
+
static_libs: [
- "libLLVM_swiftshader",
+ "libLLVM7_swiftshader",
+ ],
+
+ shared_libs: [
+ "libcutils",
],
}
@@ -192,6 +225,7 @@ cc_defaults {
device_supported: false,
srcs: [
+ "Reactor/Reactor.cpp",
"Reactor/SubzeroReactor.cpp",
"Reactor/Routine.cpp",
"Reactor/Optimizer.cpp",
@@ -232,6 +266,24 @@ cc_library_static {
}
cc_library_static {
+ name: "libswiftshadervk_llvm",
+ device_supported: true,
+ host_supported: false,
+ vendor: true,
+
+ defaults: [ "libswiftshadervk_llvm_defaults" ],
+}
+
+cc_library_static {
+ name: "libswiftshadervk_llvm_debug",
+ device_supported: true,
+ host_supported: false,
+ vendor: true,
+
+ defaults: [ "libswiftshadervk_llvm_defaults" ],
+}
+
+cc_library_static {
name: "libswiftshader_subzero",
defaults: [ "libswiftshader_common", "libswiftshader_subzero_defaults" ],
@@ -325,14 +377,14 @@ cc_defaults {
android: {
static_libs: [
"libswiftshader_llvm",
- "libLLVM_swiftshader",
+ "libLLVM7_swiftshader",
],
},
host: {
static_libs: [
"libswiftshader_llvm",
- "libLLVM_swiftshader",
+ "libLLVM7_swiftshader",
],
},
},
@@ -355,14 +407,14 @@ cc_defaults {
android: {
static_libs: [
"libswiftshader_llvm_debug",
- "libLLVM_swiftshader",
+ "libLLVM7_swiftshader",
],
},
host: {
static_libs: [
"libswiftshader_llvm_debug",
- "libLLVM_swiftshader",
+ "libLLVM7_swiftshader",
],
},
},
@@ -531,3 +583,142 @@ cc_library_shared {
static_libs: [ "libswiftshader_compiler_debug" ],
}
+
+
+
+// Vulkan
+
+cc_defaults {
+ name: "libvk_swiftshader_defaults",
+
+ device_supported: true,
+ host_supported: false,
+ vendor: true,
+
+ defaults: [ "swiftshader_common" ],
+
+ cflags: [
+ "-D_GNU_SOURCE",
+ "-D__STDC_LIMIT_MACROS",
+ "-D__STDC_CONSTANT_MACROS",
+ "-D__STDC_FORMAT_MACROS",
+ "-DHAVE_GRALLOC1",
+ "-DNO_SANITIZE_FUNCTION=",
+ // FIXME: Use <android/api-level.h> instead?
+ "-DANDROID_PLATFORM_SDK_VERSION=10000",
+ "-Wno-implicit-fallthrough",
+ "-Wno-unused-parameter",
+ "-Wno-unused-local-typedef",
+ "-Wno-missing-field-initializers",
+ ],
+
+ cppflags: [
+ "-Wno-sign-promo",
+ "-Wno-non-virtual-dtor",
+ ],
+
+ local_include_dirs: [ "Vulkan" ],
+
+ version_script: "Vulkan/libvk_swiftshader.lds",
+
+ target: {
+ android: {
+ relative_install_path: "hw",
+ header_libs: [
+ "swiftshader_platform_headers",
+ "vulkan_headers",
+ ],
+ shared_libs: [
+ "libnativewindow",
+ "libhardware",
+ "libcutils",
+ "libsync",
+ "liblog",
+ ],
+ },
+ },
+}
+
+cc_defaults {
+ name: "libvk_swiftshader_common_defaults",
+
+ cflags: [
+ "-DLOG_TAG=\"swiftshader\"",
+ ],
+
+ srcs: [
+ "Common/CPUID.cpp",
+ "Common/Configurator.cpp",
+ "Common/Half.cpp",
+ "Common/Math.cpp",
+ "Common/Memory.cpp",
+ "Common/Resource.cpp",
+ "Common/Socket.cpp",
+ "Common/Thread.cpp",
+ "Common/Timer.cpp",
+ "Common/DebugAndroid.cpp",
+ "Device/*.cpp",
+ "Pipeline/*.cpp",
+ "Vulkan/*.cpp",
+ ],
+
+ static_libs: [
+ "swiftshader_spirv-tools",
+ ],
+
+ include_dirs: [
+ "external/swiftshader/third_party/SPIRV-Headers/include",
+ "external/swiftshader/include"
+ ],
+}
+
+cc_library_shared {
+ name: "vulkan.pastel",
+
+ target: {
+ android_arm: {
+ enabled: false
+ },
+ },
+
+ static_libs: [
+ "libswiftshadervk_llvm_debug",
+ "libLLVM7_swiftshader",
+ ],
+
+ host_supported: false,
+
+ defaults: [
+ "libvk_swiftshader_common_defaults",
+ "libvk_swiftshader_defaults"
+ ],
+}
+
+cc_library_shared {
+ name: "vulkan.pastel.debug",
+
+ target: {
+ android_arm: {
+ enabled: false
+ },
+ },
+
+ static_libs: [
+ "libswiftshadervk_llvm_debug",
+ "libLLVM7_swiftshader",
+ ],
+
+ host_supported: false,
+
+ cflags: [
+ "-UNDEBUG",
+ "-g",
+ "-O0",
+ "-DDEFAULT_THREAD_COUNT=1",
+ ],
+
+ defaults: [
+ "libvk_swiftshader_common_defaults",
+ "libvk_swiftshader_defaults",
+ ],
+}
diff --git a/chromium/third_party/swiftshader/src/Android.mk b/chromium/third_party/swiftshader/src/Android.mk
index 84db8268d06..f6f1384274e 100644
--- a/chromium/third_party/swiftshader/src/Android.mk
+++ b/chromium/third_party/swiftshader/src/Android.mk
@@ -17,15 +17,10 @@ COMMON_C_INCLUDES += \
else
-ifeq ($(REACTOR_LLVM_VERSION),3)
-COMMON_C_INCLUDES += \
- $(LOCAL_PATH)/../third_party/LLVM/include
-else
COMMON_C_INCLUDES += \
$(LOCAL_PATH)/../third_party/llvm-7.0/llvm/include \
$(LOCAL_PATH)/../third_party/llvm-7.0/configs/android/include \
$(LOCAL_PATH)/../third_party/llvm-7.0/configs/common/include
-endif
endif
@@ -61,6 +56,7 @@ COMMON_SRC_FILES += \
Main/SwiftConfig.cpp
COMMON_SRC_FILES += \
+ Reactor/Reactor.cpp \
Reactor/Routine.cpp \
Reactor/Debug.cpp \
Reactor/DebugAndroid.cpp \
diff --git a/chromium/third_party/swiftshader/src/Common/Debug.hpp b/chromium/third_party/swiftshader/src/Common/Debug.hpp
index 9758c3b831a..0c862d4dc07 100644
--- a/chromium/third_party/swiftshader/src/Common/Debug.hpp
+++ b/chromium/third_party/swiftshader/src/Common/Debug.hpp
@@ -15,7 +15,7 @@
#ifndef Debug_hpp
#define Debug_hpp
-#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD)
+#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD) && !defined(ANDROID_NDK_BUILD)
#include "DebugAndroid.hpp"
#else
diff --git a/chromium/third_party/swiftshader/src/Common/Memory.cpp b/chromium/third_party/swiftshader/src/Common/Memory.cpp
index f44fc9e8437..779d0687ff7 100644
--- a/chromium/third_party/swiftshader/src/Common/Memory.cpp
+++ b/chromium/third_party/swiftshader/src/Common/Memory.cpp
@@ -54,14 +54,21 @@ void *allocateRaw(size_t bytes, size_t alignment)
ASSERT((alignment & (alignment - 1)) == 0); // Power of 2 alignment.
#if defined(LINUX_ENABLE_NAMED_MMAP)
- void *allocation;
- int result = posix_memalign(&allocation, alignment, bytes);
- if(result != 0)
+ if(alignment < sizeof(void*))
{
- errno = result;
- allocation = nullptr;
+ return malloc(bytes);
+ }
+ else
+ {
+ void *allocation;
+ int result = posix_memalign(&allocation, alignment, bytes);
+ if(result != 0)
+ {
+ errno = result;
+ allocation = nullptr;
+ }
+ return allocation;
}
- return allocation;
#else
unsigned char *block = new unsigned char[bytes + sizeof(Allocation) + alignment];
unsigned char *aligned = nullptr;
diff --git a/chromium/third_party/swiftshader/src/Common/RecursiveLock.hpp b/chromium/third_party/swiftshader/src/Common/RecursiveLock.hpp
new file mode 100644
index 00000000000..9db9295e616
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Common/RecursiveLock.hpp
@@ -0,0 +1,72 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef sw_RecursiveLock_hpp
+#define sw_RecursiveLock_hpp
+
+#include "Thread.hpp"
+
+#include <mutex>
+
+namespace sw
+{
+ class RecursiveLock
+ {
+ public:
+ RecursiveLock()
+ {
+ }
+
+ bool attemptLock()
+ {
+ return mutex.try_lock();
+ }
+
+ void lock()
+ {
+ mutex.lock();
+ }
+
+ void unlock()
+ {
+ mutex.unlock();
+ }
+ private:
+ std::recursive_mutex mutex;
+ };
+}
+
+class RecursiveLockGuard
+{
+public:
+ explicit RecursiveLockGuard(sw::RecursiveLock &mutex) : mutex(&mutex)
+ {
+ mutex.lock();
+ }
+
+ explicit RecursiveLockGuard(sw::RecursiveLock *mutex) : mutex(mutex)
+ {
+ if (mutex) mutex->lock();
+ }
+
+ ~RecursiveLockGuard()
+ {
+ if (mutex) mutex->unlock();
+ }
+
+protected:
+ sw::RecursiveLock *mutex;
+};
+
+#endif // sw_RecursiveLock_hpp
diff --git a/chromium/third_party/swiftshader/src/Common/Resource.hpp b/chromium/third_party/swiftshader/src/Common/Resource.hpp
index 0acfa48e1b3..21240582052 100644
--- a/chromium/third_party/swiftshader/src/Common/Resource.hpp
+++ b/chromium/third_party/swiftshader/src/Common/Resource.hpp
@@ -27,19 +27,71 @@ namespace sw
EXCLUSIVE
};
+ // Resource is a form of shared mutex that guards an internally allocated
+ // buffer. Resource has an exclusive lock mode (sw::Accessor) and lock
+ // count, defaulting to sw::Accessor::PUBLIC and 0, respectively.
+ // Resource does treat any of the sw::Accessor enumerator lock modes
+ // differently, all semantic meaning comes from the usage of Resource.
+ // You can have multiple locks in mode sw::Accessor::EXCLUSIVE.
class Resource
{
public:
Resource(size_t bytes);
- void destruct(); // Asynchronous destructor
+ // destruct() is an asynchronous destructor, that will atomically:
+ // When the resource is unlocked:
+ // * Delete itself.
+ // When the resource is locked:
+ // * Flag itself for deletion when next fully unlocked.
+ void destruct();
+ // lock() will atomically:
+ // When the resource is unlocked OR the lock mode equals claimer:
+ // * Increment the lock count.
+ // * Return a pointer to the buffer.
+ // When the resource is locked AND the lock mode does not equal claimer:
+ // * Block until all existing locks are released (lock count equals 0).
+ // * Switch lock mode to claimer.
+ // * Increment the lock count.
+ // * Return a pointer to the buffer.
void *lock(Accessor claimer);
+
+ // lock() will atomically:
+ // When the resource is unlocked OR the lock mode equals claimer:
+ // * Increment the lock count.
+ // * Return a pointer to the buffer.
+ // When the resource is locked AND the lock mode equals relinquisher:
+ // * Release *all* existing locks (regardless of prior count).
+ // * Delete itself and return nullptr if Resource::destruct() had been called while locked.
+ // * Switch lock mode to claimer.
+ // * Increment the lock count to 1.
+ // * Return a pointer to the buffer.
+ // When the resource is locked AND the lock mode does not equal relinquisher:
+ // * Block until all existing locks are released (lock count equals 0)
+ // * Switch lock mode to claimer
+ // * Increment the lock count to 1.
+ // * Return a pointer to the buffer.
void *lock(Accessor relinquisher, Accessor claimer);
+
+ // unlock() will atomically:
+ // * Assert if there are no locks.
+ // * Release a single lock.
+ // * Delete itself if Resource::destruct() had been called while locked.
void unlock();
+
+ // unlock() will atomically:
+ // When the resource is locked AND the lock mode equals relinquisher:
+ // * Release *all* existing locks (regardless of prior count).
+ // * Delete itself if Resource::destruct() had been called while locked.
+ // When the resource is not locked OR the lock mode does not equal relinquisher:
+ // * Do nothing.
void unlock(Accessor relinquisher);
+ // data() will return the Resource's buffer pointer regardless of lock
+ // state.
const void *data() const;
+
+ // size is the size in bytes of the Resource's buffer.
const size_t size;
private:
diff --git a/chromium/third_party/swiftshader/src/D3D8/D3D8.vcxproj b/chromium/third_party/swiftshader/src/D3D8/D3D8.vcxproj
index 92e114cefc2..84947f22756 100644
--- a/chromium/third_party/swiftshader/src/D3D8/D3D8.vcxproj
+++ b/chromium/third_party/swiftshader/src/D3D8/D3D8.vcxproj
@@ -18,6 +18,7 @@
<ProjectGuid>{F18D5ABF-CA3A-4B74-BDB2-4A1956C86F18}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
@@ -81,7 +82,6 @@
<OmitFramePointers>false</OmitFramePointers>
<AdditionalIncludeDirectories>..\;..\Main;..\Renderer;..\Shader;..\Common;..\SwiftAsm;..\libjpeg;..\SwiftShader;..\D3D9;..\Reactor;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;D3D8DLL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
<ExceptionHandling>
</ExceptionHandling>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
@@ -191,6 +191,7 @@ copy "$(OutDir)d3d8.dll" "$(SolutionDir)out\$(Configuration)_$(Platform)\"</Comm
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>dxguid.lib;WS2_32.lib;comctl32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
diff --git a/chromium/third_party/swiftshader/src/D3D9/D3D9.vcxproj b/chromium/third_party/swiftshader/src/D3D9/D3D9.vcxproj
index 8f07747d18d..7aa8586e802 100644
--- a/chromium/third_party/swiftshader/src/D3D9/D3D9.vcxproj
+++ b/chromium/third_party/swiftshader/src/D3D9/D3D9.vcxproj
@@ -30,6 +30,7 @@
<ProjectGuid>{F18D5ABF-CA3A-4B74-BDB2-4A1957C86F18}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
@@ -138,7 +139,6 @@
<OmitFramePointers>false</OmitFramePointers>
<AdditionalIncludeDirectories>..\;..\Main;..\Renderer;..\Shader;..\Common;..\SwiftAsm;..\libjpeg;..\SwiftShader;..\D3D9;..\Reactor;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;D3D9DLL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
<ExceptionHandling>Sync</ExceptionHandling>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -149,7 +149,7 @@
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
- <AdditionalOptions>/MP /permissive- %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<AdditionalDependencies>dxguid.lib;WS2_32.lib;comctl32.lib;user32.lib;gdi32.lib;Psapi.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -178,7 +178,6 @@ copy "$(OutDir)d3d9.dll" "$(SolutionDir)out\$(Configuration)_$(Platform)\"</Comm
<OmitFramePointers>false</OmitFramePointers>
<AdditionalIncludeDirectories>..\;..\Main;..\Renderer;..\Shader;..\Common;..\SwiftAsm;..\libjpeg;..\SwiftShader;..\D3D9;..\Reactor;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;D3D9DLL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
<ExceptionHandling>Sync</ExceptionHandling>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -189,7 +188,7 @@ copy "$(OutDir)d3d9.dll" "$(SolutionDir)out\$(Configuration)_$(Platform)\"</Comm
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
- <AdditionalOptions>/MP /permissive- %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<AdditionalDependencies>dxguid.lib;WS2_32.lib;comctl32.lib;user32.lib;gdi32.lib;Psapi.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -233,7 +232,7 @@ copy "$(OutDir)d3d9.dll" "$(SolutionDir)out\$(Configuration)_$(Platform)\"</Comm
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
- <AdditionalOptions>/MP /permissive- %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<AdditionalDependencies>dxguid.lib;WS2_32.lib;comctl32.lib;user32.lib;gdi32.lib;Psapi.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -278,7 +277,8 @@ copy "$(OutDir)d3d9.dll" "$(SolutionDir)out\$(Configuration)_$(Platform)\"</Comm
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
- <AdditionalOptions>/MP /permissive- %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>dxguid.lib;WS2_32.lib;comctl32.lib;user32.lib;gdi32.lib;Psapi.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -304,7 +304,7 @@ copy "$(OutDir)d3d9.dll" "$(SolutionDir)out\$(Configuration)_$(Platform)\"</Comm
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
- <AdditionalOptions>/MP /permissive- %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
<Optimization>Full</Optimization>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>false</IntrinsicFunctions>
@@ -354,7 +354,7 @@ copy "$(OutDir)d3d9.dll" "$(SolutionDir)out\$(Configuration)_$(Platform)\"</Comm
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
- <AdditionalOptions>/MP /permissive- %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
<Optimization>Full</Optimization>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>false</IntrinsicFunctions>
@@ -377,6 +377,7 @@ copy "$(OutDir)d3d9.dll" "$(SolutionDir)out\$(Configuration)_$(Platform)\"</Comm
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>dxguid.lib;WS2_32.lib;comctl32.lib;user32.lib;gdi32.lib;Psapi.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
diff --git a/chromium/third_party/swiftshader/src/Device/Blitter.cpp b/chromium/third_party/swiftshader/src/Device/Blitter.cpp
index e512a2eb47f..ea0bc965e92 100644
--- a/chromium/third_party/swiftshader/src/Device/Blitter.cpp
+++ b/chromium/third_party/swiftshader/src/Device/Blitter.cpp
@@ -18,6 +18,9 @@
#include "Reactor/Reactor.hpp"
#include "System/Memory.hpp"
#include "Vulkan/VkDebug.hpp"
+#include "Vulkan/VkImage.hpp"
+
+#include <utility>
namespace sw
{
@@ -31,20 +34,86 @@ namespace sw
delete blitCache;
}
- void Blitter::clear(void *pixel, VkFormat format, Surface *dest, const SliceRect &dRect, unsigned int rgbaMask)
+ void Blitter::clear(void *pixel, vk::Format format, vk::Image *dest, const vk::Format& viewFormat, const VkImageSubresourceRange& subresourceRange, const VkRect2D* renderArea)
{
- if(fastClear(pixel, format, dest, dRect, rgbaMask))
+ VkImageAspectFlagBits aspect = static_cast<VkImageAspectFlagBits>(subresourceRange.aspectMask);
+ vk::Format dstFormat = vk::Image::GetFormat(viewFormat, aspect);
+ if(dstFormat == VK_FORMAT_UNDEFINED)
+ {
+ return;
+ }
+
+ if(fastClear(pixel, format, dest, dstFormat, subresourceRange, renderArea))
{
return;
}
- sw::Surface *color = sw::Surface::create(1, 1, 1, format, pixel, sw::Surface::bytes(format), sw::Surface::bytes(format));
- SliceRectF sRect(0.5f, 0.5f, 0.5f, 0.5f, 0); // Sample from the middle.
- blit(color, sRect, dest, dRect, {rgbaMask});
- delete color;
+ State state(format, dstFormat, 1, dest->getSampleCountFlagBits(), { 0xF });
+ Routine *blitRoutine = getRoutine(state);
+ if(!blitRoutine)
+ {
+ return;
+ }
+
+ void(*blitFunction)(const BlitData *data) = (void(*)(const BlitData*))blitRoutine->getEntry();
+
+ VkImageSubresourceLayers subresLayers =
+ {
+ subresourceRange.aspectMask,
+ subresourceRange.baseMipLevel,
+ subresourceRange.baseArrayLayer,
+ 1
+ };
+
+ uint32_t lastMipLevel = dest->getLastMipLevel(subresourceRange);
+ uint32_t lastLayer = dest->getLastLayerIndex(subresourceRange);
+
+ VkRect2D area = { { 0, 0 }, { 0, 0 } };
+ if(renderArea)
+ {
+ ASSERT(subresourceRange.levelCount == 1);
+ area = *renderArea;
+ }
+
+ for(; subresLayers.mipLevel <= lastMipLevel; subresLayers.mipLevel++)
+ {
+ VkExtent3D extent = dest->getMipLevelExtent(subresLayers.mipLevel);
+ if(!renderArea)
+ {
+ area.extent.width = extent.width;
+ area.extent.height = extent.height;
+ }
+
+ BlitData data =
+ {
+ pixel, nullptr, // source, dest
+
+ format.bytes(), // sPitchB
+ dest->rowPitchBytes(aspect, subresLayers.mipLevel), // dPitchB
+ 0, // sSliceB (unused in clear operations)
+ dest->slicePitchBytes(aspect, subresLayers.mipLevel), // dSliceB
+
+ 0.5f, 0.5f, 0.0f, 0.0f, // x0, y0, w, h
+
+ area.offset.y, static_cast<int>(area.offset.y + area.extent.height), // y0d, y1d
+ area.offset.x, static_cast<int>(area.offset.x + area.extent.width), // x0d, x1d
+
+ 0, 0, // sWidth, sHeight
+ };
+
+ for(subresLayers.baseArrayLayer = subresourceRange.baseArrayLayer; subresLayers.baseArrayLayer <= lastLayer; subresLayers.baseArrayLayer++)
+ {
+ for(uint32_t depth = 0; depth < extent.depth; depth++)
+ {
+ data.dest = dest->getTexelPointer({ 0, 0, static_cast<int32_t>(depth) }, subresLayers);
+
+ blitFunction(&data);
+ }
+ }
+ }
}
- bool Blitter::fastClear(void *pixel, VkFormat format, Surface *dest, const SliceRect &dRect, unsigned int rgbaMask)
+ bool Blitter::fastClear(void *pixel, vk::Format format, vk::Image *dest, const vk::Format& viewFormat, const VkImageSubresourceRange& subresourceRange, const VkRect2D* renderArea)
{
if(format != VK_FORMAT_R32G32B32A32_SFLOAT)
{
@@ -59,16 +128,15 @@ namespace sw
uint32_t packed;
- switch(dest->getFormat())
+ VkImageAspectFlagBits aspect = static_cast<VkImageAspectFlagBits>(subresourceRange.aspectMask);
+ switch(viewFormat)
{
case VK_FORMAT_R5G6B5_UNORM_PACK16:
- if((rgbaMask & 0x7) != 0x7) return false;
packed = ((uint16_t)(31 * b + 0.5f) << 0) |
((uint16_t)(63 * g + 0.5f) << 5) |
((uint16_t)(31 * r + 0.5f) << 11);
break;
case VK_FORMAT_B5G6R5_UNORM_PACK16:
- if((rgbaMask & 0x7) != 0x7) return false;
packed = ((uint16_t)(31 * r + 0.5f) << 0) |
((uint16_t)(63 * g + 0.5f) << 5) |
((uint16_t)(31 * b + 0.5f) << 11);
@@ -76,149 +144,93 @@ namespace sw
case VK_FORMAT_A8B8G8R8_UINT_PACK32:
case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
case VK_FORMAT_R8G8B8A8_UNORM:
- if((rgbaMask & 0xF) != 0xF) return false;
packed = ((uint32_t)(255 * a + 0.5f) << 24) |
((uint32_t)(255 * b + 0.5f) << 16) |
((uint32_t)(255 * g + 0.5f) << 8) |
((uint32_t)(255 * r + 0.5f) << 0);
break;
case VK_FORMAT_B8G8R8A8_UNORM:
- if((rgbaMask & 0xF) != 0xF) return false;
packed = ((uint32_t)(255 * a + 0.5f) << 24) |
((uint32_t)(255 * r + 0.5f) << 16) |
((uint32_t)(255 * g + 0.5f) << 8) |
((uint32_t)(255 * b + 0.5f) << 0);
break;
case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
- if((rgbaMask & 0x7) != 0x7) return false;
packed = R11G11B10F(color);
break;
case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
- if((rgbaMask & 0x7) != 0x7) return false;
packed = RGB9E5(color);
break;
default:
return false;
}
- bool useDestInternal = !dest->isExternalDirty();
- uint8_t *slice = (uint8_t*)dest->lock(dRect.x0, dRect.y0, dRect.slice, sw::LOCK_WRITEONLY, sw::PUBLIC, useDestInternal);
-
- for(int j = 0; j < dest->getSamples(); j++)
- {
- uint8_t *d = slice;
-
- switch(Surface::bytes(dest->getFormat()))
- {
- case 2:
- for(int i = dRect.y0; i < dRect.y1; i++)
- {
- sw::clear((uint16_t*)d, packed, dRect.x1 - dRect.x0);
- d += dest->getPitchB(useDestInternal);
- }
- break;
- case 4:
- for(int i = dRect.y0; i < dRect.y1; i++)
- {
- sw::clear((uint32_t*)d, packed, dRect.x1 - dRect.x0);
- d += dest->getPitchB(useDestInternal);
- }
- break;
- default:
- assert(false);
- }
-
- slice += dest->getSliceB(useDestInternal);
- }
-
- dest->unlock(useDestInternal);
-
- return true;
- }
-
- void Blitter::blit(Surface *source, const SliceRectF &sourceRect, Surface *dest, const SliceRect &destRect, const Blitter::Options& options)
- {
- if(dest->getInternalFormat() == VK_FORMAT_UNDEFINED)
- {
- return;
- }
-
- if(blitReactor(source, sourceRect, dest, destRect, options))
+ VkImageSubresourceLayers subresLayers =
{
- return;
- }
-
- SliceRectF sRect = sourceRect;
- SliceRect dRect = destRect;
-
- bool flipX = destRect.x0 > destRect.x1;
- bool flipY = destRect.y0 > destRect.y1;
-
- if(flipX)
- {
- swap(dRect.x0, dRect.x1);
- swap(sRect.x0, sRect.x1);
- }
- if(flipY)
+ subresourceRange.aspectMask,
+ subresourceRange.baseMipLevel,
+ subresourceRange.baseArrayLayer,
+ 1
+ };
+ uint32_t lastMipLevel = dest->getLastMipLevel(subresourceRange);
+ uint32_t lastLayer = dest->getLastLayerIndex(subresourceRange);
+
+ VkRect2D area = { { 0, 0 }, { 0, 0 } };
+ if(renderArea)
{
- swap(dRect.y0, dRect.y1);
- swap(sRect.y0, sRect.y1);
+ ASSERT(subresourceRange.levelCount == 1);
+ area = *renderArea;
}
- source->lockInternal(0, 0, sRect.slice, sw::LOCK_READONLY, sw::PUBLIC);
- dest->lockInternal(0, 0, dRect.slice, sw::LOCK_WRITEONLY, sw::PUBLIC);
-
- float w = sRect.width() / dRect.width();
- float h = sRect.height() / dRect.height();
-
- float xStart = sRect.x0 + (0.5f - dRect.x0) * w;
- float yStart = sRect.y0 + (0.5f - dRect.y0) * h;
-
- for(int j = dRect.y0; j < dRect.y1; j++)
+ for(; subresLayers.mipLevel <= lastMipLevel; subresLayers.mipLevel++)
{
- float y = yStart + j * h;
-
- for(int i = dRect.x0; i < dRect.x1; i++)
+ int rowPitchBytes = dest->rowPitchBytes(aspect, subresLayers.mipLevel);
+ int slicePitchBytes = dest->slicePitchBytes(aspect, subresLayers.mipLevel);
+ VkExtent3D extent = dest->getMipLevelExtent(subresLayers.mipLevel);
+ if(!renderArea)
{
- float x = xStart + i * w;
-
- // FIXME: Support RGBA mask
- dest->copyInternal(source, i, j, x, y, options.filter);
+ area.extent.width = extent.width;
+ area.extent.height = extent.height;
}
- }
-
- source->unlockInternal();
- dest->unlockInternal();
- }
-
- void Blitter::blit3D(Surface *source, Surface *dest)
- {
- source->lockInternal(0, 0, 0, sw::LOCK_READONLY, sw::PUBLIC);
- dest->lockInternal(0, 0, 0, sw::LOCK_WRITEONLY, sw::PUBLIC);
-
- float w = static_cast<float>(source->getWidth()) / static_cast<float>(dest->getWidth());
- float h = static_cast<float>(source->getHeight()) / static_cast<float>(dest->getHeight());
- float d = static_cast<float>(source->getDepth()) / static_cast<float>(dest->getDepth());
-
- for(int k = 0; k < dest->getDepth(); k++)
- {
- float z = (k + 0.5f) * d;
- for(int j = 0; j < dest->getHeight(); j++)
+ for(subresLayers.baseArrayLayer = subresourceRange.baseArrayLayer; subresLayers.baseArrayLayer <= lastLayer; subresLayers.baseArrayLayer++)
{
- float y = (j + 0.5f) * h;
-
- for(int i = 0; i < dest->getWidth(); i++)
+ for(uint32_t depth = 0; depth < extent.depth; depth++)
{
- float x = (i + 0.5f) * w;
+ uint8_t *slice = (uint8_t*)dest->getTexelPointer(
+ { area.offset.x, area.offset.y, static_cast<int32_t>(depth) }, subresLayers);
+
+ for(int j = 0; j < dest->getSampleCountFlagBits(); j++)
+ {
+ uint8_t *d = slice;
+
+ switch(viewFormat.bytes())
+ {
+ case 2:
+ for(uint32_t i = 0; i < area.extent.height; i++)
+ {
+ sw::clear((uint16_t*)d, packed, area.extent.width);
+ d += rowPitchBytes;
+ }
+ break;
+ case 4:
+ for(uint32_t i = 0; i < area.extent.height; i++)
+ {
+ sw::clear((uint32_t*)d, packed, area.extent.width);
+ d += rowPitchBytes;
+ }
+ break;
+ default:
+ assert(false);
+ }
- dest->copyInternal(source, i, j, k, x, y, z, true);
+ slice += slicePitchBytes;
+ }
}
}
}
- source->unlockInternal();
- dest->unlockInternal();
+ return true;
}
bool Blitter::read(Float4 &c, Pointer<Byte> element, const State &state)
@@ -1170,164 +1182,12 @@ namespace sw
return true;
}
- bool Blitter::GetScale(float4 &scale, VkFormat format)
- {
- switch(format)
- {
- case VK_FORMAT_R4G4_UNORM_PACK8:
- case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
- case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
- scale = vector(0xF, 0xF, 0xF, 0xF);
- break;
- case VK_FORMAT_R8_UNORM:
- case VK_FORMAT_R8G8_UNORM:
- case VK_FORMAT_R8G8B8_UNORM:
- case VK_FORMAT_B8G8R8_UNORM:
- case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_R8_SRGB:
- case VK_FORMAT_R8G8_SRGB:
- case VK_FORMAT_R8G8B8_SRGB:
- case VK_FORMAT_B8G8R8_SRGB:
- case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_B8G8R8A8_SRGB:
- scale = vector(0xFF, 0xFF, 0xFF, 0xFF);
- break;
- case VK_FORMAT_R8_SNORM:
- case VK_FORMAT_R8G8_SNORM:
- case VK_FORMAT_R8G8B8_SNORM:
- case VK_FORMAT_B8G8R8_SNORM:
- case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
- case VK_FORMAT_R8G8B8A8_SNORM:
- case VK_FORMAT_B8G8R8A8_SNORM:
- scale = vector(0x7F, 0x7F, 0x7F, 0x7F);
- break;
- case VK_FORMAT_R16_UNORM:
- case VK_FORMAT_R16G16_UNORM:
- case VK_FORMAT_R16G16B16_UNORM:
- case VK_FORMAT_R16G16B16A16_UNORM:
- scale = vector(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF);
- break;
- case VK_FORMAT_R16_SNORM:
- case VK_FORMAT_R16G16_SNORM:
- case VK_FORMAT_R16G16B16_SNORM:
- case VK_FORMAT_R16G16B16A16_SNORM:
- scale = vector(0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF);
- break;
- case VK_FORMAT_R8_SINT:
- case VK_FORMAT_R8_UINT:
- case VK_FORMAT_R8G8_SINT:
- case VK_FORMAT_R8G8_UINT:
- case VK_FORMAT_R8G8B8_SINT:
- case VK_FORMAT_R8G8B8_UINT:
- case VK_FORMAT_B8G8R8_SINT:
- case VK_FORMAT_B8G8R8_UINT:
- case VK_FORMAT_R8G8B8A8_SINT:
- case VK_FORMAT_R8G8B8A8_UINT:
- case VK_FORMAT_A8B8G8R8_SINT_PACK32:
- case VK_FORMAT_A8B8G8R8_UINT_PACK32:
- case VK_FORMAT_B8G8R8A8_SINT:
- case VK_FORMAT_B8G8R8A8_UINT:
- case VK_FORMAT_R8_USCALED:
- case VK_FORMAT_R8G8_USCALED:
- case VK_FORMAT_R8G8B8_USCALED:
- case VK_FORMAT_B8G8R8_USCALED:
- case VK_FORMAT_R8G8B8A8_USCALED:
- case VK_FORMAT_B8G8R8A8_USCALED:
- case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
- case VK_FORMAT_R8_SSCALED:
- case VK_FORMAT_R8G8_SSCALED:
- case VK_FORMAT_R8G8B8_SSCALED:
- case VK_FORMAT_B8G8R8_SSCALED:
- case VK_FORMAT_R8G8B8A8_SSCALED:
- case VK_FORMAT_B8G8R8A8_SSCALED:
- case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
- case VK_FORMAT_R16_SINT:
- case VK_FORMAT_R16_UINT:
- case VK_FORMAT_R16G16_SINT:
- case VK_FORMAT_R16G16_UINT:
- case VK_FORMAT_R16G16B16A16_SINT:
- case VK_FORMAT_R16G16B16A16_UINT:
- case VK_FORMAT_R16_SSCALED:
- case VK_FORMAT_R16G16_SSCALED:
- case VK_FORMAT_R16G16B16_SSCALED:
- case VK_FORMAT_R16G16B16A16_SSCALED:
- case VK_FORMAT_R16_USCALED:
- case VK_FORMAT_R16G16_USCALED:
- case VK_FORMAT_R16G16B16_USCALED:
- case VK_FORMAT_R16G16B16A16_USCALED:
- case VK_FORMAT_R32_SINT:
- case VK_FORMAT_R32_UINT:
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32_UINT:
- case VK_FORMAT_R32G32B32_SINT:
- case VK_FORMAT_R32G32B32_UINT:
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R32G32B32A32_UINT:
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- case VK_FORMAT_R32G32B32_SFLOAT:
- case VK_FORMAT_R32G32_SFLOAT:
- case VK_FORMAT_R32_SFLOAT:
- case VK_FORMAT_R16G16B16A16_SFLOAT:
- case VK_FORMAT_R16G16B16_SFLOAT:
- case VK_FORMAT_R16G16_SFLOAT:
- case VK_FORMAT_R16_SFLOAT:
- case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
- case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
- case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
- case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
- case VK_FORMAT_A2R10G10B10_UINT_PACK32:
- case VK_FORMAT_A2R10G10B10_SINT_PACK32:
- case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
- case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
- case VK_FORMAT_A2B10G10R10_UINT_PACK32:
- case VK_FORMAT_A2B10G10R10_SINT_PACK32:
- scale = vector(1.0f, 1.0f, 1.0f, 1.0f);
- break;
- case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
- case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
- case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
- scale = vector(0x1F, 0x1F, 0x1F, 0x01);
- break;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- case VK_FORMAT_B5G6R5_UNORM_PACK16:
- scale = vector(0x1F, 0x3F, 0x1F, 1.0f);
- break;
- case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
- scale = vector(0x3FF, 0x3FF, 0x3FF, 0x03);
- break;
- case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
- scale = vector(0x1FF, 0x1FF, 0x1FF, 0x01);
- break;
- case VK_FORMAT_D16_UNORM:
- scale = vector(0xFFFF, 0.0f, 0.0f, 0.0f);
- break;
- case VK_FORMAT_D24_UNORM_S8_UINT:
- case VK_FORMAT_X8_D24_UNORM_PACK32:
- scale = vector(0xFFFFFF, 0.0f, 0.0f, 0.0f);
- break;
- case VK_FORMAT_D32_SFLOAT:
- case VK_FORMAT_D32_SFLOAT_S8_UINT:
- case VK_FORMAT_S8_UINT:
- scale = vector(1.0f, 1.0f, 1.0f, 1.0f);
- break;
- default:
- return false;
- }
-
- return true;
- }
-
bool Blitter::ApplyScaleAndClamp(Float4 &value, const State &state, bool preScaled)
{
float4 scale, unscale;
if(state.clearOperation &&
- Surface::isNonNormalizedInteger(state.sourceFormat) &&
- !Surface::isNonNormalizedInteger(state.destFormat))
+ state.sourceFormat.isNonNormalizedInteger() &&
+ !state.destFormat.isNonNormalizedInteger())
{
// If we're clearing a buffer from an int or uint color into a normalized color,
// then the whole range of the int or uint color must be scaled between 0 and 1.
@@ -1343,18 +1203,18 @@ namespace sw
return false;
}
}
- else if(!GetScale(unscale, state.sourceFormat))
+ else if(!state.sourceFormat.getScale(unscale))
{
return false;
}
- if(!GetScale(scale, state.destFormat))
+ if(!state.destFormat.getScale(scale))
{
return false;
}
- bool srcSRGB = Surface::isSRGBformat(state.sourceFormat);
- bool dstSRGB = Surface::isSRGBformat(state.destFormat);
+ bool srcSRGB = state.sourceFormat.isSRGBformat();
+ bool dstSRGB = state.destFormat.isSRGBformat();
if(state.convertSRGB && ((srcSRGB && !preScaled) || dstSRGB)) // One of the formats is sRGB encoded.
{
@@ -1368,14 +1228,14 @@ namespace sw
value *= Float4(scale.x / unscale.x, scale.y / unscale.y, scale.z / unscale.z, scale.w / unscale.w);
}
- if(Surface::isFloatFormat(state.sourceFormat) && !Surface::isFloatFormat(state.destFormat))
+ if(state.sourceFormat.isFloatFormat() && !state.destFormat.isFloatFormat())
{
value = Min(value, Float4(scale.x, scale.y, scale.z, scale.w));
- value = Max(value, Float4(Surface::isUnsignedComponent(state.destFormat, 0) ? 0.0f : -scale.x,
- Surface::isUnsignedComponent(state.destFormat, 1) ? 0.0f : -scale.y,
- Surface::isUnsignedComponent(state.destFormat, 2) ? 0.0f : -scale.z,
- Surface::isUnsignedComponent(state.destFormat, 3) ? 0.0f : -scale.w));
+ value = Max(value, Float4(state.destFormat.isUnsignedComponent(0) ? 0.0f : -scale.x,
+ state.destFormat.isUnsignedComponent(1) ? 0.0f : -scale.y,
+ state.destFormat.isUnsignedComponent(2) ? 0.0f : -scale.z,
+ state.destFormat.isUnsignedComponent(3) ? 0.0f : -scale.w));
}
return true;
@@ -1443,13 +1303,13 @@ namespace sw
Int sWidth = *Pointer<Int>(blit + OFFSET(BlitData,sWidth));
Int sHeight = *Pointer<Int>(blit + OFFSET(BlitData,sHeight));
- bool intSrc = Surface::isNonNormalizedInteger(state.sourceFormat);
- bool intDst = Surface::isNonNormalizedInteger(state.destFormat);
+ bool intSrc = state.sourceFormat.isNonNormalizedInteger();
+ bool intDst = state.destFormat.isNonNormalizedInteger();
bool intBoth = intSrc && intDst;
- bool srcQuadLayout = Surface::hasQuadLayout(state.sourceFormat);
- bool dstQuadLayout = Surface::hasQuadLayout(state.destFormat);
- int srcBytes = Surface::bytes(state.sourceFormat);
- int dstBytes = Surface::bytes(state.destFormat);
+ bool srcQuadLayout = state.sourceFormat.hasQuadLayout();
+ bool dstQuadLayout = state.destFormat.hasQuadLayout();
+ int srcBytes = state.sourceFormat.bytes();
+ int dstBytes = state.destFormat.bytes();
bool hasConstantColorI = false;
Int4 constantColorI;
@@ -1555,6 +1415,21 @@ namespace sw
{
return nullptr;
}
+
+ if(state.srcSamples > 1) // Resolve multisampled source
+ {
+ Float4 accum = color;
+ for(int i = 1; i < state.srcSamples; i++)
+ {
+ s += *Pointer<Int>(blit + OFFSET(BlitData, sSliceB));
+ if(!read(color, s, state))
+ {
+ return nullptr;
+ }
+ accum += color;
+ }
+ color = accum * Float4(1.0f / static_cast<float>(state.srcSamples));
+ }
}
else // Bilinear filtering
{
@@ -1588,7 +1463,7 @@ namespace sw
Float4 c10; if(!read(c10, s10, state)) return nullptr;
Float4 c11; if(!read(c11, s11, state)) return nullptr;
- if(state.convertSRGB && Surface::isSRGBformat(state.sourceFormat)) // sRGB -> RGB
+ if(state.convertSRGB && state.sourceFormat.isSRGBformat()) // sRGB -> RGB
{
if(!ApplyScaleAndClamp(c00, state)) return nullptr;
if(!ApplyScaleAndClamp(c01, state)) return nullptr;
@@ -1628,37 +1503,8 @@ namespace sw
return function("BlitRoutine");
}
- bool Blitter::blitReactor(Surface *source, const SliceRectF &sourceRect, Surface *dest, const SliceRect &destRect, const Blitter::Options &options)
+ Routine *Blitter::getRoutine(const State &state)
{
- ASSERT(!options.clearOperation || ((source->getWidth() == 1) && (source->getHeight() == 1) && (source->getDepth() == 1)));
-
- Rect dRect = destRect;
- RectF sRect = sourceRect;
- if(destRect.x0 > destRect.x1)
- {
- swap(dRect.x0, dRect.x1);
- swap(sRect.x0, sRect.x1);
- }
- if(destRect.y0 > destRect.y1)
- {
- swap(dRect.y0, dRect.y1);
- swap(sRect.y0, sRect.y1);
- }
-
- State state(options);
- state.clampToEdge = (sourceRect.x0 < 0.0f) ||
- (sourceRect.y0 < 0.0f) ||
- (sourceRect.x1 > (float)source->getWidth()) ||
- (sourceRect.y1 > (float)source->getHeight());
-
- bool useSourceInternal = !source->isExternalDirty();
- bool useDestInternal = !dest->isExternalDirty();
- bool isStencil = options.useStencil;
-
- state.sourceFormat = isStencil ? source->getStencilFormat() : source->getFormat(useSourceInternal);
- state.destFormat = isStencil ? dest->getStencilFormat() : dest->getFormat(useDestInternal);
- state.destSamples = dest->getSamples();
-
criticalSection.lock();
Routine *blitRoutine = blitCache->query(state);
@@ -1669,7 +1515,8 @@ namespace sw
if(!blitRoutine)
{
criticalSection.unlock();
- return false;
+ UNIMPLEMENTED("blitRoutine");
+ return nullptr;
}
blitCache->add(state, blitRoutine);
@@ -1677,47 +1524,136 @@ namespace sw
criticalSection.unlock();
- void (*blitFunction)(const BlitData *data) = (void(*)(const BlitData*))blitRoutine->getEntry();
+ return blitRoutine;
+ }
- BlitData data;
+ void Blitter::blit(vk::Image *src, vk::Image *dst, VkImageBlit region, VkFilter filter)
+ {
+ if(dst->getFormat() == VK_FORMAT_UNDEFINED)
+ {
+ return;
+ }
- bool isRGBA = options.writeMask == 0xF;
- bool isEntireDest = dest->isEntire(destRect);
+ if((region.srcSubresource.layerCount != region.dstSubresource.layerCount) ||
+ (region.srcSubresource.aspectMask != region.dstSubresource.aspectMask))
+ {
+ UNIMPLEMENTED("region");
+ }
- data.source = isStencil ? source->lockStencil(0, 0, 0, sw::PUBLIC) :
- source->lock(0, 0, sourceRect.slice, sw::LOCK_READONLY, sw::PUBLIC, useSourceInternal);
- data.dest = isStencil ? dest->lockStencil(0, 0, 0, sw::PUBLIC) :
- dest->lock(0, 0, destRect.slice, isRGBA ? (isEntireDest ? sw::LOCK_DISCARD : sw::LOCK_WRITEONLY) : sw::LOCK_READWRITE, sw::PUBLIC, useDestInternal);
- data.sPitchB = isStencil ? source->getStencilPitchB() : source->getPitchB(useSourceInternal);
- data.dPitchB = isStencil ? dest->getStencilPitchB() : dest->getPitchB(useDestInternal);
- data.dSliceB = isStencil ? dest->getStencilSliceB() : dest->getSliceB(useDestInternal);
+ if(region.dstOffsets[0].x > region.dstOffsets[1].x)
+ {
+ std::swap(region.srcOffsets[0].x, region.srcOffsets[1].x);
+ std::swap(region.dstOffsets[0].x, region.dstOffsets[1].x);
+ }
+
+ if(region.dstOffsets[0].y > region.dstOffsets[1].y)
+ {
+ std::swap(region.srcOffsets[0].y, region.srcOffsets[1].y);
+ std::swap(region.dstOffsets[0].y, region.dstOffsets[1].y);
+ }
- data.w = sRect.width() / dRect.width();
- data.h = sRect.height() / dRect.height();
- data.x0 = sRect.x0 + (0.5f - dRect.x0) * data.w;
- data.y0 = sRect.y0 + (0.5f - dRect.y0) * data.h;
+ VkExtent3D srcExtent = src->getMipLevelExtent(region.srcSubresource.mipLevel);
- data.x0d = dRect.x0;
- data.x1d = dRect.x1;
- data.y0d = dRect.y0;
- data.y1d = dRect.y1;
+ int32_t numSlices = (region.srcOffsets[1].z - region.srcOffsets[0].z);
+ ASSERT(numSlices == (region.dstOffsets[1].z - region.dstOffsets[0].z));
- data.sWidth = source->getWidth();
- data.sHeight = source->getHeight();
+ VkImageAspectFlagBits srcAspect = static_cast<VkImageAspectFlagBits>(region.srcSubresource.aspectMask);
+ VkImageAspectFlagBits dstAspect = static_cast<VkImageAspectFlagBits>(region.dstSubresource.aspectMask);
- blitFunction(&data);
+ float widthRatio = static_cast<float>(region.srcOffsets[1].x - region.srcOffsets[0].x) /
+ static_cast<float>(region.dstOffsets[1].x - region.dstOffsets[0].x);
+ float heightRatio = static_cast<float>(region.srcOffsets[1].y - region.srcOffsets[0].y) /
+ static_cast<float>(region.dstOffsets[1].y - region.dstOffsets[0].y);
+ float x0 = region.srcOffsets[0].x + (0.5f - region.dstOffsets[0].x) * widthRatio;
+ float y0 = region.srcOffsets[0].y + (0.5f - region.dstOffsets[0].y) * heightRatio;
- if(isStencil)
+ bool doFilter = (filter != VK_FILTER_NEAREST);
+ State state(src->getFormat(srcAspect), dst->getFormat(dstAspect), src->getSampleCountFlagBits(), dst->getSampleCountFlagBits(),
+ { doFilter, srcAspect == VK_IMAGE_ASPECT_STENCIL_BIT, doFilter });
+ state.clampToEdge = (region.srcOffsets[0].x < 0) ||
+ (region.srcOffsets[0].y < 0) ||
+ (static_cast<uint32_t>(region.srcOffsets[1].x) > srcExtent.width) ||
+ (static_cast<uint32_t>(region.srcOffsets[1].y) > srcExtent.height) ||
+ (doFilter && ((x0 < 0.5f) || (y0 < 0.5f)));
+
+ Routine *blitRoutine = getRoutine(state);
+ if(!blitRoutine)
{
- source->unlockStencil();
- dest->unlockStencil();
+ return;
}
- else
+
+ void(*blitFunction)(const BlitData *data) = (void(*)(const BlitData*))blitRoutine->getEntry();
+
+ BlitData data =
{
- source->unlock(useSourceInternal);
- dest->unlock(useDestInternal);
- }
+ nullptr, // source
+ nullptr, // dest
+ src->rowPitchBytes(srcAspect, region.srcSubresource.mipLevel), // sPitchB
+ dst->rowPitchBytes(dstAspect, region.dstSubresource.mipLevel), // dPitchB
+ src->slicePitchBytes(srcAspect, region.srcSubresource.mipLevel), // sSliceB
+ dst->slicePitchBytes(dstAspect, region.dstSubresource.mipLevel), // dSliceB
+
+ x0,
+ y0,
+ widthRatio,
+ heightRatio,
+
+ region.dstOffsets[0].y, // y0d
+ region.dstOffsets[1].y, // y1d
+ region.dstOffsets[0].x, // x0d
+ region.dstOffsets[1].x, // x1d
+
+ static_cast<int>(srcExtent.width), // sWidth
+ static_cast<int>(srcExtent.height) // sHeight;
+ };
+
+ VkOffset3D srcOffset = { 0, 0, region.srcOffsets[0].z };
+ VkOffset3D dstOffset = { 0, 0, region.dstOffsets[0].z };
+
+ VkImageSubresourceLayers srcSubresLayers =
+ {
+ region.srcSubresource.aspectMask,
+ region.srcSubresource.mipLevel,
+ region.srcSubresource.baseArrayLayer,
+ 1
+ };
- return true;
+ VkImageSubresourceLayers dstSubresLayers =
+ {
+ region.dstSubresource.aspectMask,
+ region.dstSubresource.mipLevel,
+ region.dstSubresource.baseArrayLayer,
+ 1
+ };
+
+ VkImageSubresourceRange srcSubresRange =
+ {
+ region.srcSubresource.aspectMask,
+ region.srcSubresource.mipLevel,
+ 1,
+ region.srcSubresource.baseArrayLayer,
+ region.srcSubresource.layerCount
+ };
+
+ uint32_t lastLayer = src->getLastLayerIndex(srcSubresRange);
+
+ for(; srcSubresLayers.baseArrayLayer <= lastLayer; srcSubresLayers.baseArrayLayer++, dstSubresLayers.baseArrayLayer++)
+ {
+ srcOffset.z = region.srcOffsets[0].z;
+ dstOffset.z = region.dstOffsets[0].z;
+
+ for(int i = 0; i < numSlices; i++)
+ {
+ data.source = src->getTexelPointer(srcOffset, srcSubresLayers);
+ data.dest = dst->getTexelPointer(dstOffset, dstSubresLayers);
+
+ ASSERT(data.source < src->end());
+ ASSERT(data.dest < dst->end());
+
+ blitFunction(&data);
+ srcOffset.z++;
+ dstOffset.z++;
+ }
+ }
}
}
diff --git a/chromium/third_party/swiftshader/src/Device/Blitter.hpp b/chromium/third_party/swiftshader/src/Device/Blitter.hpp
index 637a5f87bd8..acd27326ff1 100644
--- a/chromium/third_party/swiftshader/src/Device/Blitter.hpp
+++ b/chromium/third_party/swiftshader/src/Device/Blitter.hpp
@@ -15,12 +15,18 @@
#ifndef sw_Blitter_hpp
#define sw_Blitter_hpp
-#include "Surface.hpp"
#include "RoutineCache.hpp"
#include "Reactor/Reactor.hpp"
+#include "System/MutexLock.hpp"
+#include "Vulkan/VkFormat.h"
#include <string.h>
+namespace vk
+{
+ class Image;
+}
+
namespace sw
{
class Blitter
@@ -57,15 +63,18 @@ namespace sw
{
State() = default;
State(const Options &options) : Options(options) {}
+ State(vk::Format sourceFormat, vk::Format destFormat, int srcSamples, int destSamples, const Options &options) :
+ Options(options), sourceFormat(sourceFormat), destFormat(destFormat), srcSamples(srcSamples), destSamples(destSamples) {}
bool operator==(const State &state) const
{
return memcmp(this, &state, sizeof(State)) == 0;
}
- VkFormat sourceFormat;
- VkFormat destFormat;
- int destSamples;
+ vk::Format sourceFormat;
+ vk::Format destFormat;
+ int srcSamples = 0;
+ int destSamples = 0;
};
struct BlitData
@@ -74,6 +83,7 @@ namespace sw
void *dest;
int sPitchB;
int dPitchB;
+ int sSliceB;
int dSliceB;
float x0;
@@ -94,23 +104,22 @@ namespace sw
Blitter();
virtual ~Blitter();
- void clear(void *pixel, VkFormat format, Surface *dest, const SliceRect &dRect, unsigned int rgbaMask);
- void blit(Surface *source, const SliceRectF &sRect, Surface *dest, const SliceRect &dRect, const Options &options);
- void blit3D(Surface *source, Surface *dest);
+ void clear(void *pixel, vk::Format format, vk::Image *dest, const vk::Format& viewFormat, const VkImageSubresourceRange& subresourceRange, const VkRect2D* renderArea = nullptr);
+
+ void blit(vk::Image *src, vk::Image *dst, VkImageBlit region, VkFilter filter);
private:
- bool fastClear(void *pixel, VkFormat format, Surface *dest, const SliceRect &dRect, unsigned int rgbaMask);
+ bool fastClear(void *pixel, vk::Format format, vk::Image *dest, const vk::Format& viewFormat, const VkImageSubresourceRange& subresourceRange, const VkRect2D* renderArea);
bool read(Float4 &color, Pointer<Byte> element, const State &state);
bool write(Float4 &color, Pointer<Byte> element, const State &state);
bool read(Int4 &color, Pointer<Byte> element, const State &state);
bool write(Int4 &color, Pointer<Byte> element, const State &state);
- static bool GetScale(float4& scale, VkFormat format);
static bool ApplyScaleAndClamp(Float4 &value, const State &state, bool preScaled = false);
static Int ComputeOffset(Int &x, Int &y, Int &pitchB, int bytes, bool quadLayout);
static Float4 LinearToSRGB(Float4 &color);
static Float4 sRGBtoLinear(Float4 &color);
- bool blitReactor(Surface *source, const SliceRectF &sRect, Surface *dest, const SliceRect &dRect, const Options &options);
+ Routine *getRoutine(const State &state);
Routine *generate(const State &state);
RoutineCache<State> *blitCache;
diff --git a/chromium/third_party/swiftshader/src/Device/Context.cpp b/chromium/third_party/swiftshader/src/Device/Context.cpp
index b77cfd17867..a7198b70be4 100644
--- a/chromium/third_party/swiftshader/src/Device/Context.cpp
+++ b/chromium/third_party/swiftshader/src/Device/Context.cpp
@@ -15,7 +15,6 @@
#include "Context.hpp"
#include "Primitive.hpp"
-#include "Surface.hpp"
#include "System/Memory.hpp"
#include "Vulkan/VkDebug.hpp"
#include "Vulkan/VkImageView.hpp"
@@ -29,14 +28,10 @@ namespace sw
bool booleanFaceRegister = false;
bool fullPixelPositionRegister = false;
- bool leadingVertexFirst = false; // Flat shading uses first vertex, else last
- bool secondaryColor = false; // Specular lighting is applied after texturing
bool colorsDefaultToZero = false;
bool forceWindowed = false;
bool quadLayoutEnabled = false;
- bool veryEarlyDepthTest = true;
- bool complementaryDepthBuffer = false;
bool postBlendSRGB = false;
bool exactColorRounding = false;
TransparencyAntialiasing transparencyAntialiasing = TRANSPARENCY_NONE;
@@ -63,98 +58,56 @@ namespace sw
bool Context::isDrawPoint() const
{
- switch(drawType)
+ switch(topology)
{
- case DRAW_POINTLIST:
- case DRAW_INDEXEDPOINTLIST16:
- case DRAW_INDEXEDPOINTLIST32:
+ case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:
return true;
- case DRAW_LINELIST:
- case DRAW_LINESTRIP:
- case DRAW_INDEXEDLINELIST16:
- case DRAW_INDEXEDLINESTRIP16:
- case DRAW_INDEXEDLINELIST32:
- case DRAW_INDEXEDLINESTRIP32:
- return false;
- case DRAW_TRIANGLELIST:
- case DRAW_TRIANGLESTRIP:
- case DRAW_TRIANGLEFAN:
- case DRAW_INDEXEDTRIANGLELIST16:
- case DRAW_INDEXEDTRIANGLESTRIP16:
- case DRAW_INDEXEDTRIANGLEFAN16:
- case DRAW_INDEXEDTRIANGLELIST32:
- case DRAW_INDEXEDTRIANGLESTRIP32:
- case DRAW_INDEXEDTRIANGLEFAN32:
- return false;
+ case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:
+ case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:
+ break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("topology %d", int(topology));
}
-
return false;
}
bool Context::isDrawLine() const
{
- switch(drawType)
+ switch(topology)
{
- case DRAW_POINTLIST:
- case DRAW_INDEXEDPOINTLIST16:
- case DRAW_INDEXEDPOINTLIST32:
- return false;
- case DRAW_LINELIST:
- case DRAW_LINESTRIP:
- case DRAW_INDEXEDLINELIST16:
- case DRAW_INDEXEDLINESTRIP16:
- case DRAW_INDEXEDLINELIST32:
- case DRAW_INDEXEDLINESTRIP32:
+ case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:
+ case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:
return true;
- case DRAW_TRIANGLELIST:
- case DRAW_TRIANGLESTRIP:
- case DRAW_TRIANGLEFAN:
- case DRAW_INDEXEDTRIANGLELIST16:
- case DRAW_INDEXEDTRIANGLESTRIP16:
- case DRAW_INDEXEDTRIANGLEFAN16:
- case DRAW_INDEXEDTRIANGLELIST32:
- case DRAW_INDEXEDTRIANGLESTRIP32:
- case DRAW_INDEXEDTRIANGLEFAN32:
- return false;
+ case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:
+ break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("topology %d", int(topology));
}
-
return false;
}
bool Context::isDrawTriangle() const
{
- switch(drawType)
+ switch(topology)
{
- case DRAW_POINTLIST:
- case DRAW_INDEXEDPOINTLIST16:
- case DRAW_INDEXEDPOINTLIST32:
- return false;
- case DRAW_LINELIST:
- case DRAW_LINESTRIP:
- case DRAW_INDEXEDLINELIST16:
- case DRAW_INDEXEDLINESTRIP16:
- case DRAW_INDEXEDLINELIST32:
- case DRAW_INDEXEDLINESTRIP32:
- return false;
- case DRAW_TRIANGLELIST:
- case DRAW_TRIANGLESTRIP:
- case DRAW_TRIANGLEFAN:
- case DRAW_INDEXEDTRIANGLELIST16:
- case DRAW_INDEXEDTRIANGLESTRIP16:
- case DRAW_INDEXEDTRIANGLEFAN16:
- case DRAW_INDEXEDTRIANGLELIST32:
- case DRAW_INDEXEDTRIANGLESTRIP32:
- case DRAW_INDEXEDTRIANGLEFAN32:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:
return true;
+ case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:
+ case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:
+ case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:
+ break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("topology %d", int(topology));
}
-
- return true;
+ return false;
}
void Context::init()
@@ -173,26 +126,14 @@ namespace sw
stencilBuffer = nullptr;
stencilEnable = false;
- stencilCompareMode = VK_COMPARE_OP_ALWAYS;
- stencilReference = 0;
- stencilMask = 0xFFFFFFFF;
- stencilFailOperation = VK_STENCIL_OP_KEEP;
- stencilPassOperation = VK_STENCIL_OP_KEEP;
- stencilZFailOperation = VK_STENCIL_OP_KEEP;
- stencilWriteMask = 0xFFFFFFFF;
-
twoSidedStencil = false;
- stencilCompareModeCCW = VK_COMPARE_OP_ALWAYS;
- stencilReferenceCCW = 0;
- stencilMaskCCW = 0xFFFFFFFF;
- stencilFailOperationCCW = VK_STENCIL_OP_KEEP;
- stencilPassOperationCCW = VK_STENCIL_OP_KEEP;
- stencilZFailOperationCCW = VK_STENCIL_OP_KEEP;
- stencilWriteMaskCCW = 0xFFFFFFFF;
+ frontStencil = {};
+ backStencil = {};
rasterizerDiscard = false;
depthCompareMode = VK_COMPARE_OP_LESS;
+ depthBoundsTestEnable = false;
depthBufferEnable = false;
depthWriteEnable = false;
diff --git a/chromium/third_party/swiftshader/src/Device/Context.hpp b/chromium/third_party/swiftshader/src/Device/Context.hpp
index 6be2017e5a6..e692762cbee 100644
--- a/chromium/third_party/swiftshader/src/Device/Context.hpp
+++ b/chromium/third_party/swiftshader/src/Device/Context.hpp
@@ -15,17 +15,22 @@
#ifndef sw_Context_hpp
#define sw_Context_hpp
+#include "Vulkan/VkConfig.h"
+#include "Vulkan/VkDescriptorSet.hpp"
#include "Sampler.hpp"
#include "Stream.hpp"
#include "Point.hpp"
#include "Vertex.hpp"
#include "System/Types.hpp"
+#include <Vulkan/VkConfig.h>
+
namespace vk
{
+ class DescriptorSet;
class ImageView;
class PipelineLayout;
-} // namespace vk
+}
namespace sw
{
@@ -58,38 +63,6 @@ namespace sw
PositionT = 15
};
- enum DrawType ENUM_UNDERLYING_TYPE_UNSIGNED_INT
- {
- // These types must stay ordered by vertices per primitive. Also, if these basic types
- // are modified, verify the value assigned to task->verticesPerPrimitive in Renderer.cpp
- DRAW_POINTLIST = 0x00,
- DRAW_LINELIST = 0x01,
- DRAW_LINESTRIP = 0x02,
- DRAW_TRIANGLELIST = 0x03,
- DRAW_TRIANGLESTRIP = 0x04,
- DRAW_TRIANGLEFAN = 0x05,
-
- DRAW_NONINDEXED = 0x00,
- DRAW_INDEXED16 = 0x20,
- DRAW_INDEXED32 = 0x30,
-
- DRAW_INDEXEDPOINTLIST16 = DRAW_POINTLIST | DRAW_INDEXED16,
- DRAW_INDEXEDLINELIST16 = DRAW_LINELIST | DRAW_INDEXED16,
- DRAW_INDEXEDLINESTRIP16 = DRAW_LINESTRIP | DRAW_INDEXED16,
- DRAW_INDEXEDTRIANGLELIST16 = DRAW_TRIANGLELIST | DRAW_INDEXED16,
- DRAW_INDEXEDTRIANGLESTRIP16 = DRAW_TRIANGLESTRIP | DRAW_INDEXED16,
- DRAW_INDEXEDTRIANGLEFAN16 = DRAW_TRIANGLEFAN | DRAW_INDEXED16,
-
- DRAW_INDEXEDPOINTLIST32 = DRAW_POINTLIST | DRAW_INDEXED32,
- DRAW_INDEXEDLINELIST32 = DRAW_LINELIST | DRAW_INDEXED32,
- DRAW_INDEXEDLINESTRIP32 = DRAW_LINESTRIP | DRAW_INDEXED32,
- DRAW_INDEXEDTRIANGLELIST32 = DRAW_TRIANGLELIST | DRAW_INDEXED32,
- DRAW_INDEXEDTRIANGLESTRIP32 = DRAW_TRIANGLESTRIP | DRAW_INDEXED32,
- DRAW_INDEXEDTRIANGLEFAN32 = DRAW_TRIANGLEFAN | DRAW_INDEXED32,
-
- DRAW_LAST = DRAW_INDEXEDTRIANGLEFAN32
- };
-
enum CullMode ENUM_UNDERLYING_TYPE_UNSIGNED_INT
{
CULL_NONE,
@@ -107,6 +80,11 @@ namespace sw
TRANSPARENCY_LAST = TRANSPARENCY_ALPHA_TO_COVERAGE
};
+ struct PushConstantStorage
+ {
+ unsigned char data[vk::MAX_PUSH_CONSTANT_SIZE];
+ };
+
class Context
{
public:
@@ -156,25 +134,12 @@ namespace sw
VkLogicOp colorLogicOp();
- DrawType drawType;
+ VkPrimitiveTopology topology;
bool stencilEnable;
- VkCompareOp stencilCompareMode;
- int stencilReference;
- int stencilMask;
- VkStencilOp stencilFailOperation;
- VkStencilOp stencilPassOperation;
- VkStencilOp stencilZFailOperation;
- int stencilWriteMask;
-
bool twoSidedStencil;
- VkCompareOp stencilCompareModeCCW;
- int stencilReferenceCCW;
- int stencilMaskCCW;
- VkStencilOp stencilFailOperationCCW;
- VkStencilOp stencilPassOperationCCW;
- VkStencilOp stencilZFailOperationCCW;
- int stencilWriteMaskCCW;
+ VkStencilOpState frontStencil;
+ VkStencilOpState backStencil;
// Pixel processor states
VkCullModeFlags cullMode;
@@ -189,6 +154,8 @@ namespace sw
int colorWriteActive(int index);
bool colorUsed();
+ vk::DescriptorSet::Bindings descriptorSets = {};
+ vk::DescriptorSet::DynamicOffsets descriptorDynamicOffsets = {};
Stream input[MAX_VERTEX_INPUTS];
void *indexBuffer;
@@ -212,6 +179,7 @@ namespace sw
// Pixel processor states
bool rasterizerDiscard;
+ bool depthBoundsTestEnable;
bool depthBufferEnable;
VkCompareOp depthCompareMode;
bool depthWriteEnable;
@@ -233,6 +201,8 @@ namespace sw
unsigned int sampleMask;
unsigned int multiSampleMask;
int sampleCount;
+
+ PushConstantStorage pushConstants;
};
}
diff --git a/chromium/third_party/swiftshader/src/Device/PixelProcessor.cpp b/chromium/third_party/swiftshader/src/Device/PixelProcessor.cpp
index 811a265f91b..7fc41a29462 100644
--- a/chromium/third_party/swiftshader/src/Device/PixelProcessor.cpp
+++ b/chromium/third_party/swiftshader/src/Device/PixelProcessor.cpp
@@ -14,7 +14,6 @@
#include "PixelProcessor.hpp"
-#include "Surface.hpp"
#include "Primitive.hpp"
#include "Pipeline/PixelProgram.hpp"
#include "Pipeline/Constants.hpp"
@@ -25,7 +24,6 @@
namespace sw
{
- extern bool complementaryDepthBuffer;
extern TransparencyAntialiasing transparencyAntialiasing;
extern bool perspectiveCorrection;
@@ -120,92 +118,6 @@ namespace sw
context->setColorWriteMask(index, rgbaMask);
}
- void PixelProcessor::setStencilEnable(bool stencilEnable)
- {
- context->stencilEnable = stencilEnable;
- }
-
- void PixelProcessor::setStencilCompare(VkCompareOp stencilCompareMode)
- {
- context->stencilCompareMode = stencilCompareMode;
- }
-
- void PixelProcessor::setStencilReference(int stencilReference)
- {
- context->stencilReference = stencilReference;
- stencil.set(stencilReference, context->stencilMask, context->stencilWriteMask);
- }
-
- void PixelProcessor::setStencilReferenceCCW(int stencilReferenceCCW)
- {
- context->stencilReferenceCCW = stencilReferenceCCW;
- stencilCCW.set(stencilReferenceCCW, context->stencilMaskCCW, context->stencilWriteMaskCCW);
- }
-
- void PixelProcessor::setStencilMask(int stencilMask)
- {
- context->stencilMask = stencilMask;
- stencil.set(context->stencilReference, stencilMask, context->stencilWriteMask);
- }
-
- void PixelProcessor::setStencilMaskCCW(int stencilMaskCCW)
- {
- context->stencilMaskCCW = stencilMaskCCW;
- stencilCCW.set(context->stencilReferenceCCW, stencilMaskCCW, context->stencilWriteMaskCCW);
- }
-
- void PixelProcessor::setStencilFailOperation(VkStencilOp stencilFailOperation)
- {
- context->stencilFailOperation = stencilFailOperation;
- }
-
- void PixelProcessor::setStencilPassOperation(VkStencilOp stencilPassOperation)
- {
- context->stencilPassOperation = stencilPassOperation;
- }
-
- void PixelProcessor::setStencilZFailOperation(VkStencilOp stencilZFailOperation)
- {
- context->stencilZFailOperation = stencilZFailOperation;
- }
-
- void PixelProcessor::setStencilWriteMask(int stencilWriteMask)
- {
- context->stencilWriteMask = stencilWriteMask;
- stencil.set(context->stencilReference, context->stencilMask, stencilWriteMask);
- }
-
- void PixelProcessor::setStencilWriteMaskCCW(int stencilWriteMaskCCW)
- {
- context->stencilWriteMaskCCW = stencilWriteMaskCCW;
- stencilCCW.set(context->stencilReferenceCCW, context->stencilMaskCCW, stencilWriteMaskCCW);
- }
-
- void PixelProcessor::setTwoSidedStencil(bool enable)
- {
- context->twoSidedStencil = enable;
- }
-
- void PixelProcessor::setStencilCompareCCW(VkCompareOp stencilCompareMode)
- {
- context->stencilCompareModeCCW = stencilCompareMode;
- }
-
- void PixelProcessor::setStencilFailOperationCCW(VkStencilOp stencilFailOperation)
- {
- context->stencilFailOperationCCW = stencilFailOperation;
- }
-
- void PixelProcessor::setStencilPassOperationCCW(VkStencilOp stencilPassOperation)
- {
- context->stencilPassOperationCCW = stencilPassOperation;
- }
-
- void PixelProcessor::setStencilZFailOperationCCW(VkStencilOp stencilZFailOperation)
- {
- context->stencilZFailOperationCCW = stencilZFailOperation;
- }
-
void PixelProcessor::setBlendConstant(const Color<float> &blendConstant)
{
// FIXME: Compact into generic function // FIXME: Clamp
@@ -354,7 +266,7 @@ namespace sw
void PixelProcessor::setRoutineCacheSize(int cacheSize)
{
delete routineCache;
- routineCache = new RoutineCache<State>(clamp(cacheSize, 1, 65536), precachePixel ? "sw-pixel" : 0);
+ routineCache = new RoutineCache<State>(clamp(cacheSize, 1, 65536));
}
const PixelProcessor::State PixelProcessor::update() const
@@ -380,29 +292,17 @@ namespace sw
if(context->stencilActive())
{
state.stencilActive = true;
- state.stencilCompareMode = context->stencilCompareMode;
- state.stencilFailOperation = context->stencilFailOperation;
- state.stencilPassOperation = context->stencilPassOperation;
- state.stencilZFailOperation = context->stencilZFailOperation;
- state.noStencilMask = (context->stencilMask == 0xFF);
- state.noStencilWriteMask = (context->stencilWriteMask == 0xFF);
- state.stencilWriteMasked = (context->stencilWriteMask == 0x00);
-
state.twoSidedStencil = context->twoSidedStencil;
- state.stencilCompareModeCCW = context->twoSidedStencil ? context->stencilCompareModeCCW : state.stencilCompareMode;
- state.stencilFailOperationCCW = context->twoSidedStencil ? context->stencilFailOperationCCW : state.stencilFailOperation;
- state.stencilPassOperationCCW = context->twoSidedStencil ? context->stencilPassOperationCCW : state.stencilPassOperation;
- state.stencilZFailOperationCCW = context->twoSidedStencil ? context->stencilZFailOperationCCW : state.stencilZFailOperation;
- state.noStencilMaskCCW = context->twoSidedStencil ? (context->stencilMaskCCW == 0xFF) : state.noStencilMask;
- state.noStencilWriteMaskCCW = context->twoSidedStencil ? (context->stencilWriteMaskCCW == 0xFF) : state.noStencilWriteMask;
- state.stencilWriteMaskedCCW = context->twoSidedStencil ? (context->stencilWriteMaskCCW == 0x00) : state.stencilWriteMasked;
+ state.frontStencil = context->frontStencil;
+ state.backStencil = context->backStencil;
}
if(context->depthBufferActive())
{
state.depthTestActive = true;
state.depthCompareMode = context->depthCompareMode;
- state.quadLayoutDepthBuffer = Surface::hasQuadLayout(context->depthBuffer->getFormat());
+ state.quadLayoutDepthBuffer = context->depthBuffer->getFormat().hasQuadLayout();
+ state.depthFormat = context->depthBuffer->getFormat();
}
state.occlusionEnabled = context->occlusionEnabled;
@@ -427,7 +327,7 @@ namespace sw
state.targetFormat[i] = context->renderTargetInternalFormat(i);
}
- state.writeSRGB = context->writeSRGB && context->renderTarget[0] && Surface::isSRGBwritable(context->renderTarget[0]->getFormat());
+ state.writeSRGB = context->writeSRGB && context->renderTarget[0] && context->renderTarget[0]->getFormat().isSRGBwritable();
state.multiSample = context->sampleCount;
state.multiSampleMask = context->multiSampleMask;
@@ -449,7 +349,7 @@ namespace sw
if(!routine)
{
- QuadRasterizer *generator = new PixelProgram(state, context->pipelineLayout, context->pixelShader);
+ QuadRasterizer *generator = new PixelProgram(state, context->pipelineLayout, context->pixelShader, context->descriptorSets);
generator->generate();
routine = (*generator)("PixelRoutine_%0.8X", state.shaderID);
delete generator;
diff --git a/chromium/third_party/swiftshader/src/Device/PixelProcessor.hpp b/chromium/third_party/swiftshader/src/Device/PixelProcessor.hpp
index 97617a90cdc..c15da8b4bbd 100644
--- a/chromium/third_party/swiftshader/src/Device/PixelProcessor.hpp
+++ b/chromium/third_party/swiftshader/src/Device/PixelProcessor.hpp
@@ -39,21 +39,9 @@ namespace sw
bool quadLayoutDepthBuffer;
bool stencilActive;
- VkCompareOp stencilCompareMode;
- VkStencilOp stencilFailOperation;
- VkStencilOp stencilPassOperation;
- VkStencilOp stencilZFailOperation;
- bool noStencilMask;
- bool noStencilWriteMask;
- bool stencilWriteMasked;
bool twoSidedStencil;
- VkCompareOp stencilCompareModeCCW;
- VkStencilOp stencilFailOperationCCW;
- VkStencilOp stencilPassOperationCCW;
- VkStencilOp stencilZFailOperationCCW;
- bool noStencilMaskCCW;
- bool noStencilWriteMaskCCW;
- bool stencilWriteMaskedCCW;
+ VkStencilOpState frontStencil;
+ VkStencilOpState backStencil;
bool depthTestActive;
bool occlusionEnabled;
@@ -76,6 +64,7 @@ namespace sw
TransparencyAntialiasing transparencyAntialiasing;
bool centroid;
bool frontFaceCCW;
+ VkFormat depthFormat;
Sampler::State sampler[TEXTURE_IMAGE_UNITS];
};
@@ -157,23 +146,6 @@ namespace sw
void setColorLogicOpEnabled(bool colorLogicOpEnabled);
void setLogicalOperation(VkLogicOp logicalOperation);
- void setStencilEnable(bool stencilEnable);
- void setStencilCompare(VkCompareOp stencilCompareMode);
- void setStencilReference(int stencilReference);
- void setStencilMask(int stencilMask);
- void setStencilFailOperation(VkStencilOp stencilFailOperation);
- void setStencilPassOperation(VkStencilOp stencilPassOperation);
- void setStencilZFailOperation(VkStencilOp stencilZFailOperation);
- void setStencilWriteMask(int stencilWriteMask);
- void setTwoSidedStencil(bool enable);
- void setStencilCompareCCW(VkCompareOp stencilCompareMode);
- void setStencilReferenceCCW(int stencilReference);
- void setStencilMaskCCW(int stencilMask);
- void setStencilFailOperationCCW(VkStencilOp stencilFailOperation);
- void setStencilPassOperationCCW(VkStencilOp stencilPassOperation);
- void setStencilZFailOperationCCW(VkStencilOp stencilZFailOperation);
- void setStencilWriteMaskCCW(int stencilWriteMask);
-
void setBlendConstant(const Color<float> &blendConstant);
void setAlphaBlendEnable(bool alphaBlendEnable);
@@ -196,8 +168,6 @@ namespace sw
void setRoutineCacheSize(int routineCacheSize);
// Other semi-constants
- Stencil stencil;
- Stencil stencilCCW;
Factor factor;
private:
diff --git a/chromium/third_party/swiftshader/src/Device/Primitive.hpp b/chromium/third_party/swiftshader/src/Device/Primitive.hpp
index 1e085f75686..f72fe325d1d 100644
--- a/chromium/third_party/swiftshader/src/Device/Primitive.hpp
+++ b/chromium/third_party/swiftshader/src/Device/Primitive.hpp
@@ -50,8 +50,6 @@ namespace sw
PlaneEquation V[MAX_INTERFACE_COMPONENTS];
};
- float area;
-
// Masks for two-sided stencil
int64_t clockwiseMask;
int64_t invClockwiseMask;
diff --git a/chromium/third_party/swiftshader/src/Device/QuadRasterizer.cpp b/chromium/third_party/swiftshader/src/Device/QuadRasterizer.cpp
index 1d24bbc699c..ed752d21bf8 100644
--- a/chromium/third_party/swiftshader/src/Device/QuadRasterizer.cpp
+++ b/chromium/third_party/swiftshader/src/Device/QuadRasterizer.cpp
@@ -22,8 +22,6 @@
namespace sw
{
- extern bool veryEarlyDepthTest;
- extern bool complementaryDepthBuffer;
extern bool fullPixelPositionRegister;
extern int clusterCount;
@@ -159,78 +157,6 @@ namespace sw
}
}
- if(veryEarlyDepthTest && state.multiSample == 1 && !spirvShader->getModes().DepthReplacing)
- {
- if(!state.stencilActive && state.depthTestActive && (state.depthCompareMode == VK_COMPARE_OP_LESS_OR_EQUAL || state.depthCompareMode == VK_COMPARE_OP_LESS)) // FIXME: Both modes ok?
- {
- Float4 xxxx = Float4(Float(x0)) + *Pointer<Float4>(primitive + OFFSET(Primitive,xQuad), 16);
-
- Pointer<Byte> buffer;
- Int pitch;
-
- if(!state.quadLayoutDepthBuffer)
- {
- buffer = zBuffer + 4 * x0;
- pitch = *Pointer<Int>(data + OFFSET(DrawData,depthPitchB));
- }
- else
- {
- buffer = zBuffer + 8 * x0;
- }
-
- For(Int x = x0, x < x1, x += 2)
- {
- Float4 z = interpolate(xxxx, Dz[0], z, primitive + OFFSET(Primitive,z), false, false, state.depthClamp);
-
- Float4 zValue;
-
- if(!state.quadLayoutDepthBuffer)
- {
- // FIXME: Properly optimizes?
- zValue.xy = *Pointer<Float4>(buffer);
- zValue.zw = *Pointer<Float4>(buffer + pitch - 8);
- }
- else
- {
- zValue = *Pointer<Float4>(buffer, 16);
- }
-
- Int4 zTest;
-
- if(complementaryDepthBuffer)
- {
- zTest = CmpLE(zValue, z);
- }
- else
- {
- zTest = CmpNLT(zValue, z);
- }
-
- Int zMask = SignMask(zTest);
-
- If(zMask == 0)
- {
- x0 += 2;
- }
- Else
- {
- x = x1;
- }
-
- xxxx += Float4(2);
-
- if(!state.quadLayoutDepthBuffer)
- {
- buffer += 8;
- }
- else
- {
- buffer += 16;
- }
- }
- }
- }
-
If(x0 < x1)
{
if(interpolateW())
diff --git a/chromium/third_party/swiftshader/src/Device/Renderer.cpp b/chromium/third_party/swiftshader/src/Device/Renderer.cpp
index 2bfa17b3c7d..a3cdac7da60 100644
--- a/chromium/third_party/swiftshader/src/Device/Renderer.cpp
+++ b/chromium/third_party/swiftshader/src/Device/Renderer.cpp
@@ -15,10 +15,8 @@
#include "Renderer.hpp"
#include "Clipper.hpp"
-#include "Surface.hpp"
#include "Primitive.hpp"
#include "Polygon.hpp"
-#include "WSI/FrameBuffer.hpp"
#include "Device/SwiftConfig.hpp"
#include "Reactor/Reactor.hpp"
#include "Pipeline/Constants.hpp"
@@ -32,6 +30,7 @@
#include "Vulkan/VkConfig.h"
#include "Vulkan/VkDebug.hpp"
#include "Vulkan/VkImageView.hpp"
+#include "Vulkan/VkQueryPool.hpp"
#include "Pipeline/SpirvShader.hpp"
#include "Vertex.hpp"
@@ -48,12 +47,9 @@ namespace sw
{
extern bool booleanFaceRegister;
extern bool fullPixelPositionRegister;
- extern bool leadingVertexFirst; // Flat shading uses first vertex, else last
- extern bool secondaryColor; // Specular lighting is applied after texturing
extern bool colorsDefaultToZero;
extern bool forceWindowed;
- extern bool complementaryDepthBuffer;
extern bool postBlendSRGB;
extern bool exactColorRounding;
extern TransparencyAntialiasing transparencyAntialiasing;
@@ -82,14 +78,103 @@ namespace sw
{
sw::booleanFaceRegister = conventions.booleanFaceRegister;
sw::fullPixelPositionRegister = conventions.fullPixelPositionRegister;
- sw::leadingVertexFirst = conventions.leadingVertexFirst;
- sw::secondaryColor = conventions.secondaryColor;
sw::colorsDefaultToZero = conventions.colorsDefaultToZero;
sw::exactColorRounding = exactColorRounding;
initialized = true;
}
}
+ template<typename T>
+ inline bool setBatchIndices(unsigned int batch[128][3], VkPrimitiveTopology topology, T indices, unsigned int start, unsigned int triangleCount)
+ {
+ switch(topology)
+ {
+ case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:
+ {
+ auto index = start;
+ for(unsigned int i = 0; i < triangleCount; i++)
+ {
+ batch[i][0] = indices[index];
+ batch[i][1] = indices[index];
+ batch[i][2] = indices[index];
+
+ index += 1;
+ }
+ break;
+ }
+ case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:
+ {
+ auto index = 2 * start;
+ for(unsigned int i = 0; i < triangleCount; i++)
+ {
+ batch[i][0] = indices[index + 0];
+ batch[i][1] = indices[index + 1];
+ batch[i][2] = indices[index + 1];
+
+ index += 2;
+ }
+ break;
+ }
+ case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:
+ {
+ auto index = start;
+ for(unsigned int i = 0; i < triangleCount; i++)
+ {
+ batch[i][0] = indices[index + 0];
+ batch[i][1] = indices[index + 1];
+ batch[i][2] = indices[index + 1];
+
+ index += 1;
+ }
+ break;
+ }
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:
+ {
+ auto index = 3 * start;
+ for(unsigned int i = 0; i < triangleCount; i++)
+ {
+ batch[i][0] = indices[index + 0];
+ batch[i][1] = indices[index + 1];
+ batch[i][2] = indices[index + 2];
+
+ index += 3;
+ }
+ break;
+ }
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:
+ {
+ auto index = start;
+ for(unsigned int i = 0; i < triangleCount; i++)
+ {
+ batch[i][0] = indices[index + 0];
+ batch[i][1] = indices[index + ((start + i) & 1) + 1];
+ batch[i][2] = indices[index + (~(start + i) & 1) + 1];
+
+ index += 1;
+ }
+ break;
+ }
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:
+ {
+ auto index = start + 1;
+ for(unsigned int i = 0; i < triangleCount; i++)
+ {
+ batch[i][0] = indices[index + 0];
+ batch[i][1] = indices[index + 1];
+ batch[i][2] = indices[0];
+
+ index += 1;
+ }
+ break;
+ }
+ default:
+ ASSERT(false);
+ return false;
+ }
+
+ return true;
+ }
+
struct Parameters
{
Renderer *renderer;
@@ -211,7 +296,7 @@ namespace sw
sw::deallocate(mem);
}
- void Renderer::draw(DrawType drawType, unsigned int count, bool update)
+ void Renderer::draw(VkPrimitiveTopology topology, VkIndexType indexType, unsigned int count, int baseVertex, bool update)
{
#ifndef NDEBUG
if(count < minPrimitives || count > maxPrimitives)
@@ -220,7 +305,7 @@ namespace sw
}
#endif
- context->drawType = drawType;
+ context->topology = topology;
updateConfiguration();
@@ -233,11 +318,21 @@ namespace sw
return;
}
+ context->occlusionEnabled = false;
+ for(auto query : queries)
+ {
+ if(query->type == VK_QUERY_TYPE_OCCLUSION)
+ {
+ context->occlusionEnabled = true;
+ break;
+ }
+ }
+
sync->lock(sw::PRIVATE);
if(update || oldMultiSampleMask != context->multiSampleMask)
{
- vertexState = VertexProcessor::update(drawType);
+ vertexState = VertexProcessor::update(topology);
setupState = SetupProcessor::update();
pixelState = PixelProcessor::update();
@@ -289,7 +384,7 @@ namespace sw
if(queries.size() != 0)
{
- draw->queries = new std::list<Query*>();
+ draw->queries = new std::list<vk::Query*>();
for(auto &query : queries)
{
++query->reference; // Atomic
@@ -297,7 +392,8 @@ namespace sw
}
}
- draw->drawType = drawType;
+ draw->topology = topology;
+ draw->indexType = indexType;
draw->batchSize = batch;
vertexRoutine->bind();
@@ -313,26 +409,28 @@ namespace sw
draw->setupPrimitives = setupPrimitives;
draw->setupState = setupState;
+ data->descriptorSets = context->descriptorSets;
+ data->descriptorDynamicOffsets = context->descriptorDynamicOffsets;
+
for(int i = 0; i < MAX_VERTEX_INPUTS; i++)
{
data->input[i] = context->input[i].buffer;
- data->stride[i] = context->input[i].stride;
+ data->stride[i] = context->input[i].vertexStride;
}
- if(context->indexBuffer)
- {
- data->indices = context->indexBuffer;
- }
+ data->indices = context->indexBuffer;
- if(context->vertexShader->hasBuiltinInput(spv::BuiltInInstanceId))
+ if(context->vertexShader->hasBuiltinInput(spv::BuiltInInstanceIndex))
{
data->instanceID = context->instanceID;
}
+ data->baseVertex = baseVertex;
+
if(pixelState.stencilActive)
{
- data->stencil[0] = stencil;
- data->stencil[1] = stencilCCW;
+ data->stencil[0].set(context->frontStencil.reference, context->frontStencil.compareMask, context->frontStencil.writeMask);
+ data->stencil[1].set(context->backStencil.reference, context->backStencil.compareMask, context->backStencil.writeMask);
}
data->lineWidth = context->lineWidth;
@@ -392,12 +490,6 @@ namespace sw
N += context->depthBias;
}
- if(complementaryDepthBuffer)
- {
- Z = -Z;
- N = 1 - N;
- }
-
data->Wx16 = replicate(W * 16);
data->Hx16 = replicate(H * 16);
data->X0x16 = replicate(X0 * 16 - 8);
@@ -420,8 +512,8 @@ namespace sw
{
VkOffset3D offset = { 0, 0, static_cast<int32_t>(context->renderTargetLayer[index]) };
data->colorBuffer[index] = (unsigned int*)context->renderTarget[index]->getOffsetPointer(offset, VK_IMAGE_ASPECT_COLOR_BIT);
- data->colorPitchB[index] = context->renderTarget[index]->rowPitchBytes(VK_IMAGE_ASPECT_COLOR_BIT);
- data->colorSliceB[index] = context->renderTarget[index]->slicePitchBytes(VK_IMAGE_ASPECT_COLOR_BIT);
+ data->colorPitchB[index] = context->renderTarget[index]->rowPitchBytes(VK_IMAGE_ASPECT_COLOR_BIT, 0);
+ data->colorSliceB[index] = context->renderTarget[index]->slicePitchBytes(VK_IMAGE_ASPECT_COLOR_BIT, 0);
}
}
@@ -432,25 +524,30 @@ namespace sw
{
VkOffset3D offset = { 0, 0, static_cast<int32_t>(context->depthBufferLayer) };
data->depthBuffer = (float*)context->depthBuffer->getOffsetPointer(offset, VK_IMAGE_ASPECT_DEPTH_BIT);
- data->depthPitchB = context->depthBuffer->rowPitchBytes(VK_IMAGE_ASPECT_DEPTH_BIT);
- data->depthSliceB = context->depthBuffer->slicePitchBytes(VK_IMAGE_ASPECT_DEPTH_BIT);
+ data->depthPitchB = context->depthBuffer->rowPitchBytes(VK_IMAGE_ASPECT_DEPTH_BIT, 0);
+ data->depthSliceB = context->depthBuffer->slicePitchBytes(VK_IMAGE_ASPECT_DEPTH_BIT, 0);
}
if(draw->stencilBuffer)
{
VkOffset3D offset = { 0, 0, static_cast<int32_t>(context->stencilBufferLayer) };
data->stencilBuffer = (unsigned char*)context->stencilBuffer->getOffsetPointer(offset, VK_IMAGE_ASPECT_STENCIL_BIT);
- data->stencilPitchB = context->stencilBuffer->rowPitchBytes(VK_IMAGE_ASPECT_STENCIL_BIT);
- data->stencilSliceB = context->stencilBuffer->slicePitchBytes(VK_IMAGE_ASPECT_STENCIL_BIT);
+ data->stencilPitchB = context->stencilBuffer->rowPitchBytes(VK_IMAGE_ASPECT_STENCIL_BIT, 0);
+ data->stencilSliceB = context->stencilBuffer->slicePitchBytes(VK_IMAGE_ASPECT_STENCIL_BIT, 0);
}
}
// Scissor
{
- data->scissorX0 = scissor.x0;
- data->scissorX1 = scissor.x1;
- data->scissorY0 = scissor.y0;
- data->scissorY1 = scissor.y1;
+ data->scissorX0 = scissor.offset.x;
+ data->scissorX1 = scissor.offset.x + scissor.extent.width;
+ data->scissorY0 = scissor.offset.y;
+ data->scissorY1 = scissor.offset.y + scissor.extent.height;
+ }
+
+ // Push constants
+ {
+ data->pushConstants = context->pushConstants;
}
draw->primitive = 0;
@@ -485,21 +582,6 @@ namespace sw
}
}
- void Renderer::clear(void *value, VkFormat format, Surface *dest, const Rect &clearRect, unsigned int rgbaMask)
- {
- blitter->clear(value, format, dest, clearRect, rgbaMask);
- }
-
- void Renderer::blit(Surface *source, const SliceRectF &sRect, Surface *dest, const SliceRect &dRect, bool filter, bool isStencil, bool sRGBconversion)
- {
- blitter->blit(source, sRect, dest, dRect, {filter, isStencil, sRGBconversion});
- }
-
- void Renderer::blit3D(Surface *source, Surface *dest)
- {
- blitter->blit3D(source, dest);
- }
-
void Renderer::threadFunction(void *parameters)
{
Renderer *renderer = static_cast<Parameters*>(parameters)->renderer;
@@ -781,22 +863,30 @@ namespace sw
{
for(auto &query : *(draw.queries))
{
+ std::unique_lock<std::mutex> mutexLock(query->mutex);
+
switch(query->type)
{
- case Query::FRAGMENTS_PASSED:
+ case VK_QUERY_TYPE_OCCLUSION:
for(int cluster = 0; cluster < clusterCount; cluster++)
{
query->data += data.occlusion[cluster];
}
break;
- case Query::TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
- query->data += processedPrimitives;
- break;
default:
break;
}
- --query->reference; // Atomic
+ int queryRef = --query->reference; // Atomic
+ if(queryRef == 0)
+ {
+ query->state = vk::Query::FINISHED;
+ }
+
+ // Manual unlocking is done before notifying, to avoid
+ // waking up the waiting thread only to block again
+ mutexLock.unlock();
+ query->condition.notify_one();
}
delete draw.queries;
@@ -835,278 +925,41 @@ namespace sw
}
unsigned int batch[128][3]; // FIXME: Adjust to dynamic batch size
+ VkPrimitiveTopology topology = static_cast<VkPrimitiveTopology>(static_cast<int>(draw->topology));
- switch(draw->drawType)
+ if(!indices)
{
- case DRAW_POINTLIST:
- {
- unsigned int index = start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = index;
- batch[i][1] = index;
- batch[i][2] = index;
-
- index += 1;
- }
- }
- break;
- case DRAW_LINELIST:
- {
- unsigned int index = 2 * start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = index + 0;
- batch[i][1] = index + 1;
- batch[i][2] = index + 1;
-
- index += 2;
- }
- }
- break;
- case DRAW_LINESTRIP:
- {
- unsigned int index = start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = index + 0;
- batch[i][1] = index + 1;
- batch[i][2] = index + 1;
-
- index += 1;
- }
- }
- break;
- case DRAW_TRIANGLELIST:
- {
- unsigned int index = 3 * start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = index + 0;
- batch[i][1] = index + 1;
- batch[i][2] = index + 2;
-
- index += 3;
- }
- }
- break;
- case DRAW_TRIANGLESTRIP:
- {
- unsigned int index = start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- if(leadingVertexFirst)
- {
- batch[i][0] = index + 0;
- batch[i][1] = index + (index & 1) + 1;
- batch[i][2] = index + (~index & 1) + 1;
- }
- else
- {
- batch[i][0] = index + (index & 1);
- batch[i][1] = index + (~index & 1);
- batch[i][2] = index + 2;
- }
-
- index += 1;
- }
- }
- break;
- case DRAW_TRIANGLEFAN:
- {
- unsigned int index = start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- if(leadingVertexFirst)
- {
- batch[i][0] = index + 1;
- batch[i][1] = index + 2;
- batch[i][2] = 0;
- }
- else
- {
- batch[i][0] = 0;
- batch[i][1] = index + 1;
- batch[i][2] = index + 2;
- }
-
- index += 1;
- }
- }
- break;
- case DRAW_INDEXEDPOINTLIST16:
- {
- const unsigned short *index = (const unsigned short*)indices + start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = *index;
- batch[i][1] = *index;
- batch[i][2] = *index;
-
- index += 1;
- }
- }
- break;
- case DRAW_INDEXEDPOINTLIST32:
- {
- const unsigned int *index = (const unsigned int*)indices + start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = *index;
- batch[i][1] = *index;
- batch[i][2] = *index;
-
- index += 1;
- }
- }
- break;
- case DRAW_INDEXEDLINELIST16:
+ struct LinearIndex
{
- const unsigned short *index = (const unsigned short*)indices + 2 * start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = index[0];
- batch[i][1] = index[1];
- batch[i][2] = index[1];
+ unsigned int operator[](unsigned int i) { return i; }
+ };
- index += 2;
- }
- }
- break;
- case DRAW_INDEXEDLINELIST32:
+ if(!setBatchIndices(batch, topology, LinearIndex(), start, triangleCount))
{
- const unsigned int *index = (const unsigned int*)indices + 2 * start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = index[0];
- batch[i][1] = index[1];
- batch[i][2] = index[1];
-
- index += 2;
- }
- }
- break;
- case DRAW_INDEXEDLINESTRIP16:
- {
- const unsigned short *index = (const unsigned short*)indices + start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = index[0];
- batch[i][1] = index[1];
- batch[i][2] = index[1];
-
- index += 1;
- }
- }
- break;
- case DRAW_INDEXEDLINESTRIP32:
- {
- const unsigned int *index = (const unsigned int*)indices + start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = index[0];
- batch[i][1] = index[1];
- batch[i][2] = index[1];
-
- index += 1;
- }
- }
- break;
- case DRAW_INDEXEDTRIANGLELIST16:
- {
- const unsigned short *index = (const unsigned short*)indices + 3 * start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = index[0];
- batch[i][1] = index[1];
- batch[i][2] = index[2];
-
- index += 3;
- }
- }
- break;
- case DRAW_INDEXEDTRIANGLELIST32:
- {
- const unsigned int *index = (const unsigned int*)indices + 3 * start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = index[0];
- batch[i][1] = index[1];
- batch[i][2] = index[2];
-
- index += 3;
- }
+ return;
}
- break;
- case DRAW_INDEXEDTRIANGLESTRIP16:
+ }
+ else
+ {
+ switch(draw->indexType)
{
- const unsigned short *index = (const unsigned short*)indices + start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
+ case VK_INDEX_TYPE_UINT16:
+ if(!setBatchIndices(batch, topology, static_cast<const uint16_t*>(indices), start, triangleCount))
{
- batch[i][0] = index[0];
- batch[i][1] = index[((start + i) & 1) + 1];
- batch[i][2] = index[(~(start + i) & 1) + 1];
-
- index += 1;
+ return;
}
- }
- break;
- case DRAW_INDEXEDTRIANGLESTRIP32:
- {
- const unsigned int *index = (const unsigned int*)indices + start;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = index[0];
- batch[i][1] = index[((start + i) & 1) + 1];
- batch[i][2] = index[(~(start + i) & 1) + 1];
-
- index += 1;
- }
- }
- break;
- case DRAW_INDEXEDTRIANGLEFAN16:
- {
- const unsigned short *index = (const unsigned short*)indices;
-
- for(unsigned int i = 0; i < triangleCount; i++)
+ break;
+ case VK_INDEX_TYPE_UINT32:
+ if(!setBatchIndices(batch, topology, static_cast<const uint32_t*>(indices), start, triangleCount))
{
- batch[i][0] = index[start + i + 1];
- batch[i][1] = index[start + i + 2];
- batch[i][2] = index[0];
+ return;
}
- }
+ break;
break;
- case DRAW_INDEXEDTRIANGLEFAN32:
- {
- const unsigned int *index = (const unsigned int*)indices;
-
- for(unsigned int i = 0; i < triangleCount; i++)
- {
- batch[i][0] = index[start + i + 1];
- batch[i][1] = index[start + i + 2];
- batch[i][2] = index[0];
- }
+ default:
+ ASSERT(false);
+ return;
}
- break;
- default:
- ASSERT(false);
- return;
}
task->primitiveStart = start;
@@ -1576,16 +1429,29 @@ namespace sw
context->vertexShader = shader;
}
- void Renderer::addQuery(Query *query)
+ void Renderer::addQuery(vk::Query *query)
{
queries.push_back(query);
}
- void Renderer::removeQuery(Query *query)
+ void Renderer::removeQuery(vk::Query *query)
{
queries.remove(query);
}
+ void Renderer::advanceInstanceAttributes()
+ {
+ for(uint32_t i = 0; i < vk::MAX_VERTEX_INPUT_BINDINGS; i++)
+ {
+ auto &attrib = context->input[i];
+ if (attrib.count && attrib.instanceStride)
+ {
+ // Under the casts: attrib.buffer += attrib.instanceStride
+ attrib.buffer = (void const *)((uintptr_t)attrib.buffer + attrib.instanceStride);
+ }
+ }
+ }
+
#if PERF_HUD
int Renderer::getThreadCount()
{
@@ -1628,7 +1494,7 @@ namespace sw
this->viewport = viewport;
}
- void Renderer::setScissor(const Rect &scissor)
+ void Renderer::setScissor(const VkRect2D &scissor)
{
this->scissor = scissor;
}
@@ -1735,7 +1601,6 @@ namespace sw
}
forceWindowed = configuration.forceWindowed;
- complementaryDepthBuffer = configuration.complementaryDepthBuffer;
postBlendSRGB = configuration.postBlendSRGB;
exactColorRounding = configuration.exactColorRounding;
forceClearRegisters = configuration.forceClearRegisters;
diff --git a/chromium/third_party/swiftshader/src/Device/Renderer.hpp b/chromium/third_party/swiftshader/src/Device/Renderer.hpp
index 5d36fae779f..32301f7967c 100644
--- a/chromium/third_party/swiftshader/src/Device/Renderer.hpp
+++ b/chromium/third_party/swiftshader/src/Device/Renderer.hpp
@@ -23,9 +23,16 @@
#include "System/MutexLock.hpp"
#include "System/Thread.hpp"
#include "Device/Config.hpp"
+#include "Vulkan/VkDescriptorSet.hpp"
#include <list>
+namespace vk
+{
+ class DescriptorSet;
+ struct Query;
+}
+
namespace sw
{
class Clipper;
@@ -58,8 +65,6 @@ namespace sw
bool symmetricNormalizedDepth;
bool booleanFaceRegister;
bool fullPixelPositionRegister;
- bool leadingVertexFirst;
- bool secondaryColor;
bool colorsDefaultToZero;
};
@@ -69,8 +74,6 @@ namespace sw
true, // symmetricNormalizedDepth
true, // booleanFaceRegister
true, // fullPixelPositionRegister
- false, // leadingVertexFirst
- false, // secondaryColor
true, // colorsDefaultToZero
};
@@ -80,75 +83,26 @@ namespace sw
false, // symmetricNormalizedDepth
false, // booleanFaceRegister
false, // fullPixelPositionRegister
- true, // leadingVertexFirst
- true, // secondardyColor
false, // colorsDefaultToZero
};
- struct Query
- {
- enum Type { FRAGMENTS_PASSED, TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN };
-
- Query(Type type) : building(false), reference(0), data(0), type(type)
- {
- }
-
- void begin()
- {
- building = true;
- data = 0;
- }
-
- void end()
- {
- building = false;
- }
-
- bool building;
- AtomicInt reference;
- AtomicInt data;
-
- const Type type;
- };
-
struct DrawData
{
const Constants *constants;
+ vk::DescriptorSet::Bindings descriptorSets = {};
+ vk::DescriptorSet::DynamicOffsets descriptorDynamicOffsets = {};
+
const void *input[MAX_VERTEX_INPUTS];
unsigned int stride[MAX_VERTEX_INPUTS];
Texture mipmap[TOTAL_IMAGE_UNITS];
const void *indices;
- struct VS
- {
- float4 c[VERTEX_UNIFORM_VECTORS + 1]; // One extra for indices out of range, c[VERTEX_UNIFORM_VECTORS] = {0, 0, 0, 0}
- byte* u[MAX_UNIFORM_BUFFER_BINDINGS];
- byte* t[MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS];
- unsigned int reg[MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]; // Offset used when reading from registers, in components
- unsigned int row[MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]; // Number of rows to read
- unsigned int col[MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]; // Number of columns to read
- unsigned int str[MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]; // Number of components between each varying in output buffer
- int4 i[16];
- bool b[16];
- };
-
- struct PS
- {
- float4 c[FRAGMENT_UNIFORM_VECTORS];
- byte* u[MAX_UNIFORM_BUFFER_BINDINGS];
- int4 i[16];
- bool b[16];
- };
-
- VS vs;
- PS ps;
-
int instanceID;
+ int baseVertex;
float lineWidth;
PixelProcessor::Stencil stencil[2]; // clockwise, counterclockwise
- PixelProcessor::Stencil stencilCCW;
PixelProcessor::Factor factor;
unsigned int occlusion[16]; // Number of pixels passing depth test
@@ -187,6 +141,8 @@ namespace sw
float4 a2c1;
float4 a2c2;
float4 a2c3;
+
+ PushConstantStorage pushConstants;
};
class Renderer : public VertexProcessor, public PixelProcessor, public SetupProcessor
@@ -247,11 +203,7 @@ namespace sw
void *operator new(size_t size);
void operator delete(void * mem);
- void draw(DrawType drawType, unsigned int count, bool update = true);
-
- void clear(void *value, VkFormat format, Surface *dest, const Rect &rect, unsigned int rgbaMask);
- void blit(Surface *source, const SliceRectF &sRect, Surface *dest, const SliceRect &dRect, bool filter, bool isStencil = false, bool sRGBconversion = true);
- void blit3D(Surface *source, Surface *dest);
+ void draw(VkPrimitiveTopology topology, VkIndexType indexType, unsigned int count, int baseVertex, bool update = true);
void setContext(const sw::Context& context);
@@ -271,10 +223,12 @@ namespace sw
// Viewport & Clipper
void setViewport(const VkViewport &viewport);
- void setScissor(const Rect &scissor);
+ void setScissor(const VkRect2D &scissor);
+
+ void addQuery(vk::Query *query);
+ void removeQuery(vk::Query *query);
- void addQuery(Query *query);
- void removeQuery(Query *query);
+ void advanceInstanceAttributes();
void synchronize();
@@ -315,7 +269,7 @@ namespace sw
Clipper *clipper;
Blitter *blitter;
VkViewport viewport;
- Rect scissor;
+ VkRect2D scissor;
int clipFlags;
Triangle *triangleBatch[16];
@@ -365,7 +319,7 @@ namespace sw
SwiftConfig *swiftConfig;
- std::list<Query*> queries;
+ std::list<vk::Query*> queries;
Resource *sync;
VertexProcessor::State vertexState;
@@ -383,7 +337,8 @@ namespace sw
~DrawCall();
- AtomicInt drawType;
+ AtomicInt topology;
+ AtomicInt indexType;
AtomicInt batchSize;
Routine *vertexRoutine;
@@ -401,7 +356,7 @@ namespace sw
vk::ImageView *depthBuffer;
vk::ImageView *stencilBuffer;
- std::list<Query*> *queries;
+ std::list<vk::Query*> *queries;
AtomicInt primitive; // Current primitive to enter pipeline
AtomicInt count; // Number of primitives to render
diff --git a/chromium/third_party/swiftshader/src/Device/RoutineCache.hpp b/chromium/third_party/swiftshader/src/Device/RoutineCache.hpp
index 3904acc53b0..8420468a663 100644
--- a/chromium/third_party/swiftshader/src/Device/RoutineCache.hpp
+++ b/chromium/third_party/swiftshader/src/Device/RoutineCache.hpp
@@ -24,28 +24,7 @@ namespace sw
using namespace rr;
template<class State>
- class RoutineCache : public LRUCache<State, Routine>
- {
- public:
- RoutineCache(int n, const char *precache = 0);
- ~RoutineCache();
-
- private:
- const char *precache;
- #if defined(_WIN32)
- HMODULE precacheDLL;
- #endif
- };
-
- template<class State>
- RoutineCache<State>::RoutineCache(int n, const char *precache) : LRUCache<State, Routine>(n), precache(precache)
- {
- }
-
- template<class State>
- RoutineCache<State>::~RoutineCache()
- {
- }
+ using RoutineCache = LRUCache<State, Routine>;
}
#endif // sw_RoutineCache_hpp
diff --git a/chromium/third_party/swiftshader/src/Device/Sampler.cpp b/chromium/third_party/swiftshader/src/Device/Sampler.cpp
index 841a15fbaf9..029f4c41c0a 100644
--- a/chromium/third_party/swiftshader/src/Device/Sampler.cpp
+++ b/chromium/third_party/swiftshader/src/Device/Sampler.cpp
@@ -15,9 +15,9 @@
#include "Sampler.hpp"
#include "Context.hpp"
-#include "Surface.hpp"
#include "Pipeline/PixelRoutine.hpp"
#include "Vulkan/VkDebug.hpp"
+#include "Vulkan/VkImage.hpp"
#include <cstring>
@@ -48,8 +48,7 @@ namespace sw
}
}
- externalTextureFormat = VK_FORMAT_UNDEFINED;
- internalTextureFormat = VK_FORMAT_UNDEFINED;
+ textureFormat = VK_FORMAT_UNDEFINED;
textureType = TEXTURE_NULL;
textureFilter = FILTER_LINEAR;
@@ -89,13 +88,13 @@ namespace sw
if(textureType != TEXTURE_NULL)
{
state.textureType = textureType;
- state.textureFormat = internalTextureFormat;
+ state.textureFormat = textureFormat;
state.textureFilter = getTextureFilter();
state.addressingModeU = getAddressingModeU();
state.addressingModeV = getAddressingModeV();
state.addressingModeW = getAddressingModeW();
state.mipmapFilter = mipmapFilter();
- state.sRGB = (sRGB && Surface::isSRGBreadable(externalTextureFormat)) || Surface::isSRGBformat(internalTextureFormat);
+ state.sRGB = (sRGB && textureFormat.isSRGBreadable()) || textureFormat.isSRGBformat();
state.swizzleR = swizzleR;
state.swizzleG = swizzleG;
state.swizzleB = swizzleB;
@@ -111,25 +110,33 @@ namespace sw
return state;
}
- void Sampler::setTextureLevel(int face, int level, Surface *surface, TextureType type)
+ void Sampler::setTextureLevel(int face, int level, vk::Image *image, TextureType type)
{
- if(surface)
+ if(image)
{
Mipmap &mipmap = texture.mipmap[level];
- border = surface->getBorder();
- mipmap.buffer[face] = surface->lockInternal(-border, -border, 0, LOCK_UNLOCKED, PRIVATE);
+ border = image->isCube() ? 1 : 0;
+ VkImageSubresourceLayers subresourceLayers =
+ {
+ VK_IMAGE_ASPECT_COLOR_BIT,
+ static_cast<uint32_t>(level),
+ static_cast<uint32_t>(face),
+ 1
+ };
+ mipmap.buffer[face] = image->getTexelPointer({ -border, -border, 0 }, subresourceLayers);
if(face == 0)
{
- externalTextureFormat = surface->getExternalFormat();
- internalTextureFormat = surface->getInternalFormat();
+ VkImageAspectFlagBits aspect = VK_IMAGE_ASPECT_COLOR_BIT; // FIXME: get proper aspect
+ textureFormat = image->getFormat(aspect);
- int width = surface->getWidth();
- int height = surface->getHeight();
- int depth = surface->getDepth();
- int pitchP = surface->getInternalPitchP();
- int sliceP = surface->getInternalSliceP();
+ VkExtent3D mipLevelExtent = image->getMipLevelExtent(level);
+ int width = mipLevelExtent.width;
+ int height = mipLevelExtent.height;
+ int depth = mipLevelExtent.depth;
+ int pitchP = image->rowPitchBytes(aspect, level);
+ int sliceP = image->slicePitchBytes(aspect, level);
if(level == 0)
{
@@ -154,7 +161,7 @@ namespace sw
texture.depthLOD[3] = depth * exp2LOD;
}
- if(Surface::isFloatFormat(internalTextureFormat))
+ if(textureFormat.isFloatFormat())
{
mipmap.fWidth[0] = (float)width / 65536.0f;
mipmap.fWidth[1] = (float)width / 65536.0f;
@@ -221,7 +228,7 @@ namespace sw
mipmap.sliceP[2] = sliceP;
mipmap.sliceP[3] = sliceP;
- if(internalTextureFormat == VK_FORMAT_G8_B8R8_2PLANE_420_UNORM)
+ if(textureFormat.hasYuvFormat())
{
unsigned int YStride = pitchP;
unsigned int YSize = YStride * height;
@@ -382,10 +389,10 @@ namespace sw
bool Sampler::hasUnsignedTexture() const
{
- return Surface::isUnsignedComponent(internalTextureFormat, 0) &&
- Surface::isUnsignedComponent(internalTextureFormat, 1) &&
- Surface::isUnsignedComponent(internalTextureFormat, 2) &&
- Surface::isUnsignedComponent(internalTextureFormat, 3);
+ return textureFormat.isUnsignedComponent(0) &&
+ textureFormat.isUnsignedComponent(1) &&
+ textureFormat.isUnsignedComponent(2) &&
+ textureFormat.isUnsignedComponent(3);
}
bool Sampler::hasCubeTexture() const
@@ -438,7 +445,7 @@ namespace sw
FilterType filter = textureFilter;
- if(gather && Surface::componentCount(internalTextureFormat) == 1)
+ if(gather && textureFormat.componentCount() == 1)
{
filter = FILTER_GATHER;
}
diff --git a/chromium/third_party/swiftshader/src/Device/Sampler.hpp b/chromium/third_party/swiftshader/src/Device/Sampler.hpp
index 01e81f75202..0013b8dc9a6 100644
--- a/chromium/third_party/swiftshader/src/Device/Sampler.hpp
+++ b/chromium/third_party/swiftshader/src/Device/Sampler.hpp
@@ -15,9 +15,15 @@
#ifndef sw_Sampler_hpp
#define sw_Sampler_hpp
+#include "Device/Color.hpp"
#include "Device/Config.hpp"
-#include "Device/Surface.hpp"
#include "System/Types.hpp"
+#include "Vulkan/VkFormat.h"
+
+namespace vk
+{
+ class Image;
+}
namespace sw
{
@@ -50,13 +56,13 @@ namespace sw
float4 heightLOD;
float4 depthLOD;
- word4 borderColor4[4];
- float4 borderColorF[4];
- float maxAnisotropy;
+ word4 borderColor4[4]; // FIXME(b/129523279): Part of Vulkan sampler.
+ float4 borderColorF[4]; // FIXME(b/129523279): Part of Vulkan sampler.
+ float maxAnisotropy; // FIXME(b/129523279): Part of Vulkan sampler.
int baseLevel;
int maxLevel;
- float minLod;
- float maxLod;
+ float minLod; // FIXME(b/129523279): Part of Vulkan sampler.
+ float maxLod; // FIXME(b/129523279): Part of Vulkan sampler.
};
enum SamplerType
@@ -147,7 +153,7 @@ namespace sw
State();
TextureType textureType;
- VkFormat textureFormat;
+ vk::Format textureFormat;
FilterType textureFilter;
AddressingMode addressingModeU;
AddressingMode addressingModeV;
@@ -172,7 +178,7 @@ namespace sw
State samplerState() const;
- void setTextureLevel(int face, int level, Surface *surface, TextureType type);
+ void setTextureLevel(int face, int level, vk::Image *image, TextureType type);
void setTextureFilter(FilterType textureFilter);
void setMipmapFilter(MipmapType mipmapFilter);
@@ -214,8 +220,7 @@ namespace sw
AddressingMode getAddressingModeW() const;
CompareFunc getCompareFunc() const;
- VkFormat externalTextureFormat;
- VkFormat internalTextureFormat;
+ vk::Format textureFormat;
TextureType textureType;
FilterType textureFilter;
diff --git a/chromium/third_party/swiftshader/src/Device/SetupProcessor.cpp b/chromium/third_party/swiftshader/src/Device/SetupProcessor.cpp
index c149bc3ea56..7af4d3a328c 100644
--- a/chromium/third_party/swiftshader/src/Device/SetupProcessor.cpp
+++ b/chromium/third_party/swiftshader/src/Device/SetupProcessor.cpp
@@ -25,7 +25,6 @@
namespace sw
{
- extern bool complementaryDepthBuffer;
extern bool fullPixelPositionRegister;
bool precacheSetup = false;
@@ -121,6 +120,6 @@ namespace sw
void SetupProcessor::setRoutineCacheSize(int cacheSize)
{
delete routineCache;
- routineCache = new RoutineCache<State>(clamp(cacheSize, 1, 65536), precacheSetup ? "sw-setup" : 0);
+ routineCache = new RoutineCache<State>(clamp(cacheSize, 1, 65536));
}
}
diff --git a/chromium/third_party/swiftshader/src/Device/Stream.hpp b/chromium/third_party/swiftshader/src/Device/Stream.hpp
index 54841e36841..b9ff604a271 100644
--- a/chromium/third_party/swiftshader/src/Device/Stream.hpp
+++ b/chromium/third_party/swiftshader/src/Device/Stream.hpp
@@ -39,15 +39,17 @@ namespace sw
struct StreamResource
{
const void *buffer;
- unsigned int stride;
+ unsigned int vertexStride;
+ unsigned int instanceStride;
};
struct Stream : public StreamResource
{
- Stream(const void *buffer = nullptr, unsigned int stride = 0)
+ Stream(const void *buffer = nullptr, unsigned int vertexStride = 0)
{
this->buffer = buffer;
- this->stride = stride;
+ this->vertexStride = vertexStride;
+ this->instanceStride = 0;
}
Stream &define(StreamType type, unsigned int count, bool normalized = false)
@@ -74,7 +76,8 @@ namespace sw
static const float4 null = {0, 0, 0, 1};
buffer = &null;
- stride = 0;
+ vertexStride = 0;
+ instanceStride = 0;
type = STREAMTYPE_FLOAT;
count = 0;
normalized = false;
diff --git a/chromium/third_party/swiftshader/src/Device/Surface.cpp b/chromium/third_party/swiftshader/src/Device/Surface.cpp
deleted file mode 100644
index db8aec05d77..00000000000
--- a/chromium/third_party/swiftshader/src/Device/Surface.cpp
+++ /dev/null
@@ -1,5543 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "Surface.hpp"
-
-#include "Color.hpp"
-#include "Context.hpp"
-#include "ETC_Decoder.hpp"
-#include "Renderer.hpp"
-#include "System/Half.hpp"
-#include "System/Memory.hpp"
-#include "System/CPUID.hpp"
-#include "System/Resource.hpp"
-#include "Vulkan/VkDebug.hpp"
-#include "Reactor/Reactor.hpp"
-
-#if defined(__i386__) || defined(__x86_64__)
- #include <xmmintrin.h>
- #include <emmintrin.h>
-#endif
-
-#undef min
-#undef max
-
-namespace sw
-{
- extern bool quadLayoutEnabled;
- extern bool complementaryDepthBuffer;
- extern TranscendentalPrecision logPrecision;
-
- void Surface::Buffer::write(int x, int y, int z, const Color<float> &color)
- {
- ASSERT((x >= -border) && (x < (width + border)));
- ASSERT((y >= -border) && (y < (height + border)));
- ASSERT((z >= 0) && (z < depth));
-
- byte *element = (byte*)buffer + (x + border) * bytes + (y + border) * pitchB + z * samples * sliceB;
-
- for(int i = 0; i < samples; i++)
- {
- write(element, color);
- element += sliceB;
- }
- }
-
- void Surface::Buffer::write(int x, int y, const Color<float> &color)
- {
- ASSERT((x >= -border) && (x < (width + border)));
- ASSERT((y >= -border) && (y < (height + border)));
-
- byte *element = (byte*)buffer + (x + border) * bytes + (y + border) * pitchB;
-
- for(int i = 0; i < samples; i++)
- {
- write(element, color);
- element += sliceB;
- }
- }
-
- inline void Surface::Buffer::write(void *element, const Color<float> &color)
- {
- float r = color.r;
- float g = color.g;
- float b = color.b;
- float a = color.a;
-
- if(isSRGBformat(format))
- {
- r = linearToSRGB(r);
- g = linearToSRGB(g);
- b = linearToSRGB(b);
- }
-
- switch(format)
- {
- case VK_FORMAT_R8_SNORM:
- *(char*)element = snorm<8>(r);
- break;
- case VK_FORMAT_R8_UNORM:
- *(unsigned char*)element = unorm<8>(r);
- break;
- case VK_FORMAT_R8_SINT:
- *(char*)element = scast<8>(r);
- break;
- case VK_FORMAT_R8_UINT:
- *(unsigned char*)element = ucast<8>(r);
- break;
- case VK_FORMAT_R16_SINT:
- *(short*)element = scast<16>(r);
- break;
- case VK_FORMAT_R16_UINT:
- *(unsigned short*)element = ucast<16>(r);
- break;
- case VK_FORMAT_R32_SINT:
- *(int*)element = static_cast<int>(r);
- break;
- case VK_FORMAT_R32_UINT:
- *(unsigned int*)element = static_cast<unsigned int>(r);
- break;
- case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
- *(unsigned short*)element = (unorm<4>(r) << 12) | (unorm<4>(g) << 8) | (unorm<4>(b) << 4) | (unorm<4>(a) << 0);
- break;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- *(unsigned short*)element = (unorm<5>(r) << 11) | (unorm<6>(g) << 5) | (unorm<5>(b) << 0);
- break;
- case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
- *(unsigned short*)element = (unorm<1>(a) << 15) | (unorm<5>(r) << 10) | (unorm<5>(g) << 5) | (unorm<5>(b) << 0);
- break;
- case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
- *(unsigned short*)element = (unorm<5>(r) << 11) | (unorm<5>(g) << 6) | (unorm<5>(b) << 1) | (unorm<5>(a) << 0);
- break;
- case VK_FORMAT_B8G8R8A8_UNORM:
- *(unsigned int*)element = (unorm<8>(a) << 24) | (unorm<8>(r) << 16) | (unorm<8>(g) << 8) | (unorm<8>(b) << 0);
- break;
- case VK_FORMAT_R8G8B8A8_SNORM:
- *(unsigned int*)element = (static_cast<unsigned int>(snorm<8>(a)) << 24) |
- (static_cast<unsigned int>(snorm<8>(b)) << 16) |
- (static_cast<unsigned int>(snorm<8>(g)) << 8) |
- (static_cast<unsigned int>(snorm<8>(r)) << 0);
- break;
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SRGB:
- *(unsigned int*)element = (unorm<8>(a) << 24) | (unorm<8>(b) << 16) | (unorm<8>(g) << 8) | (unorm<8>(r) << 0);
- break;
- case VK_FORMAT_R8G8B8A8_SINT:
- *(unsigned int*)element = (static_cast<unsigned int>(scast<8>(a)) << 24) |
- (static_cast<unsigned int>(scast<8>(b)) << 16) |
- (static_cast<unsigned int>(scast<8>(g)) << 8) |
- (static_cast<unsigned int>(scast<8>(r)) << 0);
- break;
- case VK_FORMAT_R8G8B8A8_UINT:
- *(unsigned int*)element = (ucast<8>(a) << 24) | (ucast<8>(b) << 16) | (ucast<8>(g) << 8) | (ucast<8>(r) << 0);
- break;
- case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
- *(unsigned int*)element = (unorm<2>(a) << 30) | (unorm<10>(r) << 20) | (unorm<10>(g) << 10) | (unorm<10>(b) << 0);
- break;
- case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_UINT_PACK32:
- *(unsigned int*)element = (unorm<2>(a) << 30) | (unorm<10>(b) << 20) | (unorm<10>(g) << 10) | (unorm<10>(r) << 0);
- break;
- case VK_FORMAT_R8G8_SNORM:
- *(unsigned short*)element = (static_cast<unsigned short>(snorm<8>(g)) << 8) |
- (static_cast<unsigned short>(snorm<8>(r)) << 0);
- break;
- case VK_FORMAT_R8G8_UNORM:
- *(unsigned short*)element = (unorm<8>(g) << 8) | (unorm<8>(r) << 0);
- break;
- case VK_FORMAT_R8G8_SINT:
- *(unsigned short*)element = (static_cast<unsigned short>(scast<8>(g)) << 8) |
- (static_cast<unsigned short>(scast<8>(r)) << 0);
- break;
- case VK_FORMAT_R8G8_UINT:
- *(unsigned short*)element = (ucast<8>(g) << 8) | (ucast<8>(r) << 0);
- break;
- case VK_FORMAT_R16G16_UNORM:
- *(unsigned int*)element = (unorm<16>(g) << 16) | (unorm<16>(r) << 0);
- break;
- case VK_FORMAT_R16G16_SINT:
- *(unsigned int*)element = (static_cast<unsigned int>(scast<16>(g)) << 16) |
- (static_cast<unsigned int>(scast<16>(r)) << 0);
- break;
- case VK_FORMAT_R16G16_UINT:
- *(unsigned int*)element = (ucast<16>(g) << 16) | (ucast<16>(r) << 0);
- break;
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32_UINT:
- ((unsigned int*)element)[0] = static_cast<unsigned int>(r);
- ((unsigned int*)element)[1] = static_cast<unsigned int>(g);
- break;
- case VK_FORMAT_R16G16B16A16_UNORM:
- ((unsigned short*)element)[0] = unorm<16>(r);
- ((unsigned short*)element)[1] = unorm<16>(g);
- ((unsigned short*)element)[2] = unorm<16>(b);
- ((unsigned short*)element)[3] = unorm<16>(a);
- break;
- case VK_FORMAT_R16G16B16A16_SINT:
- ((unsigned short*)element)[0] = static_cast<unsigned short>(scast<16>(r));
- ((unsigned short*)element)[1] = static_cast<unsigned short>(scast<16>(g));
- ((unsigned short*)element)[2] = static_cast<unsigned short>(scast<16>(b));
- ((unsigned short*)element)[3] = static_cast<unsigned short>(scast<16>(a));
- break;
- case VK_FORMAT_R16G16B16A16_UINT:
- ((unsigned short*)element)[0] = static_cast<unsigned short>(ucast<16>(r));
- ((unsigned short*)element)[1] = static_cast<unsigned short>(ucast<16>(g));
- ((unsigned short*)element)[2] = static_cast<unsigned short>(ucast<16>(b));
- ((unsigned short*)element)[3] = static_cast<unsigned short>(ucast<16>(a));
- break;
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R32G32B32A32_UINT:
- ((unsigned int*)element)[0] = static_cast<unsigned int>(r);
- ((unsigned int*)element)[1] = static_cast<unsigned int>(g);
- ((unsigned int*)element)[2] = static_cast<unsigned int>(b);
- ((unsigned int*)element)[3] = static_cast<unsigned int>(a);
- break;
- case VK_FORMAT_R16_SFLOAT:
- *(half*)element = (half)r;
- break;
- case VK_FORMAT_R16G16_SFLOAT:
- ((half*)element)[0] = (half)r;
- ((half*)element)[1] = (half)g;
- break;
- case VK_FORMAT_R16G16B16A16_SFLOAT:
- ((half*)element)[0] = (half)r;
- ((half*)element)[1] = (half)g;
- ((half*)element)[2] = (half)b;
- ((half*)element)[3] = (half)a;
- break;
- case VK_FORMAT_R32_SFLOAT:
- *(float*)element = r;
- break;
- case VK_FORMAT_R32G32_SFLOAT:
- ((float*)element)[0] = r;
- ((float*)element)[1] = g;
- break;
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- ((float*)element)[0] = r;
- ((float*)element)[1] = g;
- ((float*)element)[2] = b;
- ((float*)element)[3] = a;
- break;
- case VK_FORMAT_D32_SFLOAT:
- case VK_FORMAT_D32_SFLOAT_S8_UINT:
- *((float*)element) = r;
- break;
- case VK_FORMAT_S8_UINT:
- *((unsigned char*)element) = unorm<8>(r);
- break;
- default:
- ASSERT(false);
- }
- }
-
- Color<float> Surface::Buffer::read(int x, int y, int z) const
- {
- ASSERT((x >= -border) && (x < (width + border)));
- ASSERT((y >= -border) && (y < (height + border)));
- ASSERT((z >= 0) && (z < depth));
-
- void *element = (unsigned char*)buffer + (x + border) * bytes + (y + border) * pitchB + z * samples * sliceB;
-
- return read(element);
- }
-
- Color<float> Surface::Buffer::read(int x, int y) const
- {
- ASSERT((x >= -border) && (x < (width + border)));
- ASSERT((y >= -border) && (y < (height + border)));
-
- void *element = (unsigned char*)buffer + (x + border) * bytes + (y + border) * pitchB;
-
- return read(element);
- }
-
- inline Color<float> Surface::Buffer::read(void *element) const
- {
- float r = 0.0f;
- float g = 0.0f;
- float b = 0.0f;
- float a = 1.0f;
-
- switch(format)
- {
- case VK_FORMAT_R8_SNORM:
- r = max((*(signed char*)element) * (1.0f / 0x7F), -1.0f);
- break;
- case VK_FORMAT_R8_UNORM:
- r = *(unsigned char*)element * (1.0f / 0xFF);
- break;
- case VK_FORMAT_R8_SINT:
- r = *(signed char*)element;
- break;
- case VK_FORMAT_R8_UINT:
- r = *(unsigned char*)element;
- break;
- case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
- {
- unsigned short rgba = *(unsigned short*)element;
-
- r = (rgba & 0xF000) * (1.0f / 0xF000);
- g = (rgba & 0x0F00) * (1.0f / 0x0F00);
- b = (rgba & 0x00F0) * (1.0f / 0x00F0);
- a = (rgba & 0x000F) * (1.0f / 0x000F);
- }
- break;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- {
- unsigned short rgb = *(unsigned short*)element;
-
- r = (rgb & 0xF800) * (1.0f / 0xF800);
- g = (rgb & 0x07E0) * (1.0f / 0x07E0);
- b = (rgb & 0x001F) * (1.0f / 0x001F);
- }
- break;
- case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
- {
- unsigned short argb = *(unsigned short*)element;
-
- a = (argb & 0x8000) * (1.0f / 0x8000);
- r = (argb & 0x7C00) * (1.0f / 0x7C00);
- g = (argb & 0x03E0) * (1.0f / 0x03E0);
- b = (argb & 0x001F) * (1.0f / 0x001F);
- }
- break;
- case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
- {
- unsigned short rgba = *(unsigned short*)element;
-
- r = (rgba & 0xF800) * (1.0f / 0xF800);
- g = (rgba & 0x07C0) * (1.0f / 0x07C0);
- b = (rgba & 0x003E) * (1.0f / 0x003E);
- a = (rgba & 0x0001) * (1.0f / 0x0001);
- }
- break;
- case VK_FORMAT_B8G8R8A8_UNORM:
- {
- unsigned int argb = *(unsigned int*)element;
-
- a = (argb & 0xFF000000) * (1.0f / 0xFF000000);
- r = (argb & 0x00FF0000) * (1.0f / 0x00FF0000);
- g = (argb & 0x0000FF00) * (1.0f / 0x0000FF00);
- b = (argb & 0x000000FF) * (1.0f / 0x000000FF);
- }
- break;
- case VK_FORMAT_R8G8B8A8_SNORM:
- {
- signed char* abgr = (signed char*)element;
-
- r = max(abgr[0] * (1.0f / 0x7F), -1.0f);
- g = max(abgr[1] * (1.0f / 0x7F), -1.0f);
- b = max(abgr[2] * (1.0f / 0x7F), -1.0f);
- a = max(abgr[3] * (1.0f / 0x7F), -1.0f);
- }
- break;
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SRGB:
- {
- unsigned int abgr = *(unsigned int*)element;
-
- a = (abgr & 0xFF000000) * (1.0f / 0xFF000000);
- b = (abgr & 0x00FF0000) * (1.0f / 0x00FF0000);
- g = (abgr & 0x0000FF00) * (1.0f / 0x0000FF00);
- r = (abgr & 0x000000FF) * (1.0f / 0x000000FF);
- }
- break;
- case VK_FORMAT_R8G8B8A8_SINT:
- {
- signed char* abgr = (signed char*)element;
-
- r = abgr[0];
- g = abgr[1];
- b = abgr[2];
- a = abgr[3];
- }
- break;
- case VK_FORMAT_R8G8B8A8_UINT:
- {
- unsigned char* abgr = (unsigned char*)element;
-
- r = abgr[0];
- g = abgr[1];
- b = abgr[2];
- a = abgr[3];
- }
- break;
- case VK_FORMAT_R8G8_SNORM:
- {
- signed char* gr = (signed char*)element;
-
- r = (gr[0] & 0xFF00) * (1.0f / 0xFF00);
- g = (gr[1] & 0x00FF) * (1.0f / 0x00FF);
- }
- break;
- case VK_FORMAT_R8G8_UNORM:
- {
- unsigned short gr = *(unsigned short*)element;
-
- g = (gr & 0xFF00) * (1.0f / 0xFF00);
- r = (gr & 0x00FF) * (1.0f / 0x00FF);
- }
- break;
- case VK_FORMAT_R8G8_SINT:
- {
- signed char* gr = (signed char*)element;
-
- r = gr[0];
- g = gr[1];
- }
- break;
- case VK_FORMAT_R8G8_UINT:
- {
- unsigned char* gr = (unsigned char*)element;
-
- r = gr[0];
- g = gr[1];
- }
- break;
- case VK_FORMAT_R16_SINT:
- r = *((short*)element);
- break;
- case VK_FORMAT_R16_UINT:
- r = *((unsigned short*)element);
- break;
- case VK_FORMAT_R16G16_SINT:
- {
- short* gr = (short*)element;
-
- r = gr[0];
- g = gr[1];
- }
- break;
- case VK_FORMAT_R16G16_UNORM:
- {
- unsigned int gr = *(unsigned int*)element;
-
- g = (gr & 0xFFFF0000) * (1.0f / 0xFFFF0000);
- r = (gr & 0x0000FFFF) * (1.0f / 0x0000FFFF);
- }
- break;
- case VK_FORMAT_R16G16_UINT:
- {
- unsigned short* gr = (unsigned short*)element;
-
- r = gr[0];
- g = gr[1];
- }
- break;
- case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
- {
- unsigned int argb = *(unsigned int*)element;
-
- a = (argb & 0xC0000000) * (1.0f / 0xC0000000);
- r = (argb & 0x3FF00000) * (1.0f / 0x3FF00000);
- g = (argb & 0x000FFC00) * (1.0f / 0x000FFC00);
- b = (argb & 0x000003FF) * (1.0f / 0x000003FF);
- }
- break;
- case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
- {
- unsigned int abgr = *(unsigned int*)element;
-
- a = (abgr & 0xC0000000) * (1.0f / 0xC0000000);
- b = (abgr & 0x3FF00000) * (1.0f / 0x3FF00000);
- g = (abgr & 0x000FFC00) * (1.0f / 0x000FFC00);
- r = (abgr & 0x000003FF) * (1.0f / 0x000003FF);
- }
- break;
- case VK_FORMAT_A2B10G10R10_UINT_PACK32:
- {
- unsigned int abgr = *(unsigned int*)element;
-
- a = static_cast<float>((abgr & 0xC0000000) >> 30);
- b = static_cast<float>((abgr & 0x3FF00000) >> 20);
- g = static_cast<float>((abgr & 0x000FFC00) >> 10);
- r = static_cast<float>(abgr & 0x000003FF);
- }
- break;
- case VK_FORMAT_R16G16B16A16_SINT:
- {
- short* abgr = (short*)element;
-
- r = abgr[0];
- g = abgr[1];
- b = abgr[2];
- a = abgr[3];
- }
- break;
- case VK_FORMAT_R16G16B16A16_UNORM:
- r = ((unsigned short*)element)[0] * (1.0f / 0xFFFF);
- g = ((unsigned short*)element)[1] * (1.0f / 0xFFFF);
- b = ((unsigned short*)element)[2] * (1.0f / 0xFFFF);
- a = ((unsigned short*)element)[3] * (1.0f / 0xFFFF);
- break;
- case VK_FORMAT_R16G16B16A16_UINT:
- {
- unsigned short* abgr = (unsigned short*)element;
-
- r = abgr[0];
- g = abgr[1];
- b = abgr[2];
- a = abgr[3];
- }
- break;
- case VK_FORMAT_R32G32B32A32_SINT:
- {
- int* abgr = (int*)element;
-
- r = static_cast<float>(abgr[0]);
- g = static_cast<float>(abgr[1]);
- b = static_cast<float>(abgr[2]);
- a = static_cast<float>(abgr[3]);
- }
- break;
- case VK_FORMAT_R32G32B32A32_UINT:
- {
- unsigned int* abgr = (unsigned int*)element;
-
- r = static_cast<float>(abgr[0]);
- g = static_cast<float>(abgr[1]);
- b = static_cast<float>(abgr[2]);
- a = static_cast<float>(abgr[3]);
- }
- break;
- case VK_FORMAT_R32G32_SINT:
- {
- int* gr = (int*)element;
-
- r = static_cast<float>(gr[0]);
- g = static_cast<float>(gr[1]);
- }
- break;
- case VK_FORMAT_R32G32_UINT:
- {
- unsigned int* gr = (unsigned int*)element;
-
- r = static_cast<float>(gr[0]);
- g = static_cast<float>(gr[1]);
- }
- break;
- case VK_FORMAT_R32_SINT:
- r = static_cast<float>(*((int*)element));
- break;
- case VK_FORMAT_R32_UINT:
- r = static_cast<float>(*((unsigned int*)element));
- break;
- case VK_FORMAT_R16_SFLOAT:
- r = *(half*)element;
- break;
- case VK_FORMAT_R16G16_SFLOAT:
- r = ((half*)element)[0];
- g = ((half*)element)[1];
- break;
- case VK_FORMAT_R16G16B16A16_SFLOAT:
- r = ((half*)element)[0];
- g = ((half*)element)[1];
- b = ((half*)element)[2];
- a = ((half*)element)[3];
- break;
- case VK_FORMAT_R32_SFLOAT:
- r = *(float*)element;
- break;
- case VK_FORMAT_R32G32_SFLOAT:
- r = ((float*)element)[0];
- g = ((float*)element)[1];
- break;
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- r = ((float*)element)[0];
- g = ((float*)element)[1];
- b = ((float*)element)[2];
- a = ((float*)element)[3];
- break;
- case VK_FORMAT_D32_SFLOAT:
- case VK_FORMAT_D32_SFLOAT_S8_UINT:
- r = *(float*)element;
- g = r;
- b = r;
- a = r;
- break;
- case VK_FORMAT_S8_UINT:
- r = *(unsigned char*)element * (1.0f / 0xFF);
- break;
- default:
- ASSERT(false);
- }
-
- if(isSRGBformat(format))
- {
- r = sRGBtoLinear(r);
- g = sRGBtoLinear(g);
- b = sRGBtoLinear(b);
- }
-
- return Color<float>(r, g, b, a);
- }
-
- Color<float> Surface::Buffer::sample(float x, float y, float z) const
- {
- x -= 0.5f;
- y -= 0.5f;
- z -= 0.5f;
-
- int x0 = clamp((int)x, 0, width - 1);
- int x1 = (x0 + 1 >= width) ? x0 : x0 + 1;
-
- int y0 = clamp((int)y, 0, height - 1);
- int y1 = (y0 + 1 >= height) ? y0 : y0 + 1;
-
- int z0 = clamp((int)z, 0, depth - 1);
- int z1 = (z0 + 1 >= depth) ? z0 : z0 + 1;
-
- Color<float> c000 = read(x0, y0, z0);
- Color<float> c100 = read(x1, y0, z0);
- Color<float> c010 = read(x0, y1, z0);
- Color<float> c110 = read(x1, y1, z0);
- Color<float> c001 = read(x0, y0, z1);
- Color<float> c101 = read(x1, y0, z1);
- Color<float> c011 = read(x0, y1, z1);
- Color<float> c111 = read(x1, y1, z1);
-
- float fx = x - x0;
- float fy = y - y0;
- float fz = z - z0;
-
- c000 *= (1 - fx) * (1 - fy) * (1 - fz);
- c100 *= fx * (1 - fy) * (1 - fz);
- c010 *= (1 - fx) * fy * (1 - fz);
- c110 *= fx * fy * (1 - fz);
- c001 *= (1 - fx) * (1 - fy) * fz;
- c101 *= fx * (1 - fy) * fz;
- c011 *= (1 - fx) * fy * fz;
- c111 *= fx * fy * fz;
-
- return c000 + c100 + c010 + c110 + c001 + c101 + c011 + c111;
- }
-
- Color<float> Surface::Buffer::sample(float x, float y, int layer) const
- {
- x -= 0.5f;
- y -= 0.5f;
-
- int x0 = clamp((int)x, 0, width - 1);
- int x1 = (x0 + 1 >= width) ? x0 : x0 + 1;
-
- int y0 = clamp((int)y, 0, height - 1);
- int y1 = (y0 + 1 >= height) ? y0 : y0 + 1;
-
- Color<float> c00 = read(x0, y0, layer);
- Color<float> c10 = read(x1, y0, layer);
- Color<float> c01 = read(x0, y1, layer);
- Color<float> c11 = read(x1, y1, layer);
-
- float fx = x - x0;
- float fy = y - y0;
-
- c00 *= (1 - fx) * (1 - fy);
- c10 *= fx * (1 - fy);
- c01 *= (1 - fx) * fy;
- c11 *= fx * fy;
-
- return c00 + c10 + c01 + c11;
- }
-
- void *Surface::Buffer::lockRect(int x, int y, int z, Lock lock)
- {
- this->lock = lock;
-
- switch(lock)
- {
- case LOCK_UNLOCKED:
- case LOCK_READONLY:
- case LOCK_UPDATE:
- break;
- case LOCK_WRITEONLY:
- case LOCK_READWRITE:
- case LOCK_DISCARD:
- dirty = true;
- break;
- default:
- ASSERT(false);
- }
-
- if(buffer)
- {
- x += border;
- y += border;
-
- switch(format)
- {
- case VK_FORMAT_EAC_R11_UNORM_BLOCK:
- case VK_FORMAT_EAC_R11_SNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
- return (unsigned char*)buffer + 8 * (x / 4) + (y / 4) * pitchB + z * sliceB;
- case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
- case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
- case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
- case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 4) + (y / 4) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
- case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 5) + (y / 4) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 5) + (y / 5) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 6) + (y / 5) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 6) + (y / 6) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 8) + (y / 5) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 8) + (y / 6) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 8) + (y / 8) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 10) + (y / 5) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 10) + (y / 6) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 10) + (y / 8) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 10) + (y / 10) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
- case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 12) + (y / 10) * pitchB + z * sliceB;
- case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
- case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
- return (unsigned char*)buffer + 16 * (x / 12) + (y / 12) * pitchB + z * sliceB;
- default:
- return (unsigned char*)buffer + x * bytes + y * pitchB + z * samples * sliceB;
- }
- }
-
- return nullptr;
- }
-
- void Surface::Buffer::unlockRect()
- {
- lock = LOCK_UNLOCKED;
- }
-
- class SurfaceImplementation : public Surface
- {
- public:
- SurfaceImplementation(int width, int height, int depth, VkFormat format, void *pixels, int pitch, int slice)
- : Surface(width, height, depth, format, pixels, pitch, slice) {}
- SurfaceImplementation(Resource *texture, int width, int height, int depth, int border, int samples, VkFormat format, bool lockable, bool renderTarget, int pitchP = 0)
- : Surface(texture, width, height, depth, border, samples, format, lockable, renderTarget, pitchP) {}
- ~SurfaceImplementation() override {};
-
- void *lockInternal(int x, int y, int z, Lock lock, Accessor client) override
- {
- return Surface::lockInternal(x, y, z, lock, client);
- }
-
- void unlockInternal() override
- {
- Surface::unlockInternal();
- }
- };
-
- Surface *Surface::create(int width, int height, int depth, VkFormat format, void *pixels, int pitch, int slice)
- {
- return new SurfaceImplementation(width, height, depth, format, pixels, pitch, slice);
- }
-
- Surface *Surface::create(Resource *texture, int width, int height, int depth, int border, int samples, VkFormat format, bool lockable, bool renderTarget, int pitchPprovided)
- {
- return new SurfaceImplementation(texture, width, height, depth, border, samples, format, lockable, renderTarget, pitchPprovided);
- }
-
- Surface::Surface(int width, int height, int depth, VkFormat format, void *pixels, int pitch, int slice) : lockable(true), renderTarget(false)
- {
- resource = new Resource(0);
- hasParent = false;
- ownExternal = false;
- depth = max(1, depth);
-
- external.buffer = pixels;
- external.width = width;
- external.height = height;
- external.depth = depth;
- external.samples = 1;
- external.format = format;
- external.bytes = bytes(external.format);
- external.pitchB = pitch;
- external.pitchP = external.bytes ? pitch / external.bytes : 0;
- external.sliceB = slice;
- external.sliceP = external.bytes ? slice / external.bytes : 0;
- external.border = 0;
- external.lock = LOCK_UNLOCKED;
- external.dirty = true;
-
- internal.buffer = nullptr;
- internal.width = width;
- internal.height = height;
- internal.depth = depth;
- internal.samples = 1;
- internal.format = selectInternalFormat(format);
- internal.bytes = bytes(internal.format);
- internal.pitchB = pitchB(internal.width, 0, internal.format, false);
- internal.pitchP = pitchP(internal.width, 0, internal.format, false);
- internal.sliceB = sliceB(internal.width, internal.height, 0, internal.format, false);
- internal.sliceP = sliceP(internal.width, internal.height, 0, internal.format, false);
- internal.border = 0;
- internal.lock = LOCK_UNLOCKED;
- internal.dirty = false;
-
- stencil.buffer = nullptr;
- stencil.width = width;
- stencil.height = height;
- stencil.depth = depth;
- stencil.samples = 1;
- stencil.format = isStencil(format) ? VK_FORMAT_S8_UINT : VK_FORMAT_UNDEFINED;
- stencil.bytes = bytes(stencil.format);
- stencil.pitchB = pitchB(stencil.width, 0, stencil.format, false);
- stencil.pitchP = pitchP(stencil.width, 0, stencil.format, false);
- stencil.sliceB = sliceB(stencil.width, stencil.height, 0, stencil.format, false);
- stencil.sliceP = sliceP(stencil.width, stencil.height, 0, stencil.format, false);
- stencil.border = 0;
- stencil.lock = LOCK_UNLOCKED;
- stencil.dirty = false;
-
- dirtyContents = true;
- }
-
- Surface::Surface(Resource *texture, int width, int height, int depth, int border, int samples, VkFormat format, bool lockable, bool renderTarget, int pitchPprovided) : lockable(lockable), renderTarget(renderTarget)
- {
- resource = texture ? texture : new Resource(0);
- hasParent = texture != nullptr;
- ownExternal = true;
- depth = max(1, depth);
- samples = max(1, samples);
-
- external.buffer = nullptr;
- external.width = width;
- external.height = height;
- external.depth = depth;
- external.samples = (short)samples;
- external.format = format;
- external.bytes = bytes(external.format);
- external.pitchB = !pitchPprovided ? pitchB(external.width, 0, external.format, renderTarget && !texture) : pitchPprovided * external.bytes;
- external.pitchP = !pitchPprovided ? pitchP(external.width, 0, external.format, renderTarget && !texture) : pitchPprovided;
- external.sliceB = sliceB(external.width, external.height, 0, external.format, renderTarget && !texture);
- external.sliceP = sliceP(external.width, external.height, 0, external.format, renderTarget && !texture);
- external.border = 0;
- external.lock = LOCK_UNLOCKED;
- external.dirty = false;
-
- internal.buffer = nullptr;
- internal.width = width;
- internal.height = height;
- internal.depth = depth;
- internal.samples = (short)samples;
- internal.format = selectInternalFormat(format);
- internal.bytes = bytes(internal.format);
- internal.pitchB = !pitchPprovided ? pitchB(internal.width, border, internal.format, renderTarget) : pitchPprovided * internal.bytes;
- internal.pitchP = !pitchPprovided ? pitchP(internal.width, border, internal.format, renderTarget) : pitchPprovided;
- internal.sliceB = sliceB(internal.width, internal.height, border, internal.format, renderTarget);
- internal.sliceP = sliceP(internal.width, internal.height, border, internal.format, renderTarget);
- internal.border = (short)border;
- internal.lock = LOCK_UNLOCKED;
- internal.dirty = false;
-
- stencil.buffer = nullptr;
- stencil.width = width;
- stencil.height = height;
- stencil.depth = depth;
- stencil.samples = (short)samples;
- stencil.format = isStencil(format) ? VK_FORMAT_S8_UINT : VK_FORMAT_UNDEFINED;
- stencil.bytes = bytes(stencil.format);
- stencil.pitchB = pitchB(stencil.width, 0, stencil.format, renderTarget);
- stencil.pitchP = pitchP(stencil.width, 0, stencil.format, renderTarget);
- stencil.sliceB = sliceB(stencil.width, stencil.height, 0, stencil.format, renderTarget);
- stencil.sliceP = sliceP(stencil.width, stencil.height, 0, stencil.format, renderTarget);
- stencil.border = 0;
- stencil.lock = LOCK_UNLOCKED;
- stencil.dirty = false;
-
- dirtyContents = true;
- }
-
- Surface::~Surface()
- {
- // sync() must be called before this destructor to ensure all locks have been released.
- // We can't call it here because the parent resource may already have been destroyed.
- ASSERT(isUnlocked());
-
- if(!hasParent)
- {
- resource->destruct();
- }
-
- if(ownExternal)
- {
- deallocate(external.buffer);
- }
-
- if(internal.buffer != external.buffer)
- {
- deallocate(internal.buffer);
- }
-
- deallocate(stencil.buffer);
-
- external.buffer = nullptr;
- internal.buffer = nullptr;
- stencil.buffer = nullptr;
- }
-
- void *Surface::lockExternal(int x, int y, int z, Lock lock, Accessor client)
- {
- resource->lock(client);
-
- if(!external.buffer)
- {
- if(internal.buffer && identicalBuffers())
- {
- external.buffer = internal.buffer;
- }
- else
- {
- external.buffer = allocateBuffer(external.width, external.height, external.depth, external.border, external.samples, external.format);
- }
- }
-
- if(internal.dirty)
- {
- if(lock != LOCK_DISCARD)
- {
- update(external, internal);
- }
-
- internal.dirty = false;
- }
-
- switch(lock)
- {
- case LOCK_READONLY:
- break;
- case LOCK_WRITEONLY:
- case LOCK_READWRITE:
- case LOCK_DISCARD:
- dirtyContents = true;
- break;
- default:
- ASSERT(false);
- }
-
- return external.lockRect(x, y, z, lock);
- }
-
- void Surface::unlockExternal()
- {
- external.unlockRect();
-
- resource->unlock();
- }
-
- void *Surface::lockInternal(int x, int y, int z, Lock lock, Accessor client)
- {
- if(lock != LOCK_UNLOCKED)
- {
- resource->lock(client);
- }
-
- if(!internal.buffer)
- {
- if(external.buffer && identicalBuffers())
- {
- internal.buffer = external.buffer;
- }
- else
- {
- internal.buffer = allocateBuffer(internal.width, internal.height, internal.depth, internal.border, internal.samples, internal.format);
- }
- }
-
- // FIXME: WHQL requires conversion to lower external precision and back
- if(logPrecision >= WHQL)
- {
- if(internal.dirty && renderTarget && internal.format != external.format)
- {
- if(lock != LOCK_DISCARD)
- {
- switch(external.format)
- {
- case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
- case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
- lockExternal(0, 0, 0, LOCK_READWRITE, client);
- unlockExternal();
- break;
- default:
- // Difference passes WHQL
- break;
- }
- }
- }
- }
-
- if(external.dirty)
- {
- if(lock != LOCK_DISCARD)
- {
- update(internal, external);
- }
-
- external.dirty = false;
- }
-
- switch(lock)
- {
- case LOCK_UNLOCKED:
- case LOCK_READONLY:
- break;
- case LOCK_WRITEONLY:
- case LOCK_READWRITE:
- case LOCK_DISCARD:
- dirtyContents = true;
- break;
- default:
- ASSERT(false);
- }
-
- if(lock == LOCK_READONLY && client == PUBLIC)
- {
- resolve();
- }
-
- return internal.lockRect(x, y, z, lock);
- }
-
- void Surface::unlockInternal()
- {
- internal.unlockRect();
-
- resource->unlock();
- }
-
- void *Surface::lockStencil(int x, int y, int front, Accessor client)
- {
- resource->lock(client);
-
- if(stencil.format == VK_FORMAT_UNDEFINED)
- {
- return nullptr;
- }
-
- if(!stencil.buffer)
- {
- stencil.buffer = allocateBuffer(stencil.width, stencil.height, stencil.depth, stencil.border, stencil.samples, stencil.format);
- }
-
- return stencil.lockRect(x, y, front, LOCK_READWRITE); // FIXME
- }
-
- void Surface::unlockStencil()
- {
- stencil.unlockRect();
-
- resource->unlock();
- }
-
- int Surface::bytes(VkFormat format)
- {
- switch(format)
- {
- case VK_FORMAT_UNDEFINED:
- return 0;
- case VK_FORMAT_R4G4_UNORM_PACK8:
- return 1;
- case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
- case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- case VK_FORMAT_B5G6R5_UNORM_PACK16:
- case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
- case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
- case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
- return 2;
- case VK_FORMAT_R8_UNORM:
- case VK_FORMAT_R8_SNORM:
- case VK_FORMAT_R8_USCALED:
- case VK_FORMAT_R8_SSCALED:
- case VK_FORMAT_R8_UINT:
- case VK_FORMAT_R8_SINT:
- case VK_FORMAT_R8_SRGB:
- return 1;
- case VK_FORMAT_R8G8_UNORM:
- case VK_FORMAT_R8G8_SNORM:
- case VK_FORMAT_R8G8_USCALED:
- case VK_FORMAT_R8G8_SSCALED:
- case VK_FORMAT_R8G8_UINT:
- case VK_FORMAT_R8G8_SINT:
- case VK_FORMAT_R8G8_SRGB:
- return 2;
- case VK_FORMAT_R8G8B8_UNORM:
- case VK_FORMAT_R8G8B8_SNORM:
- case VK_FORMAT_R8G8B8_USCALED:
- case VK_FORMAT_R8G8B8_SSCALED:
- case VK_FORMAT_R8G8B8_UINT:
- case VK_FORMAT_R8G8B8_SINT:
- case VK_FORMAT_R8G8B8_SRGB:
- case VK_FORMAT_B8G8R8_UNORM:
- case VK_FORMAT_B8G8R8_SNORM:
- case VK_FORMAT_B8G8R8_USCALED:
- case VK_FORMAT_B8G8R8_SSCALED:
- case VK_FORMAT_B8G8R8_UINT:
- case VK_FORMAT_B8G8R8_SINT:
- case VK_FORMAT_B8G8R8_SRGB:
- return 3;
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SNORM:
- case VK_FORMAT_R8G8B8A8_USCALED:
- case VK_FORMAT_R8G8B8A8_SSCALED:
- case VK_FORMAT_R8G8B8A8_UINT:
- case VK_FORMAT_R8G8B8A8_SINT:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_B8G8R8A8_SNORM:
- case VK_FORMAT_B8G8R8A8_USCALED:
- case VK_FORMAT_B8G8R8A8_SSCALED:
- case VK_FORMAT_B8G8R8A8_UINT:
- case VK_FORMAT_B8G8R8A8_SINT:
- case VK_FORMAT_B8G8R8A8_SRGB:
- case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
- case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
- case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
- case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
- case VK_FORMAT_A8B8G8R8_UINT_PACK32:
- case VK_FORMAT_A8B8G8R8_SINT_PACK32:
- case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
- case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
- case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
- case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
- case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
- case VK_FORMAT_A2R10G10B10_UINT_PACK32:
- case VK_FORMAT_A2R10G10B10_SINT_PACK32:
- case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
- case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
- case VK_FORMAT_A2B10G10R10_UINT_PACK32:
- case VK_FORMAT_A2B10G10R10_SINT_PACK32:
- return 4;
- case VK_FORMAT_R16_UNORM:
- case VK_FORMAT_R16_SNORM:
- case VK_FORMAT_R16_USCALED:
- case VK_FORMAT_R16_SSCALED:
- case VK_FORMAT_R16_UINT:
- case VK_FORMAT_R16_SINT:
- case VK_FORMAT_R16_SFLOAT:
- return 2;
- case VK_FORMAT_R16G16_UNORM:
- case VK_FORMAT_R16G16_SNORM:
- case VK_FORMAT_R16G16_USCALED:
- case VK_FORMAT_R16G16_SSCALED:
- case VK_FORMAT_R16G16_UINT:
- case VK_FORMAT_R16G16_SINT:
- case VK_FORMAT_R16G16_SFLOAT:
- return 4;
- case VK_FORMAT_R16G16B16_UNORM:
- case VK_FORMAT_R16G16B16_SNORM:
- case VK_FORMAT_R16G16B16_USCALED:
- case VK_FORMAT_R16G16B16_SSCALED:
- case VK_FORMAT_R16G16B16_UINT:
- case VK_FORMAT_R16G16B16_SINT:
- case VK_FORMAT_R16G16B16_SFLOAT:
- return 6;
- case VK_FORMAT_R16G16B16A16_UNORM:
- case VK_FORMAT_R16G16B16A16_SNORM:
- case VK_FORMAT_R16G16B16A16_USCALED:
- case VK_FORMAT_R16G16B16A16_SSCALED:
- case VK_FORMAT_R16G16B16A16_UINT:
- case VK_FORMAT_R16G16B16A16_SINT:
- case VK_FORMAT_R16G16B16A16_SFLOAT:
- return 8;
- case VK_FORMAT_R32_UINT:
- case VK_FORMAT_R32_SINT:
- case VK_FORMAT_R32_SFLOAT:
- return 4;
- case VK_FORMAT_R32G32_UINT:
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32_SFLOAT:
- return 8;
- case VK_FORMAT_R32G32B32_UINT:
- case VK_FORMAT_R32G32B32_SINT:
- case VK_FORMAT_R32G32B32_SFLOAT:
- return 12;
- case VK_FORMAT_R32G32B32A32_UINT:
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- return 16;
- case VK_FORMAT_R64_UINT:
- case VK_FORMAT_R64_SINT:
- case VK_FORMAT_R64_SFLOAT:
- return 8;
- case VK_FORMAT_R64G64_UINT:
- case VK_FORMAT_R64G64_SINT:
- case VK_FORMAT_R64G64_SFLOAT:
- return 16;
- case VK_FORMAT_R64G64B64_UINT:
- case VK_FORMAT_R64G64B64_SINT:
- case VK_FORMAT_R64G64B64_SFLOAT:
- return 24;
- case VK_FORMAT_R64G64B64A64_UINT:
- case VK_FORMAT_R64G64B64A64_SINT:
- case VK_FORMAT_R64G64B64A64_SFLOAT:
- return 32;
- case VK_FORMAT_B10G11R11_UFLOAT_PACK32: return 4;
- case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: return 4;
- case VK_FORMAT_D16_UNORM: return 2;
- case VK_FORMAT_X8_D24_UNORM_PACK32: return 4;
- case VK_FORMAT_D32_SFLOAT: return 4;
- case VK_FORMAT_S8_UINT: return 1;
- case VK_FORMAT_D16_UNORM_S8_UINT: return 2; // Separate depth and stencil planes
- case VK_FORMAT_D24_UNORM_S8_UINT: return 4; // Combined depth and stencil planes
- case VK_FORMAT_D32_SFLOAT_S8_UINT: return 4; // Separate depth and stencil planes
- // Note: Compressed formats don't return bytes per pixel,
- // since these would be fractional. The returned value
- // is bytes per pixel for 1 column, so 2 for 64 bit 4x4
- // blocks and 4 for 128 bit 4x4 blocks.
- case VK_FORMAT_BC1_RGB_UNORM_BLOCK: return 2;
- case VK_FORMAT_BC1_RGB_SRGB_BLOCK: return 2;
- case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: return 2;
- case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: return 2;
- case VK_FORMAT_BC2_UNORM_BLOCK: return 4;
- case VK_FORMAT_BC2_SRGB_BLOCK: return 4;
- case VK_FORMAT_BC3_UNORM_BLOCK: return 4;
- case VK_FORMAT_BC3_SRGB_BLOCK: return 4;
- case VK_FORMAT_BC4_UNORM_BLOCK: return 2;
- case VK_FORMAT_BC4_SNORM_BLOCK: return 2;
- case VK_FORMAT_BC5_UNORM_BLOCK: return 4;
- case VK_FORMAT_BC5_SNORM_BLOCK: return 4;
- case VK_FORMAT_BC6H_UFLOAT_BLOCK: return 4;
- case VK_FORMAT_BC6H_SFLOAT_BLOCK: return 4;
- case VK_FORMAT_BC7_UNORM_BLOCK: return 4;
- case VK_FORMAT_BC7_SRGB_BLOCK: return 4;
- case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: return 2;
- case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: return 2;
- case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: return 2;
- case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: return 2;
- case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: return 4;
- case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: return 4;
- case VK_FORMAT_EAC_R11_UNORM_BLOCK: return 2;
- case VK_FORMAT_EAC_R11_SNORM_BLOCK: return 2;
- case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: return 4;
- case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: return 4;
- case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: return 4;
- case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: return 4;
- case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
- case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
- case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
- case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
- case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
- case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
- case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: return 0; // FIXME
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM: return 1; // Y plane only
- default:
- ASSERT(false);
- }
-
- return 0;
- }
-
- int Surface::pitchB(int width, int border, VkFormat format, bool target)
- {
- width += 2 * border;
-
- // Render targets require 2x2 quads
- if(target || isDepth(format) || isStencil(format))
- {
- width = align<2>(width);
- }
-
- switch(format)
- {
- case VK_FORMAT_EAC_R11_UNORM_BLOCK:
- case VK_FORMAT_EAC_R11_SNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
- return 8 * ((width + 3) / 4); // 64 bit per 4x4 block, computed per 4 rows
- case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
- case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
- case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
- case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
- return 16 * ((width + 3) / 4); // 128 bit per 4x4 block, computed per 4 rows
- case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
- case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
- case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
- return 16 * ((width + 4) / 5);
- case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
- return 16 * ((width + 5) / 6);
- case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
- return 16 * ((width + 7) / 8);
- case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
- return 16 * ((width + 9) / 10);
- case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
- case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
- case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
- case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
- return 16 * ((width + 11) / 12);
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
- return align<16>(width);
- default:
- return bytes(format) * width;
- }
- }
-
- int Surface::pitchP(int width, int border, VkFormat format, bool target)
- {
- int B = bytes(format);
-
- return B > 0 ? pitchB(width, border, format, target) / B : 0;
- }
-
- int Surface::sliceB(int width, int height, int border, VkFormat format, bool target)
- {
- height += 2 * border;
-
- // Render targets require 2x2 quads
- if(target || isDepth(format) || isStencil(format))
- {
- height = align<2>(height);
- }
-
- switch(format)
- {
- case VK_FORMAT_EAC_R11_UNORM_BLOCK:
- case VK_FORMAT_EAC_R11_SNORM_BLOCK:
- case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
- case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
- case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
- case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
- case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
- case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
- return pitchB(width, border, format, target) * ((height + 3) / 4); // Pitch computed per 4 rows
- case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
- return pitchB(width, border, format, target) * ((height + 4) / 5); // Pitch computed per 5 rows
- case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
- return pitchB(width, border, format, target) * ((height + 5) / 6); // Pitch computed per 6 rows
- case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
- return pitchB(width, border, format, target) * ((height + 7) / 8); // Pitch computed per 8 rows
- case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
- case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
- case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
- return pitchB(width, border, format, target) * ((height + 9) / 10); // Pitch computed per 10 rows
- case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
- case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
- return pitchB(width, border, format, target) * ((height + 11) / 12); // Pitch computed per 12 rows
- default:
- return pitchB(width, border, format, target) * height; // Pitch computed per row
- }
- }
-
- int Surface::sliceP(int width, int height, int border, VkFormat format, bool target)
- {
- int B = bytes(format);
-
- return B > 0 ? sliceB(width, height, border, format, target) / B : 0;
- }
-
- void Surface::update(Buffer &destination, Buffer &source)
- {
- // ASSERT(source.lock != LOCK_UNLOCKED);
- // ASSERT(destination.lock != LOCK_UNLOCKED);
-
- if(destination.buffer != source.buffer)
- {
- ASSERT(source.dirty && !destination.dirty);
-
- switch(source.format)
- {
- case VK_FORMAT_EAC_R11_UNORM_BLOCK: decodeEAC(destination, source, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_EAC_R11_SNORM_BLOCK: decodeEAC(destination, source, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: decodeEAC(destination, source, 2, false); break; // FIXME: Check destination format
- case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: decodeEAC(destination, source, 2, true); break; // FIXME: Check destination format
- case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: decodeETC2(destination, source, 0, false); break; // FIXME: Check destination format
- case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: decodeETC2(destination, source, 0, true); break; // FIXME: Check destination format
- case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: decodeETC2(destination, source, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: decodeETC2(destination, source, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: decodeETC2(destination, source, 8, false); break; // FIXME: Check destination format
- case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: decodeETC2(destination, source, 8, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: decodeASTC(destination, source, 4, 4, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: decodeASTC(destination, source, 5, 4, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: decodeASTC(destination, source, 5, 5, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: decodeASTC(destination, source, 6, 5, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: decodeASTC(destination, source, 6, 6, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_8x5_UNORM_BLOCK: decodeASTC(destination, source, 8, 5, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_8x6_UNORM_BLOCK: decodeASTC(destination, source, 8, 6, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_8x8_UNORM_BLOCK: decodeASTC(destination, source, 8, 8, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: decodeASTC(destination, source, 10, 5, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: decodeASTC(destination, source, 10, 6, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: decodeASTC(destination, source, 10, 8, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: decodeASTC(destination, source, 10, 10, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: decodeASTC(destination, source, 12, 10, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: decodeASTC(destination, source, 12, 12, 1, false); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: decodeASTC(destination, source, 4, 4, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: decodeASTC(destination, source, 5, 4, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: decodeASTC(destination, source, 5, 5, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: decodeASTC(destination, source, 6, 5, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: decodeASTC(destination, source, 6, 6, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: decodeASTC(destination, source, 8, 5, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: decodeASTC(destination, source, 8, 6, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_8x8_SRGB_BLOCK: decodeASTC(destination, source, 8, 8, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: decodeASTC(destination, source, 10, 5, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: decodeASTC(destination, source, 10, 6, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: decodeASTC(destination, source, 10, 8, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: decodeASTC(destination, source, 10, 10, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: decodeASTC(destination, source, 12, 10, 1, true); break; // FIXME: Check destination format
- case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: decodeASTC(destination, source, 12, 12, 1, true); break; // FIXME: Check destination format
- default: genericUpdate(destination, source); break;
- }
- }
- }
-
- void Surface::genericUpdate(Buffer &destination, Buffer &source)
- {
- unsigned char *sourceSlice = (unsigned char*)source.lockRect(0, 0, 0, sw::LOCK_READONLY);
- unsigned char *destinationSlice = (unsigned char*)destination.lockRect(0, 0, 0, sw::LOCK_UPDATE);
-
- int depth = min(destination.depth, source.depth);
- int height = min(destination.height, source.height);
- int width = min(destination.width, source.width);
- int rowBytes = width * source.bytes;
-
- for(int z = 0; z < depth; z++)
- {
- unsigned char *sourceRow = sourceSlice;
- unsigned char *destinationRow = destinationSlice;
-
- for(int y = 0; y < height; y++)
- {
- if(source.format == destination.format)
- {
- memcpy(destinationRow, sourceRow, rowBytes);
- }
- else
- {
- unsigned char *sourceElement = sourceRow;
- unsigned char *destinationElement = destinationRow;
-
- for(int x = 0; x < width; x++)
- {
- Color<float> color = source.read(sourceElement);
- destination.write(destinationElement, color);
-
- sourceElement += source.bytes;
- destinationElement += destination.bytes;
- }
- }
-
- sourceRow += source.pitchB;
- destinationRow += destination.pitchB;
- }
-
- sourceSlice += source.sliceB;
- destinationSlice += destination.sliceB;
- }
-
- source.unlockRect();
- destination.unlockRect();
- }
-
- void Surface::decodeDXT1(Buffer &internal, Buffer &external)
- {
- unsigned int *destSlice = (unsigned int*)internal.lockRect(0, 0, 0, LOCK_UPDATE);
- const DXT1 *source = (const DXT1*)external.lockRect(0, 0, 0, LOCK_READONLY);
-
- for(int z = 0; z < external.depth; z++)
- {
- unsigned int *dest = destSlice;
-
- for(int y = 0; y < external.height; y += 4)
- {
- for(int x = 0; x < external.width; x += 4)
- {
- Color<byte> c[4];
-
- c[0] = source->c0;
- c[1] = source->c1;
-
- if(source->c0 > source->c1) // No transparency
- {
- // c2 = 2 / 3 * c0 + 1 / 3 * c1
- c[2].r = (byte)((2 * (word)c[0].r + (word)c[1].r + 1) / 3);
- c[2].g = (byte)((2 * (word)c[0].g + (word)c[1].g + 1) / 3);
- c[2].b = (byte)((2 * (word)c[0].b + (word)c[1].b + 1) / 3);
- c[2].a = 0xFF;
-
- // c3 = 1 / 3 * c0 + 2 / 3 * c1
- c[3].r = (byte)(((word)c[0].r + 2 * (word)c[1].r + 1) / 3);
- c[3].g = (byte)(((word)c[0].g + 2 * (word)c[1].g + 1) / 3);
- c[3].b = (byte)(((word)c[0].b + 2 * (word)c[1].b + 1) / 3);
- c[3].a = 0xFF;
- }
- else // c3 transparent
- {
- // c2 = 1 / 2 * c0 + 1 / 2 * c1
- c[2].r = (byte)(((word)c[0].r + (word)c[1].r) / 2);
- c[2].g = (byte)(((word)c[0].g + (word)c[1].g) / 2);
- c[2].b = (byte)(((word)c[0].b + (word)c[1].b) / 2);
- c[2].a = 0xFF;
-
- c[3].r = 0;
- c[3].g = 0;
- c[3].b = 0;
- c[3].a = 0;
- }
-
- for(int j = 0; j < 4 && (y + j) < internal.height; j++)
- {
- for(int i = 0; i < 4 && (x + i) < internal.width; i++)
- {
- dest[(x + i) + (y + j) * internal.pitchP] = c[(unsigned int)(source->lut >> 2 * (i + j * 4)) % 4];
- }
- }
-
- source++;
- }
- }
-
- (byte*&)destSlice += internal.sliceB;
- }
-
- external.unlockRect();
- internal.unlockRect();
- }
-
- void Surface::decodeDXT3(Buffer &internal, Buffer &external)
- {
- unsigned int *destSlice = (unsigned int*)internal.lockRect(0, 0, 0, LOCK_UPDATE);
- const DXT3 *source = (const DXT3*)external.lockRect(0, 0, 0, LOCK_READONLY);
-
- for(int z = 0; z < external.depth; z++)
- {
- unsigned int *dest = destSlice;
-
- for(int y = 0; y < external.height; y += 4)
- {
- for(int x = 0; x < external.width; x += 4)
- {
- Color<byte> c[4];
-
- c[0] = source->c0;
- c[1] = source->c1;
-
- // c2 = 2 / 3 * c0 + 1 / 3 * c1
- c[2].r = (byte)((2 * (word)c[0].r + (word)c[1].r + 1) / 3);
- c[2].g = (byte)((2 * (word)c[0].g + (word)c[1].g + 1) / 3);
- c[2].b = (byte)((2 * (word)c[0].b + (word)c[1].b + 1) / 3);
-
- // c3 = 1 / 3 * c0 + 2 / 3 * c1
- c[3].r = (byte)(((word)c[0].r + 2 * (word)c[1].r + 1) / 3);
- c[3].g = (byte)(((word)c[0].g + 2 * (word)c[1].g + 1) / 3);
- c[3].b = (byte)(((word)c[0].b + 2 * (word)c[1].b + 1) / 3);
-
- for(int j = 0; j < 4 && (y + j) < internal.height; j++)
- {
- for(int i = 0; i < 4 && (x + i) < internal.width; i++)
- {
- unsigned int a = (unsigned int)(source->a >> 4 * (i + j * 4)) & 0x0F;
- unsigned int color = (c[(unsigned int)(source->lut >> 2 * (i + j * 4)) % 4] & 0x00FFFFFF) | ((a << 28) + (a << 24));
-
- dest[(x + i) + (y + j) * internal.pitchP] = color;
- }
- }
-
- source++;
- }
- }
-
- (byte*&)destSlice += internal.sliceB;
- }
-
- external.unlockRect();
- internal.unlockRect();
- }
-
- void Surface::decodeDXT5(Buffer &internal, Buffer &external)
- {
- unsigned int *destSlice = (unsigned int*)internal.lockRect(0, 0, 0, LOCK_UPDATE);
- const DXT5 *source = (const DXT5*)external.lockRect(0, 0, 0, LOCK_READONLY);
-
- for(int z = 0; z < external.depth; z++)
- {
- unsigned int *dest = destSlice;
-
- for(int y = 0; y < external.height; y += 4)
- {
- for(int x = 0; x < external.width; x += 4)
- {
- Color<byte> c[4];
-
- c[0] = source->c0;
- c[1] = source->c1;
-
- // c2 = 2 / 3 * c0 + 1 / 3 * c1
- c[2].r = (byte)((2 * (word)c[0].r + (word)c[1].r + 1) / 3);
- c[2].g = (byte)((2 * (word)c[0].g + (word)c[1].g + 1) / 3);
- c[2].b = (byte)((2 * (word)c[0].b + (word)c[1].b + 1) / 3);
-
- // c3 = 1 / 3 * c0 + 2 / 3 * c1
- c[3].r = (byte)(((word)c[0].r + 2 * (word)c[1].r + 1) / 3);
- c[3].g = (byte)(((word)c[0].g + 2 * (word)c[1].g + 1) / 3);
- c[3].b = (byte)(((word)c[0].b + 2 * (word)c[1].b + 1) / 3);
-
- byte a[8];
-
- a[0] = source->a0;
- a[1] = source->a1;
-
- if(a[0] > a[1])
- {
- a[2] = (byte)((6 * (word)a[0] + 1 * (word)a[1] + 3) / 7);
- a[3] = (byte)((5 * (word)a[0] + 2 * (word)a[1] + 3) / 7);
- a[4] = (byte)((4 * (word)a[0] + 3 * (word)a[1] + 3) / 7);
- a[5] = (byte)((3 * (word)a[0] + 4 * (word)a[1] + 3) / 7);
- a[6] = (byte)((2 * (word)a[0] + 5 * (word)a[1] + 3) / 7);
- a[7] = (byte)((1 * (word)a[0] + 6 * (word)a[1] + 3) / 7);
- }
- else
- {
- a[2] = (byte)((4 * (word)a[0] + 1 * (word)a[1] + 2) / 5);
- a[3] = (byte)((3 * (word)a[0] + 2 * (word)a[1] + 2) / 5);
- a[4] = (byte)((2 * (word)a[0] + 3 * (word)a[1] + 2) / 5);
- a[5] = (byte)((1 * (word)a[0] + 4 * (word)a[1] + 2) / 5);
- a[6] = 0;
- a[7] = 0xFF;
- }
-
- for(int j = 0; j < 4 && (y + j) < internal.height; j++)
- {
- for(int i = 0; i < 4 && (x + i) < internal.width; i++)
- {
- unsigned int alpha = (unsigned int)a[(unsigned int)(source->alut >> (16 + 3 * (i + j * 4))) % 8] << 24;
- unsigned int color = (c[(source->clut >> 2 * (i + j * 4)) % 4] & 0x00FFFFFF) | alpha;
-
- dest[(x + i) + (y + j) * internal.pitchP] = color;
- }
- }
-
- source++;
- }
- }
-
- (byte*&)destSlice += internal.sliceB;
- }
-
- external.unlockRect();
- internal.unlockRect();
- }
-
- void Surface::decodeATI1(Buffer &internal, Buffer &external)
- {
- byte *destSlice = (byte*)internal.lockRect(0, 0, 0, LOCK_UPDATE);
- const ATI1 *source = (const ATI1*)external.lockRect(0, 0, 0, LOCK_READONLY);
-
- for(int z = 0; z < external.depth; z++)
- {
- byte *dest = destSlice;
-
- for(int y = 0; y < external.height; y += 4)
- {
- for(int x = 0; x < external.width; x += 4)
- {
- byte r[8];
-
- r[0] = source->r0;
- r[1] = source->r1;
-
- if(r[0] > r[1])
- {
- r[2] = (byte)((6 * (word)r[0] + 1 * (word)r[1] + 3) / 7);
- r[3] = (byte)((5 * (word)r[0] + 2 * (word)r[1] + 3) / 7);
- r[4] = (byte)((4 * (word)r[0] + 3 * (word)r[1] + 3) / 7);
- r[5] = (byte)((3 * (word)r[0] + 4 * (word)r[1] + 3) / 7);
- r[6] = (byte)((2 * (word)r[0] + 5 * (word)r[1] + 3) / 7);
- r[7] = (byte)((1 * (word)r[0] + 6 * (word)r[1] + 3) / 7);
- }
- else
- {
- r[2] = (byte)((4 * (word)r[0] + 1 * (word)r[1] + 2) / 5);
- r[3] = (byte)((3 * (word)r[0] + 2 * (word)r[1] + 2) / 5);
- r[4] = (byte)((2 * (word)r[0] + 3 * (word)r[1] + 2) / 5);
- r[5] = (byte)((1 * (word)r[0] + 4 * (word)r[1] + 2) / 5);
- r[6] = 0;
- r[7] = 0xFF;
- }
-
- for(int j = 0; j < 4 && (y + j) < internal.height; j++)
- {
- for(int i = 0; i < 4 && (x + i) < internal.width; i++)
- {
- dest[(x + i) + (y + j) * internal.pitchP] = r[(unsigned int)(source->rlut >> (16 + 3 * (i + j * 4))) % 8];
- }
- }
-
- source++;
- }
- }
-
- destSlice += internal.sliceB;
- }
-
- external.unlockRect();
- internal.unlockRect();
- }
-
- void Surface::decodeATI2(Buffer &internal, Buffer &external)
- {
- word *destSlice = (word*)internal.lockRect(0, 0, 0, LOCK_UPDATE);
- const ATI2 *source = (const ATI2*)external.lockRect(0, 0, 0, LOCK_READONLY);
-
- for(int z = 0; z < external.depth; z++)
- {
- word *dest = destSlice;
-
- for(int y = 0; y < external.height; y += 4)
- {
- for(int x = 0; x < external.width; x += 4)
- {
- byte X[8];
-
- X[0] = source->x0;
- X[1] = source->x1;
-
- if(X[0] > X[1])
- {
- X[2] = (byte)((6 * (word)X[0] + 1 * (word)X[1] + 3) / 7);
- X[3] = (byte)((5 * (word)X[0] + 2 * (word)X[1] + 3) / 7);
- X[4] = (byte)((4 * (word)X[0] + 3 * (word)X[1] + 3) / 7);
- X[5] = (byte)((3 * (word)X[0] + 4 * (word)X[1] + 3) / 7);
- X[6] = (byte)((2 * (word)X[0] + 5 * (word)X[1] + 3) / 7);
- X[7] = (byte)((1 * (word)X[0] + 6 * (word)X[1] + 3) / 7);
- }
- else
- {
- X[2] = (byte)((4 * (word)X[0] + 1 * (word)X[1] + 2) / 5);
- X[3] = (byte)((3 * (word)X[0] + 2 * (word)X[1] + 2) / 5);
- X[4] = (byte)((2 * (word)X[0] + 3 * (word)X[1] + 2) / 5);
- X[5] = (byte)((1 * (word)X[0] + 4 * (word)X[1] + 2) / 5);
- X[6] = 0;
- X[7] = 0xFF;
- }
-
- byte Y[8];
-
- Y[0] = source->y0;
- Y[1] = source->y1;
-
- if(Y[0] > Y[1])
- {
- Y[2] = (byte)((6 * (word)Y[0] + 1 * (word)Y[1] + 3) / 7);
- Y[3] = (byte)((5 * (word)Y[0] + 2 * (word)Y[1] + 3) / 7);
- Y[4] = (byte)((4 * (word)Y[0] + 3 * (word)Y[1] + 3) / 7);
- Y[5] = (byte)((3 * (word)Y[0] + 4 * (word)Y[1] + 3) / 7);
- Y[6] = (byte)((2 * (word)Y[0] + 5 * (word)Y[1] + 3) / 7);
- Y[7] = (byte)((1 * (word)Y[0] + 6 * (word)Y[1] + 3) / 7);
- }
- else
- {
- Y[2] = (byte)((4 * (word)Y[0] + 1 * (word)Y[1] + 2) / 5);
- Y[3] = (byte)((3 * (word)Y[0] + 2 * (word)Y[1] + 2) / 5);
- Y[4] = (byte)((2 * (word)Y[0] + 3 * (word)Y[1] + 2) / 5);
- Y[5] = (byte)((1 * (word)Y[0] + 4 * (word)Y[1] + 2) / 5);
- Y[6] = 0;
- Y[7] = 0xFF;
- }
-
- for(int j = 0; j < 4 && (y + j) < internal.height; j++)
- {
- for(int i = 0; i < 4 && (x + i) < internal.width; i++)
- {
- word r = X[(unsigned int)(source->xlut >> (16 + 3 * (i + j * 4))) % 8];
- word g = Y[(unsigned int)(source->ylut >> (16 + 3 * (i + j * 4))) % 8];
-
- dest[(x + i) + (y + j) * internal.pitchP] = (g << 8) + r;
- }
- }
-
- source++;
- }
- }
-
- (byte*&)destSlice += internal.sliceB;
- }
-
- external.unlockRect();
- internal.unlockRect();
- }
-
- void Surface::decodeETC2(Buffer &internal, Buffer &external, int nbAlphaBits, bool isSRGB)
- {
- ETC_Decoder::Decode((const byte*)external.lockRect(0, 0, 0, LOCK_READONLY), (byte*)internal.lockRect(0, 0, 0, LOCK_UPDATE), external.width, external.height, internal.width, internal.height, internal.pitchB, internal.bytes,
- (nbAlphaBits == 8) ? ETC_Decoder::ETC_RGBA : ((nbAlphaBits == 1) ? ETC_Decoder::ETC_RGB_PUNCHTHROUGH_ALPHA : ETC_Decoder::ETC_RGB));
- external.unlockRect();
- internal.unlockRect();
-
- if(isSRGB)
- {
- static byte sRGBtoLinearTable[256];
- static bool sRGBtoLinearTableDirty = true;
- if(sRGBtoLinearTableDirty)
- {
- for(int i = 0; i < 256; i++)
- {
- sRGBtoLinearTable[i] = static_cast<byte>(sRGBtoLinear(static_cast<float>(i) / 255.0f) * 255.0f + 0.5f);
- }
- sRGBtoLinearTableDirty = false;
- }
-
- // Perform sRGB conversion in place after decoding
- byte *src = (byte*)internal.lockRect(0, 0, 0, LOCK_READWRITE);
- for(int y = 0; y < internal.height; y++)
- {
- byte *srcRow = src + y * internal.pitchB;
- for(int x = 0; x < internal.width; x++)
- {
- byte *srcPix = srcRow + x * internal.bytes;
- for(int i = 0; i < 3; i++)
- {
- srcPix[i] = sRGBtoLinearTable[srcPix[i]];
- }
- }
- }
- internal.unlockRect();
- }
- }
-
- void Surface::decodeEAC(Buffer &internal, Buffer &external, int nbChannels, bool isSigned)
- {
- ASSERT(nbChannels == 1 || nbChannels == 2);
-
- byte *src = (byte*)internal.lockRect(0, 0, 0, LOCK_READWRITE);
- ETC_Decoder::Decode((const byte*)external.lockRect(0, 0, 0, LOCK_READONLY), src, external.width, external.height, internal.width, internal.height, internal.pitchB, internal.bytes,
- (nbChannels == 1) ? (isSigned ? ETC_Decoder::ETC_R_SIGNED : ETC_Decoder::ETC_R_UNSIGNED) : (isSigned ? ETC_Decoder::ETC_RG_SIGNED : ETC_Decoder::ETC_RG_UNSIGNED));
- external.unlockRect();
-
- // FIXME: We convert EAC data to float, until signed short internal formats are supported
- // This code can be removed if ETC2 images are decoded to internal 16 bit signed R/RG formats
- const float normalization = isSigned ? (1.0f / (8.0f * 127.875f)) : (1.0f / (8.0f * 255.875f));
- for(int y = 0; y < internal.height; y++)
- {
- byte* srcRow = src + y * internal.pitchB;
- for(int x = internal.width - 1; x >= 0; x--)
- {
- int* srcPix = reinterpret_cast<int*>(srcRow + x * internal.bytes);
- float* dstPix = reinterpret_cast<float*>(srcPix);
- for(int c = nbChannels - 1; c >= 0; c--)
- {
- dstPix[c] = clamp(static_cast<float>(srcPix[c]) * normalization, -1.0f, 1.0f);
- }
- }
- }
-
- internal.unlockRect();
- }
-
- void Surface::decodeASTC(Buffer &internal, Buffer &external, int xBlockSize, int yBlockSize, int zBlockSize, bool isSRGB)
- {
- }
-
- size_t Surface::size(int width, int height, int depth, int border, int samples, VkFormat format)
- {
- samples = max(1, samples);
-
- switch(format)
- {
- default:
- {
- uint64_t size = (uint64_t)sliceB(width, height, border, format, true) * depth * samples;
-
- // FIXME: Unpacking byte4 to short4 in the sampler currently involves reading 8 bytes,
- // and stencil operations also read 8 bytes per four 8-bit stencil values,
- // so we have to allocate 4 extra bytes to avoid buffer overruns.
- size += 4;
-
- // We can only sample buffers smaller than 2 GiB.
- // Force an out-of-memory if larger, or let the caller report an error.
- return size < 0x80000000u ? (size_t)size : std::numeric_limits<size_t>::max();
- }
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
- {
- width += 2 * border;
- height += 2 * border;
-
- size_t YStride = align<16>(width);
- size_t YSize = YStride * height;
- size_t CStride = align<16>(YStride / 2);
- size_t CSize = CStride * height / 2;
-
- return YSize + 2 * CSize;
- }
- }
- }
-
- bool Surface::isStencil(VkFormat format)
- {
- switch(format)
- {
- case VK_FORMAT_D16_UNORM_S8_UINT:
- case VK_FORMAT_D24_UNORM_S8_UINT:
- case VK_FORMAT_S8_UINT:
- case VK_FORMAT_D32_SFLOAT_S8_UINT:
- return true;
- case VK_FORMAT_D16_UNORM:
- case VK_FORMAT_X8_D24_UNORM_PACK32:
- case VK_FORMAT_D32_SFLOAT:
- default:
- return false;
- }
- }
-
- bool Surface::isDepth(VkFormat format)
- {
- switch(format)
- {
- case VK_FORMAT_D16_UNORM:
- case VK_FORMAT_D16_UNORM_S8_UINT:
- case VK_FORMAT_X8_D24_UNORM_PACK32:
- case VK_FORMAT_D24_UNORM_S8_UINT:
- case VK_FORMAT_D32_SFLOAT:
- case VK_FORMAT_D32_SFLOAT_S8_UINT:
- return true;
- case VK_FORMAT_S8_UINT:
- default:
- return false;
- }
- }
-
- bool Surface::hasQuadLayout(VkFormat format)
- {
- return false;
- }
-
- bool Surface::isFloatFormat(VkFormat format)
- {
- switch(format)
- {
- case VK_FORMAT_R4G4_UNORM_PACK8:
- case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
- case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- case VK_FORMAT_B5G6R5_UNORM_PACK16:
- case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
- case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
- case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
- case VK_FORMAT_R8_UNORM:
- case VK_FORMAT_R8_SNORM:
- case VK_FORMAT_R8_USCALED:
- case VK_FORMAT_R8_SSCALED:
- case VK_FORMAT_R8_UINT:
- case VK_FORMAT_R8_SINT:
- case VK_FORMAT_R8_SRGB:
- case VK_FORMAT_R8G8_UNORM:
- case VK_FORMAT_R8G8_SNORM:
- case VK_FORMAT_R8G8_USCALED:
- case VK_FORMAT_R8G8_SSCALED:
- case VK_FORMAT_R8G8_UINT:
- case VK_FORMAT_R8G8_SINT:
- case VK_FORMAT_R8G8_SRGB:
- case VK_FORMAT_R8G8B8_UNORM:
- case VK_FORMAT_R8G8B8_SNORM:
- case VK_FORMAT_R8G8B8_USCALED:
- case VK_FORMAT_R8G8B8_SSCALED:
- case VK_FORMAT_R8G8B8_UINT:
- case VK_FORMAT_R8G8B8_SINT:
- case VK_FORMAT_R8G8B8_SRGB:
- case VK_FORMAT_B8G8R8_UNORM:
- case VK_FORMAT_B8G8R8_SNORM:
- case VK_FORMAT_B8G8R8_USCALED:
- case VK_FORMAT_B8G8R8_SSCALED:
- case VK_FORMAT_B8G8R8_UINT:
- case VK_FORMAT_B8G8R8_SINT:
- case VK_FORMAT_B8G8R8_SRGB:
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SNORM:
- case VK_FORMAT_R8G8B8A8_USCALED:
- case VK_FORMAT_R8G8B8A8_SSCALED:
- case VK_FORMAT_R8G8B8A8_UINT:
- case VK_FORMAT_R8G8B8A8_SINT:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_B8G8R8A8_SNORM:
- case VK_FORMAT_B8G8R8A8_USCALED:
- case VK_FORMAT_B8G8R8A8_SSCALED:
- case VK_FORMAT_B8G8R8A8_UINT:
- case VK_FORMAT_B8G8R8A8_SINT:
- case VK_FORMAT_B8G8R8A8_SRGB:
- case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
- case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
- case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
- case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
- case VK_FORMAT_A8B8G8R8_UINT_PACK32:
- case VK_FORMAT_A8B8G8R8_SINT_PACK32:
- case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
- case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
- case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
- case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
- case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
- case VK_FORMAT_A2R10G10B10_UINT_PACK32:
- case VK_FORMAT_A2R10G10B10_SINT_PACK32:
- case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
- case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
- case VK_FORMAT_A2B10G10R10_UINT_PACK32:
- case VK_FORMAT_A2B10G10R10_SINT_PACK32:
- case VK_FORMAT_R16_UNORM:
- case VK_FORMAT_R16_SNORM:
- case VK_FORMAT_R16_USCALED:
- case VK_FORMAT_R16_SSCALED:
- case VK_FORMAT_R16_UINT:
- case VK_FORMAT_R16_SINT:
- case VK_FORMAT_R16G16_UNORM:
- case VK_FORMAT_R16G16_SNORM:
- case VK_FORMAT_R16G16_USCALED:
- case VK_FORMAT_R16G16_SSCALED:
- case VK_FORMAT_R16G16_UINT:
- case VK_FORMAT_R16G16_SINT:
- case VK_FORMAT_R16G16B16_UNORM:
- case VK_FORMAT_R16G16B16_SNORM:
- case VK_FORMAT_R16G16B16_USCALED:
- case VK_FORMAT_R16G16B16_SSCALED:
- case VK_FORMAT_R16G16B16_UINT:
- case VK_FORMAT_R16G16B16_SINT:
- case VK_FORMAT_R16G16B16A16_UNORM:
- case VK_FORMAT_R16G16B16A16_SNORM:
- case VK_FORMAT_R16G16B16A16_USCALED:
- case VK_FORMAT_R16G16B16A16_SSCALED:
- case VK_FORMAT_R16G16B16A16_UINT:
- case VK_FORMAT_R16G16B16A16_SINT:
- case VK_FORMAT_R32_UINT:
- case VK_FORMAT_R32_SINT:
- case VK_FORMAT_R32G32_UINT:
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32B32_UINT:
- case VK_FORMAT_R32G32B32_SINT:
- case VK_FORMAT_R32G32B32A32_UINT:
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R64_UINT:
- case VK_FORMAT_R64_SINT:
- case VK_FORMAT_R64G64_UINT:
- case VK_FORMAT_R64G64_SINT:
- case VK_FORMAT_R64G64B64_UINT:
- case VK_FORMAT_R64G64B64_SINT:
- case VK_FORMAT_R64G64B64A64_UINT:
- case VK_FORMAT_R64G64B64A64_SINT:
- case VK_FORMAT_D16_UNORM:
- case VK_FORMAT_X8_D24_UNORM_PACK32:
- case VK_FORMAT_S8_UINT:
- case VK_FORMAT_D16_UNORM_S8_UINT:
- case VK_FORMAT_D24_UNORM_S8_UINT:
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
- return false;
- case VK_FORMAT_R16_SFLOAT:
- case VK_FORMAT_R16G16_SFLOAT:
- case VK_FORMAT_R16G16B16_SFLOAT:
- case VK_FORMAT_R16G16B16A16_SFLOAT:
- case VK_FORMAT_R32_SFLOAT:
- case VK_FORMAT_R32G32_SFLOAT:
- case VK_FORMAT_R32G32B32_SFLOAT:
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- case VK_FORMAT_R64_SFLOAT:
- case VK_FORMAT_R64G64_SFLOAT:
- case VK_FORMAT_R64G64B64_SFLOAT:
- case VK_FORMAT_R64G64B64A64_SFLOAT:
- case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
- case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
- case VK_FORMAT_D32_SFLOAT:
- case VK_FORMAT_D32_SFLOAT_S8_UINT:
- return true;
- default:
- ASSERT(false);
- }
-
- return false;
- }
-
- bool Surface::isUnsignedComponent(VkFormat format, int component)
- {
- switch(format)
- {
- case VK_FORMAT_UNDEFINED:
- case VK_FORMAT_R4G4_UNORM_PACK8:
- case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
- case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- case VK_FORMAT_B5G6R5_UNORM_PACK16:
- case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
- case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
- case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
- case VK_FORMAT_R8_UNORM:
- case VK_FORMAT_R8_UINT:
- case VK_FORMAT_R8_SRGB:
- case VK_FORMAT_R8G8_UNORM:
- case VK_FORMAT_R8G8_USCALED:
- case VK_FORMAT_R8G8_UINT:
- case VK_FORMAT_R8G8_SRGB:
- case VK_FORMAT_R8G8B8_UNORM:
- case VK_FORMAT_R8G8B8_USCALED:
- case VK_FORMAT_R8G8B8_UINT:
- case VK_FORMAT_R8G8B8_SRGB:
- case VK_FORMAT_B8G8R8_UNORM:
- case VK_FORMAT_B8G8R8_USCALED:
- case VK_FORMAT_B8G8R8_UINT:
- case VK_FORMAT_B8G8R8_SRGB:
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_USCALED:
- case VK_FORMAT_R8G8B8A8_UINT:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_B8G8R8A8_USCALED:
- case VK_FORMAT_B8G8R8A8_UINT:
- case VK_FORMAT_B8G8R8A8_SRGB:
- case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
- case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
- case VK_FORMAT_A8B8G8R8_UINT_PACK32:
- case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
- case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
- case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
- case VK_FORMAT_A2R10G10B10_UINT_PACK32:
- case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
- case VK_FORMAT_A2B10G10R10_UINT_PACK32:
- case VK_FORMAT_R16_UNORM:
- case VK_FORMAT_R16_USCALED:
- case VK_FORMAT_R16_UINT:
- case VK_FORMAT_R16G16_UNORM:
- case VK_FORMAT_R16G16_USCALED:
- case VK_FORMAT_R16G16_UINT:
- case VK_FORMAT_R16G16B16_UNORM:
- case VK_FORMAT_R16G16B16_USCALED:
- case VK_FORMAT_R16G16B16_UINT:
- case VK_FORMAT_R16G16B16A16_UNORM:
- case VK_FORMAT_R16G16B16A16_USCALED:
- case VK_FORMAT_R16G16B16A16_UINT:
- case VK_FORMAT_R32_UINT:
- case VK_FORMAT_R32G32_UINT:
- case VK_FORMAT_R32G32B32_UINT:
- case VK_FORMAT_R32G32B32A32_UINT:
- case VK_FORMAT_R64_UINT:
- case VK_FORMAT_R64G64_UINT:
- case VK_FORMAT_R64G64B64_UINT:
- case VK_FORMAT_R64G64B64A64_UINT:
- case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
- case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
- case VK_FORMAT_D16_UNORM:
- case VK_FORMAT_X8_D24_UNORM_PACK32:
- case VK_FORMAT_S8_UINT:
- case VK_FORMAT_D16_UNORM_S8_UINT:
- case VK_FORMAT_D24_UNORM_S8_UINT:
- case VK_FORMAT_D32_SFLOAT:
- case VK_FORMAT_D32_SFLOAT_S8_UINT:
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
- return true;
- case VK_FORMAT_R8G8B8A8_SNORM:
- case VK_FORMAT_R8G8B8A8_SSCALED:
- case VK_FORMAT_R8G8B8A8_SINT:
- case VK_FORMAT_B8G8R8A8_SNORM:
- case VK_FORMAT_B8G8R8A8_SSCALED:
- case VK_FORMAT_B8G8R8A8_SINT:
- case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
- case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
- case VK_FORMAT_A8B8G8R8_SINT_PACK32:
- case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
- case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
- case VK_FORMAT_A2R10G10B10_SINT_PACK32:
- case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
- case VK_FORMAT_A2B10G10R10_SINT_PACK32:
- case VK_FORMAT_R16G16B16A16_SNORM:
- case VK_FORMAT_R16G16B16A16_SSCALED:
- case VK_FORMAT_R16G16B16A16_SINT:
- case VK_FORMAT_R16G16B16A16_SFLOAT:
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- case VK_FORMAT_R64G64B64A64_SINT:
- case VK_FORMAT_R64G64B64A64_SFLOAT:
- return false;
- case VK_FORMAT_R8_SNORM:
- case VK_FORMAT_R8_USCALED:
- case VK_FORMAT_R8_SSCALED:
- case VK_FORMAT_R8_SINT:
- case VK_FORMAT_R16_SNORM:
- case VK_FORMAT_R16_SSCALED:
- case VK_FORMAT_R16_SINT:
- case VK_FORMAT_R16_SFLOAT:
- case VK_FORMAT_R32_SINT:
- case VK_FORMAT_R32_SFLOAT:
- case VK_FORMAT_R64_SINT:
- case VK_FORMAT_R64_SFLOAT:
- return component >= 1;
- case VK_FORMAT_R8G8_SNORM:
- case VK_FORMAT_R8G8_SSCALED:
- case VK_FORMAT_R8G8_SINT:
- case VK_FORMAT_R16G16_SNORM:
- case VK_FORMAT_R16G16_SSCALED:
- case VK_FORMAT_R16G16_SINT:
- case VK_FORMAT_R16G16_SFLOAT:
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32_SFLOAT:
- case VK_FORMAT_R64G64_SINT:
- case VK_FORMAT_R64G64_SFLOAT:
- return component >= 2;
- case VK_FORMAT_R8G8B8_SNORM:
- case VK_FORMAT_R8G8B8_SSCALED:
- case VK_FORMAT_R8G8B8_SINT:
- case VK_FORMAT_B8G8R8_SNORM:
- case VK_FORMAT_B8G8R8_SSCALED:
- case VK_FORMAT_B8G8R8_SINT:
- case VK_FORMAT_R16G16B16_SNORM:
- case VK_FORMAT_R16G16B16_SSCALED:
- case VK_FORMAT_R16G16B16_SINT:
- case VK_FORMAT_R16G16B16_SFLOAT:
- case VK_FORMAT_R32G32B32_SINT:
- case VK_FORMAT_R32G32B32_SFLOAT:
- case VK_FORMAT_R64G64B64_SINT:
- case VK_FORMAT_R64G64B64_SFLOAT:
- return component >= 3;
- default:
- ASSERT(false);
- }
-
- return false;
- }
-
- bool Surface::isSRGBreadable(VkFormat format)
- {
- // Keep in sync with Capabilities::isSRGBreadable
- switch(format)
- {
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
- return true;
- default:
- return false;
- }
- }
-
- bool Surface::isSRGBwritable(VkFormat format)
- {
- // Keep in sync with Capabilities::isSRGBwritable
- switch(format)
- {
- case VK_FORMAT_UNDEFINED:
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- return true;
- default:
- return false;
- }
- }
-
- bool Surface::isSRGBformat(VkFormat format)
- {
- switch(format)
- {
- case VK_FORMAT_R8_SRGB:
- case VK_FORMAT_R8G8_SRGB:
- case VK_FORMAT_R8G8B8_SRGB:
- case VK_FORMAT_B8G8R8_SRGB:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_B8G8R8A8_SRGB:
- case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
- return true;
- default:
- return false;
- }
- }
-
- bool Surface::isCompressed(VkFormat format)
- {
- switch(format)
- {
- case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
- case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
- case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
- case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
- case VK_FORMAT_BC2_UNORM_BLOCK:
- case VK_FORMAT_BC2_SRGB_BLOCK:
- case VK_FORMAT_BC3_UNORM_BLOCK:
- case VK_FORMAT_BC3_SRGB_BLOCK:
- case VK_FORMAT_BC4_UNORM_BLOCK:
- case VK_FORMAT_BC4_SNORM_BLOCK:
- case VK_FORMAT_BC5_UNORM_BLOCK:
- case VK_FORMAT_BC5_SNORM_BLOCK:
- case VK_FORMAT_BC6H_UFLOAT_BLOCK:
- case VK_FORMAT_BC6H_SFLOAT_BLOCK:
- case VK_FORMAT_BC7_UNORM_BLOCK:
- case VK_FORMAT_BC7_SRGB_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
- case VK_FORMAT_EAC_R11_UNORM_BLOCK:
- case VK_FORMAT_EAC_R11_SNORM_BLOCK:
- case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
- case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
- case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
- case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
- case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
- case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
- case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
- case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
- case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
- case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
- case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
- return true;
- default:
- return false;
- }
- }
-
- bool Surface::isSignedNonNormalizedInteger(VkFormat format)
- {
- switch(format)
- {
- case VK_FORMAT_R8_SINT:
- case VK_FORMAT_R8G8_SINT:
- case VK_FORMAT_R8G8B8_SINT:
- case VK_FORMAT_B8G8R8_SINT:
- case VK_FORMAT_R8G8B8A8_SINT:
- case VK_FORMAT_B8G8R8A8_SINT:
- case VK_FORMAT_A8B8G8R8_SINT_PACK32:
- case VK_FORMAT_A2R10G10B10_SINT_PACK32:
- case VK_FORMAT_A2B10G10R10_SINT_PACK32:
- case VK_FORMAT_R16_SINT:
- case VK_FORMAT_R16G16_SINT:
- case VK_FORMAT_R16G16B16_SINT:
- case VK_FORMAT_R16G16B16A16_SINT:
- case VK_FORMAT_R32_SINT:
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32B32_SINT:
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R64_SINT:
- case VK_FORMAT_R64G64_SINT:
- case VK_FORMAT_R64G64B64_SINT:
- case VK_FORMAT_R64G64B64A64_SINT:
- return true;
- default:
- return false;
- }
- }
-
- bool Surface::isUnsignedNonNormalizedInteger(VkFormat format)
- {
- switch(format)
- {
- case VK_FORMAT_R8_UINT:
- case VK_FORMAT_R8G8_UINT:
- case VK_FORMAT_R8G8B8_UINT:
- case VK_FORMAT_B8G8R8_UINT:
- case VK_FORMAT_R8G8B8A8_UINT:
- case VK_FORMAT_B8G8R8A8_UINT:
- case VK_FORMAT_A8B8G8R8_UINT_PACK32:
- case VK_FORMAT_A2R10G10B10_UINT_PACK32:
- case VK_FORMAT_A2B10G10R10_UINT_PACK32:
- case VK_FORMAT_R16_UINT:
- case VK_FORMAT_R16G16_UINT:
- case VK_FORMAT_R16G16B16_UINT:
- case VK_FORMAT_R16G16B16A16_UINT:
- case VK_FORMAT_R32_UINT:
- case VK_FORMAT_R32G32_UINT:
- case VK_FORMAT_R32G32B32_UINT:
- case VK_FORMAT_R32G32B32A32_UINT:
- case VK_FORMAT_R64_UINT:
- case VK_FORMAT_R64G64_UINT:
- case VK_FORMAT_R64G64B64_UINT:
- case VK_FORMAT_R64G64B64A64_UINT:
- return true;
- default:
- return false;
- }
- }
-
- bool Surface::isNonNormalizedInteger(VkFormat format)
- {
- return isSignedNonNormalizedInteger(format) ||
- isUnsignedNonNormalizedInteger(format);
- }
-
- bool Surface::isNormalizedInteger(VkFormat format)
- {
- return !isFloatFormat(format) &&
- !isNonNormalizedInteger(format) &&
- !isCompressed(format) &&
- !isDepth(format) &&
- !isStencil(format);
- }
-
- int Surface::componentCount(VkFormat format)
- {
- switch(format)
- {
- case VK_FORMAT_R8_UNORM:
- case VK_FORMAT_R8_SNORM:
- case VK_FORMAT_R8_USCALED:
- case VK_FORMAT_R8_SSCALED:
- case VK_FORMAT_R8_UINT:
- case VK_FORMAT_R8_SINT:
- case VK_FORMAT_R8_SRGB:
- case VK_FORMAT_R16_UNORM:
- case VK_FORMAT_R16_SNORM:
- case VK_FORMAT_R16_USCALED:
- case VK_FORMAT_R16_SSCALED:
- case VK_FORMAT_R16_UINT:
- case VK_FORMAT_R16_SINT:
- case VK_FORMAT_R16_SFLOAT:
- case VK_FORMAT_R32_UINT:
- case VK_FORMAT_R32_SINT:
- case VK_FORMAT_R32_SFLOAT:
- case VK_FORMAT_R64_UINT:
- case VK_FORMAT_R64_SINT:
- case VK_FORMAT_R64_SFLOAT:
- case VK_FORMAT_D16_UNORM:
- case VK_FORMAT_X8_D24_UNORM_PACK32:
- case VK_FORMAT_D32_SFLOAT:
- case VK_FORMAT_S8_UINT:
- case VK_FORMAT_D16_UNORM_S8_UINT:
- case VK_FORMAT_D24_UNORM_S8_UINT:
- case VK_FORMAT_D32_SFLOAT_S8_UINT:
- return 1;
- case VK_FORMAT_R4G4_UNORM_PACK8:
- case VK_FORMAT_R8G8_UNORM:
- case VK_FORMAT_R8G8_SNORM:
- case VK_FORMAT_R8G8_USCALED:
- case VK_FORMAT_R8G8_SSCALED:
- case VK_FORMAT_R8G8_UINT:
- case VK_FORMAT_R8G8_SINT:
- case VK_FORMAT_R8G8_SRGB:
- case VK_FORMAT_R16G16_UNORM:
- case VK_FORMAT_R16G16_SNORM:
- case VK_FORMAT_R16G16_USCALED:
- case VK_FORMAT_R16G16_SSCALED:
- case VK_FORMAT_R16G16_UINT:
- case VK_FORMAT_R16G16_SINT:
- case VK_FORMAT_R16G16_SFLOAT:
- case VK_FORMAT_R32G32_UINT:
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32_SFLOAT:
- case VK_FORMAT_R64G64_UINT:
- case VK_FORMAT_R64G64_SINT:
- case VK_FORMAT_R64G64_SFLOAT:
- return 2;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- case VK_FORMAT_B5G6R5_UNORM_PACK16:
- case VK_FORMAT_R8G8B8_UNORM:
- case VK_FORMAT_R8G8B8_SNORM:
- case VK_FORMAT_R8G8B8_USCALED:
- case VK_FORMAT_R8G8B8_SSCALED:
- case VK_FORMAT_R8G8B8_UINT:
- case VK_FORMAT_R8G8B8_SINT:
- case VK_FORMAT_R8G8B8_SRGB:
- case VK_FORMAT_B8G8R8_UNORM:
- case VK_FORMAT_B8G8R8_SNORM:
- case VK_FORMAT_B8G8R8_USCALED:
- case VK_FORMAT_B8G8R8_SSCALED:
- case VK_FORMAT_B8G8R8_UINT:
- case VK_FORMAT_B8G8R8_SINT:
- case VK_FORMAT_B8G8R8_SRGB:
- case VK_FORMAT_R16G16B16_UNORM:
- case VK_FORMAT_R16G16B16_SNORM:
- case VK_FORMAT_R16G16B16_USCALED:
- case VK_FORMAT_R16G16B16_SSCALED:
- case VK_FORMAT_R16G16B16_UINT:
- case VK_FORMAT_R16G16B16_SINT:
- case VK_FORMAT_R16G16B16_SFLOAT:
- case VK_FORMAT_R32G32B32_UINT:
- case VK_FORMAT_R32G32B32_SINT:
- case VK_FORMAT_R32G32B32_SFLOAT:
- case VK_FORMAT_R64G64B64_UINT:
- case VK_FORMAT_R64G64B64_SINT:
- case VK_FORMAT_R64G64B64_SFLOAT:
- case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
- case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
- return 3;
- case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
- case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
- case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
- case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
- case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SNORM:
- case VK_FORMAT_R8G8B8A8_USCALED:
- case VK_FORMAT_R8G8B8A8_SSCALED:
- case VK_FORMAT_R8G8B8A8_UINT:
- case VK_FORMAT_R8G8B8A8_SINT:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_B8G8R8A8_SNORM:
- case VK_FORMAT_B8G8R8A8_USCALED:
- case VK_FORMAT_B8G8R8A8_SSCALED:
- case VK_FORMAT_B8G8R8A8_UINT:
- case VK_FORMAT_B8G8R8A8_SINT:
- case VK_FORMAT_B8G8R8A8_SRGB:
- case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
- case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
- case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
- case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
- case VK_FORMAT_A8B8G8R8_UINT_PACK32:
- case VK_FORMAT_A8B8G8R8_SINT_PACK32:
- case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
- case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
- case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
- case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
- case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
- case VK_FORMAT_A2R10G10B10_UINT_PACK32:
- case VK_FORMAT_A2R10G10B10_SINT_PACK32:
- case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
- case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
- case VK_FORMAT_A2B10G10R10_UINT_PACK32:
- case VK_FORMAT_A2B10G10R10_SINT_PACK32:
- case VK_FORMAT_R16G16B16A16_UNORM:
- case VK_FORMAT_R16G16B16A16_SNORM:
- case VK_FORMAT_R16G16B16A16_USCALED:
- case VK_FORMAT_R16G16B16A16_SSCALED:
- case VK_FORMAT_R16G16B16A16_UINT:
- case VK_FORMAT_R16G16B16A16_SINT:
- case VK_FORMAT_R16G16B16A16_SFLOAT:
- case VK_FORMAT_R32G32B32A32_UINT:
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- case VK_FORMAT_R64G64B64A64_UINT:
- case VK_FORMAT_R64G64B64A64_SINT:
- case VK_FORMAT_R64G64B64A64_SFLOAT:
- return 4;
- default:
- ASSERT(false);
- }
-
- return 1;
- }
-
- void *Surface::allocateBuffer(int width, int height, int depth, int border, int samples, VkFormat format)
- {
- return allocate(size(width, height, depth, border, samples, format));
- }
-
- void Surface::memfill4(void *buffer, int pattern, int bytes)
- {
- while((size_t)buffer & 0x1 && bytes >= 1)
- {
- *(char*)buffer = (char)pattern;
- (char*&)buffer += 1;
- bytes -= 1;
- }
-
- while((size_t)buffer & 0x3 && bytes >= 2)
- {
- *(short*)buffer = (short)pattern;
- (short*&)buffer += 1;
- bytes -= 2;
- }
-
- #if defined(__i386__) || defined(__x86_64__)
- if(CPUID::supportsSSE())
- {
- while((size_t)buffer & 0xF && bytes >= 4)
- {
- *(int*)buffer = pattern;
- (int*&)buffer += 1;
- bytes -= 4;
- }
-
- __m128 quad = _mm_set_ps1((float&)pattern);
-
- float *pointer = (float*)buffer;
- int qxwords = bytes / 64;
- bytes -= qxwords * 64;
-
- while(qxwords--)
- {
- _mm_stream_ps(pointer + 0, quad);
- _mm_stream_ps(pointer + 4, quad);
- _mm_stream_ps(pointer + 8, quad);
- _mm_stream_ps(pointer + 12, quad);
-
- pointer += 16;
- }
-
- buffer = pointer;
- }
- #endif
-
- while(bytes >= 4)
- {
- *(int*)buffer = (int)pattern;
- (int*&)buffer += 1;
- bytes -= 4;
- }
-
- while(bytes >= 2)
- {
- *(short*)buffer = (short)pattern;
- (short*&)buffer += 1;
- bytes -= 2;
- }
-
- while(bytes >= 1)
- {
- *(char*)buffer = (char)pattern;
- (char*&)buffer += 1;
- bytes -= 1;
- }
- }
-
- void Surface::sync()
- {
- resource->lock(EXCLUSIVE);
- resource->unlock();
- }
-
- bool Surface::isEntire(const Rect& rect) const
- {
- return (rect.x0 == 0 && rect.y0 == 0 && rect.x1 == internal.width && rect.y1 == internal.height && internal.depth == 1);
- }
-
- Rect Surface::getRect() const
- {
- return Rect(0, 0, internal.width, internal.height);
- }
-
- void Surface::clearDepth(float depth, int x0, int y0, int width, int height)
- {
- if(width == 0 || height == 0)
- {
- return;
- }
-
- if(internal.format == VK_FORMAT_UNDEFINED)
- {
- return;
- }
-
- // Not overlapping
- if(x0 > internal.width) return;
- if(y0 > internal.height) return;
- if(x0 + width < 0) return;
- if(y0 + height < 0) return;
-
- // Clip against dimensions
- if(x0 < 0) {width += x0; x0 = 0;}
- if(x0 + width > internal.width) width = internal.width - x0;
- if(y0 < 0) {height += y0; y0 = 0;}
- if(y0 + height > internal.height) height = internal.height - y0;
-
- const bool entire = x0 == 0 && y0 == 0 && width == internal.width && height == internal.height;
- const Lock lock = entire ? LOCK_DISCARD : LOCK_WRITEONLY;
-
- int x1 = x0 + width;
- int y1 = y0 + height;
-
- if(!hasQuadLayout(internal.format))
- {
- float *target = (float*)lockInternal(x0, y0, 0, lock, PUBLIC);
-
- for(int z = 0; z < internal.samples; z++)
- {
- float *row = target;
- for(int y = y0; y < y1; y++)
- {
- memfill4(row, (int&)depth, width * sizeof(float));
- row += internal.pitchP;
- }
- target += internal.sliceP;
- }
-
- unlockInternal();
- }
- else // Quad layout
- {
- if(complementaryDepthBuffer)
- {
- depth = 1 - depth;
- }
-
- float *buffer = (float*)lockInternal(0, 0, 0, lock, PUBLIC);
-
- int oddX0 = (x0 & ~1) * 2 + (x0 & 1);
- int oddX1 = (x1 & ~1) * 2;
- int evenX0 = ((x0 + 1) & ~1) * 2;
- int evenBytes = (oddX1 - evenX0) * sizeof(float);
-
- for(int z = 0; z < internal.samples; z++)
- {
- for(int y = y0; y < y1; y++)
- {
- float *target = buffer + (y & ~1) * internal.pitchP + (y & 1) * 2;
-
- if((y & 1) == 0 && y + 1 < y1) // Fill quad line at once
- {
- if((x0 & 1) != 0)
- {
- target[oddX0 + 0] = depth;
- target[oddX0 + 2] = depth;
- }
-
- // for(int x2 = evenX0; x2 < x1 * 2; x2 += 4)
- // {
- // target[x2 + 0] = depth;
- // target[x2 + 1] = depth;
- // target[x2 + 2] = depth;
- // target[x2 + 3] = depth;
- // }
-
- // __asm
- // {
- // movss xmm0, depth
- // shufps xmm0, xmm0, 0x00
- //
- // mov eax, x0
- // add eax, 1
- // and eax, 0xFFFFFFFE
- // cmp eax, x1
- // jge qEnd
- //
- // mov edi, target
- //
- // qLoop:
- // movntps [edi+8*eax], xmm0
- //
- // add eax, 2
- // cmp eax, x1
- // jl qLoop
- // qEnd:
- // }
-
- memfill4(&target[evenX0], (int&)depth, evenBytes);
-
- if((x1 & 1) != 0)
- {
- target[oddX1 + 0] = depth;
- target[oddX1 + 2] = depth;
- }
-
- y++;
- }
- else
- {
- for(int x = x0, i = oddX0; x < x1; x++, i = (x & ~1) * 2 + (x & 1))
- {
- target[i] = depth;
- }
- }
- }
-
- buffer += internal.sliceP;
- }
-
- unlockInternal();
- }
- }
-
- void Surface::clearStencil(unsigned char s, unsigned char mask, int x0, int y0, int width, int height)
- {
- if(mask == 0 || width == 0 || height == 0)
- {
- return;
- }
-
- if(stencil.format == VK_FORMAT_UNDEFINED)
- {
- return;
- }
-
- // Not overlapping
- if(x0 > internal.width) return;
- if(y0 > internal.height) return;
- if(x0 + width < 0) return;
- if(y0 + height < 0) return;
-
- // Clip against dimensions
- if(x0 < 0) {width += x0; x0 = 0;}
- if(x0 + width > internal.width) width = internal.width - x0;
- if(y0 < 0) {height += y0; y0 = 0;}
- if(y0 + height > internal.height) height = internal.height - y0;
-
- int x1 = x0 + width;
- int y1 = y0 + height;
-
- int oddX0 = (x0 & ~1) * 2 + (x0 & 1);
- int oddX1 = (x1 & ~1) * 2;
- int evenX0 = ((x0 + 1) & ~1) * 2;
- int evenBytes = oddX1 - evenX0;
-
- unsigned char maskedS = s & mask;
- unsigned char invMask = ~mask;
- unsigned int fill = maskedS;
- fill = fill | (fill << 8) | (fill << 16) | (fill << 24);
-
- char *buffer = (char*)lockStencil(0, 0, 0, PUBLIC);
-
- // Stencil buffers are assumed to use quad layout
- for(int z = 0; z < stencil.samples; z++)
- {
- for(int y = y0; y < y1; y++)
- {
- char *target = buffer + (y & ~1) * stencil.pitchP + (y & 1) * 2;
-
- if((y & 1) == 0 && y + 1 < y1 && mask == 0xFF) // Fill quad line at once
- {
- if((x0 & 1) != 0)
- {
- target[oddX0 + 0] = fill;
- target[oddX0 + 2] = fill;
- }
-
- memfill4(&target[evenX0], fill, evenBytes);
-
- if((x1 & 1) != 0)
- {
- target[oddX1 + 0] = fill;
- target[oddX1 + 2] = fill;
- }
-
- y++;
- }
- else
- {
- for(int x = x0; x < x1; x++)
- {
- int i = (x & ~1) * 2 + (x & 1);
- target[i] = maskedS | (target[i] & invMask);
- }
- }
- }
-
- buffer += stencil.sliceP;
- }
-
- unlockStencil();
- }
-
- void Surface::fill(const Color<float> &color, int x0, int y0, int width, int height)
- {
- unsigned char *row;
- Buffer *buffer;
-
- if(internal.dirty)
- {
- row = (unsigned char*)lockInternal(x0, y0, 0, LOCK_WRITEONLY, PUBLIC);
- buffer = &internal;
- }
- else
- {
- row = (unsigned char*)lockExternal(x0, y0, 0, LOCK_WRITEONLY, PUBLIC);
- buffer = &external;
- }
-
- if(buffer->bytes <= 4)
- {
- int c;
- buffer->write(&c, color);
-
- if(buffer->bytes <= 1) c = (c << 8) | c;
- if(buffer->bytes <= 2) c = (c << 16) | c;
-
- for(int y = 0; y < height; y++)
- {
- memfill4(row, c, width * buffer->bytes);
-
- row += buffer->pitchB;
- }
- }
- else // Generic
- {
- for(int y = 0; y < height; y++)
- {
- unsigned char *element = row;
-
- for(int x = 0; x < width; x++)
- {
- buffer->write(element, color);
-
- element += buffer->bytes;
- }
-
- row += buffer->pitchB;
- }
- }
-
- if(buffer == &internal)
- {
- unlockInternal();
- }
- else
- {
- unlockExternal();
- }
- }
-
- void Surface::copyInternal(const Surface *source, int x, int y, float srcX, float srcY, bool filter)
- {
- ASSERT(internal.lock != LOCK_UNLOCKED && source && source->internal.lock != LOCK_UNLOCKED);
-
- sw::Color<float> color;
-
- if(!filter)
- {
- color = source->internal.read((int)srcX, (int)srcY, 0);
- }
- else // Bilinear filtering
- {
- color = source->internal.sample(srcX, srcY, 0);
- }
-
- internal.write(x, y, color);
- }
-
- void Surface::copyInternal(const Surface *source, int x, int y, int z, float srcX, float srcY, float srcZ, bool filter)
- {
- ASSERT(internal.lock != LOCK_UNLOCKED && source && source->internal.lock != LOCK_UNLOCKED);
-
- sw::Color<float> color;
-
- if(!filter)
- {
- color = source->internal.read((int)srcX, (int)srcY, int(srcZ));
- }
- else // Bilinear filtering
- {
- color = source->internal.sample(srcX, srcY, srcZ);
- }
-
- internal.write(x, y, z, color);
- }
-
- void Surface::copyCubeEdge(Edge dstEdge, Surface *src, Edge srcEdge)
- {
- Surface *dst = this;
-
- // Figure out if the edges to be copied in reverse order respectively from one another
- // The copy should be reversed whenever the same edges are contiguous or if we're
- // copying top <-> right or bottom <-> left. This is explained by the layout, which is:
- //
- // | +y |
- // | -x | +z | +x | -z |
- // | -y |
-
- bool reverse = (srcEdge == dstEdge) ||
- ((srcEdge == TOP) && (dstEdge == RIGHT)) ||
- ((srcEdge == RIGHT) && (dstEdge == TOP)) ||
- ((srcEdge == BOTTOM) && (dstEdge == LEFT)) ||
- ((srcEdge == LEFT) && (dstEdge == BOTTOM));
-
- int srcBytes = src->bytes(src->Surface::getInternalFormat());
- int srcPitch = src->getInternalPitchB();
- int dstBytes = dst->bytes(dst->Surface::getInternalFormat());
- int dstPitch = dst->getInternalPitchB();
-
- int srcW = src->getWidth();
- int srcH = src->getHeight();
- int dstW = dst->getWidth();
- int dstH = dst->getHeight();
-
- ASSERT(srcW == srcH && dstW == dstH && srcW == dstW && srcBytes == dstBytes);
-
- // Src is expressed in the regular [0, width-1], [0, height-1] space
- int srcDelta = ((srcEdge == TOP) || (srcEdge == BOTTOM)) ? srcBytes : srcPitch;
- int srcStart = ((srcEdge == BOTTOM) ? srcPitch * (srcH - 1) : ((srcEdge == RIGHT) ? srcBytes * (srcW - 1) : 0));
-
- // Dst contains borders, so it is expressed in the [-1, width+1], [-1, height+1] space
- int dstDelta = (((dstEdge == TOP) || (dstEdge == BOTTOM)) ? dstBytes : dstPitch) * (reverse ? -1 : 1);
- int dstStart = ((dstEdge == BOTTOM) ? dstPitch * (dstH + 1) : ((dstEdge == RIGHT) ? dstBytes * (dstW + 1) : 0)) + (reverse ? dstW * -dstDelta : dstDelta);
-
- char *srcBuf = (char*)src->lockInternal(0, 0, 0, sw::LOCK_READONLY, sw::PRIVATE) + srcStart;
- char *dstBuf = (char*)dst->lockInternal(-1, -1, 0, sw::LOCK_READWRITE, sw::PRIVATE) + dstStart;
-
- for(int i = 0; i < srcW; ++i, dstBuf += dstDelta, srcBuf += srcDelta)
- {
- memcpy(dstBuf, srcBuf, srcBytes);
- }
-
- if(dstEdge == LEFT || dstEdge == RIGHT)
- {
- // TOP and BOTTOM are already set, let's average out the corners
- int x0 = (dstEdge == RIGHT) ? dstW : -1;
- int y0 = -1;
- int x1 = (dstEdge == RIGHT) ? dstW - 1 : 0;
- int y1 = 0;
- dst->computeCubeCorner(x0, y0, x1, y1);
- y0 = dstH;
- y1 = dstH - 1;
- dst->computeCubeCorner(x0, y0, x1, y1);
- }
-
- src->unlockInternal();
- dst->unlockInternal();
- }
-
- void Surface::computeCubeCorner(int x0, int y0, int x1, int y1)
- {
- ASSERT(internal.lock != LOCK_UNLOCKED);
-
- sw::Color<float> color = internal.read(x0, y1);
- color += internal.read(x1, y0);
- color += internal.read(x1, y1);
- color *= (1.0f / 3.0f);
-
- internal.write(x0, y0, color);
- }
-
- bool Surface::hasStencil() const
- {
- return isStencil(external.format);
- }
-
- bool Surface::hasDepth() const
- {
- return isDepth(external.format);
- }
-
- bool Surface::isRenderTarget() const
- {
- return renderTarget;
- }
-
- bool Surface::hasDirtyContents() const
- {
- return dirtyContents;
- }
-
- void Surface::markContentsClean()
- {
- dirtyContents = false;
- }
-
- Resource *Surface::getResource()
- {
- return resource;
- }
-
- bool Surface::identicalBuffers() const
- {
- return external.format == internal.format &&
- external.width == internal.width &&
- external.height == internal.height &&
- external.depth == internal.depth &&
- external.pitchB == internal.pitchB &&
- external.sliceB == internal.sliceB &&
- external.border == internal.border &&
- external.samples == internal.samples;
- }
-
- VkFormat Surface::selectInternalFormat(VkFormat format) const
- {
- switch(format)
- {
- case VK_FORMAT_UNDEFINED:
- case VK_FORMAT_R4G4_UNORM_PACK8:
- case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
- case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- case VK_FORMAT_B5G6R5_UNORM_PACK16:
- case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
- case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
- case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
- case VK_FORMAT_R8_UNORM:
- case VK_FORMAT_R8_SNORM:
- case VK_FORMAT_R8_USCALED:
- case VK_FORMAT_R8_SSCALED:
- case VK_FORMAT_R8_UINT:
- case VK_FORMAT_R8_SINT:
- case VK_FORMAT_R8_SRGB:
- case VK_FORMAT_R8G8_UNORM:
- case VK_FORMAT_R8G8_SNORM:
- case VK_FORMAT_R8G8_USCALED:
- case VK_FORMAT_R8G8_SSCALED:
- case VK_FORMAT_R8G8_UINT:
- case VK_FORMAT_R8G8_SINT:
- case VK_FORMAT_R8G8_SRGB:
- case VK_FORMAT_R8G8B8_UNORM:
- case VK_FORMAT_R8G8B8_SNORM:
- case VK_FORMAT_R8G8B8_USCALED:
- case VK_FORMAT_R8G8B8_SSCALED:
- case VK_FORMAT_R8G8B8_UINT:
- case VK_FORMAT_R8G8B8_SINT:
- case VK_FORMAT_R8G8B8_SRGB:
- case VK_FORMAT_B8G8R8_UNORM:
- case VK_FORMAT_B8G8R8_SNORM:
- case VK_FORMAT_B8G8R8_USCALED:
- case VK_FORMAT_B8G8R8_SSCALED:
- case VK_FORMAT_B8G8R8_UINT:
- case VK_FORMAT_B8G8R8_SINT:
- case VK_FORMAT_B8G8R8_SRGB:
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SNORM:
- case VK_FORMAT_R8G8B8A8_USCALED:
- case VK_FORMAT_R8G8B8A8_SSCALED:
- case VK_FORMAT_R8G8B8A8_UINT:
- case VK_FORMAT_R8G8B8A8_SINT:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_B8G8R8A8_SNORM:
- case VK_FORMAT_B8G8R8A8_USCALED:
- case VK_FORMAT_B8G8R8A8_SSCALED:
- case VK_FORMAT_B8G8R8A8_UINT:
- case VK_FORMAT_B8G8R8A8_SINT:
- case VK_FORMAT_B8G8R8A8_SRGB:
- case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
- case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
- case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
- case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
- case VK_FORMAT_A8B8G8R8_UINT_PACK32:
- case VK_FORMAT_A8B8G8R8_SINT_PACK32:
- case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
- case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
- case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
- case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
- case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
- case VK_FORMAT_A2R10G10B10_UINT_PACK32:
- case VK_FORMAT_A2R10G10B10_SINT_PACK32:
- case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
- case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
- case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
- case VK_FORMAT_A2B10G10R10_UINT_PACK32:
- case VK_FORMAT_A2B10G10R10_SINT_PACK32:
- case VK_FORMAT_R16_UNORM:
- case VK_FORMAT_R16_SNORM:
- case VK_FORMAT_R16_USCALED:
- case VK_FORMAT_R16_SSCALED:
- case VK_FORMAT_R16_UINT:
- case VK_FORMAT_R16_SINT:
- case VK_FORMAT_R16_SFLOAT:
- case VK_FORMAT_R16G16_UNORM:
- case VK_FORMAT_R16G16_SNORM:
- case VK_FORMAT_R16G16_USCALED:
- case VK_FORMAT_R16G16_SSCALED:
- case VK_FORMAT_R16G16_UINT:
- case VK_FORMAT_R16G16_SINT:
- case VK_FORMAT_R16G16_SFLOAT:
- case VK_FORMAT_R16G16B16_UNORM:
- case VK_FORMAT_R16G16B16_SNORM:
- case VK_FORMAT_R16G16B16_USCALED:
- case VK_FORMAT_R16G16B16_SSCALED:
- case VK_FORMAT_R16G16B16_UINT:
- case VK_FORMAT_R16G16B16_SINT:
- case VK_FORMAT_R16G16B16_SFLOAT:
- case VK_FORMAT_R16G16B16A16_UNORM:
- case VK_FORMAT_R16G16B16A16_SNORM:
- case VK_FORMAT_R16G16B16A16_USCALED:
- case VK_FORMAT_R16G16B16A16_SSCALED:
- case VK_FORMAT_R16G16B16A16_UINT:
- case VK_FORMAT_R16G16B16A16_SINT:
- case VK_FORMAT_R16G16B16A16_SFLOAT:
- case VK_FORMAT_R32_UINT:
- case VK_FORMAT_R32_SINT:
- case VK_FORMAT_R32_SFLOAT:
- case VK_FORMAT_R32G32_UINT:
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32_SFLOAT:
- case VK_FORMAT_R32G32B32_UINT:
- case VK_FORMAT_R32G32B32_SINT:
- case VK_FORMAT_R32G32B32_SFLOAT:
- case VK_FORMAT_R32G32B32A32_UINT:
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- case VK_FORMAT_R64_UINT:
- case VK_FORMAT_R64_SINT:
- case VK_FORMAT_R64_SFLOAT:
- case VK_FORMAT_R64G64_UINT:
- case VK_FORMAT_R64G64_SINT:
- case VK_FORMAT_R64G64_SFLOAT:
- case VK_FORMAT_R64G64B64_UINT:
- case VK_FORMAT_R64G64B64_SINT:
- case VK_FORMAT_R64G64B64_SFLOAT:
- case VK_FORMAT_R64G64B64A64_UINT:
- case VK_FORMAT_R64G64B64A64_SINT:
- case VK_FORMAT_R64G64B64A64_SFLOAT:
- case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
- case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
- case VK_FORMAT_D16_UNORM:
- case VK_FORMAT_X8_D24_UNORM_PACK32:
- case VK_FORMAT_D32_SFLOAT:
- case VK_FORMAT_S8_UINT:
- case VK_FORMAT_D16_UNORM_S8_UINT:
- case VK_FORMAT_D24_UNORM_S8_UINT:
- case VK_FORMAT_D32_SFLOAT_S8_UINT:
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
- return format;
- // Compressed formats
- case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
- case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
- case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
- case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
- case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
- case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
- case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
- return VK_FORMAT_B8G8R8A8_UNORM;
- case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
- case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
- case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
- case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
- case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
- case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
- // ASTC supports HDR, so a floating point format is required to represent it properly
- return VK_FORMAT_R32G32B32A32_SFLOAT; // FIXME: 16FP is probably sufficient, but it's currently unsupported
- case VK_FORMAT_EAC_R11_UNORM_BLOCK:
- case VK_FORMAT_EAC_R11_SNORM_BLOCK:
- return VK_FORMAT_R32_SFLOAT; // FIXME: Signed 8bit format would be sufficient
- case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
- case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
- return VK_FORMAT_R32G32_SFLOAT; // FIXME: Signed 8bit format would be sufficient
- case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
- case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
- return VK_FORMAT_B8G8R8A8_UNORM;
- default:
- ASSERT(false);
- }
-
- return VK_FORMAT_UNDEFINED;
- }
-
- void Surface::resolve()
- {
- if(internal.samples <= 1 || !internal.dirty || !renderTarget || internal.format == VK_FORMAT_UNDEFINED)
- {
- return;
- }
-
- ASSERT(internal.depth == 1); // Unimplemented
-
- void *source = internal.lockRect(0, 0, 0, LOCK_READWRITE);
-
- int width = internal.width;
- int height = internal.height;
- int pitch = internal.pitchB;
- int slice = internal.sliceB;
-
- unsigned char *source0 = (unsigned char*)source;
- unsigned char *source1 = source0 + slice;
- unsigned char *source2 = source1 + slice;
- unsigned char *source3 = source2 + slice;
- unsigned char *source4 = source3 + slice;
- unsigned char *source5 = source4 + slice;
- unsigned char *source6 = source5 + slice;
- unsigned char *source7 = source6 + slice;
- unsigned char *source8 = source7 + slice;
- unsigned char *source9 = source8 + slice;
- unsigned char *sourceA = source9 + slice;
- unsigned char *sourceB = sourceA + slice;
- unsigned char *sourceC = sourceB + slice;
- unsigned char *sourceD = sourceC + slice;
- unsigned char *sourceE = sourceD + slice;
- unsigned char *sourceF = sourceE + slice;
-
- if(internal.format == VK_FORMAT_B8G8R8A8_UNORM ||
- internal.format == VK_FORMAT_R8G8B8A8_UNORM ||
- internal.format == VK_FORMAT_R8G8B8A8_SRGB)
- {
- #if defined(__i386__) || defined(__x86_64__)
- if(CPUID::supportsSSE2() && (width % 4) == 0)
- {
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 4)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 4 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 4 * x));
-
- c0 = _mm_avg_epu8(c0, c1);
-
- _mm_store_si128((__m128i*)(source0 + 4 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 4)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 4 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 4 * x));
- __m128i c2 = _mm_load_si128((__m128i*)(source2 + 4 * x));
- __m128i c3 = _mm_load_si128((__m128i*)(source3 + 4 * x));
-
- c0 = _mm_avg_epu8(c0, c1);
- c2 = _mm_avg_epu8(c2, c3);
- c0 = _mm_avg_epu8(c0, c2);
-
- _mm_store_si128((__m128i*)(source0 + 4 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 4)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 4 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 4 * x));
- __m128i c2 = _mm_load_si128((__m128i*)(source2 + 4 * x));
- __m128i c3 = _mm_load_si128((__m128i*)(source3 + 4 * x));
- __m128i c4 = _mm_load_si128((__m128i*)(source4 + 4 * x));
- __m128i c5 = _mm_load_si128((__m128i*)(source5 + 4 * x));
- __m128i c6 = _mm_load_si128((__m128i*)(source6 + 4 * x));
- __m128i c7 = _mm_load_si128((__m128i*)(source7 + 4 * x));
-
- c0 = _mm_avg_epu8(c0, c1);
- c2 = _mm_avg_epu8(c2, c3);
- c4 = _mm_avg_epu8(c4, c5);
- c6 = _mm_avg_epu8(c6, c7);
- c0 = _mm_avg_epu8(c0, c2);
- c4 = _mm_avg_epu8(c4, c6);
- c0 = _mm_avg_epu8(c0, c4);
-
- _mm_store_si128((__m128i*)(source0 + 4 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 4)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 4 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 4 * x));
- __m128i c2 = _mm_load_si128((__m128i*)(source2 + 4 * x));
- __m128i c3 = _mm_load_si128((__m128i*)(source3 + 4 * x));
- __m128i c4 = _mm_load_si128((__m128i*)(source4 + 4 * x));
- __m128i c5 = _mm_load_si128((__m128i*)(source5 + 4 * x));
- __m128i c6 = _mm_load_si128((__m128i*)(source6 + 4 * x));
- __m128i c7 = _mm_load_si128((__m128i*)(source7 + 4 * x));
- __m128i c8 = _mm_load_si128((__m128i*)(source8 + 4 * x));
- __m128i c9 = _mm_load_si128((__m128i*)(source9 + 4 * x));
- __m128i cA = _mm_load_si128((__m128i*)(sourceA + 4 * x));
- __m128i cB = _mm_load_si128((__m128i*)(sourceB + 4 * x));
- __m128i cC = _mm_load_si128((__m128i*)(sourceC + 4 * x));
- __m128i cD = _mm_load_si128((__m128i*)(sourceD + 4 * x));
- __m128i cE = _mm_load_si128((__m128i*)(sourceE + 4 * x));
- __m128i cF = _mm_load_si128((__m128i*)(sourceF + 4 * x));
-
- c0 = _mm_avg_epu8(c0, c1);
- c2 = _mm_avg_epu8(c2, c3);
- c4 = _mm_avg_epu8(c4, c5);
- c6 = _mm_avg_epu8(c6, c7);
- c8 = _mm_avg_epu8(c8, c9);
- cA = _mm_avg_epu8(cA, cB);
- cC = _mm_avg_epu8(cC, cD);
- cE = _mm_avg_epu8(cE, cF);
- c0 = _mm_avg_epu8(c0, c2);
- c4 = _mm_avg_epu8(c4, c6);
- c8 = _mm_avg_epu8(c8, cA);
- cC = _mm_avg_epu8(cC, cE);
- c0 = _mm_avg_epu8(c0, c4);
- c8 = _mm_avg_epu8(c8, cC);
- c0 = _mm_avg_epu8(c0, c8);
-
- _mm_store_si128((__m128i*)(source0 + 4 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
- }
- else
- #endif
- {
- #define AVERAGE(x, y) (((x) & (y)) + ((((x) ^ (y)) >> 1) & 0x7F7F7F7F) + (((x) ^ (y)) & 0x01010101))
-
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- unsigned int c0 = *(unsigned int*)(source0 + 4 * x);
- unsigned int c1 = *(unsigned int*)(source1 + 4 * x);
-
- c0 = AVERAGE(c0, c1);
-
- *(unsigned int*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- unsigned int c0 = *(unsigned int*)(source0 + 4 * x);
- unsigned int c1 = *(unsigned int*)(source1 + 4 * x);
- unsigned int c2 = *(unsigned int*)(source2 + 4 * x);
- unsigned int c3 = *(unsigned int*)(source3 + 4 * x);
-
- c0 = AVERAGE(c0, c1);
- c2 = AVERAGE(c2, c3);
- c0 = AVERAGE(c0, c2);
-
- *(unsigned int*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- unsigned int c0 = *(unsigned int*)(source0 + 4 * x);
- unsigned int c1 = *(unsigned int*)(source1 + 4 * x);
- unsigned int c2 = *(unsigned int*)(source2 + 4 * x);
- unsigned int c3 = *(unsigned int*)(source3 + 4 * x);
- unsigned int c4 = *(unsigned int*)(source4 + 4 * x);
- unsigned int c5 = *(unsigned int*)(source5 + 4 * x);
- unsigned int c6 = *(unsigned int*)(source6 + 4 * x);
- unsigned int c7 = *(unsigned int*)(source7 + 4 * x);
-
- c0 = AVERAGE(c0, c1);
- c2 = AVERAGE(c2, c3);
- c4 = AVERAGE(c4, c5);
- c6 = AVERAGE(c6, c7);
- c0 = AVERAGE(c0, c2);
- c4 = AVERAGE(c4, c6);
- c0 = AVERAGE(c0, c4);
-
- *(unsigned int*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- unsigned int c0 = *(unsigned int*)(source0 + 4 * x);
- unsigned int c1 = *(unsigned int*)(source1 + 4 * x);
- unsigned int c2 = *(unsigned int*)(source2 + 4 * x);
- unsigned int c3 = *(unsigned int*)(source3 + 4 * x);
- unsigned int c4 = *(unsigned int*)(source4 + 4 * x);
- unsigned int c5 = *(unsigned int*)(source5 + 4 * x);
- unsigned int c6 = *(unsigned int*)(source6 + 4 * x);
- unsigned int c7 = *(unsigned int*)(source7 + 4 * x);
- unsigned int c8 = *(unsigned int*)(source8 + 4 * x);
- unsigned int c9 = *(unsigned int*)(source9 + 4 * x);
- unsigned int cA = *(unsigned int*)(sourceA + 4 * x);
- unsigned int cB = *(unsigned int*)(sourceB + 4 * x);
- unsigned int cC = *(unsigned int*)(sourceC + 4 * x);
- unsigned int cD = *(unsigned int*)(sourceD + 4 * x);
- unsigned int cE = *(unsigned int*)(sourceE + 4 * x);
- unsigned int cF = *(unsigned int*)(sourceF + 4 * x);
-
- c0 = AVERAGE(c0, c1);
- c2 = AVERAGE(c2, c3);
- c4 = AVERAGE(c4, c5);
- c6 = AVERAGE(c6, c7);
- c8 = AVERAGE(c8, c9);
- cA = AVERAGE(cA, cB);
- cC = AVERAGE(cC, cD);
- cE = AVERAGE(cE, cF);
- c0 = AVERAGE(c0, c2);
- c4 = AVERAGE(c4, c6);
- c8 = AVERAGE(c8, cA);
- cC = AVERAGE(cC, cE);
- c0 = AVERAGE(c0, c4);
- c8 = AVERAGE(c8, cC);
- c0 = AVERAGE(c0, c8);
-
- *(unsigned int*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
-
- #undef AVERAGE
- }
- }
- else if(internal.format == VK_FORMAT_R16G16_UNORM)
- {
-
- #if defined(__i386__) || defined(__x86_64__)
- if(CPUID::supportsSSE2() && (width % 4) == 0)
- {
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 4)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 4 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 4 * x));
-
- c0 = _mm_avg_epu16(c0, c1);
-
- _mm_store_si128((__m128i*)(source0 + 4 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 4)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 4 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 4 * x));
- __m128i c2 = _mm_load_si128((__m128i*)(source2 + 4 * x));
- __m128i c3 = _mm_load_si128((__m128i*)(source3 + 4 * x));
-
- c0 = _mm_avg_epu16(c0, c1);
- c2 = _mm_avg_epu16(c2, c3);
- c0 = _mm_avg_epu16(c0, c2);
-
- _mm_store_si128((__m128i*)(source0 + 4 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 4)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 4 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 4 * x));
- __m128i c2 = _mm_load_si128((__m128i*)(source2 + 4 * x));
- __m128i c3 = _mm_load_si128((__m128i*)(source3 + 4 * x));
- __m128i c4 = _mm_load_si128((__m128i*)(source4 + 4 * x));
- __m128i c5 = _mm_load_si128((__m128i*)(source5 + 4 * x));
- __m128i c6 = _mm_load_si128((__m128i*)(source6 + 4 * x));
- __m128i c7 = _mm_load_si128((__m128i*)(source7 + 4 * x));
-
- c0 = _mm_avg_epu16(c0, c1);
- c2 = _mm_avg_epu16(c2, c3);
- c4 = _mm_avg_epu16(c4, c5);
- c6 = _mm_avg_epu16(c6, c7);
- c0 = _mm_avg_epu16(c0, c2);
- c4 = _mm_avg_epu16(c4, c6);
- c0 = _mm_avg_epu16(c0, c4);
-
- _mm_store_si128((__m128i*)(source0 + 4 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 4)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 4 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 4 * x));
- __m128i c2 = _mm_load_si128((__m128i*)(source2 + 4 * x));
- __m128i c3 = _mm_load_si128((__m128i*)(source3 + 4 * x));
- __m128i c4 = _mm_load_si128((__m128i*)(source4 + 4 * x));
- __m128i c5 = _mm_load_si128((__m128i*)(source5 + 4 * x));
- __m128i c6 = _mm_load_si128((__m128i*)(source6 + 4 * x));
- __m128i c7 = _mm_load_si128((__m128i*)(source7 + 4 * x));
- __m128i c8 = _mm_load_si128((__m128i*)(source8 + 4 * x));
- __m128i c9 = _mm_load_si128((__m128i*)(source9 + 4 * x));
- __m128i cA = _mm_load_si128((__m128i*)(sourceA + 4 * x));
- __m128i cB = _mm_load_si128((__m128i*)(sourceB + 4 * x));
- __m128i cC = _mm_load_si128((__m128i*)(sourceC + 4 * x));
- __m128i cD = _mm_load_si128((__m128i*)(sourceD + 4 * x));
- __m128i cE = _mm_load_si128((__m128i*)(sourceE + 4 * x));
- __m128i cF = _mm_load_si128((__m128i*)(sourceF + 4 * x));
-
- c0 = _mm_avg_epu16(c0, c1);
- c2 = _mm_avg_epu16(c2, c3);
- c4 = _mm_avg_epu16(c4, c5);
- c6 = _mm_avg_epu16(c6, c7);
- c8 = _mm_avg_epu16(c8, c9);
- cA = _mm_avg_epu16(cA, cB);
- cC = _mm_avg_epu16(cC, cD);
- cE = _mm_avg_epu16(cE, cF);
- c0 = _mm_avg_epu16(c0, c2);
- c4 = _mm_avg_epu16(c4, c6);
- c8 = _mm_avg_epu16(c8, cA);
- cC = _mm_avg_epu16(cC, cE);
- c0 = _mm_avg_epu16(c0, c4);
- c8 = _mm_avg_epu16(c8, cC);
- c0 = _mm_avg_epu16(c0, c8);
-
- _mm_store_si128((__m128i*)(source0 + 4 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
- }
- else
- #endif
- {
- #define AVERAGE(x, y) (((x) & (y)) + ((((x) ^ (y)) >> 1) & 0x7FFF7FFF) + (((x) ^ (y)) & 0x00010001))
-
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- unsigned int c0 = *(unsigned int*)(source0 + 4 * x);
- unsigned int c1 = *(unsigned int*)(source1 + 4 * x);
-
- c0 = AVERAGE(c0, c1);
-
- *(unsigned int*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- unsigned int c0 = *(unsigned int*)(source0 + 4 * x);
- unsigned int c1 = *(unsigned int*)(source1 + 4 * x);
- unsigned int c2 = *(unsigned int*)(source2 + 4 * x);
- unsigned int c3 = *(unsigned int*)(source3 + 4 * x);
-
- c0 = AVERAGE(c0, c1);
- c2 = AVERAGE(c2, c3);
- c0 = AVERAGE(c0, c2);
-
- *(unsigned int*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- unsigned int c0 = *(unsigned int*)(source0 + 4 * x);
- unsigned int c1 = *(unsigned int*)(source1 + 4 * x);
- unsigned int c2 = *(unsigned int*)(source2 + 4 * x);
- unsigned int c3 = *(unsigned int*)(source3 + 4 * x);
- unsigned int c4 = *(unsigned int*)(source4 + 4 * x);
- unsigned int c5 = *(unsigned int*)(source5 + 4 * x);
- unsigned int c6 = *(unsigned int*)(source6 + 4 * x);
- unsigned int c7 = *(unsigned int*)(source7 + 4 * x);
-
- c0 = AVERAGE(c0, c1);
- c2 = AVERAGE(c2, c3);
- c4 = AVERAGE(c4, c5);
- c6 = AVERAGE(c6, c7);
- c0 = AVERAGE(c0, c2);
- c4 = AVERAGE(c4, c6);
- c0 = AVERAGE(c0, c4);
-
- *(unsigned int*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- unsigned int c0 = *(unsigned int*)(source0 + 4 * x);
- unsigned int c1 = *(unsigned int*)(source1 + 4 * x);
- unsigned int c2 = *(unsigned int*)(source2 + 4 * x);
- unsigned int c3 = *(unsigned int*)(source3 + 4 * x);
- unsigned int c4 = *(unsigned int*)(source4 + 4 * x);
- unsigned int c5 = *(unsigned int*)(source5 + 4 * x);
- unsigned int c6 = *(unsigned int*)(source6 + 4 * x);
- unsigned int c7 = *(unsigned int*)(source7 + 4 * x);
- unsigned int c8 = *(unsigned int*)(source8 + 4 * x);
- unsigned int c9 = *(unsigned int*)(source9 + 4 * x);
- unsigned int cA = *(unsigned int*)(sourceA + 4 * x);
- unsigned int cB = *(unsigned int*)(sourceB + 4 * x);
- unsigned int cC = *(unsigned int*)(sourceC + 4 * x);
- unsigned int cD = *(unsigned int*)(sourceD + 4 * x);
- unsigned int cE = *(unsigned int*)(sourceE + 4 * x);
- unsigned int cF = *(unsigned int*)(sourceF + 4 * x);
-
- c0 = AVERAGE(c0, c1);
- c2 = AVERAGE(c2, c3);
- c4 = AVERAGE(c4, c5);
- c6 = AVERAGE(c6, c7);
- c8 = AVERAGE(c8, c9);
- cA = AVERAGE(cA, cB);
- cC = AVERAGE(cC, cD);
- cE = AVERAGE(cE, cF);
- c0 = AVERAGE(c0, c2);
- c4 = AVERAGE(c4, c6);
- c8 = AVERAGE(c8, cA);
- cC = AVERAGE(cC, cE);
- c0 = AVERAGE(c0, c4);
- c8 = AVERAGE(c8, cC);
- c0 = AVERAGE(c0, c8);
-
- *(unsigned int*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
-
- #undef AVERAGE
- }
- }
- else if(internal.format == VK_FORMAT_R16G16B16A16_UNORM)
- {
- #if defined(__i386__) || defined(__x86_64__)
- if(CPUID::supportsSSE2() && (width % 2) == 0)
- {
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 2)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 8 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 8 * x));
-
- c0 = _mm_avg_epu16(c0, c1);
-
- _mm_store_si128((__m128i*)(source0 + 8 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 2)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 8 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 8 * x));
- __m128i c2 = _mm_load_si128((__m128i*)(source2 + 8 * x));
- __m128i c3 = _mm_load_si128((__m128i*)(source3 + 8 * x));
-
- c0 = _mm_avg_epu16(c0, c1);
- c2 = _mm_avg_epu16(c2, c3);
- c0 = _mm_avg_epu16(c0, c2);
-
- _mm_store_si128((__m128i*)(source0 + 8 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 2)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 8 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 8 * x));
- __m128i c2 = _mm_load_si128((__m128i*)(source2 + 8 * x));
- __m128i c3 = _mm_load_si128((__m128i*)(source3 + 8 * x));
- __m128i c4 = _mm_load_si128((__m128i*)(source4 + 8 * x));
- __m128i c5 = _mm_load_si128((__m128i*)(source5 + 8 * x));
- __m128i c6 = _mm_load_si128((__m128i*)(source6 + 8 * x));
- __m128i c7 = _mm_load_si128((__m128i*)(source7 + 8 * x));
-
- c0 = _mm_avg_epu16(c0, c1);
- c2 = _mm_avg_epu16(c2, c3);
- c4 = _mm_avg_epu16(c4, c5);
- c6 = _mm_avg_epu16(c6, c7);
- c0 = _mm_avg_epu16(c0, c2);
- c4 = _mm_avg_epu16(c4, c6);
- c0 = _mm_avg_epu16(c0, c4);
-
- _mm_store_si128((__m128i*)(source0 + 8 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 2)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 8 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 8 * x));
- __m128i c2 = _mm_load_si128((__m128i*)(source2 + 8 * x));
- __m128i c3 = _mm_load_si128((__m128i*)(source3 + 8 * x));
- __m128i c4 = _mm_load_si128((__m128i*)(source4 + 8 * x));
- __m128i c5 = _mm_load_si128((__m128i*)(source5 + 8 * x));
- __m128i c6 = _mm_load_si128((__m128i*)(source6 + 8 * x));
- __m128i c7 = _mm_load_si128((__m128i*)(source7 + 8 * x));
- __m128i c8 = _mm_load_si128((__m128i*)(source8 + 8 * x));
- __m128i c9 = _mm_load_si128((__m128i*)(source9 + 8 * x));
- __m128i cA = _mm_load_si128((__m128i*)(sourceA + 8 * x));
- __m128i cB = _mm_load_si128((__m128i*)(sourceB + 8 * x));
- __m128i cC = _mm_load_si128((__m128i*)(sourceC + 8 * x));
- __m128i cD = _mm_load_si128((__m128i*)(sourceD + 8 * x));
- __m128i cE = _mm_load_si128((__m128i*)(sourceE + 8 * x));
- __m128i cF = _mm_load_si128((__m128i*)(sourceF + 8 * x));
-
- c0 = _mm_avg_epu16(c0, c1);
- c2 = _mm_avg_epu16(c2, c3);
- c4 = _mm_avg_epu16(c4, c5);
- c6 = _mm_avg_epu16(c6, c7);
- c8 = _mm_avg_epu16(c8, c9);
- cA = _mm_avg_epu16(cA, cB);
- cC = _mm_avg_epu16(cC, cD);
- cE = _mm_avg_epu16(cE, cF);
- c0 = _mm_avg_epu16(c0, c2);
- c4 = _mm_avg_epu16(c4, c6);
- c8 = _mm_avg_epu16(c8, cA);
- cC = _mm_avg_epu16(cC, cE);
- c0 = _mm_avg_epu16(c0, c4);
- c8 = _mm_avg_epu16(c8, cC);
- c0 = _mm_avg_epu16(c0, c8);
-
- _mm_store_si128((__m128i*)(source0 + 8 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
- }
- else
- #endif
- {
- #define AVERAGE(x, y) (((x) & (y)) + ((((x) ^ (y)) >> 1) & 0x7FFF7FFF) + (((x) ^ (y)) & 0x00010001))
-
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < 2 * width; x++)
- {
- unsigned int c0 = *(unsigned int*)(source0 + 4 * x);
- unsigned int c1 = *(unsigned int*)(source1 + 4 * x);
-
- c0 = AVERAGE(c0, c1);
-
- *(unsigned int*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < 2 * width; x++)
- {
- unsigned int c0 = *(unsigned int*)(source0 + 4 * x);
- unsigned int c1 = *(unsigned int*)(source1 + 4 * x);
- unsigned int c2 = *(unsigned int*)(source2 + 4 * x);
- unsigned int c3 = *(unsigned int*)(source3 + 4 * x);
-
- c0 = AVERAGE(c0, c1);
- c2 = AVERAGE(c2, c3);
- c0 = AVERAGE(c0, c2);
-
- *(unsigned int*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < 2 * width; x++)
- {
- unsigned int c0 = *(unsigned int*)(source0 + 4 * x);
- unsigned int c1 = *(unsigned int*)(source1 + 4 * x);
- unsigned int c2 = *(unsigned int*)(source2 + 4 * x);
- unsigned int c3 = *(unsigned int*)(source3 + 4 * x);
- unsigned int c4 = *(unsigned int*)(source4 + 4 * x);
- unsigned int c5 = *(unsigned int*)(source5 + 4 * x);
- unsigned int c6 = *(unsigned int*)(source6 + 4 * x);
- unsigned int c7 = *(unsigned int*)(source7 + 4 * x);
-
- c0 = AVERAGE(c0, c1);
- c2 = AVERAGE(c2, c3);
- c4 = AVERAGE(c4, c5);
- c6 = AVERAGE(c6, c7);
- c0 = AVERAGE(c0, c2);
- c4 = AVERAGE(c4, c6);
- c0 = AVERAGE(c0, c4);
-
- *(unsigned int*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < 2 * width; x++)
- {
- unsigned int c0 = *(unsigned int*)(source0 + 4 * x);
- unsigned int c1 = *(unsigned int*)(source1 + 4 * x);
- unsigned int c2 = *(unsigned int*)(source2 + 4 * x);
- unsigned int c3 = *(unsigned int*)(source3 + 4 * x);
- unsigned int c4 = *(unsigned int*)(source4 + 4 * x);
- unsigned int c5 = *(unsigned int*)(source5 + 4 * x);
- unsigned int c6 = *(unsigned int*)(source6 + 4 * x);
- unsigned int c7 = *(unsigned int*)(source7 + 4 * x);
- unsigned int c8 = *(unsigned int*)(source8 + 4 * x);
- unsigned int c9 = *(unsigned int*)(source9 + 4 * x);
- unsigned int cA = *(unsigned int*)(sourceA + 4 * x);
- unsigned int cB = *(unsigned int*)(sourceB + 4 * x);
- unsigned int cC = *(unsigned int*)(sourceC + 4 * x);
- unsigned int cD = *(unsigned int*)(sourceD + 4 * x);
- unsigned int cE = *(unsigned int*)(sourceE + 4 * x);
- unsigned int cF = *(unsigned int*)(sourceF + 4 * x);
-
- c0 = AVERAGE(c0, c1);
- c2 = AVERAGE(c2, c3);
- c4 = AVERAGE(c4, c5);
- c6 = AVERAGE(c6, c7);
- c8 = AVERAGE(c8, c9);
- cA = AVERAGE(cA, cB);
- cC = AVERAGE(cC, cD);
- cE = AVERAGE(cE, cF);
- c0 = AVERAGE(c0, c2);
- c4 = AVERAGE(c4, c6);
- c8 = AVERAGE(c8, cA);
- cC = AVERAGE(cC, cE);
- c0 = AVERAGE(c0, c4);
- c8 = AVERAGE(c8, cC);
- c0 = AVERAGE(c0, c8);
-
- *(unsigned int*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
-
- #undef AVERAGE
- }
- }
- else if(internal.format == VK_FORMAT_R32_SFLOAT)
- {
- #if defined(__i386__) || defined(__x86_64__)
- if(CPUID::supportsSSE() && (width % 4) == 0)
- {
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 4)
- {
- __m128 c0 = _mm_load_ps((float*)(source0 + 4 * x));
- __m128 c1 = _mm_load_ps((float*)(source1 + 4 * x));
-
- c0 = _mm_add_ps(c0, c1);
- c0 = _mm_mul_ps(c0, _mm_set1_ps(1.0f / 2.0f));
-
- _mm_store_ps((float*)(source0 + 4 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 4)
- {
- __m128 c0 = _mm_load_ps((float*)(source0 + 4 * x));
- __m128 c1 = _mm_load_ps((float*)(source1 + 4 * x));
- __m128 c2 = _mm_load_ps((float*)(source2 + 4 * x));
- __m128 c3 = _mm_load_ps((float*)(source3 + 4 * x));
-
- c0 = _mm_add_ps(c0, c1);
- c2 = _mm_add_ps(c2, c3);
- c0 = _mm_add_ps(c0, c2);
- c0 = _mm_mul_ps(c0, _mm_set1_ps(1.0f / 4.0f));
-
- _mm_store_ps((float*)(source0 + 4 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 4)
- {
- __m128 c0 = _mm_load_ps((float*)(source0 + 4 * x));
- __m128 c1 = _mm_load_ps((float*)(source1 + 4 * x));
- __m128 c2 = _mm_load_ps((float*)(source2 + 4 * x));
- __m128 c3 = _mm_load_ps((float*)(source3 + 4 * x));
- __m128 c4 = _mm_load_ps((float*)(source4 + 4 * x));
- __m128 c5 = _mm_load_ps((float*)(source5 + 4 * x));
- __m128 c6 = _mm_load_ps((float*)(source6 + 4 * x));
- __m128 c7 = _mm_load_ps((float*)(source7 + 4 * x));
-
- c0 = _mm_add_ps(c0, c1);
- c2 = _mm_add_ps(c2, c3);
- c4 = _mm_add_ps(c4, c5);
- c6 = _mm_add_ps(c6, c7);
- c0 = _mm_add_ps(c0, c2);
- c4 = _mm_add_ps(c4, c6);
- c0 = _mm_add_ps(c0, c4);
- c0 = _mm_mul_ps(c0, _mm_set1_ps(1.0f / 8.0f));
-
- _mm_store_ps((float*)(source0 + 4 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 4)
- {
- __m128 c0 = _mm_load_ps((float*)(source0 + 4 * x));
- __m128 c1 = _mm_load_ps((float*)(source1 + 4 * x));
- __m128 c2 = _mm_load_ps((float*)(source2 + 4 * x));
- __m128 c3 = _mm_load_ps((float*)(source3 + 4 * x));
- __m128 c4 = _mm_load_ps((float*)(source4 + 4 * x));
- __m128 c5 = _mm_load_ps((float*)(source5 + 4 * x));
- __m128 c6 = _mm_load_ps((float*)(source6 + 4 * x));
- __m128 c7 = _mm_load_ps((float*)(source7 + 4 * x));
- __m128 c8 = _mm_load_ps((float*)(source8 + 4 * x));
- __m128 c9 = _mm_load_ps((float*)(source9 + 4 * x));
- __m128 cA = _mm_load_ps((float*)(sourceA + 4 * x));
- __m128 cB = _mm_load_ps((float*)(sourceB + 4 * x));
- __m128 cC = _mm_load_ps((float*)(sourceC + 4 * x));
- __m128 cD = _mm_load_ps((float*)(sourceD + 4 * x));
- __m128 cE = _mm_load_ps((float*)(sourceE + 4 * x));
- __m128 cF = _mm_load_ps((float*)(sourceF + 4 * x));
-
- c0 = _mm_add_ps(c0, c1);
- c2 = _mm_add_ps(c2, c3);
- c4 = _mm_add_ps(c4, c5);
- c6 = _mm_add_ps(c6, c7);
- c8 = _mm_add_ps(c8, c9);
- cA = _mm_add_ps(cA, cB);
- cC = _mm_add_ps(cC, cD);
- cE = _mm_add_ps(cE, cF);
- c0 = _mm_add_ps(c0, c2);
- c4 = _mm_add_ps(c4, c6);
- c8 = _mm_add_ps(c8, cA);
- cC = _mm_add_ps(cC, cE);
- c0 = _mm_add_ps(c0, c4);
- c8 = _mm_add_ps(c8, cC);
- c0 = _mm_add_ps(c0, c8);
- c0 = _mm_mul_ps(c0, _mm_set1_ps(1.0f / 16.0f));
-
- _mm_store_ps((float*)(source0 + 4 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
- }
- else
- #endif
- {
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- float c0 = *(float*)(source0 + 4 * x);
- float c1 = *(float*)(source1 + 4 * x);
-
- c0 = c0 + c1;
- c0 *= 1.0f / 2.0f;
-
- *(float*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- float c0 = *(float*)(source0 + 4 * x);
- float c1 = *(float*)(source1 + 4 * x);
- float c2 = *(float*)(source2 + 4 * x);
- float c3 = *(float*)(source3 + 4 * x);
-
- c0 = c0 + c1;
- c2 = c2 + c3;
- c0 = c0 + c2;
- c0 *= 1.0f / 4.0f;
-
- *(float*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- float c0 = *(float*)(source0 + 4 * x);
- float c1 = *(float*)(source1 + 4 * x);
- float c2 = *(float*)(source2 + 4 * x);
- float c3 = *(float*)(source3 + 4 * x);
- float c4 = *(float*)(source4 + 4 * x);
- float c5 = *(float*)(source5 + 4 * x);
- float c6 = *(float*)(source6 + 4 * x);
- float c7 = *(float*)(source7 + 4 * x);
-
- c0 = c0 + c1;
- c2 = c2 + c3;
- c4 = c4 + c5;
- c6 = c6 + c7;
- c0 = c0 + c2;
- c4 = c4 + c6;
- c0 = c0 + c4;
- c0 *= 1.0f / 8.0f;
-
- *(float*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- float c0 = *(float*)(source0 + 4 * x);
- float c1 = *(float*)(source1 + 4 * x);
- float c2 = *(float*)(source2 + 4 * x);
- float c3 = *(float*)(source3 + 4 * x);
- float c4 = *(float*)(source4 + 4 * x);
- float c5 = *(float*)(source5 + 4 * x);
- float c6 = *(float*)(source6 + 4 * x);
- float c7 = *(float*)(source7 + 4 * x);
- float c8 = *(float*)(source8 + 4 * x);
- float c9 = *(float*)(source9 + 4 * x);
- float cA = *(float*)(sourceA + 4 * x);
- float cB = *(float*)(sourceB + 4 * x);
- float cC = *(float*)(sourceC + 4 * x);
- float cD = *(float*)(sourceD + 4 * x);
- float cE = *(float*)(sourceE + 4 * x);
- float cF = *(float*)(sourceF + 4 * x);
-
- c0 = c0 + c1;
- c2 = c2 + c3;
- c4 = c4 + c5;
- c6 = c6 + c7;
- c8 = c8 + c9;
- cA = cA + cB;
- cC = cC + cD;
- cE = cE + cF;
- c0 = c0 + c2;
- c4 = c4 + c6;
- c8 = c8 + cA;
- cC = cC + cE;
- c0 = c0 + c4;
- c8 = c8 + cC;
- c0 = c0 + c8;
- c0 *= 1.0f / 16.0f;
-
- *(float*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
- }
- }
- else if(internal.format == VK_FORMAT_R32G32_SFLOAT)
- {
- #if defined(__i386__) || defined(__x86_64__)
- if(CPUID::supportsSSE() && (width % 2) == 0)
- {
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 2)
- {
- __m128 c0 = _mm_load_ps((float*)(source0 + 8 * x));
- __m128 c1 = _mm_load_ps((float*)(source1 + 8 * x));
-
- c0 = _mm_add_ps(c0, c1);
- c0 = _mm_mul_ps(c0, _mm_set1_ps(1.0f / 2.0f));
-
- _mm_store_ps((float*)(source0 + 8 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 2)
- {
- __m128 c0 = _mm_load_ps((float*)(source0 + 8 * x));
- __m128 c1 = _mm_load_ps((float*)(source1 + 8 * x));
- __m128 c2 = _mm_load_ps((float*)(source2 + 8 * x));
- __m128 c3 = _mm_load_ps((float*)(source3 + 8 * x));
-
- c0 = _mm_add_ps(c0, c1);
- c2 = _mm_add_ps(c2, c3);
- c0 = _mm_add_ps(c0, c2);
- c0 = _mm_mul_ps(c0, _mm_set1_ps(1.0f / 4.0f));
-
- _mm_store_ps((float*)(source0 + 8 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 2)
- {
- __m128 c0 = _mm_load_ps((float*)(source0 + 8 * x));
- __m128 c1 = _mm_load_ps((float*)(source1 + 8 * x));
- __m128 c2 = _mm_load_ps((float*)(source2 + 8 * x));
- __m128 c3 = _mm_load_ps((float*)(source3 + 8 * x));
- __m128 c4 = _mm_load_ps((float*)(source4 + 8 * x));
- __m128 c5 = _mm_load_ps((float*)(source5 + 8 * x));
- __m128 c6 = _mm_load_ps((float*)(source6 + 8 * x));
- __m128 c7 = _mm_load_ps((float*)(source7 + 8 * x));
-
- c0 = _mm_add_ps(c0, c1);
- c2 = _mm_add_ps(c2, c3);
- c4 = _mm_add_ps(c4, c5);
- c6 = _mm_add_ps(c6, c7);
- c0 = _mm_add_ps(c0, c2);
- c4 = _mm_add_ps(c4, c6);
- c0 = _mm_add_ps(c0, c4);
- c0 = _mm_mul_ps(c0, _mm_set1_ps(1.0f / 8.0f));
-
- _mm_store_ps((float*)(source0 + 8 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 2)
- {
- __m128 c0 = _mm_load_ps((float*)(source0 + 8 * x));
- __m128 c1 = _mm_load_ps((float*)(source1 + 8 * x));
- __m128 c2 = _mm_load_ps((float*)(source2 + 8 * x));
- __m128 c3 = _mm_load_ps((float*)(source3 + 8 * x));
- __m128 c4 = _mm_load_ps((float*)(source4 + 8 * x));
- __m128 c5 = _mm_load_ps((float*)(source5 + 8 * x));
- __m128 c6 = _mm_load_ps((float*)(source6 + 8 * x));
- __m128 c7 = _mm_load_ps((float*)(source7 + 8 * x));
- __m128 c8 = _mm_load_ps((float*)(source8 + 8 * x));
- __m128 c9 = _mm_load_ps((float*)(source9 + 8 * x));
- __m128 cA = _mm_load_ps((float*)(sourceA + 8 * x));
- __m128 cB = _mm_load_ps((float*)(sourceB + 8 * x));
- __m128 cC = _mm_load_ps((float*)(sourceC + 8 * x));
- __m128 cD = _mm_load_ps((float*)(sourceD + 8 * x));
- __m128 cE = _mm_load_ps((float*)(sourceE + 8 * x));
- __m128 cF = _mm_load_ps((float*)(sourceF + 8 * x));
-
- c0 = _mm_add_ps(c0, c1);
- c2 = _mm_add_ps(c2, c3);
- c4 = _mm_add_ps(c4, c5);
- c6 = _mm_add_ps(c6, c7);
- c8 = _mm_add_ps(c8, c9);
- cA = _mm_add_ps(cA, cB);
- cC = _mm_add_ps(cC, cD);
- cE = _mm_add_ps(cE, cF);
- c0 = _mm_add_ps(c0, c2);
- c4 = _mm_add_ps(c4, c6);
- c8 = _mm_add_ps(c8, cA);
- cC = _mm_add_ps(cC, cE);
- c0 = _mm_add_ps(c0, c4);
- c8 = _mm_add_ps(c8, cC);
- c0 = _mm_add_ps(c0, c8);
- c0 = _mm_mul_ps(c0, _mm_set1_ps(1.0f / 16.0f));
-
- _mm_store_ps((float*)(source0 + 8 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
- }
- else
- #endif
- {
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < 2 * width; x++)
- {
- float c0 = *(float*)(source0 + 4 * x);
- float c1 = *(float*)(source1 + 4 * x);
-
- c0 = c0 + c1;
- c0 *= 1.0f / 2.0f;
-
- *(float*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < 2 * width; x++)
- {
- float c0 = *(float*)(source0 + 4 * x);
- float c1 = *(float*)(source1 + 4 * x);
- float c2 = *(float*)(source2 + 4 * x);
- float c3 = *(float*)(source3 + 4 * x);
-
- c0 = c0 + c1;
- c2 = c2 + c3;
- c0 = c0 + c2;
- c0 *= 1.0f / 4.0f;
-
- *(float*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < 2 * width; x++)
- {
- float c0 = *(float*)(source0 + 4 * x);
- float c1 = *(float*)(source1 + 4 * x);
- float c2 = *(float*)(source2 + 4 * x);
- float c3 = *(float*)(source3 + 4 * x);
- float c4 = *(float*)(source4 + 4 * x);
- float c5 = *(float*)(source5 + 4 * x);
- float c6 = *(float*)(source6 + 4 * x);
- float c7 = *(float*)(source7 + 4 * x);
-
- c0 = c0 + c1;
- c2 = c2 + c3;
- c4 = c4 + c5;
- c6 = c6 + c7;
- c0 = c0 + c2;
- c4 = c4 + c6;
- c0 = c0 + c4;
- c0 *= 1.0f / 8.0f;
-
- *(float*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < 2 * width; x++)
- {
- float c0 = *(float*)(source0 + 4 * x);
- float c1 = *(float*)(source1 + 4 * x);
- float c2 = *(float*)(source2 + 4 * x);
- float c3 = *(float*)(source3 + 4 * x);
- float c4 = *(float*)(source4 + 4 * x);
- float c5 = *(float*)(source5 + 4 * x);
- float c6 = *(float*)(source6 + 4 * x);
- float c7 = *(float*)(source7 + 4 * x);
- float c8 = *(float*)(source8 + 4 * x);
- float c9 = *(float*)(source9 + 4 * x);
- float cA = *(float*)(sourceA + 4 * x);
- float cB = *(float*)(sourceB + 4 * x);
- float cC = *(float*)(sourceC + 4 * x);
- float cD = *(float*)(sourceD + 4 * x);
- float cE = *(float*)(sourceE + 4 * x);
- float cF = *(float*)(sourceF + 4 * x);
-
- c0 = c0 + c1;
- c2 = c2 + c3;
- c4 = c4 + c5;
- c6 = c6 + c7;
- c8 = c8 + c9;
- cA = cA + cB;
- cC = cC + cD;
- cE = cE + cF;
- c0 = c0 + c2;
- c4 = c4 + c6;
- c8 = c8 + cA;
- cC = cC + cE;
- c0 = c0 + c4;
- c8 = c8 + cC;
- c0 = c0 + c8;
- c0 *= 1.0f / 16.0f;
-
- *(float*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
- }
- }
- else if(internal.format == VK_FORMAT_R32G32B32A32_SFLOAT)
- {
- #if defined(__i386__) || defined(__x86_64__)
- if(CPUID::supportsSSE())
- {
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- __m128 c0 = _mm_load_ps((float*)(source0 + 16 * x));
- __m128 c1 = _mm_load_ps((float*)(source1 + 16 * x));
-
- c0 = _mm_add_ps(c0, c1);
- c0 = _mm_mul_ps(c0, _mm_set1_ps(1.0f / 2.0f));
-
- _mm_store_ps((float*)(source0 + 16 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- __m128 c0 = _mm_load_ps((float*)(source0 + 16 * x));
- __m128 c1 = _mm_load_ps((float*)(source1 + 16 * x));
- __m128 c2 = _mm_load_ps((float*)(source2 + 16 * x));
- __m128 c3 = _mm_load_ps((float*)(source3 + 16 * x));
-
- c0 = _mm_add_ps(c0, c1);
- c2 = _mm_add_ps(c2, c3);
- c0 = _mm_add_ps(c0, c2);
- c0 = _mm_mul_ps(c0, _mm_set1_ps(1.0f / 4.0f));
-
- _mm_store_ps((float*)(source0 + 16 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- __m128 c0 = _mm_load_ps((float*)(source0 + 16 * x));
- __m128 c1 = _mm_load_ps((float*)(source1 + 16 * x));
- __m128 c2 = _mm_load_ps((float*)(source2 + 16 * x));
- __m128 c3 = _mm_load_ps((float*)(source3 + 16 * x));
- __m128 c4 = _mm_load_ps((float*)(source4 + 16 * x));
- __m128 c5 = _mm_load_ps((float*)(source5 + 16 * x));
- __m128 c6 = _mm_load_ps((float*)(source6 + 16 * x));
- __m128 c7 = _mm_load_ps((float*)(source7 + 16 * x));
-
- c0 = _mm_add_ps(c0, c1);
- c2 = _mm_add_ps(c2, c3);
- c4 = _mm_add_ps(c4, c5);
- c6 = _mm_add_ps(c6, c7);
- c0 = _mm_add_ps(c0, c2);
- c4 = _mm_add_ps(c4, c6);
- c0 = _mm_add_ps(c0, c4);
- c0 = _mm_mul_ps(c0, _mm_set1_ps(1.0f / 8.0f));
-
- _mm_store_ps((float*)(source0 + 16 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- __m128 c0 = _mm_load_ps((float*)(source0 + 16 * x));
- __m128 c1 = _mm_load_ps((float*)(source1 + 16 * x));
- __m128 c2 = _mm_load_ps((float*)(source2 + 16 * x));
- __m128 c3 = _mm_load_ps((float*)(source3 + 16 * x));
- __m128 c4 = _mm_load_ps((float*)(source4 + 16 * x));
- __m128 c5 = _mm_load_ps((float*)(source5 + 16 * x));
- __m128 c6 = _mm_load_ps((float*)(source6 + 16 * x));
- __m128 c7 = _mm_load_ps((float*)(source7 + 16 * x));
- __m128 c8 = _mm_load_ps((float*)(source8 + 16 * x));
- __m128 c9 = _mm_load_ps((float*)(source9 + 16 * x));
- __m128 cA = _mm_load_ps((float*)(sourceA + 16 * x));
- __m128 cB = _mm_load_ps((float*)(sourceB + 16 * x));
- __m128 cC = _mm_load_ps((float*)(sourceC + 16 * x));
- __m128 cD = _mm_load_ps((float*)(sourceD + 16 * x));
- __m128 cE = _mm_load_ps((float*)(sourceE + 16 * x));
- __m128 cF = _mm_load_ps((float*)(sourceF + 16 * x));
-
- c0 = _mm_add_ps(c0, c1);
- c2 = _mm_add_ps(c2, c3);
- c4 = _mm_add_ps(c4, c5);
- c6 = _mm_add_ps(c6, c7);
- c8 = _mm_add_ps(c8, c9);
- cA = _mm_add_ps(cA, cB);
- cC = _mm_add_ps(cC, cD);
- cE = _mm_add_ps(cE, cF);
- c0 = _mm_add_ps(c0, c2);
- c4 = _mm_add_ps(c4, c6);
- c8 = _mm_add_ps(c8, cA);
- cC = _mm_add_ps(cC, cE);
- c0 = _mm_add_ps(c0, c4);
- c8 = _mm_add_ps(c8, cC);
- c0 = _mm_add_ps(c0, c8);
- c0 = _mm_mul_ps(c0, _mm_set1_ps(1.0f / 16.0f));
-
- _mm_store_ps((float*)(source0 + 16 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
- }
- else
- #endif
- {
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < 4 * width; x++)
- {
- float c0 = *(float*)(source0 + 4 * x);
- float c1 = *(float*)(source1 + 4 * x);
-
- c0 = c0 + c1;
- c0 *= 1.0f / 2.0f;
-
- *(float*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < 4 * width; x++)
- {
- float c0 = *(float*)(source0 + 4 * x);
- float c1 = *(float*)(source1 + 4 * x);
- float c2 = *(float*)(source2 + 4 * x);
- float c3 = *(float*)(source3 + 4 * x);
-
- c0 = c0 + c1;
- c2 = c2 + c3;
- c0 = c0 + c2;
- c0 *= 1.0f / 4.0f;
-
- *(float*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < 4 * width; x++)
- {
- float c0 = *(float*)(source0 + 4 * x);
- float c1 = *(float*)(source1 + 4 * x);
- float c2 = *(float*)(source2 + 4 * x);
- float c3 = *(float*)(source3 + 4 * x);
- float c4 = *(float*)(source4 + 4 * x);
- float c5 = *(float*)(source5 + 4 * x);
- float c6 = *(float*)(source6 + 4 * x);
- float c7 = *(float*)(source7 + 4 * x);
-
- c0 = c0 + c1;
- c2 = c2 + c3;
- c4 = c4 + c5;
- c6 = c6 + c7;
- c0 = c0 + c2;
- c4 = c4 + c6;
- c0 = c0 + c4;
- c0 *= 1.0f / 8.0f;
-
- *(float*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < 4 * width; x++)
- {
- float c0 = *(float*)(source0 + 4 * x);
- float c1 = *(float*)(source1 + 4 * x);
- float c2 = *(float*)(source2 + 4 * x);
- float c3 = *(float*)(source3 + 4 * x);
- float c4 = *(float*)(source4 + 4 * x);
- float c5 = *(float*)(source5 + 4 * x);
- float c6 = *(float*)(source6 + 4 * x);
- float c7 = *(float*)(source7 + 4 * x);
- float c8 = *(float*)(source8 + 4 * x);
- float c9 = *(float*)(source9 + 4 * x);
- float cA = *(float*)(sourceA + 4 * x);
- float cB = *(float*)(sourceB + 4 * x);
- float cC = *(float*)(sourceC + 4 * x);
- float cD = *(float*)(sourceD + 4 * x);
- float cE = *(float*)(sourceE + 4 * x);
- float cF = *(float*)(sourceF + 4 * x);
-
- c0 = c0 + c1;
- c2 = c2 + c3;
- c4 = c4 + c5;
- c6 = c6 + c7;
- c8 = c8 + c9;
- cA = cA + cB;
- cC = cC + cD;
- cE = cE + cF;
- c0 = c0 + c2;
- c4 = c4 + c6;
- c8 = c8 + cA;
- cC = cC + cE;
- c0 = c0 + c4;
- c8 = c8 + cC;
- c0 = c0 + c8;
- c0 *= 1.0f / 16.0f;
-
- *(float*)(source0 + 4 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
- }
- }
- else if(internal.format == VK_FORMAT_R5G6B5_UNORM_PACK16)
- {
- #if defined(__i386__) || defined(__x86_64__)
- if(CPUID::supportsSSE2() && (width % 8) == 0)
- {
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 8)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 2 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 2 * x));
-
- static const ushort8 r_b = {0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F};
- static const ushort8 _g_ = {0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0};
- __m128i c0_r_b = _mm_and_si128(c0, reinterpret_cast<const __m128i&>(r_b));
- __m128i c0__g_ = _mm_and_si128(c0, reinterpret_cast<const __m128i&>(_g_));
- __m128i c1_r_b = _mm_and_si128(c1, reinterpret_cast<const __m128i&>(r_b));
- __m128i c1__g_ = _mm_and_si128(c1, reinterpret_cast<const __m128i&>(_g_));
-
- c0 = _mm_avg_epu8(c0_r_b, c1_r_b);
- c0 = _mm_and_si128(c0, reinterpret_cast<const __m128i&>(r_b));
- c1 = _mm_avg_epu16(c0__g_, c1__g_);
- c1 = _mm_and_si128(c1, reinterpret_cast<const __m128i&>(_g_));
- c0 = _mm_or_si128(c0, c1);
-
- _mm_store_si128((__m128i*)(source0 + 2 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 8)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 2 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 2 * x));
- __m128i c2 = _mm_load_si128((__m128i*)(source2 + 2 * x));
- __m128i c3 = _mm_load_si128((__m128i*)(source3 + 2 * x));
-
- static const ushort8 r_b = {0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F};
- static const ushort8 _g_ = {0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0};
- __m128i c0_r_b = _mm_and_si128(c0, reinterpret_cast<const __m128i&>(r_b));
- __m128i c0__g_ = _mm_and_si128(c0, reinterpret_cast<const __m128i&>(_g_));
- __m128i c1_r_b = _mm_and_si128(c1, reinterpret_cast<const __m128i&>(r_b));
- __m128i c1__g_ = _mm_and_si128(c1, reinterpret_cast<const __m128i&>(_g_));
- __m128i c2_r_b = _mm_and_si128(c2, reinterpret_cast<const __m128i&>(r_b));
- __m128i c2__g_ = _mm_and_si128(c2, reinterpret_cast<const __m128i&>(_g_));
- __m128i c3_r_b = _mm_and_si128(c3, reinterpret_cast<const __m128i&>(r_b));
- __m128i c3__g_ = _mm_and_si128(c3, reinterpret_cast<const __m128i&>(_g_));
-
- c0 = _mm_avg_epu8(c0_r_b, c1_r_b);
- c2 = _mm_avg_epu8(c2_r_b, c3_r_b);
- c0 = _mm_avg_epu8(c0, c2);
- c0 = _mm_and_si128(c0, reinterpret_cast<const __m128i&>(r_b));
- c1 = _mm_avg_epu16(c0__g_, c1__g_);
- c3 = _mm_avg_epu16(c2__g_, c3__g_);
- c1 = _mm_avg_epu16(c1, c3);
- c1 = _mm_and_si128(c1, reinterpret_cast<const __m128i&>(_g_));
- c0 = _mm_or_si128(c0, c1);
-
- _mm_store_si128((__m128i*)(source0 + 2 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 8)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 2 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 2 * x));
- __m128i c2 = _mm_load_si128((__m128i*)(source2 + 2 * x));
- __m128i c3 = _mm_load_si128((__m128i*)(source3 + 2 * x));
- __m128i c4 = _mm_load_si128((__m128i*)(source4 + 2 * x));
- __m128i c5 = _mm_load_si128((__m128i*)(source5 + 2 * x));
- __m128i c6 = _mm_load_si128((__m128i*)(source6 + 2 * x));
- __m128i c7 = _mm_load_si128((__m128i*)(source7 + 2 * x));
-
- static const ushort8 r_b = {0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F};
- static const ushort8 _g_ = {0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0};
- __m128i c0_r_b = _mm_and_si128(c0, reinterpret_cast<const __m128i&>(r_b));
- __m128i c0__g_ = _mm_and_si128(c0, reinterpret_cast<const __m128i&>(_g_));
- __m128i c1_r_b = _mm_and_si128(c1, reinterpret_cast<const __m128i&>(r_b));
- __m128i c1__g_ = _mm_and_si128(c1, reinterpret_cast<const __m128i&>(_g_));
- __m128i c2_r_b = _mm_and_si128(c2, reinterpret_cast<const __m128i&>(r_b));
- __m128i c2__g_ = _mm_and_si128(c2, reinterpret_cast<const __m128i&>(_g_));
- __m128i c3_r_b = _mm_and_si128(c3, reinterpret_cast<const __m128i&>(r_b));
- __m128i c3__g_ = _mm_and_si128(c3, reinterpret_cast<const __m128i&>(_g_));
- __m128i c4_r_b = _mm_and_si128(c4, reinterpret_cast<const __m128i&>(r_b));
- __m128i c4__g_ = _mm_and_si128(c4, reinterpret_cast<const __m128i&>(_g_));
- __m128i c5_r_b = _mm_and_si128(c5, reinterpret_cast<const __m128i&>(r_b));
- __m128i c5__g_ = _mm_and_si128(c5, reinterpret_cast<const __m128i&>(_g_));
- __m128i c6_r_b = _mm_and_si128(c6, reinterpret_cast<const __m128i&>(r_b));
- __m128i c6__g_ = _mm_and_si128(c6, reinterpret_cast<const __m128i&>(_g_));
- __m128i c7_r_b = _mm_and_si128(c7, reinterpret_cast<const __m128i&>(r_b));
- __m128i c7__g_ = _mm_and_si128(c7, reinterpret_cast<const __m128i&>(_g_));
-
- c0 = _mm_avg_epu8(c0_r_b, c1_r_b);
- c2 = _mm_avg_epu8(c2_r_b, c3_r_b);
- c4 = _mm_avg_epu8(c4_r_b, c5_r_b);
- c6 = _mm_avg_epu8(c6_r_b, c7_r_b);
- c0 = _mm_avg_epu8(c0, c2);
- c4 = _mm_avg_epu8(c4, c6);
- c0 = _mm_avg_epu8(c0, c4);
- c0 = _mm_and_si128(c0, reinterpret_cast<const __m128i&>(r_b));
- c1 = _mm_avg_epu16(c0__g_, c1__g_);
- c3 = _mm_avg_epu16(c2__g_, c3__g_);
- c5 = _mm_avg_epu16(c4__g_, c5__g_);
- c7 = _mm_avg_epu16(c6__g_, c7__g_);
- c1 = _mm_avg_epu16(c1, c3);
- c5 = _mm_avg_epu16(c5, c7);
- c1 = _mm_avg_epu16(c1, c5);
- c1 = _mm_and_si128(c1, reinterpret_cast<const __m128i&>(_g_));
- c0 = _mm_or_si128(c0, c1);
-
- _mm_store_si128((__m128i*)(source0 + 2 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x += 8)
- {
- __m128i c0 = _mm_load_si128((__m128i*)(source0 + 2 * x));
- __m128i c1 = _mm_load_si128((__m128i*)(source1 + 2 * x));
- __m128i c2 = _mm_load_si128((__m128i*)(source2 + 2 * x));
- __m128i c3 = _mm_load_si128((__m128i*)(source3 + 2 * x));
- __m128i c4 = _mm_load_si128((__m128i*)(source4 + 2 * x));
- __m128i c5 = _mm_load_si128((__m128i*)(source5 + 2 * x));
- __m128i c6 = _mm_load_si128((__m128i*)(source6 + 2 * x));
- __m128i c7 = _mm_load_si128((__m128i*)(source7 + 2 * x));
- __m128i c8 = _mm_load_si128((__m128i*)(source8 + 2 * x));
- __m128i c9 = _mm_load_si128((__m128i*)(source9 + 2 * x));
- __m128i cA = _mm_load_si128((__m128i*)(sourceA + 2 * x));
- __m128i cB = _mm_load_si128((__m128i*)(sourceB + 2 * x));
- __m128i cC = _mm_load_si128((__m128i*)(sourceC + 2 * x));
- __m128i cD = _mm_load_si128((__m128i*)(sourceD + 2 * x));
- __m128i cE = _mm_load_si128((__m128i*)(sourceE + 2 * x));
- __m128i cF = _mm_load_si128((__m128i*)(sourceF + 2 * x));
-
- static const ushort8 r_b = {0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F, 0xF81F};
- static const ushort8 _g_ = {0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x07E0};
- __m128i c0_r_b = _mm_and_si128(c0, reinterpret_cast<const __m128i&>(r_b));
- __m128i c0__g_ = _mm_and_si128(c0, reinterpret_cast<const __m128i&>(_g_));
- __m128i c1_r_b = _mm_and_si128(c1, reinterpret_cast<const __m128i&>(r_b));
- __m128i c1__g_ = _mm_and_si128(c1, reinterpret_cast<const __m128i&>(_g_));
- __m128i c2_r_b = _mm_and_si128(c2, reinterpret_cast<const __m128i&>(r_b));
- __m128i c2__g_ = _mm_and_si128(c2, reinterpret_cast<const __m128i&>(_g_));
- __m128i c3_r_b = _mm_and_si128(c3, reinterpret_cast<const __m128i&>(r_b));
- __m128i c3__g_ = _mm_and_si128(c3, reinterpret_cast<const __m128i&>(_g_));
- __m128i c4_r_b = _mm_and_si128(c4, reinterpret_cast<const __m128i&>(r_b));
- __m128i c4__g_ = _mm_and_si128(c4, reinterpret_cast<const __m128i&>(_g_));
- __m128i c5_r_b = _mm_and_si128(c5, reinterpret_cast<const __m128i&>(r_b));
- __m128i c5__g_ = _mm_and_si128(c5, reinterpret_cast<const __m128i&>(_g_));
- __m128i c6_r_b = _mm_and_si128(c6, reinterpret_cast<const __m128i&>(r_b));
- __m128i c6__g_ = _mm_and_si128(c6, reinterpret_cast<const __m128i&>(_g_));
- __m128i c7_r_b = _mm_and_si128(c7, reinterpret_cast<const __m128i&>(r_b));
- __m128i c7__g_ = _mm_and_si128(c7, reinterpret_cast<const __m128i&>(_g_));
- __m128i c8_r_b = _mm_and_si128(c8, reinterpret_cast<const __m128i&>(r_b));
- __m128i c8__g_ = _mm_and_si128(c8, reinterpret_cast<const __m128i&>(_g_));
- __m128i c9_r_b = _mm_and_si128(c9, reinterpret_cast<const __m128i&>(r_b));
- __m128i c9__g_ = _mm_and_si128(c9, reinterpret_cast<const __m128i&>(_g_));
- __m128i cA_r_b = _mm_and_si128(cA, reinterpret_cast<const __m128i&>(r_b));
- __m128i cA__g_ = _mm_and_si128(cA, reinterpret_cast<const __m128i&>(_g_));
- __m128i cB_r_b = _mm_and_si128(cB, reinterpret_cast<const __m128i&>(r_b));
- __m128i cB__g_ = _mm_and_si128(cB, reinterpret_cast<const __m128i&>(_g_));
- __m128i cC_r_b = _mm_and_si128(cC, reinterpret_cast<const __m128i&>(r_b));
- __m128i cC__g_ = _mm_and_si128(cC, reinterpret_cast<const __m128i&>(_g_));
- __m128i cD_r_b = _mm_and_si128(cD, reinterpret_cast<const __m128i&>(r_b));
- __m128i cD__g_ = _mm_and_si128(cD, reinterpret_cast<const __m128i&>(_g_));
- __m128i cE_r_b = _mm_and_si128(cE, reinterpret_cast<const __m128i&>(r_b));
- __m128i cE__g_ = _mm_and_si128(cE, reinterpret_cast<const __m128i&>(_g_));
- __m128i cF_r_b = _mm_and_si128(cF, reinterpret_cast<const __m128i&>(r_b));
- __m128i cF__g_ = _mm_and_si128(cF, reinterpret_cast<const __m128i&>(_g_));
-
- c0 = _mm_avg_epu8(c0_r_b, c1_r_b);
- c2 = _mm_avg_epu8(c2_r_b, c3_r_b);
- c4 = _mm_avg_epu8(c4_r_b, c5_r_b);
- c6 = _mm_avg_epu8(c6_r_b, c7_r_b);
- c8 = _mm_avg_epu8(c8_r_b, c9_r_b);
- cA = _mm_avg_epu8(cA_r_b, cB_r_b);
- cC = _mm_avg_epu8(cC_r_b, cD_r_b);
- cE = _mm_avg_epu8(cE_r_b, cF_r_b);
- c0 = _mm_avg_epu8(c0, c2);
- c4 = _mm_avg_epu8(c4, c6);
- c8 = _mm_avg_epu8(c8, cA);
- cC = _mm_avg_epu8(cC, cE);
- c0 = _mm_avg_epu8(c0, c4);
- c8 = _mm_avg_epu8(c8, cC);
- c0 = _mm_avg_epu8(c0, c8);
- c0 = _mm_and_si128(c0, reinterpret_cast<const __m128i&>(r_b));
- c1 = _mm_avg_epu16(c0__g_, c1__g_);
- c3 = _mm_avg_epu16(c2__g_, c3__g_);
- c5 = _mm_avg_epu16(c4__g_, c5__g_);
- c7 = _mm_avg_epu16(c6__g_, c7__g_);
- c9 = _mm_avg_epu16(c8__g_, c9__g_);
- cB = _mm_avg_epu16(cA__g_, cB__g_);
- cD = _mm_avg_epu16(cC__g_, cD__g_);
- cF = _mm_avg_epu16(cE__g_, cF__g_);
- c1 = _mm_avg_epu8(c1, c3);
- c5 = _mm_avg_epu8(c5, c7);
- c9 = _mm_avg_epu8(c9, cB);
- cD = _mm_avg_epu8(cD, cF);
- c1 = _mm_avg_epu8(c1, c5);
- c9 = _mm_avg_epu8(c9, cD);
- c1 = _mm_avg_epu8(c1, c9);
- c1 = _mm_and_si128(c1, reinterpret_cast<const __m128i&>(_g_));
- c0 = _mm_or_si128(c0, c1);
-
- _mm_store_si128((__m128i*)(source0 + 2 * x), c0);
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
- }
- else
- #endif
- {
- #define AVERAGE(x, y) (((x) & (y)) + ((((x) ^ (y)) >> 1) & 0x7BEF) + (((x) ^ (y)) & 0x0821))
-
- if(internal.samples == 2)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- unsigned short c0 = *(unsigned short*)(source0 + 2 * x);
- unsigned short c1 = *(unsigned short*)(source1 + 2 * x);
-
- c0 = AVERAGE(c0, c1);
-
- *(unsigned short*)(source0 + 2 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- }
- }
- else if(internal.samples == 4)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- unsigned short c0 = *(unsigned short*)(source0 + 2 * x);
- unsigned short c1 = *(unsigned short*)(source1 + 2 * x);
- unsigned short c2 = *(unsigned short*)(source2 + 2 * x);
- unsigned short c3 = *(unsigned short*)(source3 + 2 * x);
-
- c0 = AVERAGE(c0, c1);
- c2 = AVERAGE(c2, c3);
- c0 = AVERAGE(c0, c2);
-
- *(unsigned short*)(source0 + 2 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- }
- }
- else if(internal.samples == 8)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- unsigned short c0 = *(unsigned short*)(source0 + 2 * x);
- unsigned short c1 = *(unsigned short*)(source1 + 2 * x);
- unsigned short c2 = *(unsigned short*)(source2 + 2 * x);
- unsigned short c3 = *(unsigned short*)(source3 + 2 * x);
- unsigned short c4 = *(unsigned short*)(source4 + 2 * x);
- unsigned short c5 = *(unsigned short*)(source5 + 2 * x);
- unsigned short c6 = *(unsigned short*)(source6 + 2 * x);
- unsigned short c7 = *(unsigned short*)(source7 + 2 * x);
-
- c0 = AVERAGE(c0, c1);
- c2 = AVERAGE(c2, c3);
- c4 = AVERAGE(c4, c5);
- c6 = AVERAGE(c6, c7);
- c0 = AVERAGE(c0, c2);
- c4 = AVERAGE(c4, c6);
- c0 = AVERAGE(c0, c4);
-
- *(unsigned short*)(source0 + 2 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- }
- }
- else if(internal.samples == 16)
- {
- for(int y = 0; y < height; y++)
- {
- for(int x = 0; x < width; x++)
- {
- unsigned short c0 = *(unsigned short*)(source0 + 2 * x);
- unsigned short c1 = *(unsigned short*)(source1 + 2 * x);
- unsigned short c2 = *(unsigned short*)(source2 + 2 * x);
- unsigned short c3 = *(unsigned short*)(source3 + 2 * x);
- unsigned short c4 = *(unsigned short*)(source4 + 2 * x);
- unsigned short c5 = *(unsigned short*)(source5 + 2 * x);
- unsigned short c6 = *(unsigned short*)(source6 + 2 * x);
- unsigned short c7 = *(unsigned short*)(source7 + 2 * x);
- unsigned short c8 = *(unsigned short*)(source8 + 2 * x);
- unsigned short c9 = *(unsigned short*)(source9 + 2 * x);
- unsigned short cA = *(unsigned short*)(sourceA + 2 * x);
- unsigned short cB = *(unsigned short*)(sourceB + 2 * x);
- unsigned short cC = *(unsigned short*)(sourceC + 2 * x);
- unsigned short cD = *(unsigned short*)(sourceD + 2 * x);
- unsigned short cE = *(unsigned short*)(sourceE + 2 * x);
- unsigned short cF = *(unsigned short*)(sourceF + 2 * x);
-
- c0 = AVERAGE(c0, c1);
- c2 = AVERAGE(c2, c3);
- c4 = AVERAGE(c4, c5);
- c6 = AVERAGE(c6, c7);
- c8 = AVERAGE(c8, c9);
- cA = AVERAGE(cA, cB);
- cC = AVERAGE(cC, cD);
- cE = AVERAGE(cE, cF);
- c0 = AVERAGE(c0, c2);
- c4 = AVERAGE(c4, c6);
- c8 = AVERAGE(c8, cA);
- cC = AVERAGE(cC, cE);
- c0 = AVERAGE(c0, c4);
- c8 = AVERAGE(c8, cC);
- c0 = AVERAGE(c0, c8);
-
- *(unsigned short*)(source0 + 2 * x) = c0;
- }
-
- source0 += pitch;
- source1 += pitch;
- source2 += pitch;
- source3 += pitch;
- source4 += pitch;
- source5 += pitch;
- source6 += pitch;
- source7 += pitch;
- source8 += pitch;
- source9 += pitch;
- sourceA += pitch;
- sourceB += pitch;
- sourceC += pitch;
- sourceD += pitch;
- sourceE += pitch;
- sourceF += pitch;
- }
- }
- else ASSERT(false);
-
- #undef AVERAGE
- }
- }
- else
- {
- // UNIMPLEMENTED();
- }
- }
-}
diff --git a/chromium/third_party/swiftshader/src/Device/Surface.hpp b/chromium/third_party/swiftshader/src/Device/Surface.hpp
deleted file mode 100644
index 49f2e4ea441..00000000000
--- a/chromium/third_party/swiftshader/src/Device/Surface.hpp
+++ /dev/null
@@ -1,484 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef sw_Surface_hpp
-#define sw_Surface_hpp
-
-#include "Color.hpp"
-#include "Device/Config.hpp"
-#include "System/Resource.hpp"
-#include <vulkan/vulkan_core.h>
-
-namespace sw
-{
- class Resource;
-
- template <typename T> struct RectT
- {
- RectT() {}
- RectT(T x0i, T y0i, T x1i, T y1i) : x0(x0i), y0(y0i), x1(x1i), y1(y1i) {}
-
- void clip(T minX, T minY, T maxX, T maxY)
- {
- x0 = clamp(x0, minX, maxX);
- y0 = clamp(y0, minY, maxY);
- x1 = clamp(x1, minX, maxX);
- y1 = clamp(y1, minY, maxY);
- }
-
- T width() const { return x1 - x0; }
- T height() const { return y1 - y0; }
-
- T x0; // Inclusive
- T y0; // Inclusive
- T x1; // Exclusive
- T y1; // Exclusive
- };
-
- typedef RectT<int> Rect;
- typedef RectT<float> RectF;
-
- template<typename T> struct SliceRectT : public RectT<T>
- {
- SliceRectT() : slice(0) {}
- SliceRectT(const RectT<T>& rect) : RectT<T>(rect), slice(0) {}
- SliceRectT(const RectT<T>& rect, int s) : RectT<T>(rect), slice(s) {}
- SliceRectT(T x0, T y0, T x1, T y1, int s) : RectT<T>(x0, y0, x1, y1), slice(s) {}
- int slice;
- };
-
- typedef SliceRectT<int> SliceRect;
- typedef SliceRectT<float> SliceRectF;
-
- enum Lock
- {
- LOCK_UNLOCKED,
- LOCK_READONLY,
- LOCK_WRITEONLY,
- LOCK_READWRITE,
- LOCK_DISCARD,
- LOCK_UPDATE // Write access which doesn't dirty the buffer, because it's being updated with the sibling's data.
- };
-
- class Surface
- {
- private:
- struct Buffer
- {
- friend Surface;
-
- private:
- void write(int x, int y, int z, const Color<float> &color);
- void write(int x, int y, const Color<float> &color);
- void write(void *element, const Color<float> &color);
- Color<float> read(int x, int y, int z) const;
- Color<float> read(int x, int y) const;
- Color<float> read(void *element) const;
- Color<float> sample(float x, float y, float z) const;
- Color<float> sample(float x, float y, int layer) const;
-
- void *lockRect(int x, int y, int z, Lock lock);
- void unlockRect();
-
- void *buffer;
- int width;
- int height;
- int depth;
- short border;
- short samples;
-
- int bytes;
- int pitchB;
- int pitchP;
- int sliceB;
- int sliceP;
-
- VkFormat format;
- AtomicInt lock;
-
- bool dirty; // Sibling internal/external buffer doesn't match.
- };
-
- protected:
- Surface(int width, int height, int depth, VkFormat format, void *pixels, int pitch, int slice);
- Surface(Resource *texture, int width, int height, int depth, int border, int samples, VkFormat format, bool lockable, bool renderTarget, int pitchP = 0);
-
- public:
- static Surface *create(int width, int height, int depth, VkFormat format, void *pixels, int pitch, int slice);
- static Surface *create(Resource *texture, int width, int height, int depth, int border, int samples, VkFormat format, bool lockable, bool renderTarget, int pitchP = 0);
-
- virtual ~Surface() = 0;
-
- inline void *lock(int x, int y, int z, Lock lock, Accessor client, bool internal = false);
- inline void unlock(bool internal = false);
- inline int getWidth() const;
- inline int getHeight() const;
- inline int getDepth() const;
- inline int getBorder() const;
- inline VkFormat getFormat(bool internal = false) const;
- inline int getPitchB(bool internal = false) const;
- inline int getPitchP(bool internal = false) const;
- inline int getSliceB(bool internal = false) const;
- inline int getSliceP(bool internal = false) const;
-
- void *lockExternal(int x, int y, int z, Lock lock, Accessor client);
- void unlockExternal();
- inline VkFormat getExternalFormat() const;
- inline int getExternalPitchB() const;
- inline int getExternalPitchP() const;
- inline int getExternalSliceB() const;
- inline int getExternalSliceP() const;
-
- virtual void *lockInternal(int x, int y, int z, Lock lock, Accessor client) = 0;
- virtual void unlockInternal() = 0;
- inline VkFormat getInternalFormat() const;
- inline int getInternalPitchB() const;
- inline int getInternalPitchP() const;
- inline int getInternalSliceB() const;
- inline int getInternalSliceP() const;
-
- void *lockStencil(int x, int y, int front, Accessor client);
- void unlockStencil();
- inline VkFormat getStencilFormat() const;
- inline int getStencilPitchB() const;
- inline int getStencilSliceB() const;
-
- void sync(); // Wait for lock(s) to be released.
- virtual bool requiresSync() const { return false; }
- inline bool isUnlocked() const; // Only reliable after sync().
-
- inline int getSamples() const;
- inline int getMultiSampleCount() const;
- inline int getSuperSampleCount() const;
-
- bool isEntire(const Rect& rect) const;
- Rect getRect() const;
- void clearDepth(float depth, int x0, int y0, int width, int height);
- void clearStencil(unsigned char stencil, unsigned char mask, int x0, int y0, int width, int height);
- void fill(const Color<float> &color, int x0, int y0, int width, int height);
-
- Color<float> readExternal(int x, int y, int z) const;
- Color<float> readExternal(int x, int y) const;
- Color<float> sampleExternal(float x, float y, float z) const;
- Color<float> sampleExternal(float x, float y) const;
- void writeExternal(int x, int y, int z, const Color<float> &color);
- void writeExternal(int x, int y, const Color<float> &color);
-
- void copyInternal(const Surface* src, int x, int y, float srcX, float srcY, bool filter);
- void copyInternal(const Surface* src, int x, int y, int z, float srcX, float srcY, float srcZ, bool filter);
-
- enum Edge { TOP, BOTTOM, RIGHT, LEFT };
- void copyCubeEdge(Edge dstEdge, Surface *src, Edge srcEdge);
- void computeCubeCorner(int x0, int y0, int x1, int y1);
-
- bool hasStencil() const;
- bool hasDepth() const;
- bool isRenderTarget() const;
-
- bool hasDirtyContents() const;
- void markContentsClean();
- inline bool isExternalDirty() const;
- Resource *getResource();
-
- static int bytes(VkFormat format);
- static int pitchB(int width, int border, VkFormat format, bool target);
- static int pitchP(int width, int border, VkFormat format, bool target);
- static int sliceB(int width, int height, int border, VkFormat format, bool target);
- static int sliceP(int width, int height, int border, VkFormat format, bool target);
- static size_t size(int width, int height, int depth, int border, int samples, VkFormat format);
-
- static bool isStencil(VkFormat format);
- static bool isDepth(VkFormat format);
- static bool hasQuadLayout(VkFormat format);
-
- static bool isFloatFormat(VkFormat format);
- static bool isUnsignedComponent(VkFormat format, int component);
- static bool isSRGBreadable(VkFormat format);
- static bool isSRGBwritable(VkFormat format);
- static bool isSRGBformat(VkFormat format);
- static bool isCompressed(VkFormat format);
- static bool isSignedNonNormalizedInteger(VkFormat format);
- static bool isUnsignedNonNormalizedInteger(VkFormat format);
- static bool isNonNormalizedInteger(VkFormat format);
- static bool isNormalizedInteger(VkFormat format);
- static int componentCount(VkFormat format);
-
- private:
- sw::Resource *resource;
-
- typedef unsigned char byte;
- typedef unsigned short word;
- typedef unsigned int dword;
- typedef uint64_t qword;
-
- struct DXT1
- {
- word c0;
- word c1;
- dword lut;
- };
-
- struct DXT3
- {
- qword a;
-
- word c0;
- word c1;
- dword lut;
- };
-
- struct DXT5
- {
- union
- {
- struct
- {
- byte a0;
- byte a1;
- };
-
- qword alut; // Skip first 16 bit
- };
-
- word c0;
- word c1;
- dword clut;
- };
-
- struct ATI2
- {
- union
- {
- struct
- {
- byte y0;
- byte y1;
- };
-
- qword ylut; // Skip first 16 bit
- };
-
- union
- {
- struct
- {
- byte x0;
- byte x1;
- };
-
- qword xlut; // Skip first 16 bit
- };
- };
-
- struct ATI1
- {
- union
- {
- struct
- {
- byte r0;
- byte r1;
- };
-
- qword rlut; // Skip first 16 bit
- };
- };
-
- static void decodeDXT1(Buffer &internal, Buffer &external);
- static void decodeDXT3(Buffer &internal, Buffer &external);
- static void decodeDXT5(Buffer &internal, Buffer &external);
- static void decodeATI1(Buffer &internal, Buffer &external);
- static void decodeATI2(Buffer &internal, Buffer &external);
- static void decodeEAC(Buffer &internal, Buffer &external, int nbChannels, bool isSigned);
- static void decodeETC2(Buffer &internal, Buffer &external, int nbAlphaBits, bool isSRGB);
- static void decodeASTC(Buffer &internal, Buffer &external, int xSize, int ySize, int zSize, bool isSRGB);
-
- static void update(Buffer &destination, Buffer &source);
- static void genericUpdate(Buffer &destination, Buffer &source);
- static void *allocateBuffer(int width, int height, int depth, int border, int samples, VkFormat format);
- static void memfill4(void *buffer, int pattern, int bytes);
-
- bool identicalBuffers() const;
- VkFormat selectInternalFormat(VkFormat format) const;
-
- void resolve();
-
- Buffer external;
- Buffer internal;
- Buffer stencil;
-
- const bool lockable;
- const bool renderTarget;
-
- bool dirtyContents; // Sibling surfaces need updating (mipmaps / cube borders).
-
- bool hasParent;
- bool ownExternal;
- };
-}
-
-#undef min
-#undef max
-
-namespace sw
-{
- void *Surface::lock(int x, int y, int z, Lock lock, Accessor client, bool internal)
- {
- return internal ? lockInternal(x, y, z, lock, client) : lockExternal(x, y, z, lock, client);
- }
-
- void Surface::unlock(bool internal)
- {
- return internal ? unlockInternal() : unlockExternal();
- }
-
- int Surface::getWidth() const
- {
- return external.width;
- }
-
- int Surface::getHeight() const
- {
- return external.height;
- }
-
- int Surface::getDepth() const
- {
- return external.depth;
- }
-
- int Surface::getBorder() const
- {
- return internal.border;
- }
-
- VkFormat Surface::getFormat(bool internal) const
- {
- return internal ? getInternalFormat() : getExternalFormat();
- }
-
- int Surface::getPitchB(bool internal) const
- {
- return internal ? getInternalPitchB() : getExternalPitchB();
- }
-
- int Surface::getPitchP(bool internal) const
- {
- return internal ? getInternalPitchP() : getExternalPitchP();
- }
-
- int Surface::getSliceB(bool internal) const
- {
- return internal ? getInternalSliceB() : getExternalSliceB();
- }
-
- int Surface::getSliceP(bool internal) const
- {
- return internal ? getInternalSliceP() : getExternalSliceP();
- }
-
- VkFormat Surface::getExternalFormat() const
- {
- return external.format;
- }
-
- int Surface::getExternalPitchB() const
- {
- return external.pitchB;
- }
-
- int Surface::getExternalPitchP() const
- {
- return external.pitchP;
- }
-
- int Surface::getExternalSliceB() const
- {
- return external.sliceB;
- }
-
- int Surface::getExternalSliceP() const
- {
- return external.sliceP;
- }
-
- VkFormat Surface::getInternalFormat() const
- {
- return internal.format;
- }
-
- int Surface::getInternalPitchB() const
- {
- return internal.pitchB;
- }
-
- int Surface::getInternalPitchP() const
- {
- return internal.pitchP;
- }
-
- int Surface::getInternalSliceB() const
- {
- return internal.sliceB;
- }
-
- int Surface::getInternalSliceP() const
- {
- return internal.sliceP;
- }
-
- VkFormat Surface::getStencilFormat() const
- {
- return stencil.format;
- }
-
- int Surface::getStencilPitchB() const
- {
- return stencil.pitchB;
- }
-
- int Surface::getStencilSliceB() const
- {
- return stencil.sliceB;
- }
-
- int Surface::getSamples() const
- {
- return internal.samples;
- }
-
- int Surface::getMultiSampleCount() const
- {
- return sw::min((int)internal.samples, 4);
- }
-
- int Surface::getSuperSampleCount() const
- {
- return internal.samples > 4 ? internal.samples / 4 : 1;
- }
-
- bool Surface::isUnlocked() const
- {
- return external.lock == LOCK_UNLOCKED &&
- internal.lock == LOCK_UNLOCKED &&
- stencil.lock == LOCK_UNLOCKED;
- }
-
- bool Surface::isExternalDirty() const
- {
- return external.buffer && external.buffer != internal.buffer && external.dirty;
- }
-}
-
-#endif // sw_Surface_hpp
diff --git a/chromium/third_party/swiftshader/src/Device/SwiftConfig.cpp b/chromium/third_party/swiftshader/src/Device/SwiftConfig.cpp
index db3a97d1029..3471ff1809e 100644
--- a/chromium/third_party/swiftshader/src/Device/SwiftConfig.cpp
+++ b/chromium/third_party/swiftshader/src/Device/SwiftConfig.cpp
@@ -422,7 +422,6 @@ namespace sw
html += "<table>\n";
html += "<tr><td>Disable SwiftConfig server:</td><td><input name = 'disableServer' type='checkbox'" + (config.disableServer == true ? checked : empty) + " title='If checked disables the web browser based control panel.'></td></tr>";
html += "<tr><td>Force windowed mode:</td><td><input name = 'forceWindowed' type='checkbox'" + (config.forceWindowed == true ? checked : empty) + " title='If checked prevents the application from switching to full-screen mode.'></td></tr>";
- html += "<tr><td>Complementary depth buffer:</td><td><input name = 'complementaryDepthBuffer' type='checkbox'" + (config.complementaryDepthBuffer == true ? checked : empty) + " title='If checked causes 1 - z to be stored in the depth buffer.'></td></tr>";
html += "<tr><td>Post alpha blend sRGB conversion:</td><td><input name = 'postBlendSRGB' type='checkbox'" + (config.postBlendSRGB == true ? checked : empty) + " title='If checked alpha blending is performed in linear color space.'></td></tr>";
html += "<tr><td>Exact color rounding:</td><td><input name = 'exactColorRounding' type='checkbox'" + (config.exactColorRounding == true ? checked : empty) + " title='If checked color rounding is done at high accuracy.'></td></tr>";
html += "<tr><td>Disable alpha display formats:</td><td><input name = 'disableAlphaMode' type='checkbox'" + (config.disableAlphaMode == true ? checked : empty) + " title='If checked the device does not advertise the A8R8G8B8 display mode.'></td></tr>";
@@ -541,7 +540,6 @@ namespace sw
config.enableSSE4_1 = false;
config.disableServer = false;
config.forceWindowed = false;
- config.complementaryDepthBuffer = false;
config.postBlendSRGB = false;
config.exactColorRounding = false;
config.disableAlphaMode = false;
@@ -662,10 +660,6 @@ namespace sw
{
config.forceWindowed = true;
}
- else if(strstr(post, "complementaryDepthBuffer=on"))
- {
- config.complementaryDepthBuffer = true;
- }
else if(strstr(post, "postBlendSRGB=on"))
{
config.postBlendSRGB = true;
@@ -744,7 +738,6 @@ namespace sw
config.disableServer = ini.getBoolean("Testing", "DisableServer", false);
config.forceWindowed = ini.getBoolean("Testing", "ForceWindowed", false);
- config.complementaryDepthBuffer = ini.getBoolean("Testing", "ComplementaryDepthBuffer", false);
config.postBlendSRGB = ini.getBoolean("Testing", "PostBlendSRGB", false);
config.exactColorRounding = ini.getBoolean("Testing", "ExactColorRounding", true);
config.disableAlphaMode = ini.getBoolean("Testing", "DisableAlphaMode", false);
@@ -802,7 +795,6 @@ namespace sw
ini.addValue("Testing", "DisableServer", itoa(config.disableServer));
ini.addValue("Testing", "ForceWindowed", itoa(config.forceWindowed));
- ini.addValue("Testing", "ComplementaryDepthBuffer", itoa(config.complementaryDepthBuffer));
ini.addValue("Testing", "PostBlendSRGB", itoa(config.postBlendSRGB));
ini.addValue("Testing", "ExactColorRounding", itoa(config.exactColorRounding));
ini.addValue("Testing", "DisableAlphaMode", itoa(config.disableAlphaMode));
diff --git a/chromium/third_party/swiftshader/src/Device/SwiftConfig.hpp b/chromium/third_party/swiftshader/src/Device/SwiftConfig.hpp
index f940c5d85e0..fd7cc7d70eb 100644
--- a/chromium/third_party/swiftshader/src/Device/SwiftConfig.hpp
+++ b/chromium/third_party/swiftshader/src/Device/SwiftConfig.hpp
@@ -52,7 +52,6 @@ namespace sw
bool disableServer;
bool keepSystemCursor;
bool forceWindowed;
- bool complementaryDepthBuffer;
bool postBlendSRGB;
bool exactColorRounding;
bool disableAlphaMode;
diff --git a/chromium/third_party/swiftshader/src/Device/VertexProcessor.cpp b/chromium/third_party/swiftshader/src/Device/VertexProcessor.cpp
index 21ab83f61e9..e5d08591830 100644
--- a/chromium/third_party/swiftshader/src/Device/VertexProcessor.cpp
+++ b/chromium/third_party/swiftshader/src/Device/VertexProcessor.cpp
@@ -94,19 +94,32 @@ namespace sw
void VertexProcessor::setRoutineCacheSize(int cacheSize)
{
delete routineCache;
- routineCache = new RoutineCache<State>(clamp(cacheSize, 1, 65536), precacheVertex ? "sw-vertex" : 0);
+ routineCache = new RoutineCache<State>(clamp(cacheSize, 1, 65536));
}
- const VertexProcessor::State VertexProcessor::update(DrawType drawType)
+ const VertexProcessor::State VertexProcessor::update(VkPrimitiveTopology topology)
{
State state;
state.shaderID = context->vertexShader->getSerialID();
- // Note: Quads aren't handled for verticesPerPrimitive, but verticesPerPrimitive is used for transform feedback,
- // which is an OpenGL ES 3.0 feature, and OpenGL ES 3.0 doesn't support quads as a primitive type.
- DrawType type = static_cast<DrawType>(static_cast<unsigned int>(drawType) & 0xF);
- state.verticesPerPrimitive = 1 + (type >= DRAW_LINELIST) + (type >= DRAW_TRIANGLELIST);
+ switch(topology)
+ {
+ case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:
+ state.verticesPerPrimitive = 1;
+ break;
+ case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:
+ case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:
+ state.verticesPerPrimitive = 2;
+ break;
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:
+ state.verticesPerPrimitive = 3;
+ break;
+ default:
+ UNIMPLEMENTED("topology %d", int(topology));
+ }
for(int i = 0; i < MAX_VERTEX_INPUTS; i++)
{
@@ -129,7 +142,7 @@ namespace sw
if(!routine) // Create one
{
- VertexRoutine *generator = new VertexProgram(state, context->pipelineLayout, context->vertexShader);
+ VertexRoutine *generator = new VertexProgram(state, context->pipelineLayout, context->vertexShader, context->descriptorSets);
generator->generate();
routine = (*generator)("VertexRoutine_%0.8X", state.shaderID);
delete generator;
diff --git a/chromium/third_party/swiftshader/src/Device/VertexProcessor.hpp b/chromium/third_party/swiftshader/src/Device/VertexProcessor.hpp
index 28c0996268f..6d57e712efb 100644
--- a/chromium/third_party/swiftshader/src/Device/VertexProcessor.hpp
+++ b/chromium/third_party/swiftshader/src/Device/VertexProcessor.hpp
@@ -92,7 +92,7 @@ namespace sw
void setInstanceID(int instanceID);
protected:
- const State update(DrawType drawType);
+ const State update(VkPrimitiveTopology topology);
Routine *routine(const State &state);
void setRoutineCacheSize(int cacheSize);
diff --git a/chromium/third_party/swiftshader/src/Main/FrameBufferAndroid.cpp b/chromium/third_party/swiftshader/src/Main/FrameBufferAndroid.cpp
index 0ae5f095edf..38247bfb6ed 100644
--- a/chromium/third_party/swiftshader/src/Main/FrameBufferAndroid.cpp
+++ b/chromium/third_party/swiftshader/src/Main/FrameBufferAndroid.cpp
@@ -14,12 +14,16 @@
#include "FrameBufferAndroid.hpp"
+#ifndef ANDROID_NDK_BUILD
#include "Common/GrallocAndroid.hpp"
-
#include <system/window.h>
+#else
+#include <android/native_window.h>
+#endif
namespace sw
{
+#if !defined(ANDROID_NDK_BUILD)
inline int dequeueBuffer(ANativeWindow* window, ANativeWindowBuffer** buffer)
{
#if ANDROID_PLATFORM_SDK_VERSION > 16
@@ -46,18 +50,23 @@ namespace sw
return window->cancelBuffer(window, buffer);
#endif
}
+#endif // !defined(ANDROID_NDK_BUILD)
FrameBufferAndroid::FrameBufferAndroid(ANativeWindow* window, int width, int height)
: FrameBuffer(width, height, false, false),
nativeWindow(window), buffer(nullptr)
{
+#ifndef ANDROID_NDK_BUILD
nativeWindow->common.incRef(&nativeWindow->common);
native_window_set_usage(nativeWindow, GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_OFTEN);
+#endif
}
FrameBufferAndroid::~FrameBufferAndroid()
{
+#ifndef ANDROID_NDK_BUILD
nativeWindow->common.decRef(&nativeWindow->common);
+#endif
}
void FrameBufferAndroid::blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect)
@@ -72,17 +81,51 @@ namespace sw
unlock();
}
+#ifndef ANDROID_NDK_BUILD
queueBuffer(nativeWindow, buffer, -1);
+#endif
}
}
void *FrameBufferAndroid::lock()
{
- if(dequeueBuffer(nativeWindow, &buffer) != 0)
+
+#if defined(ANDROID_NDK_BUILD)
+ ANativeWindow_Buffer surfaceBuffer;
+ if (ANativeWindow_lock(nativeWindow, &surfaceBuffer, nullptr) != 0) {
+ TRACE("%s failed to lock buffer %p", __FUNCTION__, buffer);
+ return nullptr;
+ }
+ framebuffer = surfaceBuffer.bits;
+
+ if((surfaceBuffer.width < width) || (surfaceBuffer.height < height))
{
+ TRACE("lock failed: buffer of %dx%d too small for window of %dx%d",
+ surfaceBuffer.width, surfaceBuffer.height, width, height);
return nullptr;
}
+ switch(surfaceBuffer.format)
+ {
+ case AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: format = FORMAT_A8B8G8R8; break;
+ case AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: format = FORMAT_X8B8G8R8; break;
+ case AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM:
+ // Frame buffers are expected to have 16-bit or 32-bit colors, not 24-bit.
+ TRACE("Unsupported frame buffer format R8G8B8"); ASSERT(false);
+ format = FORMAT_R8G8B8; // Wrong component order.
+ break;
+ case AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM: format = FORMAT_R5G6B5; break;
+ default:
+ TRACE("Unsupported frame buffer format %d", surfaceBuffer.format); ASSERT(false);
+ format = FORMAT_NULL;
+ break;
+ }
+ stride = surfaceBuffer.stride * Surface::bytes(format);
+#else // !defined(ANDROID_NDK_BUILD)
+ if(dequeueBuffer(nativeWindow, &buffer) != 0)
+ {
+ return nullptr;
+ }
if(GrallocModule::getInstance()->lock(buffer->handle,
GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_OFTEN,
0, 0, buffer->width, buffer->height, &framebuffer) != 0)
@@ -117,8 +160,9 @@ namespace sw
format = FORMAT_NULL;
break;
}
-
stride = buffer->stride * Surface::bytes(format);
+#endif // !defined(ANDROID_NDK_BUILD)
+
return framebuffer;
}
@@ -132,10 +176,14 @@ namespace sw
framebuffer = nullptr;
+#ifdef ANDROID_NDK_BUILD
+ ANativeWindow_unlockAndPost(nativeWindow);
+#else
if(GrallocModule::getInstance()->unlock(buffer->handle) != 0)
{
TRACE("%s: badness unlock failed", __FUNCTION__);
}
+#endif
}
}
diff --git a/chromium/third_party/swiftshader/src/Main/libX11.hpp b/chromium/third_party/swiftshader/src/Main/libX11.hpp
index c18838669fa..b923d3d39ba 100644
--- a/chromium/third_party/swiftshader/src/Main/libX11.hpp
+++ b/chromium/third_party/swiftshader/src/Main/libX11.hpp
@@ -48,7 +48,7 @@ struct LibX11exports
int (*XShmPutImage)(Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height, bool send_event);
};
-#undef Bool
+#undef Bool // b/127920555
class LibX11
{
diff --git a/chromium/third_party/swiftshader/src/OpenGL/common/Image.hpp b/chromium/third_party/swiftshader/src/OpenGL/common/Image.hpp
index 1a1dfd74343..856283fc560 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/common/Image.hpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/common/Image.hpp
@@ -21,12 +21,12 @@
#include <GLES3/gl3.h>
#include <GLES2/gl2ext.h>
-#if defined(__ANDROID__)
+#if defined(__ANDROID__) && !defined(ANDROID_NDK_BUILD)
#include <system/window.h>
#include "../../Common/GrallocAndroid.hpp"
#endif
-#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD)
+#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD) && !defined(ANDROID_NDK_BUILD)
#include "../../Common/DebugAndroid.hpp"
#define LOGLOCK(fmt, ...) // TRACE(fmt " tid=%d", ##__VA_ARGS__, gettid())
#else
@@ -235,7 +235,7 @@ protected:
void loadStencilData(GLsizei width, GLsizei height, GLsizei depth, int inputPitch, int inputHeight, GLenum format, GLenum type, const void *input, void *buffer);
};
-#ifdef __ANDROID__
+#if defined(__ANDROID__) && !defined(ANDROID_NDK_BUILD)
inline GLenum GLPixelFormatFromAndroid(int halFormat)
{
@@ -362,7 +362,7 @@ private:
}
};
-#endif // __ANDROID__
+#endif // __ANDROID__ && !defined(ANDROID_NDK_BUILD)
}
diff --git a/chromium/third_party/swiftshader/src/OpenGL/common/debug.cpp b/chromium/third_party/swiftshader/src/OpenGL/common/debug.cpp
index 87f7ee29d17..b1455555256 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/common/debug.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/common/debug.cpp
@@ -17,6 +17,7 @@
#include "common/debug.h"
#ifdef __ANDROID__
+#if !defined(ANDROID_NDK_BUILD)
#include <utils/String8.h>
#if ANDROID_PLATFORM_SDK_VERSION < 27
#include <cutils/log.h>
@@ -26,13 +27,14 @@
#error "ANDROID_PLATFORM_SDK_VERSION is not defined"
#endif
#endif
+#endif
#include <stdio.h>
#include <stdarg.h>
namespace es
{
-#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD)
+#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD) && !defined(ANDROID_NDK_BUILD)
static void output(const char *format, va_list vararg)
{
ALOGI("%s", android::String8::formatV(format, vararg).string());
diff --git a/chromium/third_party/swiftshader/src/OpenGL/common/debug.h b/chromium/third_party/swiftshader/src/OpenGL/common/debug.h
index f7bd9720edd..ce488a21a9a 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/common/debug.h
+++ b/chromium/third_party/swiftshader/src/OpenGL/common/debug.h
@@ -17,7 +17,7 @@
#ifndef COMMON_DEBUG_H_
#define COMMON_DEBUG_H_
-#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD)
+#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD) && !defined(ANDROID_NDK_BUILD)
#include "../../Common/DebugAndroid.hpp"
#else
#include <stdio.h>
diff --git a/chromium/third_party/swiftshader/src/OpenGL/compiler/Compiler.vcxproj b/chromium/third_party/swiftshader/src/OpenGL/compiler/Compiler.vcxproj
index d6ac2929055..b48fabcd4ba 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/compiler/Compiler.vcxproj
+++ b/chromium/third_party/swiftshader/src/OpenGL/compiler/Compiler.vcxproj
@@ -32,6 +32,7 @@
<Keyword>Win32Proj</Keyword>
<ProjectName>Compiler</ProjectName>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
@@ -116,7 +117,6 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)../;$(ProjectDir)../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
diff --git a/chromium/third_party/swiftshader/src/OpenGL/compiler/ConstantUnion.h b/chromium/third_party/swiftshader/src/OpenGL/compiler/ConstantUnion.h
index 2a1eeed0ff7..8a5b77370ac 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/compiler/ConstantUnion.h
+++ b/chromium/third_party/swiftshader/src/OpenGL/compiler/ConstantUnion.h
@@ -15,7 +15,7 @@
#ifndef _CONSTANT_UNION_INCLUDED_
#define _CONSTANT_UNION_INCLUDED_
-#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD)
+#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD) && !defined(ANDROID_NDK_BUILD)
#include "../../Common/DebugAndroid.hpp"
#else
#include <assert.h>
diff --git a/chromium/third_party/swiftshader/src/OpenGL/compiler/ParseHelper.cpp b/chromium/third_party/swiftshader/src/OpenGL/compiler/ParseHelper.cpp
index bf731eacdc3..b46a36f66b7 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/compiler/ParseHelper.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/compiler/ParseHelper.cpp
@@ -2828,7 +2828,7 @@ TLayoutQualifier TParseContext::parseLayoutQualifier(const TString &qualifierTyp
return qualifier;
}
-TLayoutQualifier TParseContext::parseLayoutQualifier(const TString &qualifierType, const TSourceLoc& qualifierTypeLine, const TString &intValueString, int intValue, const TSourceLoc& intValueLine)
+TLayoutQualifier TParseContext::parseLayoutQualifier(const TString &qualifierType, const TSourceLoc& qualifierTypeLine, int intValue, const TSourceLoc& intValueLine)
{
TLayoutQualifier qualifier;
@@ -2846,7 +2846,7 @@ TLayoutQualifier TParseContext::parseLayoutQualifier(const TString &qualifierTyp
// must check that location is non-negative
if (intValue < 0)
{
- error(intValueLine, "out of range:", intValueString.c_str(), "location must be non-negative");
+ error(intValueLine, "out of range:", "", "location must be non-negative");
recover();
}
else
diff --git a/chromium/third_party/swiftshader/src/OpenGL/compiler/ParseHelper.h b/chromium/third_party/swiftshader/src/OpenGL/compiler/ParseHelper.h
index 10e1895660d..e52822034d7 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/compiler/ParseHelper.h
+++ b/chromium/third_party/swiftshader/src/OpenGL/compiler/ParseHelper.h
@@ -209,7 +209,7 @@ public:
const TString* instanceName, const TSourceLoc& instanceLine, TIntermTyped* arrayIndex, const TSourceLoc& arrayIndexLine);
TLayoutQualifier parseLayoutQualifier(const TString &qualifierType, const TSourceLoc& qualifierTypeLine);
- TLayoutQualifier parseLayoutQualifier(const TString &qualifierType, const TSourceLoc& qualifierTypeLine, const TString &intValueString, int intValue, const TSourceLoc& intValueLine);
+ TLayoutQualifier parseLayoutQualifier(const TString &qualifierType, const TSourceLoc& qualifierTypeLine, int intValue, const TSourceLoc& intValueLine);
TLayoutQualifier joinLayoutQualifiers(TLayoutQualifier leftQualifier, TLayoutQualifier rightQualifier);
TPublicType joinInterpolationQualifiers(const TSourceLoc &interpolationLoc, TQualifier interpolationQualifier, const TSourceLoc &storageLoc, TQualifier storageQualifier);
diff --git a/chromium/third_party/swiftshader/src/OpenGL/compiler/SymbolTable.h b/chromium/third_party/swiftshader/src/OpenGL/compiler/SymbolTable.h
index 2aad52960e6..7cf41bea3d8 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/compiler/SymbolTable.h
+++ b/chromium/third_party/swiftshader/src/OpenGL/compiler/SymbolTable.h
@@ -38,7 +38,7 @@
// are tracked in the intermediate representation, not the symbol table.
//
-#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD)
+#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD) && !defined(ANDROID_NDK_BUILD)
#include "../../Common/DebugAndroid.hpp"
#else
#include <assert.h>
diff --git a/chromium/third_party/swiftshader/src/OpenGL/compiler/debug.h b/chromium/third_party/swiftshader/src/OpenGL/compiler/debug.h
index ffeecaa287b..1bf999c07d1 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/compiler/debug.h
+++ b/chromium/third_party/swiftshader/src/OpenGL/compiler/debug.h
@@ -17,7 +17,7 @@
#ifndef COMPILER_DEBUG_H_
#define COMPILER_DEBUG_H_
-#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD)
+#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD) && !defined(ANDROID_NDK_BUILD)
#include "../../Common/DebugAndroid.hpp"
#define Trace(...) ((void)0)
diff --git a/chromium/third_party/swiftshader/src/OpenGL/compiler/glslang.y b/chromium/third_party/swiftshader/src/OpenGL/compiler/glslang.y
index ab69684040d..11000e17779 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/compiler/glslang.y
+++ b/chromium/third_party/swiftshader/src/OpenGL/compiler/glslang.y
@@ -1047,10 +1047,10 @@ layout_qualifier_id
$$ = context->parseLayoutQualifier(*$1.string, @1);
}
| IDENTIFIER EQUAL INTCONSTANT {
- $$ = context->parseLayoutQualifier(*$1.string, @1, *$3.string, $3.i, @3);
+ $$ = context->parseLayoutQualifier(*$1.string, @1, $3.i, @3);
}
| IDENTIFIER EQUAL UINTCONSTANT {
- $$ = context->parseLayoutQualifier(*$1.string, @1, *$3.string, $3.i, @3);
+ $$ = context->parseLayoutQualifier(*$1.string, @1, $3.i, @3);
}
;
diff --git a/chromium/third_party/swiftshader/src/OpenGL/compiler/glslang_tab.cpp b/chromium/third_party/swiftshader/src/OpenGL/compiler/glslang_tab.cpp
index 6d8f58962db..f18ef9f0afa 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/compiler/glslang_tab.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/compiler/glslang_tab.cpp
@@ -3777,7 +3777,7 @@ yyreduce:
case 153:
{
- (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), *(yyvsp[0].lex).string, (yyvsp[0].lex).i, (yylsp[0]));
+ (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), (yyvsp[0].lex).i, (yylsp[0]));
}
break;
@@ -3785,7 +3785,7 @@ yyreduce:
case 154:
{
- (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), *(yyvsp[0].lex).string, (yyvsp[0].lex).i, (yylsp[0]));
+ (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), (yyvsp[0].lex).i, (yylsp[0]));
}
break;
diff --git a/chromium/third_party/swiftshader/src/OpenGL/compiler/preprocessor/preprocessor.vcxproj b/chromium/third_party/swiftshader/src/OpenGL/compiler/preprocessor/preprocessor.vcxproj
index 3ca9c96b2ac..1bce02dff94 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/compiler/preprocessor/preprocessor.vcxproj
+++ b/chromium/third_party/swiftshader/src/OpenGL/compiler/preprocessor/preprocessor.vcxproj
@@ -22,6 +22,7 @@
<ProjectGuid>{92940255-AB4B-42FB-A2C4-0FAB19C3C48A}</ProjectGuid>
<RootNamespace>preprocessor</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libEGL/Config.cpp b/chromium/third_party/swiftshader/src/OpenGL/libEGL/Config.cpp
index 4c35f6bd44c..1af92290170 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libEGL/Config.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/libEGL/Config.cpp
@@ -21,7 +21,7 @@
#include "common/debug.h"
#include <EGL/eglext.h>
-#ifdef __ANDROID__
+#if defined(__ANDROID__) && !defined(ANDROID_NDK_BUILD)
#include <system/graphics.h>
#endif
@@ -65,7 +65,7 @@ Config::Config(sw::Format displayFormat, EGLint minInterval, EGLint maxInterval,
mBlueSize = 8;
mAlphaSize = 8;
mBindToTextureRGBA = EGL_TRUE;
- #ifdef __ANDROID__
+ #if defined(__ANDROID__) && !defined(ANDROID_NDK_BUILD)
mNativeVisualID = HAL_PIXEL_FORMAT_BGRA_8888;
#else
mNativeVisualID = 2; // Arbitrary; prefer over ABGR
@@ -77,7 +77,7 @@ Config::Config(sw::Format displayFormat, EGLint minInterval, EGLint maxInterval,
mBlueSize = 8;
mAlphaSize = 8;
mBindToTextureRGBA = EGL_TRUE;
- #ifdef __ANDROID__
+ #if defined(__ANDROID__) && !defined(ANDROID_NDK_BUILD)
mNativeVisualID = HAL_PIXEL_FORMAT_RGBA_8888;
#endif
break;
@@ -86,7 +86,7 @@ Config::Config(sw::Format displayFormat, EGLint minInterval, EGLint maxInterval,
mGreenSize = 6;
mBlueSize = 5;
mAlphaSize = 0;
- #ifdef __ANDROID__
+ #if defined(__ANDROID__) && !defined(ANDROID_NDK_BUILD)
mNativeVisualID = HAL_PIXEL_FORMAT_RGB_565;
#endif
break;
@@ -96,7 +96,7 @@ Config::Config(sw::Format displayFormat, EGLint minInterval, EGLint maxInterval,
mBlueSize = 8;
mAlphaSize = 0;
mBindToTextureRGB = EGL_TRUE;
- #ifdef __ANDROID__
+ #if defined(__ANDROID__) && !defined(ANDROID_NDK_BUILD)
mNativeVisualID = 0x1FF; // HAL_PIXEL_FORMAT_BGRX_8888
#else
mNativeVisualID = 1; // Arbitrary; prefer over XBGR
@@ -108,7 +108,7 @@ Config::Config(sw::Format displayFormat, EGLint minInterval, EGLint maxInterval,
mBlueSize = 8;
mAlphaSize = 0;
mBindToTextureRGB = EGL_TRUE;
- #ifdef __ANDROID__
+ #if defined(__ANDROID__) && !defined(ANDROID_NDK_BUILD)
mNativeVisualID = HAL_PIXEL_FORMAT_RGBX_8888;
#endif
break;
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libEGL/Display.cpp b/chromium/third_party/swiftshader/src/OpenGL/libEGL/Display.cpp
index 1b9bacf58bb..99503eadd8c 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libEGL/Display.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/libEGL/Display.cpp
@@ -23,9 +23,9 @@
#include "libEGL/Context.hpp"
#include "common/Image.hpp"
#include "common/debug.h"
-#include "Common/MutexLock.hpp"
+#include "Common/RecursiveLock.hpp"
-#ifdef __ANDROID__
+#if defined(__ANDROID__) && !defined(ANDROID_NDK_BUILD)
#include <system/window.h>
#include <sys/ioctl.h>
#include <linux/fb.h>
@@ -671,11 +671,13 @@ bool Display::isValidWindow(EGLNativeWindowType window)
ERR("%s called with window==NULL %s:%d", __FUNCTION__, __FILE__, __LINE__);
return false;
}
+ #if !defined(ANDROID_NDK_BUILD)
if(static_cast<ANativeWindow*>(window)->common.magic != ANDROID_NATIVE_WINDOW_MAGIC)
{
ERR("%s called with window==%p bad magic %s:%d", __FUNCTION__, window, __FILE__, __LINE__);
return false;
}
+ #endif // !defined(ANDROID_NDK_BUILD)
return true;
#elif defined(USE_X11)
if(nativeDisplay)
@@ -782,6 +784,7 @@ sw::Format Display::getDisplayFormat() const
default: UNREACHABLE(bpp); // Unexpected display mode color depth
}
#elif defined(__ANDROID__)
+ #if !defined(ANDROID_NDK_BUILD)
static const char *const framebuffer[] =
{
"/dev/graphics/fb0",
@@ -841,6 +844,7 @@ sw::Format Display::getDisplayFormat() const
}
}
}
+ #endif // !defined_ANDROID_NDK_BUILD)
// No framebuffer device found, or we're in user space
return sw::FORMAT_X8B8G8R8;
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libEGL/Display.h b/chromium/third_party/swiftshader/src/OpenGL/libEGL/Display.h
index 53ebdfb7cfc..a187e21e06c 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libEGL/Display.h
+++ b/chromium/third_party/swiftshader/src/OpenGL/libEGL/Display.h
@@ -20,8 +20,8 @@
#define INCLUDE_DISPLAY_H_
#include "Config.h"
-#include "Common/MutexLock.hpp"
#include "Sync.hpp"
+#include "Common/RecursiveLock.hpp"
#include "common/NameSpace.hpp"
#include <set>
@@ -86,7 +86,7 @@ namespace egl
bool destroySharedImage(EGLImageKHR);
virtual Image *getSharedImage(EGLImageKHR name) = 0;
- sw::MutexLock *getLock() { return &mApiMutex; }
+ sw::RecursiveLock *getLock() { return &mApiMutex; }
private:
sw::Format getDisplayFormat() const;
@@ -109,7 +109,7 @@ namespace egl
SyncSet mSyncSet;
gl::NameSpace<Image> mSharedImageNameSpace;
- sw::MutexLock mApiMutex;
+ sw::RecursiveLock mApiMutex;
};
}
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp b/chromium/third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp
index b8bba5fafc4..dd912ed767e 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp
@@ -33,6 +33,9 @@
#elif defined(__APPLE__)
#include "OSXUtils.hpp"
#endif
+#if defined(__ANDROID__) && defined(ANDROID_NDK_BUILD)
+#include <android/native_window.h>
+#endif
#include <algorithm>
@@ -339,8 +342,13 @@ bool WindowSurface::checkForResize()
int windowWidth = client.right - client.left;
int windowHeight = client.bottom - client.top;
#elif defined(__ANDROID__)
+ #ifdef ANDROID_NDK_BUILD
+ int windowWidth = ANativeWindow_getWidth(window);
+ int windowHeight = ANativeWindow_getHeight(window);
+ #else
int windowWidth; window->query(window, NATIVE_WINDOW_WIDTH, &windowWidth);
int windowHeight; window->query(window, NATIVE_WINDOW_HEIGHT, &windowHeight);
+ #endif
#elif defined(USE_X11)
XWindowAttributes windowAttributes;
Status status = libX11->XGetWindowAttributes((::Display*)display->getNativeDisplay(), window, &windowAttributes);
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp b/chromium/third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp
index ffbe92928ae..51f5309b140 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp
@@ -23,7 +23,7 @@
#include "common/debug.h"
#include "Common/Version.h"
-#if defined(__ANDROID__)
+#if defined(__ANDROID__) && !defined(ANDROID_NDK_BUILD)
#include <system/window.h>
#elif defined(USE_X11)
#include "Main/libX11.hpp"
@@ -1170,7 +1170,7 @@ EGLImage CreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBu
}
}
- #if defined(__ANDROID__)
+ #if defined(__ANDROID__) && !defined(ANDROID_NDK_BUILD)
if(target == EGL_NATIVE_BUFFER_ANDROID)
{
ANativeWindowBuffer *nativeBuffer = reinterpret_cast<ANativeWindowBuffer*>(buffer);
@@ -1417,6 +1417,11 @@ EGLBoolean GetSyncAttrib(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLA
return error(EGL_BAD_PARAMETER, EGL_FALSE);
}
+ if(!value)
+ {
+ return error(EGL_BAD_PARAMETER, EGL_FALSE);
+ }
+
switch(attribute)
{
case EGL_SYNC_TYPE_KHR:
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libEGL/libEGL.vcxproj b/chromium/third_party/swiftshader/src/OpenGL/libEGL/libEGL.vcxproj
index f9f8066c591..8b0ed3ae6ff 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libEGL/libEGL.vcxproj
+++ b/chromium/third_party/swiftshader/src/OpenGL/libEGL/libEGL.vcxproj
@@ -31,6 +31,7 @@
<RootNamespace>libEGL</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
@@ -121,7 +122,6 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(ProjectDir)/..;$(ProjectDir)/../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;EGLAPI=;EGL_EGLEXT_PROTOTYPES;NO_SANITIZE_FUNCTION=;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;DEBUGGER_WAIT_DIALOG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libEGL/main.cpp b/chromium/third_party/swiftshader/src/OpenGL/libEGL/main.cpp
index 0ef957ce639..5b60037d0e1 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libEGL/main.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/libEGL/main.cpp
@@ -170,7 +170,15 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved
{
case DLL_PROCESS_ATTACH:
#ifdef DEBUGGER_WAIT_DIALOG
- WaitForDebugger(instance);
+ {
+ char disable_debugger_wait_dialog[] = "0";
+ GetEnvironmentVariable("SWIFTSHADER_DISABLE_DEBUGGER_WAIT_DIALOG", disable_debugger_wait_dialog, sizeof(disable_debugger_wait_dialog));
+
+ if(disable_debugger_wait_dialog[0] != '1')
+ {
+ WaitForDebugger(instance);
+ }
+ }
#endif
egl::attachProcess();
break;
@@ -332,7 +340,7 @@ void error(EGLint errorCode)
}
}
-sw::MutexLock *getDisplayLock(EGLDisplay dpy)
+sw::RecursiveLock *getDisplayLock(EGLDisplay dpy)
{
auto display = Display::get(dpy);
if (!display) return nullptr;
@@ -407,67 +415,67 @@ EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id)
EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::Initialize(dpy, major, minor);
}
EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::Terminate(dpy);
}
EGLAPI const char *EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::QueryString(dpy, name);
}
EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::GetConfigs(dpy, configs, config_size, num_config);
}
EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::ChooseConfig(dpy, attrib_list, configs, config_size, num_config);
}
EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::GetConfigAttrib(dpy, config, attribute, value);
}
EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreateWindowSurface(dpy, config, window, attrib_list);
}
EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePbufferSurface(dpy, config, attrib_list);
}
EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePixmapSurface(dpy, config, pixmap, attrib_list);
}
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::DestroySurface(dpy, surface);
}
EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::QuerySurface(dpy, surface, attribute, value);
}
@@ -493,49 +501,49 @@ EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void)
EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list);
}
EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::SurfaceAttrib(dpy, surface, attribute, value);
}
EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::BindTexImage(dpy, surface, buffer);
}
EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::ReleaseTexImage(dpy, surface, buffer);
}
EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::SwapInterval(dpy, interval);
}
EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreateContext(dpy, config, share_context, attrib_list);
}
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::DestroyContext(dpy, ctx);
}
EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::MakeCurrent(dpy, draw, read, ctx);
}
@@ -556,7 +564,7 @@ EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void)
EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::QueryContext(dpy, ctx, attribute, value);
}
@@ -572,37 +580,37 @@ EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine)
EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::SwapBuffers(dpy, surface);
}
EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CopyBuffers(dpy, surface, target);
}
EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreateImageKHR(dpy, ctx, target, buffer, attrib_list);
}
EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreateImage(dpy, ctx, target, buffer, attrib_list);
}
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::DestroyImageKHR(dpy, image);
}
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImage(EGLDisplay dpy, EGLImageKHR image)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::DestroyImageKHR(dpy, image);
}
@@ -618,85 +626,85 @@ EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay(EGLenum platform, void *nati
EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePlatformWindowSurfaceEXT(dpy, config, native_window, attrib_list);
}
EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePlatformWindowSurface(dpy, config, native_window, attrib_list);
}
EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePlatformPixmapSurfaceEXT(dpy, config, native_pixmap, attrib_list);
}
EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePlatformPixmapSurface(dpy, config, native_pixmap, attrib_list);
}
EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreateSyncKHR(dpy, type, attrib_list);
}
EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreateSync(dpy, type, attrib_list);
}
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::DestroySyncKHR(dpy, sync);
}
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync(EGLDisplay dpy, EGLSyncKHR sync)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::DestroySyncKHR(dpy, sync);
}
EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::ClientWaitSyncKHR(dpy, sync, flags, timeout);
}
EGLAPI EGLint EGLAPIENTRY eglClientWaitSync(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::ClientWaitSyncKHR(dpy, sync, flags, timeout);
}
EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::GetSyncAttribKHR(dpy, sync, attribute, value);
}
EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLAttrib *value)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::GetSyncAttrib(dpy, sync, attribute, value);
}
EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::ClientWaitSyncKHR(dpy, sync, flags, EGL_FOREVER_KHR);
}
EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags)
{
- LockGuard lock(egl::getDisplayLock(dpy));
+ RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::ClientWaitSyncKHR(dpy, sync, flags, EGL_FOREVER_KHR);
}
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLES_CM/Android.mk b/chromium/third_party/swiftshader/src/OpenGL/libGLES_CM/Android.mk
index 78ee9c50caa..9efbd9a655a 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLES_CM/Android.mk
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLES_CM/Android.mk
@@ -61,7 +61,7 @@ COMMON_C_INCLUDES := \
ifeq ($(REACTOR_USE_SUBZERO),true)
COMMON_STATIC_LIBRARIES := libsubzero
else
-COMMON_STATIC_LIBRARIES := libLLVM_swiftshader
+COMMON_STATIC_LIBRARIES := libLLVM7_swiftshader
endif
COMMON_SHARED_LIBRARIES := \
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.vcxproj b/chromium/third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.vcxproj
index 1d79faae2bc..bd1a4db2e5b 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.vcxproj
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.vcxproj
@@ -31,6 +31,7 @@
<RootNamespace>libGLES_CM</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Android.mk b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Android.mk
index 4bc5ecf841f..5990f130da7 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Android.mk
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Android.mk
@@ -70,7 +70,7 @@ COMMON_C_INCLUDES := \
ifeq ($(REACTOR_USE_SUBZERO),true)
COMMON_STATIC_LIBRARIES := libsubzero
else
-COMMON_STATIC_LIBRARIES := libLLVM_swiftshader
+COMMON_STATIC_LIBRARIES := libLLVM7_swiftshader
endif
COMMON_SHARED_LIBRARIES := \
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Context.cpp b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Context.cpp
index 23f004de3f0..787b6d60769 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Context.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Context.cpp
@@ -238,6 +238,7 @@ Context::~Context()
mState.pixelPackBuffer = nullptr;
mState.pixelUnpackBuffer = nullptr;
mState.genericUniformBuffer = nullptr;
+ mState.genericTransformFeedbackBuffer = nullptr;
for(int i = 0; i < MAX_UNIFORM_BUFFER_BINDINGS; i++) {
mState.uniformBuffers[i].set(nullptr, 0, 0);
@@ -1171,12 +1172,7 @@ void Context::bindTransformFeedbackBuffer(GLuint buffer)
{
mResourceManager->checkBufferAllocation(buffer);
- TransformFeedback* transformFeedback = getTransformFeedback(mState.transformFeedback);
-
- if(transformFeedback)
- {
- transformFeedback->setGenericBuffer(getBuffer(buffer));
- }
+ mState.genericTransformFeedbackBuffer = getBuffer(buffer);
}
void Context::bindTexture(TextureType type, GLuint texture)
@@ -1259,7 +1255,7 @@ void Context::bindGenericTransformFeedbackBuffer(GLuint buffer)
{
mResourceManager->checkBufferAllocation(buffer);
- getTransformFeedback()->setGenericBuffer(getBuffer(buffer));
+ mState.genericTransformFeedbackBuffer = getBuffer(buffer);
}
void Context::bindIndexedTransformFeedbackBuffer(GLuint buffer, GLuint index, GLintptr offset, GLsizeiptr size)
@@ -1268,6 +1264,7 @@ void Context::bindIndexedTransformFeedbackBuffer(GLuint buffer, GLuint index, GL
Buffer* bufferObject = getBuffer(buffer);
getTransformFeedback()->setBuffer(index, bufferObject, offset, size);
+ mState.genericTransformFeedbackBuffer = bufferObject;
}
void Context::bindTransformFeedback(GLuint id)
@@ -1621,10 +1618,7 @@ bool Context::getBuffer(GLenum target, es2::Buffer **buffer) const
*buffer = getPixelUnpackBuffer();
break;
case GL_TRANSFORM_FEEDBACK_BUFFER:
- {
- TransformFeedback* transformFeedback = getTransformFeedback();
- *buffer = transformFeedback ? static_cast<es2::Buffer*>(transformFeedback->getGenericBuffer()) : nullptr;
- }
+ *buffer = static_cast<es2::Buffer*>(mState.genericTransformFeedbackBuffer);
break;
case GL_UNIFORM_BUFFER:
*buffer = getGenericUniformBuffer();
@@ -1645,6 +1639,27 @@ Program *Context::getCurrentProgram() const
return mResourceManager->getProgram(mState.currentProgram);
}
+Texture *Context::getTargetTexture(GLenum target) const
+{
+ Texture *texture = nullptr;
+
+ switch(target)
+ {
+ case GL_TEXTURE_2D: texture = getTexture2D(); break;
+ case GL_TEXTURE_2D_ARRAY: texture = getTexture2DArray(); break;
+ case GL_TEXTURE_3D: texture = getTexture3D(); break;
+ case GL_TEXTURE_CUBE_MAP: texture = getTextureCubeMap(); break;
+ case GL_TEXTURE_EXTERNAL_OES: texture = getTextureExternal(); break;
+ case GL_TEXTURE_RECTANGLE_ARB: texture = getTexture2DRect(); break;
+ default:
+ return error(GL_INVALID_ENUM, nullptr);
+ }
+
+ ASSERT(texture); // Must always have a default texture to fall back to.
+
+ return texture;
+}
+
Texture2D *Context::getTexture2D() const
{
return static_cast<Texture2D*>(getSamplerTexture(mState.activeSampler, TEXTURE_2D));
@@ -2362,7 +2377,7 @@ template<typename T> bool Context::getIntegerv(GLenum pname, T *params) const
TransformFeedback* transformFeedback = getTransformFeedback(mState.transformFeedback);
if(transformFeedback)
{
- *params = transformFeedback->getGenericBufferName();
+ *params = mState.genericTransformFeedbackBuffer.name();
}
else
{
@@ -3840,6 +3855,10 @@ void Context::detachBuffer(GLuint buffer)
{
mState.genericUniformBuffer = nullptr;
}
+ if (mState.genericTransformFeedbackBuffer.name() == buffer)
+ {
+ mState.genericTransformFeedbackBuffer = nullptr;
+ }
if(getArrayBufferName() == buffer)
{
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Context.h b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Context.h
index bb85011e69d..4b37709e21e 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Context.h
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Context.h
@@ -410,6 +410,7 @@ struct State
gl::BindingPointer<Buffer> pixelPackBuffer;
gl::BindingPointer<Buffer> pixelUnpackBuffer;
gl::BindingPointer<Buffer> genericUniformBuffer;
+ gl::BindingPointer<Buffer> genericTransformFeedbackBuffer;
BufferBinding uniformBuffers[MAX_UNIFORM_BUFFER_BINDINGS];
GLuint readFramebuffer;
@@ -640,6 +641,7 @@ public:
GLenum getPixels(const GLvoid **data, GLenum type, GLsizei imageSize) const;
bool getBuffer(GLenum target, es2::Buffer **buffer) const;
Program *getCurrentProgram() const;
+ Texture *getTargetTexture(GLenum target) const;
Texture2D *getTexture2D() const;
Texture2D *getTexture2D(GLenum target) const;
Texture3D *getTexture3D() const;
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Texture.cpp b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Texture.cpp
index 0266158327e..a02a7a09640 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Texture.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Texture.cpp
@@ -686,8 +686,7 @@ void Texture2D::setSharedImage(egl::Image *sharedImage)
image[0] = sharedImage;
}
-// Tests for 2D texture sampling completeness. [OpenGL ES 3.0.5] section 3.8.13 page 160.
-bool Texture2D::isSamplerComplete(Sampler *sampler) const
+bool Texture2D::isBaseLevelDefined() const
{
if(!image[mBaseLevel])
{
@@ -702,6 +701,17 @@ bool Texture2D::isSamplerComplete(Sampler *sampler) const
return false;
}
+ return true;
+}
+
+// Tests for 2D texture sampling completeness. [OpenGL ES 3.0.5] section 3.8.13 page 160.
+bool Texture2D::isSamplerComplete(Sampler *sampler) const
+{
+ if(!isBaseLevelDefined())
+ {
+ return false;
+ }
+
if(isMipmapFiltered(sampler))
{
if(!isMipmapComplete())
@@ -1042,8 +1052,7 @@ void TextureCubeMap::subImageCompressed(GLenum target, GLint level, GLint xoffse
Texture::subImageCompressed(xoffset, yoffset, 0, width, height, 1, format, imageSize, pixels, image[CubeFaceIndex(target)][level]);
}
-// Tests for cube map sampling completeness. [OpenGL ES 3.0.5] section 3.8.13 page 161.
-bool TextureCubeMap::isSamplerComplete(Sampler *sampler) const
+bool TextureCubeMap::isBaseLevelDefined() const
{
for(int face = 0; face < 6; face++)
{
@@ -1060,6 +1069,17 @@ bool TextureCubeMap::isSamplerComplete(Sampler *sampler) const
return false;
}
+ return true;
+}
+
+// Tests for cube map sampling completeness. [OpenGL ES 3.0.5] section 3.8.13 page 161.
+bool TextureCubeMap::isSamplerComplete(Sampler *sampler) const
+{
+ if(!isBaseLevelDefined())
+ {
+ return false;
+ }
+
if(!isMipmapFiltered(sampler))
{
if(!isCubeComplete())
@@ -1081,6 +1101,11 @@ bool TextureCubeMap::isSamplerComplete(Sampler *sampler) const
// Tests for cube texture completeness. [OpenGL ES 3.0.5] section 3.8.13 page 160.
bool TextureCubeMap::isCubeComplete() const
{
+ if(!isBaseLevelDefined())
+ {
+ return false;
+ }
+
if(image[0][mBaseLevel]->getWidth() <= 0 || image[0][mBaseLevel]->getHeight() != image[0][mBaseLevel]->getWidth())
{
return false;
@@ -1649,8 +1674,7 @@ void Texture3D::setSharedImage(egl::Image *sharedImage)
image[0] = sharedImage;
}
-// Tests for 3D texture sampling completeness. [OpenGL ES 3.0.5] section 3.8.13 page 160.
-bool Texture3D::isSamplerComplete(Sampler *sampler) const
+bool Texture3D::isBaseLevelDefined() const
{
if(!image[mBaseLevel])
{
@@ -1666,6 +1690,17 @@ bool Texture3D::isSamplerComplete(Sampler *sampler) const
return false;
}
+ return true;
+}
+
+// Tests for 3D texture sampling completeness. [OpenGL ES 3.0.5] section 3.8.13 page 160.
+bool Texture3D::isSamplerComplete(Sampler *sampler) const
+{
+ if(!isBaseLevelDefined())
+ {
+ return false;
+ }
+
if(isMipmapFiltered(sampler))
{
if(!isMipmapComplete())
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Texture.h b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Texture.h
index f27879db840..495403a309e 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Texture.h
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/Texture.h
@@ -148,6 +148,7 @@ public:
virtual int getTopLevel() const = 0;
virtual bool requiresSync() const = 0;
+ virtual bool isBaseLevelDefined() const = 0;
virtual bool isSamplerComplete(Sampler *sampler) const = 0;
virtual bool isCompressed(GLenum target, GLint level) const = 0;
virtual bool isDepth(GLenum target, GLint level) const = 0;
@@ -220,6 +221,7 @@ public:
void setSharedImage(egl::Image *image);
+ bool isBaseLevelDefined() const override;
bool isSamplerComplete(Sampler *sampler) const override;
bool isCompressed(GLenum target, GLint level) const override;
bool isDepth(GLenum target, GLint level) const override;
@@ -287,6 +289,7 @@ public:
void copyImage(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, Renderbuffer *source);
void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Renderbuffer *source) override;
+ bool isBaseLevelDefined() const override;
bool isSamplerComplete(Sampler *sampler) const override;
bool isCompressed(GLenum target, GLint level) const override;
bool isDepth(GLenum target, GLint level) const override;
@@ -350,6 +353,7 @@ public:
void setSharedImage(egl::Image *image);
+ bool isBaseLevelDefined() const override;
bool isSamplerComplete(Sampler *sampler) const override;
bool isCompressed(GLenum target, GLint level) const override;
bool isDepth(GLenum target, GLint level) const override;
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/TransformFeedback.cpp b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/TransformFeedback.cpp
index d44f16a52d6..0ab6e955440 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/TransformFeedback.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/TransformFeedback.cpp
@@ -21,33 +21,21 @@ namespace es2
TransformFeedback::TransformFeedback(GLuint name) : NamedObject(name), mActive(false), mPaused(false), mVertexOffset(0)
{
- mGenericBuffer = nullptr;
}
TransformFeedback::~TransformFeedback()
{
- mGenericBuffer = nullptr;
for(int i = 0; i < MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS; ++i)
{
mBuffer[i].set(nullptr);
}
}
-Buffer* TransformFeedback::getGenericBuffer() const
-{
- return mGenericBuffer;
-}
-
Buffer* TransformFeedback::getBuffer(GLuint index) const
{
return mBuffer[index].get();
}
-GLuint TransformFeedback::getGenericBufferName() const
-{
- return mGenericBuffer.name();
-}
-
GLuint TransformFeedback::getBufferName(GLuint index) const
{
return mBuffer[index].get().name();
@@ -108,11 +96,6 @@ void TransformFeedback::setPaused(bool paused)
mPaused = paused;
}
-void TransformFeedback::setGenericBuffer(Buffer* buffer)
-{
- mGenericBuffer = buffer;
-}
-
void TransformFeedback::setBuffer(GLuint index, Buffer* buffer)
{
mBuffer[index].set(buffer);
@@ -125,11 +108,6 @@ void TransformFeedback::setBuffer(GLuint index, Buffer* buffer, GLintptr offset,
void TransformFeedback::detachBuffer(GLuint buffer)
{
- if(mGenericBuffer.name() == buffer)
- {
- mGenericBuffer = nullptr;
- }
-
for(int i = 0; i < MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS; ++i)
{
if(mBuffer[i].get().name() == buffer)
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/TransformFeedback.h b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/TransformFeedback.h
index c045a75a1e4..787de0e2ebe 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/TransformFeedback.h
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/TransformFeedback.h
@@ -35,9 +35,7 @@ public:
BufferBinding* getBuffers() { return mBuffer; }
- Buffer* getGenericBuffer() const;
Buffer* getBuffer(GLuint index) const;
- GLuint getGenericBufferName() const;
GLuint getBufferName(GLuint index) const;
int getOffset(GLuint index) const;
int getSize(GLuint index) const;
@@ -46,7 +44,6 @@ public:
GLenum primitiveMode() const;
int vertexOffset() const;
- void setGenericBuffer(Buffer* buffer);
void setBuffer(GLuint index, Buffer* buffer);
void setBuffer(GLuint index, Buffer* buffer, GLintptr offset, GLsizeiptr size);
void detachBuffer(GLuint buffer);
@@ -56,7 +53,6 @@ public:
void addVertexOffset(int count);
private:
- gl::BindingPointer<Buffer> mGenericBuffer;
BufferBinding mBuffer[MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS];
bool mActive;
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.cpp b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.cpp
index a58563e5bce..75f4d06c1e7 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -794,7 +794,7 @@ void CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yo
"GLsizei imageSize = %d, const GLvoid* data = %p)",
target, level, xoffset, yoffset, width, height, format, imageSize, data);
- if(!es2::IsTextureTarget(target))
+ if(!es2::IsTexImageTarget(target))
{
return error(GL_INVALID_ENUM);
}
@@ -1017,7 +1017,7 @@ void CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
"GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)",
target, level, xoffset, yoffset, x, y, width, height);
- if(!es2::IsTextureTarget(target))
+ if(!es2::IsTexImageTarget(target))
{
return error(GL_INVALID_ENUM);
}
@@ -2108,35 +2108,11 @@ void GenerateMipmap(GLenum target)
if(context)
{
- es2::Texture *texture = nullptr;
+ es2::Texture *texture = context->getTargetTexture(target);
- switch(target)
+ if(!texture)
{
- case GL_TEXTURE_2D:
- texture = context->getTexture2D();
- break;
- case GL_TEXTURE_CUBE_MAP:
- {
- TextureCubeMap *cube = context->getTextureCubeMap();
- texture = cube;
-
- if(!cube->isCubeComplete())
- {
- return error(GL_INVALID_OPERATION);
- }
- }
- break;
- case GL_TEXTURE_2D_ARRAY:
- texture = context->getTexture2DArray();
- break;
- case GL_TEXTURE_3D:
- texture = context->getTexture3D();
- break;
- case GL_TEXTURE_RECTANGLE_ARB:
- texture = context->getTexture2DRect();
- break;
- default:
- return error(GL_INVALID_ENUM);
+ return;
}
if(!IsMipmappable(texture->getFormat(target, texture->getBaseLevel())))
@@ -2144,6 +2120,23 @@ void GenerateMipmap(GLenum target)
return error(GL_INVALID_OPERATION);
}
+ if(target == GL_TEXTURE_CUBE_MAP)
+ {
+ TextureCubeMap *cube = context->getTextureCubeMap();
+
+ if(!cube->isCubeComplete())
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+ }
+
+ // [OpenGL ES 3.2]: "Otherwise, if levelbase is not defined, or if any dimension
+ // is zero, all mipmap levels are left unchanged. This is not an error."
+ if(!texture->isBaseLevelDefined())
+ {
+ return;
+ }
+
texture->generateMipmaps();
}
}
@@ -3296,18 +3289,11 @@ void GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
if(context)
{
- es2::Texture *texture;
+ es2::Texture *texture = context->getTargetTexture(target);
- switch(target)
+ if(!texture)
{
- case GL_TEXTURE_2D: texture = context->getTexture2D(); break;
- case GL_TEXTURE_2D_ARRAY: texture = context->getTexture2DArray(); break;
- case GL_TEXTURE_3D: texture = context->getTexture3D(); break;
- case GL_TEXTURE_CUBE_MAP: texture = context->getTextureCubeMap(); break;
- case GL_TEXTURE_EXTERNAL_OES: texture = context->getTextureExternal(); break;
- case GL_TEXTURE_RECTANGLE_ARB: texture = context->getTexture2DRect(); break;
- default:
- return error(GL_INVALID_ENUM);
+ return;
}
switch(pname)
@@ -3383,18 +3369,11 @@ void GetTexParameteriv(GLenum target, GLenum pname, GLint* params)
if(context)
{
- es2::Texture *texture;
+ es2::Texture *texture = context->getTargetTexture(target);
- switch(target)
+ if(!texture)
{
- case GL_TEXTURE_2D: texture = context->getTexture2D(); break;
- case GL_TEXTURE_2D_ARRAY: texture = context->getTexture2DArray(); break;
- case GL_TEXTURE_3D: texture = context->getTexture3D(); break;
- case GL_TEXTURE_CUBE_MAP: texture = context->getTextureCubeMap(); break;
- case GL_TEXTURE_EXTERNAL_OES: texture = context->getTextureExternal(); break;
- case GL_TEXTURE_RECTANGLE_ARB: texture = context->getTexture2DRect(); break;
- default:
- return error(GL_INVALID_ENUM);
+ return;
}
switch(pname)
@@ -4655,18 +4634,11 @@ void TexParameterf(GLenum target, GLenum pname, GLfloat param)
if(context)
{
- es2::Texture *texture;
+ es2::Texture *texture = context->getTargetTexture(target);
- switch(target)
+ if(!texture)
{
- case GL_TEXTURE_2D: texture = context->getTexture2D(); break;
- case GL_TEXTURE_2D_ARRAY: texture = context->getTexture2DArray(); break;
- case GL_TEXTURE_3D: texture = context->getTexture3D(); break;
- case GL_TEXTURE_CUBE_MAP: texture = context->getTextureCubeMap(); break;
- case GL_TEXTURE_EXTERNAL_OES: texture = context->getTextureExternal(); break;
- case GL_TEXTURE_RECTANGLE_ARB: texture = context->getTexture2DRect(); break;
- default:
- return error(GL_INVALID_ENUM);
+ return;
}
switch(pname)
@@ -4786,18 +4758,11 @@ void TexParameteri(GLenum target, GLenum pname, GLint param)
if(context)
{
- es2::Texture *texture;
+ es2::Texture *texture = context->getTargetTexture(target);
- switch(target)
+ if(!texture)
{
- case GL_TEXTURE_2D: texture = context->getTexture2D(); break;
- case GL_TEXTURE_2D_ARRAY: texture = context->getTexture2DArray(); break;
- case GL_TEXTURE_3D: texture = context->getTexture3D(); break;
- case GL_TEXTURE_CUBE_MAP: texture = context->getTextureCubeMap(); break;
- case GL_TEXTURE_EXTERNAL_OES: texture = context->getTextureExternal(); break;
- case GL_TEXTURE_RECTANGLE_ARB: texture = context->getTexture2DRect(); break;
- default:
- return error(GL_INVALID_ENUM);
+ return;
}
switch(pname)
@@ -4921,7 +4886,7 @@ void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLs
"const GLvoid* data = %p)",
target, level, xoffset, yoffset, width, height, format, type, data);
- if(!es2::IsTextureTarget(target))
+ if(!es2::IsTexImageTarget(target))
{
return error(GL_INVALID_ENUM);
}
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.vcxproj b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.vcxproj
index 36ac0b4846d..fef2427895f 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.vcxproj
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.vcxproj
@@ -31,6 +31,7 @@
<RootNamespace>libGLESv2</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
@@ -127,7 +128,6 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(ProjectDir)/..;$(ProjectDir)/../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;GL_API=;GL_APICALL=;GLAPI=;GL_GLEXT_PROTOTYPES;NO_SANITIZE_FUNCTION=;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/utilities.cpp b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/utilities.cpp
index 4db3b930d56..aa143008539 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/utilities.cpp
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/utilities.cpp
@@ -869,9 +869,14 @@ namespace es2
}
}
+ bool IsTexImageTarget(GLenum target)
+ {
+ return target == GL_TEXTURE_2D || IsCubemapTextureTarget(target) || target == GL_TEXTURE_2D_ARRAY || target == GL_TEXTURE_RECTANGLE_ARB;
+ }
+
bool IsTextureTarget(GLenum target)
{
- return target == GL_TEXTURE_2D || IsCubemapTextureTarget(target) || target == GL_TEXTURE_3D || target == GL_TEXTURE_2D_ARRAY || target == GL_TEXTURE_RECTANGLE_ARB;
+ return IsTexImageTarget(target) || target == GL_TEXTURE_3D;
}
GLenum ValidateTextureFormatType(GLenum format, GLenum type, GLint internalformat, GLenum target)
diff --git a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/utilities.h b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/utilities.h
index a698d20630c..187ef13326e 100644
--- a/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/utilities.h
+++ b/chromium/third_party/swiftshader/src/OpenGL/libGLESv2/utilities.h
@@ -56,6 +56,7 @@ namespace es2
bool IsStencilTexture(GLint format);
bool IsCubemapTextureTarget(GLenum target);
int CubeFaceIndex(GLenum cubeTarget);
+ bool IsTexImageTarget(GLenum target);
bool IsTextureTarget(GLenum target);
GLenum ValidateTextureFormatType(GLenum format, GLenum type, GLint internalformat, GLenum target);
size_t GetTypeSize(GLenum type);
diff --git a/chromium/third_party/swiftshader/src/Pipeline/ComputeProgram.cpp b/chromium/third_party/swiftshader/src/Pipeline/ComputeProgram.cpp
new file mode 100644
index 00000000000..50445b7822d
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Pipeline/ComputeProgram.cpp
@@ -0,0 +1,208 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "ComputeProgram.hpp"
+
+#include "Vulkan/VkDebug.hpp"
+#include "Vulkan/VkPipelineLayout.hpp"
+
+namespace
+{
+ enum { X, Y, Z };
+} // anonymous namespace
+
+namespace sw
+{
+ ComputeProgram::ComputeProgram(SpirvShader const *shader, vk::PipelineLayout const *pipelineLayout, const vk::DescriptorSet::Bindings &descriptorSets)
+ : data(Arg<0>()),
+ routine(pipelineLayout),
+ shader(shader),
+ pipelineLayout(pipelineLayout),
+ descriptorSets(descriptorSets)
+ {
+ }
+
+ ComputeProgram::~ComputeProgram()
+ {
+ }
+
+ void ComputeProgram::generate()
+ {
+ shader->emitProlog(&routine);
+ emit();
+ shader->emitEpilog(&routine);
+ }
+
+ void ComputeProgram::emit()
+ {
+ routine.descriptorSets = data + OFFSET(Data, descriptorSets);
+ routine.descriptorDynamicOffsets = data + OFFSET(Data, descriptorDynamicOffsets);
+ routine.pushConstants = data + OFFSET(Data, pushConstants);
+
+ auto &modes = shader->getModes();
+
+ int localSize[3] = {modes.WorkgroupSizeX, modes.WorkgroupSizeY, modes.WorkgroupSizeZ};
+
+ const int subgroupSize = SIMD::Width;
+
+ // Total number of invocations required to execute this workgroup.
+ int numInvocations = localSize[X] * localSize[Y] * localSize[Z];
+
+ Int4 numWorkgroups = *Pointer<Int4>(data + OFFSET(Data, numWorkgroups));
+ Int4 workgroupID = *Pointer<Int4>(data + OFFSET(Data, workgroupID));
+ Int4 workgroupSize = Int4(localSize[X], localSize[Y], localSize[Z], 0);
+ Int numSubgroups = (numInvocations + subgroupSize - 1) / subgroupSize;
+
+ setInputBuiltin(spv::BuiltInNumWorkgroups, [&](const SpirvShader::BuiltinMapping& builtin, Array<SIMD::Float>& value)
+ {
+ for (uint32_t component = 0; component < builtin.SizeInComponents; component++)
+ {
+ value[builtin.FirstComponent + component] =
+ As<SIMD::Float>(SIMD::Int(Extract(numWorkgroups, component)));
+ }
+ });
+
+ setInputBuiltin(spv::BuiltInWorkgroupId, [&](const SpirvShader::BuiltinMapping& builtin, Array<SIMD::Float>& value)
+ {
+ for (uint32_t component = 0; component < builtin.SizeInComponents; component++)
+ {
+ value[builtin.FirstComponent + component] =
+ As<SIMD::Float>(SIMD::Int(Extract(workgroupID, component)));
+ }
+ });
+
+ setInputBuiltin(spv::BuiltInWorkgroupSize, [&](const SpirvShader::BuiltinMapping& builtin, Array<SIMD::Float>& value)
+ {
+ for (uint32_t component = 0; component < builtin.SizeInComponents; component++)
+ {
+ value[builtin.FirstComponent + component] =
+ As<SIMD::Float>(SIMD::Int(Extract(workgroupSize, component)));
+ }
+ });
+
+ setInputBuiltin(spv::BuiltInNumSubgroups, [&](const SpirvShader::BuiltinMapping& builtin, Array<SIMD::Float>& value)
+ {
+ ASSERT(builtin.SizeInComponents == 1);
+ value[builtin.FirstComponent] = As<SIMD::Float>(SIMD::Int(numSubgroups));
+ });
+
+ setInputBuiltin(spv::BuiltInSubgroupSize, [&](const SpirvShader::BuiltinMapping& builtin, Array<SIMD::Float>& value)
+ {
+ ASSERT(builtin.SizeInComponents == 1);
+ value[builtin.FirstComponent] = As<SIMD::Float>(SIMD::Int(subgroupSize));
+ });
+
+ setInputBuiltin(spv::BuiltInSubgroupLocalInvocationId, [&](const SpirvShader::BuiltinMapping& builtin, Array<SIMD::Float>& value)
+ {
+ ASSERT(builtin.SizeInComponents == 1);
+ value[builtin.FirstComponent] = As<SIMD::Float>(SIMD::Int(0, 1, 2, 3));
+ });
+
+ For(Int subgroupIndex = 0, subgroupIndex < numSubgroups, subgroupIndex++)
+ {
+ // TODO: Replace SIMD::Int(0, 1, 2, 3) with SIMD-width equivalent
+ auto localInvocationIndex = SIMD::Int(subgroupIndex * SIMD::Width) + SIMD::Int(0, 1, 2, 3);
+
+ // Disable lanes where (invocationIDs >= numInvocations)
+ auto activeLaneMask = CmpLT(localInvocationIndex, SIMD::Int(numInvocations));
+
+ SIMD::Int localInvocationID[3];
+ {
+ SIMD::Int idx = localInvocationIndex;
+ localInvocationID[Z] = idx / SIMD::Int(localSize[X] * localSize[Y]);
+ idx -= localInvocationID[Z] * SIMD::Int(localSize[X] * localSize[Y]); // modulo
+ localInvocationID[Y] = idx / SIMD::Int(localSize[X]);
+ idx -= localInvocationID[Y] * SIMD::Int(localSize[X]); // modulo
+ localInvocationID[X] = idx;
+ }
+
+ setInputBuiltin(spv::BuiltInLocalInvocationIndex, [&](const SpirvShader::BuiltinMapping& builtin, Array<SIMD::Float>& value)
+ {
+ ASSERT(builtin.SizeInComponents == 1);
+ value[builtin.FirstComponent] = As<SIMD::Float>(localInvocationIndex);
+ });
+
+ setInputBuiltin(spv::BuiltInSubgroupId, [&](const SpirvShader::BuiltinMapping& builtin, Array<SIMD::Float>& value)
+ {
+ ASSERT(builtin.SizeInComponents == 1);
+ value[builtin.FirstComponent] = As<SIMD::Float>(SIMD::Int(subgroupIndex));
+ });
+
+ setInputBuiltin(spv::BuiltInLocalInvocationId, [&](const SpirvShader::BuiltinMapping& builtin, Array<SIMD::Float>& value)
+ {
+ for (uint32_t component = 0; component < builtin.SizeInComponents; component++)
+ {
+ value[builtin.FirstComponent + component] = As<SIMD::Float>(localInvocationID[component]);
+ }
+ });
+
+ setInputBuiltin(spv::BuiltInGlobalInvocationId, [&](const SpirvShader::BuiltinMapping& builtin, Array<SIMD::Float>& value)
+ {
+ auto localBase = workgroupID * workgroupSize;
+ for (uint32_t component = 0; component < builtin.SizeInComponents; component++)
+ {
+ auto globalInvocationID = SIMD::Int(Extract(localBase, component)) + localInvocationID[component];
+ value[builtin.FirstComponent + component] = As<SIMD::Float>(globalInvocationID);
+ }
+ });
+
+ // Process numLanes of the workgroup.
+ shader->emit(&routine, activeLaneMask, descriptorSets);
+ }
+ }
+
+ void ComputeProgram::setInputBuiltin(spv::BuiltIn id, std::function<void(const SpirvShader::BuiltinMapping& builtin, Array<SIMD::Float>& value)> cb)
+ {
+ auto it = shader->inputBuiltins.find(id);
+ if (it != shader->inputBuiltins.end())
+ {
+ const auto& builtin = it->second;
+ cb(builtin, routine.getVariable(builtin.Id));
+ }
+ }
+
+ void ComputeProgram::run(
+ Routine *routine,
+ vk::DescriptorSet::Bindings const &descriptorSets,
+ vk::DescriptorSet::DynamicOffsets const &descriptorDynamicOffsets,
+ PushConstantStorage const &pushConstants,
+ uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ)
+ {
+ auto runWorkgroup = (void(*)(void*))(routine->getEntry());
+
+ Data data;
+ data.descriptorSets = descriptorSets;
+ data.descriptorDynamicOffsets = descriptorDynamicOffsets;
+ data.numWorkgroups[X] = groupCountX;
+ data.numWorkgroups[Y] = groupCountY;
+ data.numWorkgroups[Z] = groupCountZ;
+ data.numWorkgroups[3] = 0;
+ data.pushConstants = pushConstants;
+
+ // TODO(bclayton): Split work across threads.
+ for (uint32_t groupZ = 0; groupZ < groupCountZ; groupZ++)
+ {
+ data.workgroupID[Z] = groupZ;
+ for (uint32_t groupY = 0; groupY < groupCountY; groupY++)
+ {
+ data.workgroupID[Y] = groupY;
+ for (uint32_t groupX = 0; groupX < groupCountX; groupX++)
+ {
+ data.workgroupID[X] = groupX;
+ runWorkgroup(&data);
+ }
+ }
+ }
+ }
+}
diff --git a/chromium/third_party/swiftshader/src/Pipeline/ComputeProgram.hpp b/chromium/third_party/swiftshader/src/Pipeline/ComputeProgram.hpp
new file mode 100644
index 00000000000..ab505928338
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Pipeline/ComputeProgram.hpp
@@ -0,0 +1,82 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef sw_ComputeProgram_hpp
+#define sw_ComputeProgram_hpp
+
+#include "SpirvShader.hpp"
+
+#include "Reactor/Reactor.hpp"
+#include "Device/Context.hpp"
+#include "Vulkan/VkDescriptorSet.hpp"
+
+#include <functional>
+
+namespace vk
+{
+ class PipelineLayout;
+} // namespace vk
+
+namespace sw
+{
+
+ using namespace rr;
+
+ class DescriptorSetsLayout;
+
+ // ComputeProgram builds a SPIR-V compute shader.
+ class ComputeProgram : public Function<Void(Pointer<Byte>)>
+ {
+ public:
+ ComputeProgram(SpirvShader const *spirvShader, vk::PipelineLayout const *pipelineLayout, const vk::DescriptorSet::Bindings &descriptorSets);
+
+ virtual ~ComputeProgram();
+
+ // generate builds the shader program.
+ void generate();
+
+ // run executes the compute shader routine for all workgroups.
+ // TODO(bclayton): This probably does not belong here. Consider moving.
+ static void run(
+ Routine *routine,
+ vk::DescriptorSet::Bindings const &descriptorSetBindings,
+ vk::DescriptorSet::DynamicOffsets const &descriptorDynamicOffsets,
+ PushConstantStorage const &pushConstants,
+ uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
+
+ protected:
+ void emit();
+
+ void setInputBuiltin(spv::BuiltIn id, std::function<void(const SpirvShader::BuiltinMapping& builtin, Array<SIMD::Float>& value)> cb);
+
+ Pointer<Byte> data; // argument 0
+
+ struct Data
+ {
+ vk::DescriptorSet::Bindings descriptorSets;
+ vk::DescriptorSet::DynamicOffsets descriptorDynamicOffsets;
+ uint4 numWorkgroups;
+ uint4 workgroupID;
+ PushConstantStorage pushConstants;
+ };
+
+ SpirvRoutine routine;
+ SpirvShader const * const shader;
+ vk::PipelineLayout const * const pipelineLayout;
+ const vk::DescriptorSet::Bindings &descriptorSets;
+ };
+
+} // namespace sw
+
+#endif // sw_ComputeProgram_hpp
diff --git a/chromium/third_party/swiftshader/src/Pipeline/PixelProgram.cpp b/chromium/third_party/swiftshader/src/Pipeline/PixelProgram.cpp
index 57df1cdde85..02eacaad114 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/PixelProgram.cpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/PixelProgram.cpp
@@ -24,14 +24,47 @@ namespace sw
void PixelProgram::setBuiltins(Int &x, Int &y, Float4(&z)[4], Float4 &w)
{
- // TODO: wire up builtins correctly
+ auto it = spirvShader->inputBuiltins.find(spv::BuiltInFragCoord);
+ if (it != spirvShader->inputBuiltins.end())
+ {
+ auto &var = routine.getVariable(it->second.Id);
+ var[it->second.FirstComponent] = SIMD::Float(Float(x)) + SIMD::Float(0.5f, 1.5f, 0.5f, 1.5f);
+ var[it->second.FirstComponent+1] = SIMD::Float(Float(y)) + SIMD::Float(0.5f, 0.5f, 1.5f, 1.5f);
+ var[it->second.FirstComponent+2] = z[0]; // sample 0
+ var[it->second.FirstComponent+3] = w;
+ }
+
+ it = spirvShader->inputBuiltins.find(spv::BuiltInSubgroupSize);
+ if (it != spirvShader->inputBuiltins.end())
+ {
+ ASSERT(it->second.SizeInComponents == 1);
+ routine.getVariable(it->second.Id)[it->second.FirstComponent] = As<SIMD::Float>(Int(SIMD::Width));
+ }
+
+ it = spirvShader->inputBuiltins.find(spv::BuiltInSubgroupLocalInvocationId);
+ if (it != spirvShader->inputBuiltins.end())
+ {
+ ASSERT(it->second.SizeInComponents == 1);
+ routine.getVariable(it->second.Id)[it->second.FirstComponent] = As<SIMD::Float>(SIMD::Int(0, 1, 2, 3));
+ }
}
void PixelProgram::applyShader(Int cMask[4])
{
- enableIndex = 0;
+ routine.descriptorSets = data + OFFSET(DrawData, descriptorSets);
+ routine.descriptorDynamicOffsets = data + OFFSET(DrawData, descriptorDynamicOffsets);
+ routine.pushConstants = data + OFFSET(DrawData, pushConstants);
+
+ auto it = spirvShader->inputBuiltins.find(spv::BuiltInFrontFacing);
+ if (it != spirvShader->inputBuiltins.end())
+ {
+ ASSERT(it->second.SizeInComponents == 1);
+ auto frontFacing = Int4(*Pointer<Int>(primitive + OFFSET(Primitive, clockwiseMask)));
+ routine.getVariable(it->second.Id)[it->second.FirstComponent] = As<Float4>(frontFacing);
+ }
- spirvShader->emit(&routine);
+ auto activeLaneMask = SIMD::Int(0xFFFFFFFF); // TODO: Control this.
+ spirvShader->emit(&routine, activeLaneMask, descriptorSets);
spirvShader->emitEpilog(&routine);
for(int i = 0; i < RENDERTARGETS; i++)
@@ -44,6 +77,20 @@ namespace sw
clampColor(c);
+ if(spirvShader->getModes().ContainsKill)
+ {
+ for (auto i = 0u; i < state.multiSample; i++)
+ {
+ cMask[i] &= ~routine.killMask;
+ }
+ }
+
+ it = spirvShader->outputBuiltins.find(spv::BuiltInFragDepth);
+ if (it != spirvShader->outputBuiltins.end())
+ {
+ oDepth = routine.getVariable(it->second.Id)[it->second.FirstComponent];
+ }
+
if(spirvShader->getModes().DepthReplacing)
{
oDepth = Min(Max(oDepth, Float4(0.0f)), Float4(1.0f));
@@ -93,12 +140,15 @@ namespace sw
{
case VK_FORMAT_R5G6B5_UNORM_PACK16:
case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SRGB:
case VK_FORMAT_R8G8B8A8_UNORM:
case VK_FORMAT_R8G8B8A8_SRGB:
case VK_FORMAT_R8G8_UNORM:
case VK_FORMAT_R8_UNORM:
case VK_FORMAT_R16G16_UNORM:
case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
for(unsigned int q = 0; q < state.multiSample; q++)
{
Pointer<Byte> buffer = cBuffer[index] + q * *Pointer<Int>(data + OFFSET(DrawData, colorSliceB[index]));
@@ -147,6 +197,8 @@ namespace sw
case VK_FORMAT_R8_UINT:
case VK_FORMAT_R8G8_UINT:
case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SINT_PACK32:
for(unsigned int q = 0; q < state.multiSample; q++)
{
Pointer<Byte> buffer = cBuffer[index] + q * *Pointer<Int>(data + OFFSET(DrawData, colorSliceB[index]));
@@ -160,7 +212,7 @@ namespace sw
}
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkFormat: %d", int(state.targetFormat[index]));
}
}
}
@@ -180,12 +232,15 @@ namespace sw
break;
case VK_FORMAT_R5G6B5_UNORM_PACK16:
case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SRGB:
case VK_FORMAT_R8G8B8A8_UNORM:
case VK_FORMAT_R8G8B8A8_SRGB:
case VK_FORMAT_R8G8_UNORM:
case VK_FORMAT_R8_UNORM:
case VK_FORMAT_R16G16_UNORM:
case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
oC[index].x = Max(oC[index].x, Float4(0.0f)); oC[index].x = Min(oC[index].x, Float4(1.0f));
oC[index].y = Max(oC[index].y, Float4(0.0f)); oC[index].y = Min(oC[index].y, Float4(1.0f));
oC[index].z = Max(oC[index].z, Float4(0.0f)); oC[index].z = Min(oC[index].z, Float4(1.0f));
@@ -212,19 +267,15 @@ namespace sw
case VK_FORMAT_R8_UINT:
case VK_FORMAT_R8G8_UINT:
case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SINT_PACK32:
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkFormat: %d", int(state.targetFormat[index]));
}
}
}
- Int4 PixelProgram::enableMask()
- {
- Int4 enable = true ? Int4(enableStack[enableIndex]) : Int4(0xFFFFFFFF);
- return enable;
- }
-
Float4 PixelProgram::linearToSRGB(const Float4 &x) // Approximates x^(1.0/2.2)
{
Float4 sqrtx = Rcp_pp(RcpSqrt_pp(x));
diff --git a/chromium/third_party/swiftshader/src/Pipeline/PixelProgram.hpp b/chromium/third_party/swiftshader/src/Pipeline/PixelProgram.hpp
index 71c46df5915..98fa19d7c3c 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/PixelProgram.hpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/PixelProgram.hpp
@@ -26,8 +26,9 @@ namespace sw
PixelProgram(
const PixelProcessor::State &state,
vk::PipelineLayout const *pipelineLayout,
- SpirvShader const *spirvShader) :
- PixelRoutine(state, pipelineLayout, spirvShader)
+ SpirvShader const *spirvShader,
+ const vk::DescriptorSet::Bindings &descriptorSets) :
+ PixelRoutine(state, pipelineLayout, spirvShader, descriptorSets)
{
}
@@ -43,15 +44,9 @@ namespace sw
// Color outputs
Vector4f c[RENDERTARGETS];
- // Per pixel based on conditions reached
- Int enableIndex;
- Array<Int4, 1 + 24> enableStack;
-
// Raster operations
void clampColor(Vector4f oC[RENDERTARGETS]);
- Int4 enableMask();
-
Float4 linearToSRGB(const Float4 &x);
};
}
diff --git a/chromium/third_party/swiftshader/src/Pipeline/PixelRoutine.cpp b/chromium/third_party/swiftshader/src/Pipeline/PixelRoutine.cpp
index fd6a85c0aaa..9aac2e609ae 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/PixelRoutine.cpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/PixelRoutine.cpp
@@ -18,13 +18,16 @@
#include "Constants.hpp"
#include "Device/Renderer.hpp"
#include "Device/QuadRasterizer.hpp"
-#include "Device/Surface.hpp"
#include "Device/Primitive.hpp"
#include "Vulkan/VkDebug.hpp"
+#include "Vulkan/VkPipelineLayout.hpp"
+
+#ifdef Bool
+#undef Bool // b/127920555
+#endif
namespace sw
{
- extern bool complementaryDepthBuffer;
extern bool postBlendSRGB;
extern bool exactColorRounding;
extern bool forceClearRegisters;
@@ -32,9 +35,11 @@ namespace sw
PixelRoutine::PixelRoutine(
const PixelProcessor::State &state,
vk::PipelineLayout const *pipelineLayout,
- SpirvShader const *spirvShader)
+ SpirvShader const *spirvShader,
+ const vk::DescriptorSet::Bindings &descriptorSets)
: QuadRasterizer(state, spirvShader),
- routine(pipelineLayout)
+ routine(pipelineLayout),
+ descriptorSets(descriptorSets)
{
spirvShader->emitProlog(&routine);
@@ -292,33 +297,33 @@ namespace sw
}
Byte8 value = *Pointer<Byte8>(buffer);
- Byte8 valueCCW = value;
+ Byte8 valueBack = value;
- if(!state.noStencilMask)
+ if(state.frontStencil.compareMask != 0xff)
{
value &= *Pointer<Byte8>(data + OFFSET(DrawData,stencil[0].testMaskQ));
}
- stencilTest(value, state.stencilCompareMode, false);
+ stencilTest(value, state.frontStencil.compareOp, false);
if(state.twoSidedStencil)
{
- if(!state.noStencilMaskCCW)
+ if(state.backStencil.compareMask != 0xff)
{
- valueCCW &= *Pointer<Byte8>(data + OFFSET(DrawData,stencil[1].testMaskQ));
+ valueBack &= *Pointer<Byte8>(data + OFFSET(DrawData,stencil[1].testMaskQ));
}
- stencilTest(valueCCW, state.stencilCompareModeCCW, true);
+ stencilTest(valueBack, state.backStencil.compareOp, true);
value &= *Pointer<Byte8>(primitive + OFFSET(Primitive,clockwiseMask));
- valueCCW &= *Pointer<Byte8>(primitive + OFFSET(Primitive,invClockwiseMask));
- value |= valueCCW;
+ valueBack &= *Pointer<Byte8>(primitive + OFFSET(Primitive,invClockwiseMask));
+ value |= valueBack;
}
sMask = SignMask(value) & cMask;
}
- void PixelRoutine::stencilTest(Byte8 &value, VkCompareOp stencilCompareMode, bool CCW)
+ void PixelRoutine::stencilTest(Byte8 &value, VkCompareOp stencilCompareMode, bool isBack)
{
Byte8 equal;
@@ -332,57 +337,45 @@ namespace sw
break;
case VK_COMPARE_OP_LESS: // a < b ~ b > a
value += Byte8(0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80);
- value = CmpGT(As<SByte8>(value), *Pointer<SByte8>(data + OFFSET(DrawData,stencil[CCW].referenceMaskedSignedQ)));
+ value = CmpGT(As<SByte8>(value), *Pointer<SByte8>(data + OFFSET(DrawData,stencil[isBack].referenceMaskedSignedQ)));
break;
case VK_COMPARE_OP_EQUAL:
- value = CmpEQ(value, *Pointer<Byte8>(data + OFFSET(DrawData,stencil[CCW].referenceMaskedQ)));
+ value = CmpEQ(value, *Pointer<Byte8>(data + OFFSET(DrawData,stencil[isBack].referenceMaskedQ)));
break;
case VK_COMPARE_OP_NOT_EQUAL: // a != b ~ !(a == b)
- value = CmpEQ(value, *Pointer<Byte8>(data + OFFSET(DrawData,stencil[CCW].referenceMaskedQ)));
+ value = CmpEQ(value, *Pointer<Byte8>(data + OFFSET(DrawData,stencil[isBack].referenceMaskedQ)));
value ^= Byte8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
break;
case VK_COMPARE_OP_LESS_OR_EQUAL: // a <= b ~ (b > a) || (a == b)
equal = value;
- equal = CmpEQ(equal, *Pointer<Byte8>(data + OFFSET(DrawData,stencil[CCW].referenceMaskedQ)));
+ equal = CmpEQ(equal, *Pointer<Byte8>(data + OFFSET(DrawData,stencil[isBack].referenceMaskedQ)));
value += Byte8(0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80);
- value = CmpGT(As<SByte8>(value), *Pointer<SByte8>(data + OFFSET(DrawData,stencil[CCW].referenceMaskedSignedQ)));
+ value = CmpGT(As<SByte8>(value), *Pointer<SByte8>(data + OFFSET(DrawData,stencil[isBack].referenceMaskedSignedQ)));
value |= equal;
break;
case VK_COMPARE_OP_GREATER: // a > b
- equal = *Pointer<Byte8>(data + OFFSET(DrawData,stencil[CCW].referenceMaskedSignedQ));
+ equal = *Pointer<Byte8>(data + OFFSET(DrawData,stencil[isBack].referenceMaskedSignedQ));
value += Byte8(0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80);
equal = CmpGT(As<SByte8>(equal), As<SByte8>(value));
value = equal;
break;
case VK_COMPARE_OP_GREATER_OR_EQUAL: // a >= b ~ !(a < b) ~ !(b > a)
value += Byte8(0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80);
- value = CmpGT(As<SByte8>(value), *Pointer<SByte8>(data + OFFSET(DrawData,stencil[CCW].referenceMaskedSignedQ)));
+ value = CmpGT(As<SByte8>(value), *Pointer<SByte8>(data + OFFSET(DrawData,stencil[isBack].referenceMaskedSignedQ)));
value ^= Byte8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkCompareOp: %d", int(stencilCompareMode));
}
}
- Bool PixelRoutine::depthTest(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &sMask, Int &zMask, Int &cMask)
+ Bool PixelRoutine::depthTest32F(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &sMask, Int &zMask, Int &cMask)
{
- if(!state.depthTestActive)
- {
- return true;
- }
-
Float4 Z = z;
if(spirvShader && spirvShader->getModes().DepthReplacing)
{
- if(complementaryDepthBuffer)
- {
- Z = Float4(1.0f) - oDepth;
- }
- else
- {
- Z = oDepth;
- }
+ Z = oDepth;
}
Pointer<Byte> buffer;
@@ -436,47 +429,119 @@ namespace sw
zTest = CmpNEQ(zValue, Z);
break;
case VK_COMPARE_OP_LESS:
- if(complementaryDepthBuffer)
- {
- zTest = CmpLT(zValue, Z);
- }
- else
- {
- zTest = CmpNLE(zValue, Z);
- }
+ zTest = CmpNLE(zValue, Z);
break;
case VK_COMPARE_OP_GREATER_OR_EQUAL:
- if(complementaryDepthBuffer)
- {
- zTest = CmpNLT(zValue, Z);
- }
- else
- {
- zTest = CmpLE(zValue, Z);
- }
+ zTest = CmpLE(zValue, Z);
break;
case VK_COMPARE_OP_LESS_OR_EQUAL:
- if(complementaryDepthBuffer)
- {
- zTest = CmpLE(zValue, Z);
- }
- else
- {
- zTest = CmpNLT(zValue, Z);
- }
+ zTest = CmpNLT(zValue, Z);
break;
case VK_COMPARE_OP_GREATER:
- if(complementaryDepthBuffer)
+ zTest = CmpLT(zValue, Z);
+ break;
+ default:
+ UNIMPLEMENTED("VkCompareOp: %d", int(state.depthCompareMode));
+ }
+
+ switch(state.depthCompareMode)
+ {
+ case VK_COMPARE_OP_ALWAYS:
+ zMask = cMask;
+ break;
+ case VK_COMPARE_OP_NEVER:
+ zMask = 0x0;
+ break;
+ default:
+ zMask = SignMask(zTest) & cMask;
+ break;
+ }
+
+ if(state.stencilActive)
+ {
+ zMask &= sMask;
+ }
+
+ return zMask != 0;
+ }
+
+ Bool PixelRoutine::depthTest16(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &sMask, Int &zMask, Int &cMask)
+ {
+ Short4 Z = convertFixed16(z, true);
+
+ if(spirvShader && spirvShader->getModes().DepthReplacing)
+ {
+ Z = convertFixed16(oDepth, true);
+ }
+
+ Pointer<Byte> buffer;
+ Int pitch;
+
+ if(!state.quadLayoutDepthBuffer)
+ {
+ buffer = zBuffer + 2 * x;
+ pitch = *Pointer<Int>(data + OFFSET(DrawData,depthPitchB));
+ }
+ else
+ {
+ buffer = zBuffer + 4 * x;
+ }
+
+ if(q > 0)
+ {
+ buffer += q * *Pointer<Int>(data + OFFSET(DrawData,depthSliceB));
+ }
+
+ Short4 zValue;
+
+ if(state.depthCompareMode != VK_COMPARE_OP_NEVER || (state.depthCompareMode != VK_COMPARE_OP_ALWAYS && !state.depthWriteEnable))
+ {
+ if(!state.quadLayoutDepthBuffer)
{
- zTest = CmpNLE(zValue, Z);
+ // FIXME: Properly optimizes?
+ zValue = *Pointer<Short4>(buffer) & Short4(-1, -1, 0, 0);
+ zValue = zValue | (*Pointer<Short4>(buffer + pitch - 4) & Short4(0, 0, -1, -1));
}
else
{
- zTest = CmpLT(zValue, Z);
+ zValue = *Pointer<Short4>(buffer, 8);
}
+ }
+
+ Int4 zTest;
+
+ // Bias values to make unsigned compares out of Reactor's (due SSE's) signed compares only
+ zValue = zValue - Short4(0x8000u);
+ Z = Z - Short4(0x8000u);
+
+ switch(state.depthCompareMode)
+ {
+ case VK_COMPARE_OP_ALWAYS:
+ // Optimized
+ break;
+ case VK_COMPARE_OP_NEVER:
+ // Optimized
+ break;
+ case VK_COMPARE_OP_EQUAL:
+ zTest = Int4(CmpEQ(zValue, Z));
+ break;
+ case VK_COMPARE_OP_NOT_EQUAL:
+ zTest = ~Int4(CmpEQ(zValue, Z));
+ break;
+ case VK_COMPARE_OP_LESS:
+ zTest = Int4(CmpGT(zValue, Z));
+ break;
+ case VK_COMPARE_OP_GREATER_OR_EQUAL:
+ zTest = ~Int4(CmpGT(zValue, Z));
+ break;
+ case VK_COMPARE_OP_LESS_OR_EQUAL:
+ zTest = ~Int4(CmpGT(Z, zValue));
+ break;
+ case VK_COMPARE_OP_GREATER:
+ zTest = Int4(CmpGT(Z, zValue));
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkCompareOp: %d", int(state.depthCompareMode));
}
switch(state.depthCompareMode)
@@ -500,6 +565,19 @@ namespace sw
return zMask != 0;
}
+ Bool PixelRoutine::depthTest(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &sMask, Int &zMask, Int &cMask)
+ {
+ if(!state.depthTestActive)
+ {
+ return true;
+ }
+
+ if (state.depthFormat == VK_FORMAT_D16_UNORM)
+ return depthTest16(zBuffer, q, x, z, sMask, zMask, cMask);
+ else
+ return depthTest32F(zBuffer, q, x, z, sMask, zMask, cMask);
+ }
+
void PixelRoutine::alphaToCoverage(Int cMask[4], Float4 &alpha)
{
Int4 coverage0 = CmpNLT(alpha, *Pointer<Float4>(data + OFFSET(DrawData,a2c0)));
@@ -518,25 +596,13 @@ namespace sw
cMask[3] &= aMask3;
}
- void PixelRoutine::writeDepth(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &zMask)
+ void PixelRoutine::writeDepth32F(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &zMask)
{
- if(!state.depthWriteEnable)
- {
- return;
- }
-
Float4 Z = z;
if(spirvShader && spirvShader->getModes().DepthReplacing)
{
- if(complementaryDepthBuffer)
- {
- Z = Float4(1.0f) - oDepth;
- }
- else
- {
- Z = oDepth;
- }
+ Z = oDepth;
}
Pointer<Byte> buffer;
@@ -589,6 +655,80 @@ namespace sw
}
}
+ void PixelRoutine::writeDepth16(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &zMask)
+ {
+ Short4 Z = As<Short4>(convertFixed16(z, true));
+
+ if(spirvShader && spirvShader->getModes().DepthReplacing)
+ {
+ Z = As<Short4>(convertFixed16(oDepth, true));
+ }
+
+ Pointer<Byte> buffer;
+ Int pitch;
+
+ if(!state.quadLayoutDepthBuffer)
+ {
+ buffer = zBuffer + 2 * x;
+ pitch = *Pointer<Int>(data + OFFSET(DrawData,depthPitchB));
+ }
+ else
+ {
+ buffer = zBuffer + 4 * x;
+ }
+
+ if(q > 0)
+ {
+ buffer += q * *Pointer<Int>(data + OFFSET(DrawData,depthSliceB));
+ }
+
+ Short4 zValue;
+
+ if(state.depthCompareMode != VK_COMPARE_OP_NEVER || (state.depthCompareMode != VK_COMPARE_OP_ALWAYS && !state.depthWriteEnable))
+ {
+ if(!state.quadLayoutDepthBuffer)
+ {
+ // FIXME: Properly optimizes?
+ zValue = *Pointer<Short4>(buffer) & Short4(-1, -1, 0, 0);
+ zValue = zValue | (*Pointer<Short4>(buffer + pitch - 4) & Short4(0, 0, -1, -1));
+ }
+ else
+ {
+ zValue = *Pointer<Short4>(buffer, 8);
+ }
+ }
+
+ Z = Z & *Pointer<Short4>(constants + OFFSET(Constants,maskW4Q) + zMask * 8, 8);
+ zValue = zValue & *Pointer<Short4>(constants + OFFSET(Constants,invMaskW4Q) + zMask * 8, 8);
+ Z = Z | zValue;
+
+ if(!state.quadLayoutDepthBuffer)
+ {
+ // FIXME: Properly optimizes?
+ *Pointer<Short>(buffer) = Extract(Z, 0);
+ *Pointer<Short>(buffer+2) = Extract(Z, 1);
+ *Pointer<Short>(buffer+pitch) = Extract(Z, 2);
+ *Pointer<Short>(buffer+pitch+2) = Extract(Z, 3);
+ }
+ else
+ {
+ *Pointer<Short4>(buffer, 8) = Z;
+ }
+ }
+
+ void PixelRoutine::writeDepth(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &zMask)
+ {
+ if(!state.depthWriteEnable)
+ {
+ return;
+ }
+
+ if (state.depthFormat == VK_FORMAT_D16_UNORM)
+ writeDepth16(zBuffer, q, x, z, zMask);
+ else
+ writeDepth32F(zBuffer, q, x, z, zMask);
+ }
+
void PixelRoutine::writeStencil(Pointer<Byte> &sBuffer, int q, Int &x, Int &sMask, Int &zMask, Int &cMask)
{
if(!state.stencilActive)
@@ -596,15 +736,15 @@ namespace sw
return;
}
- if(state.stencilPassOperation == VK_STENCIL_OP_KEEP && state.stencilZFailOperation == VK_STENCIL_OP_KEEP && state.stencilFailOperation == VK_STENCIL_OP_KEEP)
+ if(state.frontStencil.passOp == VK_STENCIL_OP_KEEP && state.frontStencil.depthFailOp == VK_STENCIL_OP_KEEP && state.frontStencil.failOp == VK_STENCIL_OP_KEEP)
{
- if(!state.twoSidedStencil || (state.stencilPassOperationCCW == VK_STENCIL_OP_KEEP && state.stencilZFailOperationCCW == VK_STENCIL_OP_KEEP && state.stencilFailOperationCCW == VK_STENCIL_OP_KEEP))
+ if(!state.twoSidedStencil || (state.backStencil.passOp == VK_STENCIL_OP_KEEP && state.backStencil.depthFailOp == VK_STENCIL_OP_KEEP && state.backStencil.failOp == VK_STENCIL_OP_KEEP))
{
return;
}
}
- if(state.stencilWriteMasked && (!state.twoSidedStencil || state.stencilWriteMaskedCCW))
+ if((state.frontStencil.writeMask == 0) && (!state.twoSidedStencil || (state.backStencil.writeMask == 0)))
{
return;
}
@@ -619,9 +759,9 @@ namespace sw
Byte8 bufferValue = *Pointer<Byte8>(buffer);
Byte8 newValue;
- stencilOperation(newValue, bufferValue, state.stencilPassOperation, state.stencilZFailOperation, state.stencilFailOperation, false, zMask, sMask);
+ stencilOperation(newValue, bufferValue, state.frontStencil, false, zMask, sMask);
- if(!state.noStencilWriteMask)
+ if(state.frontStencil.writeMask != 0)
{
Byte8 maskedValue = bufferValue;
newValue &= *Pointer<Byte8>(data + OFFSET(DrawData,stencil[0].writeMaskQ));
@@ -631,21 +771,21 @@ namespace sw
if(state.twoSidedStencil)
{
- Byte8 newValueCCW;
+ Byte8 newValueBack;
- stencilOperation(newValueCCW, bufferValue, state.stencilPassOperationCCW, state.stencilZFailOperationCCW, state.stencilFailOperationCCW, true, zMask, sMask);
+ stencilOperation(newValueBack, bufferValue, state.backStencil, true, zMask, sMask);
- if(!state.noStencilWriteMaskCCW)
+ if(state.backStencil.writeMask != 0)
{
Byte8 maskedValue = bufferValue;
- newValueCCW &= *Pointer<Byte8>(data + OFFSET(DrawData,stencil[1].writeMaskQ));
+ newValueBack &= *Pointer<Byte8>(data + OFFSET(DrawData,stencil[1].writeMaskQ));
maskedValue &= *Pointer<Byte8>(data + OFFSET(DrawData,stencil[1].invWriteMaskQ));
- newValueCCW |= maskedValue;
+ newValueBack |= maskedValue;
}
newValue &= *Pointer<Byte8>(primitive + OFFSET(Primitive,clockwiseMask));
- newValueCCW &= *Pointer<Byte8>(primitive + OFFSET(Primitive,invClockwiseMask));
- newValue |= newValueCCW;
+ newValueBack &= *Pointer<Byte8>(primitive + OFFSET(Primitive,invClockwiseMask));
+ newValue |= newValueBack;
}
newValue &= *Pointer<Byte8>(constants + OFFSET(Constants,maskB4Q) + 8 * cMask);
@@ -655,27 +795,27 @@ namespace sw
*Pointer<Byte4>(buffer) = Byte4(newValue);
}
- void PixelRoutine::stencilOperation(Byte8 &newValue, Byte8 &bufferValue, VkStencilOp stencilPassOperation, VkStencilOp stencilZFailOperation, VkStencilOp stencilFailOperation, bool CCW, Int &zMask, Int &sMask)
+ void PixelRoutine::stencilOperation(Byte8 &newValue, Byte8 &bufferValue, VkStencilOpState const &ops, bool isBack, Int &zMask, Int &sMask)
{
Byte8 &pass = newValue;
Byte8 fail;
Byte8 zFail;
- stencilOperation(pass, bufferValue, stencilPassOperation, CCW);
+ stencilOperation(pass, bufferValue, ops.passOp, isBack);
- if(stencilZFailOperation != stencilPassOperation)
+ if(ops.depthFailOp != ops.passOp)
{
- stencilOperation(zFail, bufferValue, stencilZFailOperation, CCW);
+ stencilOperation(zFail, bufferValue, ops.depthFailOp, isBack);
}
- if(stencilFailOperation != stencilPassOperation || stencilFailOperation != stencilZFailOperation)
+ if(ops.failOp != ops.passOp || ops.failOp != ops.depthFailOp)
{
- stencilOperation(fail, bufferValue, stencilFailOperation, CCW);
+ stencilOperation(fail, bufferValue, ops.failOp, isBack);
}
- if(stencilFailOperation != stencilPassOperation || stencilFailOperation != stencilZFailOperation)
+ if(ops.failOp != ops.passOp || ops.failOp != ops.depthFailOp)
{
- if(state.depthTestActive && stencilZFailOperation != stencilPassOperation) // zMask valid and values not the same
+ if(state.depthTestActive && ops.depthFailOp != ops.passOp) // zMask valid and values not the same
{
pass &= *Pointer<Byte8>(constants + OFFSET(Constants,maskB4Q) + 8 * zMask);
zFail &= *Pointer<Byte8>(constants + OFFSET(Constants,invMaskB4Q) + 8 * zMask);
@@ -688,7 +828,7 @@ namespace sw
}
}
- void PixelRoutine::stencilOperation(Byte8 &output, Byte8 &bufferValue, VkStencilOp operation, bool CCW)
+ void PixelRoutine::stencilOperation(Byte8 &output, Byte8 &bufferValue, VkStencilOp operation, bool isBack)
{
switch(operation)
{
@@ -699,7 +839,7 @@ namespace sw
output = Byte8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
break;
case VK_STENCIL_OP_REPLACE:
- output = *Pointer<Byte8>(data + OFFSET(DrawData,stencil[CCW].referenceQ));
+ output = *Pointer<Byte8>(data + OFFSET(DrawData,stencil[isBack].referenceQ));
break;
case VK_STENCIL_OP_INCREMENT_AND_CLAMP:
output = AddSat(bufferValue, Byte8(1, 1, 1, 1, 1, 1, 1, 1));
@@ -717,7 +857,7 @@ namespace sw
output = bufferValue - Byte8(1, 1, 1, 1, 1, 1, 1, 1);
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkStencilOp: %d", int(operation));
}
}
@@ -798,7 +938,7 @@ namespace sw
blendFactor.z = *Pointer<Short4>(data + OFFSET(DrawData,factor.invBlendConstant4W[3]));
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkBlendFactor: %d", int(blendFactorActive));
}
}
@@ -848,13 +988,13 @@ namespace sw
blendFactor.w = *Pointer<Short4>(data + OFFSET(DrawData,factor.invBlendConstant4W[3]));
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkBlendFactor: %d", int(blendFactorAlphaActive));
}
}
bool PixelRoutine::isSRGB(int index) const
{
- return Surface::isSRGBformat(state.targetFormat[index]);
+ return vk::Format(state.targetFormat[index]).isSRGBformat();
}
void PixelRoutine::readPixel(int index, Pointer<Byte> &cBuffer, Int &x, Vector4s &pixel)
@@ -877,6 +1017,7 @@ namespace sw
pixel.w = Short4(0xFFFFu);
break;
case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SRGB:
buffer = cBuffer + 4 * x;
c01 = *Pointer<Short4>(buffer);
buffer += *Pointer<Int>(data + OFFSET(DrawData, colorPitchB[index]));
@@ -959,7 +1100,7 @@ namespace sw
pixel.w = Short4(0xFFFFu);
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkFormat %d", state.targetFormat[index]);
}
if((postBlendSRGB && state.writeSRGB) || isSRGB(index))
@@ -1040,7 +1181,7 @@ namespace sw
current.z = Short4(0x0000);
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkBlendOp: %d", int(state.blendOperation));
}
blendFactorAlpha(sourceFactor, current, pixel, state.sourceBlendFactorAlpha);
@@ -1083,7 +1224,7 @@ namespace sw
current.w = Short4(0x0000);
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkBlendOp: %d", int(state.blendOperationAlpha));
}
}
@@ -1104,10 +1245,13 @@ namespace sw
current.z = AddSat(As<UShort4>(current.z), UShort4(0x0400));
break;
case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SRGB:
case VK_FORMAT_R8G8B8A8_UNORM:
case VK_FORMAT_R8G8B8A8_SRGB:
case VK_FORMAT_R8G8_UNORM:
case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
current.x = current.x - As<Short4>(As<UShort4>(current.x) >> 8) + Short4(0x0080);
current.y = current.y - As<Short4>(As<UShort4>(current.y) >> 8) + Short4(0x0080);
current.z = current.z - As<Short4>(As<UShort4>(current.z) >> 8) + Short4(0x0080);
@@ -1133,6 +1277,7 @@ namespace sw
}
break;
case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SRGB:
if(rgbaWriteMask == 0x7)
{
current.x = As<Short4>(As<UShort4>(current.x) >> 8);
@@ -1169,6 +1314,8 @@ namespace sw
break;
case VK_FORMAT_R8G8B8A8_UNORM:
case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
if(rgbaWriteMask == 0x7)
{
current.x = As<Short4>(As<UShort4>(current.x) >> 8);
@@ -1224,7 +1371,7 @@ namespace sw
transpose4x4(current.x, current.y, current.z, current.w);
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkFormat: %d", int(state.targetFormat[index]));
}
Short4 c01 = current.z;
@@ -1288,11 +1435,12 @@ namespace sw
}
break;
case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SRGB:
{
Pointer<Byte> buffer = cBuffer + x * 4;
Short4 value = *Pointer<Short4>(buffer);
- if(state.targetFormat[index] == VK_FORMAT_B8G8R8A8_UNORM && bgraWriteMask != 0x0000000F) // FIXME: Need for masking when XRGB && Fh?
+ if(bgraWriteMask != 0x0000000F) // FIXME: Need for masking when XRGB && Fh?
{
Short4 masked = value;
c01 &= *Pointer<Short4>(constants + OFFSET(Constants,maskB4Q[bgraWriteMask][0]));
@@ -1308,7 +1456,7 @@ namespace sw
buffer += *Pointer<Int>(data + OFFSET(DrawData,colorPitchB[index]));
value = *Pointer<Short4>(buffer);
- if(state.targetFormat[index] == VK_FORMAT_B8G8R8A8_UNORM && bgraWriteMask != 0x0000000F) // FIXME: Need for masking when XRGB && Fh?
+ if(bgraWriteMask != 0x0000000F) // FIXME: Need for masking when XRGB && Fh?
{
Short4 masked = value;
c23 &= *Pointer<Short4>(constants + OFFSET(Constants,maskB4Q[bgraWriteMask][0]));
@@ -1324,11 +1472,13 @@ namespace sw
break;
case VK_FORMAT_R8G8B8A8_UNORM:
case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
{
Pointer<Byte> buffer = cBuffer + x * 4;
Short4 value = *Pointer<Short4>(buffer);
- bool masked = ((state.targetFormat[index] == VK_FORMAT_R8G8B8A8_UNORM || state.targetFormat[index] == VK_FORMAT_R8G8B8A8_SRGB) && rgbaWriteMask != 0x0000000F); // FIXME: Need for masking when XBGR && Fh?
+ bool masked = (rgbaWriteMask != 0x0000000F); // FIXME: Need for masking when XBGR && Fh?
if(masked)
{
@@ -1515,7 +1665,7 @@ namespace sw
}
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkFormat: %d", int(state.targetFormat[index]));
}
}
@@ -1586,7 +1736,7 @@ namespace sw
blendFactor.z = *Pointer<Float4>(data + OFFSET(DrawData,factor.invBlendConstant4F[2]));
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkBlendFactor: %d", int(blendFactorActive));
}
}
@@ -1634,7 +1784,7 @@ namespace sw
blendFactor.w = *Pointer<Float4>(data + OFFSET(DrawData,factor.invBlendConstant4F[3]));
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkBlendFactor: %d", int(blendFactorAlphaActive));
}
}
@@ -1653,13 +1803,14 @@ namespace sw
Short4 c23;
Float4 one;
- if(Surface::isFloatFormat(state.targetFormat[index]))
+ vk::Format format(state.targetFormat[index]);
+ if(format.isFloatFormat())
{
one = Float4(1.0f);
}
- else if(Surface::isNonNormalizedInteger(state.targetFormat[index]))
+ else if(format.isNonNormalizedInteger())
{
- one = As<Float4>(Surface::isUnsignedComponent(state.targetFormat[index], 0) ? Int4(0xFFFFFFFF) : Int4(0x7FFFFFFF));
+ one = As<Float4>(format.isUnsignedComponent(0) ? Int4(0xFFFFFFFF) : Int4(0x7FFFFFFF));
}
switch(state.targetFormat[index])
@@ -1702,7 +1853,7 @@ namespace sw
transpose4x4(pixel.x, pixel.y, pixel.z, pixel.w);
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkFormat: %d", int(state.targetFormat[index]));
}
if((postBlendSRGB && state.writeSRGB) || isSRGB(index))
@@ -1774,7 +1925,7 @@ namespace sw
oC.z = Float4(0.0f);
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkBlendOp: %d", int(state.blendOperation));
}
blendFactorAlpha(sourceFactor, oC, pixel, state.sourceBlendFactorAlpha);
@@ -1818,7 +1969,7 @@ namespace sw
oC.w = Float4(0.0f);
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkBlendOp: %d", int(state.blendOperationAlpha));
}
}
@@ -1853,10 +2004,12 @@ namespace sw
case VK_FORMAT_R16G16B16A16_UINT:
case VK_FORMAT_R8G8B8A8_SINT:
case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SINT_PACK32:
transpose4x4(oC.x, oC.y, oC.z, oC.w);
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkFormat: %d", int(state.targetFormat[index]));
}
int rgbaWriteMask = state.colorWriteActive(index);
@@ -2205,13 +2358,17 @@ namespace sw
break;
case VK_FORMAT_R8G8B8A8_SINT:
case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SINT_PACK32:
if((rgbaWriteMask & 0x0000000F) != 0x0)
{
UInt2 value, packedCol, mergedMask;
buffer = cBuffer + 4 * x;
- if(state.targetFormat[index] == VK_FORMAT_R8G8B8A8_SINT)
+ bool isSigned = state.targetFormat[index] == VK_FORMAT_R8G8B8A8_SINT || state.targetFormat[index] == VK_FORMAT_A8B8G8R8_SINT_PACK32;
+
+ if(isSigned)
{
packedCol = As<UInt2>(PackSigned(Short4(As<Int4>(oC.x)), Short4(As<Int4>(oC.y))));
}
@@ -2229,7 +2386,7 @@ namespace sw
buffer += *Pointer<Int>(data + OFFSET(DrawData, colorPitchB[index]));
- if(state.targetFormat[index] == VK_FORMAT_R8G8B8A8_SINT)
+ if(isSigned)
{
packedCol = As<UInt2>(PackSigned(Short4(As<Int4>(oC.z)), Short4(As<Int4>(oC.w))));
}
@@ -2247,7 +2404,7 @@ namespace sw
}
break;
default:
- ASSERT(false);
+ UNIMPLEMENTED("VkFormat: %d", int(state.targetFormat[index]));
}
}
diff --git a/chromium/third_party/swiftshader/src/Pipeline/PixelRoutine.hpp b/chromium/third_party/swiftshader/src/Pipeline/PixelRoutine.hpp
index 7b8f78053c4..e4d8eeeca3e 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/PixelRoutine.hpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/PixelRoutine.hpp
@@ -27,7 +27,8 @@ namespace sw
public:
PixelRoutine(const PixelProcessor::State &state,
vk::PipelineLayout const *pipelineLayout,
- SpirvShader const *spirvShader);
+ SpirvShader const *spirvShader,
+ const vk::DescriptorSet::Bindings &descriptorSets);
virtual ~PixelRoutine();
@@ -37,6 +38,7 @@ namespace sw
Float4 rhw; // Reciprocal w
SpirvRoutine routine;
+ const vk::DescriptorSet::Bindings &descriptorSets;
// Depth output
Float4 oDepth;
@@ -46,7 +48,7 @@ namespace sw
virtual Bool alphaTest(Int cMask[4]) = 0;
virtual void rasterOperation(Pointer<Byte> cBuffer[4], Int &x, Int sMask[4], Int zMask[4], Int cMask[4]) = 0;
- virtual void quad(Pointer<Byte> cBuffer[4], Pointer<Byte> &zBuffer, Pointer<Byte> &sBuffer, Int cMask[4], Int &x, Int &y);
+ void quad(Pointer<Byte> cBuffer[4], Pointer<Byte> &zBuffer, Pointer<Byte> &sBuffer, Int cMask[4], Int &x, Int &y) override;
void alphaTest(Int &aMask, Short4 &alpha);
void alphaToCoverage(Int cMask[4], Float4 &alpha);
@@ -64,9 +66,9 @@ namespace sw
private:
Float4 interpolateCentroid(Float4 &x, Float4 &y, Float4 &rhw, Pointer<Byte> planeEquation, bool flat, bool perspective);
void stencilTest(Pointer<Byte> &sBuffer, int q, Int &x, Int &sMask, Int &cMask);
- void stencilTest(Byte8 &value, VkCompareOp stencilCompareMode, bool CCW);
- void stencilOperation(Byte8 &newValue, Byte8 &bufferValue, VkStencilOp stencilPassOperation, VkStencilOp stencilZFailOperation, VkStencilOp stencilFailOperation, bool CCW, Int &zMask, Int &sMask);
- void stencilOperation(Byte8 &output, Byte8 &bufferValue, VkStencilOp operation, bool CCW);
+ void stencilTest(Byte8 &value, VkCompareOp stencilCompareMode, bool isBack);
+ void stencilOperation(Byte8 &newValue, Byte8 &bufferValue, VkStencilOpState const &ops, bool isBack, Int &zMask, Int &sMask);
+ void stencilOperation(Byte8 &output, Byte8 &bufferValue, VkStencilOp operation, bool isBack);
Bool depthTest(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &sMask, Int &zMask, Int &cMask);
// Raster operations
@@ -82,6 +84,12 @@ namespace sw
void linearToSRGB16_12_16(Vector4s &c);
Float4 sRGBtoLinear(const Float4 &x);
+ Bool depthTest32F(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &sMask, Int &zMask, Int &cMask);
+ Bool depthTest16(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &sMask, Int &zMask, Int &cMask);
+
+ void writeDepth32F(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &zMask);
+ void writeDepth16(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &zMask);
+
bool colorUsed();
};
}
diff --git a/chromium/third_party/swiftshader/src/Pipeline/SamplerCore.cpp b/chromium/third_party/swiftshader/src/Pipeline/SamplerCore.cpp
index c6bf10bc130..fd83369ecce 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/SamplerCore.cpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/SamplerCore.cpp
@@ -227,7 +227,7 @@ namespace sw
return c;
}
- Vector4f SamplerCore::sampleTexture(Pointer<Byte> &texture, Float4 &u, Float4 &v, Float4 &w, Float4 &q, Float4 &bias, Vector4f &dsx, Vector4f &dsy, Vector4f &offset, SamplerFunction function)
+ Vector4f SamplerCore::sampleTextureF(Pointer<Byte> &texture, Float4 &u, Float4 &v, Float4 &w, Float4 &q, Float4 &bias, Vector4f &dsx, Vector4f &dsy, Vector4f &offset, SamplerFunction function)
{
Vector4f c;
@@ -2057,7 +2057,7 @@ namespace sw
Vector4s cs = sampleTexel(index, buffer);
- bool isInteger = Surface::isNonNormalizedInteger(state.textureFormat);
+ bool isInteger = state.textureFormat.isNonNormalizedInteger();
int componentCount = textureComponentCount();
for(int n = 0; n < componentCount; n++)
{
@@ -2426,22 +2426,22 @@ namespace sw
bool SamplerCore::hasFloatTexture() const
{
- return Surface::isFloatFormat(state.textureFormat);
+ return state.textureFormat.isFloatFormat();
}
bool SamplerCore::hasUnnormalizedIntegerTexture() const
{
- return Surface::isNonNormalizedInteger(state.textureFormat);
+ return state.textureFormat.isNonNormalizedInteger();
}
bool SamplerCore::hasUnsignedTextureComponent(int component) const
{
- return Surface::isUnsignedComponent(state.textureFormat, component);
+ return state.textureFormat.isUnsignedComponent(component);
}
int SamplerCore::textureComponentCount() const
{
- return Surface::componentCount(state.textureFormat);
+ return state.textureFormat.componentCount();
}
bool SamplerCore::hasThirdCoordinate() const
@@ -2451,275 +2451,31 @@ namespace sw
bool SamplerCore::has16bitTextureFormat() const
{
- switch(state.textureFormat)
- {
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- return true;
- case VK_FORMAT_R8_SNORM:
- case VK_FORMAT_R8G8_SNORM:
- case VK_FORMAT_R8G8B8A8_SNORM:
- case VK_FORMAT_R8_SINT:
- case VK_FORMAT_R8_UINT:
- case VK_FORMAT_R8G8_SINT:
- case VK_FORMAT_R8G8_UINT:
- case VK_FORMAT_R8G8B8A8_SINT:
- case VK_FORMAT_R8G8B8A8_UINT:
- case VK_FORMAT_R32_SINT:
- case VK_FORMAT_R32_UINT:
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32_UINT:
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R32G32B32A32_UINT:
- case VK_FORMAT_R8G8_UNORM:
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_R32_SFLOAT:
- case VK_FORMAT_R32G32_SFLOAT:
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- case VK_FORMAT_R8_UNORM:
- case VK_FORMAT_R16G16_UNORM:
- case VK_FORMAT_R16G16B16A16_UNORM:
- case VK_FORMAT_R16_SINT:
- case VK_FORMAT_R16_UINT:
- case VK_FORMAT_R16G16_SINT:
- case VK_FORMAT_R16G16_UINT:
- case VK_FORMAT_R16G16B16A16_SINT:
- case VK_FORMAT_R16G16B16A16_UINT:
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
- return false;
- default:
- ASSERT(false);
- }
-
- return false;
+ return state.textureFormat.has16bitTextureFormat();
}
bool SamplerCore::has8bitTextureComponents() const
{
- switch(state.textureFormat)
- {
- case VK_FORMAT_R8G8_UNORM:
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_R8_UNORM:
- case VK_FORMAT_R8_SNORM:
- case VK_FORMAT_R8G8_SNORM:
- case VK_FORMAT_R8G8B8A8_SNORM:
- case VK_FORMAT_R8_SINT:
- case VK_FORMAT_R8_UINT:
- case VK_FORMAT_R8G8_SINT:
- case VK_FORMAT_R8G8_UINT:
- case VK_FORMAT_R8G8B8A8_SINT:
- case VK_FORMAT_R8G8B8A8_UINT:
- return true;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- case VK_FORMAT_R32_SFLOAT:
- case VK_FORMAT_R32G32_SFLOAT:
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- case VK_FORMAT_R16G16_UNORM:
- case VK_FORMAT_R16G16B16A16_UNORM:
- case VK_FORMAT_R32_SINT:
- case VK_FORMAT_R32_UINT:
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32_UINT:
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R32G32B32A32_UINT:
- case VK_FORMAT_R16_SINT:
- case VK_FORMAT_R16_UINT:
- case VK_FORMAT_R16G16_SINT:
- case VK_FORMAT_R16G16_UINT:
- case VK_FORMAT_R16G16B16A16_SINT:
- case VK_FORMAT_R16G16B16A16_UINT:
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
- return false;
- default:
- ASSERT(false);
- }
-
- return false;
+ return state.textureFormat.has8bitTextureComponents();
}
bool SamplerCore::has16bitTextureComponents() const
{
- switch(state.textureFormat)
- {
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- case VK_FORMAT_R8_SNORM:
- case VK_FORMAT_R8G8_SNORM:
- case VK_FORMAT_R8G8B8A8_SNORM:
- case VK_FORMAT_R8_SINT:
- case VK_FORMAT_R8_UINT:
- case VK_FORMAT_R8G8_SINT:
- case VK_FORMAT_R8G8_UINT:
- case VK_FORMAT_R8G8B8A8_SINT:
- case VK_FORMAT_R8G8B8A8_UINT:
- case VK_FORMAT_R32_SINT:
- case VK_FORMAT_R32_UINT:
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32_UINT:
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R32G32B32A32_UINT:
- case VK_FORMAT_R8G8_UNORM:
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_R32_SFLOAT:
- case VK_FORMAT_R32G32_SFLOAT:
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- case VK_FORMAT_R8_UNORM:
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
- return false;
- case VK_FORMAT_R16G16_UNORM:
- case VK_FORMAT_R16G16B16A16_UNORM:
- case VK_FORMAT_R16_SINT:
- case VK_FORMAT_R16_UINT:
- case VK_FORMAT_R16G16_SINT:
- case VK_FORMAT_R16G16_UINT:
- case VK_FORMAT_R16G16B16A16_SINT:
- case VK_FORMAT_R16G16B16A16_UINT:
- return true;
- default:
- ASSERT(false);
- }
-
- return false;
+ return state.textureFormat.has16bitTextureComponents();
}
bool SamplerCore::has32bitIntegerTextureComponents() const
{
- switch(state.textureFormat)
- {
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- case VK_FORMAT_R8_SNORM:
- case VK_FORMAT_R8G8_SNORM:
- case VK_FORMAT_R8G8B8A8_SNORM:
- case VK_FORMAT_R8_SINT:
- case VK_FORMAT_R8_UINT:
- case VK_FORMAT_R8G8_SINT:
- case VK_FORMAT_R8G8_UINT:
- case VK_FORMAT_R8G8B8A8_SINT:
- case VK_FORMAT_R8G8B8A8_UINT:
- case VK_FORMAT_R8G8_UNORM:
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_R16G16_UNORM:
- case VK_FORMAT_R16G16B16A16_UNORM:
- case VK_FORMAT_R16_SINT:
- case VK_FORMAT_R16_UINT:
- case VK_FORMAT_R16G16_SINT:
- case VK_FORMAT_R16G16_UINT:
- case VK_FORMAT_R16G16B16A16_SINT:
- case VK_FORMAT_R16G16B16A16_UINT:
- case VK_FORMAT_R32_SFLOAT:
- case VK_FORMAT_R32G32_SFLOAT:
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- case VK_FORMAT_R8_UNORM:
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
- return false;
- case VK_FORMAT_R32_SINT:
- case VK_FORMAT_R32_UINT:
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32_UINT:
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R32G32B32A32_UINT:
- return true;
- default:
- ASSERT(false);
- }
-
- return false;
+ return state.textureFormat.has32bitIntegerTextureComponents();
}
bool SamplerCore::hasYuvFormat() const
{
- switch(state.textureFormat)
- {
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
- return true;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- case VK_FORMAT_R8_SNORM:
- case VK_FORMAT_R8G8_SNORM:
- case VK_FORMAT_R8G8B8A8_SNORM:
- case VK_FORMAT_R8_SINT:
- case VK_FORMAT_R8_UINT:
- case VK_FORMAT_R8G8_SINT:
- case VK_FORMAT_R8G8_UINT:
- case VK_FORMAT_R8G8B8A8_SINT:
- case VK_FORMAT_R8G8B8A8_UINT:
- case VK_FORMAT_R32_SINT:
- case VK_FORMAT_R32_UINT:
- case VK_FORMAT_R32G32_SINT:
- case VK_FORMAT_R32G32_UINT:
- case VK_FORMAT_R32G32B32A32_SINT:
- case VK_FORMAT_R32G32B32A32_UINT:
- case VK_FORMAT_R8G8_UNORM:
- case VK_FORMAT_B8G8R8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SRGB:
- case VK_FORMAT_R32_SFLOAT:
- case VK_FORMAT_R32G32_SFLOAT:
- case VK_FORMAT_R32G32B32A32_SFLOAT:
- case VK_FORMAT_R8_UNORM:
- case VK_FORMAT_R16G16_UNORM:
- case VK_FORMAT_R16G16B16A16_UNORM:
- case VK_FORMAT_R16_SINT:
- case VK_FORMAT_R16_UINT:
- case VK_FORMAT_R16G16_SINT:
- case VK_FORMAT_R16G16_UINT:
- case VK_FORMAT_R16G16B16A16_SINT:
- case VK_FORMAT_R16G16B16A16_UINT:
- return false;
- default:
- ASSERT(false);
- }
-
- return false;
+ return state.textureFormat.hasYuvFormat();
}
bool SamplerCore::isRGBComponent(int component) const
{
- switch(state.textureFormat)
- {
- case VK_FORMAT_R5G6B5_UNORM_PACK16: return component < 3;
- case VK_FORMAT_R8_SNORM: return component < 1;
- case VK_FORMAT_R8G8_SNORM: return component < 2;
- case VK_FORMAT_R8G8B8A8_SNORM: return component < 3;
- case VK_FORMAT_R8_SINT: return component < 1;
- case VK_FORMAT_R8_UINT: return component < 1;
- case VK_FORMAT_R8G8_SINT: return component < 2;
- case VK_FORMAT_R8G8_UINT: return component < 2;
- case VK_FORMAT_R8G8B8A8_SINT: return component < 3;
- case VK_FORMAT_R8G8B8A8_UINT: return component < 3;
- case VK_FORMAT_R32_SINT: return component < 1;
- case VK_FORMAT_R32_UINT: return component < 1;
- case VK_FORMAT_R32G32_SINT: return component < 2;
- case VK_FORMAT_R32G32_UINT: return component < 2;
- case VK_FORMAT_R32G32B32A32_SINT: return component < 3;
- case VK_FORMAT_R32G32B32A32_UINT: return component < 3;
- case VK_FORMAT_R8G8_UNORM: return component < 2;
- case VK_FORMAT_B8G8R8A8_UNORM: return component < 3;
- case VK_FORMAT_R8G8B8A8_UNORM: return component < 3;
- case VK_FORMAT_R8G8B8A8_SRGB: return component < 3;
- case VK_FORMAT_R32_SFLOAT: return component < 1;
- case VK_FORMAT_R32G32_SFLOAT: return component < 2;
- case VK_FORMAT_R32G32B32A32_SFLOAT: return component < 3;
- case VK_FORMAT_R8_UNORM: return component < 1;
- case VK_FORMAT_R16G16_UNORM: return component < 2;
- case VK_FORMAT_R16G16B16A16_UNORM: return component < 3;
- case VK_FORMAT_R16_SINT: return component < 1;
- case VK_FORMAT_R16_UINT: return component < 1;
- case VK_FORMAT_R16G16_SINT: return component < 2;
- case VK_FORMAT_R16G16_UINT: return component < 2;
- case VK_FORMAT_R16G16B16A16_SINT: return component < 3;
- case VK_FORMAT_R16G16B16A16_UINT: return component < 3;
- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM: return component < 3;
- default:
- ASSERT(false);
- }
-
- return false;
+ return state.textureFormat.isRGBComponent(component);
}
}
diff --git a/chromium/third_party/swiftshader/src/Pipeline/SamplerCore.hpp b/chromium/third_party/swiftshader/src/Pipeline/SamplerCore.hpp
index 684c1a749cd..0567fcdb1a3 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/SamplerCore.hpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/SamplerCore.hpp
@@ -51,7 +51,7 @@ namespace sw
SamplerCore(Pointer<Byte> &constants, const Sampler::State &state);
Vector4s sampleTexture(Pointer<Byte> &texture, Float4 &u, Float4 &v, Float4 &w, Float4 &q, Float4 &bias, Vector4f &dsx, Vector4f &dsy);
- Vector4f sampleTexture(Pointer<Byte> &texture, Float4 &u, Float4 &v, Float4 &w, Float4 &q, Float4 &bias, Vector4f &dsx, Vector4f &dsy, Vector4f &offset, SamplerFunction function);
+ Vector4f sampleTextureF(Pointer<Byte> &texture, Float4 &u, Float4 &v, Float4 &w, Float4 &q, Float4 &bias, Vector4f &dsx, Vector4f &dsy, Vector4f &offset, SamplerFunction function);
static Vector4f textureSize(Pointer<Byte> &mipmap, Float4 &lod);
private:
diff --git a/chromium/third_party/swiftshader/src/Pipeline/SetupRoutine.cpp b/chromium/third_party/swiftshader/src/Pipeline/SetupRoutine.cpp
index 0456c6f9742..5e9b7140eb5 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/SetupRoutine.cpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/SetupRoutine.cpp
@@ -23,9 +23,7 @@
namespace sw
{
- extern bool complementaryDepthBuffer;
extern TranscendentalPrecision logPrecision;
- extern bool leadingVertexFirst;
SetupRoutine::SetupRoutine(const SetupProcessor::State &state) : state(state)
{
@@ -109,32 +107,21 @@ namespace sw
d = IfThenElse(A > 0.0f, d, Int(0));
- if(state.twoSidedStencil)
+ If(frontFacing)
{
- If(frontFacing)
- {
- *Pointer<Byte8>(primitive + OFFSET(Primitive,clockwiseMask)) = Byte8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
- *Pointer<Byte8>(primitive + OFFSET(Primitive,invClockwiseMask)) = Byte8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
- }
- Else
- {
- *Pointer<Byte8>(primitive + OFFSET(Primitive,clockwiseMask)) = Byte8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
- *Pointer<Byte8>(primitive + OFFSET(Primitive,invClockwiseMask)) = Byte8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
- }
+ *Pointer<Byte8>(primitive + OFFSET(Primitive,clockwiseMask)) = Byte8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
+ *Pointer<Byte8>(primitive + OFFSET(Primitive,invClockwiseMask)) = Byte8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
}
-
- if(state.vFace)
+ Else
{
- *Pointer<Float>(primitive + OFFSET(Primitive,area)) = 0.5f * A;
+ *Pointer<Byte8>(primitive + OFFSET(Primitive,clockwiseMask)) = Byte8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+ *Pointer<Byte8>(primitive + OFFSET(Primitive,invClockwiseMask)) = Byte8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
}
}
else
{
- if(state.twoSidedStencil)
- {
- *Pointer<Byte8>(primitive + OFFSET(Primitive,clockwiseMask)) = Byte8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
- *Pointer<Byte8>(primitive + OFFSET(Primitive,invClockwiseMask)) = Byte8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
- }
+ *Pointer<Byte8>(primitive + OFFSET(Primitive,clockwiseMask)) = Byte8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
+ *Pointer<Byte8>(primitive + OFFSET(Primitive,invClockwiseMask)) = Byte8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
}
Int n = *Pointer<Int>(polygon + OFFSET(Polygon,n));
@@ -439,11 +426,6 @@ namespace sw
Float bias = Max(Abs(Float(A.x)), Abs(Float(B.x)));
bias *= *Pointer<Float>(data + OFFSET(DrawData,slopeDepthBias));
- if(complementaryDepthBuffer)
- {
- bias = -bias;
- }
-
c += bias;
}
@@ -528,7 +510,7 @@ namespace sw
}
else
{
- int leadingVertex = leadingVertexFirst ? OFFSET(Triangle,v0) : OFFSET(Triangle,v2);
+ int leadingVertex = OFFSET(Triangle,v0);
Float C = *Pointer<Float>(triangle + leadingVertex + attribute);
*Pointer<Float4>(primitive + planeEquation + 0, 16) = Float4(0, 0, 0, 0);
diff --git a/chromium/third_party/swiftshader/src/Pipeline/SpirvID.hpp b/chromium/third_party/swiftshader/src/Pipeline/SpirvID.hpp
index 079d518d4f9..aada5a87aa9 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/SpirvID.hpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/SpirvID.hpp
@@ -32,6 +32,7 @@ namespace sw
SpirvID() : id(0) {}
SpirvID(uint32_t id) : id(id) {}
bool operator == (const SpirvID<T>& rhs) const { return id == rhs.id; }
+ bool operator != (const SpirvID<T>& rhs) const { return id != rhs.id; }
bool operator < (const SpirvID<T>& rhs) const { return id < rhs.id; }
// value returns the numerical value of the identifier.
diff --git a/chromium/third_party/swiftshader/src/Pipeline/SpirvShader.cpp b/chromium/third_party/swiftshader/src/Pipeline/SpirvShader.cpp
index 610d0889c87..50de3741705 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/SpirvShader.cpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/SpirvShader.cpp
@@ -12,15 +12,213 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include <spirv/unified1/spirv.hpp>
-#include <spirv/unified1/GLSL.std.450.h>
#include "SpirvShader.hpp"
+
+#include "SamplerCore.hpp"
#include "System/Math.hpp"
#include "Vulkan/VkBuffer.hpp"
+#include "Vulkan/VkBufferView.hpp"
#include "Vulkan/VkDebug.hpp"
+#include "Vulkan/VkDescriptorSet.hpp"
#include "Vulkan/VkPipelineLayout.hpp"
+#include "Vulkan/VkDescriptorSetLayout.hpp"
#include "Device/Config.hpp"
+#include <spirv/unified1/spirv.hpp>
+#include <spirv/unified1/GLSL.std.450.h>
+
+#ifdef Bool
+#undef Bool // b/127920555
+#undef None
+#endif
+
+namespace
+{
+ constexpr float PI = 3.141592653589793f;
+
+ rr::RValue<rr::Bool> AnyTrue(rr::RValue<sw::SIMD::Int> const &ints)
+ {
+ return rr::SignMask(ints) != 0;
+ }
+
+ rr::RValue<rr::Bool> AnyFalse(rr::RValue<sw::SIMD::Int> const &ints)
+ {
+ return rr::SignMask(~ints) != 0;
+ }
+
+ // Returns 1 << bits.
+ // If the resulting bit overflows a 32 bit integer, 0 is returned.
+ rr::RValue<sw::SIMD::UInt> NthBit32(rr::RValue<sw::SIMD::UInt> const &bits)
+ {
+ return ((sw::SIMD::UInt(1) << bits) & rr::CmpLT(bits, sw::SIMD::UInt(32)));
+ }
+
+ // Returns bitCount number of of 1's starting from the LSB.
+ rr::RValue<sw::SIMD::UInt> Bitmask32(rr::RValue<sw::SIMD::UInt> const &bitCount)
+ {
+ return NthBit32(bitCount) - sw::SIMD::UInt(1);
+ }
+
+ // Performs a fused-multiply add, returning a * b + c.
+ rr::RValue<sw::SIMD::Float> FMA(
+ rr::RValue<sw::SIMD::Float> const &a,
+ rr::RValue<sw::SIMD::Float> const &b,
+ rr::RValue<sw::SIMD::Float> const &c)
+ {
+ return a * b + c;
+ }
+
+ // Returns the exponent of the floating point number f.
+ // Assumes IEEE 754
+ rr::RValue<sw::SIMD::Int> Exponent(rr::RValue<sw::SIMD::Float> f)
+ {
+ auto v = rr::As<sw::SIMD::UInt>(f);
+ return (sw::SIMD::Int((v >> sw::SIMD::UInt(23)) & sw::SIMD::UInt(0xFF)) - sw::SIMD::Int(126));
+ }
+
+ // Returns y if y < x; otherwise result is x.
+ // If one operand is a NaN, the other operand is the result.
+ // If both operands are NaN, the result is a NaN.
+ rr::RValue<sw::SIMD::Float> NMin(rr::RValue<sw::SIMD::Float> const &x, rr::RValue<sw::SIMD::Float> const &y)
+ {
+ using namespace rr;
+ auto xIsNan = IsNan(x);
+ auto yIsNan = IsNan(y);
+ return As<sw::SIMD::Float>(
+ // If neither are NaN, return min
+ ((~xIsNan & ~yIsNan) & As<sw::SIMD::Int>(Min(x, y))) |
+ // If one operand is a NaN, the other operand is the result
+ // If both operands are NaN, the result is a NaN.
+ ((~xIsNan & yIsNan) & As<sw::SIMD::Int>(x)) |
+ (( xIsNan ) & As<sw::SIMD::Int>(y)));
+ }
+
+ // Returns y if y > x; otherwise result is x.
+ // If one operand is a NaN, the other operand is the result.
+ // If both operands are NaN, the result is a NaN.
+ rr::RValue<sw::SIMD::Float> NMax(rr::RValue<sw::SIMD::Float> const &x, rr::RValue<sw::SIMD::Float> const &y)
+ {
+ using namespace rr;
+ auto xIsNan = IsNan(x);
+ auto yIsNan = IsNan(y);
+ return As<sw::SIMD::Float>(
+ // If neither are NaN, return max
+ ((~xIsNan & ~yIsNan) & As<sw::SIMD::Int>(Max(x, y))) |
+ // If one operand is a NaN, the other operand is the result
+ // If both operands are NaN, the result is a NaN.
+ ((~xIsNan & yIsNan) & As<sw::SIMD::Int>(x)) |
+ (( xIsNan ) & As<sw::SIMD::Int>(y)));
+ }
+
+ // Returns the determinant of a 2x2 matrix.
+ rr::RValue<sw::SIMD::Float> Determinant(
+ rr::RValue<sw::SIMD::Float> const &a, rr::RValue<sw::SIMD::Float> const &b,
+ rr::RValue<sw::SIMD::Float> const &c, rr::RValue<sw::SIMD::Float> const &d)
+ {
+ return a*d - b*c;
+ }
+
+ // Returns the determinant of a 3x3 matrix.
+ rr::RValue<sw::SIMD::Float> Determinant(
+ rr::RValue<sw::SIMD::Float> const &a, rr::RValue<sw::SIMD::Float> const &b, rr::RValue<sw::SIMD::Float> const &c,
+ rr::RValue<sw::SIMD::Float> const &d, rr::RValue<sw::SIMD::Float> const &e, rr::RValue<sw::SIMD::Float> const &f,
+ rr::RValue<sw::SIMD::Float> const &g, rr::RValue<sw::SIMD::Float> const &h, rr::RValue<sw::SIMD::Float> const &i)
+ {
+ return a*e*i + b*f*g + c*d*h - c*e*g - b*d*i - a*f*h;
+ }
+
+ // Returns the determinant of a 4x4 matrix.
+ rr::RValue<sw::SIMD::Float> Determinant(
+ rr::RValue<sw::SIMD::Float> const &a, rr::RValue<sw::SIMD::Float> const &b, rr::RValue<sw::SIMD::Float> const &c, rr::RValue<sw::SIMD::Float> const &d,
+ rr::RValue<sw::SIMD::Float> const &e, rr::RValue<sw::SIMD::Float> const &f, rr::RValue<sw::SIMD::Float> const &g, rr::RValue<sw::SIMD::Float> const &h,
+ rr::RValue<sw::SIMD::Float> const &i, rr::RValue<sw::SIMD::Float> const &j, rr::RValue<sw::SIMD::Float> const &k, rr::RValue<sw::SIMD::Float> const &l,
+ rr::RValue<sw::SIMD::Float> const &m, rr::RValue<sw::SIMD::Float> const &n, rr::RValue<sw::SIMD::Float> const &o, rr::RValue<sw::SIMD::Float> const &p)
+ {
+ return a * Determinant(f, g, h,
+ j, k, l,
+ n, o, p) -
+ b * Determinant(e, g, h,
+ i, k, l,
+ m, o, p) +
+ c * Determinant(e, f, h,
+ i, j, l,
+ m, n, p) -
+ d * Determinant(e, f, g,
+ i, j, k,
+ m, n, o);
+ }
+
+ // Returns the inverse of a 2x2 matrix.
+ std::array<rr::RValue<sw::SIMD::Float>, 4> MatrixInverse(
+ rr::RValue<sw::SIMD::Float> const &a, rr::RValue<sw::SIMD::Float> const &b,
+ rr::RValue<sw::SIMD::Float> const &c, rr::RValue<sw::SIMD::Float> const &d)
+ {
+ auto s = sw::SIMD::Float(1.0f) / Determinant(a, b, c, d);
+ return {{s*d, -s*b, -s*c, s*a}};
+ }
+
+ // Returns the inverse of a 3x3 matrix.
+ std::array<rr::RValue<sw::SIMD::Float>, 9> MatrixInverse(
+ rr::RValue<sw::SIMD::Float> const &a, rr::RValue<sw::SIMD::Float> const &b, rr::RValue<sw::SIMD::Float> const &c,
+ rr::RValue<sw::SIMD::Float> const &d, rr::RValue<sw::SIMD::Float> const &e, rr::RValue<sw::SIMD::Float> const &f,
+ rr::RValue<sw::SIMD::Float> const &g, rr::RValue<sw::SIMD::Float> const &h, rr::RValue<sw::SIMD::Float> const &i)
+ {
+ auto s = sw::SIMD::Float(1.0f) / Determinant(
+ a, b, c,
+ d, e, f,
+ g, h, i); // TODO: duplicate arithmetic calculating the det and below.
+
+ return {{
+ s * (e*i - f*h), s * (c*h - b*i), s * (b*f - c*e),
+ s * (f*g - d*i), s * (a*i - c*g), s * (c*d - a*f),
+ s * (d*h - e*g), s * (b*g - a*h), s * (a*e - b*d),
+ }};
+ }
+
+ // Returns the inverse of a 4x4 matrix.
+ std::array<rr::RValue<sw::SIMD::Float>, 16> MatrixInverse(
+ rr::RValue<sw::SIMD::Float> const &a, rr::RValue<sw::SIMD::Float> const &b, rr::RValue<sw::SIMD::Float> const &c, rr::RValue<sw::SIMD::Float> const &d,
+ rr::RValue<sw::SIMD::Float> const &e, rr::RValue<sw::SIMD::Float> const &f, rr::RValue<sw::SIMD::Float> const &g, rr::RValue<sw::SIMD::Float> const &h,
+ rr::RValue<sw::SIMD::Float> const &i, rr::RValue<sw::SIMD::Float> const &j, rr::RValue<sw::SIMD::Float> const &k, rr::RValue<sw::SIMD::Float> const &l,
+ rr::RValue<sw::SIMD::Float> const &m, rr::RValue<sw::SIMD::Float> const &n, rr::RValue<sw::SIMD::Float> const &o, rr::RValue<sw::SIMD::Float> const &p)
+ {
+ auto s = sw::SIMD::Float(1.0f) / Determinant(
+ a, b, c, d,
+ e, f, g, h,
+ i, j, k, l,
+ m, n, o, p); // TODO: duplicate arithmetic calculating the det and below.
+
+ auto kplo = k*p - l*o, jpln = j*p - l*n, jokn = j*o - k*n;
+ auto gpho = g*p - h*o, fphn = f*p - h*n, fogn = f*o - g*n;
+ auto glhk = g*l - h*k, flhj = f*l - h*j, fkgj = f*k - g*j;
+ auto iplm = i*p - l*m, iokm = i*o - k*m, ephm = e*p - h*m;
+ auto eogm = e*o - g*m, elhi = e*l - h*i, ekgi = e*k - g*i;
+ auto injm = i*n - j*m, enfm = e*n - f*m, ejfi = e*j - f*i;
+
+ return {{
+ s * ( f * kplo - g * jpln + h * jokn),
+ s * (-b * kplo + c * jpln - d * jokn),
+ s * ( b * gpho - c * fphn + d * fogn),
+ s * (-b * glhk + c * flhj - d * fkgj),
+
+ s * (-e * kplo + g * iplm - h * iokm),
+ s * ( a * kplo - c * iplm + d * iokm),
+ s * (-a * gpho + c * ephm - d * eogm),
+ s * ( a * glhk - c * elhi + d * ekgi),
+
+ s * ( e * jpln - f * iplm + h * injm),
+ s * (-a * jpln + b * iplm - d * injm),
+ s * ( a * fphn - b * ephm + d * enfm),
+ s * (-a * flhj + b * elhi - d * ejfi),
+
+ s * (-e * jokn + f * iokm - g * injm),
+ s * ( a * jokn - b * iokm + c * injm),
+ s * (-a * fogn + b * eogm - c * enfm),
+ s * ( a * fkgj - b * ekgi + c * ejfi),
+ }};
+ }
+}
+
namespace sw
{
volatile int SpirvShader::serialCounter = 1; // Start at 1, 0 is invalid shader.
@@ -36,12 +234,8 @@ namespace sw
// - There is exactly one entrypoint in the module, and it's the one we want
// - The only input/output OpVariables present are those used by the entrypoint
- // TODO: Add real support for control flow. For now, track whether we've seen
- // a label or a return already (if so, the shader does things we will mishandle).
- // We expect there to be one of each in a simple shader -- the first and last instruction
- // of the entrypoint function.
- bool seenLabel = false;
- bool seenReturn = false;
+ Block::ID currentBlock;
+ InsnIterator blockStart;
for (auto insn : *this)
{
@@ -55,9 +249,22 @@ namespace sw
{
TypeOrObjectID targetId = insn.word(1);
auto decoration = static_cast<spv::Decoration>(insn.word(2));
- decorations[targetId].Apply(
- decoration,
- insn.wordCount() > 3 ? insn.word(3) : 0);
+ uint32_t value = insn.wordCount() > 3 ? insn.word(3) : 0;
+
+ decorations[targetId].Apply(decoration, value);
+
+ switch(decoration)
+ {
+ case spv::DecorationDescriptorSet:
+ descriptorDecorations[targetId].DescriptorSet = value;
+ break;
+ case spv::DecorationBinding:
+ descriptorDecorations[targetId].Binding = value;
+ break;
+ default:
+ // Only handling descriptor decorations here.
+ break;
+ }
if (decoration == spv::DecorationCentroid)
modes.NeedsCentroid = true;
@@ -66,15 +273,16 @@ namespace sw
case spv::OpMemberDecorate:
{
- TypeID targetId = insn.word(1);
+ Type::ID targetId = insn.word(1);
auto memberIndex = insn.word(2);
+ auto decoration = static_cast<spv::Decoration>(insn.word(3));
+ uint32_t value = insn.wordCount() > 4 ? insn.word(4) : 0;
+
auto &d = memberDecorations[targetId];
if (memberIndex >= d.size())
d.resize(memberIndex + 1); // on demand; exact size would require another pass...
- auto decoration = static_cast<spv::Decoration>(insn.word(3));
- d[memberIndex].Apply(
- decoration,
- insn.wordCount() > 4 ? insn.word(4) : 0);
+
+ d[memberIndex].Apply(decoration, value);
if (decoration == spv::DecorationCentroid)
modes.NeedsCentroid = true;
@@ -89,12 +297,17 @@ namespace sw
case spv::OpGroupDecorate:
{
- auto const &srcDecorations = decorations[insn.word(1)];
+ uint32_t group = insn.word(1);
+ auto const &groupDecorations = decorations[group];
+ auto const &descriptorGroupDecorations = descriptorDecorations[group];
for (auto i = 2u; i < insn.wordCount(); i++)
{
- // remaining operands are targets to apply the group to.
- decorations[insn.word(i)].Apply(srcDecorations);
+ // Remaining operands are targets to apply the group to.
+ uint32_t target = insn.word(i);
+ decorations[target].Apply(groupDecorations);
+ descriptorDecorations[target].Apply(descriptorGroupDecorations);
}
+
break;
}
@@ -114,16 +327,39 @@ namespace sw
}
case spv::OpLabel:
- if (seenLabel)
- UNIMPLEMENTED("Shader contains multiple labels, has control flow");
- seenLabel = true;
+ {
+ ASSERT(currentBlock.value() == 0);
+ currentBlock = Block::ID(insn.word(1));
+ blockStart = insn;
break;
+ }
+ // Branch Instructions (subset of Termination Instructions):
+ case spv::OpBranch:
+ case spv::OpBranchConditional:
+ case spv::OpSwitch:
case spv::OpReturn:
- if (seenReturn)
- UNIMPLEMENTED("Shader contains multiple returns, has control flow");
- seenReturn = true;
+ // fallthrough
+
+ // Termination instruction:
+ case spv::OpKill:
+ case spv::OpUnreachable:
+ {
+ ASSERT(currentBlock.value() != 0);
+ auto blockEnd = insn; blockEnd++;
+ blocks[currentBlock] = Block(blockStart, blockEnd);
+ currentBlock = Block::ID(0);
+
+ if (insn.opcode() == spv::OpKill)
+ {
+ modes.ContainsKill = true;
+ }
break;
+ }
+
+ case spv::OpLoopMerge:
+ case spv::OpSelectionMerge:
+ break; // Nothing to do in analysis pass.
case spv::OpTypeVoid:
case spv::OpTypeBool:
@@ -144,17 +380,16 @@ namespace sw
case spv::OpVariable:
{
- TypeID typeId = insn.word(1);
- ObjectID resultId = insn.word(2);
+ Type::ID typeId = insn.word(1);
+ Object::ID resultId = insn.word(2);
auto storageClass = static_cast<spv::StorageClass>(insn.word(3));
if (insn.wordCount() > 4)
UNIMPLEMENTED("Variable initializers not yet supported");
auto &object = defs[resultId];
- object.kind = Object::Kind::Variable;
+ object.kind = Object::Kind::NonDivergentPointer;
object.definition = insn;
object.type = typeId;
- object.pointerBase = insn.word(2); // base is itself
ASSERT(getType(typeId).storageClass == storageClass);
@@ -164,27 +399,34 @@ namespace sw
case spv::StorageClassOutput:
ProcessInterfaceVariable(object);
break;
+
case spv::StorageClassUniform:
case spv::StorageClassStorageBuffer:
- object.kind = Object::Kind::PhysicalPointer;
+ object.kind = Object::Kind::DescriptorSet;
break;
+ case spv::StorageClassPushConstant:
case spv::StorageClassPrivate:
case spv::StorageClassFunction:
break; // Correctly handled.
case spv::StorageClassUniformConstant:
+ // This storage class is for data stored within the descriptor itself,
+ // unlike StorageClassUniform which contains handles to buffers.
+ // For Vulkan it corresponds with samplers, images, or combined image samplers.
+ object.kind = Object::Kind::SampledImage;
+ break;
+
case spv::StorageClassWorkgroup:
case spv::StorageClassCrossWorkgroup:
case spv::StorageClassGeneric:
- case spv::StorageClassPushConstant:
case spv::StorageClassAtomicCounter:
case spv::StorageClassImage:
UNIMPLEMENTED("StorageClass %d not yet implemented", (int)storageClass);
break;
default:
- UNREACHABLE("Unexpected StorageClass"); // See Appendix A of the Vulkan spec.
+ UNREACHABLE("Unexpected StorageClass %d", storageClass); // See Appendix A of the Vulkan spec.
break;
}
break;
@@ -200,7 +442,9 @@ namespace sw
CreateConstant(insn).constantValue[0] = ~0u; // represent boolean true as all bits set
break;
case spv::OpConstantNull:
+ case spv::OpUndef:
{
+ // TODO: consider a real LLVM-level undef. For now, zero is a perfectly good value.
// OpConstantNull forms a constant of arbitrary type, all zeros.
auto &object = CreateConstant(insn);
auto &objectTy = getType(object.type);
@@ -221,15 +465,54 @@ namespace sw
for (auto j = 0u; j < constituentTy.sizeInComponents; j++)
object.constantValue[offset++] = constituent.constantValue[j];
}
+
+ auto objectId = Object::ID(insn.word(2));
+ auto decorationsIt = decorations.find(objectId);
+ if (decorationsIt != decorations.end() &&
+ decorationsIt->second.BuiltIn == spv::BuiltInWorkgroupSize)
+ {
+ // https://www.khronos.org/registry/vulkan/specs/1.1/html/vkspec.html#interfaces-builtin-variables :
+ // Decorating an object with the WorkgroupSize built-in
+ // decoration will make that object contain the dimensions
+ // of a local workgroup. If an object is decorated with the
+ // WorkgroupSize decoration, this must take precedence over
+ // any execution mode set for LocalSize.
+ // The object decorated with WorkgroupSize must be declared
+ // as a three-component vector of 32-bit integers.
+ ASSERT(getType(object.type).sizeInComponents == 3);
+ modes.WorkgroupSizeX = object.constantValue[0];
+ modes.WorkgroupSizeY = object.constantValue[1];
+ modes.WorkgroupSizeZ = object.constantValue[2];
+ }
break;
}
case spv::OpCapability:
- // Various capabilities will be declared, but none affect our code generation at this point.
+ break; // Various capabilities will be declared, but none affect our code generation at this point.
case spv::OpMemoryModel:
- // Memory model does not affect our code generation until we decide to do Vulkan Memory Model support.
+ break; // Memory model does not affect our code generation until we decide to do Vulkan Memory Model support.
+
case spv::OpEntryPoint:
+ break;
case spv::OpFunction:
+ ASSERT(mainBlockId.value() == 0); // Multiple functions found
+ // Scan forward to find the function's label.
+ for (auto it = insn; it != end() && mainBlockId.value() == 0; it++)
+ {
+ switch (it.opcode())
+ {
+ case spv::OpFunction:
+ case spv::OpFunctionParameter:
+ break;
+ case spv::OpLabel:
+ mainBlockId = Block::ID(it.word(1));
+ break;
+ default:
+ WARN("Unexpected opcode '%s' following OpFunction", OpcodeName(it.opcode()).c_str());
+ }
+ }
+ ASSERT(mainBlockId.value() != 0); // Function's OpLabel not found
+ break;
case spv::OpFunctionEnd:
// Due to preprocessing, the entrypoint and its function provide no value.
break;
@@ -246,6 +529,10 @@ namespace sw
case spv::OpSource:
case spv::OpSourceContinued:
case spv::OpSourceExtension:
+ case spv::OpLine:
+ case spv::OpNoLine:
+ case spv::OpModuleProcessed:
+ case spv::OpString:
// No semantic impact
break;
@@ -258,33 +545,80 @@ namespace sw
case spv::OpSpecConstantTrue:
// These should have all been removed by preprocessing passes. If we see them here,
// our assumptions are wrong and we will probably generate wrong code.
- UNIMPLEMENTED("These instructions should have already been lowered.");
+ UNIMPLEMENTED("%s should have already been lowered.", OpcodeName(insn.opcode()).c_str());
break;
case spv::OpFConvert:
+ UNIMPLEMENTED("No valid uses for OpFConvert until we support multiple bit widths enabled by features such as Float16/Float64 etc.");
+ break;
+
case spv::OpSConvert:
case spv::OpUConvert:
- UNIMPLEMENTED("No valid uses for Op*Convert until we support multiple bit widths");
+ UNIMPLEMENTED("No valid uses for Op*Convert until we support multiple bit widths enabled by features such as Int16/Int64 etc.");
break;
case spv::OpLoad:
case spv::OpAccessChain:
+ case spv::OpInBoundsAccessChain:
+ {
+ // Propagate the descriptor decorations to the result.
+ Object::ID resultId = insn.word(2);
+ Object::ID pointerId = insn.word(3);
+ const auto &d = descriptorDecorations.find(pointerId);
+
+ if(d != descriptorDecorations.end())
+ {
+ descriptorDecorations[resultId] = d->second;
+ }
+
+ DefineResult(insn);
+
+ if (insn.opcode() == spv::OpAccessChain || insn.opcode() == spv::OpInBoundsAccessChain)
+ {
+ Decorations dd{};
+ ApplyDecorationsForAccessChain(&dd, pointerId, insn.wordCount() - 4, insn.wordPointer(4));
+ // Note: offset is the one thing that does *not* propagate, as the access chain accounts for it.
+ dd.HasOffset = false;
+ decorations[resultId].Apply(dd);
+ }
+ }
+ break;
+
case spv::OpCompositeConstruct:
case spv::OpCompositeInsert:
case spv::OpCompositeExtract:
case spv::OpVectorShuffle:
- case spv::OpNot: // Unary ops
+ case spv::OpVectorTimesScalar:
+ case spv::OpMatrixTimesScalar:
+ case spv::OpMatrixTimesVector:
+ case spv::OpVectorTimesMatrix:
+ case spv::OpMatrixTimesMatrix:
+ case spv::OpOuterProduct:
+ case spv::OpTranspose:
+ case spv::OpVectorExtractDynamic:
+ case spv::OpVectorInsertDynamic:
+ // Unary ops
+ case spv::OpNot:
+ case spv::OpBitFieldInsert:
+ case spv::OpBitFieldSExtract:
+ case spv::OpBitFieldUExtract:
+ case spv::OpBitReverse:
+ case spv::OpBitCount:
case spv::OpSNegate:
case spv::OpFNegate:
case spv::OpLogicalNot:
- case spv::OpIAdd: // Binary ops
+ // Binary ops
+ case spv::OpIAdd:
case spv::OpISub:
case spv::OpIMul:
case spv::OpSDiv:
case spv::OpUDiv:
case spv::OpFAdd:
case spv::OpFSub:
+ case spv::OpFMul:
case spv::OpFDiv:
+ case spv::OpFMod:
+ case spv::OpFRem:
case spv::OpFOrdEqual:
case spv::OpFUnordEqual:
case spv::OpFOrdNotEqual:
@@ -297,6 +631,8 @@ namespace sw
case spv::OpFUnordLessThanEqual:
case spv::OpFOrdGreaterThanEqual:
case spv::OpFUnordGreaterThanEqual:
+ case spv::OpSMod:
+ case spv::OpSRem:
case spv::OpUMod:
case spv::OpIEqual:
case spv::OpINotEqual:
@@ -316,6 +652,8 @@ namespace sw
case spv::OpBitwiseAnd:
case spv::OpLogicalOr:
case spv::OpLogicalAnd:
+ case spv::OpLogicalEqual:
+ case spv::OpLogicalNotEqual:
case spv::OpUMulExtended:
case spv::OpSMulExtended:
case spv::OpDot:
@@ -326,43 +664,78 @@ namespace sw
case spv::OpBitcast:
case spv::OpSelect:
case spv::OpExtInst:
- // Instructions that yield an intermediate value
- {
- TypeID typeId = insn.word(1);
- ObjectID resultId = insn.word(2);
- auto &object = defs[resultId];
- object.type = typeId;
- object.kind = Object::Kind::Value;
- object.definition = insn;
-
- if (insn.opcode() == spv::OpAccessChain)
- {
- // interior ptr has two parts:
- // - logical base ptr, common across all lanes and known at compile time
- // - per-lane offset
- ObjectID baseId = insn.word(3);
- object.pointerBase = getObject(baseId).pointerBase;
- }
+ case spv::OpIsInf:
+ case spv::OpIsNan:
+ case spv::OpAny:
+ case spv::OpAll:
+ case spv::OpDPdx:
+ case spv::OpDPdxCoarse:
+ case spv::OpDPdy:
+ case spv::OpDPdyCoarse:
+ case spv::OpFwidth:
+ case spv::OpFwidthCoarse:
+ case spv::OpDPdxFine:
+ case spv::OpDPdyFine:
+ case spv::OpFwidthFine:
+ case spv::OpAtomicLoad:
+ case spv::OpPhi:
+ case spv::OpImageSampleImplicitLod:
+ case spv::OpImageQuerySize:
+ case spv::OpImageRead:
+ // Instructions that yield an intermediate value or divergent pointer
+ DefineResult(insn);
break;
- }
case spv::OpStore:
+ case spv::OpAtomicStore:
+ case spv::OpImageWrite:
// Don't need to do anything during analysis pass
break;
- case spv::OpKill:
- modes.ContainsKill = true;
- break;
-
default:
- UNIMPLEMENTED(OpcodeName(insn.opcode()).c_str());
+ UNIMPLEMENTED("%s", OpcodeName(insn.opcode()).c_str());
+ }
+ }
+
+ AssignBlockIns();
+ }
+
+ void SpirvShader::TraverseReachableBlocks(Block::ID id, SpirvShader::Block::Set& reachable)
+ {
+ if (reachable.count(id) == 0)
+ {
+ reachable.emplace(id);
+ for (auto out : getBlock(id).outs)
+ {
+ TraverseReachableBlocks(out, reachable);
+ }
+ }
+ }
+
+ void SpirvShader::AssignBlockIns()
+ {
+ Block::Set reachable;
+ TraverseReachableBlocks(mainBlockId, reachable);
+
+ for (auto &it : blocks)
+ {
+ auto &blockId = it.first;
+ if (reachable.count(blockId) > 0)
+ {
+ for (auto &outId : it.second.outs)
+ {
+ auto outIt = blocks.find(outId);
+ ASSERT_MSG(outIt != blocks.end(), "Block %d has a non-existent out %d", blockId.value(), outId.value());
+ auto &out = outIt->second;
+ out.ins.emplace(blockId);
+ }
}
}
}
void SpirvShader::DeclareType(InsnIterator insn)
{
- TypeID resultId = insn.word(1);
+ Type::ID resultId = insn.word(1);
auto &type = types[resultId];
type.definition = insn;
@@ -390,7 +763,7 @@ namespace sw
}
case spv::OpTypePointer:
{
- TypeID elementTypeId = insn.word(3);
+ Type::ID elementTypeId = insn.word(3);
type.element = elementTypeId;
type.isBuiltInBlock = getType(elementTypeId).isBuiltInBlock;
type.storageClass = static_cast<spv::StorageClass>(insn.word(2));
@@ -401,7 +774,7 @@ namespace sw
case spv::OpTypeArray:
case spv::OpTypeRuntimeArray:
{
- TypeID elementTypeId = insn.word(2);
+ Type::ID elementTypeId = insn.word(2);
type.element = elementTypeId;
break;
}
@@ -412,8 +785,8 @@ namespace sw
SpirvShader::Object& SpirvShader::CreateConstant(InsnIterator insn)
{
- TypeID typeId = insn.word(1);
- ObjectID resultId = insn.word(2);
+ Type::ID typeId = insn.word(1);
+ Object::ID resultId = insn.word(2);
auto &object = defs[resultId];
auto &objectTy = getType(typeId);
object.type = typeId;
@@ -428,14 +801,14 @@ namespace sw
auto &objectTy = getType(object.type);
ASSERT(objectTy.storageClass == spv::StorageClassInput || objectTy.storageClass == spv::StorageClassOutput);
- ASSERT(objectTy.definition.opcode() == spv::OpTypePointer);
+ ASSERT(objectTy.opcode() == spv::OpTypePointer);
auto pointeeTy = getType(objectTy.element);
auto &builtinInterface = (objectTy.storageClass == spv::StorageClassInput) ? inputBuiltins : outputBuiltins;
auto &userDefinedInterface = (objectTy.storageClass == spv::StorageClassInput) ? inputs : outputs;
- ASSERT(object.definition.opcode() == spv::OpVariable);
- ObjectID resultId = object.definition.word(2);
+ ASSERT(object.opcode() == spv::OpVariable);
+ Object::ID resultId = object.definition.word(2);
if (objectTy.isBuiltInBlock)
{
@@ -505,9 +878,9 @@ namespace sw
modes.DepthUnchanged = true;
break;
case spv::ExecutionModeLocalSize:
- modes.LocalSizeX = insn.word(3);
- modes.LocalSizeZ = insn.word(5);
- modes.LocalSizeY = insn.word(4);
+ modes.WorkgroupSizeX = insn.word(3);
+ modes.WorkgroupSizeY = insn.word(4);
+ modes.WorkgroupSizeZ = insn.word(5);
break;
case spv::ExecutionModeOriginUpperLeft:
// This is always the case for a Vulkan shader. Do nothing.
@@ -517,7 +890,7 @@ namespace sw
}
}
- uint32_t SpirvShader::ComputeTypeSize(sw::SpirvShader::InsnIterator insn)
+ uint32_t SpirvShader::ComputeTypeSize(InsnIterator insn)
{
// Types are always built from the bottom up (with the exception of forward ptrs, which
// don't appear in Vulkan shaders. Therefore, we can always assume our component parts have
@@ -582,6 +955,7 @@ namespace sw
{
case spv::StorageClassUniform:
case spv::StorageClassStorageBuffer:
+ case spv::StorageClassPushConstant:
return false;
default:
return true;
@@ -589,7 +963,7 @@ namespace sw
}
template<typename F>
- int SpirvShader::VisitInterfaceInner(TypeID id, Decorations d, F f) const
+ int SpirvShader::VisitInterfaceInner(Type::ID id, Decorations d, F f) const
{
// Recursively walks variable definition and its type tree, taking into account
// any explicit Location or Component decorations encountered; where explicit
@@ -606,7 +980,7 @@ namespace sw
ApplyDecorationsForId(&d, id);
auto const &obj = getType(id);
- switch (obj.definition.opcode())
+ switch(obj.opcode())
{
case spv::OpTypePointer:
return VisitInterfaceInner<F>(obj.definition.word(3), d, f);
@@ -660,7 +1034,7 @@ namespace sw
}
template<typename F>
- void SpirvShader::VisitInterface(ObjectID id, F f) const
+ void SpirvShader::VisitInterface(Object::ID id, F f) const
{
// Walk a variable definition and call f for each component in it.
Decorations d{};
@@ -671,25 +1045,290 @@ namespace sw
VisitInterfaceInner<F>(def.word(1), d, f);
}
- SIMD::Int SpirvShader::WalkAccessChain(ObjectID id, uint32_t numIndexes, uint32_t const *indexIds, SpirvRoutine *routine) const
+ template<typename F>
+ void SpirvShader::VisitMemoryObjectInner(sw::SpirvShader::Type::ID id, sw::SpirvShader::Decorations d, uint32_t& index, uint32_t offset, F f) const
+ {
+ // Walk a type tree in an explicitly laid out storage class, calling
+ // a functor for each scalar element within the object.
+
+ // The functor's first parameter is the index of the scalar element;
+ // the second parameter is the offset (in sizeof(float) units) from
+ // the base of the object.
+
+ ApplyDecorationsForId(&d, id);
+ auto const &type = getType(id);
+
+ if (d.HasOffset)
+ {
+ offset += d.Offset / sizeof(float);
+ d.HasOffset = false;
+ }
+
+ switch (type.opcode())
+ {
+ case spv::OpTypePointer:
+ VisitMemoryObjectInner<F>(type.definition.word(3), d, index, offset, f);
+ break;
+ case spv::OpTypeInt:
+ case spv::OpTypeFloat:
+ f(index++, offset);
+ break;
+ case spv::OpTypeVector:
+ {
+ auto elemStride = (d.InsideMatrix && d.HasRowMajor && d.RowMajor) ? d.MatrixStride / sizeof(float) : 1;
+ for (auto i = 0u; i < type.definition.word(3); i++)
+ {
+ VisitMemoryObjectInner(type.definition.word(2), d, index, offset + elemStride * i, f);
+ }
+ break;
+ }
+ case spv::OpTypeMatrix:
+ {
+ auto columnStride = (d.HasRowMajor && d.RowMajor) ? 1 : d.MatrixStride / sizeof(float);
+ d.InsideMatrix = true;
+ for (auto i = 0u; i < type.definition.word(3); i++)
+ {
+ ASSERT(d.HasMatrixStride);
+ VisitMemoryObjectInner(type.definition.word(2), d, index, offset + columnStride * i, f);
+ }
+ break;
+ }
+ case spv::OpTypeStruct:
+ for (auto i = 0u; i < type.definition.wordCount() - 2; i++)
+ {
+ ApplyDecorationsForIdMember(&d, id, i);
+ VisitMemoryObjectInner<F>(type.definition.word(i + 2), d, index, offset, f);
+ }
+ break;
+ case spv::OpTypeArray:
+ {
+ auto arraySize = GetConstantInt(type.definition.word(3));
+ for (auto i = 0u; i < arraySize; i++)
+ {
+ ASSERT(d.HasArrayStride);
+ VisitMemoryObjectInner<F>(type.definition.word(2), d, index, offset + i * d.ArrayStride / sizeof(float), f);
+ }
+ break;
+ }
+ default:
+ UNIMPLEMENTED("%s", OpcodeName(type.opcode()).c_str());
+ }
+ }
+
+ template<typename F>
+ void SpirvShader::VisitMemoryObject(sw::SpirvShader::Object::ID id, F f) const
+ {
+ auto typeId = getObject(id).type;
+ auto const & type = getType(typeId);
+ if (!IsStorageInterleavedByLane(type.storageClass)) // TODO: really "is explicit layout"
+ {
+ Decorations d{};
+ ApplyDecorationsForId(&d, id);
+ uint32_t index = 0;
+ VisitMemoryObjectInner<F>(typeId, d, index, 0, f);
+ }
+ else
+ {
+ // Objects without explicit layout are tightly packed.
+ for (auto i = 0u; i < getType(type.element).sizeInComponents; i++)
+ {
+ f(i, i);
+ }
+ }
+ }
+
+ SIMD::Pointer SpirvShader::GetPointerToData(Object::ID id, int arrayIndex, SpirvRoutine *routine) const
+ {
+ auto &object = getObject(id);
+ switch (object.kind)
+ {
+ case Object::Kind::NonDivergentPointer:
+ case Object::Kind::InterfaceVariable:
+ return SIMD::Pointer(routine->getPointer(id));
+
+ case Object::Kind::DivergentPointer:
+ return SIMD::Pointer(routine->getPointer(id), routine->getIntermediate(id).Int(0));
+
+ case Object::Kind::DescriptorSet:
+ {
+ const auto &d = descriptorDecorations.at(id);
+ ASSERT(d.DescriptorSet >= 0 && d.DescriptorSet < vk::MAX_BOUND_DESCRIPTOR_SETS);
+ ASSERT(d.Binding >= 0);
+
+ auto set = routine->getPointer(id);
+ auto setLayout = routine->pipelineLayout->getDescriptorSetLayout(d.DescriptorSet);
+ int bindingOffset = static_cast<int>(setLayout->getBindingOffset(d.Binding, arrayIndex));
+
+ Pointer<Byte> bufferInfo = Pointer<Byte>(set + bindingOffset); // VkDescriptorBufferInfo*
+ Pointer<Byte> buffer = *Pointer<Pointer<Byte>>(bufferInfo + OFFSET(VkDescriptorBufferInfo, buffer)); // vk::Buffer*
+ Pointer<Byte> data = *Pointer<Pointer<Byte>>(buffer + vk::Buffer::DataOffset); // void*
+ Int offset = *Pointer<Int>(bufferInfo + OFFSET(VkDescriptorBufferInfo, offset));
+ if (setLayout->isBindingDynamic(d.Binding))
+ {
+ uint32_t dynamicBindingIndex =
+ routine->pipelineLayout->getDynamicOffsetBase(d.DescriptorSet) +
+ setLayout->getDynamicDescriptorOffset(d.Binding) +
+ arrayIndex;
+ offset += routine->descriptorDynamicOffsets[dynamicBindingIndex];
+ }
+ return SIMD::Pointer(data + offset);
+ }
+
+ default:
+ UNREACHABLE("Invalid pointer kind %d", int(object.kind));
+ return SIMD::Pointer(Pointer<Byte>());
+ }
+ }
+
+ void SpirvShader::ApplyDecorationsForAccessChain(Decorations *d, Object::ID baseId, uint32_t numIndexes, uint32_t const *indexIds) const
+ {
+ ApplyDecorationsForId(d, baseId);
+ auto &baseObject = getObject(baseId);
+ ApplyDecorationsForId(d, baseObject.type);
+ auto typeId = getType(baseObject.type).element;
+
+ for (auto i = 0u; i < numIndexes; i++)
+ {
+ ApplyDecorationsForId(d, typeId);
+ auto & type = getType(typeId);
+ switch (type.opcode())
+ {
+ case spv::OpTypeStruct:
+ {
+ int memberIndex = GetConstantInt(indexIds[i]);
+ ApplyDecorationsForIdMember(d, typeId, memberIndex);
+ typeId = type.definition.word(2u + memberIndex);
+ break;
+ }
+ case spv::OpTypeArray:
+ case spv::OpTypeRuntimeArray:
+ case spv::OpTypeVector:
+ typeId = type.element;
+ break;
+ case spv::OpTypeMatrix:
+ typeId = type.element;
+ d->InsideMatrix = true;
+ break;
+ default:
+ UNIMPLEMENTED("Unexpected type '%s' in ApplyDecorationsForAccessChain",
+ OpcodeName(type.definition.opcode()).c_str());
+ }
+ }
+ }
+
+ SIMD::Pointer SpirvShader::WalkExplicitLayoutAccessChain(Object::ID baseId, uint32_t numIndexes, uint32_t const *indexIds, SpirvRoutine *routine) const
+ {
+ // Produce a offset into external memory in sizeof(float) units
+
+ auto &baseObject = getObject(baseId);
+ Type::ID typeId = getType(baseObject.type).element;
+ Decorations d = {};
+ ApplyDecorationsForId(&d, baseObject.type);
+
+ uint32_t arrayIndex = 0;
+ if (baseObject.kind == Object::Kind::DescriptorSet)
+ {
+ auto type = getType(typeId).definition.opcode();
+ if (type == spv::OpTypeArray || type == spv::OpTypeRuntimeArray)
+ {
+ ASSERT(getObject(indexIds[0]).kind == Object::Kind::Constant);
+ arrayIndex = GetConstantInt(indexIds[0]);
+
+ numIndexes--;
+ indexIds++;
+ typeId = getType(typeId).element;
+ }
+ }
+
+ auto ptr = GetPointerToData(baseId, arrayIndex, routine);
+
+ int constantOffset = 0;
+
+ for (auto i = 0u; i < numIndexes; i++)
+ {
+ auto & type = getType(typeId);
+ ApplyDecorationsForId(&d, typeId);
+
+ switch (type.definition.opcode())
+ {
+ case spv::OpTypeStruct:
+ {
+ int memberIndex = GetConstantInt(indexIds[i]);
+ ApplyDecorationsForIdMember(&d, typeId, memberIndex);
+ ASSERT(d.HasOffset);
+ constantOffset += d.Offset / sizeof(float);
+ typeId = type.definition.word(2u + memberIndex);
+ break;
+ }
+ case spv::OpTypeArray:
+ case spv::OpTypeRuntimeArray:
+ {
+ // TODO: b/127950082: Check bounds.
+ ASSERT(d.HasArrayStride);
+ auto & obj = getObject(indexIds[i]);
+ if (obj.kind == Object::Kind::Constant)
+ constantOffset += d.ArrayStride/sizeof(float) * GetConstantInt(indexIds[i]);
+ else
+ ptr.offset += SIMD::Int(d.ArrayStride / sizeof(float)) * routine->getIntermediate(indexIds[i]).Int(0);
+ typeId = type.element;
+ break;
+ }
+ case spv::OpTypeMatrix:
+ {
+ // TODO: b/127950082: Check bounds.
+ ASSERT(d.HasMatrixStride);
+ d.InsideMatrix = true;
+ auto columnStride = (d.HasRowMajor && d.RowMajor) ? 1 : d.MatrixStride/sizeof(float);
+ auto & obj = getObject(indexIds[i]);
+ if (obj.kind == Object::Kind::Constant)
+ constantOffset += columnStride * GetConstantInt(indexIds[i]);
+ else
+ ptr.offset += SIMD::Int(columnStride) * routine->getIntermediate(indexIds[i]).Int(0);
+ typeId = type.element;
+ break;
+ }
+ case spv::OpTypeVector:
+ {
+ auto elemStride = (d.InsideMatrix && d.HasRowMajor && d.RowMajor) ? d.MatrixStride / sizeof(float) : 1;
+ auto & obj = getObject(indexIds[i]);
+ if (obj.kind == Object::Kind::Constant)
+ constantOffset += elemStride * GetConstantInt(indexIds[i]);
+ else
+ ptr.offset += SIMD::Int(elemStride) * routine->getIntermediate(indexIds[i]).Int(0);
+ typeId = type.element;
+ break;
+ }
+ default:
+ UNIMPLEMENTED("Unexpected type '%s' in WalkExplicitLayoutAccessChain", OpcodeName(type.definition.opcode()).c_str());
+ }
+ }
+
+ ptr.offset += SIMD::Int(constantOffset);
+
+ return ptr;
+ }
+
+ SIMD::Int SpirvShader::WalkAccessChain(Object::ID baseId, uint32_t numIndexes, uint32_t const *indexIds, SpirvRoutine *routine) const
{
- // TODO: think about explicit layout (UBO/SSBO) storage classes
// TODO: avoid doing per-lane work in some cases if we can?
+ // Produce a *component* offset into location-oriented memory
int constantOffset = 0;
SIMD::Int dynamicOffset = SIMD::Int(0);
- auto &baseObject = getObject(id);
- TypeID typeId = getType(baseObject.type).element;
+ auto &baseObject = getObject(baseId);
+ Type::ID typeId = getType(baseObject.type).element;
- // The <base> operand is an intermediate value itself, ie produced by a previous OpAccessChain.
+ // The <base> operand is a divergent pointer itself.
// Start with its offset and build from there.
- if (baseObject.kind == Object::Kind::Value)
- dynamicOffset += As<SIMD::Int>(routine->getIntermediate(id)[0]);
+ if (baseObject.kind == Object::Kind::DivergentPointer)
+ {
+ dynamicOffset += routine->getIntermediate(baseId).Int(0);
+ }
for (auto i = 0u; i < numIndexes; i++)
{
auto & type = getType(typeId);
- switch (type.definition.opcode())
+ switch(type.opcode())
{
case spv::OpTypeStruct:
{
@@ -707,33 +1346,35 @@ namespace sw
case spv::OpTypeVector:
case spv::OpTypeMatrix:
case spv::OpTypeArray:
+ case spv::OpTypeRuntimeArray:
{
+ // TODO: b/127950082: Check bounds.
auto stride = getType(type.element).sizeInComponents;
auto & obj = getObject(indexIds[i]);
if (obj.kind == Object::Kind::Constant)
constantOffset += stride * GetConstantInt(indexIds[i]);
else
- dynamicOffset += SIMD::Int(stride) * As<SIMD::Int>(routine->getIntermediate(indexIds[i])[0]);
+ dynamicOffset += SIMD::Int(stride) * routine->getIntermediate(indexIds[i]).Int(0);
typeId = type.element;
break;
}
default:
- UNIMPLEMENTED("Unexpected type '%s' in WalkAccessChain", OpcodeName(type.definition.opcode()).c_str());
+ UNIMPLEMENTED("Unexpected type '%s' in WalkAccessChain", OpcodeName(type.opcode()).c_str());
}
}
return dynamicOffset + SIMD::Int(constantOffset);
}
- uint32_t SpirvShader::WalkLiteralAccessChain(TypeID typeId, uint32_t numIndexes, uint32_t const *indexes) const
+ uint32_t SpirvShader::WalkLiteralAccessChain(Type::ID typeId, uint32_t numIndexes, uint32_t const *indexes) const
{
uint32_t constantOffset = 0;
for (auto i = 0u; i < numIndexes; i++)
{
auto & type = getType(typeId);
- switch (type.definition.opcode())
+ switch(type.opcode())
{
case spv::OpTypeStruct:
{
@@ -779,14 +1420,6 @@ namespace sw
HasComponent = true;
Component = arg;
break;
- case spv::DecorationDescriptorSet:
- HasDescriptorSet = true;
- DescriptorSet = arg;
- break;
- case spv::DecorationBinding:
- HasBinding = true;
- Binding = arg;
- break;
case spv::DecorationBuiltIn:
HasBuiltIn = true;
BuiltIn = static_cast<spv::BuiltIn>(arg);
@@ -806,6 +1439,28 @@ namespace sw
case spv::DecorationBufferBlock:
BufferBlock = true;
break;
+ case spv::DecorationOffset:
+ HasOffset = true;
+ Offset = static_cast<int32_t>(arg);
+ break;
+ case spv::DecorationArrayStride:
+ HasArrayStride = true;
+ ArrayStride = static_cast<int32_t>(arg);
+ break;
+ case spv::DecorationMatrixStride:
+ HasMatrixStride = true;
+ MatrixStride = static_cast<int32_t>(arg);
+ break;
+ case spv::DecorationRelaxedPrecision:
+ RelaxedPrecision = true;
+ break;
+ case spv::DecorationRowMajor:
+ HasRowMajor = true;
+ RowMajor = true;
+ break;
+ case spv::DecorationColMajor:
+ HasRowMajor = true;
+ RowMajor = false;
default:
// Intentionally partial, there are many decorations we just don't care about.
break;
@@ -833,16 +1488,28 @@ namespace sw
Component = src.Component;
}
- if (src.HasDescriptorSet)
+ if (src.HasOffset)
{
- HasDescriptorSet = true;
- DescriptorSet = src.DescriptorSet;
+ HasOffset = true;
+ Offset = src.Offset;
}
- if (src.HasBinding)
+ if (src.HasArrayStride)
{
- HasBinding = true;
- Binding = src.Binding;
+ HasArrayStride = true;
+ ArrayStride = src.ArrayStride;
+ }
+
+ if (src.HasMatrixStride)
+ {
+ HasMatrixStride = true;
+ MatrixStride = src.MatrixStride;
+ }
+
+ if (src.HasRowMajor)
+ {
+ HasRowMajor = true;
+ RowMajor = src.RowMajor;
}
Flat |= src.Flat;
@@ -850,6 +1517,21 @@ namespace sw
Centroid |= src.Centroid;
Block |= src.Block;
BufferBlock |= src.BufferBlock;
+ RelaxedPrecision |= src.RelaxedPrecision;
+ InsideMatrix |= src.InsideMatrix;
+ }
+
+ void SpirvShader::DescriptorDecorations::Apply(const sw::SpirvShader::DescriptorDecorations &src)
+ {
+ if(src.DescriptorSet >= 0)
+ {
+ DescriptorSet = src.DescriptorSet;
+ }
+
+ if(src.Binding >= 0)
+ {
+ Binding = src.Binding;
+ }
}
void SpirvShader::ApplyDecorationsForId(Decorations *d, TypeOrObjectID id) const
@@ -859,7 +1541,7 @@ namespace sw
d->Apply(it->second);
}
- void SpirvShader::ApplyDecorationsForIdMember(Decorations *d, TypeID id, uint32_t member) const
+ void SpirvShader::ApplyDecorationsForIdMember(Decorations *d, Type::ID id, uint32_t member) const
{
auto it = memberDecorations.find(id);
if (it != memberDecorations.end() && member < it->second.size())
@@ -868,7 +1550,18 @@ namespace sw
}
}
- uint32_t SpirvShader::GetConstantInt(ObjectID id) const
+ void SpirvShader::DefineResult(const InsnIterator &insn)
+ {
+ Type::ID typeId = insn.word(1);
+ Object::ID resultId = insn.word(2);
+ auto &object = defs[resultId];
+ object.type = typeId;
+ object.kind = (getType(typeId).opcode() == spv::OpTypePointer)
+ ? Object::Kind::DivergentPointer : Object::Kind::Intermediate;
+ object.definition = insn;
+ }
+
+ uint32_t SpirvShader::GetConstantInt(Object::ID id) const
{
// Slightly hackish access to constants very early in translation.
// General consumption of constants by other instructions should
@@ -878,7 +1571,7 @@ namespace sw
// but is possible to construct integer constant 0 via OpConstantNull.
auto insn = getObject(id).definition;
ASSERT(insn.opcode() == spv::OpConstant);
- ASSERT(getType(insn.word(1)).definition.opcode() == spv::OpTypeInt);
+ ASSERT(getType(insn.word(1)).opcode() == spv::OpTypeInt);
return insn.word(3);
}
@@ -892,14 +1585,14 @@ namespace sw
{
case spv::OpVariable:
{
- ObjectID resultId = insn.word(2);
- auto &object = getObject(resultId);
- auto &objectTy = getType(object.type);
- auto &pointeeTy = getType(objectTy.element);
- // TODO: what to do about zero-slot objects?
- if (pointeeTy.sizeInComponents > 0)
+ Type::ID resultPointerTypeId = insn.word(1);
+ auto resultPointerType = getType(resultPointerTypeId);
+ auto pointeeType = getType(resultPointerType.element);
+
+ if(pointeeType.sizeInComponents > 0) // TODO: what to do about zero-slot objects?
{
- routine->createLvalue(insn.word(2), pointeeTy.sizeInComponents);
+ Object::ID resultId = insn.word(2);
+ routine->createVariable(resultId, pointeeType.sizeInComponents);
}
break;
}
@@ -910,177 +1603,579 @@ namespace sw
}
}
- void SpirvShader::emit(SpirvRoutine *routine) const
+ void SpirvShader::emit(SpirvRoutine *routine, RValue<SIMD::Int> const &activeLaneMask, const vk::DescriptorSet::Bindings &descriptorSets) const
{
+ EmitState state(routine, activeLaneMask, descriptorSets);
+
+ // Emit everything up to the first label
+ // TODO: Separate out dispatch of block from non-block instructions?
for (auto insn : *this)
{
- switch (insn.opcode())
+ if (insn.opcode() == spv::OpLabel)
{
- case spv::OpTypeVoid:
- case spv::OpTypeInt:
- case spv::OpTypeFloat:
- case spv::OpTypeBool:
- case spv::OpTypeVector:
- case spv::OpTypeArray:
- case spv::OpTypeRuntimeArray:
- case spv::OpTypeMatrix:
- case spv::OpTypeStruct:
- case spv::OpTypePointer:
- case spv::OpTypeFunction:
- case spv::OpExecutionMode:
- case spv::OpMemoryModel:
- case spv::OpFunction:
- case spv::OpFunctionEnd:
- case spv::OpConstant:
- case spv::OpConstantNull:
- case spv::OpConstantTrue:
- case spv::OpConstantFalse:
- case spv::OpConstantComposite:
- case spv::OpExtension:
- case spv::OpCapability:
- case spv::OpEntryPoint:
- case spv::OpExtInstImport:
- case spv::OpDecorate:
- case spv::OpMemberDecorate:
- case spv::OpGroupDecorate:
- case spv::OpGroupMemberDecorate:
- case spv::OpDecorationGroup:
- case spv::OpName:
- case spv::OpMemberName:
- case spv::OpSource:
- case spv::OpSourceContinued:
- case spv::OpSourceExtension:
- // Nothing to do at emit time. These are either fully handled at analysis time,
- // or don't require any work at all.
break;
+ }
+ EmitInstruction(insn, &state);
+ }
- case spv::OpLabel:
- case spv::OpReturn:
- // TODO: when we do control flow, will need to do some work here.
- // Until then, there is nothing to do -- we expect there to be an initial OpLabel
- // in the entrypoint function, for which we do nothing; and a final OpReturn at the
- // end of the entrypoint function, for which we do nothing.
- break;
+ // Emit all the blocks starting from mainBlockId.
+ EmitBlocks(mainBlockId, &state);
+ }
- case spv::OpVariable:
- EmitVariable(insn, routine);
- break;
+ void SpirvShader::EmitBlocks(Block::ID id, EmitState *state, Block::ID ignore /* = 0 */) const
+ {
+ auto oldPending = state->pending;
- case spv::OpLoad:
- EmitLoad(insn, routine);
- break;
+ std::queue<Block::ID> pending;
+ state->pending = &pending;
+ pending.push(id);
+ while (pending.size() > 0)
+ {
+ auto id = pending.front();
+ pending.pop();
- case spv::OpStore:
- EmitStore(insn, routine);
- break;
+ auto const &block = getBlock(id);
+ if (id == ignore)
+ {
+ continue;
+ }
- case spv::OpAccessChain:
- EmitAccessChain(insn, routine);
- break;
+ state->currentBlock = id;
- case spv::OpCompositeConstruct:
- EmitCompositeConstruct(insn, routine);
- break;
+ switch (block.kind)
+ {
+ case Block::Simple:
+ case Block::StructuredBranchConditional:
+ case Block::UnstructuredBranchConditional:
+ case Block::StructuredSwitch:
+ case Block::UnstructuredSwitch:
+ EmitNonLoop(state);
+ break;
- case spv::OpCompositeInsert:
- EmitCompositeInsert(insn, routine);
- break;
+ case Block::Loop:
+ EmitLoop(state);
+ break;
- case spv::OpCompositeExtract:
- EmitCompositeExtract(insn, routine);
- break;
+ default:
+ UNREACHABLE("Unexpected Block Kind: %d", int(block.kind));
+ }
+ }
- case spv::OpVectorShuffle:
- EmitVectorShuffle(insn, routine);
- break;
+ state->pending = oldPending;
+ }
- case spv::OpNot:
- case spv::OpSNegate:
- case spv::OpFNegate:
- case spv::OpLogicalNot:
- case spv::OpConvertFToU:
- case spv::OpConvertFToS:
- case spv::OpConvertSToF:
- case spv::OpConvertUToF:
- case spv::OpBitcast:
- EmitUnaryOp(insn, routine);
+ void SpirvShader::EmitInstructions(InsnIterator begin, InsnIterator end, EmitState *state) const
+ {
+ for (auto insn = begin; insn != end; insn++)
+ {
+ auto res = EmitInstruction(insn, state);
+ switch (res)
+ {
+ case EmitResult::Continue:
+ continue;
+ case EmitResult::Terminator:
break;
-
- case spv::OpIAdd:
- case spv::OpISub:
- case spv::OpIMul:
- case spv::OpSDiv:
- case spv::OpUDiv:
- case spv::OpFAdd:
- case spv::OpFSub:
- case spv::OpFDiv:
- case spv::OpFOrdEqual:
- case spv::OpFUnordEqual:
- case spv::OpFOrdNotEqual:
- case spv::OpFUnordNotEqual:
- case spv::OpFOrdLessThan:
- case spv::OpFUnordLessThan:
- case spv::OpFOrdGreaterThan:
- case spv::OpFUnordGreaterThan:
- case spv::OpFOrdLessThanEqual:
- case spv::OpFUnordLessThanEqual:
- case spv::OpFOrdGreaterThanEqual:
- case spv::OpFUnordGreaterThanEqual:
- case spv::OpUMod:
- case spv::OpIEqual:
- case spv::OpINotEqual:
- case spv::OpUGreaterThan:
- case spv::OpSGreaterThan:
- case spv::OpUGreaterThanEqual:
- case spv::OpSGreaterThanEqual:
- case spv::OpULessThan:
- case spv::OpSLessThan:
- case spv::OpULessThanEqual:
- case spv::OpSLessThanEqual:
- case spv::OpShiftRightLogical:
- case spv::OpShiftRightArithmetic:
- case spv::OpShiftLeftLogical:
- case spv::OpBitwiseOr:
- case spv::OpBitwiseXor:
- case spv::OpBitwiseAnd:
- case spv::OpLogicalOr:
- case spv::OpLogicalAnd:
- case spv::OpUMulExtended:
- case spv::OpSMulExtended:
- EmitBinaryOp(insn, routine);
+ default:
+ UNREACHABLE("Unexpected EmitResult %d", int(res));
break;
+ }
+ }
+ }
- case spv::OpDot:
- EmitDot(insn, routine);
- break;
+ void SpirvShader::EmitNonLoop(EmitState *state) const
+ {
+ auto blockId = state->currentBlock;
+ auto block = getBlock(blockId);
- case spv::OpSelect:
- EmitSelect(insn, routine);
- break;
+ // Ensure all incoming blocks have been generated.
+ auto depsDone = true;
+ for (auto in : block.ins)
+ {
+ if (state->visited.count(in) == 0)
+ {
+ state->pending->emplace(in);
+ depsDone = false;
+ }
+ }
- case spv::OpExtInst:
- EmitExtendedInstruction(insn, routine);
- break;
+ if (!depsDone)
+ {
+ // come back to this once the dependencies have been generated
+ state->pending->emplace(blockId);
+ return;
+ }
- default:
- UNIMPLEMENTED(OpcodeName(insn.opcode()).c_str());
- break;
+ if (!state->visited.emplace(blockId).second)
+ {
+ return; // Already generated this block.
+ }
+
+ if (blockId != mainBlockId)
+ {
+ // Set the activeLaneMask.
+ SIMD::Int activeLaneMask(0);
+ for (auto in : block.ins)
+ {
+ auto inMask = GetActiveLaneMaskEdge(state, in, blockId);
+ activeLaneMask |= inMask;
+ }
+ state->setActiveLaneMask(activeLaneMask);
+ }
+
+ EmitInstructions(block.begin(), block.end(), state);
+
+ for (auto out : block.outs)
+ {
+ state->pending->emplace(out);
+ }
+ }
+
+ void SpirvShader::EmitLoop(EmitState *state) const
+ {
+ auto blockId = state->currentBlock;
+ auto block = getBlock(blockId);
+
+ // Ensure all incoming non-back edge blocks have been generated.
+ auto depsDone = true;
+ for (auto in : block.ins)
+ {
+ if (state->visited.count(in) == 0)
+ {
+ if (!existsPath(blockId, in, block.mergeBlock)) // if not a loop back edge
+ {
+ state->pending->emplace(in);
+ depsDone = false;
+ }
+ }
+ }
+
+ if (!depsDone)
+ {
+ // come back to this once the dependencies have been generated
+ state->pending->emplace(blockId);
+ return;
+ }
+
+ if (!state->visited.emplace(blockId).second)
+ {
+ return; // Already emitted this loop.
+ }
+
+ // loopActiveLaneMask is the mask of lanes that are continuing to loop.
+ // This is initialized with the incoming active lane masks.
+ SIMD::Int loopActiveLaneMask = SIMD::Int(0);
+ for (auto in : block.ins)
+ {
+ if (!existsPath(blockId, in, block.mergeBlock)) // if not a loop back edge
+ {
+ loopActiveLaneMask |= GetActiveLaneMaskEdge(state, in, blockId);
+ }
+ }
+
+ // Generate an alloca for each of the loop's phis.
+ // These will be primed with the incoming, non back edge Phi values
+ // before the loop, and then updated just before the loop jumps back to
+ // the block.
+ struct LoopPhi
+ {
+ LoopPhi(Object::ID id, uint32_t size) : phiId(id), storage(size) {}
+
+ Object::ID phiId; // The Phi identifier.
+ Object::ID continueValue; // The source merge value from the loop.
+ Array<SIMD::Int> storage; // The alloca.
+ };
+
+ std::vector<LoopPhi> phis;
+
+ // For each OpPhi between the block start and the merge instruction:
+ for (auto insn = block.begin(); insn != block.mergeInstruction; insn++)
+ {
+ if (insn.opcode() == spv::OpPhi)
+ {
+ auto objectId = Object::ID(insn.word(2));
+ auto &object = getObject(objectId);
+ auto &type = getType(object.type);
+
+ LoopPhi phi(insn.word(2), type.sizeInComponents);
+
+ // Start with the Phi set to 0.
+ for (uint32_t i = 0; i < type.sizeInComponents; i++)
+ {
+ phi.storage[i] = SIMD::Int(0);
+ }
+
+ // For each Phi source:
+ for (uint32_t w = 3; w < insn.wordCount(); w += 2)
+ {
+ auto varId = Object::ID(insn.word(w + 0));
+ auto blockId = Block::ID(insn.word(w + 1));
+
+ if (block.ins.count(blockId) == 0)
+ {
+ continue; // In is unreachable. Ignore.
+ }
+
+ if (existsPath(state->currentBlock, blockId, block.mergeBlock))
+ {
+ // This source is from a loop back-edge.
+ ASSERT(phi.continueValue == 0 || phi.continueValue == varId);
+ phi.continueValue = varId;
+ }
+ else
+ {
+ // This source is from a preceding block.
+ for (uint32_t i = 0; i < type.sizeInComponents; i++)
+ {
+ auto in = GenericValue(this, state->routine, varId);
+ auto mask = GetActiveLaneMaskEdge(state, blockId, state->currentBlock);
+ phi.storage[i] = phi.storage[i] | (in.Int(i) & mask);
+ }
+ }
+ }
+
+ phis.push_back(phi);
+ }
+ }
+
+ // Create the loop basic blocks
+ auto headerBasicBlock = Nucleus::createBasicBlock();
+ auto mergeBasicBlock = Nucleus::createBasicBlock();
+
+ // Start emitting code inside the loop.
+ Nucleus::createBr(headerBasicBlock);
+ Nucleus::setInsertBlock(headerBasicBlock);
+
+ // Load the Phi values from storage.
+ // This will load at the start of each loop.
+ for (auto &phi : phis)
+ {
+ auto &type = getType(getObject(phi.phiId).type);
+ auto &dst = state->routine->createIntermediate(phi.phiId, type.sizeInComponents);
+ for (unsigned int i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, phi.storage[i]);
+ }
+ }
+
+ // Load the active lane mask.
+ state->setActiveLaneMask(loopActiveLaneMask);
+
+ // Emit all the non-phi instructions in this loop header block.
+ for (auto insn = block.begin(); insn != block.end(); insn++)
+ {
+ if (insn.opcode() != spv::OpPhi)
+ {
+ EmitInstruction(insn, state);
+ }
+ }
+
+ // Emit all loop blocks, but don't emit the merge block yet.
+ for (auto out : block.outs)
+ {
+ if (existsPath(out, blockId, block.mergeBlock))
+ {
+ EmitBlocks(out, state, block.mergeBlock);
+ }
+ }
+
+ // Rebuild the loopActiveLaneMask from the loop back edges.
+ loopActiveLaneMask = SIMD::Int(0);
+ for (auto in : block.ins)
+ {
+ if (existsPath(blockId, in, block.mergeBlock))
+ {
+ loopActiveLaneMask |= GetActiveLaneMaskEdge(state, in, blockId);
}
}
+
+ // Update loop phi values
+ for (auto &phi : phis)
+ {
+ if (phi.continueValue != 0)
+ {
+ auto val = GenericValue(this, state->routine, phi.continueValue);
+ auto &type = getType(getObject(phi.phiId).type);
+ for (unsigned int i = 0u; i < type.sizeInComponents; i++)
+ {
+ phi.storage[i] = val.Int(i);
+ }
+ }
+ }
+
+ // Loop body now done.
+ // If any lanes are still active, jump back to the loop header,
+ // otherwise jump to the merge block.
+ Nucleus::createCondBr(AnyTrue(loopActiveLaneMask).value, headerBasicBlock, mergeBasicBlock);
+
+ // Continue emitting from the merge block.
+ Nucleus::setInsertBlock(mergeBasicBlock);
+ state->pending->emplace(block.mergeBlock);
}
- void SpirvShader::EmitVariable(InsnIterator insn, SpirvRoutine *routine) const
+ SpirvShader::EmitResult SpirvShader::EmitInstruction(InsnIterator insn, EmitState *state) const
{
- ObjectID resultId = insn.word(2);
+ auto opcode = insn.opcode();
+
+ switch (opcode)
+ {
+ case spv::OpTypeVoid:
+ case spv::OpTypeInt:
+ case spv::OpTypeFloat:
+ case spv::OpTypeBool:
+ case spv::OpTypeVector:
+ case spv::OpTypeArray:
+ case spv::OpTypeRuntimeArray:
+ case spv::OpTypeMatrix:
+ case spv::OpTypeStruct:
+ case spv::OpTypePointer:
+ case spv::OpTypeFunction:
+ case spv::OpTypeImage:
+ case spv::OpTypeSampledImage:
+ case spv::OpExecutionMode:
+ case spv::OpMemoryModel:
+ case spv::OpFunction:
+ case spv::OpFunctionEnd:
+ case spv::OpConstant:
+ case spv::OpConstantNull:
+ case spv::OpConstantTrue:
+ case spv::OpConstantFalse:
+ case spv::OpConstantComposite:
+ case spv::OpUndef:
+ case spv::OpExtension:
+ case spv::OpCapability:
+ case spv::OpEntryPoint:
+ case spv::OpExtInstImport:
+ case spv::OpDecorate:
+ case spv::OpMemberDecorate:
+ case spv::OpGroupDecorate:
+ case spv::OpGroupMemberDecorate:
+ case spv::OpDecorationGroup:
+ case spv::OpName:
+ case spv::OpMemberName:
+ case spv::OpSource:
+ case spv::OpSourceContinued:
+ case spv::OpSourceExtension:
+ case spv::OpLine:
+ case spv::OpNoLine:
+ case spv::OpModuleProcessed:
+ case spv::OpString:
+ // Nothing to do at emit time. These are either fully handled at analysis time,
+ // or don't require any work at all.
+ return EmitResult::Continue;
+
+ case spv::OpLabel:
+ return EmitResult::Continue;
+
+ case spv::OpVariable:
+ return EmitVariable(insn, state);
+
+ case spv::OpLoad:
+ case spv::OpAtomicLoad:
+ return EmitLoad(insn, state);
+
+ case spv::OpStore:
+ case spv::OpAtomicStore:
+ return EmitStore(insn, state);
+
+ case spv::OpAccessChain:
+ case spv::OpInBoundsAccessChain:
+ return EmitAccessChain(insn, state);
+
+ case spv::OpCompositeConstruct:
+ return EmitCompositeConstruct(insn, state);
+
+ case spv::OpCompositeInsert:
+ return EmitCompositeInsert(insn, state);
+
+ case spv::OpCompositeExtract:
+ return EmitCompositeExtract(insn, state);
+
+ case spv::OpVectorShuffle:
+ return EmitVectorShuffle(insn, state);
+
+ case spv::OpVectorExtractDynamic:
+ return EmitVectorExtractDynamic(insn, state);
+
+ case spv::OpVectorInsertDynamic:
+ return EmitVectorInsertDynamic(insn, state);
+
+ case spv::OpVectorTimesScalar:
+ case spv::OpMatrixTimesScalar:
+ return EmitVectorTimesScalar(insn, state);
+
+ case spv::OpMatrixTimesVector:
+ return EmitMatrixTimesVector(insn, state);
+
+ case spv::OpVectorTimesMatrix:
+ return EmitVectorTimesMatrix(insn, state);
+
+ case spv::OpMatrixTimesMatrix:
+ return EmitMatrixTimesMatrix(insn, state);
+
+ case spv::OpOuterProduct:
+ return EmitOuterProduct(insn, state);
+
+ case spv::OpTranspose:
+ return EmitTranspose(insn, state);
+
+ case spv::OpNot:
+ case spv::OpBitFieldInsert:
+ case spv::OpBitFieldSExtract:
+ case spv::OpBitFieldUExtract:
+ case spv::OpBitReverse:
+ case spv::OpBitCount:
+ case spv::OpSNegate:
+ case spv::OpFNegate:
+ case spv::OpLogicalNot:
+ case spv::OpConvertFToU:
+ case spv::OpConvertFToS:
+ case spv::OpConvertSToF:
+ case spv::OpConvertUToF:
+ case spv::OpBitcast:
+ case spv::OpIsInf:
+ case spv::OpIsNan:
+ case spv::OpDPdx:
+ case spv::OpDPdxCoarse:
+ case spv::OpDPdy:
+ case spv::OpDPdyCoarse:
+ case spv::OpFwidth:
+ case spv::OpFwidthCoarse:
+ case spv::OpDPdxFine:
+ case spv::OpDPdyFine:
+ case spv::OpFwidthFine:
+ return EmitUnaryOp(insn, state);
+
+ case spv::OpIAdd:
+ case spv::OpISub:
+ case spv::OpIMul:
+ case spv::OpSDiv:
+ case spv::OpUDiv:
+ case spv::OpFAdd:
+ case spv::OpFSub:
+ case spv::OpFMul:
+ case spv::OpFDiv:
+ case spv::OpFMod:
+ case spv::OpFRem:
+ case spv::OpFOrdEqual:
+ case spv::OpFUnordEqual:
+ case spv::OpFOrdNotEqual:
+ case spv::OpFUnordNotEqual:
+ case spv::OpFOrdLessThan:
+ case spv::OpFUnordLessThan:
+ case spv::OpFOrdGreaterThan:
+ case spv::OpFUnordGreaterThan:
+ case spv::OpFOrdLessThanEqual:
+ case spv::OpFUnordLessThanEqual:
+ case spv::OpFOrdGreaterThanEqual:
+ case spv::OpFUnordGreaterThanEqual:
+ case spv::OpSMod:
+ case spv::OpSRem:
+ case spv::OpUMod:
+ case spv::OpIEqual:
+ case spv::OpINotEqual:
+ case spv::OpUGreaterThan:
+ case spv::OpSGreaterThan:
+ case spv::OpUGreaterThanEqual:
+ case spv::OpSGreaterThanEqual:
+ case spv::OpULessThan:
+ case spv::OpSLessThan:
+ case spv::OpULessThanEqual:
+ case spv::OpSLessThanEqual:
+ case spv::OpShiftRightLogical:
+ case spv::OpShiftRightArithmetic:
+ case spv::OpShiftLeftLogical:
+ case spv::OpBitwiseOr:
+ case spv::OpBitwiseXor:
+ case spv::OpBitwiseAnd:
+ case spv::OpLogicalOr:
+ case spv::OpLogicalAnd:
+ case spv::OpLogicalEqual:
+ case spv::OpLogicalNotEqual:
+ case spv::OpUMulExtended:
+ case spv::OpSMulExtended:
+ return EmitBinaryOp(insn, state);
+
+ case spv::OpDot:
+ return EmitDot(insn, state);
+
+ case spv::OpSelect:
+ return EmitSelect(insn, state);
+
+ case spv::OpExtInst:
+ return EmitExtendedInstruction(insn, state);
+
+ case spv::OpAny:
+ return EmitAny(insn, state);
+
+ case spv::OpAll:
+ return EmitAll(insn, state);
+
+ case spv::OpBranch:
+ return EmitBranch(insn, state);
+
+ case spv::OpPhi:
+ return EmitPhi(insn, state);
+
+ case spv::OpSelectionMerge:
+ case spv::OpLoopMerge:
+ return EmitResult::Continue;
+
+ case spv::OpBranchConditional:
+ return EmitBranchConditional(insn, state);
+
+ case spv::OpSwitch:
+ return EmitSwitch(insn, state);
+
+ case spv::OpUnreachable:
+ return EmitUnreachable(insn, state);
+
+ case spv::OpReturn:
+ return EmitReturn(insn, state);
+
+ case spv::OpKill:
+ return EmitKill(insn, state);
+
+ case spv::OpImageSampleImplicitLod:
+ return EmitImageSampleImplicitLod(insn, state);
+
+ case spv::OpImageQuerySize:
+ return EmitImageQuerySize(insn, state);
+
+ case spv::OpImageRead:
+ return EmitImageRead(insn, state);
+
+ case spv::OpImageWrite:
+ return EmitImageWrite(insn, state);
+
+ default:
+ UNIMPLEMENTED("opcode: %s", OpcodeName(opcode).c_str());
+ break;
+ }
+
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitVariable(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
+ Object::ID resultId = insn.word(2);
auto &object = getObject(resultId);
auto &objectTy = getType(object.type);
+
switch (objectTy.storageClass)
{
+ case spv::StorageClassOutput:
+ case spv::StorageClassPrivate:
+ case spv::StorageClassFunction:
+ {
+ routine->createPointer(resultId, &routine->getVariable(resultId)[0]);
+ break;
+ }
case spv::StorageClassInput:
{
if (object.kind == Object::Kind::InterfaceVariable)
{
- auto &dst = routine->getValue(resultId);
+ auto &dst = routine->getVariable(resultId);
int offset = 0;
VisitInterface(resultId,
[&](Decorations const &d, AttribType type) {
@@ -1088,230 +2183,304 @@ namespace sw
dst[offset++] = routine->inputs[scalarSlot];
});
}
+ routine->createPointer(resultId, &routine->getVariable(resultId)[0]);
break;
}
- case spv::StorageClassUniform:
- case spv::StorageClassStorageBuffer:
+ case spv::StorageClassUniformConstant:
{
- Decorations d{};
- ApplyDecorationsForId(&d, resultId);
+ const auto &d = descriptorDecorations.at(resultId);
ASSERT(d.DescriptorSet >= 0);
ASSERT(d.Binding >= 0);
- size_t bindingOffset = routine->pipelineLayout->getBindingOffset(d.DescriptorSet, d.Binding);
+ uint32_t arrayIndex = 0; // TODO(b/129523279)
+ auto setLayout = routine->pipelineLayout->getDescriptorSetLayout(d.DescriptorSet);
+ size_t bindingOffset = setLayout->getBindingOffset(d.Binding, arrayIndex);
+ Pointer<Byte> set = routine->descriptorSets[d.DescriptorSet]; // DescriptorSet*
+ Pointer<Byte> binding = Pointer<Byte>(set + bindingOffset); // SampledImageDescriptor*
+ routine->createPointer(resultId, binding);
+ break;
+ }
+ case spv::StorageClassUniform:
+ case spv::StorageClassStorageBuffer:
+ {
+ const auto &d = descriptorDecorations.at(resultId);
+ ASSERT(d.DescriptorSet >= 0 && d.DescriptorSet < vk::MAX_BOUND_DESCRIPTOR_SETS);
- Pointer<Byte> set = routine->descriptorSets[d.DescriptorSet]; // DescriptorSet*
- Pointer<Byte> binding = Pointer<Byte>(set + bindingOffset); // VkDescriptorBufferInfo*
- Pointer<Byte> buffer = *Pointer<Pointer<Byte>>(binding + OFFSET(VkDescriptorBufferInfo, buffer)); // vk::Buffer*
- Pointer<Byte> data = *Pointer<Pointer<Byte>>(buffer + vk::Buffer::DataOffset); // void*
- Int offset = *Pointer<Int>(binding + OFFSET(VkDescriptorBufferInfo, offset));
- Pointer<Byte> address = data + offset;
- routine->physicalPointers[resultId] = address;
+ routine->createPointer(resultId, routine->descriptorSets[d.DescriptorSet]);
+ break;
+ }
+ case spv::StorageClassPushConstant:
+ {
+ routine->createPointer(resultId, routine->pushConstants);
break;
}
default:
+ UNIMPLEMENTED("Storage class %d", objectTy.storageClass);
break;
}
+
+ return EmitResult::Continue;
}
- void SpirvShader::EmitLoad(InsnIterator insn, SpirvRoutine *routine) const
+ SpirvShader::EmitResult SpirvShader::EmitLoad(InsnIterator insn, EmitState *state) const
{
- ObjectID objectId = insn.word(2);
- ObjectID pointerId = insn.word(3);
- auto &object = getObject(objectId);
- auto &objectTy = getType(object.type);
+ auto routine = state->routine;
+ bool atomic = (insn.opcode() == spv::OpAtomicLoad);
+ Object::ID resultId = insn.word(2);
+ Object::ID pointerId = insn.word(3);
+ auto &result = getObject(resultId);
+ auto &resultTy = getType(result.type);
auto &pointer = getObject(pointerId);
- auto &pointerBase = getObject(pointer.pointerBase);
- auto &pointerBaseTy = getType(pointerBase.type);
+ auto &pointerTy = getType(pointer.type);
+ std::memory_order memoryOrder = std::memory_order_relaxed;
- ASSERT(getType(pointer.type).element == object.type);
- ASSERT(TypeID(insn.word(1)) == object.type);
+ ASSERT(getType(pointer.type).element == result.type);
+ ASSERT(Type::ID(insn.word(1)) == result.type);
+ ASSERT(!atomic || getType(getType(pointer.type).element).opcode() == spv::OpTypeInt); // Vulkan 1.1: "Atomic instructions must declare a scalar 32-bit integer type, for the value pointed to by Pointer."
- if (pointerBaseTy.storageClass == spv::StorageClassImage)
+ if(pointer.kind == Object::Kind::SampledImage)
{
- UNIMPLEMENTED("StorageClassImage load not yet implemented");
+ // Just propagate the pointer.
+ // TODO(b/129523279)
+ auto &ptr = routine->getPointer(pointerId);
+ routine->createPointer(resultId, ptr);
+
+ return EmitResult::Continue;
}
- Pointer<Float> ptrBase;
- if (pointerBase.kind == Object::Kind::PhysicalPointer)
+ if(atomic)
{
- ptrBase = routine->getPhysicalPointer(pointer.pointerBase);
+ Object::ID semanticsId = insn.word(5);
+ auto memorySemantics = static_cast<spv::MemorySemanticsMask>(getObject(semanticsId).constantValue[0]);
+ memoryOrder = MemoryOrder(memorySemantics);
}
- else
+
+ if (pointerTy.storageClass == spv::StorageClassImage)
{
- ptrBase = &routine->getValue(pointer.pointerBase)[0];
+ UNIMPLEMENTED("StorageClassImage load not yet implemented");
}
- bool interleavedByLane = IsStorageInterleavedByLane(pointerBaseTy.storageClass);
+ auto ptr = GetPointerToData(pointerId, 0, routine);
+
+ bool interleavedByLane = IsStorageInterleavedByLane(pointerTy.storageClass);
+ auto anyInactiveLanes = AnyFalse(state->activeLaneMask());
- auto &dst = routine->createIntermediate(objectId, objectTy.sizeInComponents);
+ auto load = std::unique_ptr<SIMD::Float[]>(new SIMD::Float[resultTy.sizeInComponents]);
- if (pointer.kind == Object::Kind::Value)
+ If(!ptr.uniform || anyInactiveLanes)
{
- // Divergent offsets.
- auto offsets = As<SIMD::Int>(routine->getIntermediate(pointerId)[0]);
- for (auto i = 0u; i < objectTy.sizeInComponents; i++)
+ // Divergent offsets or masked lanes.
+ VisitMemoryObject(pointerId, [&](uint32_t i, uint32_t o)
{
// i wish i had a Float,Float,Float,Float constructor here..
- SIMD::Float v;
for (int j = 0; j < SIMD::Width; j++)
{
- Int offset = Int(i) + Extract(offsets, j);
- if (interleavedByLane) { offset = offset * SIMD::Width + j; }
- v = Insert(v, ptrBase[offset], j);
+ If(Extract(state->activeLaneMask(), j) != 0)
+ {
+ Int offset = Int(o) + Extract(ptr.offset, j);
+ if (interleavedByLane) { offset = offset * SIMD::Width + j; }
+ load[i] = Insert(load[i], Load(&ptr.base[offset], sizeof(float), atomic, memoryOrder), j);
+ }
}
- dst.emplace(i, v);
- }
+ });
}
- else if (interleavedByLane)
+ Else
{
- // Lane-interleaved data. No divergent offsets.
- Pointer<SIMD::Float> src = ptrBase;
- for (auto i = 0u; i < objectTy.sizeInComponents; i++)
+ // No divergent offsets or masked lanes.
+ if (interleavedByLane)
{
- dst.emplace(i, src[i]);
+ // Lane-interleaved data.
+ Pointer<SIMD::Float> src = ptr.base;
+ VisitMemoryObject(pointerId, [&](uint32_t i, uint32_t o)
+ {
+ load[i] = Load(&src[o], sizeof(float), atomic, memoryOrder); // TODO: optimize alignment
+ });
}
- }
- else
- {
- // Non-interleaved data. No divergent offsets.
- for (auto i = 0u; i < objectTy.sizeInComponents; i++)
+ else
{
- dst.emplace(i, RValue<SIMD::Float>(ptrBase[i]));
+ // Non-interleaved data.
+ VisitMemoryObject(pointerId, [&](uint32_t i, uint32_t o)
+ {
+ load[i] = RValue<SIMD::Float>(Load(&ptr.base[o], sizeof(float), atomic, memoryOrder)); // TODO: optimize alignment
+ });
}
}
- }
- void SpirvShader::EmitAccessChain(InsnIterator insn, SpirvRoutine *routine) const
- {
- TypeID typeId = insn.word(1);
- ObjectID objectId = insn.word(2);
- ObjectID baseId = insn.word(3);
- auto &object = getObject(objectId);
- auto &type = getType(typeId);
- ASSERT(type.sizeInComponents == 1);
- ASSERT(getObject(baseId).pointerBase == object.pointerBase);
+ auto &dst = routine->createIntermediate(resultId, resultTy.sizeInComponents);
+ for (auto i = 0u; i < resultTy.sizeInComponents; i++)
+ {
+ dst.move(i, load[i]);
+ }
- auto &dst = routine->createIntermediate(objectId, type.sizeInComponents);
- dst.emplace(0, As<SIMD::Float>(WalkAccessChain(baseId, insn.wordCount() - 4, insn.wordPointer(4), routine)));
+ return EmitResult::Continue;
}
- void SpirvShader::EmitStore(InsnIterator insn, SpirvRoutine *routine) const
+ SpirvShader::EmitResult SpirvShader::EmitStore(InsnIterator insn, EmitState *state) const
{
- ObjectID pointerId = insn.word(1);
- ObjectID objectId = insn.word(2);
+ auto routine = state->routine;
+ bool atomic = (insn.opcode() == spv::OpAtomicStore);
+ Object::ID pointerId = insn.word(1);
+ Object::ID objectId = insn.word(atomic ? 4 : 2);
auto &object = getObject(objectId);
auto &pointer = getObject(pointerId);
auto &pointerTy = getType(pointer.type);
auto &elementTy = getType(pointerTy.element);
- auto &pointerBase = getObject(pointer.pointerBase);
- auto &pointerBaseTy = getType(pointerBase.type);
+ std::memory_order memoryOrder = std::memory_order_relaxed;
- if (pointerBaseTy.storageClass == spv::StorageClassImage)
+ if(atomic)
{
- UNIMPLEMENTED("StorageClassImage store not yet implemented");
+ Object::ID semanticsId = insn.word(3);
+ auto memorySemantics = static_cast<spv::MemorySemanticsMask>(getObject(semanticsId).constantValue[0]);
+ memoryOrder = MemoryOrder(memorySemantics);
}
- Pointer<Float> ptrBase;
- if (pointerBase.kind == Object::Kind::PhysicalPointer)
- {
- ptrBase = routine->getPhysicalPointer(pointer.pointerBase);
- }
- else
+ ASSERT(!atomic || elementTy.opcode() == spv::OpTypeInt); // Vulkan 1.1: "Atomic instructions must declare a scalar 32-bit integer type, for the value pointed to by Pointer."
+
+ if (pointerTy.storageClass == spv::StorageClassImage)
{
- ptrBase = &routine->getValue(pointer.pointerBase)[0];
+ UNIMPLEMENTED("StorageClassImage store not yet implemented");
}
- bool interleavedByLane = IsStorageInterleavedByLane(pointerBaseTy.storageClass);
+ auto ptr = GetPointerToData(pointerId, 0, routine);
+
+ bool interleavedByLane = IsStorageInterleavedByLane(pointerTy.storageClass);
+ auto anyInactiveLanes = AnyFalse(state->activeLaneMask());
if (object.kind == Object::Kind::Constant)
{
+ // Constant source data.
auto src = reinterpret_cast<float *>(object.constantValue.get());
-
- if (pointer.kind == Object::Kind::Value)
+ If(!ptr.uniform || anyInactiveLanes)
{
- // Constant source data. Divergent offsets.
- auto offsets = As<SIMD::Int>(routine->getIntermediate(pointerId)[0]);
- for (auto i = 0u; i < elementTy.sizeInComponents; i++)
+ // Divergent offsets or masked lanes.
+ VisitMemoryObject(pointerId, [&](uint32_t i, uint32_t o)
{
for (int j = 0; j < SIMD::Width; j++)
{
- Int offset = Int(i) + Extract(offsets, j);
- if (interleavedByLane) { offset = offset * SIMD::Width + j; }
- ptrBase[offset] = RValue<Float>(src[i]);
+ If(Extract(state->activeLaneMask(), j) != 0)
+ {
+ Int offset = Int(o) + Extract(ptr.offset, j);
+ if (interleavedByLane) { offset = offset * SIMD::Width + j; }
+ Store(RValue<Float>(src[i]), &ptr.base[offset], sizeof(float), atomic, memoryOrder);
+ }
}
- }
+ });
}
- else
+ Else
{
- // Constant source data. No divergent offsets.
- Pointer<SIMD::Float> dst = ptrBase;
- for (auto i = 0u; i < elementTy.sizeInComponents; i++)
+ // Constant source data.
+ // No divergent offsets or masked lanes.
+ Pointer<SIMD::Float> dst = ptr.base;
+ VisitMemoryObject(pointerId, [&](uint32_t i, uint32_t o)
{
- dst[i] = RValue<SIMD::Float>(src[i]);
- }
+ Store(RValue<SIMD::Float>(src[i]), &dst[o], sizeof(float), atomic, memoryOrder); // TODO: optimize alignment
+ });
}
}
else
{
+ // Intermediate source data.
auto &src = routine->getIntermediate(objectId);
-
- if (pointer.kind == Object::Kind::Value)
+ If(!ptr.uniform || anyInactiveLanes)
{
- // Intermediate source data. Divergent offsets.
- auto offsets = As<SIMD::Int>(routine->getIntermediate(pointerId)[0]);
- for (auto i = 0u; i < elementTy.sizeInComponents; i++)
+ // Divergent offsets or masked lanes.
+ VisitMemoryObject(pointerId, [&](uint32_t i, uint32_t o)
{
for (int j = 0; j < SIMD::Width; j++)
{
- Int offset = Int(i) + Extract(offsets, j);
- if (interleavedByLane) { offset = offset * SIMD::Width + j; }
- ptrBase[offset] = Extract(src[i], j);
+ If(Extract(state->activeLaneMask(), j) != 0)
+ {
+ Int offset = Int(o) + Extract(ptr.offset, j);
+ if (interleavedByLane) { offset = offset * SIMD::Width + j; }
+ Store(Extract(src.Float(i), j), &ptr.base[offset], sizeof(float), atomic, memoryOrder);
+ }
}
- }
+ });
}
- else if (interleavedByLane)
+ Else
{
- // Intermediate source data. Lane-interleaved data. No divergent offsets.
- Pointer<SIMD::Float> dst = ptrBase;
- for (auto i = 0u; i < elementTy.sizeInComponents; i++)
+ // No divergent offsets or masked lanes.
+ if (interleavedByLane)
{
- dst[i] = src[i];
+ // Lane-interleaved data.
+ Pointer<SIMD::Float> dst = ptr.base;
+ VisitMemoryObject(pointerId, [&](uint32_t i, uint32_t o)
+ {
+ Store(src.Float(i), &dst[o], sizeof(float), atomic, memoryOrder); // TODO: optimize alignment
+ });
}
- }
- else
- {
- // Intermediate source data. Non-interleaved data. No divergent offsets.
- Pointer<SIMD::Float> dst = ptrBase;
- for (auto i = 0u; i < elementTy.sizeInComponents; i++)
+ else
{
- dst[i] = SIMD::Float(src[i]);
+ // Intermediate source data. Non-interleaved data.
+ Pointer<SIMD::Float> dst = ptr.base;
+ VisitMemoryObject(pointerId, [&](uint32_t i, uint32_t o)
+ {
+ Store<SIMD::Float>(SIMD::Float(src.Float(i)), &dst[o], sizeof(float), atomic, memoryOrder); // TODO: optimize alignment
+ });
}
}
}
+
+ return EmitResult::Continue;
}
- void SpirvShader::EmitCompositeConstruct(InsnIterator insn, SpirvRoutine *routine) const
+ SpirvShader::EmitResult SpirvShader::EmitAccessChain(InsnIterator insn, EmitState *state) const
{
+ auto routine = state->routine;
+ Type::ID typeId = insn.word(1);
+ Object::ID resultId = insn.word(2);
+ Object::ID baseId = insn.word(3);
+ uint32_t numIndexes = insn.wordCount() - 4;
+ const uint32_t *indexes = insn.wordPointer(4);
+ auto &type = getType(typeId);
+ ASSERT(type.sizeInComponents == 1);
+ ASSERT(getObject(resultId).kind == Object::Kind::DivergentPointer);
+
+ if(type.storageClass == spv::StorageClassPushConstant ||
+ type.storageClass == spv::StorageClassUniform ||
+ type.storageClass == spv::StorageClassStorageBuffer)
+ {
+ auto ptr = WalkExplicitLayoutAccessChain(baseId, numIndexes, indexes, routine);
+ routine->createPointer(resultId, ptr.base);
+ routine->createIntermediate(resultId, type.sizeInComponents).move(0, ptr.offset);
+ }
+ else
+ {
+ auto offset = WalkAccessChain(baseId, numIndexes, indexes, routine);
+ routine->createPointer(resultId, routine->getPointer(baseId));
+ routine->createIntermediate(resultId, type.sizeInComponents).move(0, offset);
+ }
+
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitCompositeConstruct(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
auto &type = getType(insn.word(1));
auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
auto offset = 0u;
for (auto i = 0u; i < insn.wordCount() - 3; i++)
{
- ObjectID srcObjectId = insn.word(3u + i);
+ Object::ID srcObjectId = insn.word(3u + i);
auto & srcObject = getObject(srcObjectId);
auto & srcObjectTy = getType(srcObject.type);
GenericValue srcObjectAccess(this, routine, srcObjectId);
for (auto j = 0u; j < srcObjectTy.sizeInComponents; j++)
- dst.emplace(offset++, srcObjectAccess[j]);
+ {
+ dst.move(offset++, srcObjectAccess.Float(j));
+ }
}
+
+ return EmitResult::Continue;
}
- void SpirvShader::EmitCompositeInsert(InsnIterator insn, SpirvRoutine *routine) const
+ SpirvShader::EmitResult SpirvShader::EmitCompositeInsert(InsnIterator insn, EmitState *state) const
{
- TypeID resultTypeId = insn.word(1);
+ auto routine = state->routine;
+ Type::ID resultTypeId = insn.word(1);
auto &type = getType(resultTypeId);
auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
auto &newPartObject = getObject(insn.word(3));
@@ -1324,40 +2493,50 @@ namespace sw
// old components before
for (auto i = 0u; i < firstNewComponent; i++)
{
- dst.emplace(i, srcObjectAccess[i]);
+ dst.move(i, srcObjectAccess.Float(i));
}
// new part
for (auto i = 0u; i < newPartObjectTy.sizeInComponents; i++)
{
- dst.emplace(firstNewComponent + i, newPartObjectAccess[i]);
+ dst.move(firstNewComponent + i, newPartObjectAccess.Float(i));
}
// old components after
for (auto i = firstNewComponent + newPartObjectTy.sizeInComponents; i < type.sizeInComponents; i++)
{
- dst.emplace(i, srcObjectAccess[i]);
+ dst.move(i, srcObjectAccess.Float(i));
}
+
+ return EmitResult::Continue;
}
- void SpirvShader::EmitCompositeExtract(InsnIterator insn, SpirvRoutine *routine) const
+ SpirvShader::EmitResult SpirvShader::EmitCompositeExtract(InsnIterator insn, EmitState *state) const
{
+ auto routine = state->routine;
auto &type = getType(insn.word(1));
auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
auto &compositeObject = getObject(insn.word(3));
- TypeID compositeTypeId = compositeObject.definition.word(1);
+ Type::ID compositeTypeId = compositeObject.definition.word(1);
auto firstComponent = WalkLiteralAccessChain(compositeTypeId, insn.wordCount() - 4, insn.wordPointer(4));
GenericValue compositeObjectAccess(this, routine, insn.word(3));
for (auto i = 0u; i < type.sizeInComponents; i++)
{
- dst.emplace(i, compositeObjectAccess[firstComponent + i]);
+ dst.move(i, compositeObjectAccess.Float(firstComponent + i));
}
+
+ return EmitResult::Continue;
}
- void SpirvShader::EmitVectorShuffle(InsnIterator insn, SpirvRoutine *routine) const
+ SpirvShader::EmitResult SpirvShader::EmitVectorShuffle(InsnIterator insn, EmitState *state) const
{
+ auto routine = state->routine;
auto &type = getType(insn.word(1));
auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
+ // Note: number of components in result type, first half type, and second
+ // half type are all independent.
+ auto &firstHalfType = getType(getObject(insn.word(3)).type);
+
GenericValue firstHalfAccess(this, routine, insn.word(3));
GenericValue secondHalfAccess(this, routine, insn.word(4));
@@ -1368,246 +2547,589 @@ namespace sw
{
// Undefined value. Until we decide to do real undef values, zero is as good
// a value as any
- dst.emplace(i, RValue<SIMD::Float>(0.0f));
+ dst.move(i, RValue<SIMD::Float>(0.0f));
}
- else if (selector < type.sizeInComponents)
+ else if (selector < firstHalfType.sizeInComponents)
{
- dst.emplace(i, firstHalfAccess[selector]);
+ dst.move(i, firstHalfAccess.Float(selector));
}
else
{
- dst.emplace(i, secondHalfAccess[selector - type.sizeInComponents]);
+ dst.move(i, secondHalfAccess.Float(selector - firstHalfType.sizeInComponents));
}
}
+
+ return EmitResult::Continue;
}
- void SpirvShader::EmitUnaryOp(InsnIterator insn, SpirvRoutine *routine) const
+ SpirvShader::EmitResult SpirvShader::EmitVectorExtractDynamic(InsnIterator insn, EmitState *state) const
{
+ auto routine = state->routine;
+ auto &type = getType(insn.word(1));
+ auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
+ auto &srcType = getType(getObject(insn.word(3)).type);
+
+ GenericValue src(this, routine, insn.word(3));
+ GenericValue index(this, routine, insn.word(4));
+
+ SIMD::UInt v = SIMD::UInt(0);
+
+ for (auto i = 0u; i < srcType.sizeInComponents; i++)
+ {
+ v |= CmpEQ(index.UInt(0), SIMD::UInt(i)) & src.UInt(i);
+ }
+
+ dst.move(0, v);
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitVectorInsertDynamic(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
auto &type = getType(insn.word(1));
auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
- auto src = GenericValue(this, routine, insn.word(3));
+
+ GenericValue src(this, routine, insn.word(3));
+ GenericValue component(this, routine, insn.word(4));
+ GenericValue index(this, routine, insn.word(5));
+
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ SIMD::UInt mask = CmpEQ(SIMD::UInt(i), index.UInt(0));
+ dst.move(i, (src.UInt(i) & ~mask) | (component.UInt(0) & mask));
+ }
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitVectorTimesScalar(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
+ auto &type = getType(insn.word(1));
+ auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
+ auto lhs = GenericValue(this, routine, insn.word(3));
+ auto rhs = GenericValue(this, routine, insn.word(4));
for (auto i = 0u; i < type.sizeInComponents; i++)
{
- auto val = src[i];
+ dst.move(i, lhs.Float(i) * rhs.Float(0));
+ }
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitMatrixTimesVector(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
+ auto &type = getType(insn.word(1));
+ auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
+ auto lhs = GenericValue(this, routine, insn.word(3));
+ auto rhs = GenericValue(this, routine, insn.word(4));
+ auto rhsType = getType(rhs.type);
+
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ SIMD::Float v = lhs.Float(i) * rhs.Float(0);
+ for (auto j = 1u; j < rhsType.sizeInComponents; j++)
+ {
+ v += lhs.Float(i + type.sizeInComponents * j) * rhs.Float(j);
+ }
+ dst.move(i, v);
+ }
+
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitVectorTimesMatrix(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
+ auto &type = getType(insn.word(1));
+ auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
+ auto lhs = GenericValue(this, routine, insn.word(3));
+ auto rhs = GenericValue(this, routine, insn.word(4));
+ auto lhsType = getType(lhs.type);
+
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ SIMD::Float v = lhs.Float(0) * rhs.Float(i * lhsType.sizeInComponents);
+ for (auto j = 1u; j < lhsType.sizeInComponents; j++)
+ {
+ v += lhs.Float(j) * rhs.Float(i * lhsType.sizeInComponents + j);
+ }
+ dst.move(i, v);
+ }
+
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitMatrixTimesMatrix(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
+ auto &type = getType(insn.word(1));
+ auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
+ auto lhs = GenericValue(this, routine, insn.word(3));
+ auto rhs = GenericValue(this, routine, insn.word(4));
+
+ auto numColumns = type.definition.word(3);
+ auto numRows = getType(type.definition.word(2)).definition.word(3);
+ auto numAdds = getType(getObject(insn.word(3)).type).definition.word(3);
+
+ for (auto row = 0u; row < numRows; row++)
+ {
+ for (auto col = 0u; col < numColumns; col++)
+ {
+ SIMD::Float v = SIMD::Float(0);
+ for (auto i = 0u; i < numAdds; i++)
+ {
+ v += lhs.Float(i * numRows + row) * rhs.Float(col * numAdds + i);
+ }
+ dst.move(numRows * col + row, v);
+ }
+ }
+
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitOuterProduct(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
+ auto &type = getType(insn.word(1));
+ auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
+ auto lhs = GenericValue(this, routine, insn.word(3));
+ auto rhs = GenericValue(this, routine, insn.word(4));
+ auto &lhsType = getType(lhs.type);
+ auto &rhsType = getType(rhs.type);
+
+ ASSERT(type.definition.opcode() == spv::OpTypeMatrix);
+ ASSERT(lhsType.definition.opcode() == spv::OpTypeVector);
+ ASSERT(rhsType.definition.opcode() == spv::OpTypeVector);
+ ASSERT(getType(lhsType.element).opcode() == spv::OpTypeFloat);
+ ASSERT(getType(rhsType.element).opcode() == spv::OpTypeFloat);
+
+ auto numRows = lhsType.definition.word(3);
+ auto numCols = rhsType.definition.word(3);
+
+ for (auto col = 0u; col < numCols; col++)
+ {
+ for (auto row = 0u; row < numRows; row++)
+ {
+ dst.move(col * numRows + row, lhs.Float(row) * rhs.Float(col));
+ }
+ }
+
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitTranspose(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
+ auto &type = getType(insn.word(1));
+ auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
+ auto mat = GenericValue(this, routine, insn.word(3));
+
+ auto numCols = type.definition.word(3);
+ auto numRows = getType(type.definition.word(2)).sizeInComponents;
+
+ for (auto col = 0u; col < numCols; col++)
+ {
+ for (auto row = 0u; row < numRows; row++)
+ {
+ dst.move(col * numRows + row, mat.Float(row * numCols + col));
+ }
+ }
+
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitUnaryOp(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
+ auto &type = getType(insn.word(1));
+ auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
+ auto src = GenericValue(this, routine, insn.word(3));
+
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
switch (insn.opcode())
{
case spv::OpNot:
case spv::OpLogicalNot: // logical not == bitwise not due to all-bits boolean representation
- dst.emplace(i, As<SIMD::Float>(~As<SIMD::UInt>(val)));
+ dst.move(i, ~src.UInt(i));
+ break;
+ case spv::OpBitFieldInsert:
+ {
+ auto insert = GenericValue(this, routine, insn.word(4)).UInt(i);
+ auto offset = GenericValue(this, routine, insn.word(5)).UInt(0);
+ auto count = GenericValue(this, routine, insn.word(6)).UInt(0);
+ auto one = SIMD::UInt(1);
+ auto v = src.UInt(i);
+ auto mask = Bitmask32(offset + count) ^ Bitmask32(offset);
+ dst.move(i, (v & ~mask) | ((insert << offset) & mask));
break;
+ }
+ case spv::OpBitFieldSExtract:
+ case spv::OpBitFieldUExtract:
+ {
+ auto offset = GenericValue(this, routine, insn.word(4)).UInt(0);
+ auto count = GenericValue(this, routine, insn.word(5)).UInt(0);
+ auto one = SIMD::UInt(1);
+ auto v = src.UInt(i);
+ SIMD::UInt out = (v >> offset) & Bitmask32(count);
+ if (insn.opcode() == spv::OpBitFieldSExtract)
+ {
+ auto sign = out & NthBit32(count - one);
+ auto sext = ~(sign - one);
+ out |= sext;
+ }
+ dst.move(i, out);
+ break;
+ }
+ case spv::OpBitReverse:
+ {
+ // TODO: Add an intrinsic to reactor. Even if there isn't a
+ // single vector instruction, there may be target-dependent
+ // ways to make this faster.
+ // https://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel
+ SIMD::UInt v = src.UInt(i);
+ v = ((v >> 1) & SIMD::UInt(0x55555555)) | ((v & SIMD::UInt(0x55555555)) << 1);
+ v = ((v >> 2) & SIMD::UInt(0x33333333)) | ((v & SIMD::UInt(0x33333333)) << 2);
+ v = ((v >> 4) & SIMD::UInt(0x0F0F0F0F)) | ((v & SIMD::UInt(0x0F0F0F0F)) << 4);
+ v = ((v >> 8) & SIMD::UInt(0x00FF00FF)) | ((v & SIMD::UInt(0x00FF00FF)) << 8);
+ v = (v >> 16) | (v << 16);
+ dst.move(i, v);
+ break;
+ }
+ case spv::OpBitCount:
+ {
+ // TODO: Add an intrinsic to reactor. Even if there isn't a
+ // single vector instruction, there may be target-dependent
+ // ways to make this faster.
+ // https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel
+ auto v = src.UInt(i);
+ SIMD::UInt c = v - ((v >> 1) & SIMD::UInt(0x55555555));
+ c = ((c >> 2) & SIMD::UInt(0x33333333)) + (c & SIMD::UInt(0x33333333));
+ c = ((c >> 4) + c) & SIMD::UInt(0x0F0F0F0F);
+ c = ((c >> 8) + c) & SIMD::UInt(0x00FF00FF);
+ c = ((c >> 16) + c) & SIMD::UInt(0x0000FFFF);
+ dst.move(i, c);
+ break;
+ }
case spv::OpSNegate:
- dst.emplace(i, As<SIMD::Float>(-As<SIMD::Int>(val)));
+ dst.move(i, -src.Int(i));
break;
case spv::OpFNegate:
- dst.emplace(i, -val);
+ dst.move(i, -src.Float(i));
break;
case spv::OpConvertFToU:
- dst.emplace(i, As<SIMD::Float>(SIMD::UInt(val)));
+ dst.move(i, SIMD::UInt(src.Float(i)));
break;
case spv::OpConvertFToS:
- dst.emplace(i, As<SIMD::Float>(SIMD::Int(val)));
+ dst.move(i, SIMD::Int(src.Float(i)));
break;
case spv::OpConvertSToF:
- dst.emplace(i, SIMD::Float(As<SIMD::Int>(val)));
+ dst.move(i, SIMD::Float(src.Int(i)));
break;
case spv::OpConvertUToF:
- dst.emplace(i, SIMD::Float(As<SIMD::UInt>(val)));
+ dst.move(i, SIMD::Float(src.UInt(i)));
break;
case spv::OpBitcast:
- dst.emplace(i, val);
+ dst.move(i, src.Float(i));
+ break;
+ case spv::OpIsInf:
+ dst.move(i, IsInf(src.Float(i)));
+ break;
+ case spv::OpIsNan:
+ dst.move(i, IsNan(src.Float(i)));
+ break;
+ case spv::OpDPdx:
+ case spv::OpDPdxCoarse:
+ // Derivative instructions: FS invocations are laid out like so:
+ // 0 1
+ // 2 3
+ static_assert(SIMD::Width == 4, "All cross-lane instructions will need care when using a different width");
+ dst.move(i, SIMD::Float(Extract(src.Float(i), 1) - Extract(src.Float(i), 0)));
+ break;
+ case spv::OpDPdy:
+ case spv::OpDPdyCoarse:
+ dst.move(i, SIMD::Float(Extract(src.Float(i), 2) - Extract(src.Float(i), 0)));
+ break;
+ case spv::OpFwidth:
+ case spv::OpFwidthCoarse:
+ dst.move(i, SIMD::Float(Abs(Extract(src.Float(i), 1) - Extract(src.Float(i), 0))
+ + Abs(Extract(src.Float(i), 2) - Extract(src.Float(i), 0))));
+ break;
+ case spv::OpDPdxFine:
+ {
+ auto firstRow = Extract(src.Float(i), 1) - Extract(src.Float(i), 0);
+ auto secondRow = Extract(src.Float(i), 3) - Extract(src.Float(i), 2);
+ SIMD::Float v = SIMD::Float(firstRow);
+ v = Insert(v, secondRow, 2);
+ v = Insert(v, secondRow, 3);
+ dst.move(i, v);
+ break;
+ }
+ case spv::OpDPdyFine:
+ {
+ auto firstColumn = Extract(src.Float(i), 2) - Extract(src.Float(i), 0);
+ auto secondColumn = Extract(src.Float(i), 3) - Extract(src.Float(i), 1);
+ SIMD::Float v = SIMD::Float(firstColumn);
+ v = Insert(v, secondColumn, 1);
+ v = Insert(v, secondColumn, 3);
+ dst.move(i, v);
+ break;
+ }
+ case spv::OpFwidthFine:
+ {
+ auto firstRow = Extract(src.Float(i), 1) - Extract(src.Float(i), 0);
+ auto secondRow = Extract(src.Float(i), 3) - Extract(src.Float(i), 2);
+ SIMD::Float dpdx = SIMD::Float(firstRow);
+ dpdx = Insert(dpdx, secondRow, 2);
+ dpdx = Insert(dpdx, secondRow, 3);
+ auto firstColumn = Extract(src.Float(i), 2) - Extract(src.Float(i), 0);
+ auto secondColumn = Extract(src.Float(i), 3) - Extract(src.Float(i), 1);
+ SIMD::Float dpdy = SIMD::Float(firstColumn);
+ dpdy = Insert(dpdy, secondColumn, 1);
+ dpdy = Insert(dpdy, secondColumn, 3);
+ dst.move(i, Abs(dpdx) + Abs(dpdy));
break;
+ }
default:
UNIMPLEMENTED("Unhandled unary operator %s", OpcodeName(insn.opcode()).c_str());
}
}
+
+ return EmitResult::Continue;
}
- void SpirvShader::EmitBinaryOp(InsnIterator insn, SpirvRoutine *routine) const
+ SpirvShader::EmitResult SpirvShader::EmitBinaryOp(InsnIterator insn, EmitState *state) const
{
+ auto routine = state->routine;
auto &type = getType(insn.word(1));
auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
auto &lhsType = getType(getObject(insn.word(3)).type);
- auto srcLHS = GenericValue(this, routine, insn.word(3));
- auto srcRHS = GenericValue(this, routine, insn.word(4));
+ auto lhs = GenericValue(this, routine, insn.word(3));
+ auto rhs = GenericValue(this, routine, insn.word(4));
for (auto i = 0u; i < lhsType.sizeInComponents; i++)
{
- auto lhs = srcLHS[i];
- auto rhs = srcRHS[i];
-
switch (insn.opcode())
{
case spv::OpIAdd:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::Int>(lhs) + As<SIMD::Int>(rhs)));
+ dst.move(i, lhs.Int(i) + rhs.Int(i));
break;
case spv::OpISub:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::Int>(lhs) - As<SIMD::Int>(rhs)));
+ dst.move(i, lhs.Int(i) - rhs.Int(i));
break;
case spv::OpIMul:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::Int>(lhs) * As<SIMD::Int>(rhs)));
+ dst.move(i, lhs.Int(i) * rhs.Int(i));
break;
case spv::OpSDiv:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::Int>(lhs) / As<SIMD::Int>(rhs)));
+ {
+ SIMD::Int a = lhs.Int(i);
+ SIMD::Int b = rhs.Int(i);
+ b = b | CmpEQ(b, SIMD::Int(0)); // prevent divide-by-zero
+ a = a | (CmpEQ(a, SIMD::Int(0x80000000)) & CmpEQ(b, SIMD::Int(-1))); // prevent integer overflow
+ dst.move(i, a / b);
break;
+ }
case spv::OpUDiv:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::UInt>(lhs) / As<SIMD::UInt>(rhs)));
+ {
+ auto zeroMask = As<SIMD::UInt>(CmpEQ(rhs.Int(i), SIMD::Int(0)));
+ dst.move(i, lhs.UInt(i) / (rhs.UInt(i) | zeroMask));
+ break;
+ }
+ case spv::OpSRem:
+ {
+ SIMD::Int a = lhs.Int(i);
+ SIMD::Int b = rhs.Int(i);
+ b = b | CmpEQ(b, SIMD::Int(0)); // prevent divide-by-zero
+ a = a | (CmpEQ(a, SIMD::Int(0x80000000)) & CmpEQ(b, SIMD::Int(-1))); // prevent integer overflow
+ dst.move(i, a % b);
+ break;
+ }
+ case spv::OpSMod:
+ {
+ SIMD::Int a = lhs.Int(i);
+ SIMD::Int b = rhs.Int(i);
+ b = b | CmpEQ(b, SIMD::Int(0)); // prevent divide-by-zero
+ a = a | (CmpEQ(a, SIMD::Int(0x80000000)) & CmpEQ(b, SIMD::Int(-1))); // prevent integer overflow
+ auto mod = a % b;
+ // If a and b have opposite signs, the remainder operation takes
+ // the sign from a but OpSMod is supposed to take the sign of b.
+ // Adding b will ensure that the result has the correct sign and
+ // that it is still congruent to a modulo b.
+ //
+ // See also http://mathforum.org/library/drmath/view/52343.html
+ auto signDiff = CmpNEQ(CmpGE(a, SIMD::Int(0)), CmpGE(b, SIMD::Int(0)));
+ auto fixedMod = mod + (b & CmpNEQ(mod, SIMD::Int(0)) & signDiff);
+ dst.move(i, As<SIMD::Float>(fixedMod));
break;
+ }
case spv::OpUMod:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::UInt>(lhs) % As<SIMD::UInt>(rhs)));
+ {
+ auto zeroMask = As<SIMD::UInt>(CmpEQ(rhs.Int(i), SIMD::Int(0)));
+ dst.move(i, lhs.UInt(i) % (rhs.UInt(i) | zeroMask));
break;
+ }
case spv::OpIEqual:
- dst.emplace(i, As<SIMD::Float>(CmpEQ(As<SIMD::Int>(lhs), As<SIMD::Int>(rhs))));
+ case spv::OpLogicalEqual:
+ dst.move(i, CmpEQ(lhs.Int(i), rhs.Int(i)));
break;
case spv::OpINotEqual:
- dst.emplace(i, As<SIMD::Float>(CmpNEQ(As<SIMD::Int>(lhs), As<SIMD::Int>(rhs))));
+ case spv::OpLogicalNotEqual:
+ dst.move(i, CmpNEQ(lhs.Int(i), rhs.Int(i)));
break;
case spv::OpUGreaterThan:
- dst.emplace(i, As<SIMD::Float>(CmpGT(As<SIMD::UInt>(lhs), As<SIMD::UInt>(rhs))));
+ dst.move(i, CmpGT(lhs.UInt(i), rhs.UInt(i)));
break;
case spv::OpSGreaterThan:
- dst.emplace(i, As<SIMD::Float>(CmpGT(As<SIMD::Int>(lhs), As<SIMD::Int>(rhs))));
+ dst.move(i, CmpGT(lhs.Int(i), rhs.Int(i)));
break;
case spv::OpUGreaterThanEqual:
- dst.emplace(i, As<SIMD::Float>(CmpGE(As<SIMD::UInt>(lhs), As<SIMD::UInt>(rhs))));
+ dst.move(i, CmpGE(lhs.UInt(i), rhs.UInt(i)));
break;
case spv::OpSGreaterThanEqual:
- dst.emplace(i, As<SIMD::Float>(CmpGE(As<SIMD::Int>(lhs), As<SIMD::Int>(rhs))));
+ dst.move(i, CmpGE(lhs.Int(i), rhs.Int(i)));
break;
case spv::OpULessThan:
- dst.emplace(i, As<SIMD::Float>(CmpLT(As<SIMD::UInt>(lhs), As<SIMD::UInt>(rhs))));
+ dst.move(i, CmpLT(lhs.UInt(i), rhs.UInt(i)));
break;
case spv::OpSLessThan:
- dst.emplace(i, As<SIMD::Float>(CmpLT(As<SIMD::Int>(lhs), As<SIMD::Int>(rhs))));
+ dst.move(i, CmpLT(lhs.Int(i), rhs.Int(i)));
break;
case spv::OpULessThanEqual:
- dst.emplace(i, As<SIMD::Float>(CmpLE(As<SIMD::UInt>(lhs), As<SIMD::UInt>(rhs))));
+ dst.move(i, CmpLE(lhs.UInt(i), rhs.UInt(i)));
break;
case spv::OpSLessThanEqual:
- dst.emplace(i, As<SIMD::Float>(CmpLE(As<SIMD::Int>(lhs), As<SIMD::Int>(rhs))));
+ dst.move(i, CmpLE(lhs.Int(i), rhs.Int(i)));
break;
case spv::OpFAdd:
- dst.emplace(i, lhs + rhs);
+ dst.move(i, lhs.Float(i) + rhs.Float(i));
break;
case spv::OpFSub:
- dst.emplace(i, lhs - rhs);
+ dst.move(i, lhs.Float(i) - rhs.Float(i));
+ break;
+ case spv::OpFMul:
+ dst.move(i, lhs.Float(i) * rhs.Float(i));
break;
case spv::OpFDiv:
- dst.emplace(i, lhs / rhs);
+ dst.move(i, lhs.Float(i) / rhs.Float(i));
+ break;
+ case spv::OpFMod:
+ // TODO(b/126873455): inaccurate for values greater than 2^24
+ dst.move(i, lhs.Float(i) - rhs.Float(i) * Floor(lhs.Float(i) / rhs.Float(i)));
+ break;
+ case spv::OpFRem:
+ dst.move(i, lhs.Float(i) % rhs.Float(i));
break;
case spv::OpFOrdEqual:
- dst.emplace(i, As<SIMD::Float>(CmpEQ(lhs, rhs)));
+ dst.move(i, CmpEQ(lhs.Float(i), rhs.Float(i)));
break;
case spv::OpFUnordEqual:
- dst.emplace(i, As<SIMD::Float>(CmpUEQ(lhs, rhs)));
+ dst.move(i, CmpUEQ(lhs.Float(i), rhs.Float(i)));
break;
case spv::OpFOrdNotEqual:
- dst.emplace(i, As<SIMD::Float>(CmpNEQ(lhs, rhs)));
+ dst.move(i, CmpNEQ(lhs.Float(i), rhs.Float(i)));
break;
case spv::OpFUnordNotEqual:
- dst.emplace(i, As<SIMD::Float>(CmpUNEQ(lhs, rhs)));
+ dst.move(i, CmpUNEQ(lhs.Float(i), rhs.Float(i)));
break;
case spv::OpFOrdLessThan:
- dst.emplace(i, As<SIMD::Float>(CmpLT(lhs, rhs)));
+ dst.move(i, CmpLT(lhs.Float(i), rhs.Float(i)));
break;
case spv::OpFUnordLessThan:
- dst.emplace(i, As<SIMD::Float>(CmpULT(lhs, rhs)));
+ dst.move(i, CmpULT(lhs.Float(i), rhs.Float(i)));
break;
case spv::OpFOrdGreaterThan:
- dst.emplace(i, As<SIMD::Float>(CmpGT(lhs, rhs)));
+ dst.move(i, CmpGT(lhs.Float(i), rhs.Float(i)));
break;
case spv::OpFUnordGreaterThan:
- dst.emplace(i, As<SIMD::Float>(CmpUGT(lhs, rhs)));
+ dst.move(i, CmpUGT(lhs.Float(i), rhs.Float(i)));
break;
case spv::OpFOrdLessThanEqual:
- dst.emplace(i, As<SIMD::Float>(CmpLE(lhs, rhs)));
+ dst.move(i, CmpLE(lhs.Float(i), rhs.Float(i)));
break;
case spv::OpFUnordLessThanEqual:
- dst.emplace(i, As<SIMD::Float>(CmpULE(lhs, rhs)));
+ dst.move(i, CmpULE(lhs.Float(i), rhs.Float(i)));
break;
case spv::OpFOrdGreaterThanEqual:
- dst.emplace(i, As<SIMD::Float>(CmpGE(lhs, rhs)));
+ dst.move(i, CmpGE(lhs.Float(i), rhs.Float(i)));
break;
case spv::OpFUnordGreaterThanEqual:
- dst.emplace(i, As<SIMD::Float>(CmpUGE(lhs, rhs)));
+ dst.move(i, CmpUGE(lhs.Float(i), rhs.Float(i)));
break;
case spv::OpShiftRightLogical:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::UInt>(lhs) >> As<SIMD::UInt>(rhs)));
+ dst.move(i, lhs.UInt(i) >> rhs.UInt(i));
break;
case spv::OpShiftRightArithmetic:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::Int>(lhs) >> As<SIMD::Int>(rhs)));
+ dst.move(i, lhs.Int(i) >> rhs.Int(i));
break;
case spv::OpShiftLeftLogical:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::UInt>(lhs) << As<SIMD::UInt>(rhs)));
+ dst.move(i, lhs.UInt(i) << rhs.UInt(i));
break;
case spv::OpBitwiseOr:
case spv::OpLogicalOr:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::UInt>(lhs) | As<SIMD::UInt>(rhs)));
+ dst.move(i, lhs.UInt(i) | rhs.UInt(i));
break;
case spv::OpBitwiseXor:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::UInt>(lhs) ^ As<SIMD::UInt>(rhs)));
+ dst.move(i, lhs.UInt(i) ^ rhs.UInt(i));
break;
case spv::OpBitwiseAnd:
case spv::OpLogicalAnd:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::UInt>(lhs) & As<SIMD::UInt>(rhs)));
+ dst.move(i, lhs.UInt(i) & rhs.UInt(i));
break;
case spv::OpSMulExtended:
// Extended ops: result is a structure containing two members of the same type as lhs & rhs.
// In our flat view then, component i is the i'th component of the first member;
// component i + N is the i'th component of the second member.
- dst.emplace(i, As<SIMD::Float>(As<SIMD::Int>(lhs) * As<SIMD::Int>(rhs)));
- dst.emplace(i + lhsType.sizeInComponents, As<SIMD::Float>(MulHigh(As<SIMD::Int>(lhs), As<SIMD::Int>(rhs))));
+ dst.move(i, lhs.Int(i) * rhs.Int(i));
+ dst.move(i + lhsType.sizeInComponents, MulHigh(lhs.Int(i), rhs.Int(i)));
break;
case spv::OpUMulExtended:
- dst.emplace(i, As<SIMD::Float>(As<SIMD::UInt>(lhs) * As<SIMD::UInt>(rhs)));
- dst.emplace(i + lhsType.sizeInComponents, As<SIMD::Float>(MulHigh(As<SIMD::UInt>(lhs), As<SIMD::UInt>(rhs))));
+ dst.move(i, lhs.UInt(i) * rhs.UInt(i));
+ dst.move(i + lhsType.sizeInComponents, MulHigh(lhs.UInt(i), rhs.UInt(i)));
break;
default:
UNIMPLEMENTED("Unhandled binary operator %s", OpcodeName(insn.opcode()).c_str());
}
}
+
+ return EmitResult::Continue;
}
- void SpirvShader::EmitDot(InsnIterator insn, SpirvRoutine *routine) const
+ SpirvShader::EmitResult SpirvShader::EmitDot(InsnIterator insn, EmitState *state) const
{
+ auto routine = state->routine;
auto &type = getType(insn.word(1));
- assert(type.sizeInComponents == 1);
+ ASSERT(type.sizeInComponents == 1);
auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
auto &lhsType = getType(getObject(insn.word(3)).type);
- auto srcLHS = GenericValue(this, routine, insn.word(3));
- auto srcRHS = GenericValue(this, routine, insn.word(4));
-
- SIMD::Float result = srcLHS[0] * srcRHS[0];
-
- for (auto i = 1u; i < lhsType.sizeInComponents; i++)
- {
- result += srcLHS[i] * srcRHS[i];
- }
+ auto lhs = GenericValue(this, routine, insn.word(3));
+ auto rhs = GenericValue(this, routine, insn.word(4));
- dst.emplace(0, result);
+ dst.move(0, Dot(lhsType.sizeInComponents, lhs, rhs));
+ return EmitResult::Continue;
}
- void SpirvShader::EmitSelect(InsnIterator insn, SpirvRoutine *routine) const
+ SpirvShader::EmitResult SpirvShader::EmitSelect(InsnIterator insn, EmitState *state) const
{
+ auto routine = state->routine;
auto &type = getType(insn.word(1));
auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
- auto srcCond = GenericValue(this, routine, insn.word(3));
- auto srcLHS = GenericValue(this, routine, insn.word(4));
- auto srcRHS = GenericValue(this, routine, insn.word(5));
+ auto cond = GenericValue(this, routine, insn.word(3));
+ auto lhs = GenericValue(this, routine, insn.word(4));
+ auto rhs = GenericValue(this, routine, insn.word(5));
for (auto i = 0u; i < type.sizeInComponents; i++)
{
- auto cond = As<SIMD::Int>(srcCond[i]);
- auto lhs = srcLHS[i];
- auto rhs = srcRHS[i];
- auto out = (cond & As<Int4>(lhs)) | (~cond & As<Int4>(rhs)); // FIXME: IfThenElse()
- dst.emplace(i, As<SIMD::Float>(out));
+ dst.move(i, (cond.Int(i) & lhs.Int(i)) | (~cond.Int(i) & rhs.Int(i))); // FIXME: IfThenElse()
}
+
+ return EmitResult::Continue;
}
- void SpirvShader::EmitExtendedInstruction(InsnIterator insn, SpirvRoutine *routine) const
+ SpirvShader::EmitResult SpirvShader::EmitExtendedInstruction(InsnIterator insn, EmitState *state) const
{
+ auto routine = state->routine;
auto &type = getType(insn.word(1));
auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
auto extInstIndex = static_cast<GLSLstd450>(insn.word(4));
@@ -1619,7 +3141,7 @@ namespace sw
auto src = GenericValue(this, routine, insn.word(5));
for (auto i = 0u; i < type.sizeInComponents; i++)
{
- dst.emplace(i, Abs(src[i]));
+ dst.move(i, Abs(src.Float(i)));
}
break;
}
@@ -1628,13 +3150,1518 @@ namespace sw
auto src = GenericValue(this, routine, insn.word(5));
for (auto i = 0u; i < type.sizeInComponents; i++)
{
- dst.emplace(i, As<SIMD::Float>(Abs(As<SIMD::Int>(src[i]))));
+ dst.move(i, Abs(src.Int(i)));
+ }
+ break;
+ }
+ case GLSLstd450Cross:
+ {
+ auto lhs = GenericValue(this, routine, insn.word(5));
+ auto rhs = GenericValue(this, routine, insn.word(6));
+ dst.move(0, lhs.Float(1) * rhs.Float(2) - rhs.Float(1) * lhs.Float(2));
+ dst.move(1, lhs.Float(2) * rhs.Float(0) - rhs.Float(2) * lhs.Float(0));
+ dst.move(2, lhs.Float(0) * rhs.Float(1) - rhs.Float(0) * lhs.Float(1));
+ break;
+ }
+ case GLSLstd450Floor:
+ {
+ auto src = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Floor(src.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Trunc:
+ {
+ auto src = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Trunc(src.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Ceil:
+ {
+ auto src = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Ceil(src.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Fract:
+ {
+ auto src = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Frac(src.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Round:
+ {
+ auto src = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Round(src.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450RoundEven:
+ {
+ auto src = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ auto x = Round(src.Float(i));
+ // dst = round(src) + ((round(src) < src) * 2 - 1) * (fract(src) == 0.5) * isOdd(round(src));
+ dst.move(i, x + ((SIMD::Float(CmpLT(x, src.Float(i)) & SIMD::Int(1)) * SIMD::Float(2.0f)) - SIMD::Float(1.0f)) *
+ SIMD::Float(CmpEQ(Frac(src.Float(i)), SIMD::Float(0.5f)) & SIMD::Int(1)) * SIMD::Float(Int4(x) & SIMD::Int(1)));
+ }
+ break;
+ }
+ case GLSLstd450FMin:
+ {
+ auto lhs = GenericValue(this, routine, insn.word(5));
+ auto rhs = GenericValue(this, routine, insn.word(6));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Min(lhs.Float(i), rhs.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450FMax:
+ {
+ auto lhs = GenericValue(this, routine, insn.word(5));
+ auto rhs = GenericValue(this, routine, insn.word(6));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Max(lhs.Float(i), rhs.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450SMin:
+ {
+ auto lhs = GenericValue(this, routine, insn.word(5));
+ auto rhs = GenericValue(this, routine, insn.word(6));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Min(lhs.Int(i), rhs.Int(i)));
+ }
+ break;
+ }
+ case GLSLstd450SMax:
+ {
+ auto lhs = GenericValue(this, routine, insn.word(5));
+ auto rhs = GenericValue(this, routine, insn.word(6));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Max(lhs.Int(i), rhs.Int(i)));
+ }
+ break;
+ }
+ case GLSLstd450UMin:
+ {
+ auto lhs = GenericValue(this, routine, insn.word(5));
+ auto rhs = GenericValue(this, routine, insn.word(6));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Min(lhs.UInt(i), rhs.UInt(i)));
+ }
+ break;
+ }
+ case GLSLstd450UMax:
+ {
+ auto lhs = GenericValue(this, routine, insn.word(5));
+ auto rhs = GenericValue(this, routine, insn.word(6));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Max(lhs.UInt(i), rhs.UInt(i)));
+ }
+ break;
+ }
+ case GLSLstd450Step:
+ {
+ auto edge = GenericValue(this, routine, insn.word(5));
+ auto x = GenericValue(this, routine, insn.word(6));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, CmpNLT(x.Float(i), edge.Float(i)) & As<SIMD::Int>(SIMD::Float(1.0f)));
+ }
+ break;
+ }
+ case GLSLstd450SmoothStep:
+ {
+ auto edge0 = GenericValue(this, routine, insn.word(5));
+ auto edge1 = GenericValue(this, routine, insn.word(6));
+ auto x = GenericValue(this, routine, insn.word(7));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ auto tx = Min(Max((x.Float(i) - edge0.Float(i)) /
+ (edge1.Float(i) - edge0.Float(i)), SIMD::Float(0.0f)), SIMD::Float(1.0f));
+ dst.move(i, tx * tx * (Float4(3.0f) - Float4(2.0f) * tx));
+ }
+ break;
+ }
+ case GLSLstd450FMix:
+ {
+ auto x = GenericValue(this, routine, insn.word(5));
+ auto y = GenericValue(this, routine, insn.word(6));
+ auto a = GenericValue(this, routine, insn.word(7));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, a.Float(i) * (y.Float(i) - x.Float(i)) + x.Float(i));
+ }
+ break;
+ }
+ case GLSLstd450FClamp:
+ {
+ auto x = GenericValue(this, routine, insn.word(5));
+ auto minVal = GenericValue(this, routine, insn.word(6));
+ auto maxVal = GenericValue(this, routine, insn.word(7));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Min(Max(x.Float(i), minVal.Float(i)), maxVal.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450SClamp:
+ {
+ auto x = GenericValue(this, routine, insn.word(5));
+ auto minVal = GenericValue(this, routine, insn.word(6));
+ auto maxVal = GenericValue(this, routine, insn.word(7));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Min(Max(x.Int(i), minVal.Int(i)), maxVal.Int(i)));
+ }
+ break;
+ }
+ case GLSLstd450UClamp:
+ {
+ auto x = GenericValue(this, routine, insn.word(5));
+ auto minVal = GenericValue(this, routine, insn.word(6));
+ auto maxVal = GenericValue(this, routine, insn.word(7));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Min(Max(x.UInt(i), minVal.UInt(i)), maxVal.UInt(i)));
+ }
+ break;
+ }
+ case GLSLstd450FSign:
+ {
+ auto src = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ auto neg = As<SIMD::Int>(CmpLT(src.Float(i), SIMD::Float(-0.0f))) & As<SIMD::Int>(SIMD::Float(-1.0f));
+ auto pos = As<SIMD::Int>(CmpNLE(src.Float(i), SIMD::Float(+0.0f))) & As<SIMD::Int>(SIMD::Float(1.0f));
+ dst.move(i, neg | pos);
+ }
+ break;
+ }
+ case GLSLstd450SSign:
+ {
+ auto src = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ auto neg = CmpLT(src.Int(i), SIMD::Int(0)) & SIMD::Int(-1);
+ auto pos = CmpNLE(src.Int(i), SIMD::Int(0)) & SIMD::Int(1);
+ dst.move(i, neg | pos);
+ }
+ break;
+ }
+ case GLSLstd450Reflect:
+ {
+ auto I = GenericValue(this, routine, insn.word(5));
+ auto N = GenericValue(this, routine, insn.word(6));
+
+ SIMD::Float d = Dot(type.sizeInComponents, I, N);
+
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, I.Float(i) - SIMD::Float(2.0f) * d * N.Float(i));
+ }
+ break;
+ }
+ case GLSLstd450Refract:
+ {
+ auto I = GenericValue(this, routine, insn.word(5));
+ auto N = GenericValue(this, routine, insn.word(6));
+ auto eta = GenericValue(this, routine, insn.word(7));
+
+ SIMD::Float d = Dot(type.sizeInComponents, I, N);
+ SIMD::Float k = SIMD::Float(1.0f) - eta.Float(0) * eta.Float(0) * (SIMD::Float(1.0f) - d * d);
+ SIMD::Int pos = CmpNLT(k, SIMD::Float(0.0f));
+ SIMD::Float t = (eta.Float(0) * d + Sqrt(k));
+
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, pos & As<SIMD::Int>(eta.Float(0) * I.Float(i) - t * N.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450FaceForward:
+ {
+ auto N = GenericValue(this, routine, insn.word(5));
+ auto I = GenericValue(this, routine, insn.word(6));
+ auto Nref = GenericValue(this, routine, insn.word(7));
+
+ SIMD::Float d = Dot(type.sizeInComponents, I, Nref);
+ SIMD::Int neg = CmpLT(d, SIMD::Float(0.0f));
+
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ auto n = N.Float(i);
+ dst.move(i, (neg & As<SIMD::Int>(n)) | (~neg & As<SIMD::Int>(-n)));
+ }
+ break;
+ }
+ case GLSLstd450Length:
+ {
+ auto x = GenericValue(this, routine, insn.word(5));
+ SIMD::Float d = Dot(getType(getObject(insn.word(5)).type).sizeInComponents, x, x);
+
+ dst.move(0, Sqrt(d));
+ break;
+ }
+ case GLSLstd450Normalize:
+ {
+ auto x = GenericValue(this, routine, insn.word(5));
+ SIMD::Float d = Dot(getType(getObject(insn.word(5)).type).sizeInComponents, x, x);
+ SIMD::Float invLength = SIMD::Float(1.0f) / Sqrt(d);
+
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, invLength * x.Float(i));
+ }
+ break;
+ }
+ case GLSLstd450Distance:
+ {
+ auto p0 = GenericValue(this, routine, insn.word(5));
+ auto p1 = GenericValue(this, routine, insn.word(6));
+ auto p0Type = getType(p0.type);
+
+ // sqrt(dot(p0-p1, p0-p1))
+ SIMD::Float d = (p0.Float(0) - p1.Float(0)) * (p0.Float(0) - p1.Float(0));
+
+ for (auto i = 1u; i < p0Type.sizeInComponents; i++)
+ {
+ d += (p0.Float(i) - p1.Float(i)) * (p0.Float(i) - p1.Float(i));
+ }
+
+ dst.move(0, Sqrt(d));
+ break;
+ }
+ case GLSLstd450Modf:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ auto ptrId = Object::ID(insn.word(6));
+ auto ptrTy = getType(getObject(ptrId).type);
+ auto ptr = GetPointerToData(ptrId, 0, routine);
+ bool interleavedByLane = IsStorageInterleavedByLane(ptrTy.storageClass);
+
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ auto whole = Floor(val.Float(i));
+ auto frac = Frac(val.Float(i));
+
+ dst.move(i, frac);
+
+ // TODO: Refactor and consolidate with EmitStore.
+ for (int j = 0; j < SIMD::Width; j++)
+ {
+ If(Extract(state->activeLaneMask(), j) != 0)
+ {
+ Int offset = Int(i) + Extract(ptr.offset, j);
+ if (interleavedByLane) { offset = offset * SIMD::Width + j; }
+ Store(Extract(whole, j), &ptr.base[offset], sizeof(float), false, std::memory_order_relaxed);
+ }
+ }
+ }
+ break;
+ }
+ case GLSLstd450ModfStruct:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ auto valTy = getType(val.type);
+
+ for (auto i = 0u; i < valTy.sizeInComponents; i++)
+ {
+ auto whole = Floor(val.Float(i));
+ auto frac = Frac(val.Float(i));
+
+ dst.move(i, frac);
+ dst.move(i + valTy.sizeInComponents, whole);
+ }
+ break;
+ }
+ case GLSLstd450PackSnorm4x8:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ dst.move(0, (SIMD::Int(Round(Min(Max(val.Float(0), SIMD::Float(-1.0f)), SIMD::Float(1.0f)) * SIMD::Float(127.0f))) &
+ SIMD::Int(0xFF)) |
+ ((SIMD::Int(Round(Min(Max(val.Float(1), SIMD::Float(-1.0f)), SIMD::Float(1.0f)) * SIMD::Float(127.0f))) &
+ SIMD::Int(0xFF)) << 8) |
+ ((SIMD::Int(Round(Min(Max(val.Float(2), SIMD::Float(-1.0f)), SIMD::Float(1.0f)) * SIMD::Float(127.0f))) &
+ SIMD::Int(0xFF)) << 16) |
+ ((SIMD::Int(Round(Min(Max(val.Float(3), SIMD::Float(-1.0f)), SIMD::Float(1.0f)) * SIMD::Float(127.0f))) &
+ SIMD::Int(0xFF)) << 24));
+ break;
+ }
+ case GLSLstd450PackUnorm4x8:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ dst.move(0, (SIMD::UInt(Round(Min(Max(val.Float(0), SIMD::Float(0.0f)), SIMD::Float(1.0f)) * SIMD::Float(255.0f)))) |
+ ((SIMD::UInt(Round(Min(Max(val.Float(1), SIMD::Float(0.0f)), SIMD::Float(1.0f)) * SIMD::Float(255.0f)))) << 8) |
+ ((SIMD::UInt(Round(Min(Max(val.Float(2), SIMD::Float(0.0f)), SIMD::Float(1.0f)) * SIMD::Float(255.0f)))) << 16) |
+ ((SIMD::UInt(Round(Min(Max(val.Float(3), SIMD::Float(0.0f)), SIMD::Float(1.0f)) * SIMD::Float(255.0f)))) << 24));
+ break;
+ }
+ case GLSLstd450PackSnorm2x16:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ dst.move(0, (SIMD::Int(Round(Min(Max(val.Float(0), SIMD::Float(-1.0f)), SIMD::Float(1.0f)) * SIMD::Float(32767.0f))) &
+ SIMD::Int(0xFFFF)) |
+ ((SIMD::Int(Round(Min(Max(val.Float(1), SIMD::Float(-1.0f)), SIMD::Float(1.0f)) * SIMD::Float(32767.0f))) &
+ SIMD::Int(0xFFFF)) << 16));
+ break;
+ }
+ case GLSLstd450PackUnorm2x16:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ dst.move(0, (SIMD::UInt(Round(Min(Max(val.Float(0), SIMD::Float(0.0f)), SIMD::Float(1.0f)) * SIMD::Float(65535.0f))) &
+ SIMD::UInt(0xFFFF)) |
+ ((SIMD::UInt(Round(Min(Max(val.Float(1), SIMD::Float(0.0f)), SIMD::Float(1.0f)) * SIMD::Float(65535.0f))) &
+ SIMD::UInt(0xFFFF)) << 16));
+ break;
+ }
+ case GLSLstd450PackHalf2x16:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ dst.move(0, FloatToHalfBits(val.UInt(0), false) | FloatToHalfBits(val.UInt(1), true));
+ break;
+ }
+ case GLSLstd450UnpackSnorm4x8:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ dst.move(0, Min(Max(SIMD::Float(((val.Int(0)<<24) & SIMD::Int(0xFF000000))) * SIMD::Float(1.0f / float(0x7f000000)), SIMD::Float(-1.0f)), SIMD::Float(1.0f)));
+ dst.move(1, Min(Max(SIMD::Float(((val.Int(0)<<16) & SIMD::Int(0xFF000000))) * SIMD::Float(1.0f / float(0x7f000000)), SIMD::Float(-1.0f)), SIMD::Float(1.0f)));
+ dst.move(2, Min(Max(SIMD::Float(((val.Int(0)<<8) & SIMD::Int(0xFF000000))) * SIMD::Float(1.0f / float(0x7f000000)), SIMD::Float(-1.0f)), SIMD::Float(1.0f)));
+ dst.move(3, Min(Max(SIMD::Float(((val.Int(0)) & SIMD::Int(0xFF000000))) * SIMD::Float(1.0f / float(0x7f000000)), SIMD::Float(-1.0f)), SIMD::Float(1.0f)));
+ break;
+ }
+ case GLSLstd450UnpackUnorm4x8:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ dst.move(0, SIMD::Float((val.UInt(0) & SIMD::UInt(0xFF))) * SIMD::Float(1.0f / 255.f));
+ dst.move(1, SIMD::Float(((val.UInt(0)>>8) & SIMD::UInt(0xFF))) * SIMD::Float(1.0f / 255.f));
+ dst.move(2, SIMD::Float(((val.UInt(0)>>16) & SIMD::UInt(0xFF))) * SIMD::Float(1.0f / 255.f));
+ dst.move(3, SIMD::Float(((val.UInt(0)>>24) & SIMD::UInt(0xFF))) * SIMD::Float(1.0f / 255.f));
+ break;
+ }
+ case GLSLstd450UnpackSnorm2x16:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ // clamp(f / 32767.0, -1.0, 1.0)
+ dst.move(0, Min(Max(SIMD::Float(As<SIMD::Int>((val.UInt(0) & SIMD::UInt(0x0000FFFF)) << 16)) *
+ SIMD::Float(1.0f / float(0x7FFF0000)), SIMD::Float(-1.0f)), SIMD::Float(1.0f)));
+ dst.move(1, Min(Max(SIMD::Float(As<SIMD::Int>(val.UInt(0) & SIMD::UInt(0xFFFF0000))) * SIMD::Float(1.0f / float(0x7FFF0000)),
+ SIMD::Float(-1.0f)), SIMD::Float(1.0f)));
+ break;
+ }
+ case GLSLstd450UnpackUnorm2x16:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ // f / 65535.0
+ dst.move(0, SIMD::Float((val.UInt(0) & SIMD::UInt(0x0000FFFF)) << 16) * SIMD::Float(1.0f / float(0xFFFF0000)));
+ dst.move(1, SIMD::Float(val.UInt(0) & SIMD::UInt(0xFFFF0000)) * SIMD::Float(1.0f / float(0xFFFF0000)));
+ break;
+ }
+ case GLSLstd450UnpackHalf2x16:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ dst.move(0, HalfToFloatBits(val.UInt(0) & SIMD::UInt(0x0000FFFF)));
+ dst.move(1, HalfToFloatBits((val.UInt(0) & SIMD::UInt(0xFFFF0000)) >> 16));
+ break;
+ }
+ case GLSLstd450Fma:
+ {
+ auto a = GenericValue(this, routine, insn.word(5));
+ auto b = GenericValue(this, routine, insn.word(6));
+ auto c = GenericValue(this, routine, insn.word(7));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, FMA(a.Float(i), b.Float(i), c.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Frexp:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ auto ptrId = Object::ID(insn.word(6));
+ auto ptrTy = getType(getObject(ptrId).type);
+ auto ptr = GetPointerToData(ptrId, 0, routine);
+ bool interleavedByLane = IsStorageInterleavedByLane(ptrTy.storageClass);
+
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ SIMD::Float significand;
+ SIMD::Int exponent;
+ std::tie(significand, exponent) = Frexp(val.Float(i));
+
+ dst.move(i, significand);
+
+ // TODO: Refactor and consolidate with EmitStore.
+ for (int j = 0; j < SIMD::Width; j++)
+ {
+ auto ptrBase = Pointer<Int>(ptr.base);
+ If(Extract(state->activeLaneMask(), j) != 0)
+ {
+ Int offset = Int(i) + Extract(ptr.offset, j);
+ if (interleavedByLane) { offset = offset * SIMD::Width + j; }
+ Store(Extract(exponent, j), &ptrBase[offset], sizeof(uint32_t), false, std::memory_order_relaxed);
+ }
+ }
+ }
+ break;
+ }
+ case GLSLstd450FrexpStruct:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ auto numComponents = getType(val.type).sizeInComponents;
+ for (auto i = 0u; i < numComponents; i++)
+ {
+ auto significandAndExponent = Frexp(val.Float(i));
+ dst.move(i, significandAndExponent.first);
+ dst.move(i + numComponents, significandAndExponent.second);
+ }
+ break;
+ }
+ case GLSLstd450Ldexp:
+ {
+ auto significand = GenericValue(this, routine, insn.word(5));
+ auto exponent = GenericValue(this, routine, insn.word(6));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ // Assumes IEEE 754
+ auto significandExponent = Exponent(significand.Float(i));
+ auto combinedExponent = exponent.Int(i) + significandExponent;
+ SIMD::UInt v = (significand.UInt(i) & SIMD::UInt(0x807FFFFF)) |
+ (SIMD::UInt(combinedExponent + SIMD::Int(126)) << SIMD::UInt(23));
+ dst.move(i, As<SIMD::Float>(v));
+ }
+ break;
+ }
+ case GLSLstd450Radians:
+ {
+ auto degrees = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, degrees.Float(i) * SIMD::Float(PI / 180.0f));
+ }
+ break;
+ }
+ case GLSLstd450Degrees:
+ {
+ auto radians = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, radians.Float(i) * SIMD::Float(180.0f / PI));
+ }
+ break;
+ }
+ case GLSLstd450Sin:
+ {
+ auto radians = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Sin(radians.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Cos:
+ {
+ auto radians = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Cos(radians.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Tan:
+ {
+ auto radians = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Tan(radians.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Asin:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Asin(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Acos:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Acos(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Atan:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Atan(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Sinh:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Sinh(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Cosh:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Cosh(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Tanh:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Tanh(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Asinh:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Asinh(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Acosh:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Acosh(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Atanh:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Atanh(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Atan2:
+ {
+ auto x = GenericValue(this, routine, insn.word(5));
+ auto y = GenericValue(this, routine, insn.word(6));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Atan2(x.Float(i), y.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Pow:
+ {
+ auto x = GenericValue(this, routine, insn.word(5));
+ auto y = GenericValue(this, routine, insn.word(6));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Pow(x.Float(i), y.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Exp:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Exp(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Log:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Log(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Exp2:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Exp2(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Log2:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Log2(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450Sqrt:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, Sqrt(val.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450InverseSqrt:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ Decorations d;
+ ApplyDecorationsForId(&d, insn.word(5));
+ if (d.RelaxedPrecision)
+ {
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, RcpSqrt_pp(val.Float(i)));
+ }
+ }
+ else
+ {
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, SIMD::Float(1.0f) / Sqrt(val.Float(i)));
+ }
+ }
+ break;
+ }
+ case GLSLstd450Determinant:
+ {
+ auto mat = GenericValue(this, routine, insn.word(5));
+ auto numComponents = getType(mat.type).sizeInComponents;
+ switch (numComponents)
+ {
+ case 4: // 2x2
+ dst.move(0, Determinant(
+ mat.Float(0), mat.Float(1),
+ mat.Float(2), mat.Float(3)));
+ break;
+ case 9: // 3x3
+ dst.move(0, Determinant(
+ mat.Float(0), mat.Float(1), mat.Float(2),
+ mat.Float(3), mat.Float(4), mat.Float(5),
+ mat.Float(6), mat.Float(7), mat.Float(8)));
+ break;
+ case 16: // 4x4
+ dst.move(0, Determinant(
+ mat.Float(0), mat.Float(1), mat.Float(2), mat.Float(3),
+ mat.Float(4), mat.Float(5), mat.Float(6), mat.Float(7),
+ mat.Float(8), mat.Float(9), mat.Float(10), mat.Float(11),
+ mat.Float(12), mat.Float(13), mat.Float(14), mat.Float(15)));
+ break;
+ default:
+ UNREACHABLE("GLSLstd450Determinant can only operate with square matrices. Got %d elements", int(numComponents));
+ }
+ break;
+ }
+ case GLSLstd450MatrixInverse:
+ {
+ auto mat = GenericValue(this, routine, insn.word(5));
+ auto numComponents = getType(mat.type).sizeInComponents;
+ switch (numComponents)
+ {
+ case 4: // 2x2
+ {
+ auto inv = MatrixInverse(
+ mat.Float(0), mat.Float(1),
+ mat.Float(2), mat.Float(3));
+ for (uint32_t i = 0; i < inv.size(); i++)
+ {
+ dst.move(i, inv[i]);
+ }
+ break;
+ }
+ case 9: // 3x3
+ {
+ auto inv = MatrixInverse(
+ mat.Float(0), mat.Float(1), mat.Float(2),
+ mat.Float(3), mat.Float(4), mat.Float(5),
+ mat.Float(6), mat.Float(7), mat.Float(8));
+ for (uint32_t i = 0; i < inv.size(); i++)
+ {
+ dst.move(i, inv[i]);
+ }
+ break;
+ }
+ case 16: // 4x4
+ {
+ auto inv = MatrixInverse(
+ mat.Float(0), mat.Float(1), mat.Float(2), mat.Float(3),
+ mat.Float(4), mat.Float(5), mat.Float(6), mat.Float(7),
+ mat.Float(8), mat.Float(9), mat.Float(10), mat.Float(11),
+ mat.Float(12), mat.Float(13), mat.Float(14), mat.Float(15));
+ for (uint32_t i = 0; i < inv.size(); i++)
+ {
+ dst.move(i, inv[i]);
+ }
+ break;
+ }
+ default:
+ UNREACHABLE("GLSLstd450MatrixInverse can only operate with square matrices. Got %d elements", int(numComponents));
+ }
+ break;
+ }
+ case GLSLstd450IMix:
+ {
+ UNREACHABLE("GLSLstd450IMix has been removed from the specification");
+ break;
+ }
+ case GLSLstd450PackDouble2x32:
+ {
+ // Requires Float64 capability.
+ UNIMPLEMENTED("GLSLstd450PackDouble2x32");
+ break;
+ }
+ case GLSLstd450UnpackDouble2x32:
+ {
+ // Requires Float64 capability.
+ UNIMPLEMENTED("GLSLstd450UnpackDouble2x32");
+ break;
+ }
+ case GLSLstd450FindILsb:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ auto v = val.UInt(i);
+ dst.move(i, Cttz(v, true) | CmpEQ(v, SIMD::UInt(0)));
+ }
+ break;
+ }
+ case GLSLstd450FindSMsb:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ auto v = val.UInt(i) ^ As<SIMD::UInt>(CmpLT(val.Int(i), SIMD::Int(0)));
+ dst.move(i, SIMD::UInt(31) - Ctlz(v, false));
+ }
+ break;
+ }
+ case GLSLstd450FindUMsb:
+ {
+ auto val = GenericValue(this, routine, insn.word(5));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, SIMD::UInt(31) - Ctlz(val.UInt(i), false));
+ }
+ break;
+ }
+ case GLSLstd450InterpolateAtCentroid:
+ {
+ // Requires sampleRateShading / InterpolationFunction capability.
+ UNIMPLEMENTED("GLSLstd450InterpolateAtCentroid");
+ break;
+ }
+ case GLSLstd450InterpolateAtSample:
+ {
+ // Requires sampleRateShading / InterpolationFunction capability.
+ UNIMPLEMENTED("GLSLstd450InterpolateAtSample");
+ break;
+ }
+ case GLSLstd450InterpolateAtOffset:
+ {
+ // Requires sampleRateShading / InterpolationFunction capability.
+ UNIMPLEMENTED("GLSLstd450InterpolateAtOffset");
+ break;
+ }
+ case GLSLstd450NMin:
+ {
+ auto x = GenericValue(this, routine, insn.word(5));
+ auto y = GenericValue(this, routine, insn.word(6));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, NMin(x.Float(i), y.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450NMax:
+ {
+ auto x = GenericValue(this, routine, insn.word(5));
+ auto y = GenericValue(this, routine, insn.word(6));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, NMax(x.Float(i), y.Float(i)));
+ }
+ break;
+ }
+ case GLSLstd450NClamp:
+ {
+ auto x = GenericValue(this, routine, insn.word(5));
+ auto minVal = GenericValue(this, routine, insn.word(6));
+ auto maxVal = GenericValue(this, routine, insn.word(7));
+ for (auto i = 0u; i < type.sizeInComponents; i++)
+ {
+ auto clamp = NMin(NMax(x.Float(i), minVal.Float(i)), maxVal.Float(i));
+ dst.move(i, clamp);
}
break;
}
default:
UNIMPLEMENTED("Unhandled ExtInst %d", extInstIndex);
+ break;
+ }
+
+ return EmitResult::Continue;
+ }
+
+ std::memory_order SpirvShader::MemoryOrder(spv::MemorySemanticsMask memorySemantics)
+ {
+ switch(memorySemantics)
+ {
+ case spv::MemorySemanticsMaskNone: return std::memory_order_relaxed;
+ case spv::MemorySemanticsAcquireMask: return std::memory_order_acquire;
+ case spv::MemorySemanticsReleaseMask: return std::memory_order_release;
+ case spv::MemorySemanticsAcquireReleaseMask: return std::memory_order_acq_rel;
+ case spv::MemorySemanticsSequentiallyConsistentMask: return std::memory_order_acq_rel; // Vulkan 1.1: "SequentiallyConsistent is treated as AcquireRelease"
+ default:
+ UNREACHABLE("MemorySemanticsMask %x", memorySemantics);
+ return std::memory_order_acq_rel;
+ }
+ }
+
+ SIMD::Float SpirvShader::Dot(unsigned numComponents, GenericValue const & x, GenericValue const & y) const
+ {
+ SIMD::Float d = x.Float(0) * y.Float(0);
+
+ for (auto i = 1u; i < numComponents; i++)
+ {
+ d += x.Float(i) * y.Float(i);
+ }
+
+ return d;
+ }
+
+ SIMD::UInt SpirvShader::FloatToHalfBits(SIMD::UInt floatBits, bool storeInUpperBits) const
+ {
+ static const uint32_t mask_sign = 0x80000000u;
+ static const uint32_t mask_round = ~0xfffu;
+ static const uint32_t c_f32infty = 255 << 23;
+ static const uint32_t c_magic = 15 << 23;
+ static const uint32_t c_nanbit = 0x200;
+ static const uint32_t c_infty_as_fp16 = 0x7c00;
+ static const uint32_t c_clamp = (31 << 23) - 0x1000;
+
+ SIMD::UInt justsign = SIMD::UInt(mask_sign) & floatBits;
+ SIMD::UInt absf = floatBits ^ justsign;
+ SIMD::UInt b_isnormal = CmpNLE(SIMD::UInt(c_f32infty), absf);
+
+ // Note: this version doesn't round to the nearest even in case of a tie as defined by IEEE 754-2008, it rounds to +inf
+ // instead of nearest even, since that's fine for GLSL ES 3.0's needs (see section 2.1.1 Floating-Point Computation)
+ SIMD::UInt joined = ((((As<SIMD::UInt>(Min(As<SIMD::Float>(absf & SIMD::UInt(mask_round)) * As<SIMD::Float>(SIMD::UInt(c_magic)),
+ As<SIMD::Float>(SIMD::UInt(c_clamp))))) - SIMD::UInt(mask_round)) >> 13) & b_isnormal) |
+ ((b_isnormal ^ SIMD::UInt(0xFFFFFFFF)) & ((CmpNLE(absf, SIMD::UInt(c_f32infty)) & SIMD::UInt(c_nanbit)) |
+ SIMD::UInt(c_infty_as_fp16)));
+
+ return storeInUpperBits ? ((joined << 16) | justsign) : joined | (justsign >> 16);
+ }
+
+ SIMD::UInt SpirvShader::HalfToFloatBits(SIMD::UInt halfBits) const
+ {
+ static const uint32_t mask_nosign = 0x7FFF;
+ static const uint32_t magic = (254 - 15) << 23;
+ static const uint32_t was_infnan = 0x7BFF;
+ static const uint32_t exp_infnan = 255 << 23;
+
+ SIMD::UInt expmant = halfBits & SIMD::UInt(mask_nosign);
+ return As<SIMD::UInt>(As<SIMD::Float>(expmant << 13) * As<SIMD::Float>(SIMD::UInt(magic))) |
+ ((halfBits ^ SIMD::UInt(expmant)) << 16) |
+ (CmpNLE(As<SIMD::UInt>(expmant), SIMD::UInt(was_infnan)) & SIMD::UInt(exp_infnan));
+ }
+
+ std::pair<SIMD::Float, SIMD::Int> SpirvShader::Frexp(RValue<SIMD::Float> val) const
+ {
+ // Assumes IEEE 754
+ auto v = As<SIMD::UInt>(val);
+ auto isNotZero = CmpNEQ(v & SIMD::UInt(0x7FFFFFFF), SIMD::UInt(0));
+ auto zeroSign = v & SIMD::UInt(0x80000000) & ~isNotZero;
+ auto significand = As<SIMD::Float>((((v & SIMD::UInt(0x807FFFFF)) | SIMD::UInt(0x3F000000)) & isNotZero) | zeroSign);
+ auto exponent = Exponent(val) & SIMD::Int(isNotZero);
+ return std::make_pair(significand, exponent);
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitAny(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
+ auto &type = getType(insn.word(1));
+ ASSERT(type.sizeInComponents == 1);
+ auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
+ auto &srcType = getType(getObject(insn.word(3)).type);
+ auto src = GenericValue(this, routine, insn.word(3));
+
+ SIMD::UInt result = src.UInt(0);
+
+ for (auto i = 1u; i < srcType.sizeInComponents; i++)
+ {
+ result |= src.UInt(i);
}
+
+ dst.move(0, result);
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitAll(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
+ auto &type = getType(insn.word(1));
+ ASSERT(type.sizeInComponents == 1);
+ auto &dst = routine->createIntermediate(insn.word(2), type.sizeInComponents);
+ auto &srcType = getType(getObject(insn.word(3)).type);
+ auto src = GenericValue(this, routine, insn.word(3));
+
+ SIMD::UInt result = src.UInt(0);
+
+ for (auto i = 1u; i < srcType.sizeInComponents; i++)
+ {
+ result &= src.UInt(i);
+ }
+
+ dst.move(0, result);
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitBranch(InsnIterator insn, EmitState *state) const
+ {
+ auto target = Block::ID(insn.word(1));
+ auto edge = Block::Edge{state->currentBlock, target};
+ state->edgeActiveLaneMasks.emplace(edge, state->activeLaneMask());
+ return EmitResult::Terminator;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitBranchConditional(InsnIterator insn, EmitState *state) const
+ {
+ auto block = getBlock(state->currentBlock);
+ ASSERT(block.branchInstruction == insn);
+
+ auto condId = Object::ID(block.branchInstruction.word(1));
+ auto trueBlockId = Block::ID(block.branchInstruction.word(2));
+ auto falseBlockId = Block::ID(block.branchInstruction.word(3));
+
+ auto cond = GenericValue(this, state->routine, condId);
+ ASSERT_MSG(getType(cond.type).sizeInComponents == 1, "Condition must be a Boolean type scalar");
+
+ // TODO: Optimize for case where all lanes take same path.
+
+ state->addOutputActiveLaneMaskEdge(trueBlockId, cond.Int(0));
+ state->addOutputActiveLaneMaskEdge(falseBlockId, ~cond.Int(0));
+
+ return EmitResult::Terminator;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitSwitch(InsnIterator insn, EmitState *state) const
+ {
+ auto block = getBlock(state->currentBlock);
+ ASSERT(block.branchInstruction == insn);
+
+ auto selId = Object::ID(block.branchInstruction.word(1));
+
+ auto sel = GenericValue(this, state->routine, selId);
+ ASSERT_MSG(getType(sel.type).sizeInComponents == 1, "Selector must be a scalar");
+
+ auto numCases = (block.branchInstruction.wordCount() - 3) / 2;
+
+ // TODO: Optimize for case where all lanes take same path.
+
+ SIMD::Int defaultLaneMask = state->activeLaneMask();
+
+ // Gather up the case label matches and calculate defaultLaneMask.
+ std::vector<RValue<SIMD::Int>> caseLabelMatches;
+ caseLabelMatches.reserve(numCases);
+ for (uint32_t i = 0; i < numCases; i++)
+ {
+ auto label = block.branchInstruction.word(i * 2 + 3);
+ auto caseBlockId = Block::ID(block.branchInstruction.word(i * 2 + 4));
+ auto caseLabelMatch = CmpEQ(sel.Int(0), SIMD::Int(label));
+ state->addOutputActiveLaneMaskEdge(caseBlockId, caseLabelMatch);
+ defaultLaneMask &= ~caseLabelMatch;
+ }
+
+ auto defaultBlockId = Block::ID(block.branchInstruction.word(2));
+ state->addOutputActiveLaneMaskEdge(defaultBlockId, defaultLaneMask);
+
+ return EmitResult::Terminator;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitUnreachable(InsnIterator insn, EmitState *state) const
+ {
+ // TODO: Log something in this case?
+ state->setActiveLaneMask(SIMD::Int(0));
+ return EmitResult::Terminator;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitReturn(InsnIterator insn, EmitState *state) const
+ {
+ state->setActiveLaneMask(SIMD::Int(0));
+ return EmitResult::Terminator;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitKill(InsnIterator insn, EmitState *state) const
+ {
+ state->routine->killMask |= SignMask(state->activeLaneMask());
+ state->setActiveLaneMask(SIMD::Int(0));
+ return EmitResult::Terminator;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitPhi(InsnIterator insn, EmitState *state) const
+ {
+ auto routine = state->routine;
+ auto typeId = Type::ID(insn.word(1));
+ auto type = getType(typeId);
+ auto objectId = Object::ID(insn.word(2));
+ auto currentBlock = getBlock(state->currentBlock);
+
+ auto tmp = std::unique_ptr<SIMD::Int[]>(new SIMD::Int[type.sizeInComponents]);
+
+ bool first = true;
+ for (uint32_t w = 3; w < insn.wordCount(); w += 2)
+ {
+ auto varId = Object::ID(insn.word(w + 0));
+ auto blockId = Block::ID(insn.word(w + 1));
+
+ if (currentBlock.ins.count(blockId) == 0)
+ {
+ continue; // In is unreachable. Ignore.
+ }
+
+ auto in = GenericValue(this, routine, varId);
+ auto mask = GetActiveLaneMaskEdge(state, blockId, state->currentBlock);
+
+ for (uint32_t i = 0; i < type.sizeInComponents; i++)
+ {
+ auto inMasked = in.Int(i) & mask;
+ tmp[i] = first ? inMasked : (tmp[i] | inMasked);
+ }
+ first = false;
+ }
+
+ auto &dst = routine->createIntermediate(objectId, type.sizeInComponents);
+ for(uint32_t i = 0; i < type.sizeInComponents; i++)
+ {
+ dst.move(i, tmp[i]);
+ }
+
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitImageSampleImplicitLod(InsnIterator insn, EmitState *state) const
+ {
+ Type::ID resultTypeId = insn.word(1);
+ Object::ID resultId = insn.word(2);
+ Object::ID sampledImageId = insn.word(3);
+ Object::ID coordinateId = insn.word(4);
+ auto &resultType = getType(resultTypeId);
+
+ auto &result = state->routine->createIntermediate(resultId, resultType.sizeInComponents);
+ auto &sampledImage = state->routine->getPointer(sampledImageId);
+ auto coordinate = GenericValue(this, state->routine, coordinateId);
+
+ Pointer<Byte> constants; // FIXME(b/129523279)
+
+ const DescriptorDecorations &d = descriptorDecorations.at(sampledImageId);
+ uint32_t arrayIndex = 0; // TODO(b/129523279)
+ auto setLayout = state->routine->pipelineLayout->getDescriptorSetLayout(d.DescriptorSet);
+ size_t bindingOffset = setLayout->getBindingOffset(d.Binding, arrayIndex);
+
+ auto descriptor = state->routine->descriptorSets[d.DescriptorSet] + bindingOffset; // vk::SampledImageDescriptor*
+ auto sampler = *Pointer<Pointer<Byte>>(descriptor + OFFSET(vk::SampledImageDescriptor, sampler)); // vk::Sampler*
+ auto imageView = *Pointer<Pointer<Byte>>(descriptor + OFFSET(vk::SampledImageDescriptor, imageView)); // vk::ImageView*
+
+ auto samplerFunc = Call(getImageSampler, imageView, sampler);
+
+ Array<SIMD::Float> in(2);
+ in[0] = coordinate.Float(0);
+ in[1] = coordinate.Float(1);
+
+ Array<SIMD::Float> out(4);
+ Call<ImageSampler>(samplerFunc, sampledImage, &in[0], &out[0]);
+
+ for (int i = 0; i < 4; i++) { result.move(i, out[i]); }
+
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitImageQuerySize(InsnIterator insn, EmitState *state) const
+ {
+ auto &resultType = getType(Type::ID(insn.word(1)));
+ auto imageId = Object::ID(insn.word(3));
+ auto &image = getObject(imageId);
+ auto &imageType = getType(image.type);
+ Object::ID resultId = insn.word(2);
+
+ ASSERT(imageType.definition.opcode() == spv::OpTypeImage);
+ bool isArrayed = imageType.definition.word(5) != 0;
+ bool isCubeMap = imageType.definition.word(3) == spv::DimCube;
+
+ const DescriptorDecorations &d = descriptorDecorations.at(imageId);
+ uint32_t arrayIndex = 0; // TODO(b/129523279)
+ auto setLayout = state->routine->pipelineLayout->getDescriptorSetLayout(d.DescriptorSet);
+ size_t bindingOffset = setLayout->getBindingOffset(d.Binding, arrayIndex);
+ auto &bindingLayout = setLayout->getBindingLayout(d.Binding);
+
+ Pointer<Byte> set = state->routine->descriptorSets[d.DescriptorSet]; // DescriptorSet*
+ Pointer<Byte> binding = Pointer<Byte>(set + bindingOffset);
+
+ auto &dst = state->routine->createIntermediate(resultId, resultType.sizeInComponents);
+
+ switch (bindingLayout.descriptorType)
+ {
+ case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
+ case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
+ {
+ Pointer<Byte> desc = binding; // StorageImageDescriptor*
+ Pointer<Int> extent = desc + OFFSET(vk::StorageImageDescriptor, extent); // int[3]*
+ auto dimensions = resultType.sizeInComponents - (isArrayed ? 1 : 0);
+ for (uint32_t i = 0; i < dimensions; i++)
+ {
+ dst.move(i, SIMD::Int(extent[i]));
+ }
+ if (isArrayed)
+ {
+ auto arrayLayers = *Pointer<Int>(desc + OFFSET(vk::StorageImageDescriptor, arrayLayers)); // uint32_t
+ auto numElements = isCubeMap ? arrayLayers / 6 : arrayLayers;
+ dst.move(dimensions, SIMD::Int(numElements));
+ }
+ break;
+ }
+ default:
+ UNIMPLEMENTED("EmitImageQuerySize image descriptorType: %d", int(bindingLayout.descriptorType));
+ }
+
+ return EmitResult::Continue;
+ }
+
+ SIMD::Int SpirvShader::GetTexelOffset(GenericValue const & coordinate, Type const & imageType, Pointer<Byte> descriptor, int texelSize) const
+ {
+ // returns a (lane-divergent) byte offset to a texel within a storage image.
+ bool isArrayed = imageType.definition.word(5) != 0;
+ int dims = getType(coordinate.type).sizeInComponents - (isArrayed ? 1 : 0);
+
+ SIMD::Int texelOffset = coordinate.Int(0) * SIMD::Int(texelSize);
+ if (dims > 1)
+ {
+ texelOffset += coordinate.Int(1) * SIMD::Int(
+ *Pointer<Int>(descriptor + OFFSET(vk::StorageImageDescriptor, rowPitchBytes)));
+ }
+ if (dims > 2)
+ {
+ texelOffset += coordinate.Int(2) * SIMD::Int(
+ *Pointer<Int>(descriptor + OFFSET(vk::StorageImageDescriptor, slicePitchBytes)));
+ }
+ if (isArrayed)
+ {
+ texelOffset += coordinate.Int(dims) * SIMD::Int(
+ *Pointer<Int>(descriptor + OFFSET(vk::StorageImageDescriptor, slicePitchBytes)));
+ }
+
+ return texelOffset;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitImageRead(InsnIterator insn, EmitState *state) const
+ {
+ auto &resultType = getType(Type::ID(insn.word(1)));
+ auto imageId = Object::ID(insn.word(3));
+ auto &image = getObject(imageId);
+ auto &imageType = getType(image.type);
+ Object::ID resultId = insn.word(2);
+
+ // Not handling any image operands yet.
+ ASSERT(insn.wordCount() == 5);
+
+ ASSERT(imageType.definition.opcode() == spv::OpTypeImage);
+
+ const DescriptorDecorations &d = descriptorDecorations.at(imageId);
+ uint32_t arrayIndex = 0; // TODO(b/129523279)
+ auto setLayout = state->routine->pipelineLayout->getDescriptorSetLayout(d.DescriptorSet);
+ size_t bindingOffset = setLayout->getBindingOffset(d.Binding, arrayIndex);
+
+ auto coordinate = GenericValue(this, state->routine, insn.word(4));
+
+ Pointer<Byte> set = state->routine->descriptorSets[d.DescriptorSet]; // DescriptorSet*
+ Pointer<Byte> binding = Pointer<Byte>(set + bindingOffset);
+ Pointer<Byte> imageBase = *Pointer<Pointer<Byte>>(binding + OFFSET(vk::StorageImageDescriptor, ptr));
+
+ auto &dst = state->routine->createIntermediate(resultId, resultType.sizeInComponents);
+
+ SIMD::Int packed[4];
+ auto numPackedElements = 0u;
+ int texelSize = 0;
+ auto format = static_cast<spv::ImageFormat>(imageType.definition.word(8));
+ switch (format)
+ {
+ case spv::ImageFormatRgba32f:
+ case spv::ImageFormatRgba32i:
+ case spv::ImageFormatRgba32ui:
+ texelSize = 16;
+ numPackedElements = 4;
+ break;
+ case spv::ImageFormatR32f:
+ case spv::ImageFormatR32i:
+ case spv::ImageFormatR32ui:
+ texelSize = 4;
+ numPackedElements = 1;
+ break;
+ case spv::ImageFormatRgba8:
+ texelSize = 4;
+ numPackedElements = 1;
+ break;
+ case spv::ImageFormatRgba8Snorm:
+ texelSize = 4;
+ numPackedElements = 1;
+ break;
+ case spv::ImageFormatRgba8i:
+ case spv::ImageFormatRgba8ui:
+ texelSize = 4;
+ numPackedElements = 1;
+ break;
+ case spv::ImageFormatRgba16f:
+ texelSize = 8;
+ numPackedElements = 2;
+ break;
+ case spv::ImageFormatRgba16i:
+ case spv::ImageFormatRgba16ui:
+ texelSize = 8;
+ numPackedElements = 2;
+ break;
+ default:
+ UNIMPLEMENTED("spv::ImageFormat %u", format);
+ }
+
+ SIMD::Int texelOffset = GetTexelOffset(coordinate, imageType, binding, texelSize);
+
+ for (auto i = 0u; i < numPackedElements; i++)
+ {
+ for (int j = 0; j < 4; j++)
+ {
+ If(Extract(state->activeLaneMask(), j) != 0)
+ {
+ Int offset = Int(sizeof(float) * i) + Extract(texelOffset, j);
+ packed[i] = Insert(packed[i], Load(RValue<Pointer<Int>>(&imageBase[offset]), sizeof(uint32_t), false,
+ std::memory_order_relaxed), j);
+ }
+ }
+ }
+
+ switch(format)
+ {
+ case spv::ImageFormatRgba32f:
+ case spv::ImageFormatRgba32i:
+ case spv::ImageFormatRgba32ui:
+ dst.move(0, packed[0]);
+ dst.move(1, packed[1]);
+ dst.move(2, packed[2]);
+ dst.move(3, packed[3]);
+ break;
+ case spv::ImageFormatR32i:
+ case spv::ImageFormatR32ui:
+ dst.move(0, packed[0]);
+ // Fill remaining channels with 0,0,1 (of the correct type)
+ dst.move(1, SIMD::Int(0));
+ dst.move(2, SIMD::Int(0));
+ dst.move(3, SIMD::Int(1));
+ break;
+ case spv::ImageFormatR32f:
+ dst.move(0, packed[0]);
+ // Fill remaining channels with 0,0,1 (of the correct type)
+ dst.move(1, SIMD::Float(0));
+ dst.move(2, SIMD::Float(0));
+ dst.move(3, SIMD::Float(1));
+ break;
+ case spv::ImageFormatRgba16i:
+ dst.move(0, (packed[0] << 16) >> 16);
+ dst.move(1, (packed[0]) >> 16);
+ dst.move(2, (packed[1] << 16) >> 16);
+ dst.move(3, (packed[1]) >> 16);
+ break;
+ case spv::ImageFormatRgba16ui:
+ dst.move(0, packed[0] & SIMD::Int(0xffff));
+ dst.move(1, (packed[0] >> 16) & SIMD::Int(0xffff));
+ dst.move(2, packed[1] & SIMD::Int(0xffff));
+ dst.move(3, (packed[1] >> 16) & SIMD::Int(0xffff));
+ break;
+ case spv::ImageFormatRgba16f:
+ dst.move(0, HalfToFloatBits(As<SIMD::UInt>(packed[0]) & SIMD::UInt(0x0000FFFF)));
+ dst.move(1, HalfToFloatBits((As<SIMD::UInt>(packed[0]) & SIMD::UInt(0xFFFF0000)) >> 16));
+ dst.move(2, HalfToFloatBits(As<SIMD::UInt>(packed[1]) & SIMD::UInt(0x0000FFFF)));
+ dst.move(3, HalfToFloatBits((As<SIMD::UInt>(packed[1]) & SIMD::UInt(0xFFFF0000)) >> 16));
+ break;
+ case spv::ImageFormatRgba8Snorm:
+ dst.move(0, Min(Max(SIMD::Float(((packed[0]<<24) & SIMD::Int(0xFF000000))) * SIMD::Float(1.0f / float(0x7f000000)), SIMD::Float(-1.0f)), SIMD::Float(1.0f)));
+ dst.move(1, Min(Max(SIMD::Float(((packed[0]<<16) & SIMD::Int(0xFF000000))) * SIMD::Float(1.0f / float(0x7f000000)), SIMD::Float(-1.0f)), SIMD::Float(1.0f)));
+ dst.move(2, Min(Max(SIMD::Float(((packed[0]<<8) & SIMD::Int(0xFF000000))) * SIMD::Float(1.0f / float(0x7f000000)), SIMD::Float(-1.0f)), SIMD::Float(1.0f)));
+ dst.move(3, Min(Max(SIMD::Float(((packed[0]) & SIMD::Int(0xFF000000))) * SIMD::Float(1.0f / float(0x7f000000)), SIMD::Float(-1.0f)), SIMD::Float(1.0f)));
+ break;
+ case spv::ImageFormatRgba8:
+ dst.move(0, SIMD::Float((packed[0] & SIMD::Int(0xFF))) * SIMD::Float(1.0f / 255.f));
+ dst.move(1, SIMD::Float(((packed[0]>>8) & SIMD::Int(0xFF))) * SIMD::Float(1.0f / 255.f));
+ dst.move(2, SIMD::Float(((packed[0]>>16) & SIMD::Int(0xFF))) * SIMD::Float(1.0f / 255.f));
+ dst.move(3, SIMD::Float(((packed[0]>>24) & SIMD::Int(0xFF))) * SIMD::Float(1.0f / 255.f));
+ break;
+ case spv::ImageFormatRgba8ui:
+ dst.move(0, (As<SIMD::UInt>(packed[0]) & SIMD::UInt(0xFF)));
+ dst.move(1, ((As<SIMD::UInt>(packed[0])>>8) & SIMD::UInt(0xFF)));
+ dst.move(2, ((As<SIMD::UInt>(packed[0])>>16) & SIMD::UInt(0xFF)));
+ dst.move(3, ((As<SIMD::UInt>(packed[0])>>24) & SIMD::UInt(0xFF)));
+ break;
+ case spv::ImageFormatRgba8i:
+ dst.move(0, (packed[0] << 24) >> 24);
+ dst.move(1, (packed[0] << 16) >> 24);
+ dst.move(2, (packed[0] << 8) >> 24);
+ dst.move(3, (packed[0]) >> 24);
+ break;
+ default:
+ UNIMPLEMENTED("");
+ }
+
+ return EmitResult::Continue;
+ }
+
+ SpirvShader::EmitResult SpirvShader::EmitImageWrite(InsnIterator insn, EmitState *state) const
+ {
+ auto imageId = Object::ID(insn.word(1));
+ auto &image = getObject(imageId);
+ auto &imageType = getType(image.type);
+
+ ASSERT(imageType.definition.opcode() == spv::OpTypeImage);
+
+ // Not handling any image operands yet.
+ ASSERT(insn.wordCount() == 4);
+
+ const DescriptorDecorations &d = descriptorDecorations.at(imageId);
+ uint32_t arrayIndex = 0; // TODO(b/129523279)
+ auto setLayout = state->routine->pipelineLayout->getDescriptorSetLayout(d.DescriptorSet);
+ size_t bindingOffset = setLayout->getBindingOffset(d.Binding, arrayIndex);
+
+ auto coordinate = GenericValue(this, state->routine, insn.word(2));
+ auto texel = GenericValue(this, state->routine, insn.word(3));
+
+ Pointer<Byte> set = state->routine->descriptorSets[d.DescriptorSet]; // DescriptorSet*
+ Pointer<Byte> binding = Pointer<Byte>(set + bindingOffset); // StorageImageDescriptor*
+ Pointer<Byte> imageBase = *Pointer<Pointer<Byte>>(binding + OFFSET(vk::StorageImageDescriptor, ptr));
+
+ SIMD::Int packed[4];
+ auto numPackedElements = 0u;
+ int texelSize = 0;
+ auto format = static_cast<spv::ImageFormat>(imageType.definition.word(8));
+ switch (format)
+ {
+ case spv::ImageFormatRgba32f:
+ case spv::ImageFormatRgba32i:
+ case spv::ImageFormatRgba32ui:
+ texelSize = 16;
+ packed[0] = texel.Int(0);
+ packed[1] = texel.Int(1);
+ packed[2] = texel.Int(2);
+ packed[3] = texel.Int(3);
+ numPackedElements = 4;
+ break;
+ case spv::ImageFormatR32f:
+ case spv::ImageFormatR32i:
+ case spv::ImageFormatR32ui:
+ texelSize = 4;
+ packed[0] = texel.Int(0);
+ numPackedElements = 1;
+ break;
+ case spv::ImageFormatRgba8:
+ texelSize = 4;
+ packed[0] = (SIMD::UInt(Round(Min(Max(texel.Float(0), SIMD::Float(0.0f)), SIMD::Float(1.0f)) * SIMD::Float(255.0f)))) |
+ ((SIMD::UInt(Round(Min(Max(texel.Float(1), SIMD::Float(0.0f)), SIMD::Float(1.0f)) * SIMD::Float(255.0f)))) << 8) |
+ ((SIMD::UInt(Round(Min(Max(texel.Float(2), SIMD::Float(0.0f)), SIMD::Float(1.0f)) * SIMD::Float(255.0f)))) << 16) |
+ ((SIMD::UInt(Round(Min(Max(texel.Float(3), SIMD::Float(0.0f)), SIMD::Float(1.0f)) * SIMD::Float(255.0f)))) << 24);
+ numPackedElements = 1;
+ break;
+ case spv::ImageFormatRgba8Snorm:
+ texelSize = 4;
+ packed[0] = (SIMD::Int(Round(Min(Max(texel.Float(0), SIMD::Float(-1.0f)), SIMD::Float(1.0f)) * SIMD::Float(127.0f))) &
+ SIMD::Int(0xFF)) |
+ ((SIMD::Int(Round(Min(Max(texel.Float(1), SIMD::Float(-1.0f)), SIMD::Float(1.0f)) * SIMD::Float(127.0f))) &
+ SIMD::Int(0xFF)) << 8) |
+ ((SIMD::Int(Round(Min(Max(texel.Float(2), SIMD::Float(-1.0f)), SIMD::Float(1.0f)) * SIMD::Float(127.0f))) &
+ SIMD::Int(0xFF)) << 16) |
+ ((SIMD::Int(Round(Min(Max(texel.Float(3), SIMD::Float(-1.0f)), SIMD::Float(1.0f)) * SIMD::Float(127.0f))) &
+ SIMD::Int(0xFF)) << 24);
+ numPackedElements = 1;
+ break;
+ case spv::ImageFormatRgba8i:
+ case spv::ImageFormatRgba8ui:
+ texelSize = 4;
+ packed[0] = (SIMD::UInt(texel.UInt(0) & SIMD::UInt(0xff))) |
+ (SIMD::UInt(texel.UInt(1) & SIMD::UInt(0xff)) << 8) |
+ (SIMD::UInt(texel.UInt(2) & SIMD::UInt(0xff)) << 16) |
+ (SIMD::UInt(texel.UInt(3) & SIMD::UInt(0xff)) << 24);
+ numPackedElements = 1;
+ break;
+ case spv::ImageFormatRgba16f:
+ texelSize = 8;
+ packed[0] = FloatToHalfBits(texel.UInt(0), false) | FloatToHalfBits(texel.UInt(1), true);
+ packed[1] = FloatToHalfBits(texel.UInt(2), false) | FloatToHalfBits(texel.UInt(3), true);
+ numPackedElements = 2;
+ break;
+ case spv::ImageFormatRgba16i:
+ case spv::ImageFormatRgba16ui:
+ texelSize = 8;
+ packed[0] = SIMD::UInt(texel.UInt(0) & SIMD::UInt(0xffff)) | (SIMD::UInt(texel.UInt(1) & SIMD::UInt(0xffff)) << 16);
+ packed[1] = SIMD::UInt(texel.UInt(2) & SIMD::UInt(0xffff)) | (SIMD::UInt(texel.UInt(3) & SIMD::UInt(0xffff)) << 16);
+ numPackedElements = 2;
+ break;
+ default:
+ UNIMPLEMENTED("spv::ImageFormat %u", format);
+ }
+
+ SIMD::Int texelOffset = GetTexelOffset(coordinate, imageType, binding, texelSize);
+
+ for (auto i = 0u; i < numPackedElements; i++)
+ {
+ for (int j = 0; j < 4; j++)
+ {
+ If(Extract(state->activeLaneMask(), j) != 0)
+ {
+ Int offset = Int(sizeof(float) * i) + Extract(texelOffset, j);
+ Store(Extract(packed[i], j), RValue<Pointer<Int>>(&imageBase[offset]), sizeof(uint32_t), false,
+ std::memory_order_relaxed);
+ }
+ }
+ }
+
+ return EmitResult::Continue;
}
void SpirvShader::emitEpilog(SpirvRoutine *routine) const
@@ -1645,12 +4672,12 @@ namespace sw
{
case spv::OpVariable:
{
- ObjectID resultId = insn.word(2);
+ Object::ID resultId = insn.word(2);
auto &object = getObject(resultId);
auto &objectTy = getType(object.type);
if (object.kind == Object::Kind::InterfaceVariable && objectTy.storageClass == spv::StorageClassOutput)
{
- auto &dst = routine->getValue(resultId);
+ auto &dst = routine->getVariable(resultId);
int offset = 0;
VisitInterface(resultId,
[&](Decorations const &d, AttribType type) {
@@ -1666,6 +4693,147 @@ namespace sw
}
}
+ SpirvShader::Block::Block(InsnIterator begin, InsnIterator end) : begin_(begin), end_(end)
+ {
+ // Default to a Simple, this may change later.
+ kind = Block::Simple;
+
+ // Walk the instructions to find the last two of the block.
+ InsnIterator insns[2];
+ for (auto insn : *this)
+ {
+ insns[0] = insns[1];
+ insns[1] = insn;
+ }
+
+ switch (insns[1].opcode())
+ {
+ case spv::OpBranch:
+ branchInstruction = insns[1];
+ outs.emplace(Block::ID(branchInstruction.word(1)));
+
+ switch (insns[0].opcode())
+ {
+ case spv::OpLoopMerge:
+ kind = Loop;
+ mergeInstruction = insns[0];
+ mergeBlock = Block::ID(mergeInstruction.word(1));
+ continueTarget = Block::ID(mergeInstruction.word(2));
+ break;
+
+ default:
+ kind = Block::Simple;
+ break;
+ }
+ break;
+
+ case spv::OpBranchConditional:
+ branchInstruction = insns[1];
+ outs.emplace(Block::ID(branchInstruction.word(2)));
+ outs.emplace(Block::ID(branchInstruction.word(3)));
+
+ switch (insns[0].opcode())
+ {
+ case spv::OpSelectionMerge:
+ kind = StructuredBranchConditional;
+ mergeInstruction = insns[0];
+ mergeBlock = Block::ID(mergeInstruction.word(1));
+ break;
+
+ case spv::OpLoopMerge:
+ kind = Loop;
+ mergeInstruction = insns[0];
+ mergeBlock = Block::ID(mergeInstruction.word(1));
+ continueTarget = Block::ID(mergeInstruction.word(2));
+ break;
+
+ default:
+ kind = UnstructuredBranchConditional;
+ break;
+ }
+ break;
+
+ case spv::OpSwitch:
+ branchInstruction = insns[1];
+ outs.emplace(Block::ID(branchInstruction.word(2)));
+ for (uint32_t w = 4; w < branchInstruction.wordCount(); w += 2)
+ {
+ outs.emplace(Block::ID(branchInstruction.word(w)));
+ }
+
+ switch (insns[0].opcode())
+ {
+ case spv::OpSelectionMerge:
+ kind = StructuredSwitch;
+ mergeInstruction = insns[0];
+ mergeBlock = Block::ID(mergeInstruction.word(1));
+ break;
+
+ default:
+ kind = UnstructuredSwitch;
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ bool SpirvShader::existsPath(Block::ID from, Block::ID to, Block::ID notPassingThrough) const
+ {
+ // TODO: Optimize: This can be cached on the block.
+ Block::Set seen;
+ seen.emplace(notPassingThrough);
+
+ std::queue<Block::ID> pending;
+ pending.emplace(from);
+
+ while (pending.size() > 0)
+ {
+ auto id = pending.front();
+ pending.pop();
+ for (auto out : getBlock(id).outs)
+ {
+ if (seen.count(out) != 0) { continue; }
+ if (out == to) { return true; }
+ pending.emplace(out);
+ }
+ seen.emplace(id);
+ }
+
+ return false;
+ }
+
+ void SpirvShader::EmitState::addOutputActiveLaneMaskEdge(Block::ID to, RValue<SIMD::Int> mask)
+ {
+ addActiveLaneMaskEdge(currentBlock, to, mask & activeLaneMask());
+ }
+
+ void SpirvShader::EmitState::addActiveLaneMaskEdge(Block::ID from, Block::ID to, RValue<SIMD::Int> mask)
+ {
+ auto edge = Block::Edge{from, to};
+ auto it = edgeActiveLaneMasks.find(edge);
+ if (it == edgeActiveLaneMasks.end())
+ {
+ edgeActiveLaneMasks.emplace(edge, mask);
+ }
+ else
+ {
+ auto combined = it->second | mask;
+ edgeActiveLaneMasks.erase(edge);
+ edgeActiveLaneMasks.emplace(edge, combined);
+ }
+ }
+
+ RValue<SIMD::Int> SpirvShader::GetActiveLaneMaskEdge(EmitState *state, Block::ID from, Block::ID to) const
+ {
+ auto edge = Block::Edge{from, to};
+ auto it = state->edgeActiveLaneMasks.find(edge);
+ ASSERT_MSG(it != state->edgeActiveLaneMasks.end(), "Could not find edge %d -> %d", from.value(), to.value());
+ return it->second;
+ }
+
SpirvRoutine::SpirvRoutine(vk::PipelineLayout const *pipelineLayout) :
pipelineLayout(pipelineLayout)
{
diff --git a/chromium/third_party/swiftshader/src/Pipeline/SpirvShader.hpp b/chromium/third_party/swiftshader/src/Pipeline/SpirvShader.hpp
index e4d13e22e19..f8862b6ca74 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/SpirvShader.hpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/SpirvShader.hpp
@@ -20,27 +20,35 @@
#include "System/Types.hpp"
#include "Vulkan/VkDebug.hpp"
#include "Vulkan/VkConfig.h"
+#include "Vulkan/VkDescriptorSet.hpp"
+#include "Device/Config.hpp"
+
+#include <spirv/unified1/spirv.hpp>
#include <array>
#include <cstring>
+#include <functional>
#include <string>
#include <vector>
+#include <unordered_set>
#include <unordered_map>
#include <cstdint>
#include <type_traits>
#include <memory>
-#include <spirv/unified1/spirv.hpp>
-#include <Device/Config.hpp>
+#include <queue>
namespace vk
{
class PipelineLayout;
+ class ImageView;
+ class Sampler;
} // namespace vk
namespace sw
{
// Forward declarations.
class SpirvRoutine;
+ class GenericValue;
// SIMD contains types that represent multiple scalars packed into a single
// vector data type. Types in the SIMD namespace provide a semantic hint
@@ -54,6 +62,22 @@ namespace sw
using Float = rr::Float4;
using Int = rr::Int4;
using UInt = rr::UInt4;
+
+ struct Pointer
+ {
+ Pointer(rr::Pointer<Byte> base) : base(base), offset(0), uniform(true) {}
+ Pointer(rr::Pointer<Byte> base, SIMD::Int offset) : base(base), offset(offset), uniform(false) {}
+
+ // Base address for the pointer, common across all lanes.
+ rr::Pointer<rr::Float> base;
+
+ // Per lane offsets from base.
+ // If uniform is false, all offsets are considered zero.
+ Int offset;
+
+ // True if all offsets are zero.
+ bool uniform;
+ };
}
// Incrementally constructed complex bundle of rvalues
@@ -64,41 +88,43 @@ namespace sw
class Intermediate
{
public:
- using Scalar = RValue<SIMD::Float>;
-
- Intermediate(uint32_t size) : contents(new ContentsType[size]), size(size) {
-#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
- memset(contents, 0, sizeof(ContentsType) * size);
-#endif
+ Intermediate(uint32_t size) : scalar(new rr::Value*[size]), size(size) {
+ memset(scalar, 0, sizeof(rr::Value*) * size);
}
~Intermediate()
{
- for (auto i = 0u; i < size; i++)
- reinterpret_cast<Scalar *>(&contents[i])->~Scalar();
- delete [] contents;
+ delete[] scalar;
}
- void emplace(uint32_t n, Scalar&& value)
+ void move(uint32_t i, RValue<SIMD::Float> &&scalar) { emplace(i, scalar.value); }
+ void move(uint32_t i, RValue<SIMD::Int> &&scalar) { emplace(i, scalar.value); }
+ void move(uint32_t i, RValue<SIMD::UInt> &&scalar) { emplace(i, scalar.value); }
+
+ void move(uint32_t i, const RValue<SIMD::Float> &scalar) { emplace(i, scalar.value); }
+ void move(uint32_t i, const RValue<SIMD::Int> &scalar) { emplace(i, scalar.value); }
+ void move(uint32_t i, const RValue<SIMD::UInt> &scalar) { emplace(i, scalar.value); }
+
+ // Value retrieval functions.
+ RValue<SIMD::Float> Float(uint32_t i) const
{
- ASSERT(n < size);
- ASSERT(reinterpret_cast<Scalar const *>(&contents[n])->value == nullptr);
- new (&contents[n]) Scalar(value);
+ ASSERT(i < size);
+ ASSERT(scalar[i] != nullptr);
+ return As<SIMD::Float>(scalar[i]); // TODO(b/128539387): RValue<SIMD::Float>(scalar)
}
- void emplace(uint32_t n, const Scalar& value)
+ RValue<SIMD::Int> Int(uint32_t i) const
{
- ASSERT(n < size);
- ASSERT(reinterpret_cast<Scalar const *>(&contents[n])->value == nullptr);
- new (&contents[n]) Scalar(value);
+ ASSERT(i < size);
+ ASSERT(scalar[i] != nullptr);
+ return As<SIMD::Int>(scalar[i]); // TODO(b/128539387): RValue<SIMD::Int>(scalar)
}
- Scalar const & operator[](uint32_t n) const
+ RValue<SIMD::UInt> UInt(uint32_t i) const
{
- ASSERT(n < size);
- auto scalar = reinterpret_cast<Scalar const *>(&contents[n]);
- ASSERT(scalar->value != nullptr);
- return *scalar;
+ ASSERT(i < size);
+ ASSERT(scalar[i] != nullptr);
+ return As<SIMD::UInt>(scalar[i]); // TODO(b/128539387): RValue<SIMD::UInt>(scalar)
}
// No copy/move construction or assignment
@@ -108,9 +134,14 @@ namespace sw
Intermediate & operator=(Intermediate &&) = delete;
private:
- using ContentsType = std::aligned_storage<sizeof(Scalar), alignof(Scalar)>::type;
+ void emplace(uint32_t i, rr::Value *value)
+ {
+ ASSERT(i < size);
+ ASSERT(scalar[i] == nullptr);
+ scalar[i] = value;
+ }
- ContentsType *contents;
+ rr::Value **const scalar;
uint32_t size;
};
@@ -148,6 +179,11 @@ namespace sw
return &iter[n];
}
+ bool operator==(InsnIterator const &other) const
+ {
+ return iter == other.iter;
+ }
+
bool operator!=(InsnIterator const &other) const
{
return iter != other.iter;
@@ -191,57 +227,142 @@ namespace sw
return InsnIterator{insns.cend()};
}
- class Type;
- using TypeID = SpirvID<Type>;
-
class Type
{
public:
+ using ID = SpirvID<Type>;
+
+ spv::Op opcode() const { return definition.opcode(); }
+
InsnIterator definition;
spv::StorageClass storageClass = static_cast<spv::StorageClass>(-1);
uint32_t sizeInComponents = 0;
bool isBuiltInBlock = false;
// Inner element type for pointers, arrays, vectors and matrices.
- TypeID element;
+ ID element;
};
- class Object;
- using ObjectID = SpirvID<Object>;
-
class Object
{
public:
+ using ID = SpirvID<Object>;
+
+ spv::Op opcode() const { return definition.opcode(); }
+
InsnIterator definition;
- TypeID type;
- ObjectID pointerBase;
+ Type::ID type;
std::unique_ptr<uint32_t[]> constantValue = nullptr;
enum class Kind
{
- Unknown, /* for paranoia -- if we get left with an object in this state, the module was broken */
- Variable, // TODO: Document
- InterfaceVariable, // TODO: Document
- Constant, // Values held by Object::constantValue
- Value, // Values held by SpirvRoutine::intermediates
- PhysicalPointer, // Pointer held by SpirvRoutine::physicalPointers
- } kind = Kind::Unknown;
+ // Invalid default kind.
+ // If we get left with an object in this state, the module was
+ // broken.
+ Unknown,
+
+ // TODO: Better document this kind.
+ // A shader interface variable pointer.
+ // Pointer with uniform address across all lanes.
+ // Pointer held by SpirvRoutine::pointers
+ InterfaceVariable,
+
+ // Constant value held by Object::constantValue.
+ Constant,
+
+ // Value held by SpirvRoutine::intermediates.
+ Intermediate,
+
+ // DivergentPointer formed from a base pointer and per-lane offset.
+ // Base pointer held by SpirvRoutine::pointers
+ // Per-lane offset held by SpirvRoutine::intermediates.
+ DivergentPointer,
+
+ // Pointer with uniform address across all lanes.
+ // Pointer held by SpirvRoutine::pointers
+ NonDivergentPointer,
+
+ // A pointer to a vk::DescriptorSet*.
+ // Pointer held by SpirvRoutine::pointers.
+ DescriptorSet,
+
+ // Pointer to an image/sampler descriptor.
+ SampledImage,
+ };
+
+ Kind kind = Kind::Unknown;
+ };
+
+ // Block is an interval of SPIR-V instructions, starting with the
+ // opening OpLabel, and ending with a termination instruction.
+ class Block
+ {
+ public:
+ using ID = SpirvID<Block>;
+ using Set = std::unordered_set<ID>;
+
+ // Edge represents the graph edge between two blocks.
+ struct Edge
+ {
+ ID from;
+ ID to;
+
+ bool operator == (const Edge& other) const { return from == other.from && to == other.to; }
+
+ struct Hash
+ {
+ std::size_t operator()(const Edge& edge) const noexcept
+ {
+ return std::hash<uint32_t>()(edge.from.value() * 31 + edge.to.value());
+ }
+ };
+ };
+
+ Block() = default;
+ Block(const Block& other) = default;
+ explicit Block(InsnIterator begin, InsnIterator end);
+
+ /* range-based-for interface */
+ inline InsnIterator begin() const { return begin_; }
+ inline InsnIterator end() const { return end_; }
+
+ enum Kind
+ {
+ Simple, // OpBranch or other simple terminator.
+ StructuredBranchConditional, // OpSelectionMerge + OpBranchConditional
+ UnstructuredBranchConditional, // OpBranchConditional
+ StructuredSwitch, // OpSelectionMerge + OpSwitch
+ UnstructuredSwitch, // OpSwitch
+ Loop, // OpLoopMerge + [OpBranchConditional | OpBranch]
+ };
+
+ Kind kind;
+ InsnIterator mergeInstruction; // Structured control flow merge instruction.
+ InsnIterator branchInstruction; // Branch instruction.
+ ID mergeBlock; // Structured flow merge block.
+ ID continueTarget; // Loop continue block.
+ Set ins; // Blocks that branch into this block.
+ Set outs; // Blocks that this block branches to.
+
+ private:
+ InsnIterator begin_;
+ InsnIterator end_;
};
struct TypeOrObject {}; // Dummy struct to represent a Type or Object.
// TypeOrObjectID is an identifier that represents a Type or an Object,
- // and supports implicit casting to and from TypeID or ObjectID.
+ // and supports implicit casting to and from Type::ID or Object::ID.
class TypeOrObjectID : public SpirvID<TypeOrObject>
{
public:
using Hash = std::hash<SpirvID<TypeOrObject>>;
inline TypeOrObjectID(uint32_t id) : SpirvID(id) {}
- inline TypeOrObjectID(TypeID id) : SpirvID(id.value()) {}
- inline TypeOrObjectID(ObjectID id) : SpirvID(id.value()) {}
- inline operator TypeID() const { return TypeID(value()); }
- inline operator ObjectID() const { return ObjectID(value()); }
+ inline TypeOrObjectID(Type::ID id) : SpirvID(id.value()) {}
+ inline TypeOrObjectID(Object::ID id) : SpirvID(id.value()) {}
+ inline operator Type::ID() const { return Type::ID(value()); }
+ inline operator Object::ID() const { return Object::ID(value()); }
};
int getSerialID() const
@@ -262,7 +383,7 @@ namespace sw
bool NeedsCentroid : 1;
// Compute workgroup dimensions
- int LocalSizeX, LocalSizeY, LocalSizeZ;
+ int WorkgroupSizeX = 1, WorkgroupSizeY = 1, WorkgroupSizeZ = 1;
};
Modes const &getModes() const
@@ -287,29 +408,42 @@ namespace sw
struct Decorations
{
- int32_t Location;
- int32_t Component;
- int32_t DescriptorSet;
- int32_t Binding;
- spv::BuiltIn BuiltIn;
+ int32_t Location = -1;
+ int32_t Component = 0;
+ spv::BuiltIn BuiltIn = static_cast<spv::BuiltIn>(-1);
+ int32_t Offset = -1;
+ int32_t ArrayStride = -1;
+ int32_t MatrixStride = 1;
+
bool HasLocation : 1;
bool HasComponent : 1;
- bool HasDescriptorSet : 1;
- bool HasBinding : 1;
bool HasBuiltIn : 1;
+ bool HasOffset : 1;
+ bool HasArrayStride : 1;
+ bool HasMatrixStride : 1;
+ bool HasRowMajor : 1; // whether RowMajor bit is valid.
+
bool Flat : 1;
bool Centroid : 1;
bool NoPerspective : 1;
bool Block : 1;
bool BufferBlock : 1;
+ bool RelaxedPrecision : 1;
+ bool RowMajor : 1; // RowMajor if true; ColMajor if false
+ bool InsideMatrix : 1; // pseudo-decoration for whether we're inside a matrix.
Decorations()
- : Location{-1}, Component{0}, DescriptorSet{-1}, Binding{-1},
+ : Location{-1}, Component{0},
BuiltIn{static_cast<spv::BuiltIn>(-1)},
+ Offset{-1}, ArrayStride{-1}, MatrixStride{-1},
HasLocation{false}, HasComponent{false},
- HasDescriptorSet{false}, HasBinding{false},
- HasBuiltIn{false}, Flat{false}, Centroid{false},
- NoPerspective{false}, Block{false}, BufferBlock{false}
+ HasBuiltIn{false}, HasOffset{false},
+ HasArrayStride{false}, HasMatrixStride{false},
+ HasRowMajor{false},
+ Flat{false}, Centroid{false}, NoPerspective{false},
+ Block{false}, BufferBlock{false},
+ RelaxedPrecision{false}, RowMajor{false},
+ InsideMatrix{false}
{
}
@@ -321,7 +455,17 @@ namespace sw
};
std::unordered_map<TypeOrObjectID, Decorations, TypeOrObjectID::Hash> decorations;
- std::unordered_map<TypeID, std::vector<Decorations>> memberDecorations;
+ std::unordered_map<Type::ID, std::vector<Decorations>> memberDecorations;
+
+ struct DescriptorDecorations
+ {
+ int32_t DescriptorSet = -1;
+ int32_t Binding = -1;
+
+ void Apply(DescriptorDecorations const &src);
+ };
+
+ std::unordered_map<Object::ID, DescriptorDecorations> descriptorDecorations;
struct InterfaceComponent
{
@@ -338,7 +482,7 @@ namespace sw
struct BuiltinMapping
{
- ObjectID Id;
+ Object::ID Id;
uint32_t FirstComponent;
uint32_t SizeInComponents;
};
@@ -347,24 +491,31 @@ namespace sw
std::vector<InterfaceComponent> outputs;
void emitProlog(SpirvRoutine *routine) const;
- void emit(SpirvRoutine *routine) const;
+ void emit(SpirvRoutine *routine, RValue<SIMD::Int> const &activeLaneMask, const vk::DescriptorSet::Bindings &descriptorSets) const;
void emitEpilog(SpirvRoutine *routine) const;
using BuiltInHash = std::hash<std::underlying_type<spv::BuiltIn>::type>;
std::unordered_map<spv::BuiltIn, BuiltinMapping, BuiltInHash> inputBuiltins;
std::unordered_map<spv::BuiltIn, BuiltinMapping, BuiltInHash> outputBuiltins;
- Type const &getType(TypeID id) const
+ Type const &getType(Type::ID id) const
{
auto it = types.find(id);
- ASSERT(it != types.end());
+ ASSERT_MSG(it != types.end(), "Unknown type %d", id.value());
return it->second;
}
- Object const &getObject(ObjectID id) const
+ Object const &getObject(Object::ID id) const
{
auto it = defs.find(id);
- ASSERT(it != defs.end());
+ ASSERT_MSG(it != defs.end(), "Unknown object %d", id.value());
+ return it->second;
+ }
+
+ Block const &getBlock(Block::ID id) const
+ {
+ auto it = blocks.find(id);
+ ASSERT_MSG(it != blocks.end(), "Unknown block %d", id.value());
return it->second;
}
@@ -374,6 +525,15 @@ namespace sw
Modes modes;
HandleMap<Type> types;
HandleMap<Object> defs;
+ HandleMap<Block> blocks;
+ Block::ID mainBlockId; // Block of the entry point function.
+
+ // Walks all reachable the blocks starting from id adding them to
+ // reachable.
+ void TraverseReachableBlocks(Block::ID id, Block::Set& reachable);
+
+ // Assigns Block::ins from Block::outs for every block.
+ void AssignBlockIns();
// DeclareType creates a Type for the given OpTypeX instruction, storing
// it into the types map. It is called from the analysis pass (constructor).
@@ -383,68 +543,217 @@ namespace sw
uint32_t ComputeTypeSize(InsnIterator insn);
void ApplyDecorationsForId(Decorations *d, TypeOrObjectID id) const;
- void ApplyDecorationsForIdMember(Decorations *d, TypeID id, uint32_t member) const;
+ void ApplyDecorationsForIdMember(Decorations *d, Type::ID id, uint32_t member) const;
+ void ApplyDecorationsForAccessChain(Decorations *d, Object::ID baseId, uint32_t numIndexes, uint32_t const *indexIds) const;
+
+ // Creates an Object for the instruction's result in 'defs'.
+ void DefineResult(const InsnIterator &insn);
// Returns true if data in the given storage class is word-interleaved
- // by each SIMD vector lane, otherwise data is linerally stored.
+ // by each SIMD vector lane, otherwise data is stored linerally.
+ //
+ // Each lane addresses a single word, picked by a base pointer and an
+ // integer offset.
+ //
+ // A word is currently 32 bits (single float, int32_t, uint32_t).
+ // A lane is a single element of a SIMD vector register.
+ //
+ // Storage interleaved by lane - (IsStorageInterleavedByLane() == true):
+ // ---------------------------------------------------------------------
+ //
+ // Address = PtrBase + sizeof(Word) * (SIMD::Width * LaneOffset + LaneIndex)
+ //
+ // Assuming SIMD::Width == 4:
//
- // A 'lane' is a component of a SIMD vector register.
- // Given 4 consecutive loads/stores of 4 SIMD vector registers:
+ // Lane[0] | Lane[1] | Lane[2] | Lane[3]
+ // ===========+===========+===========+==========
+ // LaneOffset=0: | Word[0] | Word[1] | Word[2] | Word[3]
+ // ---------------+-----------+-----------+-----------+----------
+ // LaneOffset=1: | Word[4] | Word[5] | Word[6] | Word[7]
+ // ---------------+-----------+-----------+-----------+----------
+ // LaneOffset=2: | Word[8] | Word[9] | Word[a] | Word[b]
+ // ---------------+-----------+-----------+-----------+----------
+ // LaneOffset=3: | Word[c] | Word[d] | Word[e] | Word[f]
//
- // "StorageInterleavedByLane":
//
- // Ptr+0:Reg0.x | Ptr+1:Reg0.y | Ptr+2:Reg0.z | Ptr+3:Reg0.w
- // --------------+--------------+--------------+--------------
- // Ptr+4:Reg1.x | Ptr+5:Reg1.y | Ptr+6:Reg1.z | Ptr+7:Reg1.w
- // --------------+--------------+--------------+--------------
- // Ptr+8:Reg2.x | Ptr+9:Reg2.y | Ptr+a:Reg2.z | Ptr+b:Reg2.w
- // --------------+--------------+--------------+--------------
- // Ptr+c:Reg3.x | Ptr+d:Reg3.y | Ptr+e:Reg3.z | Ptr+f:Reg3.w
+ // Linear storage - (IsStorageInterleavedByLane() == false):
+ // ---------------------------------------------------------
//
- // Not "StorageInterleavedByLane":
+ // Address = PtrBase + sizeof(Word) * LaneOffset
//
- // Ptr+0:Reg0.x | Ptr+0:Reg0.y | Ptr+0:Reg0.z | Ptr+0:Reg0.w
- // --------------+--------------+--------------+--------------
- // Ptr+1:Reg1.x | Ptr+1:Reg1.y | Ptr+1:Reg1.z | Ptr+1:Reg1.w
- // --------------+--------------+--------------+--------------
- // Ptr+2:Reg2.x | Ptr+2:Reg2.y | Ptr+2:Reg2.z | Ptr+2:Reg2.w
- // --------------+--------------+--------------+--------------
- // Ptr+3:Reg3.x | Ptr+3:Reg3.y | Ptr+3:Reg3.z | Ptr+3:Reg3.w
+ // Lane[0] | Lane[1] | Lane[2] | Lane[3]
+ // ===========+===========+===========+==========
+ // LaneOffset=0: | Word[0] | Word[0] | Word[0] | Word[0]
+ // ---------------+-----------+-----------+-----------+----------
+ // LaneOffset=1: | Word[1] | Word[1] | Word[1] | Word[1]
+ // ---------------+-----------+-----------+-----------+----------
+ // LaneOffset=2: | Word[2] | Word[2] | Word[2] | Word[2]
+ // ---------------+-----------+-----------+-----------+----------
+ // LaneOffset=3: | Word[3] | Word[3] | Word[3] | Word[3]
//
static bool IsStorageInterleavedByLane(spv::StorageClass storageClass);
template<typename F>
- int VisitInterfaceInner(TypeID id, Decorations d, F f) const;
+ int VisitInterfaceInner(Type::ID id, Decorations d, F f) const;
template<typename F>
- void VisitInterface(ObjectID id, F f) const;
+ void VisitInterface(Object::ID id, F f) const;
- uint32_t GetConstantInt(ObjectID id) const;
+ template<typename F>
+ void VisitMemoryObject(Object::ID id, F f) const;
+
+ template<typename F>
+ void VisitMemoryObjectInner(Type::ID id, Decorations d, uint32_t &index, uint32_t offset, F f) const;
+
+ uint32_t GetConstantInt(Object::ID id) const;
Object& CreateConstant(InsnIterator it);
void ProcessInterfaceVariable(Object &object);
- SIMD::Int WalkAccessChain(ObjectID id, uint32_t numIndexes, uint32_t const *indexIds, SpirvRoutine *routine) const;
- uint32_t WalkLiteralAccessChain(TypeID id, uint32_t numIndexes, uint32_t const *indexes) const;
+ // Returns a SIMD::Pointer to the underlying data for the given pointer
+ // object.
+ // Handles objects of the following kinds:
+ // • DescriptorSet
+ // • DivergentPointer
+ // • InterfaceVariable
+ // • NonDivergentPointer
+ // Calling GetPointerToData with objects of any other kind will assert.
+ SIMD::Pointer GetPointerToData(Object::ID id, int arrayIndex, SpirvRoutine *routine) const;
+
+ SIMD::Pointer WalkExplicitLayoutAccessChain(Object::ID id, uint32_t numIndexes, uint32_t const *indexIds, SpirvRoutine *routine) const;
+ SIMD::Int WalkAccessChain(Object::ID id, uint32_t numIndexes, uint32_t const *indexIds, SpirvRoutine *routine) const;
+ uint32_t WalkLiteralAccessChain(Type::ID id, uint32_t numIndexes, uint32_t const *indexes) const;
+
+ // EmitState holds control-flow state for the emit() pass.
+ class EmitState
+ {
+ public:
+ EmitState(SpirvRoutine *routine, RValue<SIMD::Int> activeLaneMask, const vk::DescriptorSet::Bindings &descriptorSets)
+ : routine(routine),
+ activeLaneMaskValue(activeLaneMask.value),
+ descriptorSets(descriptorSets)
+ {
+ }
+
+ RValue<SIMD::Int> activeLaneMask() const
+ {
+ ASSERT(activeLaneMaskValue != nullptr);
+ return RValue<SIMD::Int>(activeLaneMaskValue);
+ }
+
+ void setActiveLaneMask(RValue<SIMD::Int> mask)
+ {
+ activeLaneMaskValue = mask.value;
+ }
+
+ // Add a new active lane mask edge from the current block to out.
+ // The edge mask value will be (mask AND activeLaneMaskValue).
+ // If multiple active lane masks are added for the same edge, then
+ // they will be ORed together.
+ void addOutputActiveLaneMaskEdge(Block::ID out, RValue<SIMD::Int> mask);
+
+ // Add a new active lane mask for the edge from -> to.
+ // If multiple active lane masks are added for the same edge, then
+ // they will be ORed together.
+ void addActiveLaneMaskEdge(Block::ID from, Block::ID to, RValue<SIMD::Int> mask);
+
+ SpirvRoutine *routine = nullptr; // The current routine being built.
+ rr::Value *activeLaneMaskValue = nullptr; // The current active lane mask.
+ Block::ID currentBlock; // The current block being built.
+ Block::Set visited; // Blocks already built.
+ std::unordered_map<Block::Edge, RValue<SIMD::Int>, Block::Edge::Hash> edgeActiveLaneMasks;
+ std::queue<Block::ID> *pending;
+
+ const vk::DescriptorSet::Bindings &descriptorSets;
+ };
+
+ // EmitResult is an enumerator of result values from the Emit functions.
+ enum class EmitResult
+ {
+ Continue, // No termination instructions.
+ Terminator, // Reached a termination instruction.
+ };
+
+ // existsPath returns true if there's a direct or indirect flow from
+ // the 'from' block to the 'to' block that does not pass through
+ // notPassingThrough.
+ bool existsPath(Block::ID from, Block::ID to, Block::ID notPassingThrough) const;
+
+ // Lookup the active lane mask for the edge from -> to.
+ // If from is unreachable, then a mask of all zeros is returned.
+ // Asserts if from is reachable and the edge does not exist.
+ RValue<SIMD::Int> GetActiveLaneMaskEdge(EmitState *state, Block::ID from, Block::ID to) const;
+
+ // Emit all the unvisited blocks (except for ignore) in BFS order,
+ // starting with id.
+ void EmitBlocks(Block::ID id, EmitState *state, Block::ID ignore = 0) const;
+ void EmitNonLoop(EmitState *state) const;
+ void EmitLoop(EmitState *state) const;
+
+ void EmitInstructions(InsnIterator begin, InsnIterator end, EmitState *state) const;
+ EmitResult EmitInstruction(InsnIterator insn, EmitState *state) const;
// Emit pass instructions:
- void EmitVariable(InsnIterator insn, SpirvRoutine *routine) const;
- void EmitLoad(InsnIterator insn, SpirvRoutine *routine) const;
- void EmitStore(InsnIterator insn, SpirvRoutine *routine) const;
- void EmitAccessChain(InsnIterator insn, SpirvRoutine *routine) const;
- void EmitCompositeConstruct(InsnIterator insn, SpirvRoutine *routine) const;
- void EmitCompositeInsert(InsnIterator insn, SpirvRoutine *routine) const;
- void EmitCompositeExtract(InsnIterator insn, SpirvRoutine *routine) const;
- void EmitVectorShuffle(InsnIterator insn, SpirvRoutine *routine) const;
- void EmitUnaryOp(InsnIterator insn, SpirvRoutine *routine) const;
- void EmitBinaryOp(InsnIterator insn, SpirvRoutine *routine) const;
- void EmitDot(InsnIterator insn, SpirvRoutine *routine) const;
- void EmitSelect(InsnIterator insn, SpirvRoutine *routine) const;
- void EmitExtendedInstruction(InsnIterator insn, SpirvRoutine *routine) const;
-
- // OpcodeName returns the name of the opcode op.
- // If NDEBUG is defined, then OpcodeName will only return the numerical code.
+ EmitResult EmitVariable(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitLoad(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitStore(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitAccessChain(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitCompositeConstruct(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitCompositeInsert(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitCompositeExtract(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitVectorShuffle(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitVectorTimesScalar(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitMatrixTimesVector(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitVectorTimesMatrix(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitMatrixTimesMatrix(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitOuterProduct(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitTranspose(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitVectorExtractDynamic(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitVectorInsertDynamic(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitUnaryOp(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitBinaryOp(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitDot(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitSelect(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitExtendedInstruction(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitAny(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitAll(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitBranch(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitBranchConditional(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitSwitch(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitUnreachable(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitReturn(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitKill(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitPhi(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitImageSampleImplicitLod(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitImageQuerySize(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitImageRead(InsnIterator insn, EmitState *state) const;
+ EmitResult EmitImageWrite(InsnIterator insn, EmitState *state) const;
+
+ SIMD::Int GetTexelOffset(GenericValue const & coordinate, Type const & imageType, Pointer<Byte> descriptor, int texelSize) const;
+
+ // OpcodeName() returns the name of the opcode op.
+ // If NDEBUG is defined, then OpcodeName() will only return the numerical code.
static std::string OpcodeName(spv::Op op);
+ static std::memory_order MemoryOrder(spv::MemorySemanticsMask memorySemantics);
+
+ // Helper as we often need to take dot products as part of doing other things.
+ SIMD::Float Dot(unsigned numComponents, GenericValue const & x, GenericValue const & y) const;
+
+ SIMD::UInt FloatToHalfBits(SIMD::UInt floatBits, bool storeInUpperBits) const;
+ SIMD::UInt HalfToFloatBits(SIMD::UInt halfBits) const;
+
+ // Splits x into a floating-point significand in the range [0.5, 1.0)
+ // and an integral exponent of two, such that:
+ // x = significand * 2^exponent
+ // Returns the pair <significand, exponent>
+ std::pair<SIMD::Float, SIMD::Int> Frexp(RValue<SIMD::Float> val) const;
+
+ using ImageSampler = void(void* image, void* uvsIn, void* texelOut);
+
+ static ImageSampler *getImageSampler(vk::ImageView *imageView, vk::Sampler *sampler);
+ static void emitSamplerFunction(
+ vk::ImageView *imageView, vk::Sampler *sampler,
+ Pointer<Byte> image, Pointer<SIMD::Float> in, Pointer<Byte> out);
};
class SpirvRoutine
@@ -452,52 +761,76 @@ namespace sw
public:
SpirvRoutine(vk::PipelineLayout const *pipelineLayout);
- using Value = Array<SIMD::Float>;
+ using Variable = Array<SIMD::Float>;
vk::PipelineLayout const * const pipelineLayout;
- std::unordered_map<SpirvShader::ObjectID, Value> lvalues;
+ std::unordered_map<SpirvShader::Object::ID, Variable> variables;
+
+ std::unordered_map<SpirvShader::Object::ID, Intermediate> intermediates;
- std::unordered_map<SpirvShader::ObjectID, Intermediate> intermediates;
+ std::unordered_map<SpirvShader::Object::ID, Pointer<Byte> > pointers;
- std::unordered_map<SpirvShader::ObjectID, Pointer<Byte> > physicalPointers;
+ Variable inputs = Variable{MAX_INTERFACE_COMPONENTS};
+ Variable outputs = Variable{MAX_INTERFACE_COMPONENTS};
- Value inputs = Value{MAX_INTERFACE_COMPONENTS};
- Value outputs = Value{MAX_INTERFACE_COMPONENTS};
+ Pointer<Pointer<Byte>> descriptorSets;
+ Pointer<Int> descriptorDynamicOffsets;
+ Pointer<Byte> pushConstants;
+ Int killMask = Int{0};
- std::array<Pointer<Byte>, vk::MAX_BOUND_DESCRIPTOR_SETS> descriptorSets;
+ void createVariable(SpirvShader::Object::ID id, uint32_t size)
+ {
+ bool added = variables.emplace(id, Variable(size)).second;
+ ASSERT_MSG(added, "Variable %d created twice", id.value());
+ }
+
+ template <typename T>
+ void createPointer(SpirvShader::Object::ID id, Pointer<T> ptrBase)
+ {
+ bool added = pointers.emplace(id, ptrBase).second;
+ ASSERT_MSG(added, "Pointer %d created twice", id.value());
+ }
- void createLvalue(SpirvShader::ObjectID id, uint32_t size)
+ template <typename T>
+ void createPointer(SpirvShader::Object::ID id, RValue<Pointer<T>> ptrBase)
{
- lvalues.emplace(id, Value(size));
+ createPointer(id, Pointer<T>(ptrBase));
}
- Intermediate& createIntermediate(SpirvShader::ObjectID id, uint32_t size)
+ template <typename T>
+ void createPointer(SpirvShader::Object::ID id, Reference<Pointer<T>> ptrBase)
+ {
+ createPointer(id, Pointer<T>(ptrBase));
+ }
+
+ Intermediate& createIntermediate(SpirvShader::Object::ID id, uint32_t size)
{
auto it = intermediates.emplace(std::piecewise_construct,
std::forward_as_tuple(id),
std::forward_as_tuple(size));
+ ASSERT_MSG(it.second, "Intermediate %d created twice", id.value());
return it.first->second;
}
- Value& getValue(SpirvShader::ObjectID id)
+ Variable& getVariable(SpirvShader::Object::ID id)
{
- auto it = lvalues.find(id);
- ASSERT(it != lvalues.end());
+ auto it = variables.find(id);
+ ASSERT_MSG(it != variables.end(), "Unknown variables %d", id.value());
return it->second;
}
- Intermediate const& getIntermediate(SpirvShader::ObjectID id) const
+ Intermediate const& getIntermediate(SpirvShader::Object::ID id) const
{
auto it = intermediates.find(id);
- ASSERT(it != intermediates.end());
+ ASSERT_MSG(it != intermediates.end(), "Unknown intermediate %d", id.value());
return it->second;
}
- Pointer<Byte>& getPhysicalPointer(SpirvShader::ObjectID id)
+ Pointer<Byte>& getPointer(SpirvShader::Object::ID id)
{
- auto it = physicalPointers.find(id);
- assert(it != physicalPointers.end());
+ auto it = pointers.find(id);
+ ASSERT_MSG(it != pointers.end(), "Unknown pointer %d", id.value());
return it->second;
}
};
@@ -513,18 +846,32 @@ namespace sw
Intermediate const *intermediate;
public:
- GenericValue(SpirvShader const *shader, SpirvRoutine const *routine, SpirvShader::ObjectID objId) :
+ GenericValue(SpirvShader const *shader, SpirvRoutine const *routine, SpirvShader::Object::ID objId) :
obj(shader->getObject(objId)),
- intermediate(obj.kind == SpirvShader::Object::Kind::Value ? &routine->getIntermediate(objId) : nullptr) {}
+ intermediate(obj.kind == SpirvShader::Object::Kind::Intermediate ? &routine->getIntermediate(objId) : nullptr),
+ type(obj.type) {}
- RValue<SIMD::Float> operator[](uint32_t i) const
+ RValue<SIMD::Float> Float(uint32_t i) const
{
- if (intermediate)
- return (*intermediate)[i];
-
+ if (intermediate != nullptr)
+ {
+ return intermediate->Float(i);
+ }
auto constantValue = reinterpret_cast<float *>(obj.constantValue.get());
return RValue<SIMD::Float>(constantValue[i]);
}
+
+ RValue<SIMD::Int> Int(uint32_t i) const
+ {
+ return As<SIMD::Int>(Float(i));
+ }
+
+ RValue<SIMD::UInt> UInt(uint32_t i) const
+ {
+ return As<SIMD::UInt>(Float(i));
+ }
+
+ SpirvShader::Type::ID const type;
};
}
diff --git a/chromium/third_party/swiftshader/src/Pipeline/SpirvShaderSampling.cpp b/chromium/third_party/swiftshader/src/Pipeline/SpirvShaderSampling.cpp
new file mode 100644
index 00000000000..e90aad014ad
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Pipeline/SpirvShaderSampling.cpp
@@ -0,0 +1,132 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+#include "SpirvShader.hpp"
+
+#include "SamplerCore.hpp" // TODO: Figure out what's needed.
+#include "System/Math.hpp"
+#include "Vulkan/VkBuffer.hpp"
+#include "Vulkan/VkDebug.hpp"
+#include "Vulkan/VkDescriptorSet.hpp"
+#include "Vulkan/VkPipelineLayout.hpp"
+#include "Vulkan/VkImageView.hpp"
+#include "Vulkan/VkSampler.hpp"
+#include "Vulkan/VkDescriptorSetLayout.hpp"
+#include "Device/Config.hpp"
+
+#include <spirv/unified1/spirv.hpp>
+#include <spirv/unified1/GLSL.std.450.h>
+
+
+#include <mutex>
+
+#ifdef Bool
+#undef Bool // b/127920555
+#undef None
+#endif
+
+namespace sw {
+
+SpirvShader::ImageSampler *SpirvShader::getImageSampler(vk::ImageView *imageView, vk::Sampler *sampler)
+{
+ // TODO: Move somewhere sensible.
+ static std::unordered_map<uintptr_t, ImageSampler*> cache;
+ static std::mutex mutex;
+
+ // TODO: Don't use pointers they can be deleted and reused, combine some two
+ // unique ids.
+ auto key = reinterpret_cast<uintptr_t>(imageView) ^ reinterpret_cast<uintptr_t>(sampler);
+
+ std::unique_lock<std::mutex> lock(mutex);
+ auto it = cache.find(key);
+ if (it != cache.end()) { return it->second; }
+
+ // TODO: Hold a separate mutex lock for the sampler being built.
+ auto function = rr::Function<Void(Pointer<Byte> image, Pointer<SIMD::Float>, Pointer<SIMD::Float>)>();
+ Pointer<Byte> image = function.Arg<0>();
+ Pointer<SIMD::Float> in = function.Arg<1>();
+ Pointer<SIMD::Float> out = function.Arg<2>();
+ emitSamplerFunction(imageView, sampler, image, in, out);
+ auto fptr = reinterpret_cast<ImageSampler*>((void *)function("sampler")->getEntry());
+ cache.emplace(key, fptr);
+ return fptr;
+}
+
+void SpirvShader::emitSamplerFunction(
+ vk::ImageView *imageView, vk::Sampler *sampler,
+ Pointer<Byte> image, Pointer<SIMD::Float> in, Pointer<Byte> out)
+{
+ SIMD::Float u = in[0];
+ SIMD::Float v = in[1];
+
+ Pointer<Byte> constants; // FIXME(b/129523279)
+
+ Sampler::State samplerState;
+ samplerState.textureType = TEXTURE_2D; ASSERT(imageView->getType() == VK_IMAGE_VIEW_TYPE_2D); // TODO(b/129523279)
+ samplerState.textureFormat = imageView->getFormat();
+ samplerState.textureFilter = FILTER_POINT; ASSERT(sampler->magFilter == VK_FILTER_NEAREST); ASSERT(sampler->minFilter == VK_FILTER_NEAREST); // TODO(b/129523279)
+
+ samplerState.addressingModeU = ADDRESSING_WRAP; ASSERT(sampler->addressModeU == VK_SAMPLER_ADDRESS_MODE_REPEAT); // TODO(b/129523279)
+ samplerState.addressingModeV = ADDRESSING_WRAP; ASSERT(sampler->addressModeV == VK_SAMPLER_ADDRESS_MODE_REPEAT); // TODO(b/129523279)
+ samplerState.addressingModeW = ADDRESSING_WRAP; ASSERT(sampler->addressModeW == VK_SAMPLER_ADDRESS_MODE_REPEAT); // TODO(b/129523279)
+ samplerState.mipmapFilter = MIPMAP_POINT; ASSERT(sampler->mipmapMode == VK_SAMPLER_MIPMAP_MODE_NEAREST); // TODO(b/129523279)
+ samplerState.sRGB = false; ASSERT(imageView->getFormat().isSRGBformat() == false); // TODO(b/129523279)
+ samplerState.swizzleR = SWIZZLE_RED; ASSERT(imageView->getComponentMapping().r == VK_COMPONENT_SWIZZLE_R); // TODO(b/129523279)
+ samplerState.swizzleG = SWIZZLE_GREEN; ASSERT(imageView->getComponentMapping().g == VK_COMPONENT_SWIZZLE_G); // TODO(b/129523279)
+ samplerState.swizzleB = SWIZZLE_BLUE; ASSERT(imageView->getComponentMapping().b == VK_COMPONENT_SWIZZLE_B); // TODO(b/129523279)
+ samplerState.swizzleA = SWIZZLE_ALPHA; ASSERT(imageView->getComponentMapping().a == VK_COMPONENT_SWIZZLE_A); // TODO(b/129523279)
+ samplerState.highPrecisionFiltering = false;
+ samplerState.compare = COMPARE_BYPASS; ASSERT(sampler->compareEnable == VK_FALSE); // TODO(b/129523279)
+
+// minLod // TODO(b/129523279)
+// maxLod // TODO(b/129523279)
+// borderColor // TODO(b/129523279)
+ ASSERT(sampler->mipLodBias == 0.0f); // TODO(b/129523279)
+ ASSERT(sampler->anisotropyEnable == VK_FALSE); // TODO(b/129523279)
+ ASSERT(sampler->unnormalizedCoordinates == VK_FALSE); // TODO(b/129523279)
+
+ SamplerCore s(constants, samplerState);
+
+ Pointer<Byte> texture = image + OFFSET(vk::SampledImageDescriptor, texture); // sw::Texture*
+ SIMD::Float w(0); // TODO(b/129523279)
+ SIMD::Float q(0); // TODO(b/129523279)
+ SIMD::Float bias(0); // TODO(b/129523279)
+ Vector4f dsx; // TODO(b/129523279)
+ Vector4f dsy; // TODO(b/129523279)
+ Vector4f offset; // TODO(b/129523279)
+ SamplerFunction samplerFunction = { Implicit, None }; // ASSERT(insn.wordCount() == 5); // TODO(b/129523279)
+
+ Vector4f sample = s.sampleTextureF(texture, u, v, w, q, bias, dsx, dsy, offset, samplerFunction);
+
+ if(!vk::Format(imageView->getFormat()).isNonNormalizedInteger())
+ {
+ Pointer<SIMD::Float> rgba = out;
+ rgba[0] = sample.x;
+ rgba[1] = sample.y;
+ rgba[2] = sample.z;
+ rgba[3] = sample.w;
+ }
+ else
+ {
+ // TODO(b/129523279): Add a Sampler::sampleTextureI() method.
+ Pointer<SIMD::Int> rgba = out;
+ rgba[0] = As<SIMD::Int>(sample.x * SIMD::Float(0xFF));
+ rgba[1] = As<SIMD::Int>(sample.y * SIMD::Float(0xFF));
+ rgba[2] = As<SIMD::Int>(sample.z * SIMD::Float(0xFF));
+ rgba[3] = As<SIMD::Int>(sample.w * SIMD::Float(0xFF));
+ }
+}
+
+} // namespace sw \ No newline at end of file
diff --git a/chromium/third_party/swiftshader/src/Pipeline/SpirvShader_dbg.cpp b/chromium/third_party/swiftshader/src/Pipeline/SpirvShader_dbg.cpp
index feacb875d63..3dd4e4301fb 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/SpirvShader_dbg.cpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/SpirvShader_dbg.cpp
@@ -21,8 +21,8 @@ namespace sw
{
std::string SpirvShader::OpcodeName(spv::Op op)
{
- switch(op){
#ifndef NDEBUG
+ switch(op){
case spv::OpNop: return "Nop";
case spv::OpUndef: return "Undef";
case spv::OpSourceContinued: return "SourceContinued";
@@ -399,10 +399,12 @@ namespace sw
case spv::OpDecorateStringGOOGLE: return "DecorateStringGOOGLE";
case spv::OpMemberDecorateStringGOOGLE: return "MemberDecorateStringGOOGLE";
case spv::OpMax: return "Max";
-#endif // NDEBUG
default:
- return "Opcode<" + std::to_string(static_cast<int>(op)) + ">";
+ break;
}
+#endif // NDEBUG
+
+ return "Opcode<" + std::to_string(static_cast<int>(op)) + ">";
}
} // namespace sw
diff --git a/chromium/third_party/swiftshader/src/Pipeline/VertexProgram.cpp b/chromium/third_party/swiftshader/src/Pipeline/VertexProgram.cpp
index 182e7bdf090..63c890fdde8 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/VertexProgram.cpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/VertexProgram.cpp
@@ -20,80 +20,63 @@
#include "System/Half.hpp"
#include "Vulkan/VkDebug.hpp"
+#include "Vulkan/VkPipelineLayout.hpp"
+
namespace sw
{
VertexProgram::VertexProgram(
const VertexProcessor::State &state,
vk::PipelineLayout const *pipelineLayout,
- SpirvShader const *spirvShader)
- : VertexRoutine(state, pipelineLayout, spirvShader)
+ SpirvShader const *spirvShader,
+ const vk::DescriptorSet::Bindings &descriptorSets)
+ : VertexRoutine(state, pipelineLayout, spirvShader),
+ descriptorSets(descriptorSets)
{
- ifDepth = 0;
- loopRepDepth = 0;
- currentLabel = -1;
- whileTest = false;
-
- enableStack[0] = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
-
auto it = spirvShader->inputBuiltins.find(spv::BuiltInInstanceIndex);
if (it != spirvShader->inputBuiltins.end())
{
// TODO: we could do better here; we know InstanceIndex is uniform across all lanes
assert(it->second.SizeInComponents == 1);
- routine.getValue(it->second.Id)[it->second.FirstComponent] =
+ routine.getVariable(it->second.Id)[it->second.FirstComponent] =
As<Float4>(Int4((*Pointer<Int>(data + OFFSET(DrawData, instanceID)))));
}
- }
-
- VertexProgram::~VertexProgram()
- {
- }
- void VertexProgram::program(UInt &index)
- {
- // shader->print("VertexShader-%0.8X.txt", state.shaderID);
+ routine.descriptorSets = data + OFFSET(DrawData, descriptorSets);
+ routine.descriptorDynamicOffsets = data + OFFSET(DrawData, descriptorDynamicOffsets);
+ routine.pushConstants = data + OFFSET(DrawData, pushConstants);
- enableIndex = 0;
-
- auto it = spirvShader->inputBuiltins.find(spv::BuiltInVertexIndex);
+ it = spirvShader->inputBuiltins.find(spv::BuiltInSubgroupSize);
if (it != spirvShader->inputBuiltins.end())
{
- assert(it->second.SizeInComponents == 1);
- routine.getValue(it->second.Id)[it->second.FirstComponent] =
- As<Float4>(Int4(index) + Int4(0, 1, 2, 3));
+ ASSERT(it->second.SizeInComponents == 1);
+ routine.getVariable(it->second.Id)[it->second.FirstComponent] = As<SIMD::Float>(Int(SIMD::Width));
}
- spirvShader->emit(&routine);
-
- if(currentLabel != -1)
+ it = spirvShader->inputBuiltins.find(spv::BuiltInSubgroupLocalInvocationId);
+ if (it != spirvShader->inputBuiltins.end())
{
- Nucleus::setInsertBlock(returnBlock);
+ ASSERT(it->second.SizeInComponents == 1);
+ routine.getVariable(it->second.Id)[it->second.FirstComponent] = As<SIMD::Float>(SIMD::Int(0, 1, 2, 3));
}
+ }
- spirvShader->emitEpilog(&routine);
+ VertexProgram::~VertexProgram()
+ {
}
- RValue<Pointer<Byte>> VertexProgram::uniformAddress(int bufferIndex, unsigned int index)
+ void VertexProgram::program(UInt &index)
{
- if(bufferIndex == -1)
- {
- return data + OFFSET(DrawData, vs.c[index]);
- }
- else
+ auto it = spirvShader->inputBuiltins.find(spv::BuiltInVertexIndex);
+ if (it != spirvShader->inputBuiltins.end())
{
- return *Pointer<Pointer<Byte>>(data + OFFSET(DrawData, vs.u[bufferIndex])) + index;
+ assert(it->second.SizeInComponents == 1);
+ routine.getVariable(it->second.Id)[it->second.FirstComponent] =
+ As<Float4>(Int4(As<Int>(index) + *Pointer<Int>(data + OFFSET(DrawData, baseVertex))) + Int4(0, 1, 2, 3));
}
- }
- RValue<Pointer<Byte>> VertexProgram::uniformAddress(int bufferIndex, unsigned int index, Int &offset)
- {
- return uniformAddress(bufferIndex, index) + offset * sizeof(float4);
- }
+ auto activeLaneMask = SIMD::Int(0xFFFFFFFF); // TODO: Control this.
+ spirvShader->emit(&routine, activeLaneMask, descriptorSets);
- Int4 VertexProgram::enableMask()
- {
- Int4 enable = true ? Int4(enableStack[enableIndex]) : Int4(0xFFFFFFFF);
- return enable;
+ spirvShader->emitEpilog(&routine);
}
-
}
diff --git a/chromium/third_party/swiftshader/src/Pipeline/VertexProgram.hpp b/chromium/third_party/swiftshader/src/Pipeline/VertexProgram.hpp
index 5fe12526aef..2b4657f06df 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/VertexProgram.hpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/VertexProgram.hpp
@@ -32,31 +32,15 @@ namespace sw
VertexProgram(
const VertexProcessor::State &state,
vk::PipelineLayout const *pipelineLayout,
- SpirvShader const *spirvShader);
+ SpirvShader const *spirvShader,
+ const vk::DescriptorSet::Bindings &descriptorSets);
virtual ~VertexProgram();
private:
- Int enableIndex;
- Array<Int4, 1 + 24> enableStack;
-
void program(UInt &index) override;
- RValue<Pointer<Byte>> uniformAddress(int bufferIndex, unsigned int index);
- RValue<Pointer<Byte>> uniformAddress(int bufferIndex, unsigned int index, Int &offset);
- Int4 enableMask();
-
- int ifDepth;
- int loopRepDepth;
- int currentLabel;
- bool whileTest;
-
- BasicBlock *ifFalseBlock[24 + 24];
- BasicBlock *loopRepTestBlock[4];
- BasicBlock *loopRepEndBlock[4];
- BasicBlock *labelBlock[2048];
- std::vector<BasicBlock*> callRetBlock[2048];
- BasicBlock *returnBlock;
- bool isConditionalIf[24 + 24];
+
+ const vk::DescriptorSet::Bindings &descriptorSets;
};
}
diff --git a/chromium/third_party/swiftshader/src/Pipeline/VertexRoutine.cpp b/chromium/third_party/swiftshader/src/Pipeline/VertexRoutine.cpp
index df2c8133e4e..396b31915b6 100644
--- a/chromium/third_party/swiftshader/src/Pipeline/VertexRoutine.cpp
+++ b/chromium/third_party/swiftshader/src/Pipeline/VertexRoutine.cpp
@@ -109,7 +109,7 @@ namespace sw
auto it = spirvShader->outputBuiltins.find(spv::BuiltInPosition);
assert(it != spirvShader->outputBuiltins.end());
assert(it->second.SizeInComponents == 4);
- auto &pos = routine.getValue(it->second.Id);
+ auto &pos = routine.getVariable(it->second.Id);
auto posX = pos[it->second.FirstComponent];
auto posY = pos[it->second.FirstComponent + 1];
auto posZ = pos[it->second.FirstComponent + 2];
@@ -525,7 +525,7 @@ namespace sw
auto it = spirvShader->outputBuiltins.find(spv::BuiltInPosition);
assert(it != spirvShader->outputBuiltins.end());
assert(it->second.SizeInComponents == 4);
- auto &pos = routine.getValue(it->second.Id);
+ auto &pos = routine.getVariable(it->second.Id);
auto posX = pos[it->second.FirstComponent];
auto posY = pos[it->second.FirstComponent + 1];
auto posZ = pos[it->second.FirstComponent + 2];
@@ -564,7 +564,7 @@ namespace sw
if (it != spirvShader->outputBuiltins.end())
{
assert(it->second.SizeInComponents == 1);
- auto psize = routine.getValue(it->second.Id)[it->second.FirstComponent];
+ auto psize = routine.getVariable(it->second.Id)[it->second.FirstComponent];
*Pointer<Float>(cacheLine + OFFSET(Vertex,builtins.pointSize) + sizeof(Vertex) * 0) = Extract(psize, 0);
*Pointer<Float>(cacheLine + OFFSET(Vertex,builtins.pointSize) + sizeof(Vertex) * 1) = Extract(psize, 1);
*Pointer<Float>(cacheLine + OFFSET(Vertex,builtins.pointSize) + sizeof(Vertex) * 2) = Extract(psize, 2);
diff --git a/chromium/third_party/swiftshader/src/Reactor/BUILD.gn b/chromium/third_party/swiftshader/src/Reactor/BUILD.gn
index c983c436126..7e3cdd34d64 100644
--- a/chromium/third_party/swiftshader/src/Reactor/BUILD.gn
+++ b/chromium/third_party/swiftshader/src/Reactor/BUILD.gn
@@ -294,6 +294,7 @@ swiftshader_source_set("swiftshader_reactor") {
]
sources = [
+ "Reactor.cpp",
"Routine.cpp",
"Debug.cpp",
"ExecutableMemory.cpp",
diff --git a/chromium/third_party/swiftshader/src/Reactor/Debug.cpp b/chromium/third_party/swiftshader/src/Reactor/Debug.cpp
index adfcabdc973..7f0d2cddd9a 100644
--- a/chromium/third_party/swiftshader/src/Reactor/Debug.cpp
+++ b/chromium/third_party/swiftshader/src/Reactor/Debug.cpp
@@ -14,26 +14,61 @@
#include "Debug.hpp"
-#include <stdio.h>
+#include <string>
#include <stdarg.h>
namespace rr
{
-void trace(const char *format, ...)
+
+void tracev(const char *format, va_list args)
{
+#ifndef RR_DISABLE_TRACE
if(false)
{
- FILE *file = fopen("debug.txt", "a");
+ FILE *file = fopen(TRACE_OUTPUT_FILE, "a");
if(file)
{
- va_list vararg;
- va_start(vararg, format);
- vfprintf(file, format, vararg);
- va_end(vararg);
-
+ vfprintf(file, format, args);
fclose(file);
}
}
+#endif
+}
+
+void trace(const char *format, ...)
+{
+ va_list vararg;
+ va_start(vararg, format);
+ tracev(format, vararg);
+ va_end(vararg);
+}
+
+void warn(const char *format, ...)
+{
+ va_list vararg;
+ va_start(vararg, format);
+ tracev(format, vararg);
+ va_end(vararg);
+
+ va_start(vararg, format);
+ vfprintf(stderr, format, vararg);
+ va_end(vararg);
}
-} \ No newline at end of file
+
+void abort(const char *format, ...)
+{
+ va_list vararg;
+
+ va_start(vararg, format);
+ tracev(format, vararg);
+ va_end(vararg);
+
+ va_start(vararg, format);
+ vfprintf(stderr, format, vararg);
+ va_end(vararg);
+
+ ::abort();
+}
+
+} // namespace rr
diff --git a/chromium/third_party/swiftshader/src/Reactor/Debug.hpp b/chromium/third_party/swiftshader/src/Reactor/Debug.hpp
index 720b38ac3e7..d2b3a1fa217 100644
--- a/chromium/third_party/swiftshader/src/Reactor/Debug.hpp
+++ b/chromium/third_party/swiftshader/src/Reactor/Debug.hpp
@@ -12,41 +12,100 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#ifndef Debug_hpp
-#define Debug_hpp
+// debug.h: Debugging utilities.
-#ifdef __ANDROID__
-#include "DebugAndroid.hpp"
-#else
+#ifndef rr_DEBUG_H_
+#define rr_DEBUG_H_
+#include <stdlib.h>
#include <assert.h>
#include <stdio.h>
-#undef min
-#undef max
+#if !defined(TRACE_OUTPUT_FILE)
+#define TRACE_OUTPUT_FILE "debug.txt"
+#endif
namespace rr
{
-void trace(const char *format, ...);
+ // Outputs text to the debugging log
+ void trace(const char *format, ...);
+ inline void trace() {}
-#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
- #define TRACE(format, ...) trace("[0x%0.8X]%s(" format ")\n", this, __FUNCTION__, ##__VA_ARGS__)
+ // Outputs text to the debugging log and prints to stderr.
+ void warn(const char *format, ...);
+ inline void warn() {}
+
+ // Outputs the message to the debugging log and stderr, and calls abort().
+ void abort(const char *format, ...);
+}
+
+// A macro to output a trace of a function call and its arguments to the
+// debugging log. Disabled if RR_DISABLE_TRACE is defined.
+#if defined(RR_DISABLE_TRACE)
+#define TRACE(message, ...) (void(0))
#else
- #define TRACE(...) ((void)0)
+#define TRACE(message, ...) rr::trace("%s:%d TRACE: " message "\n", __FILE__, __LINE__, ##__VA_ARGS__)
#endif
+// A macro to print a warning message to the debugging log and stderr to denote
+// an issue that needs fixing.
+#define FIXME(message, ...) rr::warn("%s:%d FIXME: " message "\n", __FILE__, __LINE__, ##__VA_ARGS__);
+
+// A macro to print a warning message to the debugging log and stderr.
+#define WARN(message, ...) rr::warn("%s:%d WARNING: " message "\n", __FILE__, __LINE__, ##__VA_ARGS__);
+
+// A macro that prints the message to the debugging log and stderr and
+// immediately aborts execution of the application.
+//
+// Note: This will terminate the application regardless of build flags!
+// Use with extreme caution!
+#undef ABORT
+#define ABORT(message, ...) rr::abort("%s:%d ABORT: " message "\n", __FILE__, __LINE__, ##__VA_ARGS__)
+
+// A macro that delegates to:
+// ABORT() in debug builds (!NDEBUG || DCHECK_ALWAYS_ON)
+// or
+// WARN() in release builds (NDEBUG && !DCHECK_ALWAYS_ON)
+#undef DABORT
#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
- #define UNIMPLEMENTED() {trace("\t! Unimplemented: %s(%d)\n", __FUNCTION__, __LINE__); ASSERT(false);}
+#define DABORT(message, ...) ABORT(message, ##__VA_ARGS__)
#else
- #define UNIMPLEMENTED() ((void)0)
+#define DABORT(message, ...) WARN(message, ##__VA_ARGS__)
#endif
+// A macro asserting a condition.
+// If the condition fails, the condition and message is passed to DABORT().
+#undef ASSERT_MSG
+#define ASSERT_MSG(expression, format, ...) do { \
+ if(!(expression)) { \
+ DABORT("ASSERT(%s): " format "\n", #expression, ##__VA_ARGS__); \
+ } } while(0)
+
+// A macro asserting a condition.
+// If the condition fails, the condition is passed to DABORT().
+#undef ASSERT
+#define ASSERT(expression) do { \
+ if(!(expression)) { \
+ DABORT("ASSERT(%s)\n", #expression); \
+ } } while(0)
+
+// A macro to indicate unimplemented functionality.
+#undef UNIMPLEMENTED
+#define UNIMPLEMENTED(format, ...) DABORT("UNIMPLEMENTED: " format, ##__VA_ARGS__)
+
+// A macro for code which is not expected to be reached under valid assumptions.
+#undef UNREACHABLE
+#define UNREACHABLE(format, ...) DABORT("UNREACHABLE: " format, ##__VA_ARGS__)
+
+// A macro asserting a condition and performing a return.
+#undef ASSERT_OR_RETURN
#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
- #define ASSERT(expression) {if(!(expression)) trace("\t! Assert failed in %s(%d): " #expression "\n", __FUNCTION__, __LINE__); assert(expression);}
+#define ASSERT_OR_RETURN(expression) ASSERT(expression)
#else
- #define ASSERT assert
+#define ASSERT_OR_RETURN(expression) do { \
+ if(!(expression)) { \
+ return; \
+ } } while(0)
#endif
-}
-#endif // __ANDROID__
-#endif // Debug_hpp
+#endif // rr_DEBUG_H_
diff --git a/chromium/third_party/swiftshader/src/Reactor/ExecutableMemory.cpp b/chromium/third_party/swiftshader/src/Reactor/ExecutableMemory.cpp
index 67d84ea2f1a..bbde2ab64ce 100644
--- a/chromium/third_party/swiftshader/src/Reactor/ExecutableMemory.cpp
+++ b/chromium/third_party/swiftshader/src/Reactor/ExecutableMemory.cpp
@@ -57,14 +57,21 @@ void *allocateRaw(size_t bytes, size_t alignment)
ASSERT((alignment & (alignment - 1)) == 0); // Power of 2 alignment.
#if defined(LINUX_ENABLE_NAMED_MMAP)
- void *allocation;
- int result = posix_memalign(&allocation, alignment, bytes);
- if(result != 0)
+ if(alignment < sizeof(void*))
{
- errno = result;
- allocation = nullptr;
+ return malloc(bytes);
+ }
+ else
+ {
+ void *allocation;
+ int result = posix_memalign(&allocation, alignment, bytes);
+ if(result != 0)
+ {
+ errno = result;
+ allocation = nullptr;
+ }
+ return allocation;
}
- return allocation;
#else
unsigned char *block = new unsigned char[bytes + sizeof(Allocation) + alignment];
unsigned char *aligned = nullptr;
diff --git a/chromium/third_party/swiftshader/src/Reactor/LLVMReactor.cpp b/chromium/third_party/swiftshader/src/Reactor/LLVMReactor.cpp
index ea1bebbe281..6c302079de1 100644
--- a/chromium/third_party/swiftshader/src/Reactor/LLVMReactor.cpp
+++ b/chromium/third_party/swiftshader/src/Reactor/LLVMReactor.cpp
@@ -13,6 +13,9 @@
// limitations under the License.
#include "Reactor.hpp"
+#include "Debug.hpp"
+#include "LLVMReactor.hpp"
+#include "LLVMReactorDebugInfo.hpp"
#include "x86.hpp"
#include "CPUID.hpp"
@@ -92,7 +95,7 @@
#if defined(__x86_64__) && defined(_WIN32)
extern "C" void X86CompilationCallback()
{
- assert(false); // UNIMPLEMENTED
+ UNIMPLEMENTED("X86CompilationCallback");
}
#endif
@@ -116,6 +119,10 @@ namespace
llvm::Module *module = nullptr;
llvm::Function *function = nullptr;
+#ifdef ENABLE_RR_DEBUG_INFO
+ std::unique_ptr<rr::DebugInfo> debugInfo;
+#endif
+
rr::MutexLock codegenMutex;
#ifdef ENABLE_RR_PRINT
@@ -235,7 +242,7 @@ namespace
}
else
{
- assert(numBits <= 64);
+ ASSERT_MSG(numBits <= 64, "numBits: %d", int(numBits));
uint64_t maxVal = (numBits == 64) ? ~0ULL : (1ULL << numBits) - 1;
max = llvm::ConstantInt::get(extTy, maxVal, false);
min = llvm::ConstantInt::get(extTy, 0, false);
@@ -361,7 +368,7 @@ namespace
llvm::cast<llvm::IntegerType>(dstTy->getElementType());
uint64_t truncNumBits = dstElemTy->getIntegerBitWidth();
- assert(truncNumBits < 64 && "shift 64 must be handled separately");
+ ASSERT_MSG(truncNumBits < 64, "shift 64 must be handled separately. truncNumBits: %d", int(truncNumBits));
llvm::Constant *max, *min;
if (isSigned)
{
@@ -451,6 +458,12 @@ namespace
namespace rr
{
+ const Capabilities Caps =
+ {
+ true, // CallSupported
+ };
+
+
#if REACTOR_LLVM_VERSION < 7
class LLVMReactorJIT
{
@@ -530,7 +543,7 @@ namespace rr
case SCCP: passManager->add(llvm::createSCCPPass()); break;
case ScalarReplAggregates: passManager->add(llvm::createScalarReplAggregatesPass()); break;
default:
- assert(false);
+ UNREACHABLE("optimization[pass]: %d, pass: %d", int(optimization[pass]), int(pass));
}
}
}
@@ -548,11 +561,39 @@ namespace rr
public:
ExternalFunctionSymbolResolver()
{
+ struct F { static void nop() {} };
+ func_.emplace("nop", reinterpret_cast<void*>(F::nop));
+
func_.emplace("floorf", reinterpret_cast<void*>(floorf));
func_.emplace("nearbyintf", reinterpret_cast<void*>(nearbyintf));
func_.emplace("truncf", reinterpret_cast<void*>(truncf));
func_.emplace("printf", reinterpret_cast<void*>(printf));
func_.emplace("puts", reinterpret_cast<void*>(puts));
+ func_.emplace("fmodf", reinterpret_cast<void*>(fmodf));
+ func_.emplace("sinf", reinterpret_cast<void*>(sinf));
+ func_.emplace("cosf", reinterpret_cast<void*>(cosf));
+ func_.emplace("asinf", reinterpret_cast<void*>(asinf));
+ func_.emplace("acosf", reinterpret_cast<void*>(acosf));
+ func_.emplace("atanf", reinterpret_cast<void*>(atanf));
+ func_.emplace("sinhf", reinterpret_cast<void*>(sinhf));
+ func_.emplace("coshf", reinterpret_cast<void*>(coshf));
+ func_.emplace("tanhf", reinterpret_cast<void*>(tanhf));
+ func_.emplace("asinhf", reinterpret_cast<void*>(asinhf));
+ func_.emplace("acoshf", reinterpret_cast<void*>(acoshf));
+ func_.emplace("atanhf", reinterpret_cast<void*>(atanhf));
+ func_.emplace("atan2f", reinterpret_cast<void*>(atan2f));
+ func_.emplace("powf", reinterpret_cast<void*>(powf));
+ func_.emplace("expf", reinterpret_cast<void*>(expf));
+ func_.emplace("logf", reinterpret_cast<void*>(logf));
+ func_.emplace("exp2f", reinterpret_cast<void*>(exp2f));
+ func_.emplace("log2f", reinterpret_cast<void*>(log2f));
+
+#ifdef __APPLE__
+ // LLVM uses this function on macOS for tan.
+ func_.emplace("sincosf_stret", reinterpret_cast<void*>(__sincosf_stret));
+#elif defined(__linux__)
+ func_.emplace("sincosf", reinterpret_cast<void*>(sincosf));
+#endif // __APPLE__
}
void *findSymbol(const std::string &name) const
@@ -563,7 +604,8 @@ namespace rr
while (trimmed[0] == '_') { trimmed++; }
FunctionMap::const_iterator it = func_.find(trimmed);
- assert(it != func_.end()); // Missing functions will likely make the module fail in exciting non-obvious ways.
+ // Missing functions will likely make the module fail in exciting non-obvious ways.
+ ASSERT_MSG(it != func_.end(), "Missing external function: '%s'", name.c_str());
return it->second;
}
};
@@ -606,6 +648,9 @@ namespace rr
}
})),
targetMachine(llvm::EngineBuilder()
+#ifdef ENABLE_RR_DEBUG_INFO
+ .setOptLevel(llvm::CodeGenOpt::None)
+#endif // ENABLE_RR_DEBUG_INFO
.setMArch(arch)
.setMAttrs(mattrs)
.setTargetOptions(targetOpts)
@@ -617,7 +662,25 @@ namespace rr
return ObjLayer::Resources{
std::make_shared<llvm::SectionMemoryManager>(),
resolver};
- }),
+ },
+ ObjLayer::NotifyLoadedFtor(),
+ [](llvm::orc::VModuleKey, const llvm::object::ObjectFile &Obj, const llvm::RuntimeDyld::LoadedObjectInfo &L) {
+#ifdef ENABLE_RR_DEBUG_INFO
+ if (debugInfo != nullptr)
+ {
+ debugInfo->NotifyObjectEmitted(Obj, L);
+ }
+#endif // ENABLE_RR_DEBUG_INFO
+ },
+ [](llvm::orc::VModuleKey, const llvm::object::ObjectFile &Obj) {
+#ifdef ENABLE_RR_DEBUG_INFO
+ if (debugInfo != nullptr)
+ {
+ debugInfo->NotifyFreeingObject(Obj);
+ }
+#endif // ENABLE_RR_DEBUG_INFO
+ }
+ ),
compileLayer(objLayer, llvm::orc::SimpleCompiler(*targetMachine)),
emittedFunctionsNum(0)
{
@@ -668,6 +731,13 @@ namespace rr
void optimize(llvm::Module *module)
{
+#ifdef ENABLE_RR_DEBUG_INFO
+ if (debugInfo != nullptr)
+ {
+ return; // Don't optimize if we're generating debug info.
+ }
+#endif // ENABLE_RR_DEBUG_INFO
+
std::unique_ptr<llvm::legacy::PassManager> passManager(
new llvm::legacy::PassManager());
@@ -688,7 +758,7 @@ namespace rr
case SCCP: passManager->add(llvm::createSCCPPass()); break;
case ScalarReplAggregates: passManager->add(llvm::createSROAPass()); break;
default:
- assert(false);
+ UNREACHABLE("optimization[pass]: %d, pass: %d", int(optimization[pass]), int(pass));
}
}
@@ -710,58 +780,55 @@ namespace rr
Optimization optimization[10] = {InstructionCombining, Disabled};
- enum EmulatedType
+ // The abstract Type* types are implemented as LLVM types, except that
+ // 64-bit vectors are emulated using 128-bit ones to avoid use of MMX in x86
+ // and VFP in ARM, and eliminate the overhead of converting them to explicit
+ // 128-bit ones. LLVM types are pointers, so we can represent emulated types
+ // as abstract pointers with small enum values.
+ enum InternalType : uintptr_t
{
+ // Emulated types:
Type_v2i32,
Type_v4i16,
Type_v2i16,
Type_v8i8,
Type_v4i8,
Type_v2f32,
- EmulatedTypeCount
+ EmulatedTypeCount,
+ // Returned by asInternalType() to indicate that the abstract Type*
+ // should be interpreted as LLVM type pointer:
+ Type_LLVM
};
- llvm::Type *T(Type *t)
+ inline InternalType asInternalType(Type *type)
{
- uintptr_t type = reinterpret_cast<uintptr_t>(t);
- if(type < EmulatedTypeCount)
- {
- // Use 128-bit vectors to implement logically shorter ones.
- switch(type)
- {
- case Type_v2i32: return T(Int4::getType());
- case Type_v4i16: return T(Short8::getType());
- case Type_v2i16: return T(Short8::getType());
- case Type_v8i8: return T(Byte16::getType());
- case Type_v4i8: return T(Byte16::getType());
- case Type_v2f32: return T(Float4::getType());
- default: assert(false);
- }
- }
-
- return reinterpret_cast<llvm::Type*>(t);
+ InternalType t = static_cast<InternalType>(reinterpret_cast<uintptr_t>(type));
+ return (t < EmulatedTypeCount) ? t : Type_LLVM;
}
- inline Type *T(llvm::Type *t)
+ llvm::Type *T(Type *t)
{
- return reinterpret_cast<Type*>(t);
+ // Use 128-bit vectors to implement logically shorter ones.
+ switch(asInternalType(t))
+ {
+ case Type_v2i32: return T(Int4::getType());
+ case Type_v4i16: return T(Short8::getType());
+ case Type_v2i16: return T(Short8::getType());
+ case Type_v8i8: return T(Byte16::getType());
+ case Type_v4i8: return T(Byte16::getType());
+ case Type_v2f32: return T(Float4::getType());
+ case Type_LLVM: return reinterpret_cast<llvm::Type*>(t);
+ default:
+ UNREACHABLE("asInternalType(t): %d", int(asInternalType(t)));
+ return nullptr;
+ }
}
- Type *T(EmulatedType t)
+ Type *T(InternalType t)
{
return reinterpret_cast<Type*>(t);
}
- inline llvm::Value *V(Value *t)
- {
- return reinterpret_cast<llvm::Value*>(t);
- }
-
- inline Value *V(llvm::Value *t)
- {
- return reinterpret_cast<Value*>(t);
- }
-
inline std::vector<llvm::Type*> &T(std::vector<Type*> &t)
{
return reinterpret_cast<std::vector<llvm::Type*>&>(t);
@@ -779,42 +846,79 @@ namespace rr
static size_t typeSize(Type *type)
{
- uintptr_t t = reinterpret_cast<uintptr_t>(type);
- if(t < EmulatedTypeCount)
+ switch(asInternalType(type))
{
- switch(t)
+ case Type_v2i32: return 8;
+ case Type_v4i16: return 8;
+ case Type_v2i16: return 4;
+ case Type_v8i8: return 8;
+ case Type_v4i8: return 4;
+ case Type_v2f32: return 8;
+ case Type_LLVM:
{
- case Type_v2i32: return 8;
- case Type_v4i16: return 8;
- case Type_v2i16: return 4;
- case Type_v8i8: return 8;
- case Type_v4i8: return 4;
- case Type_v2f32: return 8;
- default: assert(false);
+ llvm::Type *t = T(type);
+
+ if(t->isPointerTy())
+ {
+ return sizeof(void*);
+ }
+
+ // At this point we should only have LLVM 'primitive' types.
+ unsigned int bits = t->getPrimitiveSizeInBits();
+ ASSERT_MSG(bits != 0, "bits: %d", int(bits));
+
+ // TODO(capn): Booleans are 1 bit integers in LLVM's SSA type system,
+ // but are typically stored as one byte. The DataLayout structure should
+ // be used here and many other places if this assumption fails.
+ return (bits + 7) / 8;
}
+ break;
+ default:
+ UNREACHABLE("asInternalType(type): %d", int(asInternalType(type)));
+ return 0;
}
-
- return T(type)->getPrimitiveSizeInBits() / 8;
}
static unsigned int elementCount(Type *type)
{
- uintptr_t t = reinterpret_cast<uintptr_t>(type);
- if(t < EmulatedTypeCount)
+ switch(asInternalType(type))
{
- switch(t)
- {
- case Type_v2i32: return 2;
- case Type_v4i16: return 4;
- case Type_v2i16: return 2;
- case Type_v8i8: return 8;
- case Type_v4i8: return 4;
- case Type_v2f32: return 2;
- default: assert(false);
- }
+ case Type_v2i32: return 2;
+ case Type_v4i16: return 4;
+ case Type_v2i16: return 2;
+ case Type_v8i8: return 8;
+ case Type_v4i8: return 4;
+ case Type_v2f32: return 2;
+ case Type_LLVM: return llvm::cast<llvm::VectorType>(T(type))->getNumElements();
+ default:
+ UNREACHABLE("asInternalType(type): %d", int(asInternalType(type)));
+ return 0;
+ }
+ }
+
+ static llvm::AtomicOrdering atomicOrdering(bool atomic, std::memory_order memoryOrder)
+ {
+ #if REACTOR_LLVM_VERSION < 7
+ return llvm::AtomicOrdering::NotAtomic;
+ #endif
+
+ if(!atomic)
+ {
+ return llvm::AtomicOrdering::NotAtomic;
}
- return llvm::cast<llvm::VectorType>(T(type))->getNumElements();
+ switch(memoryOrder)
+ {
+ case std::memory_order_relaxed: return llvm::AtomicOrdering::Monotonic; // https://llvm.org/docs/Atomics.html#monotonic
+ case std::memory_order_consume: return llvm::AtomicOrdering::Acquire; // https://llvm.org/docs/Atomics.html#acquire: "It should also be used for C++11/C11 memory_order_consume."
+ case std::memory_order_acquire: return llvm::AtomicOrdering::Acquire;
+ case std::memory_order_release: return llvm::AtomicOrdering::Release;
+ case std::memory_order_acq_rel: return llvm::AtomicOrdering::AcquireRelease;
+ case std::memory_order_seq_cst: return llvm::AtomicOrdering::SequentiallyConsistent;
+ default:
+ UNREACHABLE("memoryOrder: %d", int(memoryOrder));
+ return llvm::AtomicOrdering::AcquireRelease;
+ }
}
Nucleus::Nucleus()
@@ -956,6 +1060,13 @@ namespace rr
::module->print(file, 0);
}
+#ifdef ENABLE_RR_DEBUG_INFO
+ if (debugInfo != nullptr)
+ {
+ debugInfo->Finalize();
+ }
+#endif // ENABLE_RR_DEBUG_INFO
+
LLVMRoutine *routine = ::reactorJIT->acquireRoutine(::function);
return routine;
@@ -1008,6 +1119,9 @@ namespace rr
void Nucleus::setInsertBlock(BasicBlock *basicBlock)
{
// assert(::builder->GetInsertBlock()->back().isTerminator());
+
+ Variable::materializeAll();
+
::builder->SetInsertPoint(B(basicBlock));
}
@@ -1028,6 +1142,10 @@ namespace rr
::function->addFnAttr("stack-probe-size", "1048576");
#endif
+#ifdef ENABLE_RR_DEBUG_INFO
+ ::debugInfo = std::unique_ptr<DebugInfo>(new DebugInfo(::builder, ::context, ::module, ::function));
+#endif // ENABLE_RR_DEBUG_INFO
+
::builder->SetInsertPoint(llvm::BasicBlock::Create(*::context, "", ::function));
}
@@ -1046,225 +1164,288 @@ namespace rr
void Nucleus::createRetVoid()
{
+ RR_DEBUG_INFO_UPDATE_LOC();
+
+ // Code generated after this point is unreachable, so any variables
+ // being read can safely return an undefined value. We have to avoid
+ // materializing variables after the terminator ret instruction.
+ Variable::killUnmaterialized();
+
::builder->CreateRetVoid();
}
void Nucleus::createRet(Value *v)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
+
+ // Code generated after this point is unreachable, so any variables
+ // being read can safely return an undefined value. We have to avoid
+ // materializing variables after the terminator ret instruction.
+ Variable::killUnmaterialized();
+
::builder->CreateRet(V(v));
}
void Nucleus::createBr(BasicBlock *dest)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
+ Variable::materializeAll();
+
::builder->CreateBr(B(dest));
}
void Nucleus::createCondBr(Value *cond, BasicBlock *ifTrue, BasicBlock *ifFalse)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
+ Variable::materializeAll();
::builder->CreateCondBr(V(cond), B(ifTrue), B(ifFalse));
}
Value *Nucleus::createAdd(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateAdd(V(lhs), V(rhs)));
}
Value *Nucleus::createSub(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateSub(V(lhs), V(rhs)));
}
Value *Nucleus::createMul(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateMul(V(lhs), V(rhs)));
}
Value *Nucleus::createUDiv(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateUDiv(V(lhs), V(rhs)));
}
Value *Nucleus::createSDiv(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateSDiv(V(lhs), V(rhs)));
}
Value *Nucleus::createFAdd(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFAdd(V(lhs), V(rhs)));
}
Value *Nucleus::createFSub(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFSub(V(lhs), V(rhs)));
}
Value *Nucleus::createFMul(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFMul(V(lhs), V(rhs)));
}
Value *Nucleus::createFDiv(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFDiv(V(lhs), V(rhs)));
}
Value *Nucleus::createURem(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateURem(V(lhs), V(rhs)));
}
Value *Nucleus::createSRem(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateSRem(V(lhs), V(rhs)));
}
Value *Nucleus::createFRem(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFRem(V(lhs), V(rhs)));
}
Value *Nucleus::createShl(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateShl(V(lhs), V(rhs)));
}
Value *Nucleus::createLShr(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateLShr(V(lhs), V(rhs)));
}
Value *Nucleus::createAShr(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateAShr(V(lhs), V(rhs)));
}
Value *Nucleus::createAnd(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateAnd(V(lhs), V(rhs)));
}
Value *Nucleus::createOr(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateOr(V(lhs), V(rhs)));
}
Value *Nucleus::createXor(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateXor(V(lhs), V(rhs)));
}
Value *Nucleus::createNeg(Value *v)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateNeg(V(v)));
}
Value *Nucleus::createFNeg(Value *v)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFNeg(V(v)));
}
Value *Nucleus::createNot(Value *v)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateNot(V(v)));
}
- Value *Nucleus::createLoad(Value *ptr, Type *type, bool isVolatile, unsigned int alignment)
- {
- uintptr_t t = reinterpret_cast<uintptr_t>(type);
- if(t < EmulatedTypeCount)
- {
- switch(t)
+ Value *Nucleus::createLoad(Value *ptr, Type *type, bool isVolatile, unsigned int alignment, bool atomic, std::memory_order memoryOrder)
+ {
+ RR_DEBUG_INFO_UPDATE_LOC();
+ switch(asInternalType(type))
+ {
+ case Type_v2i32:
+ case Type_v4i16:
+ case Type_v8i8:
+ case Type_v2f32:
+ return createBitCast(
+ createInsertElement(
+ V(llvm::UndefValue::get(llvm::VectorType::get(T(Long::getType()), 2))),
+ createLoad(createBitCast(ptr, Pointer<Long>::getType()), Long::getType(), isVolatile, alignment, atomic, memoryOrder),
+ 0),
+ type);
+ case Type_v2i16:
+ case Type_v4i8:
+ if(alignment != 0) // Not a local variable (all vectors are 128-bit).
{
- case Type_v2i32:
- case Type_v4i16:
- case Type_v8i8:
- case Type_v2f32:
- return createBitCast(
- createInsertElement(
- V(llvm::UndefValue::get(llvm::VectorType::get(T(Long::getType()), 2))),
- createLoad(createBitCast(ptr, Pointer<Long>::getType()), Long::getType(), isVolatile, alignment),
- 0),
- type);
- case Type_v2i16:
- case Type_v4i8:
- if(alignment != 0) // Not a local variable (all vectors are 128-bit).
- {
- Value *u = V(llvm::UndefValue::get(llvm::VectorType::get(T(Long::getType()), 2)));
- Value *i = createLoad(createBitCast(ptr, Pointer<Int>::getType()), Int::getType(), isVolatile, alignment);
- i = createZExt(i, Long::getType());
- Value *v = createInsertElement(u, i, 0);
- return createBitCast(v, type);
- }
- break;
- default:
- assert(false);
+ Value *u = V(llvm::UndefValue::get(llvm::VectorType::get(T(Long::getType()), 2)));
+ Value *i = createLoad(createBitCast(ptr, Pointer<Int>::getType()), Int::getType(), isVolatile, alignment, atomic, memoryOrder);
+ i = createZExt(i, Long::getType());
+ Value *v = createInsertElement(u, i, 0);
+ return createBitCast(v, type);
}
- }
-
- assert(V(ptr)->getType()->getContainedType(0) == T(type));
- return V(::builder->Insert(new llvm::LoadInst(V(ptr), "", isVolatile, alignment)));
- }
+ // Fallthrough to non-emulated case.
+ case Type_LLVM:
+ {
+ ASSERT(V(ptr)->getType()->getContainedType(0) == T(type));
+ auto load = new llvm::LoadInst(V(ptr), "", isVolatile, alignment);
+ load->setAtomic(atomicOrdering(atomic, memoryOrder));
- Value *Nucleus::createStore(Value *value, Value *ptr, Type *type, bool isVolatile, unsigned int alignment)
- {
- uintptr_t t = reinterpret_cast<uintptr_t>(type);
- if(t < EmulatedTypeCount)
- {
- switch(t)
+ return V(::builder->Insert(load));
+ }
+ default:
+ UNREACHABLE("asInternalType(type): %d", int(asInternalType(type)));
+ return nullptr;
+ }
+ }
+
+ Value *Nucleus::createStore(Value *value, Value *ptr, Type *type, bool isVolatile, unsigned int alignment, bool atomic, std::memory_order memoryOrder)
+ {
+ RR_DEBUG_INFO_UPDATE_LOC();
+ switch(asInternalType(type))
+ {
+ case Type_v2i32:
+ case Type_v4i16:
+ case Type_v8i8:
+ case Type_v2f32:
+ createStore(
+ createExtractElement(
+ createBitCast(value, T(llvm::VectorType::get(T(Long::getType()), 2))), Long::getType(), 0),
+ createBitCast(ptr, Pointer<Long>::getType()),
+ Long::getType(), isVolatile, alignment, atomic, memoryOrder);
+ return value;
+ case Type_v2i16:
+ case Type_v4i8:
+ if(alignment != 0) // Not a local variable (all vectors are 128-bit).
{
- case Type_v2i32:
- case Type_v4i16:
- case Type_v8i8:
- case Type_v2f32:
createStore(
- createExtractElement(
- createBitCast(value, T(llvm::VectorType::get(T(Long::getType()), 2))), Long::getType(), 0),
- createBitCast(ptr, Pointer<Long>::getType()),
- Long::getType(), isVolatile, alignment);
+ createExtractElement(createBitCast(value, Int4::getType()), Int::getType(), 0),
+ createBitCast(ptr, Pointer<Int>::getType()),
+ Int::getType(), isVolatile, alignment, atomic, memoryOrder);
return value;
- case Type_v2i16:
- case Type_v4i8:
- if(alignment != 0) // Not a local variable (all vectors are 128-bit).
- {
- createStore(
- createExtractElement(createBitCast(value, Int4::getType()), Int::getType(), 0),
- createBitCast(ptr, Pointer<Int>::getType()),
- Int::getType(), isVolatile, alignment);
- return value;
- }
- break;
- default:
- assert(false);
}
- }
+ // Fallthrough to non-emulated case.
+ case Type_LLVM:
+ {
+ ASSERT(V(ptr)->getType()->getContainedType(0) == T(type));
+ auto store = ::builder->Insert(new llvm::StoreInst(V(value), V(ptr), isVolatile, alignment));
+ store->setAtomic(atomicOrdering(atomic, memoryOrder));
- assert(V(ptr)->getType()->getContainedType(0) == T(type));
- ::builder->Insert(new llvm::StoreInst(V(value), V(ptr), isVolatile, alignment));
- return value;
+ return value;
+ }
+ default:
+ UNREACHABLE("asInternalType(type): %d", int(asInternalType(type)));
+ return nullptr;
+ }
}
Value *Nucleus::createGEP(Value *ptr, Type *type, Value *index, bool unsignedIndex)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
+ ASSERT(V(ptr)->getType()->getContainedType(0) == T(type));
if(sizeof(void*) == 8)
{
- if(unsignedIndex)
- {
- index = createZExt(index, Long::getType());
- }
- else
- {
- index = createSExt(index, Long::getType());
- }
-
- index = createMul(index, createConstantLong((int64_t)typeSize(type)));
- }
- else
- {
- index = createMul(index, createConstantInt((int)typeSize(type)));
- }
-
- assert(V(ptr)->getType()->getContainedType(0) == T(type));
+ // LLVM manual: "When indexing into an array, pointer or vector,
+ // integers of any width are allowed, and they are not required to
+ // be constant. These integers are treated as signed values where
+ // relevant."
+ //
+ // Thus if we want indexes to be treated as unsigned we have to
+ // zero-extend them ourselves.
+ //
+ // Note that this is not because we want to address anywhere near
+ // 4 GB of data. Instead this is important for performance because
+ // x86 supports automatic zero-extending of 32-bit registers to
+ // 64-bit. Thus when indexing into an array using a uint32 is
+ // actually faster than an int32.
+ index = unsignedIndex ?
+ createZExt(index, Long::getType()) :
+ createSExt(index, Long::getType());
+ }
+
+ // For non-emulated types we can rely on LLVM's GEP to calculate the
+ // effective address correctly.
+ if(asInternalType(type) == Type_LLVM)
+ {
+ return V(::builder->CreateGEP(V(ptr), V(index)));
+ }
+
+ // For emulated types we have to multiply the index by the intended
+ // type size ourselves to obain the byte offset.
+ index = (sizeof(void*) == 8) ?
+ createMul(index, createConstantLong((int64_t)typeSize(type))) :
+ createMul(index, createConstantInt((int)typeSize(type)));
+
+ // Cast to a byte pointer, apply the byte offset, and cast back to the
+ // original pointer type.
return createBitCast(
V(::builder->CreateGEP(V(createBitCast(ptr, T(llvm::PointerType::get(T(Byte::getType()), 0)))), V(index))),
T(llvm::PointerType::get(T(type), 0)));
@@ -1272,46 +1453,55 @@ namespace rr
Value *Nucleus::createAtomicAdd(Value *ptr, Value *value)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateAtomicRMW(llvm::AtomicRMWInst::Add, V(ptr), V(value), llvm::AtomicOrdering::SequentiallyConsistent));
}
Value *Nucleus::createTrunc(Value *v, Type *destType)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateTrunc(V(v), T(destType)));
}
Value *Nucleus::createZExt(Value *v, Type *destType)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateZExt(V(v), T(destType)));
}
Value *Nucleus::createSExt(Value *v, Type *destType)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateSExt(V(v), T(destType)));
}
Value *Nucleus::createFPToSI(Value *v, Type *destType)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFPToSI(V(v), T(destType)));
}
Value *Nucleus::createSIToFP(Value *v, Type *destType)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateSIToFP(V(v), T(destType)));
}
Value *Nucleus::createFPTrunc(Value *v, Type *destType)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFPTrunc(V(v), T(destType)));
}
Value *Nucleus::createFPExt(Value *v, Type *destType)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFPExt(V(v), T(destType)));
}
Value *Nucleus::createBitCast(Value *v, Type *destType)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// Bitcasts must be between types of the same logical size. But with emulated narrow vectors we need
// support for casting between scalars and wide vectors. Emulate them by writing to the stack and
// reading back as the destination type.
@@ -1335,141 +1525,169 @@ namespace rr
Value *Nucleus::createICmpEQ(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateICmpEQ(V(lhs), V(rhs)));
}
Value *Nucleus::createICmpNE(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateICmpNE(V(lhs), V(rhs)));
}
Value *Nucleus::createICmpUGT(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateICmpUGT(V(lhs), V(rhs)));
}
Value *Nucleus::createICmpUGE(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateICmpUGE(V(lhs), V(rhs)));
}
Value *Nucleus::createICmpULT(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateICmpULT(V(lhs), V(rhs)));
}
Value *Nucleus::createICmpULE(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateICmpULE(V(lhs), V(rhs)));
}
Value *Nucleus::createICmpSGT(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateICmpSGT(V(lhs), V(rhs)));
}
Value *Nucleus::createICmpSGE(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateICmpSGE(V(lhs), V(rhs)));
}
Value *Nucleus::createICmpSLT(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateICmpSLT(V(lhs), V(rhs)));
}
Value *Nucleus::createICmpSLE(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateICmpSLE(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpOEQ(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpOEQ(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpOGT(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpOGT(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpOGE(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpOGE(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpOLT(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpOLT(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpOLE(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpOLE(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpONE(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpONE(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpORD(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpORD(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpUNO(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpUNO(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpUEQ(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpUEQ(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpUGT(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpUGT(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpUGE(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpUGE(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpULT(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpULT(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpULE(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpULE(V(lhs), V(rhs)));
}
Value *Nucleus::createFCmpUNE(Value *lhs, Value *rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateFCmpUNE(V(lhs), V(rhs)));
}
Value *Nucleus::createExtractElement(Value *vector, Type *type, int index)
{
- assert(V(vector)->getType()->getContainedType(0) == T(type));
+ RR_DEBUG_INFO_UPDATE_LOC();
+ ASSERT(V(vector)->getType()->getContainedType(0) == T(type));
return V(::builder->CreateExtractElement(V(vector), V(createConstantInt(index))));
}
Value *Nucleus::createInsertElement(Value *vector, Value *element, int index)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateInsertElement(V(vector), V(element), V(createConstantInt(index))));
}
Value *Nucleus::createShuffleVector(Value *v1, Value *v2, const int *select)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
+
int size = llvm::cast<llvm::VectorType>(V(v1)->getType())->getNumElements();
const int maxSize = 16;
llvm::Constant *swizzle[maxSize];
- assert(size <= maxSize);
+ ASSERT(size <= maxSize);
for(int i = 0; i < size; i++)
{
@@ -1483,58 +1701,29 @@ namespace rr
Value *Nucleus::createSelect(Value *c, Value *ifTrue, Value *ifFalse)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(::builder->CreateSelect(V(c), V(ifTrue), V(ifFalse)));
}
SwitchCases *Nucleus::createSwitch(Value *control, BasicBlock *defaultBranch, unsigned numCases)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return reinterpret_cast<SwitchCases*>(::builder->CreateSwitch(V(control), B(defaultBranch), numCases));
}
void Nucleus::addSwitchCase(SwitchCases *switchCases, int label, BasicBlock *branch)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
llvm::SwitchInst *sw = reinterpret_cast<llvm::SwitchInst *>(switchCases);
sw->addCase(llvm::ConstantInt::get(llvm::Type::getInt32Ty(*::context), label, true), B(branch));
}
void Nucleus::createUnreachable()
{
+ RR_DEBUG_INFO_UPDATE_LOC();
::builder->CreateUnreachable();
}
- static Value *createSwizzle4(Value *val, unsigned char select)
- {
- int swizzle[4] =
- {
- (select >> 0) & 0x03,
- (select >> 2) & 0x03,
- (select >> 4) & 0x03,
- (select >> 6) & 0x03,
- };
-
- return Nucleus::createShuffleVector(val, val, swizzle);
- }
-
- static Value *createMask4(Value *lhs, Value *rhs, unsigned char select)
- {
- bool mask[4] = {false, false, false, false};
-
- mask[(select >> 0) & 0x03] = true;
- mask[(select >> 2) & 0x03] = true;
- mask[(select >> 4) & 0x03] = true;
- mask[(select >> 6) & 0x03] = true;
-
- int swizzle[4] =
- {
- mask[0] ? 4 : 0,
- mask[1] ? 5 : 1,
- mask[2] ? 6 : 2,
- mask[3] ? 7 : 3,
- };
-
- return Nucleus::createShuffleVector(lhs, rhs, swizzle);
- }
-
Type *Nucleus::getPointerType(Type *ElementType)
{
return T(llvm::PointerType::get(T(ElementType), 0));
@@ -1542,65 +1731,76 @@ namespace rr
Value *Nucleus::createNullValue(Type *Ty)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(llvm::Constant::getNullValue(T(Ty)));
}
Value *Nucleus::createConstantLong(int64_t i)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(llvm::ConstantInt::get(llvm::Type::getInt64Ty(*::context), i, true));
}
Value *Nucleus::createConstantInt(int i)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(llvm::ConstantInt::get(llvm::Type::getInt32Ty(*::context), i, true));
}
Value *Nucleus::createConstantInt(unsigned int i)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(llvm::ConstantInt::get(llvm::Type::getInt32Ty(*::context), i, false));
}
Value *Nucleus::createConstantBool(bool b)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(llvm::ConstantInt::get(llvm::Type::getInt1Ty(*::context), b));
}
Value *Nucleus::createConstantByte(signed char i)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(llvm::ConstantInt::get(llvm::Type::getInt8Ty(*::context), i, true));
}
Value *Nucleus::createConstantByte(unsigned char i)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(llvm::ConstantInt::get(llvm::Type::getInt8Ty(*::context), i, false));
}
Value *Nucleus::createConstantShort(short i)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(llvm::ConstantInt::get(llvm::Type::getInt16Ty(*::context), i, true));
}
Value *Nucleus::createConstantShort(unsigned short i)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(llvm::ConstantInt::get(llvm::Type::getInt16Ty(*::context), i, false));
}
Value *Nucleus::createConstantFloat(float x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(llvm::ConstantFP::get(T(Float::getType()), x));
}
Value *Nucleus::createNullPointer(Type *Ty)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return V(llvm::ConstantPointerNull::get(llvm::PointerType::get(T(Ty), 0)));
}
Value *Nucleus::createConstantVector(const int64_t *constants, Type *type)
{
- assert(llvm::isa<llvm::VectorType>(T(type)));
+ ASSERT(llvm::isa<llvm::VectorType>(T(type)));
const int numConstants = elementCount(type); // Number of provided constants for the (emulated) type.
const int numElements = llvm::cast<llvm::VectorType>(T(type))->getNumElements(); // Number of elements of the underlying vector type.
- assert(numElements <= 16 && numConstants <= numElements);
+ ASSERT(numElements <= 16 && numConstants <= numElements);
llvm::Constant *constantVector[16];
for(int i = 0; i < numElements; i++)
@@ -1613,10 +1813,10 @@ namespace rr
Value *Nucleus::createConstantVector(const double *constants, Type *type)
{
- assert(llvm::isa<llvm::VectorType>(T(type)));
+ ASSERT(llvm::isa<llvm::VectorType>(T(type)));
const int numConstants = elementCount(type); // Number of provided constants for the (emulated) type.
const int numElements = llvm::cast<llvm::VectorType>(T(type))->getNumElements(); // Number of elements of the underlying vector type.
- assert(numElements <= 8 && numConstants <= numElements);
+ ASSERT(numElements <= 8 && numConstants <= numElements);
llvm::Constant *constantVector[8];
for(int i = 0; i < numElements; i++)
@@ -1632,1092 +1832,31 @@ namespace rr
return T(llvm::Type::getVoidTy(*::context));
}
- Bool::Bool(Argument<Bool> argument)
- {
- storeValue(argument.value);
- }
-
- Bool::Bool(bool x)
- {
- storeValue(Nucleus::createConstantBool(x));
- }
-
- Bool::Bool(RValue<Bool> rhs)
- {
- storeValue(rhs.value);
- }
-
- Bool::Bool(const Bool &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Bool::Bool(const Reference<Bool> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Bool> Bool::operator=(RValue<Bool> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Bool> Bool::operator=(const Bool &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Bool>(value);
- }
-
- RValue<Bool> Bool::operator=(const Reference<Bool> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Bool>(value);
- }
-
- RValue<Bool> operator!(RValue<Bool> val)
- {
- return RValue<Bool>(Nucleus::createNot(val.value));
- }
-
- RValue<Bool> operator&&(RValue<Bool> lhs, RValue<Bool> rhs)
- {
- return RValue<Bool>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator||(RValue<Bool> lhs, RValue<Bool> rhs)
- {
- return RValue<Bool>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
Type *Bool::getType()
{
return T(llvm::Type::getInt1Ty(*::context));
}
- Byte::Byte(Argument<Byte> argument)
- {
- storeValue(argument.value);
- }
-
- Byte::Byte(RValue<Int> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, Byte::getType());
-
- storeValue(integer);
- }
-
- Byte::Byte(RValue<UInt> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, Byte::getType());
-
- storeValue(integer);
- }
-
- Byte::Byte(RValue<UShort> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, Byte::getType());
-
- storeValue(integer);
- }
-
- Byte::Byte(int x)
- {
- storeValue(Nucleus::createConstantByte((unsigned char)x));
- }
-
- Byte::Byte(unsigned char x)
- {
- storeValue(Nucleus::createConstantByte(x));
- }
-
- Byte::Byte(RValue<Byte> rhs)
- {
- storeValue(rhs.value);
- }
-
- Byte::Byte(const Byte &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Byte::Byte(const Reference<Byte> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Byte> Byte::operator=(RValue<Byte> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Byte> Byte::operator=(const Byte &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Byte>(value);
- }
-
- RValue<Byte> Byte::operator=(const Reference<Byte> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Byte>(value);
- }
-
- RValue<Byte> operator+(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator-(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator*(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator/(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createUDiv(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator%(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createURem(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator&(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator|(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator^(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator<<(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator>>(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createLShr(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator+=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Byte> operator-=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Byte> operator*=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<Byte> operator/=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<Byte> operator%=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<Byte> operator&=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Byte> operator|=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Byte> operator^=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<Byte> operator<<=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<Byte> operator>>=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<Byte> operator+(RValue<Byte> val)
- {
- return val;
- }
-
- RValue<Byte> operator-(RValue<Byte> val)
- {
- return RValue<Byte>(Nucleus::createNeg(val.value));
- }
-
- RValue<Byte> operator~(RValue<Byte> val)
- {
- return RValue<Byte>(Nucleus::createNot(val.value));
- }
-
- RValue<Byte> operator++(Byte &val, int) // Post-increment
- {
- RValue<Byte> res = val;
-
- Value *inc = Nucleus::createAdd(res.value, Nucleus::createConstantByte((unsigned char)1));
- val.storeValue(inc);
-
- return res;
- }
-
- const Byte &operator++(Byte &val) // Pre-increment
- {
- Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantByte((unsigned char)1));
- val.storeValue(inc);
-
- return val;
- }
-
- RValue<Byte> operator--(Byte &val, int) // Post-decrement
- {
- RValue<Byte> res = val;
-
- Value *inc = Nucleus::createSub(res.value, Nucleus::createConstantByte((unsigned char)1));
- val.storeValue(inc);
-
- return res;
- }
-
- const Byte &operator--(Byte &val) // Pre-decrement
- {
- Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantByte((unsigned char)1));
- val.storeValue(inc);
-
- return val;
- }
-
- RValue<Bool> operator<(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpULT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpULE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpUGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpUGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
- }
-
Type *Byte::getType()
{
return T(llvm::Type::getInt8Ty(*::context));
}
- SByte::SByte(Argument<SByte> argument)
- {
- storeValue(argument.value);
- }
-
- SByte::SByte(RValue<Int> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, SByte::getType());
-
- storeValue(integer);
- }
-
- SByte::SByte(RValue<Short> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, SByte::getType());
-
- storeValue(integer);
- }
-
- SByte::SByte(signed char x)
- {
- storeValue(Nucleus::createConstantByte(x));
- }
-
- SByte::SByte(RValue<SByte> rhs)
- {
- storeValue(rhs.value);
- }
-
- SByte::SByte(const SByte &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- SByte::SByte(const Reference<SByte> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<SByte> SByte::operator=(RValue<SByte> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<SByte> SByte::operator=(const SByte &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<SByte>(value);
- }
-
- RValue<SByte> SByte::operator=(const Reference<SByte> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<SByte>(value);
- }
-
- RValue<SByte> operator+(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator-(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator*(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator/(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createSDiv(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator%(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createSRem(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator&(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator|(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator^(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator<<(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator>>(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createAShr(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator+=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<SByte> operator-=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<SByte> operator*=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<SByte> operator/=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<SByte> operator%=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<SByte> operator&=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<SByte> operator|=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<SByte> operator^=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<SByte> operator<<=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<SByte> operator>>=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<SByte> operator+(RValue<SByte> val)
- {
- return val;
- }
-
- RValue<SByte> operator-(RValue<SByte> val)
- {
- return RValue<SByte>(Nucleus::createNeg(val.value));
- }
-
- RValue<SByte> operator~(RValue<SByte> val)
- {
- return RValue<SByte>(Nucleus::createNot(val.value));
- }
-
- RValue<SByte> operator++(SByte &val, int) // Post-increment
- {
- RValue<SByte> res = val;
-
- Value *inc = Nucleus::createAdd(res.value, Nucleus::createConstantByte((signed char)1));
- val.storeValue(inc);
-
- return res;
- }
-
- const SByte &operator++(SByte &val) // Pre-increment
- {
- Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantByte((signed char)1));
- val.storeValue(inc);
-
- return val;
- }
-
- RValue<SByte> operator--(SByte &val, int) // Post-decrement
- {
- RValue<SByte> res = val;
-
- Value *inc = Nucleus::createSub(res.value, Nucleus::createConstantByte((signed char)1));
- val.storeValue(inc);
-
- return res;
- }
-
- const SByte &operator--(SByte &val) // Pre-decrement
- {
- Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantByte((signed char)1));
- val.storeValue(inc);
-
- return val;
- }
-
- RValue<Bool> operator<(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSLT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSLE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
- }
-
Type *SByte::getType()
{
return T(llvm::Type::getInt8Ty(*::context));
}
- Short::Short(Argument<Short> argument)
- {
- storeValue(argument.value);
- }
-
- Short::Short(RValue<Int> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, Short::getType());
-
- storeValue(integer);
- }
-
- Short::Short(short x)
- {
- storeValue(Nucleus::createConstantShort(x));
- }
-
- Short::Short(RValue<Short> rhs)
- {
- storeValue(rhs.value);
- }
-
- Short::Short(const Short &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Short::Short(const Reference<Short> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Short> Short::operator=(RValue<Short> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Short> Short::operator=(const Short &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Short>(value);
- }
-
- RValue<Short> Short::operator=(const Reference<Short> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Short>(value);
- }
-
- RValue<Short> operator+(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Short> operator-(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<Short> operator*(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<Short> operator/(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createSDiv(lhs.value, rhs.value));
- }
-
- RValue<Short> operator%(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createSRem(lhs.value, rhs.value));
- }
-
- RValue<Short> operator&(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Short> operator|(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Short> operator^(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<Short> operator<<(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<Short> operator>>(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createAShr(lhs.value, rhs.value));
- }
-
- RValue<Short> operator+=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Short> operator-=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Short> operator*=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<Short> operator/=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<Short> operator%=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<Short> operator&=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Short> operator|=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Short> operator^=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<Short> operator<<=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<Short> operator>>=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<Short> operator+(RValue<Short> val)
- {
- return val;
- }
-
- RValue<Short> operator-(RValue<Short> val)
- {
- return RValue<Short>(Nucleus::createNeg(val.value));
- }
-
- RValue<Short> operator~(RValue<Short> val)
- {
- return RValue<Short>(Nucleus::createNot(val.value));
- }
-
- RValue<Short> operator++(Short &val, int) // Post-increment
- {
- RValue<Short> res = val;
-
- Value *inc = Nucleus::createAdd(res.value, Nucleus::createConstantShort((short)1));
- val.storeValue(inc);
-
- return res;
- }
-
- const Short &operator++(Short &val) // Pre-increment
- {
- Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantShort((short)1));
- val.storeValue(inc);
-
- return val;
- }
-
- RValue<Short> operator--(Short &val, int) // Post-decrement
- {
- RValue<Short> res = val;
-
- Value *inc = Nucleus::createSub(res.value, Nucleus::createConstantShort((short)1));
- val.storeValue(inc);
-
- return res;
- }
-
- const Short &operator--(Short &val) // Pre-decrement
- {
- Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantShort((short)1));
- val.storeValue(inc);
-
- return val;
- }
-
- RValue<Bool> operator<(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSLT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSLE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
- }
-
Type *Short::getType()
{
return T(llvm::Type::getInt16Ty(*::context));
}
- UShort::UShort(Argument<UShort> argument)
- {
- storeValue(argument.value);
- }
-
- UShort::UShort(RValue<UInt> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, UShort::getType());
-
- storeValue(integer);
- }
-
- UShort::UShort(RValue<Int> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, UShort::getType());
-
- storeValue(integer);
- }
-
- UShort::UShort(unsigned short x)
- {
- storeValue(Nucleus::createConstantShort(x));
- }
-
- UShort::UShort(RValue<UShort> rhs)
- {
- storeValue(rhs.value);
- }
-
- UShort::UShort(const UShort &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UShort::UShort(const Reference<UShort> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<UShort> UShort::operator=(RValue<UShort> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<UShort> UShort::operator=(const UShort &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort>(value);
- }
-
- RValue<UShort> UShort::operator=(const Reference<UShort> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort>(value);
- }
-
- RValue<UShort> operator+(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator-(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator*(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator/(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createUDiv(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator%(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createURem(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator&(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator|(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator^(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator<<(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator>>(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createLShr(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator+=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<UShort> operator-=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<UShort> operator*=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<UShort> operator/=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<UShort> operator%=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<UShort> operator&=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<UShort> operator|=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<UShort> operator^=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<UShort> operator<<=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<UShort> operator>>=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<UShort> operator+(RValue<UShort> val)
- {
- return val;
- }
-
- RValue<UShort> operator-(RValue<UShort> val)
- {
- return RValue<UShort>(Nucleus::createNeg(val.value));
- }
-
- RValue<UShort> operator~(RValue<UShort> val)
- {
- return RValue<UShort>(Nucleus::createNot(val.value));
- }
-
- RValue<UShort> operator++(UShort &val, int) // Post-increment
- {
- RValue<UShort> res = val;
-
- Value *inc = Nucleus::createAdd(res.value, Nucleus::createConstantShort((unsigned short)1));
- val.storeValue(inc);
-
- return res;
- }
-
- const UShort &operator++(UShort &val) // Pre-increment
- {
- Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantShort((unsigned short)1));
- val.storeValue(inc);
-
- return val;
- }
-
- RValue<UShort> operator--(UShort &val, int) // Post-decrement
- {
- RValue<UShort> res = val;
-
- Value *inc = Nucleus::createSub(res.value, Nucleus::createConstantShort((unsigned short)1));
- val.storeValue(inc);
-
- return res;
- }
-
- const UShort &operator--(UShort &val) // Pre-decrement
- {
- Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantShort((unsigned short)1));
- val.storeValue(inc);
-
- return val;
- }
-
- RValue<Bool> operator<(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpULT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpULE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpUGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpUGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
- }
-
Type *UShort::getType()
{
return T(llvm::Type::getInt16Ty(*::context));
}
- Byte4::Byte4(RValue<Byte8> cast)
- {
- storeValue(Nucleus::createBitCast(cast.value, getType()));
- }
-
- Byte4::Byte4(const Reference<Byte4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
Type *Byte4::getType()
{
return T(Type_v4i8);
@@ -2728,169 +1867,9 @@ namespace rr
return T(Type_v4i8);
}
- Byte8::Byte8(uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4, uint8_t x5, uint8_t x6, uint8_t x7)
- {
- int64_t constantVector[8] = {x0, x1, x2, x3, x4, x5, x6, x7};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Byte8::Byte8(RValue<Byte8> rhs)
- {
- storeValue(rhs.value);
- }
-
- Byte8::Byte8(const Byte8 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Byte8::Byte8(const Reference<Byte8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Byte8> Byte8::operator=(RValue<Byte8> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Byte8> Byte8::operator=(const Byte8 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Byte8>(value);
- }
-
- RValue<Byte8> Byte8::operator=(const Reference<Byte8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Byte8>(value);
- }
-
- RValue<Byte8> operator+(RValue<Byte8> lhs, RValue<Byte8> rhs)
- {
- return RValue<Byte8>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Byte8> operator-(RValue<Byte8> lhs, RValue<Byte8> rhs)
- {
- return RValue<Byte8>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
-// RValue<Byte8> operator*(RValue<Byte8> lhs, RValue<Byte8> rhs)
-// {
-// return RValue<Byte8>(Nucleus::createMul(lhs.value, rhs.value));
-// }
-
-// RValue<Byte8> operator/(RValue<Byte8> lhs, RValue<Byte8> rhs)
-// {
-// return RValue<Byte8>(Nucleus::createUDiv(lhs.value, rhs.value));
-// }
-
-// RValue<Byte8> operator%(RValue<Byte8> lhs, RValue<Byte8> rhs)
-// {
-// return RValue<Byte8>(Nucleus::createURem(lhs.value, rhs.value));
-// }
-
- RValue<Byte8> operator&(RValue<Byte8> lhs, RValue<Byte8> rhs)
- {
- return RValue<Byte8>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Byte8> operator|(RValue<Byte8> lhs, RValue<Byte8> rhs)
- {
- return RValue<Byte8>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Byte8> operator^(RValue<Byte8> lhs, RValue<Byte8> rhs)
- {
- return RValue<Byte8>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
-// RValue<Byte8> operator<<(RValue<Byte8> lhs, unsigned char rhs)
-// {
-// return RValue<Byte8>(Nucleus::createShl(lhs.value, rhs.value));
-// }
-
-// RValue<Byte8> operator>>(RValue<Byte8> lhs, unsigned char rhs)
-// {
-// return RValue<Byte8>(Nucleus::createLShr(lhs.value, rhs.value));
-// }
-
- RValue<Byte8> operator+=(Byte8 &lhs, RValue<Byte8> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Byte8> operator-=(Byte8 &lhs, RValue<Byte8> rhs)
- {
- return lhs = lhs - rhs;
- }
-
-// RValue<Byte8> operator*=(Byte8 &lhs, RValue<Byte8> rhs)
-// {
-// return lhs = lhs * rhs;
-// }
-
-// RValue<Byte8> operator/=(Byte8 &lhs, RValue<Byte8> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<Byte8> operator%=(Byte8 &lhs, RValue<Byte8> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<Byte8> operator&=(Byte8 &lhs, RValue<Byte8> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Byte8> operator|=(Byte8 &lhs, RValue<Byte8> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Byte8> operator^=(Byte8 &lhs, RValue<Byte8> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
-// RValue<Byte8> operator<<=(Byte8 &lhs, RValue<Byte8> rhs)
-// {
-// return lhs = lhs << rhs;
-// }
-
-// RValue<Byte8> operator>>=(Byte8 &lhs, RValue<Byte8> rhs)
-// {
-// return lhs = lhs >> rhs;
-// }
-
-// RValue<Byte8> operator+(RValue<Byte8> val)
-// {
-// return val;
-// }
-
-// RValue<Byte8> operator-(RValue<Byte8> val)
-// {
-// return RValue<Byte8>(Nucleus::createNeg(val.value));
-// }
-
- RValue<Byte8> operator~(RValue<Byte8> val)
- {
- return RValue<Byte8>(Nucleus::createNot(val.value));
- }
-
RValue<Byte8> AddSat(RValue<Byte8> x, RValue<Byte8> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::paddusb(x, y);
#else
@@ -2900,6 +1879,7 @@ namespace rr
RValue<Byte8> SubSat(RValue<Byte8> x, RValue<Byte8> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::psubusb(x, y);
#else
@@ -2907,32 +1887,9 @@ namespace rr
#endif
}
- RValue<Short4> Unpack(RValue<Byte4> x)
- {
- int shuffle[16] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7}; // Real type is v16i8
- return As<Short4>(Nucleus::createShuffleVector(x.value, x.value, shuffle));
- }
-
- RValue<Short4> Unpack(RValue<Byte4> x, RValue<Byte4> y)
- {
- return UnpackLow(As<Byte8>(x), As<Byte8>(y));
- }
-
- RValue<Short4> UnpackLow(RValue<Byte8> x, RValue<Byte8> y)
- {
- int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}; // Real type is v16i8
- return As<Short4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Short4> UnpackHigh(RValue<Byte8> x, RValue<Byte8> y)
- {
- int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}; // Real type is v16i8
- auto lowHigh = RValue<Byte16>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- return As<Short4>(Swizzle(As<Int4>(lowHigh), 0xEE));
- }
-
RValue<Int> SignMask(RValue<Byte8> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pmovmskb(x);
#else
@@ -2951,6 +1908,7 @@ namespace rr
RValue<Byte8> CmpEQ(RValue<Byte8> x, RValue<Byte8> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pcmpeqb(x, y);
#else
@@ -2963,171 +1921,9 @@ namespace rr
return T(Type_v8i8);
}
- SByte8::SByte8(uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4, uint8_t x5, uint8_t x6, uint8_t x7)
- {
- int64_t constantVector[8] = {x0, x1, x2, x3, x4, x5, x6, x7};
- Value *vector = Nucleus::createConstantVector(constantVector, getType());
-
- storeValue(Nucleus::createBitCast(vector, getType()));
- }
-
- SByte8::SByte8(RValue<SByte8> rhs)
- {
- storeValue(rhs.value);
- }
-
- SByte8::SByte8(const SByte8 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- SByte8::SByte8(const Reference<SByte8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<SByte8> SByte8::operator=(RValue<SByte8> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<SByte8> SByte8::operator=(const SByte8 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<SByte8>(value);
- }
-
- RValue<SByte8> SByte8::operator=(const Reference<SByte8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<SByte8>(value);
- }
-
- RValue<SByte8> operator+(RValue<SByte8> lhs, RValue<SByte8> rhs)
- {
- return RValue<SByte8>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<SByte8> operator-(RValue<SByte8> lhs, RValue<SByte8> rhs)
- {
- return RValue<SByte8>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
-// RValue<SByte8> operator*(RValue<SByte8> lhs, RValue<SByte8> rhs)
-// {
-// return RValue<SByte8>(Nucleus::createMul(lhs.value, rhs.value));
-// }
-
-// RValue<SByte8> operator/(RValue<SByte8> lhs, RValue<SByte8> rhs)
-// {
-// return RValue<SByte8>(Nucleus::createSDiv(lhs.value, rhs.value));
-// }
-
-// RValue<SByte8> operator%(RValue<SByte8> lhs, RValue<SByte8> rhs)
-// {
-// return RValue<SByte8>(Nucleus::createSRem(lhs.value, rhs.value));
-// }
-
- RValue<SByte8> operator&(RValue<SByte8> lhs, RValue<SByte8> rhs)
- {
- return RValue<SByte8>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<SByte8> operator|(RValue<SByte8> lhs, RValue<SByte8> rhs)
- {
- return RValue<SByte8>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<SByte8> operator^(RValue<SByte8> lhs, RValue<SByte8> rhs)
- {
- return RValue<SByte8>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
-// RValue<SByte8> operator<<(RValue<SByte8> lhs, unsigned char rhs)
-// {
-// return RValue<SByte8>(Nucleus::createShl(lhs.value, rhs.value));
-// }
-
-// RValue<SByte8> operator>>(RValue<SByte8> lhs, unsigned char rhs)
-// {
-// return RValue<SByte8>(Nucleus::createAShr(lhs.value, rhs.value));
-// }
-
- RValue<SByte8> operator+=(SByte8 &lhs, RValue<SByte8> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<SByte8> operator-=(SByte8 &lhs, RValue<SByte8> rhs)
- {
- return lhs = lhs - rhs;
- }
-
-// RValue<SByte8> operator*=(SByte8 &lhs, RValue<SByte8> rhs)
-// {
-// return lhs = lhs * rhs;
-// }
-
-// RValue<SByte8> operator/=(SByte8 &lhs, RValue<SByte8> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<SByte8> operator%=(SByte8 &lhs, RValue<SByte8> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<SByte8> operator&=(SByte8 &lhs, RValue<SByte8> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<SByte8> operator|=(SByte8 &lhs, RValue<SByte8> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<SByte8> operator^=(SByte8 &lhs, RValue<SByte8> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
-// RValue<SByte8> operator<<=(SByte8 &lhs, RValue<SByte8> rhs)
-// {
-// return lhs = lhs << rhs;
-// }
-
-// RValue<SByte8> operator>>=(SByte8 &lhs, RValue<SByte8> rhs)
-// {
-// return lhs = lhs >> rhs;
-// }
-
-// RValue<SByte8> operator+(RValue<SByte8> val)
-// {
-// return val;
-// }
-
-// RValue<SByte8> operator-(RValue<SByte8> val)
-// {
-// return RValue<SByte8>(Nucleus::createNeg(val.value));
-// }
-
- RValue<SByte8> operator~(RValue<SByte8> val)
- {
- return RValue<SByte8>(Nucleus::createNot(val.value));
- }
-
RValue<SByte8> AddSat(RValue<SByte8> x, RValue<SByte8> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::paddsb(x, y);
#else
@@ -3137,6 +1933,7 @@ namespace rr
RValue<SByte8> SubSat(RValue<SByte8> x, RValue<SByte8> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::psubsb(x, y);
#else
@@ -3144,21 +1941,9 @@ namespace rr
#endif
}
- RValue<Short4> UnpackLow(RValue<SByte8> x, RValue<SByte8> y)
- {
- int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}; // Real type is v16i8
- return As<Short4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Short4> UnpackHigh(RValue<SByte8> x, RValue<SByte8> y)
- {
- int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}; // Real type is v16i8
- auto lowHigh = RValue<Byte16>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- return As<Short4>(Swizzle(As<Int4>(lowHigh), 0xEE));
- }
-
RValue<Int> SignMask(RValue<SByte8> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pmovmskb(As<Byte8>(x));
#else
@@ -3168,6 +1953,7 @@ namespace rr
RValue<Byte8> CmpGT(RValue<SByte8> x, RValue<SByte8> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pcmpgtb(x, y);
#else
@@ -3177,6 +1963,7 @@ namespace rr
RValue<Byte8> CmpEQ(RValue<SByte8> x, RValue<SByte8> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pcmpeqb(As<Byte8>(x), As<Byte8>(y));
#else
@@ -3189,46 +1976,6 @@ namespace rr
return T(Type_v8i8);
}
- Byte16::Byte16(RValue<Byte16> rhs)
- {
- storeValue(rhs.value);
- }
-
- Byte16::Byte16(const Byte16 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Byte16::Byte16(const Reference<Byte16> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Byte16> Byte16::operator=(RValue<Byte16> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Byte16> Byte16::operator=(const Byte16 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Byte16>(value);
- }
-
- RValue<Byte16> Byte16::operator=(const Reference<Byte16> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Byte16>(value);
- }
-
Type *Byte16::getType()
{
return T(llvm::VectorType::get(T(Byte::getType()), 16));
@@ -3239,38 +1986,19 @@ namespace rr
return T(llvm::VectorType::get(T(SByte::getType()), 16));
}
- Short2::Short2(RValue<Short4> cast)
- {
- storeValue(Nucleus::createBitCast(cast.value, getType()));
- }
-
Type *Short2::getType()
{
return T(Type_v2i16);
}
- UShort2::UShort2(RValue<UShort4> cast)
- {
- storeValue(Nucleus::createBitCast(cast.value, getType()));
- }
-
Type *UShort2::getType()
{
return T(Type_v2i16);
}
- Short4::Short4(RValue<Int> cast)
- {
- Value *vector = loadValue();
- Value *element = Nucleus::createTrunc(cast.value, Short::getType());
- Value *insert = Nucleus::createInsertElement(vector, element, 0);
- Value *swizzle = Swizzle(RValue<Short4>(insert), 0x00).value;
-
- storeValue(swizzle);
- }
-
Short4::Short4(RValue<Int4> cast)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
int select[8] = {0, 2, 4, 6, 0, 2, 4, 6};
Value *short8 = Nucleus::createBitCast(cast.value, Short8::getType());
@@ -3286,6 +2014,7 @@ namespace rr
Short4::Short4(RValue<Float4> cast)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Int4 v4i32 = Int4(cast);
#if defined(__i386__) || defined(__x86_64__)
v4i32 = As<Int4>(x86::packssdw(v4i32, v4i32));
@@ -3297,138 +2026,9 @@ namespace rr
storeValue(As<Short4>(Int2(v4i32)).value);
}
- Short4::Short4(short xyzw)
- {
- int64_t constantVector[4] = {xyzw, xyzw, xyzw, xyzw};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Short4::Short4(short x, short y, short z, short w)
- {
- int64_t constantVector[4] = {x, y, z, w};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Short4::Short4(RValue<Short4> rhs)
- {
- storeValue(rhs.value);
- }
-
- Short4::Short4(const Short4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Short4::Short4(const Reference<Short4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Short4::Short4(RValue<UShort4> rhs)
- {
- storeValue(rhs.value);
- }
-
- Short4::Short4(const UShort4 &rhs)
- {
- storeValue(rhs.loadValue());
- }
-
- Short4::Short4(const Reference<UShort4> &rhs)
- {
- storeValue(rhs.loadValue());
- }
-
- RValue<Short4> Short4::operator=(RValue<Short4> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Short4> Short4::operator=(const Short4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Short4>(value);
- }
-
- RValue<Short4> Short4::operator=(const Reference<Short4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Short4>(value);
- }
-
- RValue<Short4> Short4::operator=(RValue<UShort4> rhs)
- {
- storeValue(rhs.value);
-
- return RValue<Short4>(rhs);
- }
-
- RValue<Short4> Short4::operator=(const UShort4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Short4>(value);
- }
-
- RValue<Short4> Short4::operator=(const Reference<UShort4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Short4>(value);
- }
-
- RValue<Short4> operator+(RValue<Short4> lhs, RValue<Short4> rhs)
- {
- return RValue<Short4>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Short4> operator-(RValue<Short4> lhs, RValue<Short4> rhs)
- {
- return RValue<Short4>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<Short4> operator*(RValue<Short4> lhs, RValue<Short4> rhs)
- {
- return RValue<Short4>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
-// RValue<Short4> operator/(RValue<Short4> lhs, RValue<Short4> rhs)
-// {
-// return RValue<Short4>(Nucleus::createSDiv(lhs.value, rhs.value));
-// }
-
-// RValue<Short4> operator%(RValue<Short4> lhs, RValue<Short4> rhs)
-// {
-// return RValue<Short4>(Nucleus::createSRem(lhs.value, rhs.value));
-// }
-
- RValue<Short4> operator&(RValue<Short4> lhs, RValue<Short4> rhs)
- {
- return RValue<Short4>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Short4> operator|(RValue<Short4> lhs, RValue<Short4> rhs)
- {
- return RValue<Short4>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Short4> operator^(RValue<Short4> lhs, RValue<Short4> rhs)
- {
- return RValue<Short4>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
RValue<Short4> operator<<(RValue<Short4> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
// return RValue<Short4>(Nucleus::createShl(lhs.value, rhs.value));
@@ -3440,6 +2040,7 @@ namespace rr
RValue<Short4> operator>>(RValue<Short4> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::psraw(lhs, rhs);
#else
@@ -3447,79 +2048,9 @@ namespace rr
#endif
}
- RValue<Short4> operator+=(Short4 &lhs, RValue<Short4> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Short4> operator-=(Short4 &lhs, RValue<Short4> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Short4> operator*=(Short4 &lhs, RValue<Short4> rhs)
- {
- return lhs = lhs * rhs;
- }
-
-// RValue<Short4> operator/=(Short4 &lhs, RValue<Short4> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<Short4> operator%=(Short4 &lhs, RValue<Short4> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<Short4> operator&=(Short4 &lhs, RValue<Short4> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Short4> operator|=(Short4 &lhs, RValue<Short4> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Short4> operator^=(Short4 &lhs, RValue<Short4> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<Short4> operator<<=(Short4 &lhs, unsigned char rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<Short4> operator>>=(Short4 &lhs, unsigned char rhs)
- {
- return lhs = lhs >> rhs;
- }
-
-// RValue<Short4> operator+(RValue<Short4> val)
-// {
-// return val;
-// }
-
- RValue<Short4> operator-(RValue<Short4> val)
- {
- return RValue<Short4>(Nucleus::createNeg(val.value));
- }
-
- RValue<Short4> operator~(RValue<Short4> val)
- {
- return RValue<Short4>(Nucleus::createNot(val.value));
- }
-
- RValue<Short4> RoundShort4(RValue<Float4> cast)
- {
- RValue<Int4> int4 = RoundInt(cast);
- return As<Short4>(PackSigned(int4, int4));
- }
-
RValue<Short4> Max(RValue<Short4> x, RValue<Short4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pmaxsw(x, y);
#else
@@ -3529,6 +2060,7 @@ namespace rr
RValue<Short4> Min(RValue<Short4> x, RValue<Short4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pminsw(x, y);
#else
@@ -3538,6 +2070,7 @@ namespace rr
RValue<Short4> AddSat(RValue<Short4> x, RValue<Short4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::paddsw(x, y);
#else
@@ -3547,6 +2080,7 @@ namespace rr
RValue<Short4> SubSat(RValue<Short4> x, RValue<Short4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::psubsw(x, y);
#else
@@ -3556,6 +2090,7 @@ namespace rr
RValue<Short4> MulHigh(RValue<Short4> x, RValue<Short4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pmulhw(x, y);
#else
@@ -3565,6 +2100,7 @@ namespace rr
RValue<Int2> MulAdd(RValue<Short4> x, RValue<Short4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pmaddwd(x, y);
#else
@@ -3574,6 +2110,7 @@ namespace rr
RValue<SByte8> PackSigned(RValue<Short4> x, RValue<Short4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
auto result = x86::packsswb(x, y);
#else
@@ -3584,6 +2121,7 @@ namespace rr
RValue<Byte8> PackUnsigned(RValue<Short4> x, RValue<Short4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
auto result = x86::packuswb(x, y);
#else
@@ -3592,49 +2130,9 @@ namespace rr
return As<Byte8>(Swizzle(As<Int4>(result), 0x88));
}
- RValue<Int2> UnpackLow(RValue<Short4> x, RValue<Short4> y)
- {
- int shuffle[8] = {0, 8, 1, 9, 2, 10, 3, 11}; // Real type is v8i16
- return As<Int2>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Int2> UnpackHigh(RValue<Short4> x, RValue<Short4> y)
- {
- int shuffle[8] = {0, 8, 1, 9, 2, 10, 3, 11}; // Real type is v8i16
- auto lowHigh = RValue<Short8>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- return As<Int2>(Swizzle(As<Int4>(lowHigh), 0xEE));
- }
-
- RValue<Short4> Swizzle(RValue<Short4> x, unsigned char select)
- {
- // Real type is v8i16
- int shuffle[8] =
- {
- (select >> 0) & 0x03,
- (select >> 2) & 0x03,
- (select >> 4) & 0x03,
- (select >> 6) & 0x03,
- (select >> 0) & 0x03,
- (select >> 2) & 0x03,
- (select >> 4) & 0x03,
- (select >> 6) & 0x03,
- };
-
- return As<Short4>(Nucleus::createShuffleVector(x.value, x.value, shuffle));
- }
-
- RValue<Short4> Insert(RValue<Short4> val, RValue<Short> element, int i)
- {
- return RValue<Short4>(Nucleus::createInsertElement(val.value, element.value, i));
- }
-
- RValue<Short> Extract(RValue<Short4> val, int i)
- {
- return RValue<Short>(Nucleus::createExtractElement(val.value, Short::getType(), i));
- }
-
RValue<Short4> CmpGT(RValue<Short4> x, RValue<Short4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pcmpgtw(x, y);
#else
@@ -3644,6 +2142,7 @@ namespace rr
RValue<Short4> CmpEQ(RValue<Short4> x, RValue<Short4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pcmpeqw(x, y);
#else
@@ -3656,13 +2155,9 @@ namespace rr
return T(Type_v4i16);
}
- UShort4::UShort4(RValue<Int4> cast)
- {
- *this = Short4(cast);
- }
-
UShort4::UShort4(RValue<Float4> cast, bool saturate)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
if(saturate)
{
#if defined(__i386__) || defined(__x86_64__)
@@ -3683,130 +2178,9 @@ namespace rr
}
}
- UShort4::UShort4(unsigned short xyzw)
- {
- int64_t constantVector[4] = {xyzw, xyzw, xyzw, xyzw};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- UShort4::UShort4(unsigned short x, unsigned short y, unsigned short z, unsigned short w)
- {
- int64_t constantVector[4] = {x, y, z, w};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- UShort4::UShort4(RValue<UShort4> rhs)
- {
- storeValue(rhs.value);
- }
-
- UShort4::UShort4(const UShort4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UShort4::UShort4(const Reference<UShort4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UShort4::UShort4(RValue<Short4> rhs)
- {
- storeValue(rhs.value);
- }
-
- UShort4::UShort4(const Short4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UShort4::UShort4(const Reference<Short4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<UShort4> UShort4::operator=(RValue<UShort4> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<UShort4> UShort4::operator=(const UShort4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort4>(value);
- }
-
- RValue<UShort4> UShort4::operator=(const Reference<UShort4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort4>(value);
- }
-
- RValue<UShort4> UShort4::operator=(RValue<Short4> rhs)
- {
- storeValue(rhs.value);
-
- return RValue<UShort4>(rhs);
- }
-
- RValue<UShort4> UShort4::operator=(const Short4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort4>(value);
- }
-
- RValue<UShort4> UShort4::operator=(const Reference<Short4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort4>(value);
- }
-
- RValue<UShort4> operator+(RValue<UShort4> lhs, RValue<UShort4> rhs)
- {
- return RValue<UShort4>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<UShort4> operator-(RValue<UShort4> lhs, RValue<UShort4> rhs)
- {
- return RValue<UShort4>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<UShort4> operator*(RValue<UShort4> lhs, RValue<UShort4> rhs)
- {
- return RValue<UShort4>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<UShort4> operator&(RValue<UShort4> lhs, RValue<UShort4> rhs)
- {
- return RValue<UShort4>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<UShort4> operator|(RValue<UShort4> lhs, RValue<UShort4> rhs)
- {
- return RValue<UShort4>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<UShort4> operator^(RValue<UShort4> lhs, RValue<UShort4> rhs)
- {
- return RValue<UShort4>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
RValue<UShort4> operator<<(RValue<UShort4> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
// return RValue<Short4>(Nucleus::createShl(lhs.value, rhs.value));
@@ -3818,6 +2192,7 @@ namespace rr
RValue<UShort4> operator>>(RValue<UShort4> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
// return RValue<Short4>(Nucleus::createLShr(lhs.value, rhs.value));
@@ -3827,33 +2202,21 @@ namespace rr
#endif
}
- RValue<UShort4> operator<<=(UShort4 &lhs, unsigned char rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<UShort4> operator>>=(UShort4 &lhs, unsigned char rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<UShort4> operator~(RValue<UShort4> val)
- {
- return RValue<UShort4>(Nucleus::createNot(val.value));
- }
-
RValue<UShort4> Max(RValue<UShort4> x, RValue<UShort4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<UShort4>(Max(As<Short4>(x) - Short4(0x8000u, 0x8000u, 0x8000u, 0x8000u), As<Short4>(y) - Short4(0x8000u, 0x8000u, 0x8000u, 0x8000u)) + Short4(0x8000u, 0x8000u, 0x8000u, 0x8000u));
}
RValue<UShort4> Min(RValue<UShort4> x, RValue<UShort4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<UShort4>(Min(As<Short4>(x) - Short4(0x8000u, 0x8000u, 0x8000u, 0x8000u), As<Short4>(y) - Short4(0x8000u, 0x8000u, 0x8000u, 0x8000u)) + Short4(0x8000u, 0x8000u, 0x8000u, 0x8000u));
}
RValue<UShort4> AddSat(RValue<UShort4> x, RValue<UShort4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::paddusw(x, y);
#else
@@ -3863,6 +2226,7 @@ namespace rr
RValue<UShort4> SubSat(RValue<UShort4> x, RValue<UShort4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::psubusw(x, y);
#else
@@ -3872,6 +2236,7 @@ namespace rr
RValue<UShort4> MulHigh(RValue<UShort4> x, RValue<UShort4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pmulhuw(x, y);
#else
@@ -3881,6 +2246,7 @@ namespace rr
RValue<UShort4> Average(RValue<UShort4> x, RValue<UShort4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pavgw(x, y);
#else
@@ -3893,49 +2259,9 @@ namespace rr
return T(Type_v4i16);
}
- Short8::Short8(short c)
- {
- int64_t constantVector[8] = {c, c, c, c, c, c, c, c};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Short8::Short8(short c0, short c1, short c2, short c3, short c4, short c5, short c6, short c7)
- {
- int64_t constantVector[8] = {c0, c1, c2, c3, c4, c5, c6, c7};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Short8::Short8(RValue<Short8> rhs)
- {
- storeValue(rhs.value);
- }
-
- Short8::Short8(const Reference<Short8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Short8::Short8(RValue<Short4> lo, RValue<Short4> hi)
- {
- int shuffle[8] = {0, 1, 2, 3, 8, 9, 10, 11}; // Real type is v8i16
- Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
-
- storeValue(packed);
- }
-
- RValue<Short8> operator+(RValue<Short8> lhs, RValue<Short8> rhs)
- {
- return RValue<Short8>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Short8> operator&(RValue<Short8> lhs, RValue<Short8> rhs)
- {
- return RValue<Short8>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
RValue<Short8> operator<<(RValue<Short8> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::psllw(lhs, rhs);
#else
@@ -3945,6 +2271,7 @@ namespace rr
RValue<Short8> operator>>(RValue<Short8> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::psraw(lhs, rhs);
#else
@@ -3954,6 +2281,7 @@ namespace rr
RValue<Int4> MulAdd(RValue<Short8> x, RValue<Short8> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pmaddwd(x, y);
#else
@@ -3961,14 +2289,9 @@ namespace rr
#endif
}
- RValue<Int4> Abs(RValue<Int4> x)
- {
- auto negative = x >> 31;
- return (x ^ negative) - negative;
- }
-
RValue<Short8> MulHigh(RValue<Short8> x, RValue<Short8> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pmulhw(x, y);
#else
@@ -3981,67 +2304,9 @@ namespace rr
return T(llvm::VectorType::get(T(Short::getType()), 8));
}
- UShort8::UShort8(unsigned short c)
- {
- int64_t constantVector[8] = {c, c, c, c, c, c, c, c};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- UShort8::UShort8(unsigned short c0, unsigned short c1, unsigned short c2, unsigned short c3, unsigned short c4, unsigned short c5, unsigned short c6, unsigned short c7)
- {
- int64_t constantVector[8] = {c0, c1, c2, c3, c4, c5, c6, c7};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- UShort8::UShort8(RValue<UShort8> rhs)
- {
- storeValue(rhs.value);
- }
-
- UShort8::UShort8(const Reference<UShort8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UShort8::UShort8(RValue<UShort4> lo, RValue<UShort4> hi)
- {
- int shuffle[8] = {0, 1, 2, 3, 8, 9, 10, 11}; // Real type is v8i16
- Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
-
- storeValue(packed);
- }
-
- RValue<UShort8> UShort8::operator=(RValue<UShort8> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<UShort8> UShort8::operator=(const UShort8 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort8>(value);
- }
-
- RValue<UShort8> UShort8::operator=(const Reference<UShort8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort8>(value);
- }
-
- RValue<UShort8> operator&(RValue<UShort8> lhs, RValue<UShort8> rhs)
- {
- return RValue<UShort8>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
RValue<UShort8> operator<<(RValue<UShort8> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return As<UShort8>(x86::psllw(As<Short8>(lhs), rhs));
#else
@@ -4051,6 +2316,7 @@ namespace rr
RValue<UShort8> operator>>(RValue<UShort8> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::psrlw(lhs, rhs); // FIXME: Fallback required
#else
@@ -4058,28 +2324,9 @@ namespace rr
#endif
}
- RValue<UShort8> operator+(RValue<UShort8> lhs, RValue<UShort8> rhs)
- {
- return RValue<UShort8>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<UShort8> operator*(RValue<UShort8> lhs, RValue<UShort8> rhs)
- {
- return RValue<UShort8>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<UShort8> operator+=(UShort8 &lhs, RValue<UShort8> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<UShort8> operator~(RValue<UShort8> val)
- {
- return RValue<UShort8>(Nucleus::createNot(val.value));
- }
-
RValue<UShort8> Swizzle(RValue<UShort8> x, char select0, char select1, char select2, char select3, char select4, char select5, char select6, char select7)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
int pshufb[16] =
{
select0 + 0,
@@ -4109,6 +2356,7 @@ namespace rr
RValue<UShort8> MulHigh(RValue<UShort8> x, RValue<UShort8> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pmulhuw(x, y);
#else
@@ -4121,265 +2369,9 @@ namespace rr
return T(llvm::VectorType::get(T(UShort::getType()), 8));
}
- Int::Int(Argument<Int> argument)
- {
- storeValue(argument.value);
- }
-
- Int::Int(RValue<Byte> cast)
- {
- Value *integer = Nucleus::createZExt(cast.value, Int::getType());
-
- storeValue(integer);
- }
-
- Int::Int(RValue<SByte> cast)
- {
- Value *integer = Nucleus::createSExt(cast.value, Int::getType());
-
- storeValue(integer);
- }
-
- Int::Int(RValue<Short> cast)
- {
- Value *integer = Nucleus::createSExt(cast.value, Int::getType());
-
- storeValue(integer);
- }
-
- Int::Int(RValue<UShort> cast)
- {
- Value *integer = Nucleus::createZExt(cast.value, Int::getType());
-
- storeValue(integer);
- }
-
- Int::Int(RValue<Int2> cast)
- {
- *this = Extract(cast, 0);
- }
-
- Int::Int(RValue<Long> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, Int::getType());
-
- storeValue(integer);
- }
-
- Int::Int(RValue<Float> cast)
- {
- Value *integer = Nucleus::createFPToSI(cast.value, Int::getType());
-
- storeValue(integer);
- }
-
- Int::Int(int x)
- {
- storeValue(Nucleus::createConstantInt(x));
- }
-
- Int::Int(RValue<Int> rhs)
- {
- storeValue(rhs.value);
- }
-
- Int::Int(RValue<UInt> rhs)
- {
- storeValue(rhs.value);
- }
-
- Int::Int(const Int &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int::Int(const Reference<Int> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int::Int(const UInt &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int::Int(const Reference<UInt> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Int> Int::operator=(int rhs)
- {
- return RValue<Int>(storeValue(Nucleus::createConstantInt(rhs)));
- }
-
- RValue<Int> Int::operator=(RValue<Int> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Int> Int::operator=(RValue<UInt> rhs)
- {
- storeValue(rhs.value);
-
- return RValue<Int>(rhs);
- }
-
- RValue<Int> Int::operator=(const Int &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int>(value);
- }
-
- RValue<Int> Int::operator=(const Reference<Int> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int>(value);
- }
-
- RValue<Int> Int::operator=(const UInt &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int>(value);
- }
-
- RValue<Int> Int::operator=(const Reference<UInt> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int>(value);
- }
-
- RValue<Int> operator+(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Int> operator-(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<Int> operator*(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<Int> operator/(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createSDiv(lhs.value, rhs.value));
- }
-
- RValue<Int> operator%(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createSRem(lhs.value, rhs.value));
- }
-
- RValue<Int> operator&(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Int> operator|(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Int> operator^(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<Int> operator<<(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<Int> operator>>(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createAShr(lhs.value, rhs.value));
- }
-
- RValue<Int> operator+=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Int> operator-=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Int> operator*=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<Int> operator/=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<Int> operator%=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<Int> operator&=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Int> operator|=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Int> operator^=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<Int> operator<<=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<Int> operator>>=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<Int> operator+(RValue<Int> val)
- {
- return val;
- }
-
- RValue<Int> operator-(RValue<Int> val)
- {
- return RValue<Int>(Nucleus::createNeg(val.value));
- }
-
- RValue<Int> operator~(RValue<Int> val)
- {
- return RValue<Int>(Nucleus::createNot(val.value));
- }
-
RValue<Int> operator++(Int &val, int) // Post-increment
{
+ RR_DEBUG_INFO_UPDATE_LOC();
RValue<Int> res = val;
Value *inc = Nucleus::createAdd(res.value, Nucleus::createConstantInt(1));
@@ -4390,6 +2382,7 @@ namespace rr
const Int &operator++(Int &val) // Pre-increment
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantInt(1));
val.storeValue(inc);
@@ -4398,6 +2391,7 @@ namespace rr
RValue<Int> operator--(Int &val, int) // Post-decrement
{
+ RR_DEBUG_INFO_UPDATE_LOC();
RValue<Int> res = val;
Value *inc = Nucleus::createSub(res.value, Nucleus::createConstantInt(1));
@@ -4408,59 +2402,16 @@ namespace rr
const Int &operator--(Int &val) // Pre-decrement
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantInt(1));
val.storeValue(inc);
return val;
}
- RValue<Bool> operator<(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSLT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSLE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
- }
-
- RValue<Int> Max(RValue<Int> x, RValue<Int> y)
- {
- return IfThenElse(x > y, x, y);
- }
-
- RValue<Int> Min(RValue<Int> x, RValue<Int> y)
- {
- return IfThenElse(x < y, x, y);
- }
-
- RValue<Int> Clamp(RValue<Int> x, RValue<Int> min, RValue<Int> max)
- {
- return Min(Max(x, min), max);
- }
-
RValue<Int> RoundInt(RValue<Float> cast)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::cvtss2si(cast);
#else
@@ -4473,104 +2424,14 @@ namespace rr
return T(llvm::Type::getInt32Ty(*::context));
}
- Long::Long(RValue<Int> cast)
- {
- Value *integer = Nucleus::createSExt(cast.value, Long::getType());
-
- storeValue(integer);
- }
-
- Long::Long(RValue<UInt> cast)
- {
- Value *integer = Nucleus::createZExt(cast.value, Long::getType());
-
- storeValue(integer);
- }
-
- Long::Long(RValue<Long> rhs)
- {
- storeValue(rhs.value);
- }
-
- RValue<Long> Long::operator=(int64_t rhs)
- {
- return RValue<Long>(storeValue(Nucleus::createConstantLong(rhs)));
- }
-
- RValue<Long> Long::operator=(RValue<Long> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Long> Long::operator=(const Long &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Long>(value);
- }
-
- RValue<Long> Long::operator=(const Reference<Long> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Long>(value);
- }
-
- RValue<Long> operator+(RValue<Long> lhs, RValue<Long> rhs)
- {
- return RValue<Long>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Long> operator-(RValue<Long> lhs, RValue<Long> rhs)
- {
- return RValue<Long>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<Long> operator+=(Long &lhs, RValue<Long> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Long> operator-=(Long &lhs, RValue<Long> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Long> AddAtomic(RValue<Pointer<Long> > x, RValue<Long> y)
- {
- return RValue<Long>(Nucleus::createAtomicAdd(x.value, y.value));
- }
-
Type *Long::getType()
{
return T(llvm::Type::getInt64Ty(*::context));
}
- UInt::UInt(Argument<UInt> argument)
- {
- storeValue(argument.value);
- }
-
- UInt::UInt(RValue<UShort> cast)
- {
- Value *integer = Nucleus::createZExt(cast.value, UInt::getType());
-
- storeValue(integer);
- }
-
- UInt::UInt(RValue<Long> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, UInt::getType());
-
- storeValue(integer);
- }
-
UInt::UInt(RValue<Float> cast)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// Note: createFPToUI is broken, must perform conversion using createFPtoSI
// Value *integer = Nucleus::createFPToUI(cast.value, UInt::getType());
@@ -4588,218 +2449,9 @@ namespace rr
Int(cast))).value);
}
- UInt::UInt(int x)
- {
- storeValue(Nucleus::createConstantInt(x));
- }
-
- UInt::UInt(unsigned int x)
- {
- storeValue(Nucleus::createConstantInt(x));
- }
-
- UInt::UInt(RValue<UInt> rhs)
- {
- storeValue(rhs.value);
- }
-
- UInt::UInt(RValue<Int> rhs)
- {
- storeValue(rhs.value);
- }
-
- UInt::UInt(const UInt &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt::UInt(const Reference<UInt> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt::UInt(const Int &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt::UInt(const Reference<Int> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<UInt> UInt::operator=(unsigned int rhs)
- {
- return RValue<UInt>(storeValue(Nucleus::createConstantInt(rhs)));
- }
-
- RValue<UInt> UInt::operator=(RValue<UInt> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<UInt> UInt::operator=(RValue<Int> rhs)
- {
- storeValue(rhs.value);
-
- return RValue<UInt>(rhs);
- }
-
- RValue<UInt> UInt::operator=(const UInt &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt>(value);
- }
-
- RValue<UInt> UInt::operator=(const Reference<UInt> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt>(value);
- }
-
- RValue<UInt> UInt::operator=(const Int &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt>(value);
- }
-
- RValue<UInt> UInt::operator=(const Reference<Int> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt>(value);
- }
-
- RValue<UInt> operator+(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator-(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator*(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator/(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createUDiv(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator%(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createURem(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator&(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator|(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator^(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator<<(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator>>(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createLShr(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator+=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<UInt> operator-=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<UInt> operator*=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<UInt> operator/=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<UInt> operator%=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<UInt> operator&=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<UInt> operator|=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<UInt> operator^=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<UInt> operator<<=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<UInt> operator>>=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<UInt> operator+(RValue<UInt> val)
- {
- return val;
- }
-
- RValue<UInt> operator-(RValue<UInt> val)
- {
- return RValue<UInt>(Nucleus::createNeg(val.value));
- }
-
- RValue<UInt> operator~(RValue<UInt> val)
- {
- return RValue<UInt>(Nucleus::createNot(val.value));
- }
-
RValue<UInt> operator++(UInt &val, int) // Post-increment
{
+ RR_DEBUG_INFO_UPDATE_LOC();
RValue<UInt> res = val;
Value *inc = Nucleus::createAdd(res.value, Nucleus::createConstantInt(1));
@@ -4810,6 +2462,7 @@ namespace rr
const UInt &operator++(UInt &val) // Pre-increment
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantInt(1));
val.storeValue(inc);
@@ -4818,6 +2471,7 @@ namespace rr
RValue<UInt> operator--(UInt &val, int) // Post-decrement
{
+ RR_DEBUG_INFO_UPDATE_LOC();
RValue<UInt> res = val;
Value *inc = Nucleus::createSub(res.value, Nucleus::createConstantInt(1));
@@ -4828,57 +2482,13 @@ namespace rr
const UInt &operator--(UInt &val) // Pre-decrement
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantInt(1));
val.storeValue(inc);
return val;
}
- RValue<UInt> Max(RValue<UInt> x, RValue<UInt> y)
- {
- return IfThenElse(x > y, x, y);
- }
-
- RValue<UInt> Min(RValue<UInt> x, RValue<UInt> y)
- {
- return IfThenElse(x < y, x, y);
- }
-
- RValue<UInt> Clamp(RValue<UInt> x, RValue<UInt> min, RValue<UInt> max)
- {
- return Min(Max(x, min), max);
- }
-
- RValue<Bool> operator<(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpULT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpULE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpUGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpUGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
- }
-
// RValue<UInt> RoundUInt(RValue<Float> cast)
// {
//#if defined(__i386__) || defined(__x86_64__)
@@ -4904,107 +2514,9 @@ namespace rr
// storeValue(replicate);
// }
- Int2::Int2(RValue<Int4> cast)
- {
- storeValue(Nucleus::createBitCast(cast.value, getType()));
- }
-
- Int2::Int2(int x, int y)
- {
- int64_t constantVector[2] = {x, y};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Int2::Int2(RValue<Int2> rhs)
- {
- storeValue(rhs.value);
- }
-
- Int2::Int2(const Int2 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int2::Int2(const Reference<Int2> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int2::Int2(RValue<Int> lo, RValue<Int> hi)
- {
- int shuffle[4] = {0, 4, 1, 5};
- Value *packed = Nucleus::createShuffleVector(Int4(lo).loadValue(), Int4(hi).loadValue(), shuffle);
-
- storeValue(Nucleus::createBitCast(packed, Int2::getType()));
- }
-
- RValue<Int2> Int2::operator=(RValue<Int2> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Int2> Int2::operator=(const Int2 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int2>(value);
- }
-
- RValue<Int2> Int2::operator=(const Reference<Int2> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int2>(value);
- }
-
- RValue<Int2> operator+(RValue<Int2> lhs, RValue<Int2> rhs)
- {
- return RValue<Int2>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Int2> operator-(RValue<Int2> lhs, RValue<Int2> rhs)
- {
- return RValue<Int2>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
-// RValue<Int2> operator*(RValue<Int2> lhs, RValue<Int2> rhs)
-// {
-// return RValue<Int2>(Nucleus::createMul(lhs.value, rhs.value));
-// }
-
-// RValue<Int2> operator/(RValue<Int2> lhs, RValue<Int2> rhs)
-// {
-// return RValue<Int2>(Nucleus::createSDiv(lhs.value, rhs.value));
-// }
-
-// RValue<Int2> operator%(RValue<Int2> lhs, RValue<Int2> rhs)
-// {
-// return RValue<Int2>(Nucleus::createSRem(lhs.value, rhs.value));
-// }
-
- RValue<Int2> operator&(RValue<Int2> lhs, RValue<Int2> rhs)
- {
- return RValue<Int2>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Int2> operator|(RValue<Int2> lhs, RValue<Int2> rhs)
- {
- return RValue<Int2>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Int2> operator^(RValue<Int2> lhs, RValue<Int2> rhs)
- {
- return RValue<Int2>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
RValue<Int2> operator<<(RValue<Int2> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
// return RValue<Int2>(Nucleus::createShl(lhs.value, rhs.value));
@@ -5016,6 +2528,7 @@ namespace rr
RValue<Int2> operator>>(RValue<Int2> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
// return RValue<Int2>(Nucleus::createAShr(lhs.value, rhs.value));
@@ -5025,187 +2538,14 @@ namespace rr
#endif
}
- RValue<Int2> operator+=(Int2 &lhs, RValue<Int2> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Int2> operator-=(Int2 &lhs, RValue<Int2> rhs)
- {
- return lhs = lhs - rhs;
- }
-
-// RValue<Int2> operator*=(Int2 &lhs, RValue<Int2> rhs)
-// {
-// return lhs = lhs * rhs;
-// }
-
-// RValue<Int2> operator/=(Int2 &lhs, RValue<Int2> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<Int2> operator%=(Int2 &lhs, RValue<Int2> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<Int2> operator&=(Int2 &lhs, RValue<Int2> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Int2> operator|=(Int2 &lhs, RValue<Int2> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Int2> operator^=(Int2 &lhs, RValue<Int2> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<Int2> operator<<=(Int2 &lhs, unsigned char rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<Int2> operator>>=(Int2 &lhs, unsigned char rhs)
- {
- return lhs = lhs >> rhs;
- }
-
-// RValue<Int2> operator+(RValue<Int2> val)
-// {
-// return val;
-// }
-
-// RValue<Int2> operator-(RValue<Int2> val)
-// {
-// return RValue<Int2>(Nucleus::createNeg(val.value));
-// }
-
- RValue<Int2> operator~(RValue<Int2> val)
- {
- return RValue<Int2>(Nucleus::createNot(val.value));
- }
-
- RValue<Short4> UnpackLow(RValue<Int2> x, RValue<Int2> y)
- {
- int shuffle[4] = {0, 4, 1, 5}; // Real type is v4i32
- return As<Short4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Short4> UnpackHigh(RValue<Int2> x, RValue<Int2> y)
- {
- int shuffle[4] = {0, 4, 1, 5}; // Real type is v4i32
- auto lowHigh = RValue<Int4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- return As<Short4>(Swizzle(lowHigh, 0xEE));
- }
-
- RValue<Int> Extract(RValue<Int2> val, int i)
- {
- return RValue<Int>(Nucleus::createExtractElement(val.value, Int::getType(), i));
- }
-
- RValue<Int2> Insert(RValue<Int2> val, RValue<Int> element, int i)
- {
- return RValue<Int2>(Nucleus::createInsertElement(val.value, element.value, i));
- }
-
Type *Int2::getType()
{
return T(Type_v2i32);
}
- UInt2::UInt2(unsigned int x, unsigned int y)
- {
- int64_t constantVector[2] = {x, y};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- UInt2::UInt2(RValue<UInt2> rhs)
- {
- storeValue(rhs.value);
- }
-
- UInt2::UInt2(const UInt2 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt2::UInt2(const Reference<UInt2> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<UInt2> UInt2::operator=(RValue<UInt2> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<UInt2> UInt2::operator=(const UInt2 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt2>(value);
- }
-
- RValue<UInt2> UInt2::operator=(const Reference<UInt2> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt2>(value);
- }
-
- RValue<UInt2> operator+(RValue<UInt2> lhs, RValue<UInt2> rhs)
- {
- return RValue<UInt2>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<UInt2> operator-(RValue<UInt2> lhs, RValue<UInt2> rhs)
- {
- return RValue<UInt2>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
-// RValue<UInt2> operator*(RValue<UInt2> lhs, RValue<UInt2> rhs)
-// {
-// return RValue<UInt2>(Nucleus::createMul(lhs.value, rhs.value));
-// }
-
-// RValue<UInt2> operator/(RValue<UInt2> lhs, RValue<UInt2> rhs)
-// {
-// return RValue<UInt2>(Nucleus::createUDiv(lhs.value, rhs.value));
-// }
-
-// RValue<UInt2> operator%(RValue<UInt2> lhs, RValue<UInt2> rhs)
-// {
-// return RValue<UInt2>(Nucleus::createURem(lhs.value, rhs.value));
-// }
-
- RValue<UInt2> operator&(RValue<UInt2> lhs, RValue<UInt2> rhs)
- {
- return RValue<UInt2>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<UInt2> operator|(RValue<UInt2> lhs, RValue<UInt2> rhs)
- {
- return RValue<UInt2>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<UInt2> operator^(RValue<UInt2> lhs, RValue<UInt2> rhs)
- {
- return RValue<UInt2>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
RValue<UInt2> operator<<(RValue<UInt2> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
// return RValue<UInt2>(Nucleus::createShl(lhs.value, rhs.value));
@@ -5217,6 +2557,7 @@ namespace rr
RValue<UInt2> operator>>(RValue<UInt2> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
// return RValue<UInt2>(Nucleus::createLShr(lhs.value, rhs.value));
@@ -5226,82 +2567,14 @@ namespace rr
#endif
}
- RValue<UInt2> operator+=(UInt2 &lhs, RValue<UInt2> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<UInt2> operator-=(UInt2 &lhs, RValue<UInt2> rhs)
- {
- return lhs = lhs - rhs;
- }
-
-// RValue<UInt2> operator*=(UInt2 &lhs, RValue<UInt2> rhs)
-// {
-// return lhs = lhs * rhs;
-// }
-
-// RValue<UInt2> operator/=(UInt2 &lhs, RValue<UInt2> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<UInt2> operator%=(UInt2 &lhs, RValue<UInt2> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<UInt2> operator&=(UInt2 &lhs, RValue<UInt2> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<UInt2> operator|=(UInt2 &lhs, RValue<UInt2> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<UInt2> operator^=(UInt2 &lhs, RValue<UInt2> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<UInt2> operator<<=(UInt2 &lhs, unsigned char rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<UInt2> operator>>=(UInt2 &lhs, unsigned char rhs)
- {
- return lhs = lhs >> rhs;
- }
-
-// RValue<UInt2> operator+(RValue<UInt2> val)
-// {
-// return val;
-// }
-
-// RValue<UInt2> operator-(RValue<UInt2> val)
-// {
-// return RValue<UInt2>(Nucleus::createNeg(val.value));
-// }
-
- RValue<UInt2> operator~(RValue<UInt2> val)
- {
- return RValue<UInt2>(Nucleus::createNot(val.value));
- }
-
Type *UInt2::getType()
{
return T(Type_v2i32);
}
- Int4::Int4() : XYZW(this)
- {
- }
-
Int4::Int4(RValue<Byte4> cast) : XYZW(this)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -5324,6 +2597,7 @@ namespace rr
Int4::Int4(RValue<SByte4> cast) : XYZW(this)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -5344,15 +2618,9 @@ namespace rr
}
}
- Int4::Int4(RValue<Float4> cast) : XYZW(this)
- {
- Value *xyzw = Nucleus::createFPToSI(cast.value, Int4::getType());
-
- storeValue(xyzw);
- }
-
Int4::Int4(RValue<Short4> cast) : XYZW(this)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -5369,6 +2637,7 @@ namespace rr
Int4::Int4(RValue<UShort4> cast) : XYZW(this)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -5383,76 +2652,9 @@ namespace rr
}
}
- Int4::Int4(int xyzw) : XYZW(this)
- {
- constant(xyzw, xyzw, xyzw, xyzw);
- }
-
- Int4::Int4(int x, int yzw) : XYZW(this)
- {
- constant(x, yzw, yzw, yzw);
- }
-
- Int4::Int4(int x, int y, int zw) : XYZW(this)
- {
- constant(x, y, zw, zw);
- }
-
- Int4::Int4(int x, int y, int z, int w) : XYZW(this)
- {
- constant(x, y, z, w);
- }
-
- void Int4::constant(int x, int y, int z, int w)
- {
- int64_t constantVector[4] = {x, y, z, w};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Int4::Int4(RValue<Int4> rhs) : XYZW(this)
- {
- storeValue(rhs.value);
- }
-
- Int4::Int4(const Int4 &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int4::Int4(const Reference<Int4> &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int4::Int4(RValue<UInt4> rhs) : XYZW(this)
- {
- storeValue(rhs.value);
- }
-
- Int4::Int4(const UInt4 &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int4::Int4(const Reference<UInt4> &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int4::Int4(RValue<Int2> lo, RValue<Int2> hi) : XYZW(this)
- {
- int shuffle[4] = {0, 1, 4, 5}; // Real type is v4i32
- Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
-
- storeValue(packed);
- }
-
Int4::Int4(RValue<Int> rhs) : XYZW(this)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *vector = loadValue();
Value *insert = Nucleus::createInsertElement(vector, rhs.value, 0);
@@ -5462,81 +2664,9 @@ namespace rr
storeValue(replicate);
}
- Int4::Int4(const Int &rhs) : XYZW(this)
- {
- *this = RValue<Int>(rhs.loadValue());
- }
-
- Int4::Int4(const Reference<Int> &rhs) : XYZW(this)
- {
- *this = RValue<Int>(rhs.loadValue());
- }
-
- RValue<Int4> Int4::operator=(RValue<Int4> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Int4> Int4::operator=(const Int4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int4>(value);
- }
-
- RValue<Int4> Int4::operator=(const Reference<Int4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int4>(value);
- }
-
- RValue<Int4> operator+(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator-(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator*(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator/(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createSDiv(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator%(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createSRem(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator&(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator|(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator^(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
RValue<Int4> operator<<(RValue<Int4> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::pslld(lhs, rhs);
#else
@@ -5546,6 +2676,7 @@ namespace rr
RValue<Int4> operator>>(RValue<Int4> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::psrad(lhs, rhs);
#else
@@ -5553,83 +2684,9 @@ namespace rr
#endif
}
- RValue<Int4> operator<<(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator>>(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createAShr(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator+=(Int4 &lhs, RValue<Int4> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Int4> operator-=(Int4 &lhs, RValue<Int4> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Int4> operator*=(Int4 &lhs, RValue<Int4> rhs)
- {
- return lhs = lhs * rhs;
- }
-
-// RValue<Int4> operator/=(Int4 &lhs, RValue<Int4> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<Int4> operator%=(Int4 &lhs, RValue<Int4> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<Int4> operator&=(Int4 &lhs, RValue<Int4> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Int4> operator|=(Int4 &lhs, RValue<Int4> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Int4> operator^=(Int4 &lhs, RValue<Int4> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<Int4> operator<<=(Int4 &lhs, unsigned char rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<Int4> operator>>=(Int4 &lhs, unsigned char rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<Int4> operator+(RValue<Int4> val)
- {
- return val;
- }
-
- RValue<Int4> operator-(RValue<Int4> val)
- {
- return RValue<Int4>(Nucleus::createNeg(val.value));
- }
-
- RValue<Int4> operator~(RValue<Int4> val)
- {
- return RValue<Int4>(Nucleus::createNot(val.value));
- }
-
RValue<Int4> CmpEQ(RValue<Int4> x, RValue<Int4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// FIXME: An LLVM bug causes SExt(ICmpCC()) to produce 0 or 1 instead of 0 or ~0
// Restore the following line when LLVM is updated to a version where this issue is fixed.
// return RValue<Int4>(Nucleus::createSExt(Nucleus::createICmpEQ(x.value, y.value), Int4::getType()));
@@ -5638,6 +2695,7 @@ namespace rr
RValue<Int4> CmpLT(RValue<Int4> x, RValue<Int4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// FIXME: An LLVM bug causes SExt(ICmpCC()) to produce 0 or 1 instead of 0 or ~0
// Restore the following line when LLVM is updated to a version where this issue is fixed.
// return RValue<Int4>(Nucleus::createSExt(Nucleus::createICmpSLT(x.value, y.value), Int4::getType()));
@@ -5646,6 +2704,7 @@ namespace rr
RValue<Int4> CmpLE(RValue<Int4> x, RValue<Int4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// FIXME: An LLVM bug causes SExt(ICmpCC()) to produce 0 or 1 instead of 0 or ~0
// Restore the following line when LLVM is updated to a version where this issue is fixed.
// return RValue<Int4>(Nucleus::createSExt(Nucleus::createICmpSLE(x.value, y.value), Int4::getType()));
@@ -5654,6 +2713,7 @@ namespace rr
RValue<Int4> CmpNEQ(RValue<Int4> x, RValue<Int4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// FIXME: An LLVM bug causes SExt(ICmpCC()) to produce 0 or 1 instead of 0 or ~0
// Restore the following line when LLVM is updated to a version where this issue is fixed.
// return RValue<Int4>(Nucleus::createSExt(Nucleus::createICmpNE(x.value, y.value), Int4::getType()));
@@ -5662,6 +2722,7 @@ namespace rr
RValue<Int4> CmpNLT(RValue<Int4> x, RValue<Int4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// FIXME: An LLVM bug causes SExt(ICmpCC()) to produce 0 or 1 instead of 0 or ~0
// Restore the following line when LLVM is updated to a version where this issue is fixed.
// return RValue<Int4>(Nucleus::createSExt(Nucleus::createICmpSGE(x.value, y.value), Int4::getType()));
@@ -5670,6 +2731,7 @@ namespace rr
RValue<Int4> CmpNLE(RValue<Int4> x, RValue<Int4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// FIXME: An LLVM bug causes SExt(ICmpCC()) to produce 0 or 1 instead of 0 or ~0
// Restore the following line when LLVM is updated to a version where this issue is fixed.
// return RValue<Int4>(Nucleus::createSExt(Nucleus::createICmpSGT(x.value, y.value), Int4::getType()));
@@ -5678,6 +2740,7 @@ namespace rr
RValue<Int4> Max(RValue<Int4> x, RValue<Int4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -5693,6 +2756,7 @@ namespace rr
RValue<Int4> Min(RValue<Int4> x, RValue<Int4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -5708,6 +2772,7 @@ namespace rr
RValue<Int4> RoundInt(RValue<Float4> cast)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::cvtps2dq(cast);
#else
@@ -5717,18 +2782,21 @@ namespace rr
RValue<Int4> MulHigh(RValue<Int4> x, RValue<Int4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// TODO: For x86, build an intrinsics version of this which uses shuffles + pmuludq.
return As<Int4>(V(lowerMulHigh(V(x.value), V(y.value), true)));
}
RValue<UInt4> MulHigh(RValue<UInt4> x, RValue<UInt4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// TODO: For x86, build an intrinsics version of this which uses shuffles + pmuludq.
return As<UInt4>(V(lowerMulHigh(V(x.value), V(y.value), false)));
}
RValue<Short8> PackSigned(RValue<Int4> x, RValue<Int4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::packssdw(x, y);
#else
@@ -5738,6 +2806,7 @@ namespace rr
RValue<UShort8> PackUnsigned(RValue<Int4> x, RValue<Int4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::packusdw(x, y);
#else
@@ -5745,18 +2814,9 @@ namespace rr
#endif
}
- RValue<Int> Extract(RValue<Int4> x, int i)
- {
- return RValue<Int>(Nucleus::createExtractElement(x.value, Int::getType(), i));
- }
-
- RValue<Int4> Insert(RValue<Int4> x, RValue<Int> element, int i)
- {
- return RValue<Int4>(Nucleus::createInsertElement(x.value, element.value, i));
- }
-
RValue<Int> SignMask(RValue<Int4> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::movmskps(As<Float4>(x));
#else
@@ -5764,22 +2824,14 @@ namespace rr
#endif
}
- RValue<Int4> Swizzle(RValue<Int4> x, unsigned char select)
- {
- return RValue<Int4>(createSwizzle4(x.value, select));
- }
-
Type *Int4::getType()
{
return T(llvm::VectorType::get(T(Int::getType()), 4));
}
- UInt4::UInt4() : XYZW(this)
- {
- }
-
UInt4::UInt4(RValue<Float4> cast) : XYZW(this)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// Note: createFPToUI is broken, must perform conversion using createFPtoSI
// Value *xyzw = Nucleus::createFPToUI(cast.value, UInt4::getType());
@@ -5797,139 +2849,9 @@ namespace rr
storeValue((~(As<Int4>(cast) >> 31) & uiValue).value);
}
- UInt4::UInt4(int xyzw) : XYZW(this)
- {
- constant(xyzw, xyzw, xyzw, xyzw);
- }
-
- UInt4::UInt4(int x, int yzw) : XYZW(this)
- {
- constant(x, yzw, yzw, yzw);
- }
-
- UInt4::UInt4(int x, int y, int zw) : XYZW(this)
- {
- constant(x, y, zw, zw);
- }
-
- UInt4::UInt4(int x, int y, int z, int w) : XYZW(this)
- {
- constant(x, y, z, w);
- }
-
- void UInt4::constant(int x, int y, int z, int w)
- {
- int64_t constantVector[4] = {x, y, z, w};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- UInt4::UInt4(RValue<UInt4> rhs) : XYZW(this)
- {
- storeValue(rhs.value);
- }
-
- UInt4::UInt4(const UInt4 &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt4::UInt4(const Reference<UInt4> &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt4::UInt4(RValue<Int4> rhs) : XYZW(this)
- {
- storeValue(rhs.value);
- }
-
- UInt4::UInt4(const Int4 &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt4::UInt4(const Reference<Int4> &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt4::UInt4(RValue<UInt2> lo, RValue<UInt2> hi) : XYZW(this)
- {
- int shuffle[4] = {0, 1, 4, 5}; // Real type is v4i32
- Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
-
- storeValue(packed);
- }
-
- RValue<UInt4> UInt4::operator=(RValue<UInt4> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<UInt4> UInt4::operator=(const UInt4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt4>(value);
- }
-
- RValue<UInt4> UInt4::operator=(const Reference<UInt4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt4>(value);
- }
-
- RValue<UInt4> operator+(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator-(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator*(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator/(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createUDiv(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator%(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createURem(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator&(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator|(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator^(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
RValue<UInt4> operator<<(RValue<UInt4> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return As<UInt4>(x86::pslld(As<Int4>(lhs), rhs));
#else
@@ -5939,6 +2861,7 @@ namespace rr
RValue<UInt4> operator>>(RValue<UInt4> lhs, unsigned char rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::psrld(lhs, rhs);
#else
@@ -5946,83 +2869,9 @@ namespace rr
#endif
}
- RValue<UInt4> operator<<(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator>>(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createLShr(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator+=(UInt4 &lhs, RValue<UInt4> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<UInt4> operator-=(UInt4 &lhs, RValue<UInt4> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<UInt4> operator*=(UInt4 &lhs, RValue<UInt4> rhs)
- {
- return lhs = lhs * rhs;
- }
-
-// RValue<UInt4> operator/=(UInt4 &lhs, RValue<UInt4> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<UInt4> operator%=(UInt4 &lhs, RValue<UInt4> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<UInt4> operator&=(UInt4 &lhs, RValue<UInt4> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<UInt4> operator|=(UInt4 &lhs, RValue<UInt4> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<UInt4> operator^=(UInt4 &lhs, RValue<UInt4> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<UInt4> operator<<=(UInt4 &lhs, unsigned char rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<UInt4> operator>>=(UInt4 &lhs, unsigned char rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<UInt4> operator+(RValue<UInt4> val)
- {
- return val;
- }
-
- RValue<UInt4> operator-(RValue<UInt4> val)
- {
- return RValue<UInt4>(Nucleus::createNeg(val.value));
- }
-
- RValue<UInt4> operator~(RValue<UInt4> val)
- {
- return RValue<UInt4>(Nucleus::createNot(val.value));
- }
-
RValue<UInt4> CmpEQ(RValue<UInt4> x, RValue<UInt4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// FIXME: An LLVM bug causes SExt(ICmpCC()) to produce 0 or 1 instead of 0 or ~0
// Restore the following line when LLVM is updated to a version where this issue is fixed.
// return RValue<UInt4>(Nucleus::createSExt(Nucleus::createICmpEQ(x.value, y.value), Int4::getType()));
@@ -6031,11 +2880,13 @@ namespace rr
RValue<UInt4> CmpLT(RValue<UInt4> x, RValue<UInt4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<UInt4>(Nucleus::createSExt(Nucleus::createICmpULT(x.value, y.value), Int4::getType()));
}
RValue<UInt4> CmpLE(RValue<UInt4> x, RValue<UInt4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// FIXME: An LLVM bug causes SExt(ICmpCC()) to produce 0 or 1 instead of 0 or ~0
// Restore the following line when LLVM is updated to a version where this issue is fixed.
// return RValue<UInt4>(Nucleus::createSExt(Nucleus::createICmpULE(x.value, y.value), Int4::getType()));
@@ -6044,11 +2895,13 @@ namespace rr
RValue<UInt4> CmpNEQ(RValue<UInt4> x, RValue<UInt4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<UInt4>(Nucleus::createSExt(Nucleus::createICmpNE(x.value, y.value), Int4::getType()));
}
RValue<UInt4> CmpNLT(RValue<UInt4> x, RValue<UInt4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// FIXME: An LLVM bug causes SExt(ICmpCC()) to produce 0 or 1 instead of 0 or ~0
// Restore the following line when LLVM is updated to a version where this issue is fixed.
// return RValue<UInt4>(Nucleus::createSExt(Nucleus::createICmpUGE(x.value, y.value), Int4::getType()));
@@ -6057,11 +2910,13 @@ namespace rr
RValue<UInt4> CmpNLE(RValue<UInt4> x, RValue<UInt4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<UInt4>(Nucleus::createSExt(Nucleus::createICmpUGT(x.value, y.value), Int4::getType()));
}
RValue<UInt4> Max(RValue<UInt4> x, RValue<UInt4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -6077,6 +2932,7 @@ namespace rr
RValue<UInt4> Min(RValue<UInt4> x, RValue<UInt4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -6095,226 +2951,14 @@ namespace rr
return T(llvm::VectorType::get(T(UInt::getType()), 4));
}
- Half::Half(RValue<Float> cast)
- {
- UInt fp32i = As<UInt>(cast);
- UInt abs = fp32i & 0x7FFFFFFF;
- UShort fp16i((fp32i & 0x80000000) >> 16); // sign
-
- If(abs > 0x47FFEFFF) // Infinity
- {
- fp16i |= UShort(0x7FFF);
- }
- Else
- {
- If(abs < 0x38800000) // Denormal
- {
- Int mantissa = (abs & 0x007FFFFF) | 0x00800000;
- Int e = 113 - (abs >> 23);
- abs = IfThenElse(e < 24, mantissa >> e, Int(0));
- fp16i |= UShort((abs + 0x00000FFF + ((abs >> 13) & 1)) >> 13);
- }
- Else
- {
- fp16i |= UShort((abs + 0xC8000000 + 0x00000FFF + ((abs >> 13) & 1)) >> 13);
- }
- }
-
- storeValue(fp16i.loadValue());
- }
-
Type *Half::getType()
{
return T(llvm::Type::getInt16Ty(*::context));
}
- Float::Float(RValue<Int> cast)
- {
- Value *integer = Nucleus::createSIToFP(cast.value, Float::getType());
-
- storeValue(integer);
- }
-
- Float::Float(RValue<UInt> cast)
- {
- RValue<Float> result = Float(Int(cast & UInt(0x7FFFFFFF))) +
- As<Float>((As<Int>(cast) >> 31) & As<Int>(Float(0x80000000u)));
-
- storeValue(result.value);
- }
-
- Float::Float(RValue<Half> cast)
- {
- Int fp16i(As<UShort>(cast));
-
- Int s = (fp16i >> 15) & 0x00000001;
- Int e = (fp16i >> 10) & 0x0000001F;
- Int m = fp16i & 0x000003FF;
-
- UInt fp32i(s << 31);
- If(e == 0)
- {
- If(m != 0)
- {
- While((m & 0x00000400) == 0)
- {
- m <<= 1;
- e -= 1;
- }
-
- fp32i |= As<UInt>(((e + (127 - 15) + 1) << 23) | ((m & ~0x00000400) << 13));
- }
- }
- Else
- {
- fp32i |= As<UInt>(((e + (127 - 15)) << 23) | (m << 13));
- }
-
- storeValue(As<Float>(fp32i).value);
- }
-
- Float::Float(float x)
- {
- storeValue(Nucleus::createConstantFloat(x));
- }
-
- Float::Float(RValue<Float> rhs)
- {
- storeValue(rhs.value);
- }
-
- Float::Float(const Float &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Float::Float(const Reference<Float> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Float> Float::operator=(RValue<Float> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Float> Float::operator=(const Float &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Float>(value);
- }
-
- RValue<Float> Float::operator=(const Reference<Float> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Float>(value);
- }
-
- RValue<Float> operator+(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Float>(Nucleus::createFAdd(lhs.value, rhs.value));
- }
-
- RValue<Float> operator-(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Float>(Nucleus::createFSub(lhs.value, rhs.value));
- }
-
- RValue<Float> operator*(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Float>(Nucleus::createFMul(lhs.value, rhs.value));
- }
-
- RValue<Float> operator/(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Float>(Nucleus::createFDiv(lhs.value, rhs.value));
- }
-
- RValue<Float> operator+=(Float &lhs, RValue<Float> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Float> operator-=(Float &lhs, RValue<Float> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Float> operator*=(Float &lhs, RValue<Float> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<Float> operator/=(Float &lhs, RValue<Float> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<Float> operator+(RValue<Float> val)
- {
- return val;
- }
-
- RValue<Float> operator-(RValue<Float> val)
- {
- return RValue<Float>(Nucleus::createFNeg(val.value));
- }
-
- RValue<Bool> operator<(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Bool>(Nucleus::createFCmpOLT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Bool>(Nucleus::createFCmpOLE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Bool>(Nucleus::createFCmpOGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Bool>(Nucleus::createFCmpOGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Bool>(Nucleus::createFCmpONE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Bool>(Nucleus::createFCmpOEQ(lhs.value, rhs.value));
- }
-
- RValue<Float> Abs(RValue<Float> x)
- {
- return IfThenElse(x > 0.0f, x, -x);
- }
-
- RValue<Float> Max(RValue<Float> x, RValue<Float> y)
- {
- return IfThenElse(x > y, x, y);
- }
-
- RValue<Float> Min(RValue<Float> x, RValue<Float> y)
- {
- return IfThenElse(x < y, x, y);
- }
-
RValue<Float> Rcp_pp(RValue<Float> x, bool exactAtPow2)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(exactAtPow2)
{
@@ -6330,6 +2974,7 @@ namespace rr
RValue<Float> RcpSqrt_pp(RValue<Float> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::rsqrtss(x);
#else
@@ -6339,6 +2984,7 @@ namespace rr
RValue<Float> Sqrt(RValue<Float> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::sqrtss(x);
#else
@@ -6348,6 +2994,7 @@ namespace rr
RValue<Float> Round(RValue<Float> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -6364,6 +3011,7 @@ namespace rr
RValue<Float> Trunc(RValue<Float> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -6380,6 +3028,7 @@ namespace rr
RValue<Float> Frac(RValue<Float> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -6398,6 +3047,7 @@ namespace rr
RValue<Float> Floor(RValue<Float> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -6414,6 +3064,7 @@ namespace rr
RValue<Float> Ceil(RValue<Float> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -6431,108 +3082,14 @@ namespace rr
return T(llvm::Type::getFloatTy(*::context));
}
- Float2::Float2(RValue<Float4> cast)
- {
- storeValue(Nucleus::createBitCast(cast.value, getType()));
- }
-
Type *Float2::getType()
{
return T(Type_v2f32);
}
- Float4::Float4(RValue<Byte4> cast) : XYZW(this)
- {
- Value *a = Int4(cast).loadValue();
- Value *xyzw = Nucleus::createSIToFP(a, Float4::getType());
-
- storeValue(xyzw);
- }
-
- Float4::Float4(RValue<SByte4> cast) : XYZW(this)
- {
- Value *a = Int4(cast).loadValue();
- Value *xyzw = Nucleus::createSIToFP(a, Float4::getType());
-
- storeValue(xyzw);
- }
-
- Float4::Float4(RValue<Short4> cast) : XYZW(this)
- {
- Int4 c(cast);
- storeValue(Nucleus::createSIToFP(RValue<Int4>(c).value, Float4::getType()));
- }
-
- Float4::Float4(RValue<UShort4> cast) : XYZW(this)
- {
- Int4 c(cast);
- storeValue(Nucleus::createSIToFP(RValue<Int4>(c).value, Float4::getType()));
- }
-
- Float4::Float4(RValue<Int4> cast) : XYZW(this)
- {
- Value *xyzw = Nucleus::createSIToFP(cast.value, Float4::getType());
-
- storeValue(xyzw);
- }
-
- Float4::Float4(RValue<UInt4> cast) : XYZW(this)
- {
- RValue<Float4> result = Float4(Int4(cast & UInt4(0x7FFFFFFF))) +
- As<Float4>((As<Int4>(cast) >> 31) & As<Int4>(Float4(0x80000000u)));
-
- storeValue(result.value);
- }
-
- Float4::Float4() : XYZW(this)
- {
- }
-
- Float4::Float4(float xyzw) : XYZW(this)
- {
- constant(xyzw, xyzw, xyzw, xyzw);
- }
-
- Float4::Float4(float x, float yzw) : XYZW(this)
- {
- constant(x, yzw, yzw, yzw);
- }
-
- Float4::Float4(float x, float y, float zw) : XYZW(this)
- {
- constant(x, y, zw, zw);
- }
-
- Float4::Float4(float x, float y, float z, float w) : XYZW(this)
- {
- constant(x, y, z, w);
- }
-
- void Float4::constant(float x, float y, float z, float w)
- {
- double constantVector[4] = {x, y, z, w};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Float4::Float4(RValue<Float4> rhs) : XYZW(this)
- {
- storeValue(rhs.value);
- }
-
- Float4::Float4(const Float4 &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Float4::Float4(const Reference<Float4> &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
Float4::Float4(RValue<Float> rhs) : XYZW(this)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *vector = loadValue();
Value *insert = Nucleus::createInsertElement(vector, rhs.value, 0);
@@ -6542,130 +3099,9 @@ namespace rr
storeValue(replicate);
}
- Float4::Float4(const Float &rhs) : XYZW(this)
- {
- *this = RValue<Float>(rhs.loadValue());
- }
-
- Float4::Float4(const Reference<Float> &rhs) : XYZW(this)
- {
- *this = RValue<Float>(rhs.loadValue());
- }
-
- RValue<Float4> Float4::operator=(float x)
- {
- return *this = Float4(x, x, x, x);
- }
-
- RValue<Float4> Float4::operator=(RValue<Float4> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Float4> Float4::operator=(const Float4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Float4>(value);
- }
-
- RValue<Float4> Float4::operator=(const Reference<Float4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Float4>(value);
- }
-
- RValue<Float4> Float4::operator=(RValue<Float> rhs)
- {
- return *this = Float4(rhs);
- }
-
- RValue<Float4> Float4::operator=(const Float &rhs)
- {
- return *this = Float4(rhs);
- }
-
- RValue<Float4> Float4::operator=(const Reference<Float> &rhs)
- {
- return *this = Float4(rhs);
- }
-
- RValue<Float4> operator+(RValue<Float4> lhs, RValue<Float4> rhs)
- {
- return RValue<Float4>(Nucleus::createFAdd(lhs.value, rhs.value));
- }
-
- RValue<Float4> operator-(RValue<Float4> lhs, RValue<Float4> rhs)
- {
- return RValue<Float4>(Nucleus::createFSub(lhs.value, rhs.value));
- }
-
- RValue<Float4> operator*(RValue<Float4> lhs, RValue<Float4> rhs)
- {
- return RValue<Float4>(Nucleus::createFMul(lhs.value, rhs.value));
- }
-
- RValue<Float4> operator/(RValue<Float4> lhs, RValue<Float4> rhs)
- {
- return RValue<Float4>(Nucleus::createFDiv(lhs.value, rhs.value));
- }
-
- RValue<Float4> operator%(RValue<Float4> lhs, RValue<Float4> rhs)
- {
- return RValue<Float4>(Nucleus::createFRem(lhs.value, rhs.value));
- }
-
- RValue<Float4> operator+=(Float4 &lhs, RValue<Float4> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Float4> operator-=(Float4 &lhs, RValue<Float4> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Float4> operator*=(Float4 &lhs, RValue<Float4> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<Float4> operator/=(Float4 &lhs, RValue<Float4> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<Float4> operator%=(Float4 &lhs, RValue<Float4> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<Float4> operator+(RValue<Float4> val)
- {
- return val;
- }
-
- RValue<Float4> operator-(RValue<Float4> val)
- {
- return RValue<Float4>(Nucleus::createFNeg(val.value));
- }
-
- RValue<Float4> Abs(RValue<Float4> x)
- {
- Value *vector = Nucleus::createBitCast(x.value, Int4::getType());
- int64_t constantVector[4] = {0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF};
- Value *result = Nucleus::createAnd(vector, Nucleus::createConstantVector(constantVector, Int4::getType()));
-
- return As<Float4>(result);
- }
-
RValue<Float4> Max(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::maxps(x, y);
#else
@@ -6675,6 +3111,7 @@ namespace rr
RValue<Float4> Min(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::minps(x, y);
#else
@@ -6684,6 +3121,7 @@ namespace rr
RValue<Float4> Rcp_pp(RValue<Float4> x, bool exactAtPow2)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(exactAtPow2)
{
@@ -6699,6 +3137,7 @@ namespace rr
RValue<Float4> RcpSqrt_pp(RValue<Float4> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::rsqrtps(x);
#else
@@ -6708,6 +3147,7 @@ namespace rr
RValue<Float4> Sqrt(RValue<Float4> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::sqrtps(x);
#else
@@ -6715,57 +3155,9 @@ namespace rr
#endif
}
- RValue<Float4> Insert(RValue<Float4> x, RValue<Float> element, int i)
- {
- return RValue<Float4>(Nucleus::createInsertElement(x.value, element.value, i));
- }
-
- RValue<Float> Extract(RValue<Float4> x, int i)
- {
- return RValue<Float>(Nucleus::createExtractElement(x.value, Float::getType(), i));
- }
-
- RValue<Float4> Swizzle(RValue<Float4> x, unsigned char select)
- {
- return RValue<Float4>(createSwizzle4(x.value, select));
- }
-
- RValue<Float4> ShuffleLowHigh(RValue<Float4> x, RValue<Float4> y, unsigned char imm)
- {
- int shuffle[4] =
- {
- ((imm >> 0) & 0x03) + 0,
- ((imm >> 2) & 0x03) + 0,
- ((imm >> 4) & 0x03) + 4,
- ((imm >> 6) & 0x03) + 4,
- };
-
- return RValue<Float4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Float4> UnpackLow(RValue<Float4> x, RValue<Float4> y)
- {
- int shuffle[4] = {0, 4, 1, 5};
- return RValue<Float4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Float4> UnpackHigh(RValue<Float4> x, RValue<Float4> y)
- {
- int shuffle[4] = {2, 6, 3, 7};
- return RValue<Float4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Float4> Mask(Float4 &lhs, RValue<Float4> rhs, unsigned char select)
- {
- Value *vector = lhs.loadValue();
- Value *result = createMask4(vector, rhs.value, select);
- lhs.storeValue(result);
-
- return RValue<Float4>(result);
- }
-
RValue<Int> SignMask(RValue<Float4> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
return x86::movmskps(x);
#else
@@ -6775,82 +3167,85 @@ namespace rr
RValue<Int4> CmpEQ(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// return As<Int4>(x86::cmpeqps(x, y));
return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpOEQ(x.value, y.value), Int4::getType()));
}
RValue<Int4> CmpLT(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// return As<Int4>(x86::cmpltps(x, y));
return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpOLT(x.value, y.value), Int4::getType()));
}
RValue<Int4> CmpLE(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// return As<Int4>(x86::cmpleps(x, y));
return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpOLE(x.value, y.value), Int4::getType()));
}
RValue<Int4> CmpNEQ(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// return As<Int4>(x86::cmpneqps(x, y));
return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpONE(x.value, y.value), Int4::getType()));
}
RValue<Int4> CmpNLT(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// return As<Int4>(x86::cmpnltps(x, y));
return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpOGE(x.value, y.value), Int4::getType()));
}
RValue<Int4> CmpNLE(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
// return As<Int4>(x86::cmpnleps(x, y));
return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpOGT(x.value, y.value), Int4::getType()));
}
RValue<Int4> CmpUEQ(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpUEQ(x.value, y.value), Int4::getType()));
}
RValue<Int4> CmpULT(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpULT(x.value, y.value), Int4::getType()));
}
RValue<Int4> CmpULE(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpULE(x.value, y.value), Int4::getType()));
}
RValue<Int4> CmpUNEQ(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpUNE(x.value, y.value), Int4::getType()));
}
RValue<Int4> CmpUNLT(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpUGE(x.value, y.value), Int4::getType()));
}
RValue<Int4> CmpUNLE(RValue<Float4> x, RValue<Float4> y)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpUGT(x.value, y.value), Int4::getType()));
}
- RValue<Int4> IsInf(RValue<Float4> x)
- {
- return CmpEQ(As<Int4>(x) & Int4(0x7FFFFFFF), Int4(0x7F800000));
- }
-
- RValue<Int4> IsNan(RValue<Float4> x)
- {
- return ~CmpEQ(x, x);
- }
-
RValue<Float4> Round(RValue<Float4> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -6867,6 +3262,7 @@ namespace rr
RValue<Float4> Trunc(RValue<Float4> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -6883,6 +3279,7 @@ namespace rr
RValue<Float4> Frac(RValue<Float4> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Float4 frc;
#if defined(__i386__) || defined(__x86_64__)
@@ -6907,6 +3304,7 @@ namespace rr
RValue<Float4> Floor(RValue<Float4> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -6923,6 +3321,7 @@ namespace rr
RValue<Float4> Ceil(RValue<Float4> x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
#if defined(__i386__) || defined(__x86_64__)
if(CPUID::supportsSSE4_1())
{
@@ -6935,97 +3334,197 @@ namespace rr
}
}
- Type *Float4::getType()
+ RValue<Float4> Sin(RValue<Float4> v)
{
- return T(llvm::VectorType::get(T(Float::getType()), 4));
+ auto func = llvm::Intrinsic::getDeclaration(::module, llvm::Intrinsic::sin, { V(v.value)->getType() } );
+ return RValue<Float4>(V(::builder->CreateCall(func, V(v.value))));
+ }
+
+ RValue<Float4> Cos(RValue<Float4> v)
+ {
+ auto func = llvm::Intrinsic::getDeclaration(::module, llvm::Intrinsic::cos, { V(v.value)->getType() } );
+ return RValue<Float4>(V(::builder->CreateCall(func, V(v.value))));
+ }
+
+ RValue<Float4> Tan(RValue<Float4> v)
+ {
+ return Sin(v) / Cos(v);
}
- RValue<Pointer<Byte>> operator+(RValue<Pointer<Byte>> lhs, int offset)
+ static RValue<Float4> TransformFloat4PerElement(RValue<Float4> v, const char* name)
{
- return lhs + RValue<Int>(Nucleus::createConstantInt(offset));
+ auto funcTy = ::llvm::FunctionType::get(T(Float::getType()), ::llvm::ArrayRef<llvm::Type*>(T(Float::getType())), false);
+ auto func = ::module->getOrInsertFunction(name, funcTy);
+ llvm::Value *out = ::llvm::UndefValue::get(T(Float4::getType()));
+ for (uint64_t i = 0; i < 4; i++)
+ {
+ auto el = ::builder->CreateCall(func, V(Nucleus::createExtractElement(v.value, Float::getType(), i)));
+ out = V(Nucleus::createInsertElement(V(out), V(el), i));
+ }
+ return RValue<Float4>(V(out));
}
- RValue<Pointer<Byte>> operator+(RValue<Pointer<Byte>> lhs, RValue<Int> offset)
+ RValue<Float4> Asin(RValue<Float4> v)
{
- return RValue<Pointer<Byte>>(Nucleus::createGEP(lhs.value, Byte::getType(), offset.value, false));
+ return TransformFloat4PerElement(v, "asinf");
}
- RValue<Pointer<Byte>> operator+(RValue<Pointer<Byte>> lhs, RValue<UInt> offset)
+ RValue<Float4> Acos(RValue<Float4> v)
{
- return RValue<Pointer<Byte>>(Nucleus::createGEP(lhs.value, Byte::getType(), offset.value, true));
+ return TransformFloat4PerElement(v, "acosf");
}
- RValue<Pointer<Byte>> operator+=(Pointer<Byte> &lhs, int offset)
+ RValue<Float4> Atan(RValue<Float4> v)
{
- return lhs = lhs + offset;
+ return TransformFloat4PerElement(v, "atanf");
}
- RValue<Pointer<Byte>> operator+=(Pointer<Byte> &lhs, RValue<Int> offset)
+ RValue<Float4> Sinh(RValue<Float4> v)
{
- return lhs = lhs + offset;
+ return TransformFloat4PerElement(v, "sinhf");
}
- RValue<Pointer<Byte>> operator+=(Pointer<Byte> &lhs, RValue<UInt> offset)
+ RValue<Float4> Cosh(RValue<Float4> v)
{
- return lhs = lhs + offset;
+ return TransformFloat4PerElement(v, "coshf");
}
- RValue<Pointer<Byte>> operator-(RValue<Pointer<Byte>> lhs, int offset)
+ RValue<Float4> Tanh(RValue<Float4> v)
{
- return lhs + -offset;
+ return TransformFloat4PerElement(v, "tanhf");
}
- RValue<Pointer<Byte>> operator-(RValue<Pointer<Byte>> lhs, RValue<Int> offset)
+ RValue<Float4> Asinh(RValue<Float4> v)
{
- return lhs + -offset;
+ return TransformFloat4PerElement(v, "asinhf");
}
- RValue<Pointer<Byte>> operator-(RValue<Pointer<Byte>> lhs, RValue<UInt> offset)
+ RValue<Float4> Acosh(RValue<Float4> v)
{
- return lhs + -offset;
+ return TransformFloat4PerElement(v, "acoshf");
}
- RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, int offset)
+ RValue<Float4> Atanh(RValue<Float4> v)
{
- return lhs = lhs - offset;
+ return TransformFloat4PerElement(v, "atanhf");
}
- RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, RValue<Int> offset)
+ RValue<Float4> Atan2(RValue<Float4> x, RValue<Float4> y)
{
- return lhs = lhs - offset;
+ ::llvm::SmallVector<::llvm::Type*, 2> paramTys;
+ paramTys.push_back(T(Float::getType()));
+ paramTys.push_back(T(Float::getType()));
+ auto funcTy = ::llvm::FunctionType::get(T(Float::getType()), paramTys, false);
+ auto func = ::module->getOrInsertFunction("atan2f", funcTy);
+ llvm::Value *out = ::llvm::UndefValue::get(T(Float4::getType()));
+ for (uint64_t i = 0; i < 4; i++)
+ {
+ auto el = ::builder->CreateCall2(func, ARGS(
+ V(Nucleus::createExtractElement(x.value, Float::getType(), i)),
+ V(Nucleus::createExtractElement(y.value, Float::getType(), i))
+ ));
+ out = V(Nucleus::createInsertElement(V(out), V(el), i));
+ }
+ return RValue<Float4>(V(out));
}
- RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, RValue<UInt> offset)
+ RValue<Float4> Pow(RValue<Float4> x, RValue<Float4> y)
{
- return lhs = lhs - offset;
+ ::llvm::SmallVector<::llvm::Type*, 2> paramTys;
+ paramTys.push_back(T(Float4::getType()));
+ paramTys.push_back(T(Float4::getType()));
+ auto func = llvm::Intrinsic::getDeclaration(::module, llvm::Intrinsic::pow, paramTys);
+ return RValue<Float4>(V(::builder->CreateCall2(func, ARGS(V(x.value), V(y.value)))));
}
- void Return()
+ RValue<Float4> Exp(RValue<Float4> v)
{
- Nucleus::createRetVoid();
- Nucleus::setInsertBlock(Nucleus::createBasicBlock());
- Nucleus::createUnreachable();
+ auto func = llvm::Intrinsic::getDeclaration(::module, llvm::Intrinsic::exp, { T(Float4::getType()) } );
+ return RValue<Float4>(V(::builder->CreateCall(func, V(v.value))));
}
- void Return(RValue<Int> ret)
+ RValue<Float4> Log(RValue<Float4> v)
{
- Nucleus::createRet(ret.value);
- Nucleus::setInsertBlock(Nucleus::createBasicBlock());
- Nucleus::createUnreachable();
+ auto func = llvm::Intrinsic::getDeclaration(::module, llvm::Intrinsic::log, { T(Float4::getType()) } );
+ return RValue<Float4>(V(::builder->CreateCall(func, V(v.value))));
}
- void branch(RValue<Bool> cmp, BasicBlock *bodyBB, BasicBlock *endBB)
+ RValue<Float4> Exp2(RValue<Float4> v)
{
- Nucleus::createCondBr(cmp.value, bodyBB, endBB);
- Nucleus::setInsertBlock(bodyBB);
+ auto func = llvm::Intrinsic::getDeclaration(::module, llvm::Intrinsic::exp2, { T(Float4::getType()) } );
+ return RValue<Float4>(V(::builder->CreateCall(func, V(v.value))));
+ }
+
+ RValue<Float4> Log2(RValue<Float4> v)
+ {
+ auto func = llvm::Intrinsic::getDeclaration(::module, llvm::Intrinsic::log2, { T(Float4::getType()) } );
+ return RValue<Float4>(V(::builder->CreateCall(func, V(v.value))));
+ }
+
+ RValue<UInt4> Ctlz(RValue<UInt4> v, bool isZeroUndef)
+ {
+#if REACTOR_LLVM_VERSION < 7
+ UNIMPLEMENTED("LLVM 3 does not support ctlz in a vector form");
+#endif
+ ::llvm::SmallVector<::llvm::Type*, 2> paramTys;
+ paramTys.push_back(T(UInt4::getType()));
+ paramTys.push_back(T(Bool::getType()));
+ auto func = llvm::Intrinsic::getDeclaration(::module, llvm::Intrinsic::ctlz, paramTys);
+ return RValue<UInt4>(V(::builder->CreateCall2(func, ARGS(
+ V(v.value),
+ isZeroUndef ? ::llvm::ConstantInt::getTrue(*::context) : ::llvm::ConstantInt::getFalse(*::context)
+ ))));
+ }
+
+ RValue<UInt4> Cttz(RValue<UInt4> v, bool isZeroUndef)
+ {
+#if REACTOR_LLVM_VERSION < 7
+ UNIMPLEMENTED("LLVM 3 does not support cttz in a vector form");
+#endif
+ ::llvm::SmallVector<::llvm::Type*, 2> paramTys;
+ paramTys.push_back(T(UInt4::getType()));
+ paramTys.push_back(T(Bool::getType()));
+ auto func = llvm::Intrinsic::getDeclaration(::module, llvm::Intrinsic::cttz, paramTys);
+ return RValue<UInt4>(V(::builder->CreateCall2(func, ARGS(
+ V(v.value),
+ isZeroUndef ? ::llvm::ConstantInt::getTrue(*::context) : ::llvm::ConstantInt::getFalse(*::context)
+ ))));
+ }
+
+ Type *Float4::getType()
+ {
+ return T(llvm::VectorType::get(T(Float::getType()), 4));
}
RValue<Long> Ticks()
{
+ RR_DEBUG_INFO_UPDATE_LOC();
llvm::Function *rdtsc = llvm::Intrinsic::getDeclaration(::module, llvm::Intrinsic::readcyclecounter);
return RValue<Long>(V(::builder->CreateCall(rdtsc)));
}
+
+ RValue<Pointer<Byte>> ConstantPointer(void const * ptr)
+ {
+ // Note: this should work for 32-bit pointers as well because 'inttoptr'
+ // is defined to truncate (and zero extend) if necessary.
+ auto ptrAsInt = ::llvm::ConstantInt::get(::llvm::Type::getInt64Ty(*::context), reinterpret_cast<uintptr_t>(ptr));
+ return RValue<Pointer<Byte>>(V(::builder->CreateIntToPtr(ptrAsInt, T(Pointer<Byte>::getType()))));
+ }
+
+ Value* Call(RValue<Pointer<Byte>> fptr, Type* retTy, std::initializer_list<Value*> args, std::initializer_list<Type*> argTys)
+ {
+ ::llvm::SmallVector<::llvm::Type*, 8> paramTys;
+ for (auto ty : argTys) { paramTys.push_back(T(ty)); }
+ auto funcTy = ::llvm::FunctionType::get(T(retTy), paramTys, false);
+
+ auto funcPtrTy = funcTy->getPointerTo();
+ auto funcPtr = ::builder->CreatePointerCast(V(fptr.value), funcPtrTy);
+
+ ::llvm::SmallVector<::llvm::Value*, 8> arguments;
+ for (auto arg : args) { arguments.push_back(V(arg)); }
+ return V(::builder->CreateCall(funcPtr, arguments));
+ }
}
namespace rr
@@ -7668,4 +4167,48 @@ namespace rr
}
#endif // ENABLE_RR_PRINT
+ void Break()
+ {
+ auto trap = ::llvm::Intrinsic::getDeclaration(module, llvm::Intrinsic::trap);
+ builder->CreateCall(trap);
+ }
+
+ void Nop()
+ {
+ auto voidTy = ::llvm::Type::getVoidTy(*context);
+ auto funcTy = ::llvm::FunctionType::get(voidTy, {}, false);
+ auto func = ::module->getOrInsertFunction("nop", funcTy);
+ builder->CreateCall(func);
+ }
+
+ void EmitDebugLocation()
+ {
+#ifdef ENABLE_RR_DEBUG_INFO
+ if (debugInfo != nullptr)
+ {
+ debugInfo->EmitLocation();
+ }
+#endif // ENABLE_RR_DEBUG_INFO
+ }
+
+ void EmitDebugVariable(Value* value)
+ {
+#ifdef ENABLE_RR_DEBUG_INFO
+ if (debugInfo != nullptr)
+ {
+ debugInfo->EmitVariable(value);
+ }
+#endif // ENABLE_RR_DEBUG_INFO
+ }
+
+ void FlushDebug()
+ {
+#ifdef ENABLE_RR_DEBUG_INFO
+ if (debugInfo != nullptr)
+ {
+ debugInfo->Flush();
+ }
+#endif // ENABLE_RR_DEBUG_INFO
+ }
+
}
diff --git a/chromium/third_party/swiftshader/src/Reactor/LLVMReactor.hpp b/chromium/third_party/swiftshader/src/Reactor/LLVMReactor.hpp
new file mode 100644
index 00000000000..4ff527439b4
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Reactor/LLVMReactor.hpp
@@ -0,0 +1,52 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef rr_LLVMReactor_hpp
+#define rr_LLVMReactor_hpp
+
+namespace llvm
+{
+ class Type;
+ class Value;
+}
+
+namespace rr
+{
+ class Type;
+ class Value;
+
+ llvm::Type *T(Type *t);
+
+ inline Type *T(llvm::Type *t)
+ {
+ return reinterpret_cast<Type*>(t);
+ }
+
+ inline llvm::Value *V(Value *t)
+ {
+ return reinterpret_cast<llvm::Value*>(t);
+ }
+
+ inline Value *V(llvm::Value *t)
+ {
+ return reinterpret_cast<Value*>(t);
+ }
+
+ // Emits a no-op instruction that will not be optimized away.
+ // Useful for emitting something that can have a source location without
+ // effect.
+ void Nop();
+}
+
+#endif // rr_LLVMReactor_hpp
diff --git a/chromium/third_party/swiftshader/src/Reactor/LLVMReactorDebugInfo.cpp b/chromium/third_party/swiftshader/src/Reactor/LLVMReactorDebugInfo.cpp
new file mode 100644
index 00000000000..75b4a0394bb
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Reactor/LLVMReactorDebugInfo.cpp
@@ -0,0 +1,543 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "LLVMReactorDebugInfo.hpp"
+
+#ifdef ENABLE_RR_DEBUG_INFO
+
+#include "Reactor.hpp"
+#include "LLVMReactor.hpp"
+
+#if REACTOR_LLVM_VERSION < 7
+#error "ENABLE_RR_DEBUG_INFO can currently only be used with LLVM 7+"
+#endif
+
+#include "backtrace.h"
+
+#include "llvm/Demangle/Demangle.h"
+#include "llvm/ExecutionEngine/JITEventListener.h"
+#include "llvm/IR/DIBuilder.h"
+#include "llvm/IR/Intrinsics.h"
+#include "llvm/IR/IRBuilder.h"
+
+#include <cctype>
+#include <fstream>
+#include <regex>
+#include <sstream>
+#include <string>
+
+#if 0
+#define LOG(msg, ...) printf(msg "\n", ##__VA_ARGS__)
+#else
+#define LOG(msg, ...)
+#endif
+
+namespace
+{
+ std::pair<llvm::StringRef, llvm::StringRef> splitPath(const char* path)
+ {
+ return llvm::StringRef(path).rsplit('/');
+ }
+} // anonymous namespaces
+
+namespace rr
+{
+ DebugInfo::DebugInfo(
+ llvm::IRBuilder<> *builder,
+ llvm::LLVMContext *context,
+ llvm::Module *module,
+ llvm::Function *function)
+ : builder(builder), context(context), module(module), function(function)
+ {
+ using namespace ::llvm;
+
+ auto location = getCallerLocation();
+
+ auto fileAndDir = splitPath(location.function.file.c_str());
+ diBuilder = new llvm::DIBuilder(*module);
+ diCU = diBuilder->createCompileUnit(
+ llvm::dwarf::DW_LANG_C,
+ diBuilder->createFile(fileAndDir.first, fileAndDir.second),
+ "Reactor",
+ 0, "", 0);
+
+ jitEventListener = llvm::JITEventListener::createGDBRegistrationListener();
+ registerBasicTypes();
+
+ SmallVector<Metadata *, 8> EltTys;
+ auto funcTy = diBuilder->createSubroutineType(diBuilder->getOrCreateTypeArray(EltTys));
+
+ auto file = getOrCreateFile(location.function.file.c_str());
+ auto sp = diBuilder->createFunction(
+ file, // scope
+ "ReactorFunction", // function name
+ "ReactorFunction", // linkage
+ file, // file
+ location.line, // line
+ funcTy, // type
+ false, // internal linkage
+ true, // definition
+ location.line, // scope line
+ DINode::FlagPrototyped, // flags
+ false // is optimized
+ );
+ diSubprogram = sp;
+ function->setSubprogram(sp);
+ diRootLocation = DILocation::get(*context, location.line, 0, sp);
+ builder->SetCurrentDebugLocation(diRootLocation);
+ }
+
+ void DebugInfo::Finalize()
+ {
+ while (diScope.size() > 0)
+ {
+ emitPending(diScope.back(), builder, diBuilder);
+ diScope.pop_back();
+ }
+ diBuilder->finalize();
+ }
+
+ void DebugInfo::EmitLocation()
+ {
+ auto const& backtrace = getCallerBacktrace();
+ syncScope(backtrace);
+ builder->SetCurrentDebugLocation(getLocation(backtrace, backtrace.size() - 1));
+ }
+
+ void DebugInfo::Flush()
+ {
+ emitPending(diScope.back(), builder, diBuilder);
+ }
+
+ void DebugInfo::syncScope(Backtrace const& backtrace)
+ {
+ auto shrink = [this](size_t newsize)
+ {
+ while (diScope.size() > newsize)
+ {
+ auto &scope = diScope.back();
+ LOG("- STACK(%d): di: %p, location: %s:%d",
+ int(diScope.size() - 1), scope.di,
+ scope.location.function.file.c_str(),
+ int(scope.location.line));
+ emitPending(scope, builder, diBuilder);
+ diScope.pop_back();
+ }
+ };
+
+ if (backtrace.size() < diScope.size())
+ {
+ shrink(backtrace.size());
+ }
+
+ for (size_t i = 0; i < diScope.size(); i++)
+ {
+ auto &scope = diScope[i];
+ auto const &oldLocation = scope.location;
+ auto const &newLocation = backtrace[i];
+
+ if (oldLocation.function != newLocation.function)
+ {
+ LOG(" STACK(%d): Changed function %s -> %s", int(i),
+ oldLocation.function.name.c_str(), newLocation.function.name.c_str());
+ shrink(i);
+ break;
+ }
+
+ if (oldLocation.line > newLocation.line)
+ {
+ // Create a new di block to shadow all the variables in the loop.
+ auto file = getOrCreateFile(newLocation.function.file.c_str());
+ auto di = diBuilder->createLexicalBlock(scope.di, file, newLocation.line, 0);
+ LOG(" STACK(%d): Jumped backwards %d -> %d. di: %p -> %p", int(i),
+ oldLocation.line, newLocation.line, scope.di, di);
+ emitPending(scope, builder, diBuilder);
+ scope = {newLocation, di};
+ shrink(i+1);
+ break;
+ }
+
+ scope.location = newLocation;
+ }
+
+ while (backtrace.size() > diScope.size())
+ {
+ auto i = diScope.size();
+ auto location = backtrace[i];
+ auto file = getOrCreateFile(location.function.file.c_str());
+ auto funcTy = diBuilder->createSubroutineType(diBuilder->getOrCreateTypeArray({}));
+
+ char buf[1024];
+ size_t size = sizeof(buf);
+ int status = 0;
+ llvm::itaniumDemangle(location.function.name.c_str(), buf, &size, &status);
+ auto name = status == 0 ? buf : location.function.name.c_str();
+
+ auto func = diBuilder->createFunction(
+ file, // scope
+ name, // function name
+ "", // linkage
+ file, // file
+ location.line, // line
+ funcTy, // type
+ false, // internal linkage
+ true, // definition
+ location.line, // scope line
+ llvm::DINode::FlagPrototyped, // flags
+ false // is optimized
+ );
+ diScope.push_back({location, func});
+ LOG("+ STACK(%d): di: %p, location: %s:%d", int(i), di,
+ location.function.file.c_str(), int(location.line));
+ }
+ }
+
+ llvm::DILocation* DebugInfo::getLocation(const Backtrace &backtrace, size_t i)
+ {
+ if (backtrace.size() == 0) { return nullptr; }
+ assert(backtrace.size() == diScope.size());
+ return llvm::DILocation::get(
+ *context,
+ backtrace[i].line,
+ 0,
+ diScope[i].di,
+ i > 0 ? getLocation(backtrace, i - 1) : diRootLocation
+ );
+ }
+
+ void DebugInfo::EmitVariable(Value *variable)
+ {
+ auto const& backtrace = getCallerBacktrace();
+ syncScope(backtrace);
+
+ for (int i = backtrace.size() - 1; i >= 0; i--)
+ {
+ auto const &location = backtrace[i];
+ auto tokens = getOrParseFileTokens(location.function.file.c_str());
+ auto tokIt = tokens->find(location.line);
+ if (tokIt == tokens->end())
+ {
+ break;
+ }
+ auto token = tokIt->second;
+ auto name = token.identifier;
+ if (token.kind == Token::Return)
+ {
+ // This is a:
+ //
+ // return <expr>;
+ //
+ // Emit this expression as two variables -
+ // Once as a synthetic 'return_value' variable at this scope.
+ // Again by bubbling the expression value up the callstack as
+ // Return Value Optimizations (RVOs) are likely to carry across
+ // the value to a local without calling a constructor in
+ // statements like:
+ //
+ // auto val = foo();
+ //
+ name = "return_value";
+ }
+
+ auto &scope = diScope[i];
+ if (scope.pending.location != location)
+ {
+ emitPending(scope, builder, diBuilder);
+ }
+
+ auto value = V(variable);
+ auto block = builder->GetInsertBlock();
+
+ auto insertAfter = block->size() > 0 ? &block->back() : nullptr;
+ while (insertAfter != nullptr && insertAfter->isTerminator())
+ {
+ insertAfter = insertAfter->getPrevNode();
+ }
+
+ scope.pending = Pending{};
+ scope.pending.name = name;
+ scope.pending.location = location;
+ scope.pending.diLocation = getLocation(backtrace, i);
+ scope.pending.value = value;
+ scope.pending.block = block;
+ scope.pending.insertAfter = insertAfter;
+ scope.pending.scope = scope.di;
+
+ if (token.kind == Token::Return)
+ {
+ // Insert a noop instruction so the debugger can inspect the
+ // return value before the function scope closes.
+ scope.pending.addNopOnNextLine = true;
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+
+ void DebugInfo::emitPending(Scope &scope, IRBuilder *builder, llvm::DIBuilder *diBuilder)
+ {
+ auto const &pending = scope.pending;
+ if (pending.value == nullptr)
+ {
+ return;
+ }
+
+ if (!scope.symbols.emplace(pending.name).second)
+ {
+ return;
+ }
+
+ bool isAlloca = llvm::isa<llvm::AllocaInst>(pending.value);
+
+ LOG(" EMIT(%s): di: %p, location: %s:%d, isAlloca: %s", pending.name.c_str(), scope.di,
+ pending.location.function.file.c_str(), pending.location.line, isAlloca ? "true" : "false");
+
+ auto value = pending.value;
+
+ IRBuilder::InsertPointGuard guard(*builder);
+ if (pending.insertAfter != nullptr)
+ {
+ builder->SetInsertPoint(pending.block, ++pending.insertAfter->getIterator());
+ }
+ else
+ {
+ builder->SetInsertPoint(pending.block);
+ }
+ builder->SetCurrentDebugLocation(pending.diLocation);
+
+ if (!isAlloca)
+ {
+ // While insertDbgValueIntrinsic should be enough to declare a
+ // variable with no storage, variables of RValues can share the same
+ // llvm::Value, and only one can be named. Take for example:
+ //
+ // Int a = 42;
+ // RValue<Int> b = a;
+ // RValue<Int> c = b;
+ //
+ // To handle this, always promote named RValues to an alloca.
+
+ llvm::BasicBlock &entryBlock = function->getEntryBlock();
+ auto alloca = new llvm::AllocaInst(value->getType(), 0, pending.name);
+ entryBlock.getInstList().push_front(alloca);
+ builder->CreateStore(value, alloca);
+ value = alloca;
+ }
+
+ value->setName(pending.name);
+
+ auto diFile = getOrCreateFile(pending.location.function.file.c_str());
+ auto diType = getOrCreateType(value->getType()->getPointerElementType());
+ auto diVar = diBuilder->createAutoVariable(scope.di, pending.name, diFile, pending.location.line, diType);
+
+ auto di = diBuilder->insertDeclare(value, diVar, diBuilder->createExpression(), pending.diLocation, pending.block);
+ if (pending.insertAfter != nullptr) { di->moveAfter(pending.insertAfter); }
+
+ if (pending.addNopOnNextLine)
+ {
+ builder->SetCurrentDebugLocation(llvm::DILocation::get(
+ *context,
+ pending.diLocation->getLine() + 1,
+ 0,
+ pending.diLocation->getScope(),
+ pending.diLocation->getInlinedAt()
+ ));
+ Nop();
+ }
+
+ scope.pending = Pending{};
+ }
+
+ void DebugInfo::NotifyObjectEmitted(const llvm::object::ObjectFile &Obj, const llvm::LoadedObjectInfo &L)
+ {
+ jitEventListener->NotifyObjectEmitted(Obj, static_cast<const llvm::RuntimeDyld::LoadedObjectInfo&>(L));
+ }
+
+ void DebugInfo::NotifyFreeingObject(const llvm::object::ObjectFile &Obj)
+ {
+ jitEventListener->NotifyFreeingObject(Obj);
+ }
+
+ void DebugInfo::registerBasicTypes()
+ {
+ using namespace rr;
+ using namespace llvm;
+
+ auto vec4 = diBuilder->getOrCreateArray(diBuilder->getOrCreateSubrange(0, 4));
+ auto vec8 = diBuilder->getOrCreateArray(diBuilder->getOrCreateSubrange(0, 8));
+ auto vec16 = diBuilder->getOrCreateArray(diBuilder->getOrCreateSubrange(0, 16));
+
+ diTypes.emplace(T(Bool::getType()), diBuilder->createBasicType("Bool", sizeof(bool), dwarf::DW_ATE_boolean));
+ diTypes.emplace(T(Byte::getType()), diBuilder->createBasicType("Byte", 8, dwarf::DW_ATE_unsigned_char));
+ diTypes.emplace(T(SByte::getType()), diBuilder->createBasicType("SByte", 8, dwarf::DW_ATE_signed_char));
+ diTypes.emplace(T(Short::getType()), diBuilder->createBasicType("Short", 16, dwarf::DW_ATE_signed));
+ diTypes.emplace(T(UShort::getType()), diBuilder->createBasicType("UShort", 16, dwarf::DW_ATE_unsigned));
+ diTypes.emplace(T(Int::getType()), diBuilder->createBasicType("Int", 32, dwarf::DW_ATE_signed));
+ diTypes.emplace(T(UInt::getType()), diBuilder->createBasicType("UInt", 32, dwarf::DW_ATE_unsigned));
+ diTypes.emplace(T(Long::getType()), diBuilder->createBasicType("Long", 64, dwarf::DW_ATE_signed));
+ diTypes.emplace(T(Half::getType()), diBuilder->createBasicType("Half", 16, dwarf::DW_ATE_float));
+ diTypes.emplace(T(Float::getType()), diBuilder->createBasicType("Float", 32, dwarf::DW_ATE_float));
+
+ diTypes.emplace(T(Byte4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Byte::getType())], {vec16}));
+ diTypes.emplace(T(SByte4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(SByte::getType())], {vec16}));
+ diTypes.emplace(T(Byte8::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Byte::getType())], {vec16}));
+ diTypes.emplace(T(SByte8::getType()), diBuilder->createVectorType(128, 128, diTypes[T(SByte::getType())], {vec16}));
+ diTypes.emplace(T(Byte16::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Byte::getType())], {vec16}));
+ diTypes.emplace(T(SByte16::getType()), diBuilder->createVectorType(128, 128, diTypes[T(SByte::getType())], {vec16}));
+ diTypes.emplace(T(Short2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Short::getType())], {vec8}));
+ diTypes.emplace(T(UShort2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UShort::getType())], {vec8}));
+ diTypes.emplace(T(Short4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Short::getType())], {vec8}));
+ diTypes.emplace(T(UShort4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UShort::getType())], {vec8}));
+ diTypes.emplace(T(Short8::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Short::getType())], {vec8}));
+ diTypes.emplace(T(UShort8::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UShort::getType())], {vec8}));
+ diTypes.emplace(T(Int2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Int::getType())], {vec4}));
+ diTypes.emplace(T(UInt2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UInt::getType())], {vec4}));
+ diTypes.emplace(T(Int4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Int::getType())], {vec4}));
+ diTypes.emplace(T(UInt4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UInt::getType())], {vec4}));
+ diTypes.emplace(T(Float2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Float::getType())], {vec4}));
+ diTypes.emplace(T(Float4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Float::getType())], {vec4}));
+ }
+
+ DebugInfo::Location DebugInfo::getCallerLocation() const
+ {
+ return getCallerBacktrace(1)[0];
+ }
+
+ DebugInfo::Backtrace DebugInfo::getCallerBacktrace(size_t limit /* = 0 */) const
+ {
+ struct callbacks
+ {
+ static void onError(void *data, const char *msg, int errnum)
+ {
+ fprintf(stderr, "BACKTRACE ERROR %d: %s\n", errnum, msg);
+ }
+
+ static int onPCInfo(void *data, uintptr_t pc, const char *file, int line, const char *function)
+ {
+ if (file == nullptr) { return 0; }
+
+ auto const &fileSR = llvm::StringRef(file);
+ if (fileSR.endswith("ReactorDebugInfo.cpp") ||
+ fileSR.endswith("Reactor.cpp") ||
+ fileSR.endswith("Reactor.hpp"))
+ {
+ return 0;
+ }
+
+ auto cb = reinterpret_cast<callbacks*>(data);
+
+ Location location;
+ location.function.file = file;
+ location.function.name = function;
+ location.line = line;
+
+ cb->locations.push_back(location);
+ return (cb->limit == 0 || sizeof(cb->locations) < cb->limit) ? 0 : 1;
+ }
+
+ size_t limit;
+ std::vector<DebugInfo::Location> locations;
+ };
+
+ callbacks callbacks;
+ callbacks.limit = limit;
+ static auto state = backtrace_create_state(nullptr, 0, &callbacks::onError, nullptr);
+ backtrace_full(state, 1, &callbacks::onPCInfo, &callbacks::onError, &callbacks);
+
+ std::reverse(callbacks.locations.begin(), callbacks.locations.end());
+
+ return callbacks.locations;
+ }
+
+ llvm::DIType *DebugInfo::getOrCreateType(llvm::Type* type)
+ {
+ auto it = diTypes.find(type);
+ if (it != diTypes.end()) { return it->second; }
+
+ if(type->isPointerTy())
+ {
+ auto dbgTy = diBuilder->createPointerType(
+ getOrCreateType(type->getPointerElementType()),
+ sizeof(void*)*8, alignof(void*)*8);
+ diTypes.emplace(type, dbgTy);
+ return dbgTy;
+ }
+ llvm::errs() << "Unimplemented debug type: " << type << "\n";
+ assert(false);
+ }
+
+ llvm::DIFile *DebugInfo::getOrCreateFile(const char* path)
+ {
+ auto it = diFiles.find(path);
+ if (it != diFiles.end()) { return it->second; }
+ auto dirAndName = splitPath(path);
+ auto file = diBuilder->createFile(dirAndName.second, dirAndName.first);
+ diFiles.emplace(path, file);
+ return file;
+ }
+
+ DebugInfo::LineTokens const *DebugInfo::getOrParseFileTokens(const char* path)
+ {
+ static std::regex reLocalDecl(
+ "^" // line start
+ "\\s*" // initial whitespace
+ "(?:For\\s*\\(\\s*)?" // optional 'For ('
+ "((?:\\w+(?:<[^>]+>)?)(?:::\\w+(?:<[^>]+>)?)*)" // type (match group 1)
+ "\\s+" // whitespace between type and name
+ "(\\w+)" // identifier (match group 2)
+ "\\s*" // whitespace after identifier
+ "(\\[.*\\])?"); // optional array suffix (match group 3)
+
+ auto it = fileTokens.find(path);
+ if (it != fileTokens.end())
+ {
+ return it->second.get();
+ }
+
+ auto tokens = std::unique_ptr<LineTokens>(new LineTokens());
+
+ std::ifstream file(path);
+ std::string line;
+ int lineCount = 0;
+ while (std::getline(file, line))
+ {
+ lineCount++;
+ std::smatch match;
+ if (std::regex_search(line, match, reLocalDecl) && match.size() > 3)
+ {
+ bool isArray = match.str(3) != "";
+ if (!isArray) // Cannot deal with C-arrays of values.
+ {
+ if (match.str(1) == "return")
+ {
+ (*tokens)[lineCount] = Token{Token::Return};
+ }
+ else
+ {
+ (*tokens)[lineCount] = Token{Token::Identifier, match.str(2)};
+ }
+ }
+ }
+ }
+
+ auto out = tokens.get();
+ fileTokens.emplace(path, std::move(tokens));
+ return out;
+ }
+
+} // namespace rr
+
+#endif // ENABLE_RR_DEBUG_INFO
diff --git a/chromium/third_party/swiftshader/src/Reactor/LLVMReactorDebugInfo.hpp b/chromium/third_party/swiftshader/src/Reactor/LLVMReactorDebugInfo.hpp
new file mode 100644
index 00000000000..d8c83de9879
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Reactor/LLVMReactorDebugInfo.hpp
@@ -0,0 +1,211 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef rr_LLVMReactorDebugInfo_hpp
+#define rr_LLVMReactorDebugInfo_hpp
+
+#include "Reactor.hpp"
+
+#ifdef ENABLE_RR_DEBUG_INFO
+
+#include <unordered_set>
+#include <unordered_map>
+#include <vector>
+#include <memory>
+
+// Forward declarations
+namespace llvm
+{
+ class BasicBlock;
+ class ConstantFolder;
+ class DIBuilder;
+ class DICompileUnit;
+ class DIFile;
+ class DILocation;
+ class DIScope;
+ class DISubprogram;
+ class DIType;
+ class Function;
+ class Instruction;
+ class IRBuilderDefaultInserter;
+ class JITEventListener;
+ class LLVMContext;
+ class LoadedObjectInfo;
+ class Module;
+ class Type;
+ class Value;
+
+ namespace object
+ {
+ class ObjectFile;
+ }
+
+ template <typename T, typename Inserter> class IRBuilder;
+} // namespace llvm
+
+namespace rr
+{
+ class Type;
+ class Value;
+
+ // DebugInfo generates LLVM DebugInfo IR from the C++ source that calls
+ // into Reactor functions. See docs/ReactorDebugInfo.mk for more information.
+ class DebugInfo
+ {
+ public:
+ using IRBuilder = llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>;
+
+ DebugInfo(IRBuilder *builder,
+ llvm::LLVMContext *context,
+ llvm::Module *module,
+ llvm::Function *function);
+
+ // Finalize debug info generation. Must be called before the LLVM module
+ // is built.
+ void Finalize();
+
+ // Updates the current source location.
+ void EmitLocation();
+
+ // Binds the value to its symbol in the source file.
+ // See docs/ReactorDebugInfo.mk for more information.
+ void EmitVariable(Value *value);
+
+ // Forcefully flush the binding of the last variable name.
+ // Used for binding the initializer of `For` loops.
+ void Flush();
+
+ // NotifyObjectEmitted informs any attached debuggers of the JIT'd
+ // object.
+ void NotifyObjectEmitted(const llvm::object::ObjectFile &Obj, const llvm::LoadedObjectInfo &L);
+
+ // NotifyFreeingObject informs any attached debuggers that the JIT'd
+ // object is now invalid.
+ void NotifyFreeingObject(const llvm::object::ObjectFile &Obj);
+
+ private:
+ struct Token
+ {
+ enum Kind
+ {
+ Identifier,
+ Return
+ };
+ Kind kind;
+ std::string identifier;
+ };
+
+ using LineTokens = std::unordered_map<unsigned int, Token>;
+
+ struct FunctionLocation
+ {
+ std::string name;
+ std::string file;
+
+ bool operator == (const FunctionLocation &rhs) const { return name == rhs.name && file == rhs.file; }
+ bool operator != (const FunctionLocation &rhs) const { return !(*this == rhs); }
+
+ struct Hash
+ {
+ std::size_t operator()(const FunctionLocation &l) const noexcept
+ {
+ return std::hash<std::string>()(l.file) * 31 +
+ std::hash<std::string>()(l.name);
+ }
+ };
+ };
+
+ struct Location
+ {
+ FunctionLocation function;
+ unsigned int line = 0;
+
+ bool operator == (const Location &rhs) const { return function == rhs.function && line == rhs.line; }
+ bool operator != (const Location &rhs) const { return !(*this == rhs); }
+
+ struct Hash
+ {
+ std::size_t operator()(const Location &l) const noexcept
+ {
+ return FunctionLocation::Hash()(l.function) * 31 +
+ std::hash<unsigned int>()(l.line);
+ }
+ };
+ };
+
+ using Backtrace = std::vector<Location>;
+
+ struct Pending
+ {
+ std::string name;
+ Location location;
+ llvm::DILocation *diLocation = nullptr;
+ llvm::Value *value = nullptr;
+ llvm::Instruction *insertAfter = nullptr;
+ llvm::BasicBlock *block = nullptr;
+ llvm::DIScope *scope = nullptr;
+ bool addNopOnNextLine = false;
+ };
+
+ struct Scope
+ {
+ Location location;
+ llvm::DIScope *di;
+ std::unordered_set<std::string> symbols;
+ Pending pending;
+ };
+
+ void registerBasicTypes();
+
+ void emitPending(Scope &scope, IRBuilder *builder, llvm::DIBuilder *diBuilder);
+
+ // Returns the source location of the non-Reactor calling function.
+ Location getCallerLocation() const;
+
+ // Returns the backtrace for the callstack, starting at the first
+ // non-Reactor file. If limit is non-zero, then a maximum of limit
+ // frames will be returned.
+ Backtrace getCallerBacktrace(size_t limit = 0) const;
+
+ llvm::DILocation* getLocation(const Backtrace &backtrace, size_t i);
+
+ llvm::DIType *getOrCreateType(llvm::Type* type);
+ llvm::DIFile *getOrCreateFile(const char* path);
+ LineTokens const *getOrParseFileTokens(const char* path);
+
+ // Synchronizes diScope with the current backtrace.
+ void syncScope(Backtrace const& backtrace);
+
+ IRBuilder *builder;
+ llvm::LLVMContext *context;
+ llvm::Module *module;
+ llvm::Function *function;
+
+ llvm::DIBuilder *diBuilder;
+ llvm::DICompileUnit *diCU;
+ llvm::DISubprogram *diSubprogram;
+ llvm::DILocation *diRootLocation;
+ std::vector<Scope> diScope;
+ std::unordered_map<std::string, llvm::DIFile*> diFiles;
+ std::unordered_map<llvm::Type*, llvm::DIType*> diTypes;
+ std::unordered_map<std::string, std::unique_ptr<LineTokens>> fileTokens;
+ llvm::JITEventListener *jitEventListener;
+ std::vector<void const*> pushed;
+ };
+
+} // namespace rr
+
+#endif // ENABLE_RR_DEBUG_INFO
+
+#endif // rr_LLVMReactorDebugInfo_hpp
diff --git a/chromium/third_party/swiftshader/src/Reactor/Nucleus.hpp b/chromium/third_party/swiftshader/src/Reactor/Nucleus.hpp
index ef695c5d324..1adeaf3a4c8 100644
--- a/chromium/third_party/swiftshader/src/Reactor/Nucleus.hpp
+++ b/chromium/third_party/swiftshader/src/Reactor/Nucleus.hpp
@@ -19,6 +19,7 @@
#include <cstdarg>
#include <cstdint>
#include <vector>
+#include <atomic>
namespace rr
{
@@ -95,8 +96,8 @@ namespace rr
static Value *createNot(Value *V);
// Memory instructions
- static Value *createLoad(Value *ptr, Type *type, bool isVolatile = false, unsigned int align = 0);
- static Value *createStore(Value *value, Value *ptr, Type *type, bool isVolatile = false, unsigned int align = 0);
+ static Value *createLoad(Value *ptr, Type *type, bool isVolatile = false, unsigned int alignment = 0, bool atomic = false , std::memory_order memoryOrder = std::memory_order_relaxed);
+ static Value *createStore(Value *value, Value *ptr, Type *type, bool isVolatile = false, unsigned int aligment = 0, bool atomic = false, std::memory_order memoryOrder = std::memory_order_relaxed);
static Value *createGEP(Value *ptr, Type *type, Value *index, bool unsignedIndex);
// Atomic instructions
diff --git a/chromium/third_party/swiftshader/src/Reactor/Reactor.cpp b/chromium/third_party/swiftshader/src/Reactor/Reactor.cpp
new file mode 100644
index 00000000000..96a8d254dba
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Reactor/Reactor.cpp
@@ -0,0 +1,4160 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "Reactor.hpp"
+
+// Define REACTOR_MATERIALIZE_LVALUES_ON_DEFINITION to non-zero to ensure all
+// variables have a stack location obtained throuch alloca().
+#ifndef REACTOR_MATERIALIZE_LVALUES_ON_DEFINITION
+#define REACTOR_MATERIALIZE_LVALUES_ON_DEFINITION 0
+#endif
+
+namespace rr
+{
+ // Set of variables that do not have a stack location yet.
+ std::unordered_set<Variable*> Variable::unmaterializedVariables;
+
+ Variable::Variable(Type *type, int arraySize) : type(type), arraySize(arraySize)
+ {
+ #if REACTOR_MATERIALIZE_LVALUES_ON_DEFINITION
+ materialize();
+ #else
+ unmaterializedVariables.emplace(this);
+ #endif
+ }
+
+ Variable::~Variable()
+ {
+ unmaterializedVariables.erase(this);
+ }
+
+ void Variable::materializeAll()
+ {
+ for(auto *var : unmaterializedVariables)
+ {
+ var->materialize();
+ }
+
+ unmaterializedVariables.clear();
+ }
+
+ void Variable::killUnmaterialized()
+ {
+ unmaterializedVariables.clear();
+ }
+
+ static Value *createSwizzle4(Value *val, unsigned char select)
+ {
+ int swizzle[4] =
+ {
+ (select >> 0) & 0x03,
+ (select >> 2) & 0x03,
+ (select >> 4) & 0x03,
+ (select >> 6) & 0x03,
+ };
+
+ return Nucleus::createShuffleVector(val, val, swizzle);
+ }
+
+ static Value *createMask4(Value *lhs, Value *rhs, unsigned char select)
+ {
+ bool mask[4] = {false, false, false, false};
+
+ mask[(select >> 0) & 0x03] = true;
+ mask[(select >> 2) & 0x03] = true;
+ mask[(select >> 4) & 0x03] = true;
+ mask[(select >> 6) & 0x03] = true;
+
+ int swizzle[4] =
+ {
+ mask[0] ? 4 : 0,
+ mask[1] ? 5 : 1,
+ mask[2] ? 6 : 2,
+ mask[3] ? 7 : 3,
+ };
+
+ return Nucleus::createShuffleVector(lhs, rhs, swizzle);
+ }
+
+ Bool::Bool(Argument<Bool> argument)
+ {
+ materialize(); // FIXME(b/129757459)
+ storeValue(argument.value);
+ }
+
+ Bool::Bool(bool x)
+ {
+ storeValue(Nucleus::createConstantBool(x));
+ }
+
+ Bool::Bool(RValue<Bool> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ Bool::Bool(const Bool &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Bool::Bool(const Reference<Bool> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ RValue<Bool> Bool::operator=(RValue<Bool> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Bool> Bool::operator=(const Bool &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Bool>(value);
+ }
+
+ RValue<Bool> Bool::operator=(const Reference<Bool> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Bool>(value);
+ }
+
+ RValue<Bool> operator!(RValue<Bool> val)
+ {
+ return RValue<Bool>(Nucleus::createNot(val.value));
+ }
+
+ RValue<Bool> operator&&(RValue<Bool> lhs, RValue<Bool> rhs)
+ {
+ return RValue<Bool>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator||(RValue<Bool> lhs, RValue<Bool> rhs)
+ {
+ return RValue<Bool>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator!=(RValue<Bool> lhs, RValue<Bool> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator==(RValue<Bool> lhs, RValue<Bool> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
+ }
+
+ Byte::Byte(Argument<Byte> argument)
+ {
+ materialize(); // FIXME(b/129757459)
+ storeValue(argument.value);
+ }
+
+ Byte::Byte(RValue<Int> cast)
+ {
+ Value *integer = Nucleus::createTrunc(cast.value, Byte::getType());
+
+ storeValue(integer);
+ }
+
+ Byte::Byte(RValue<UInt> cast)
+ {
+ Value *integer = Nucleus::createTrunc(cast.value, Byte::getType());
+
+ storeValue(integer);
+ }
+
+ Byte::Byte(RValue<UShort> cast)
+ {
+ Value *integer = Nucleus::createTrunc(cast.value, Byte::getType());
+
+ storeValue(integer);
+ }
+
+ Byte::Byte(int x)
+ {
+ storeValue(Nucleus::createConstantByte((unsigned char)x));
+ }
+
+ Byte::Byte(unsigned char x)
+ {
+ storeValue(Nucleus::createConstantByte(x));
+ }
+
+ Byte::Byte(RValue<Byte> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ Byte::Byte(const Byte &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Byte::Byte(const Reference<Byte> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ RValue<Byte> Byte::operator=(RValue<Byte> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Byte> Byte::operator=(const Byte &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Byte>(value);
+ }
+
+ RValue<Byte> Byte::operator=(const Reference<Byte> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Byte>(value);
+ }
+
+ RValue<Byte> operator+(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Byte>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<Byte> operator-(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Byte>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+ RValue<Byte> operator*(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Byte>(Nucleus::createMul(lhs.value, rhs.value));
+ }
+
+ RValue<Byte> operator/(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Byte>(Nucleus::createUDiv(lhs.value, rhs.value));
+ }
+
+ RValue<Byte> operator%(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Byte>(Nucleus::createURem(lhs.value, rhs.value));
+ }
+
+ RValue<Byte> operator&(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Byte>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<Byte> operator|(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Byte>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<Byte> operator^(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Byte>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+ RValue<Byte> operator<<(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Byte>(Nucleus::createShl(lhs.value, rhs.value));
+ }
+
+ RValue<Byte> operator>>(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Byte>(Nucleus::createLShr(lhs.value, rhs.value));
+ }
+
+ RValue<Byte> operator+=(Byte &lhs, RValue<Byte> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<Byte> operator-=(Byte &lhs, RValue<Byte> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+ RValue<Byte> operator*=(Byte &lhs, RValue<Byte> rhs)
+ {
+ return lhs = lhs * rhs;
+ }
+
+ RValue<Byte> operator/=(Byte &lhs, RValue<Byte> rhs)
+ {
+ return lhs = lhs / rhs;
+ }
+
+ RValue<Byte> operator%=(Byte &lhs, RValue<Byte> rhs)
+ {
+ return lhs = lhs % rhs;
+ }
+
+ RValue<Byte> operator&=(Byte &lhs, RValue<Byte> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<Byte> operator|=(Byte &lhs, RValue<Byte> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<Byte> operator^=(Byte &lhs, RValue<Byte> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+ RValue<Byte> operator<<=(Byte &lhs, RValue<Byte> rhs)
+ {
+ return lhs = lhs << rhs;
+ }
+
+ RValue<Byte> operator>>=(Byte &lhs, RValue<Byte> rhs)
+ {
+ return lhs = lhs >> rhs;
+ }
+
+ RValue<Byte> operator+(RValue<Byte> val)
+ {
+ return val;
+ }
+
+ RValue<Byte> operator-(RValue<Byte> val)
+ {
+ return RValue<Byte>(Nucleus::createNeg(val.value));
+ }
+
+ RValue<Byte> operator~(RValue<Byte> val)
+ {
+ return RValue<Byte>(Nucleus::createNot(val.value));
+ }
+
+ RValue<Byte> operator++(Byte &val, int) // Post-increment
+ {
+ RValue<Byte> res = val;
+
+ Value *inc = Nucleus::createAdd(res.value, Nucleus::createConstantByte((unsigned char)1));
+ val.storeValue(inc);
+
+ return res;
+ }
+
+ const Byte &operator++(Byte &val) // Pre-increment
+ {
+ Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantByte((unsigned char)1));
+ val.storeValue(inc);
+
+ return val;
+ }
+
+ RValue<Byte> operator--(Byte &val, int) // Post-decrement
+ {
+ RValue<Byte> res = val;
+
+ Value *inc = Nucleus::createSub(res.value, Nucleus::createConstantByte((unsigned char)1));
+ val.storeValue(inc);
+
+ return res;
+ }
+
+ const Byte &operator--(Byte &val) // Pre-decrement
+ {
+ Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantByte((unsigned char)1));
+ val.storeValue(inc);
+
+ return val;
+ }
+
+ RValue<Bool> operator<(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpULT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator<=(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpULE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpUGT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>=(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpUGE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator!=(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator==(RValue<Byte> lhs, RValue<Byte> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
+ }
+
+ SByte::SByte(Argument<SByte> argument)
+ {
+ materialize(); // FIXME(b/129757459)
+ storeValue(argument.value);
+ }
+
+ SByte::SByte(RValue<Int> cast)
+ {
+ Value *integer = Nucleus::createTrunc(cast.value, SByte::getType());
+
+ storeValue(integer);
+ }
+
+ SByte::SByte(RValue<Short> cast)
+ {
+ Value *integer = Nucleus::createTrunc(cast.value, SByte::getType());
+
+ storeValue(integer);
+ }
+
+ SByte::SByte(signed char x)
+ {
+ storeValue(Nucleus::createConstantByte(x));
+ }
+
+ SByte::SByte(RValue<SByte> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ SByte::SByte(const SByte &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ SByte::SByte(const Reference<SByte> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ RValue<SByte> SByte::operator=(RValue<SByte> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<SByte> SByte::operator=(const SByte &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<SByte>(value);
+ }
+
+ RValue<SByte> SByte::operator=(const Reference<SByte> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<SByte>(value);
+ }
+
+ RValue<SByte> operator+(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<SByte>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<SByte> operator-(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<SByte>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+ RValue<SByte> operator*(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<SByte>(Nucleus::createMul(lhs.value, rhs.value));
+ }
+
+ RValue<SByte> operator/(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<SByte>(Nucleus::createSDiv(lhs.value, rhs.value));
+ }
+
+ RValue<SByte> operator%(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<SByte>(Nucleus::createSRem(lhs.value, rhs.value));
+ }
+
+ RValue<SByte> operator&(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<SByte>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<SByte> operator|(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<SByte>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<SByte> operator^(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<SByte>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+ RValue<SByte> operator<<(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<SByte>(Nucleus::createShl(lhs.value, rhs.value));
+ }
+
+ RValue<SByte> operator>>(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<SByte>(Nucleus::createAShr(lhs.value, rhs.value));
+ }
+
+ RValue<SByte> operator+=(SByte &lhs, RValue<SByte> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<SByte> operator-=(SByte &lhs, RValue<SByte> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+ RValue<SByte> operator*=(SByte &lhs, RValue<SByte> rhs)
+ {
+ return lhs = lhs * rhs;
+ }
+
+ RValue<SByte> operator/=(SByte &lhs, RValue<SByte> rhs)
+ {
+ return lhs = lhs / rhs;
+ }
+
+ RValue<SByte> operator%=(SByte &lhs, RValue<SByte> rhs)
+ {
+ return lhs = lhs % rhs;
+ }
+
+ RValue<SByte> operator&=(SByte &lhs, RValue<SByte> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<SByte> operator|=(SByte &lhs, RValue<SByte> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<SByte> operator^=(SByte &lhs, RValue<SByte> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+ RValue<SByte> operator<<=(SByte &lhs, RValue<SByte> rhs)
+ {
+ return lhs = lhs << rhs;
+ }
+
+ RValue<SByte> operator>>=(SByte &lhs, RValue<SByte> rhs)
+ {
+ return lhs = lhs >> rhs;
+ }
+
+ RValue<SByte> operator+(RValue<SByte> val)
+ {
+ return val;
+ }
+
+ RValue<SByte> operator-(RValue<SByte> val)
+ {
+ return RValue<SByte>(Nucleus::createNeg(val.value));
+ }
+
+ RValue<SByte> operator~(RValue<SByte> val)
+ {
+ return RValue<SByte>(Nucleus::createNot(val.value));
+ }
+
+ RValue<SByte> operator++(SByte &val, int) // Post-increment
+ {
+ RValue<SByte> res = val;
+
+ Value *inc = Nucleus::createAdd(res.value, Nucleus::createConstantByte((signed char)1));
+ val.storeValue(inc);
+
+ return res;
+ }
+
+ const SByte &operator++(SByte &val) // Pre-increment
+ {
+ Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantByte((signed char)1));
+ val.storeValue(inc);
+
+ return val;
+ }
+
+ RValue<SByte> operator--(SByte &val, int) // Post-decrement
+ {
+ RValue<SByte> res = val;
+
+ Value *inc = Nucleus::createSub(res.value, Nucleus::createConstantByte((signed char)1));
+ val.storeValue(inc);
+
+ return res;
+ }
+
+ const SByte &operator--(SByte &val) // Pre-decrement
+ {
+ Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantByte((signed char)1));
+ val.storeValue(inc);
+
+ return val;
+ }
+
+ RValue<Bool> operator<(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpSLT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator<=(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpSLE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpSGT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>=(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpSGE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator!=(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator==(RValue<SByte> lhs, RValue<SByte> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
+ }
+
+ Short::Short(Argument<Short> argument)
+ {
+ materialize(); // FIXME(b/129757459)
+ storeValue(argument.value);
+ }
+
+ Short::Short(RValue<Int> cast)
+ {
+ Value *integer = Nucleus::createTrunc(cast.value, Short::getType());
+
+ storeValue(integer);
+ }
+
+ Short::Short(short x)
+ {
+ storeValue(Nucleus::createConstantShort(x));
+ }
+
+ Short::Short(RValue<Short> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ Short::Short(const Short &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Short::Short(const Reference<Short> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ RValue<Short> Short::operator=(RValue<Short> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Short> Short::operator=(const Short &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Short>(value);
+ }
+
+ RValue<Short> Short::operator=(const Reference<Short> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Short>(value);
+ }
+
+ RValue<Short> operator+(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Short>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<Short> operator-(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Short>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+ RValue<Short> operator*(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Short>(Nucleus::createMul(lhs.value, rhs.value));
+ }
+
+ RValue<Short> operator/(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Short>(Nucleus::createSDiv(lhs.value, rhs.value));
+ }
+
+ RValue<Short> operator%(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Short>(Nucleus::createSRem(lhs.value, rhs.value));
+ }
+
+ RValue<Short> operator&(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Short>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<Short> operator|(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Short>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<Short> operator^(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Short>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+ RValue<Short> operator<<(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Short>(Nucleus::createShl(lhs.value, rhs.value));
+ }
+
+ RValue<Short> operator>>(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Short>(Nucleus::createAShr(lhs.value, rhs.value));
+ }
+
+ RValue<Short> operator+=(Short &lhs, RValue<Short> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<Short> operator-=(Short &lhs, RValue<Short> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+ RValue<Short> operator*=(Short &lhs, RValue<Short> rhs)
+ {
+ return lhs = lhs * rhs;
+ }
+
+ RValue<Short> operator/=(Short &lhs, RValue<Short> rhs)
+ {
+ return lhs = lhs / rhs;
+ }
+
+ RValue<Short> operator%=(Short &lhs, RValue<Short> rhs)
+ {
+ return lhs = lhs % rhs;
+ }
+
+ RValue<Short> operator&=(Short &lhs, RValue<Short> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<Short> operator|=(Short &lhs, RValue<Short> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<Short> operator^=(Short &lhs, RValue<Short> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+ RValue<Short> operator<<=(Short &lhs, RValue<Short> rhs)
+ {
+ return lhs = lhs << rhs;
+ }
+
+ RValue<Short> operator>>=(Short &lhs, RValue<Short> rhs)
+ {
+ return lhs = lhs >> rhs;
+ }
+
+ RValue<Short> operator+(RValue<Short> val)
+ {
+ return val;
+ }
+
+ RValue<Short> operator-(RValue<Short> val)
+ {
+ return RValue<Short>(Nucleus::createNeg(val.value));
+ }
+
+ RValue<Short> operator~(RValue<Short> val)
+ {
+ return RValue<Short>(Nucleus::createNot(val.value));
+ }
+
+ RValue<Short> operator++(Short &val, int) // Post-increment
+ {
+ RValue<Short> res = val;
+
+ Value *inc = Nucleus::createAdd(res.value, Nucleus::createConstantShort((short)1));
+ val.storeValue(inc);
+
+ return res;
+ }
+
+ const Short &operator++(Short &val) // Pre-increment
+ {
+ Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantShort((short)1));
+ val.storeValue(inc);
+
+ return val;
+ }
+
+ RValue<Short> operator--(Short &val, int) // Post-decrement
+ {
+ RValue<Short> res = val;
+
+ Value *inc = Nucleus::createSub(res.value, Nucleus::createConstantShort((short)1));
+ val.storeValue(inc);
+
+ return res;
+ }
+
+ const Short &operator--(Short &val) // Pre-decrement
+ {
+ Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantShort((short)1));
+ val.storeValue(inc);
+
+ return val;
+ }
+
+ RValue<Bool> operator<(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpSLT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator<=(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpSLE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpSGT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>=(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpSGE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator!=(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator==(RValue<Short> lhs, RValue<Short> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
+ }
+
+ UShort::UShort(Argument<UShort> argument)
+ {
+ materialize(); // FIXME(b/129757459)
+ storeValue(argument.value);
+ }
+
+ UShort::UShort(RValue<UInt> cast)
+ {
+ Value *integer = Nucleus::createTrunc(cast.value, UShort::getType());
+
+ storeValue(integer);
+ }
+
+ UShort::UShort(RValue<Int> cast)
+ {
+ Value *integer = Nucleus::createTrunc(cast.value, UShort::getType());
+
+ storeValue(integer);
+ }
+
+ UShort::UShort(unsigned short x)
+ {
+ storeValue(Nucleus::createConstantShort(x));
+ }
+
+ UShort::UShort(RValue<UShort> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ UShort::UShort(const UShort &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UShort::UShort(const Reference<UShort> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ RValue<UShort> UShort::operator=(RValue<UShort> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<UShort> UShort::operator=(const UShort &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UShort>(value);
+ }
+
+ RValue<UShort> UShort::operator=(const Reference<UShort> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UShort>(value);
+ }
+
+ RValue<UShort> operator+(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<UShort>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<UShort> operator-(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<UShort>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+ RValue<UShort> operator*(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<UShort>(Nucleus::createMul(lhs.value, rhs.value));
+ }
+
+ RValue<UShort> operator/(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<UShort>(Nucleus::createUDiv(lhs.value, rhs.value));
+ }
+
+ RValue<UShort> operator%(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<UShort>(Nucleus::createURem(lhs.value, rhs.value));
+ }
+
+ RValue<UShort> operator&(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<UShort>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<UShort> operator|(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<UShort>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<UShort> operator^(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<UShort>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+ RValue<UShort> operator<<(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<UShort>(Nucleus::createShl(lhs.value, rhs.value));
+ }
+
+ RValue<UShort> operator>>(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<UShort>(Nucleus::createLShr(lhs.value, rhs.value));
+ }
+
+ RValue<UShort> operator+=(UShort &lhs, RValue<UShort> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<UShort> operator-=(UShort &lhs, RValue<UShort> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+ RValue<UShort> operator*=(UShort &lhs, RValue<UShort> rhs)
+ {
+ return lhs = lhs * rhs;
+ }
+
+ RValue<UShort> operator/=(UShort &lhs, RValue<UShort> rhs)
+ {
+ return lhs = lhs / rhs;
+ }
+
+ RValue<UShort> operator%=(UShort &lhs, RValue<UShort> rhs)
+ {
+ return lhs = lhs % rhs;
+ }
+
+ RValue<UShort> operator&=(UShort &lhs, RValue<UShort> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<UShort> operator|=(UShort &lhs, RValue<UShort> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<UShort> operator^=(UShort &lhs, RValue<UShort> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+ RValue<UShort> operator<<=(UShort &lhs, RValue<UShort> rhs)
+ {
+ return lhs = lhs << rhs;
+ }
+
+ RValue<UShort> operator>>=(UShort &lhs, RValue<UShort> rhs)
+ {
+ return lhs = lhs >> rhs;
+ }
+
+ RValue<UShort> operator+(RValue<UShort> val)
+ {
+ return val;
+ }
+
+ RValue<UShort> operator-(RValue<UShort> val)
+ {
+ return RValue<UShort>(Nucleus::createNeg(val.value));
+ }
+
+ RValue<UShort> operator~(RValue<UShort> val)
+ {
+ return RValue<UShort>(Nucleus::createNot(val.value));
+ }
+
+ RValue<UShort> operator++(UShort &val, int) // Post-increment
+ {
+ RValue<UShort> res = val;
+
+ Value *inc = Nucleus::createAdd(res.value, Nucleus::createConstantShort((unsigned short)1));
+ val.storeValue(inc);
+
+ return res;
+ }
+
+ const UShort &operator++(UShort &val) // Pre-increment
+ {
+ Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantShort((unsigned short)1));
+ val.storeValue(inc);
+
+ return val;
+ }
+
+ RValue<UShort> operator--(UShort &val, int) // Post-decrement
+ {
+ RValue<UShort> res = val;
+
+ Value *inc = Nucleus::createSub(res.value, Nucleus::createConstantShort((unsigned short)1));
+ val.storeValue(inc);
+
+ return res;
+ }
+
+ const UShort &operator--(UShort &val) // Pre-decrement
+ {
+ Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantShort((unsigned short)1));
+ val.storeValue(inc);
+
+ return val;
+ }
+
+ RValue<Bool> operator<(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpULT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator<=(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpULE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpUGT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>=(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpUGE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator!=(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator==(RValue<UShort> lhs, RValue<UShort> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
+ }
+
+ Byte4::Byte4(RValue<Byte8> cast)
+ {
+ storeValue(Nucleus::createBitCast(cast.value, getType()));
+ }
+
+ Byte4::Byte4(const Reference<Byte4> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Byte8::Byte8(uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4, uint8_t x5, uint8_t x6, uint8_t x7)
+ {
+ int64_t constantVector[8] = {x0, x1, x2, x3, x4, x5, x6, x7};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ Byte8::Byte8(RValue<Byte8> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ Byte8::Byte8(const Byte8 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Byte8::Byte8(const Reference<Byte8> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ RValue<Byte8> Byte8::operator=(RValue<Byte8> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Byte8> Byte8::operator=(const Byte8 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Byte8>(value);
+ }
+
+ RValue<Byte8> Byte8::operator=(const Reference<Byte8> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Byte8>(value);
+ }
+
+ RValue<Byte8> operator+(RValue<Byte8> lhs, RValue<Byte8> rhs)
+ {
+ return RValue<Byte8>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<Byte8> operator-(RValue<Byte8> lhs, RValue<Byte8> rhs)
+ {
+ return RValue<Byte8>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+// RValue<Byte8> operator*(RValue<Byte8> lhs, RValue<Byte8> rhs)
+// {
+// return RValue<Byte8>(Nucleus::createMul(lhs.value, rhs.value));
+// }
+
+// RValue<Byte8> operator/(RValue<Byte8> lhs, RValue<Byte8> rhs)
+// {
+// return RValue<Byte8>(Nucleus::createUDiv(lhs.value, rhs.value));
+// }
+
+// RValue<Byte8> operator%(RValue<Byte8> lhs, RValue<Byte8> rhs)
+// {
+// return RValue<Byte8>(Nucleus::createURem(lhs.value, rhs.value));
+// }
+
+ RValue<Byte8> operator&(RValue<Byte8> lhs, RValue<Byte8> rhs)
+ {
+ return RValue<Byte8>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<Byte8> operator|(RValue<Byte8> lhs, RValue<Byte8> rhs)
+ {
+ return RValue<Byte8>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<Byte8> operator^(RValue<Byte8> lhs, RValue<Byte8> rhs)
+ {
+ return RValue<Byte8>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+// RValue<Byte8> operator<<(RValue<Byte8> lhs, unsigned char rhs)
+// {
+// return RValue<Byte8>(Nucleus::createShl(lhs.value, rhs.value));
+// }
+
+// RValue<Byte8> operator>>(RValue<Byte8> lhs, unsigned char rhs)
+// {
+// return RValue<Byte8>(Nucleus::createLShr(lhs.value, rhs.value));
+// }
+
+ RValue<Byte8> operator+=(Byte8 &lhs, RValue<Byte8> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<Byte8> operator-=(Byte8 &lhs, RValue<Byte8> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+// RValue<Byte8> operator*=(Byte8 &lhs, RValue<Byte8> rhs)
+// {
+// return lhs = lhs * rhs;
+// }
+
+// RValue<Byte8> operator/=(Byte8 &lhs, RValue<Byte8> rhs)
+// {
+// return lhs = lhs / rhs;
+// }
+
+// RValue<Byte8> operator%=(Byte8 &lhs, RValue<Byte8> rhs)
+// {
+// return lhs = lhs % rhs;
+// }
+
+ RValue<Byte8> operator&=(Byte8 &lhs, RValue<Byte8> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<Byte8> operator|=(Byte8 &lhs, RValue<Byte8> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<Byte8> operator^=(Byte8 &lhs, RValue<Byte8> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+// RValue<Byte8> operator<<=(Byte8 &lhs, RValue<Byte8> rhs)
+// {
+// return lhs = lhs << rhs;
+// }
+
+// RValue<Byte8> operator>>=(Byte8 &lhs, RValue<Byte8> rhs)
+// {
+// return lhs = lhs >> rhs;
+// }
+
+// RValue<Byte8> operator+(RValue<Byte8> val)
+// {
+// return val;
+// }
+
+// RValue<Byte8> operator-(RValue<Byte8> val)
+// {
+// return RValue<Byte8>(Nucleus::createNeg(val.value));
+// }
+
+ RValue<Byte8> operator~(RValue<Byte8> val)
+ {
+ return RValue<Byte8>(Nucleus::createNot(val.value));
+ }
+
+ RValue<Short4> Unpack(RValue<Byte4> x)
+ {
+ int shuffle[16] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7}; // Real type is v16i8
+ return As<Short4>(Nucleus::createShuffleVector(x.value, x.value, shuffle));
+ }
+
+ RValue<Short4> Unpack(RValue<Byte4> x, RValue<Byte4> y)
+ {
+ return UnpackLow(As<Byte8>(x), As<Byte8>(y));
+ }
+
+ RValue<Short4> UnpackLow(RValue<Byte8> x, RValue<Byte8> y)
+ {
+ int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}; // Real type is v16i8
+ return As<Short4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
+ }
+
+ RValue<Short4> UnpackHigh(RValue<Byte8> x, RValue<Byte8> y)
+ {
+ int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}; // Real type is v16i8
+ auto lowHigh = RValue<Byte16>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
+ return As<Short4>(Swizzle(As<Int4>(lowHigh), 0xEE));
+ }
+
+ SByte8::SByte8(uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4, uint8_t x5, uint8_t x6, uint8_t x7)
+ {
+ int64_t constantVector[8] = {x0, x1, x2, x3, x4, x5, x6, x7};
+ Value *vector = Nucleus::createConstantVector(constantVector, getType());
+
+ storeValue(Nucleus::createBitCast(vector, getType()));
+ }
+
+ SByte8::SByte8(RValue<SByte8> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ SByte8::SByte8(const SByte8 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ SByte8::SByte8(const Reference<SByte8> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ RValue<SByte8> SByte8::operator=(RValue<SByte8> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<SByte8> SByte8::operator=(const SByte8 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<SByte8>(value);
+ }
+
+ RValue<SByte8> SByte8::operator=(const Reference<SByte8> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<SByte8>(value);
+ }
+
+ RValue<SByte8> operator+(RValue<SByte8> lhs, RValue<SByte8> rhs)
+ {
+ return RValue<SByte8>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<SByte8> operator-(RValue<SByte8> lhs, RValue<SByte8> rhs)
+ {
+ return RValue<SByte8>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+// RValue<SByte8> operator*(RValue<SByte8> lhs, RValue<SByte8> rhs)
+// {
+// return RValue<SByte8>(Nucleus::createMul(lhs.value, rhs.value));
+// }
+
+// RValue<SByte8> operator/(RValue<SByte8> lhs, RValue<SByte8> rhs)
+// {
+// return RValue<SByte8>(Nucleus::createSDiv(lhs.value, rhs.value));
+// }
+
+// RValue<SByte8> operator%(RValue<SByte8> lhs, RValue<SByte8> rhs)
+// {
+// return RValue<SByte8>(Nucleus::createSRem(lhs.value, rhs.value));
+// }
+
+ RValue<SByte8> operator&(RValue<SByte8> lhs, RValue<SByte8> rhs)
+ {
+ return RValue<SByte8>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<SByte8> operator|(RValue<SByte8> lhs, RValue<SByte8> rhs)
+ {
+ return RValue<SByte8>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<SByte8> operator^(RValue<SByte8> lhs, RValue<SByte8> rhs)
+ {
+ return RValue<SByte8>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+// RValue<SByte8> operator<<(RValue<SByte8> lhs, unsigned char rhs)
+// {
+// return RValue<SByte8>(Nucleus::createShl(lhs.value, rhs.value));
+// }
+
+// RValue<SByte8> operator>>(RValue<SByte8> lhs, unsigned char rhs)
+// {
+// return RValue<SByte8>(Nucleus::createAShr(lhs.value, rhs.value));
+// }
+
+ RValue<SByte8> operator+=(SByte8 &lhs, RValue<SByte8> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<SByte8> operator-=(SByte8 &lhs, RValue<SByte8> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+// RValue<SByte8> operator*=(SByte8 &lhs, RValue<SByte8> rhs)
+// {
+// return lhs = lhs * rhs;
+// }
+
+// RValue<SByte8> operator/=(SByte8 &lhs, RValue<SByte8> rhs)
+// {
+// return lhs = lhs / rhs;
+// }
+
+// RValue<SByte8> operator%=(SByte8 &lhs, RValue<SByte8> rhs)
+// {
+// return lhs = lhs % rhs;
+// }
+
+ RValue<SByte8> operator&=(SByte8 &lhs, RValue<SByte8> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<SByte8> operator|=(SByte8 &lhs, RValue<SByte8> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<SByte8> operator^=(SByte8 &lhs, RValue<SByte8> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+// RValue<SByte8> operator<<=(SByte8 &lhs, RValue<SByte8> rhs)
+// {
+// return lhs = lhs << rhs;
+// }
+
+// RValue<SByte8> operator>>=(SByte8 &lhs, RValue<SByte8> rhs)
+// {
+// return lhs = lhs >> rhs;
+// }
+
+// RValue<SByte8> operator+(RValue<SByte8> val)
+// {
+// return val;
+// }
+
+// RValue<SByte8> operator-(RValue<SByte8> val)
+// {
+// return RValue<SByte8>(Nucleus::createNeg(val.value));
+// }
+
+ RValue<SByte8> operator~(RValue<SByte8> val)
+ {
+ return RValue<SByte8>(Nucleus::createNot(val.value));
+ }
+
+ RValue<Short4> UnpackLow(RValue<SByte8> x, RValue<SByte8> y)
+ {
+ int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}; // Real type is v16i8
+ return As<Short4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
+ }
+
+ RValue<Short4> UnpackHigh(RValue<SByte8> x, RValue<SByte8> y)
+ {
+ int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}; // Real type is v16i8
+ auto lowHigh = RValue<Byte16>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
+ return As<Short4>(Swizzle(As<Int4>(lowHigh), 0xEE));
+ }
+
+ Byte16::Byte16(RValue<Byte16> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ Byte16::Byte16(const Byte16 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Byte16::Byte16(const Reference<Byte16> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ RValue<Byte16> Byte16::operator=(RValue<Byte16> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Byte16> Byte16::operator=(const Byte16 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Byte16>(value);
+ }
+
+ RValue<Byte16> Byte16::operator=(const Reference<Byte16> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Byte16>(value);
+ }
+
+ Short2::Short2(RValue<Short4> cast)
+ {
+ storeValue(Nucleus::createBitCast(cast.value, getType()));
+ }
+
+ UShort2::UShort2(RValue<UShort4> cast)
+ {
+ storeValue(Nucleus::createBitCast(cast.value, getType()));
+ }
+
+ Short4::Short4(RValue<Int> cast)
+ {
+ Value *vector = loadValue();
+ Value *element = Nucleus::createTrunc(cast.value, Short::getType());
+ Value *insert = Nucleus::createInsertElement(vector, element, 0);
+ Value *swizzle = Swizzle(RValue<Short4>(insert), 0x00).value;
+
+ storeValue(swizzle);
+ }
+
+// Short4::Short4(RValue<Float> cast)
+// {
+// }
+
+ Short4::Short4(short xyzw)
+ {
+ int64_t constantVector[4] = {xyzw, xyzw, xyzw, xyzw};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ Short4::Short4(short x, short y, short z, short w)
+ {
+ int64_t constantVector[4] = {x, y, z, w};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ Short4::Short4(RValue<Short4> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ Short4::Short4(const Short4 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Short4::Short4(const Reference<Short4> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Short4::Short4(RValue<UShort4> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ Short4::Short4(const UShort4 &rhs)
+ {
+ storeValue(rhs.loadValue());
+ }
+
+ Short4::Short4(const Reference<UShort4> &rhs)
+ {
+ storeValue(rhs.loadValue());
+ }
+
+ RValue<Short4> Short4::operator=(RValue<Short4> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Short4> Short4::operator=(const Short4 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Short4>(value);
+ }
+
+ RValue<Short4> Short4::operator=(const Reference<Short4> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Short4>(value);
+ }
+
+ RValue<Short4> Short4::operator=(RValue<UShort4> rhs)
+ {
+ storeValue(rhs.value);
+
+ return RValue<Short4>(rhs);
+ }
+
+ RValue<Short4> Short4::operator=(const UShort4 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Short4>(value);
+ }
+
+ RValue<Short4> Short4::operator=(const Reference<UShort4> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Short4>(value);
+ }
+
+ RValue<Short4> operator+(RValue<Short4> lhs, RValue<Short4> rhs)
+ {
+ return RValue<Short4>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<Short4> operator-(RValue<Short4> lhs, RValue<Short4> rhs)
+ {
+ return RValue<Short4>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+ RValue<Short4> operator*(RValue<Short4> lhs, RValue<Short4> rhs)
+ {
+ return RValue<Short4>(Nucleus::createMul(lhs.value, rhs.value));
+ }
+
+// RValue<Short4> operator/(RValue<Short4> lhs, RValue<Short4> rhs)
+// {
+// return RValue<Short4>(Nucleus::createSDiv(lhs.value, rhs.value));
+// }
+
+// RValue<Short4> operator%(RValue<Short4> lhs, RValue<Short4> rhs)
+// {
+// return RValue<Short4>(Nucleus::createSRem(lhs.value, rhs.value));
+// }
+
+ RValue<Short4> operator&(RValue<Short4> lhs, RValue<Short4> rhs)
+ {
+ return RValue<Short4>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<Short4> operator|(RValue<Short4> lhs, RValue<Short4> rhs)
+ {
+ return RValue<Short4>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<Short4> operator^(RValue<Short4> lhs, RValue<Short4> rhs)
+ {
+ return RValue<Short4>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+ RValue<Short4> operator+=(Short4 &lhs, RValue<Short4> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<Short4> operator-=(Short4 &lhs, RValue<Short4> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+ RValue<Short4> operator*=(Short4 &lhs, RValue<Short4> rhs)
+ {
+ return lhs = lhs * rhs;
+ }
+
+// RValue<Short4> operator/=(Short4 &lhs, RValue<Short4> rhs)
+// {
+// return lhs = lhs / rhs;
+// }
+
+// RValue<Short4> operator%=(Short4 &lhs, RValue<Short4> rhs)
+// {
+// return lhs = lhs % rhs;
+// }
+
+ RValue<Short4> operator&=(Short4 &lhs, RValue<Short4> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<Short4> operator|=(Short4 &lhs, RValue<Short4> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<Short4> operator^=(Short4 &lhs, RValue<Short4> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+ RValue<Short4> operator<<=(Short4 &lhs, unsigned char rhs)
+ {
+ return lhs = lhs << rhs;
+ }
+
+ RValue<Short4> operator>>=(Short4 &lhs, unsigned char rhs)
+ {
+ return lhs = lhs >> rhs;
+ }
+
+// RValue<Short4> operator+(RValue<Short4> val)
+// {
+// return val;
+// }
+
+ RValue<Short4> operator-(RValue<Short4> val)
+ {
+ return RValue<Short4>(Nucleus::createNeg(val.value));
+ }
+
+ RValue<Short4> operator~(RValue<Short4> val)
+ {
+ return RValue<Short4>(Nucleus::createNot(val.value));
+ }
+
+ RValue<Short4> RoundShort4(RValue<Float4> cast)
+ {
+ RValue<Int4> int4 = RoundInt(cast);
+ return As<Short4>(PackSigned(int4, int4));
+ }
+
+ RValue<Int2> UnpackLow(RValue<Short4> x, RValue<Short4> y)
+ {
+ int shuffle[8] = {0, 8, 1, 9, 2, 10, 3, 11}; // Real type is v8i16
+ return As<Int2>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
+ }
+
+ RValue<Int2> UnpackHigh(RValue<Short4> x, RValue<Short4> y)
+ {
+ int shuffle[8] = {0, 8, 1, 9, 2, 10, 3, 11}; // Real type is v8i16
+ auto lowHigh = RValue<Short8>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
+ return As<Int2>(Swizzle(As<Int4>(lowHigh), 0xEE));
+ }
+
+ RValue<Short4> Swizzle(RValue<Short4> x, unsigned char select)
+ {
+ // Real type is v8i16
+ int shuffle[8] =
+ {
+ (select >> 0) & 0x03,
+ (select >> 2) & 0x03,
+ (select >> 4) & 0x03,
+ (select >> 6) & 0x03,
+ (select >> 0) & 0x03,
+ (select >> 2) & 0x03,
+ (select >> 4) & 0x03,
+ (select >> 6) & 0x03,
+ };
+
+ return As<Short4>(Nucleus::createShuffleVector(x.value, x.value, shuffle));
+ }
+
+ RValue<Short4> Insert(RValue<Short4> val, RValue<Short> element, int i)
+ {
+ return RValue<Short4>(Nucleus::createInsertElement(val.value, element.value, i));
+ }
+
+ RValue<Short> Extract(RValue<Short4> val, int i)
+ {
+ return RValue<Short>(Nucleus::createExtractElement(val.value, Short::getType(), i));
+ }
+
+ UShort4::UShort4(RValue<Int4> cast)
+ {
+ *this = Short4(cast);
+ }
+
+ UShort4::UShort4(unsigned short xyzw)
+ {
+ int64_t constantVector[4] = {xyzw, xyzw, xyzw, xyzw};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ UShort4::UShort4(unsigned short x, unsigned short y, unsigned short z, unsigned short w)
+ {
+ int64_t constantVector[4] = {x, y, z, w};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ UShort4::UShort4(RValue<UShort4> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ UShort4::UShort4(const UShort4 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UShort4::UShort4(const Reference<UShort4> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UShort4::UShort4(RValue<Short4> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ UShort4::UShort4(const Short4 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UShort4::UShort4(const Reference<Short4> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ RValue<UShort4> UShort4::operator=(RValue<UShort4> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<UShort4> UShort4::operator=(const UShort4 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UShort4>(value);
+ }
+
+ RValue<UShort4> UShort4::operator=(const Reference<UShort4> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UShort4>(value);
+ }
+
+ RValue<UShort4> UShort4::operator=(RValue<Short4> rhs)
+ {
+ storeValue(rhs.value);
+
+ return RValue<UShort4>(rhs);
+ }
+
+ RValue<UShort4> UShort4::operator=(const Short4 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UShort4>(value);
+ }
+
+ RValue<UShort4> UShort4::operator=(const Reference<Short4> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UShort4>(value);
+ }
+
+ RValue<UShort4> operator+(RValue<UShort4> lhs, RValue<UShort4> rhs)
+ {
+ return RValue<UShort4>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<UShort4> operator-(RValue<UShort4> lhs, RValue<UShort4> rhs)
+ {
+ return RValue<UShort4>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+ RValue<UShort4> operator*(RValue<UShort4> lhs, RValue<UShort4> rhs)
+ {
+ return RValue<UShort4>(Nucleus::createMul(lhs.value, rhs.value));
+ }
+
+ RValue<UShort4> operator&(RValue<UShort4> lhs, RValue<UShort4> rhs)
+ {
+ return RValue<UShort4>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<UShort4> operator|(RValue<UShort4> lhs, RValue<UShort4> rhs)
+ {
+ return RValue<UShort4>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<UShort4> operator^(RValue<UShort4> lhs, RValue<UShort4> rhs)
+ {
+ return RValue<UShort4>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+ RValue<UShort4> operator<<=(UShort4 &lhs, unsigned char rhs)
+ {
+ return lhs = lhs << rhs;
+ }
+
+ RValue<UShort4> operator>>=(UShort4 &lhs, unsigned char rhs)
+ {
+ return lhs = lhs >> rhs;
+ }
+
+ RValue<UShort4> operator~(RValue<UShort4> val)
+ {
+ return RValue<UShort4>(Nucleus::createNot(val.value));
+ }
+
+ Short8::Short8(short c)
+ {
+ int64_t constantVector[8] = {c, c, c, c, c, c, c, c};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ Short8::Short8(short c0, short c1, short c2, short c3, short c4, short c5, short c6, short c7)
+ {
+ int64_t constantVector[8] = {c0, c1, c2, c3, c4, c5, c6, c7};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ Short8::Short8(RValue<Short8> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ Short8::Short8(const Reference<Short8> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Short8::Short8(RValue<Short4> lo, RValue<Short4> hi)
+ {
+ int shuffle[8] = {0, 1, 2, 3, 8, 9, 10, 11}; // Real type is v8i16
+ Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
+
+ storeValue(packed);
+ }
+
+ RValue<Short8> Short8::operator=(RValue<Short8> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Short8> Short8::operator=(const Short8 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Short8>(value);
+ }
+
+ RValue<Short8> Short8::operator=(const Reference<Short8> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Short8>(value);
+ }
+
+ RValue<Short8> operator+(RValue<Short8> lhs, RValue<Short8> rhs)
+ {
+ return RValue<Short8>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<Short8> operator&(RValue<Short8> lhs, RValue<Short8> rhs)
+ {
+ return RValue<Short8>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<Int4> Abs(RValue<Int4> x)
+ {
+ // TODO: Optimize.
+ auto negative = x >> 31;
+ return (x ^ negative) - negative;
+ }
+
+ UShort8::UShort8(unsigned short c)
+ {
+ int64_t constantVector[8] = {c, c, c, c, c, c, c, c};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ UShort8::UShort8(unsigned short c0, unsigned short c1, unsigned short c2, unsigned short c3, unsigned short c4, unsigned short c5, unsigned short c6, unsigned short c7)
+ {
+ int64_t constantVector[8] = {c0, c1, c2, c3, c4, c5, c6, c7};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ UShort8::UShort8(RValue<UShort8> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ UShort8::UShort8(const Reference<UShort8> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UShort8::UShort8(RValue<UShort4> lo, RValue<UShort4> hi)
+ {
+ int shuffle[8] = {0, 1, 2, 3, 8, 9, 10, 11}; // Real type is v8i16
+ Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
+
+ storeValue(packed);
+ }
+
+ RValue<UShort8> UShort8::operator=(RValue<UShort8> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<UShort8> UShort8::operator=(const UShort8 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UShort8>(value);
+ }
+
+ RValue<UShort8> UShort8::operator=(const Reference<UShort8> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UShort8>(value);
+ }
+
+ RValue<UShort8> operator&(RValue<UShort8> lhs, RValue<UShort8> rhs)
+ {
+ return RValue<UShort8>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<UShort8> operator+(RValue<UShort8> lhs, RValue<UShort8> rhs)
+ {
+ return RValue<UShort8>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<UShort8> operator*(RValue<UShort8> lhs, RValue<UShort8> rhs)
+ {
+ return RValue<UShort8>(Nucleus::createMul(lhs.value, rhs.value));
+ }
+
+ RValue<UShort8> operator+=(UShort8 &lhs, RValue<UShort8> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<UShort8> operator~(RValue<UShort8> val)
+ {
+ return RValue<UShort8>(Nucleus::createNot(val.value));
+ }
+
+ Int::Int(Argument<Int> argument)
+ {
+ materialize(); // FIXME(b/129757459)
+ storeValue(argument.value);
+ }
+
+ Int::Int(RValue<Byte> cast)
+ {
+ Value *integer = Nucleus::createZExt(cast.value, Int::getType());
+
+ storeValue(integer);
+ }
+
+ Int::Int(RValue<SByte> cast)
+ {
+ Value *integer = Nucleus::createSExt(cast.value, Int::getType());
+
+ storeValue(integer);
+ }
+
+ Int::Int(RValue<Short> cast)
+ {
+ Value *integer = Nucleus::createSExt(cast.value, Int::getType());
+
+ storeValue(integer);
+ }
+
+ Int::Int(RValue<UShort> cast)
+ {
+ Value *integer = Nucleus::createZExt(cast.value, Int::getType());
+
+ storeValue(integer);
+ }
+
+ Int::Int(RValue<Int2> cast)
+ {
+ *this = Extract(cast, 0);
+ }
+
+ Int::Int(RValue<Long> cast)
+ {
+ Value *integer = Nucleus::createTrunc(cast.value, Int::getType());
+
+ storeValue(integer);
+ }
+
+ Int::Int(RValue<Float> cast)
+ {
+ Value *integer = Nucleus::createFPToSI(cast.value, Int::getType());
+
+ storeValue(integer);
+ }
+
+ Int::Int(int x)
+ {
+ storeValue(Nucleus::createConstantInt(x));
+ }
+
+ Int::Int(RValue<Int> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ Int::Int(RValue<UInt> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ Int::Int(const Int &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Int::Int(const Reference<Int> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Int::Int(const UInt &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Int::Int(const Reference<UInt> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ RValue<Int> Int::operator=(int rhs)
+ {
+ return RValue<Int>(storeValue(Nucleus::createConstantInt(rhs)));
+ }
+
+ RValue<Int> Int::operator=(RValue<Int> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Int> Int::operator=(RValue<UInt> rhs)
+ {
+ storeValue(rhs.value);
+
+ return RValue<Int>(rhs);
+ }
+
+ RValue<Int> Int::operator=(const Int &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Int>(value);
+ }
+
+ RValue<Int> Int::operator=(const Reference<Int> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Int>(value);
+ }
+
+ RValue<Int> Int::operator=(const UInt &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Int>(value);
+ }
+
+ RValue<Int> Int::operator=(const Reference<UInt> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Int>(value);
+ }
+
+ RValue<Int> operator+(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Int>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<Int> operator-(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Int>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+ RValue<Int> operator*(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Int>(Nucleus::createMul(lhs.value, rhs.value));
+ }
+
+ RValue<Int> operator/(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Int>(Nucleus::createSDiv(lhs.value, rhs.value));
+ }
+
+ RValue<Int> operator%(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Int>(Nucleus::createSRem(lhs.value, rhs.value));
+ }
+
+ RValue<Int> operator&(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Int>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<Int> operator|(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Int>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<Int> operator^(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Int>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+ RValue<Int> operator<<(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Int>(Nucleus::createShl(lhs.value, rhs.value));
+ }
+
+ RValue<Int> operator>>(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Int>(Nucleus::createAShr(lhs.value, rhs.value));
+ }
+
+ RValue<Int> operator+=(Int &lhs, RValue<Int> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<Int> operator-=(Int &lhs, RValue<Int> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+ RValue<Int> operator*=(Int &lhs, RValue<Int> rhs)
+ {
+ return lhs = lhs * rhs;
+ }
+
+ RValue<Int> operator/=(Int &lhs, RValue<Int> rhs)
+ {
+ return lhs = lhs / rhs;
+ }
+
+ RValue<Int> operator%=(Int &lhs, RValue<Int> rhs)
+ {
+ return lhs = lhs % rhs;
+ }
+
+ RValue<Int> operator&=(Int &lhs, RValue<Int> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<Int> operator|=(Int &lhs, RValue<Int> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<Int> operator^=(Int &lhs, RValue<Int> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+ RValue<Int> operator<<=(Int &lhs, RValue<Int> rhs)
+ {
+ return lhs = lhs << rhs;
+ }
+
+ RValue<Int> operator>>=(Int &lhs, RValue<Int> rhs)
+ {
+ return lhs = lhs >> rhs;
+ }
+
+ RValue<Int> operator+(RValue<Int> val)
+ {
+ return val;
+ }
+
+ RValue<Int> operator-(RValue<Int> val)
+ {
+ return RValue<Int>(Nucleus::createNeg(val.value));
+ }
+
+ RValue<Int> operator~(RValue<Int> val)
+ {
+ return RValue<Int>(Nucleus::createNot(val.value));
+ }
+
+ RValue<Bool> operator<(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpSLT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator<=(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpSLE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpSGT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>=(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpSGE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator!=(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator==(RValue<Int> lhs, RValue<Int> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
+ }
+
+ RValue<Int> Max(RValue<Int> x, RValue<Int> y)
+ {
+ return IfThenElse(x > y, x, y);
+ }
+
+ RValue<Int> Min(RValue<Int> x, RValue<Int> y)
+ {
+ return IfThenElse(x < y, x, y);
+ }
+
+ RValue<Int> Clamp(RValue<Int> x, RValue<Int> min, RValue<Int> max)
+ {
+ return Min(Max(x, min), max);
+ }
+
+ Long::Long(RValue<Int> cast)
+ {
+ Value *integer = Nucleus::createSExt(cast.value, Long::getType());
+
+ storeValue(integer);
+ }
+
+ Long::Long(RValue<UInt> cast)
+ {
+ Value *integer = Nucleus::createZExt(cast.value, Long::getType());
+
+ storeValue(integer);
+ }
+
+ Long::Long(RValue<Long> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ RValue<Long> Long::operator=(int64_t rhs)
+ {
+ return RValue<Long>(storeValue(Nucleus::createConstantLong(rhs)));
+ }
+
+ RValue<Long> Long::operator=(RValue<Long> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Long> Long::operator=(const Long &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Long>(value);
+ }
+
+ RValue<Long> Long::operator=(const Reference<Long> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Long>(value);
+ }
+
+ RValue<Long> operator+(RValue<Long> lhs, RValue<Long> rhs)
+ {
+ return RValue<Long>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<Long> operator-(RValue<Long> lhs, RValue<Long> rhs)
+ {
+ return RValue<Long>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+ RValue<Long> operator*(RValue<Long> lhs, RValue<Long> rhs)
+ {
+ return RValue<Long>(Nucleus::createMul(lhs.value, rhs.value));
+ }
+
+ RValue<Long> operator>>(RValue<Long> lhs, RValue<Long> rhs)
+ {
+ return RValue<Long>(Nucleus::createAShr(lhs.value, rhs.value));
+ }
+
+ RValue<Long> operator+=(Long &lhs, RValue<Long> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<Long> operator-=(Long &lhs, RValue<Long> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+ RValue<Long> AddAtomic(RValue<Pointer<Long> > x, RValue<Long> y)
+ {
+ return RValue<Long>(Nucleus::createAtomicAdd(x.value, y.value));
+ }
+
+ UInt::UInt(Argument<UInt> argument)
+ {
+ materialize(); // FIXME(b/129757459)
+ storeValue(argument.value);
+ }
+
+ UInt::UInt(RValue<UShort> cast)
+ {
+ Value *integer = Nucleus::createZExt(cast.value, UInt::getType());
+
+ storeValue(integer);
+ }
+
+ UInt::UInt(RValue<Long> cast)
+ {
+ Value *integer = Nucleus::createTrunc(cast.value, UInt::getType());
+
+ storeValue(integer);
+ }
+
+ UInt::UInt(int x)
+ {
+ storeValue(Nucleus::createConstantInt(x));
+ }
+
+ UInt::UInt(unsigned int x)
+ {
+ storeValue(Nucleus::createConstantInt(x));
+ }
+
+ UInt::UInt(RValue<UInt> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ UInt::UInt(RValue<Int> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ UInt::UInt(const UInt &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UInt::UInt(const Reference<UInt> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UInt::UInt(const Int &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UInt::UInt(const Reference<Int> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ RValue<UInt> UInt::operator=(unsigned int rhs)
+ {
+ return RValue<UInt>(storeValue(Nucleus::createConstantInt(rhs)));
+ }
+
+ RValue<UInt> UInt::operator=(RValue<UInt> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<UInt> UInt::operator=(RValue<Int> rhs)
+ {
+ storeValue(rhs.value);
+
+ return RValue<UInt>(rhs);
+ }
+
+ RValue<UInt> UInt::operator=(const UInt &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UInt>(value);
+ }
+
+ RValue<UInt> UInt::operator=(const Reference<UInt> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UInt>(value);
+ }
+
+ RValue<UInt> UInt::operator=(const Int &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UInt>(value);
+ }
+
+ RValue<UInt> UInt::operator=(const Reference<Int> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UInt>(value);
+ }
+
+ RValue<UInt> operator+(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<UInt>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<UInt> operator-(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<UInt>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+ RValue<UInt> operator*(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<UInt>(Nucleus::createMul(lhs.value, rhs.value));
+ }
+
+ RValue<UInt> operator/(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<UInt>(Nucleus::createUDiv(lhs.value, rhs.value));
+ }
+
+ RValue<UInt> operator%(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<UInt>(Nucleus::createURem(lhs.value, rhs.value));
+ }
+
+ RValue<UInt> operator&(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<UInt>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<UInt> operator|(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<UInt>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<UInt> operator^(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<UInt>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+ RValue<UInt> operator<<(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<UInt>(Nucleus::createShl(lhs.value, rhs.value));
+ }
+
+ RValue<UInt> operator>>(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<UInt>(Nucleus::createLShr(lhs.value, rhs.value));
+ }
+
+ RValue<UInt> operator+=(UInt &lhs, RValue<UInt> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<UInt> operator-=(UInt &lhs, RValue<UInt> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+ RValue<UInt> operator*=(UInt &lhs, RValue<UInt> rhs)
+ {
+ return lhs = lhs * rhs;
+ }
+
+ RValue<UInt> operator/=(UInt &lhs, RValue<UInt> rhs)
+ {
+ return lhs = lhs / rhs;
+ }
+
+ RValue<UInt> operator%=(UInt &lhs, RValue<UInt> rhs)
+ {
+ return lhs = lhs % rhs;
+ }
+
+ RValue<UInt> operator&=(UInt &lhs, RValue<UInt> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<UInt> operator|=(UInt &lhs, RValue<UInt> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<UInt> operator^=(UInt &lhs, RValue<UInt> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+ RValue<UInt> operator<<=(UInt &lhs, RValue<UInt> rhs)
+ {
+ return lhs = lhs << rhs;
+ }
+
+ RValue<UInt> operator>>=(UInt &lhs, RValue<UInt> rhs)
+ {
+ return lhs = lhs >> rhs;
+ }
+
+ RValue<UInt> operator+(RValue<UInt> val)
+ {
+ return val;
+ }
+
+ RValue<UInt> operator-(RValue<UInt> val)
+ {
+ return RValue<UInt>(Nucleus::createNeg(val.value));
+ }
+
+ RValue<UInt> operator~(RValue<UInt> val)
+ {
+ return RValue<UInt>(Nucleus::createNot(val.value));
+ }
+
+ RValue<UInt> Max(RValue<UInt> x, RValue<UInt> y)
+ {
+ return IfThenElse(x > y, x, y);
+ }
+
+ RValue<UInt> Min(RValue<UInt> x, RValue<UInt> y)
+ {
+ return IfThenElse(x < y, x, y);
+ }
+
+ RValue<UInt> Clamp(RValue<UInt> x, RValue<UInt> min, RValue<UInt> max)
+ {
+ return Min(Max(x, min), max);
+ }
+
+ RValue<Bool> operator<(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpULT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator<=(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpULE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpUGT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>=(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpUGE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator!=(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator==(RValue<UInt> lhs, RValue<UInt> rhs)
+ {
+ return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
+ }
+
+ Int2::Int2(RValue<Int4> cast)
+ {
+ storeValue(Nucleus::createBitCast(cast.value, getType()));
+ }
+
+ Int2::Int2(int x, int y)
+ {
+ int64_t constantVector[2] = {x, y};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ Int2::Int2(RValue<Int2> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ Int2::Int2(const Int2 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Int2::Int2(const Reference<Int2> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Int2::Int2(RValue<Int> lo, RValue<Int> hi)
+ {
+ int shuffle[4] = {0, 4, 1, 5};
+ Value *packed = Nucleus::createShuffleVector(Int4(lo).loadValue(), Int4(hi).loadValue(), shuffle);
+
+ storeValue(Nucleus::createBitCast(packed, Int2::getType()));
+ }
+
+ RValue<Int2> Int2::operator=(RValue<Int2> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Int2> Int2::operator=(const Int2 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Int2>(value);
+ }
+
+ RValue<Int2> Int2::operator=(const Reference<Int2> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Int2>(value);
+ }
+
+ RValue<Int2> operator+(RValue<Int2> lhs, RValue<Int2> rhs)
+ {
+ return RValue<Int2>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<Int2> operator-(RValue<Int2> lhs, RValue<Int2> rhs)
+ {
+ return RValue<Int2>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+// RValue<Int2> operator*(RValue<Int2> lhs, RValue<Int2> rhs)
+// {
+// return RValue<Int2>(Nucleus::createMul(lhs.value, rhs.value));
+// }
+
+// RValue<Int2> operator/(RValue<Int2> lhs, RValue<Int2> rhs)
+// {
+// return RValue<Int2>(Nucleus::createSDiv(lhs.value, rhs.value));
+// }
+
+// RValue<Int2> operator%(RValue<Int2> lhs, RValue<Int2> rhs)
+// {
+// return RValue<Int2>(Nucleus::createSRem(lhs.value, rhs.value));
+// }
+
+ RValue<Int2> operator&(RValue<Int2> lhs, RValue<Int2> rhs)
+ {
+ return RValue<Int2>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<Int2> operator|(RValue<Int2> lhs, RValue<Int2> rhs)
+ {
+ return RValue<Int2>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<Int2> operator^(RValue<Int2> lhs, RValue<Int2> rhs)
+ {
+ return RValue<Int2>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+ RValue<Int2> operator+=(Int2 &lhs, RValue<Int2> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<Int2> operator-=(Int2 &lhs, RValue<Int2> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+// RValue<Int2> operator*=(Int2 &lhs, RValue<Int2> rhs)
+// {
+// return lhs = lhs * rhs;
+// }
+
+// RValue<Int2> operator/=(Int2 &lhs, RValue<Int2> rhs)
+// {
+// return lhs = lhs / rhs;
+// }
+
+// RValue<Int2> operator%=(Int2 &lhs, RValue<Int2> rhs)
+// {
+// return lhs = lhs % rhs;
+// }
+
+ RValue<Int2> operator&=(Int2 &lhs, RValue<Int2> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<Int2> operator|=(Int2 &lhs, RValue<Int2> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<Int2> operator^=(Int2 &lhs, RValue<Int2> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+ RValue<Int2> operator<<=(Int2 &lhs, unsigned char rhs)
+ {
+ return lhs = lhs << rhs;
+ }
+
+ RValue<Int2> operator>>=(Int2 &lhs, unsigned char rhs)
+ {
+ return lhs = lhs >> rhs;
+ }
+
+// RValue<Int2> operator+(RValue<Int2> val)
+// {
+// return val;
+// }
+
+// RValue<Int2> operator-(RValue<Int2> val)
+// {
+// return RValue<Int2>(Nucleus::createNeg(val.value));
+// }
+
+ RValue<Int2> operator~(RValue<Int2> val)
+ {
+ return RValue<Int2>(Nucleus::createNot(val.value));
+ }
+
+ RValue<Short4> UnpackLow(RValue<Int2> x, RValue<Int2> y)
+ {
+ int shuffle[4] = {0, 4, 1, 5}; // Real type is v4i32
+ return As<Short4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
+ }
+
+ RValue<Short4> UnpackHigh(RValue<Int2> x, RValue<Int2> y)
+ {
+ int shuffle[4] = {0, 4, 1, 5}; // Real type is v4i32
+ auto lowHigh = RValue<Int4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
+ return As<Short4>(Swizzle(lowHigh, 0xEE));
+ }
+
+ RValue<Int> Extract(RValue<Int2> val, int i)
+ {
+ return RValue<Int>(Nucleus::createExtractElement(val.value, Int::getType(), i));
+ }
+
+ RValue<Int2> Insert(RValue<Int2> val, RValue<Int> element, int i)
+ {
+ return RValue<Int2>(Nucleus::createInsertElement(val.value, element.value, i));
+ }
+
+ UInt2::UInt2(unsigned int x, unsigned int y)
+ {
+ int64_t constantVector[2] = {x, y};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ UInt2::UInt2(RValue<UInt2> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ UInt2::UInt2(const UInt2 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UInt2::UInt2(const Reference<UInt2> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ RValue<UInt2> UInt2::operator=(RValue<UInt2> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<UInt2> UInt2::operator=(const UInt2 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UInt2>(value);
+ }
+
+ RValue<UInt2> UInt2::operator=(const Reference<UInt2> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UInt2>(value);
+ }
+
+ RValue<UInt2> operator+(RValue<UInt2> lhs, RValue<UInt2> rhs)
+ {
+ return RValue<UInt2>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<UInt2> operator-(RValue<UInt2> lhs, RValue<UInt2> rhs)
+ {
+ return RValue<UInt2>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+// RValue<UInt2> operator*(RValue<UInt2> lhs, RValue<UInt2> rhs)
+// {
+// return RValue<UInt2>(Nucleus::createMul(lhs.value, rhs.value));
+// }
+
+// RValue<UInt2> operator/(RValue<UInt2> lhs, RValue<UInt2> rhs)
+// {
+// return RValue<UInt2>(Nucleus::createUDiv(lhs.value, rhs.value));
+// }
+
+// RValue<UInt2> operator%(RValue<UInt2> lhs, RValue<UInt2> rhs)
+// {
+// return RValue<UInt2>(Nucleus::createURem(lhs.value, rhs.value));
+// }
+
+ RValue<UInt2> operator&(RValue<UInt2> lhs, RValue<UInt2> rhs)
+ {
+ return RValue<UInt2>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<UInt2> operator|(RValue<UInt2> lhs, RValue<UInt2> rhs)
+ {
+ return RValue<UInt2>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<UInt2> operator^(RValue<UInt2> lhs, RValue<UInt2> rhs)
+ {
+ return RValue<UInt2>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+ RValue<UInt2> operator+=(UInt2 &lhs, RValue<UInt2> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<UInt2> operator-=(UInt2 &lhs, RValue<UInt2> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+// RValue<UInt2> operator*=(UInt2 &lhs, RValue<UInt2> rhs)
+// {
+// return lhs = lhs * rhs;
+// }
+
+// RValue<UInt2> operator/=(UInt2 &lhs, RValue<UInt2> rhs)
+// {
+// return lhs = lhs / rhs;
+// }
+
+// RValue<UInt2> operator%=(UInt2 &lhs, RValue<UInt2> rhs)
+// {
+// return lhs = lhs % rhs;
+// }
+
+ RValue<UInt2> operator&=(UInt2 &lhs, RValue<UInt2> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<UInt2> operator|=(UInt2 &lhs, RValue<UInt2> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<UInt2> operator^=(UInt2 &lhs, RValue<UInt2> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+ RValue<UInt2> operator<<=(UInt2 &lhs, unsigned char rhs)
+ {
+ return lhs = lhs << rhs;
+ }
+
+ RValue<UInt2> operator>>=(UInt2 &lhs, unsigned char rhs)
+ {
+ return lhs = lhs >> rhs;
+ }
+
+// RValue<UInt2> operator+(RValue<UInt2> val)
+// {
+// return val;
+// }
+
+// RValue<UInt2> operator-(RValue<UInt2> val)
+// {
+// return RValue<UInt2>(Nucleus::createNeg(val.value));
+// }
+
+ RValue<UInt2> operator~(RValue<UInt2> val)
+ {
+ return RValue<UInt2>(Nucleus::createNot(val.value));
+ }
+
+ Int4::Int4() : XYZW(this)
+ {
+ }
+
+ Int4::Int4(RValue<Float4> cast) : XYZW(this)
+ {
+ Value *xyzw = Nucleus::createFPToSI(cast.value, Int4::getType());
+
+ storeValue(xyzw);
+ }
+
+ Int4::Int4(int xyzw) : XYZW(this)
+ {
+ constant(xyzw, xyzw, xyzw, xyzw);
+ }
+
+ Int4::Int4(int x, int yzw) : XYZW(this)
+ {
+ constant(x, yzw, yzw, yzw);
+ }
+
+ Int4::Int4(int x, int y, int zw) : XYZW(this)
+ {
+ constant(x, y, zw, zw);
+ }
+
+ Int4::Int4(int x, int y, int z, int w) : XYZW(this)
+ {
+ constant(x, y, z, w);
+ }
+
+ void Int4::constant(int x, int y, int z, int w)
+ {
+ int64_t constantVector[4] = {x, y, z, w};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ Int4::Int4(RValue<Int4> rhs) : XYZW(this)
+ {
+ storeValue(rhs.value);
+ }
+
+ Int4::Int4(const Int4 &rhs) : XYZW(this)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Int4::Int4(const Reference<Int4> &rhs) : XYZW(this)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Int4::Int4(RValue<UInt4> rhs) : XYZW(this)
+ {
+ storeValue(rhs.value);
+ }
+
+ Int4::Int4(const UInt4 &rhs) : XYZW(this)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Int4::Int4(const Reference<UInt4> &rhs) : XYZW(this)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Int4::Int4(RValue<Int2> lo, RValue<Int2> hi) : XYZW(this)
+ {
+ int shuffle[4] = {0, 1, 4, 5}; // Real type is v4i32
+ Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
+
+ storeValue(packed);
+ }
+
+ Int4::Int4(const Int &rhs) : XYZW(this)
+ {
+ *this = RValue<Int>(rhs.loadValue());
+ }
+
+ Int4::Int4(const Reference<Int> &rhs) : XYZW(this)
+ {
+ *this = RValue<Int>(rhs.loadValue());
+ }
+
+ RValue<Int4> Int4::operator=(RValue<Int4> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Int4> Int4::operator=(const Int4 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Int4>(value);
+ }
+
+ RValue<Int4> Int4::operator=(const Reference<Int4> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Int4>(value);
+ }
+
+ RValue<Int4> operator+(RValue<Int4> lhs, RValue<Int4> rhs)
+ {
+ return RValue<Int4>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<Int4> operator-(RValue<Int4> lhs, RValue<Int4> rhs)
+ {
+ return RValue<Int4>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+ RValue<Int4> operator*(RValue<Int4> lhs, RValue<Int4> rhs)
+ {
+ return RValue<Int4>(Nucleus::createMul(lhs.value, rhs.value));
+ }
+
+ RValue<Int4> operator/(RValue<Int4> lhs, RValue<Int4> rhs)
+ {
+ return RValue<Int4>(Nucleus::createSDiv(lhs.value, rhs.value));
+ }
+
+ RValue<Int4> operator%(RValue<Int4> lhs, RValue<Int4> rhs)
+ {
+ return RValue<Int4>(Nucleus::createSRem(lhs.value, rhs.value));
+ }
+
+ RValue<Int4> operator&(RValue<Int4> lhs, RValue<Int4> rhs)
+ {
+ return RValue<Int4>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<Int4> operator|(RValue<Int4> lhs, RValue<Int4> rhs)
+ {
+ return RValue<Int4>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<Int4> operator^(RValue<Int4> lhs, RValue<Int4> rhs)
+ {
+ return RValue<Int4>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+ RValue<Int4> operator<<(RValue<Int4> lhs, RValue<Int4> rhs)
+ {
+ return RValue<Int4>(Nucleus::createShl(lhs.value, rhs.value));
+ }
+
+ RValue<Int4> operator>>(RValue<Int4> lhs, RValue<Int4> rhs)
+ {
+ return RValue<Int4>(Nucleus::createAShr(lhs.value, rhs.value));
+ }
+
+ RValue<Int4> operator+=(Int4 &lhs, RValue<Int4> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<Int4> operator-=(Int4 &lhs, RValue<Int4> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+ RValue<Int4> operator*=(Int4 &lhs, RValue<Int4> rhs)
+ {
+ return lhs = lhs * rhs;
+ }
+
+// RValue<Int4> operator/=(Int4 &lhs, RValue<Int4> rhs)
+// {
+// return lhs = lhs / rhs;
+// }
+
+// RValue<Int4> operator%=(Int4 &lhs, RValue<Int4> rhs)
+// {
+// return lhs = lhs % rhs;
+// }
+
+ RValue<Int4> operator&=(Int4 &lhs, RValue<Int4> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<Int4> operator|=(Int4 &lhs, RValue<Int4> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<Int4> operator^=(Int4 &lhs, RValue<Int4> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+ RValue<Int4> operator<<=(Int4 &lhs, unsigned char rhs)
+ {
+ return lhs = lhs << rhs;
+ }
+
+ RValue<Int4> operator>>=(Int4 &lhs, unsigned char rhs)
+ {
+ return lhs = lhs >> rhs;
+ }
+
+ RValue<Int4> operator+(RValue<Int4> val)
+ {
+ return val;
+ }
+
+ RValue<Int4> operator-(RValue<Int4> val)
+ {
+ return RValue<Int4>(Nucleus::createNeg(val.value));
+ }
+
+ RValue<Int4> operator~(RValue<Int4> val)
+ {
+ return RValue<Int4>(Nucleus::createNot(val.value));
+ }
+
+ RValue<Int> Extract(RValue<Int4> x, int i)
+ {
+ return RValue<Int>(Nucleus::createExtractElement(x.value, Int::getType(), i));
+ }
+
+ RValue<Int4> Insert(RValue<Int4> x, RValue<Int> element, int i)
+ {
+ return RValue<Int4>(Nucleus::createInsertElement(x.value, element.value, i));
+ }
+
+ RValue<Int4> Swizzle(RValue<Int4> x, unsigned char select)
+ {
+ return RValue<Int4>(createSwizzle4(x.value, select));
+ }
+
+ UInt4::UInt4() : XYZW(this)
+ {
+ }
+
+ UInt4::UInt4(int xyzw) : XYZW(this)
+ {
+ constant(xyzw, xyzw, xyzw, xyzw);
+ }
+
+ UInt4::UInt4(int x, int yzw) : XYZW(this)
+ {
+ constant(x, yzw, yzw, yzw);
+ }
+
+ UInt4::UInt4(int x, int y, int zw) : XYZW(this)
+ {
+ constant(x, y, zw, zw);
+ }
+
+ UInt4::UInt4(int x, int y, int z, int w) : XYZW(this)
+ {
+ constant(x, y, z, w);
+ }
+
+ void UInt4::constant(int x, int y, int z, int w)
+ {
+ int64_t constantVector[4] = {x, y, z, w};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ UInt4::UInt4(RValue<UInt4> rhs) : XYZW(this)
+ {
+ storeValue(rhs.value);
+ }
+
+ UInt4::UInt4(const UInt4 &rhs) : XYZW(this)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UInt4::UInt4(const Reference<UInt4> &rhs) : XYZW(this)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UInt4::UInt4(RValue<Int4> rhs) : XYZW(this)
+ {
+ storeValue(rhs.value);
+ }
+
+ UInt4::UInt4(const Int4 &rhs) : XYZW(this)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UInt4::UInt4(const Reference<Int4> &rhs) : XYZW(this)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ UInt4::UInt4(RValue<UInt2> lo, RValue<UInt2> hi) : XYZW(this)
+ {
+ int shuffle[4] = {0, 1, 4, 5}; // Real type is v4i32
+ Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
+
+ storeValue(packed);
+ }
+
+ RValue<UInt4> UInt4::operator=(RValue<UInt4> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<UInt4> UInt4::operator=(const UInt4 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UInt4>(value);
+ }
+
+ RValue<UInt4> UInt4::operator=(const Reference<UInt4> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<UInt4>(value);
+ }
+
+ RValue<UInt4> operator+(RValue<UInt4> lhs, RValue<UInt4> rhs)
+ {
+ return RValue<UInt4>(Nucleus::createAdd(lhs.value, rhs.value));
+ }
+
+ RValue<UInt4> operator-(RValue<UInt4> lhs, RValue<UInt4> rhs)
+ {
+ return RValue<UInt4>(Nucleus::createSub(lhs.value, rhs.value));
+ }
+
+ RValue<UInt4> operator*(RValue<UInt4> lhs, RValue<UInt4> rhs)
+ {
+ return RValue<UInt4>(Nucleus::createMul(lhs.value, rhs.value));
+ }
+
+ RValue<UInt4> operator/(RValue<UInt4> lhs, RValue<UInt4> rhs)
+ {
+ return RValue<UInt4>(Nucleus::createUDiv(lhs.value, rhs.value));
+ }
+
+ RValue<UInt4> operator%(RValue<UInt4> lhs, RValue<UInt4> rhs)
+ {
+ return RValue<UInt4>(Nucleus::createURem(lhs.value, rhs.value));
+ }
+
+ RValue<UInt4> operator&(RValue<UInt4> lhs, RValue<UInt4> rhs)
+ {
+ return RValue<UInt4>(Nucleus::createAnd(lhs.value, rhs.value));
+ }
+
+ RValue<UInt4> operator|(RValue<UInt4> lhs, RValue<UInt4> rhs)
+ {
+ return RValue<UInt4>(Nucleus::createOr(lhs.value, rhs.value));
+ }
+
+ RValue<UInt4> operator^(RValue<UInt4> lhs, RValue<UInt4> rhs)
+ {
+ return RValue<UInt4>(Nucleus::createXor(lhs.value, rhs.value));
+ }
+
+ RValue<UInt4> operator<<(RValue<UInt4> lhs, RValue<UInt4> rhs)
+ {
+ return RValue<UInt4>(Nucleus::createShl(lhs.value, rhs.value));
+ }
+
+ RValue<UInt4> operator>>(RValue<UInt4> lhs, RValue<UInt4> rhs)
+ {
+ return RValue<UInt4>(Nucleus::createLShr(lhs.value, rhs.value));
+ }
+
+ RValue<UInt4> operator+=(UInt4 &lhs, RValue<UInt4> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<UInt4> operator-=(UInt4 &lhs, RValue<UInt4> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+ RValue<UInt4> operator*=(UInt4 &lhs, RValue<UInt4> rhs)
+ {
+ return lhs = lhs * rhs;
+ }
+
+// RValue<UInt4> operator/=(UInt4 &lhs, RValue<UInt4> rhs)
+// {
+// return lhs = lhs / rhs;
+// }
+
+// RValue<UInt4> operator%=(UInt4 &lhs, RValue<UInt4> rhs)
+// {
+// return lhs = lhs % rhs;
+// }
+
+ RValue<UInt4> operator&=(UInt4 &lhs, RValue<UInt4> rhs)
+ {
+ return lhs = lhs & rhs;
+ }
+
+ RValue<UInt4> operator|=(UInt4 &lhs, RValue<UInt4> rhs)
+ {
+ return lhs = lhs | rhs;
+ }
+
+ RValue<UInt4> operator^=(UInt4 &lhs, RValue<UInt4> rhs)
+ {
+ return lhs = lhs ^ rhs;
+ }
+
+ RValue<UInt4> operator<<=(UInt4 &lhs, unsigned char rhs)
+ {
+ return lhs = lhs << rhs;
+ }
+
+ RValue<UInt4> operator>>=(UInt4 &lhs, unsigned char rhs)
+ {
+ return lhs = lhs >> rhs;
+ }
+
+ RValue<UInt4> operator+(RValue<UInt4> val)
+ {
+ return val;
+ }
+
+ RValue<UInt4> operator-(RValue<UInt4> val)
+ {
+ return RValue<UInt4>(Nucleus::createNeg(val.value));
+ }
+
+ RValue<UInt4> operator~(RValue<UInt4> val)
+ {
+ return RValue<UInt4>(Nucleus::createNot(val.value));
+ }
+
+ RValue<UInt> Extract(RValue<UInt4> x, int i)
+ {
+ return RValue<UInt>(Nucleus::createExtractElement(x.value, Int::getType(), i));
+ }
+
+ RValue<UInt4> Insert(RValue<UInt4> x, RValue<UInt> element, int i)
+ {
+ return RValue<UInt4>(Nucleus::createInsertElement(x.value, element.value, i));
+ }
+
+ Half::Half(RValue<Float> cast)
+ {
+ UInt fp32i = As<UInt>(cast);
+ UInt abs = fp32i & 0x7FFFFFFF;
+ UShort fp16i((fp32i & 0x80000000) >> 16); // sign
+
+ If(abs > 0x47FFEFFF) // Infinity
+ {
+ fp16i |= UShort(0x7FFF);
+ }
+ Else
+ {
+ If(abs < 0x38800000) // Denormal
+ {
+ Int mantissa = (abs & 0x007FFFFF) | 0x00800000;
+ Int e = 113 - (abs >> 23);
+ abs = IfThenElse(e < 24, mantissa >> e, Int(0));
+ fp16i |= UShort((abs + 0x00000FFF + ((abs >> 13) & 1)) >> 13);
+ }
+ Else
+ {
+ fp16i |= UShort((abs + 0xC8000000 + 0x00000FFF + ((abs >> 13) & 1)) >> 13);
+ }
+ }
+
+ storeValue(fp16i.loadValue());
+ }
+
+ Float::Float(RValue<Int> cast)
+ {
+ Value *integer = Nucleus::createSIToFP(cast.value, Float::getType());
+
+ storeValue(integer);
+ }
+
+ Float::Float(RValue<UInt> cast)
+ {
+ RValue<Float> result = Float(Int(cast & UInt(0x7FFFFFFF))) +
+ As<Float>((As<Int>(cast) >> 31) & As<Int>(Float(0x80000000u)));
+
+ storeValue(result.value);
+ }
+
+ Float::Float(RValue<Half> cast)
+ {
+ Int fp16i(As<UShort>(cast));
+
+ Int s = (fp16i >> 15) & 0x00000001;
+ Int e = (fp16i >> 10) & 0x0000001F;
+ Int m = fp16i & 0x000003FF;
+
+ UInt fp32i(s << 31);
+ If(e == 0)
+ {
+ If(m != 0)
+ {
+ While((m & 0x00000400) == 0)
+ {
+ m <<= 1;
+ e -= 1;
+ }
+
+ fp32i |= As<UInt>(((e + (127 - 15) + 1) << 23) | ((m & ~0x00000400) << 13));
+ }
+ }
+ Else
+ {
+ fp32i |= As<UInt>(((e + (127 - 15)) << 23) | (m << 13));
+ }
+
+ storeValue(As<Float>(fp32i).value);
+ }
+
+ Float::Float(float x)
+ {
+ storeValue(Nucleus::createConstantFloat(x));
+ }
+
+ Float::Float(RValue<Float> rhs)
+ {
+ storeValue(rhs.value);
+ }
+
+ Float::Float(const Float &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Float::Float(const Reference<Float> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Float::Float(Argument<Float> argument)
+ {
+ materialize(); // FIXME(b/129757459)
+ storeValue(argument.value);
+ }
+
+ RValue<Float> Float::operator=(RValue<Float> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Float> Float::operator=(const Float &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Float>(value);
+ }
+
+ RValue<Float> Float::operator=(const Reference<Float> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Float>(value);
+ }
+
+ RValue<Float> operator+(RValue<Float> lhs, RValue<Float> rhs)
+ {
+ return RValue<Float>(Nucleus::createFAdd(lhs.value, rhs.value));
+ }
+
+ RValue<Float> operator-(RValue<Float> lhs, RValue<Float> rhs)
+ {
+ return RValue<Float>(Nucleus::createFSub(lhs.value, rhs.value));
+ }
+
+ RValue<Float> operator*(RValue<Float> lhs, RValue<Float> rhs)
+ {
+ return RValue<Float>(Nucleus::createFMul(lhs.value, rhs.value));
+ }
+
+ RValue<Float> operator/(RValue<Float> lhs, RValue<Float> rhs)
+ {
+ return RValue<Float>(Nucleus::createFDiv(lhs.value, rhs.value));
+ }
+
+ RValue<Float> operator+=(Float &lhs, RValue<Float> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<Float> operator-=(Float &lhs, RValue<Float> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+ RValue<Float> operator*=(Float &lhs, RValue<Float> rhs)
+ {
+ return lhs = lhs * rhs;
+ }
+
+ RValue<Float> operator/=(Float &lhs, RValue<Float> rhs)
+ {
+ return lhs = lhs / rhs;
+ }
+
+ RValue<Float> operator+(RValue<Float> val)
+ {
+ return val;
+ }
+
+ RValue<Float> operator-(RValue<Float> val)
+ {
+ return RValue<Float>(Nucleus::createFNeg(val.value));
+ }
+
+ RValue<Bool> operator<(RValue<Float> lhs, RValue<Float> rhs)
+ {
+ return RValue<Bool>(Nucleus::createFCmpOLT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator<=(RValue<Float> lhs, RValue<Float> rhs)
+ {
+ return RValue<Bool>(Nucleus::createFCmpOLE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>(RValue<Float> lhs, RValue<Float> rhs)
+ {
+ return RValue<Bool>(Nucleus::createFCmpOGT(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator>=(RValue<Float> lhs, RValue<Float> rhs)
+ {
+ return RValue<Bool>(Nucleus::createFCmpOGE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator!=(RValue<Float> lhs, RValue<Float> rhs)
+ {
+ return RValue<Bool>(Nucleus::createFCmpONE(lhs.value, rhs.value));
+ }
+
+ RValue<Bool> operator==(RValue<Float> lhs, RValue<Float> rhs)
+ {
+ return RValue<Bool>(Nucleus::createFCmpOEQ(lhs.value, rhs.value));
+ }
+
+ RValue<Float> Abs(RValue<Float> x)
+ {
+ return IfThenElse(x > 0.0f, x, -x);
+ }
+
+ RValue<Float> Max(RValue<Float> x, RValue<Float> y)
+ {
+ return IfThenElse(x > y, x, y);
+ }
+
+ RValue<Float> Min(RValue<Float> x, RValue<Float> y)
+ {
+ return IfThenElse(x < y, x, y);
+ }
+
+ Float2::Float2(RValue<Float4> cast)
+ {
+ storeValue(Nucleus::createBitCast(cast.value, getType()));
+ }
+
+ Float4::Float4(RValue<Byte4> cast) : XYZW(this)
+ {
+ Value *a = Int4(cast).loadValue();
+ Value *xyzw = Nucleus::createSIToFP(a, Float4::getType());
+
+ storeValue(xyzw);
+ }
+
+ Float4::Float4(RValue<SByte4> cast) : XYZW(this)
+ {
+ Value *a = Int4(cast).loadValue();
+ Value *xyzw = Nucleus::createSIToFP(a, Float4::getType());
+
+ storeValue(xyzw);
+ }
+
+ Float4::Float4(RValue<Short4> cast) : XYZW(this)
+ {
+ Int4 c(cast);
+ storeValue(Nucleus::createSIToFP(RValue<Int4>(c).value, Float4::getType()));
+ }
+
+ Float4::Float4(RValue<UShort4> cast) : XYZW(this)
+ {
+ Int4 c(cast);
+ storeValue(Nucleus::createSIToFP(RValue<Int4>(c).value, Float4::getType()));
+ }
+
+ Float4::Float4(RValue<Int4> cast) : XYZW(this)
+ {
+ Value *xyzw = Nucleus::createSIToFP(cast.value, Float4::getType());
+
+ storeValue(xyzw);
+ }
+
+ Float4::Float4(RValue<UInt4> cast) : XYZW(this)
+ {
+ RValue<Float4> result = Float4(Int4(cast & UInt4(0x7FFFFFFF))) +
+ As<Float4>((As<Int4>(cast) >> 31) & As<Int4>(Float4(0x80000000u)));
+
+ storeValue(result.value);
+ }
+
+ Float4::Float4() : XYZW(this)
+ {
+ }
+
+ Float4::Float4(float xyzw) : XYZW(this)
+ {
+ constant(xyzw, xyzw, xyzw, xyzw);
+ }
+
+ Float4::Float4(float x, float yzw) : XYZW(this)
+ {
+ constant(x, yzw, yzw, yzw);
+ }
+
+ Float4::Float4(float x, float y, float zw) : XYZW(this)
+ {
+ constant(x, y, zw, zw);
+ }
+
+ Float4::Float4(float x, float y, float z, float w) : XYZW(this)
+ {
+ constant(x, y, z, w);
+ }
+
+ void Float4::constant(float x, float y, float z, float w)
+ {
+ double constantVector[4] = {x, y, z, w};
+ storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ }
+
+ Float4::Float4(RValue<Float4> rhs) : XYZW(this)
+ {
+ storeValue(rhs.value);
+ }
+
+ Float4::Float4(const Float4 &rhs) : XYZW(this)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Float4::Float4(const Reference<Float4> &rhs) : XYZW(this)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+ }
+
+ Float4::Float4(const Float &rhs) : XYZW(this)
+ {
+ *this = RValue<Float>(rhs.loadValue());
+ }
+
+ Float4::Float4(const Reference<Float> &rhs) : XYZW(this)
+ {
+ *this = RValue<Float>(rhs.loadValue());
+ }
+
+ RValue<Float4> Float4::operator=(float x)
+ {
+ return *this = Float4(x, x, x, x);
+ }
+
+ RValue<Float4> Float4::operator=(RValue<Float4> rhs)
+ {
+ storeValue(rhs.value);
+
+ return rhs;
+ }
+
+ RValue<Float4> Float4::operator=(const Float4 &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Float4>(value);
+ }
+
+ RValue<Float4> Float4::operator=(const Reference<Float4> &rhs)
+ {
+ Value *value = rhs.loadValue();
+ storeValue(value);
+
+ return RValue<Float4>(value);
+ }
+
+ RValue<Float4> Float4::operator=(RValue<Float> rhs)
+ {
+ return *this = Float4(rhs);
+ }
+
+ RValue<Float4> Float4::operator=(const Float &rhs)
+ {
+ return *this = Float4(rhs);
+ }
+
+ RValue<Float4> Float4::operator=(const Reference<Float> &rhs)
+ {
+ return *this = Float4(rhs);
+ }
+
+ RValue<Float4> operator+(RValue<Float4> lhs, RValue<Float4> rhs)
+ {
+ return RValue<Float4>(Nucleus::createFAdd(lhs.value, rhs.value));
+ }
+
+ RValue<Float4> operator-(RValue<Float4> lhs, RValue<Float4> rhs)
+ {
+ return RValue<Float4>(Nucleus::createFSub(lhs.value, rhs.value));
+ }
+
+ RValue<Float4> operator*(RValue<Float4> lhs, RValue<Float4> rhs)
+ {
+ return RValue<Float4>(Nucleus::createFMul(lhs.value, rhs.value));
+ }
+
+ RValue<Float4> operator/(RValue<Float4> lhs, RValue<Float4> rhs)
+ {
+ return RValue<Float4>(Nucleus::createFDiv(lhs.value, rhs.value));
+ }
+
+ RValue<Float4> operator%(RValue<Float4> lhs, RValue<Float4> rhs)
+ {
+ return RValue<Float4>(Nucleus::createFRem(lhs.value, rhs.value));
+ }
+
+ RValue<Float4> operator+=(Float4 &lhs, RValue<Float4> rhs)
+ {
+ return lhs = lhs + rhs;
+ }
+
+ RValue<Float4> operator-=(Float4 &lhs, RValue<Float4> rhs)
+ {
+ return lhs = lhs - rhs;
+ }
+
+ RValue<Float4> operator*=(Float4 &lhs, RValue<Float4> rhs)
+ {
+ return lhs = lhs * rhs;
+ }
+
+ RValue<Float4> operator/=(Float4 &lhs, RValue<Float4> rhs)
+ {
+ return lhs = lhs / rhs;
+ }
+
+ RValue<Float4> operator%=(Float4 &lhs, RValue<Float4> rhs)
+ {
+ return lhs = lhs % rhs;
+ }
+
+ RValue<Float4> operator+(RValue<Float4> val)
+ {
+ return val;
+ }
+
+ RValue<Float4> operator-(RValue<Float4> val)
+ {
+ return RValue<Float4>(Nucleus::createFNeg(val.value));
+ }
+
+ RValue<Float4> Abs(RValue<Float4> x)
+ {
+ // TODO: Optimize.
+ Value *vector = Nucleus::createBitCast(x.value, Int4::getType());
+ int64_t constantVector[4] = {0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF};
+ Value *result = Nucleus::createAnd(vector, Nucleus::createConstantVector(constantVector, Int4::getType()));
+
+ return As<Float4>(result);
+ }
+
+ RValue<Float4> Insert(RValue<Float4> x, RValue<Float> element, int i)
+ {
+ return RValue<Float4>(Nucleus::createInsertElement(x.value, element.value, i));
+ }
+
+ RValue<Float> Extract(RValue<Float4> x, int i)
+ {
+ return RValue<Float>(Nucleus::createExtractElement(x.value, Float::getType(), i));
+ }
+
+ RValue<Float4> Swizzle(RValue<Float4> x, unsigned char select)
+ {
+ return RValue<Float4>(createSwizzle4(x.value, select));
+ }
+
+ RValue<Float4> ShuffleLowHigh(RValue<Float4> x, RValue<Float4> y, unsigned char imm)
+ {
+ int shuffle[4] =
+ {
+ ((imm >> 0) & 0x03) + 0,
+ ((imm >> 2) & 0x03) + 0,
+ ((imm >> 4) & 0x03) + 4,
+ ((imm >> 6) & 0x03) + 4,
+ };
+
+ return RValue<Float4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
+ }
+
+ RValue<Float4> UnpackLow(RValue<Float4> x, RValue<Float4> y)
+ {
+ int shuffle[4] = {0, 4, 1, 5};
+ return RValue<Float4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
+ }
+
+ RValue<Float4> UnpackHigh(RValue<Float4> x, RValue<Float4> y)
+ {
+ int shuffle[4] = {2, 6, 3, 7};
+ return RValue<Float4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
+ }
+
+ RValue<Float4> Mask(Float4 &lhs, RValue<Float4> rhs, unsigned char select)
+ {
+ Value *vector = lhs.loadValue();
+ Value *result = createMask4(vector, rhs.value, select);
+ lhs.storeValue(result);
+
+ return RValue<Float4>(result);
+ }
+
+ RValue<Int4> IsInf(RValue<Float4> x)
+ {
+ return CmpEQ(As<Int4>(x) & Int4(0x7FFFFFFF), Int4(0x7F800000));
+ }
+
+ RValue<Int4> IsNan(RValue<Float4> x)
+ {
+ return ~CmpEQ(x, x);
+ }
+
+ RValue<Pointer<Byte>> operator+(RValue<Pointer<Byte>> lhs, int offset)
+ {
+ return lhs + RValue<Int>(Nucleus::createConstantInt(offset));
+ }
+
+ RValue<Pointer<Byte>> operator+(RValue<Pointer<Byte>> lhs, RValue<Int> offset)
+ {
+ return RValue<Pointer<Byte>>(Nucleus::createGEP(lhs.value, Byte::getType(), offset.value, false));
+ }
+
+ RValue<Pointer<Byte>> operator+(RValue<Pointer<Byte>> lhs, RValue<UInt> offset)
+ {
+ return RValue<Pointer<Byte>>(Nucleus::createGEP(lhs.value, Byte::getType(), offset.value, true));
+ }
+
+ RValue<Pointer<Byte>> operator+=(Pointer<Byte> &lhs, int offset)
+ {
+ return lhs = lhs + offset;
+ }
+
+ RValue<Pointer<Byte>> operator+=(Pointer<Byte> &lhs, RValue<Int> offset)
+ {
+ return lhs = lhs + offset;
+ }
+
+ RValue<Pointer<Byte>> operator+=(Pointer<Byte> &lhs, RValue<UInt> offset)
+ {
+ return lhs = lhs + offset;
+ }
+
+ RValue<Pointer<Byte>> operator-(RValue<Pointer<Byte>> lhs, int offset)
+ {
+ return lhs + -offset;
+ }
+
+ RValue<Pointer<Byte>> operator-(RValue<Pointer<Byte>> lhs, RValue<Int> offset)
+ {
+ return lhs + -offset;
+ }
+
+ RValue<Pointer<Byte>> operator-(RValue<Pointer<Byte>> lhs, RValue<UInt> offset)
+ {
+ return lhs + -offset;
+ }
+
+ RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, int offset)
+ {
+ return lhs = lhs - offset;
+ }
+
+ RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, RValue<Int> offset)
+ {
+ return lhs = lhs - offset;
+ }
+
+ RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, RValue<UInt> offset)
+ {
+ return lhs = lhs - offset;
+ }
+
+ void Return()
+ {
+ Nucleus::createRetVoid();
+ Nucleus::setInsertBlock(Nucleus::createBasicBlock());
+ Nucleus::createUnreachable();
+ }
+
+ void Return(RValue<Int> ret)
+ {
+ Nucleus::createRet(ret.value);
+ Nucleus::setInsertBlock(Nucleus::createBasicBlock());
+ Nucleus::createUnreachable();
+ }
+
+ void branch(RValue<Bool> cmp, BasicBlock *bodyBB, BasicBlock *endBB)
+ {
+ Nucleus::createCondBr(cmp.value, bodyBB, endBB);
+ Nucleus::setInsertBlock(bodyBB);
+ }
+}
diff --git a/chromium/third_party/swiftshader/src/Reactor/Reactor.hpp b/chromium/third_party/swiftshader/src/Reactor/Reactor.hpp
index 055b3a8c3a9..4e9580666b5 100644
--- a/chromium/third_party/swiftshader/src/Reactor/Reactor.hpp
+++ b/chromium/third_party/swiftshader/src/Reactor/Reactor.hpp
@@ -23,15 +23,44 @@
#include <cstdio>
#include <string>
+#include <tuple>
+#include <unordered_set>
-#undef Bool
+#undef Bool // b/127920555
#if !defined(NDEBUG) && (REACTOR_LLVM_VERSION >= 7)
#define ENABLE_RR_PRINT 1 // Enables RR_PRINT(), RR_WATCH()
#endif // !defined(NDEBUG) && (REACTOR_LLVM_VERSION >= 7)
+#ifdef ENABLE_RR_DEBUG_INFO
+ // Functions used for generating JIT debug info.
+ // See docs/ReactorDebugInfo.md for more information.
+ namespace rr
+ {
+ // Update the current source location for debug.
+ void EmitDebugLocation();
+ // Bind value to its symbolic name taken from the backtrace.
+ void EmitDebugVariable(class Value* value);
+ // Flush any pending variable bindings before the line ends.
+ void FlushDebug();
+ }
+ #define RR_DEBUG_INFO_UPDATE_LOC() rr::EmitDebugLocation()
+ #define RR_DEBUG_INFO_EMIT_VAR(value) rr::EmitDebugVariable(value)
+ #define RR_DEBUG_INFO_FLUSH() rr::FlushDebug()
+#else
+ #define RR_DEBUG_INFO_UPDATE_LOC()
+ #define RR_DEBUG_INFO_EMIT_VAR(value)
+ #define RR_DEBUG_INFO_FLUSH()
+#endif // ENABLE_RR_DEBUG_INFO
+
namespace rr
{
+ struct Capabilities
+ {
+ bool CallSupported; // Support for rr::Call()
+ };
+ extern const Capabilities Caps;
+
class Bool;
class Byte;
class SByte;
@@ -80,9 +109,37 @@ namespace rr
class Variable
{
- protected:
+ friend class Nucleus;
friend class PrintValue;
- Value *address;
+
+ Variable() = delete;
+ Variable &operator=(const Variable&) = delete;
+
+ public:
+ void materialize() const;
+
+ Value *loadValue() const;
+ Value *storeValue(Value *value) const;
+
+ Value *getBaseAddress() const;
+ Value *getElementPointer(Value *index, bool unsignedIndex) const;
+
+ protected:
+ Variable(Type *type, int arraySize);
+ Variable(const Variable&) = default;
+
+ ~Variable();
+
+ private:
+ static void materializeAll();
+ static void killUnmaterialized();
+
+ static std::unordered_set<Variable*> unmaterializedVariables;
+
+ Type *const type;
+ const int arraySize;
+ mutable Value *rvalue = nullptr;
+ mutable Value *address = nullptr;
};
template<class T>
@@ -97,10 +154,6 @@ namespace rr
{
return false;
}
-
- Value *loadValue() const;
- Value *storeValue(Value *value) const;
- Value *getAddress(Value *index, bool unsignedIndex) const;
};
template<class T>
@@ -126,17 +179,23 @@ namespace rr
};
template<class T>
- struct IntLiteral
+ struct BoolLiteral
{
struct type;
};
template<>
- struct IntLiteral<Bool>
+ struct BoolLiteral<Bool>
{
typedef bool type;
};
+ template<class T>
+ struct IntLiteral
+ {
+ struct type;
+ };
+
template<>
struct IntLiteral<Int>
{
@@ -173,7 +232,12 @@ namespace rr
public:
explicit RValue(Value *rvalue);
+#ifdef ENABLE_RR_DEBUG_INFO
+ RValue(const RValue<T> &rvalue);
+#endif // ENABLE_RR_DEBUG_INFO
+
RValue(const T &lvalue);
+ RValue(typename BoolLiteral<T>::type i);
RValue(typename IntLiteral<T>::type i);
RValue(typename FloatLiteral<T>::type f);
RValue(const Reference<T> &rhs);
@@ -213,6 +277,8 @@ namespace rr
RValue<Bool> operator!(RValue<Bool> val);
RValue<Bool> operator&&(RValue<Bool> lhs, RValue<Bool> rhs);
RValue<Bool> operator||(RValue<Bool> lhs, RValue<Bool> rhs);
+ RValue<Bool> operator!=(RValue<Bool> lhs, RValue<Bool> rhs);
+ RValue<Bool> operator==(RValue<Bool> lhs, RValue<Bool> rhs);
class Byte : public LValue<Byte>
{
@@ -890,9 +956,9 @@ namespace rr
Short8(const Reference<Short8> &rhs);
Short8(RValue<Short4> lo, RValue<Short4> hi);
- // RValue<Short8> operator=(RValue<Short8> rhs);
- // RValue<Short8> operator=(const Short8 &rhs);
- // RValue<Short8> operator=(const Reference<Short8> &rhs);
+ RValue<Short8> operator=(RValue<Short8> rhs);
+ RValue<Short8> operator=(const Short8 &rhs);
+ RValue<Short8> operator=(const Reference<Short8> &rhs);
static Type *getType();
};
@@ -1099,14 +1165,14 @@ namespace rr
RValue<Long> operator+(RValue<Long> lhs, RValue<Long> rhs);
RValue<Long> operator-(RValue<Long> lhs, RValue<Long> rhs);
-// RValue<Long> operator*(RValue<Long> lhs, RValue<Long> rhs);
+ RValue<Long> operator*(RValue<Long> lhs, RValue<Long> rhs);
// RValue<Long> operator/(RValue<Long> lhs, RValue<Long> rhs);
// RValue<Long> operator%(RValue<Long> lhs, RValue<Long> rhs);
// RValue<Long> operator&(RValue<Long> lhs, RValue<Long> rhs);
// RValue<Long> operator|(RValue<Long> lhs, RValue<Long> rhs);
// RValue<Long> operator^(RValue<Long> lhs, RValue<Long> rhs);
// RValue<Long> operator<<(RValue<Long> lhs, RValue<Long> rhs);
-// RValue<Long> operator>>(RValue<Long> lhs, RValue<Long> rhs);
+ RValue<Long> operator>>(RValue<Long> lhs, RValue<Long> rhs);
RValue<Long> operator+=(Long &lhs, RValue<Long> rhs);
RValue<Long> operator-=(Long &lhs, RValue<Long> rhs);
// RValue<Long> operator*=(Long &lhs, RValue<Long> rhs);
@@ -1872,7 +1938,6 @@ namespace rr
UInt4(int x, int yzw);
UInt4(int x, int y, int zw);
UInt4(int x, int y, int z, int w);
- UInt4(unsigned int x, unsigned int y, unsigned int z, unsigned int w);
UInt4(RValue<UInt4> rhs);
UInt4(const UInt4 &rhs);
UInt4(const Reference<UInt4> &rhs);
@@ -1938,6 +2003,8 @@ namespace rr
RValue<UInt4> Max(RValue<UInt4> x, RValue<UInt4> y);
RValue<UInt4> Min(RValue<UInt4> x, RValue<UInt4> y);
RValue<UInt4> MulHigh(RValue<UInt4> x, RValue<UInt4> y);
+ RValue<UInt> Extract(RValue<UInt4> val, int i);
+ RValue<UInt4> Insert(RValue<UInt4> val, RValue<UInt> element, int i);
// RValue<UInt4> RoundInt(RValue<Float4> cast);
class Half : public LValue<Half>
@@ -1960,6 +2027,7 @@ namespace rr
Float(RValue<Float> rhs);
Float(const Float &rhs);
Float(const Reference<Float> &rhs);
+ Float(Argument<Float> argument);
template<int T>
Float(const SwizzleMask1<Float4, T> &rhs);
@@ -2169,6 +2237,43 @@ namespace rr
RValue<Float4> Floor(RValue<Float4> x);
RValue<Float4> Ceil(RValue<Float4> x);
+ // Trigonometric functions
+ // TODO: Currentlhy unimplemented for Subzero.
+ RValue<Float4> Sin(RValue<Float4> x);
+ RValue<Float4> Cos(RValue<Float4> x);
+ RValue<Float4> Tan(RValue<Float4> x);
+ RValue<Float4> Asin(RValue<Float4> x);
+ RValue<Float4> Acos(RValue<Float4> x);
+ RValue<Float4> Atan(RValue<Float4> x);
+ RValue<Float4> Sinh(RValue<Float4> x);
+ RValue<Float4> Cosh(RValue<Float4> x);
+ RValue<Float4> Tanh(RValue<Float4> x);
+ RValue<Float4> Asinh(RValue<Float4> x);
+ RValue<Float4> Acosh(RValue<Float4> x);
+ RValue<Float4> Atanh(RValue<Float4> x);
+ RValue<Float4> Atan2(RValue<Float4> x, RValue<Float4> y);
+
+ // Exponential functions
+ // TODO: Currentlhy unimplemented for Subzero.
+ RValue<Float4> Pow(RValue<Float4> x, RValue<Float4> y);
+ RValue<Float4> Exp(RValue<Float4> x);
+ RValue<Float4> Log(RValue<Float4> x);
+ RValue<Float4> Exp2(RValue<Float4> x);
+ RValue<Float4> Log2(RValue<Float4> x);
+
+ // Bit Manipulation functions.
+ // TODO: Currentlhy unimplemented for Subzero.
+
+ // Count leading zeros.
+ // Returns 32 when: isZeroUndef && x == 0.
+ // Returns an undefined value when: !isZeroUndef && x == 0.
+ RValue<UInt4> Ctlz(RValue<UInt4> x, bool isZeroUndef);
+
+ // Count trailing zeros.
+ // Returns 32 when: isZeroUndef && x == 0.
+ // Returns an undefined value when: !isZeroUndef && x == 0.
+ RValue<UInt4> Cttz(RValue<UInt4> x, bool isZeroUndef);
+
template<class T>
class Pointer : public LValue<Pointer<T>>
{
@@ -2225,6 +2330,18 @@ namespace rr
RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, RValue<Int> offset);
RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, RValue<UInt> offset);
+ template<typename T>
+ RValue<T> Load(RValue<Pointer<T>> pointer, unsigned int alignment, bool atomic, std::memory_order memoryOrder)
+ {
+ return RValue<T>(Nucleus::createLoad(pointer.value, T::getType(), false, alignment, atomic, memoryOrder));
+ }
+
+ template<typename T>
+ void Store(RValue<T> value, RValue<Pointer<T>> pointer, unsigned int alignment, bool atomic, std::memory_order memoryOrder)
+ {
+ Nucleus::createStore(value.value, pointer.value, T::getType(), false, alignment, atomic, memoryOrder);
+ }
+
template<class T, int S = 1>
class Array : public LValue<T>
{
@@ -2253,21 +2370,6 @@ namespace rr
template<class T>
void Return(RValue<Pointer<T>> ret);
- template<unsigned int index, typename... Arguments>
- struct ArgI;
-
- template<typename Arg0, typename... Arguments>
- struct ArgI<0, Arg0, Arguments...>
- {
- typedef Arg0 Type;
- };
-
- template<unsigned int index, typename Arg0, typename... Arguments>
- struct ArgI<index, Arg0, Arguments...>
- {
- typedef typename ArgI<index - 1, Arguments...>::Type Type;
- };
-
// Generic template, leave undefined!
template<typename FunctionType>
class Function;
@@ -2282,10 +2384,10 @@ namespace rr
virtual ~Function();
template<int index>
- Argument<typename ArgI<index, Arguments...>::Type> Arg() const
+ Argument<typename std::tuple_element<index, std::tuple<Arguments...>>::type> Arg() const
{
Value *arg = Nucleus::getArgument(index);
- return Argument<typename ArgI<index, Arguments...>::Type>(arg);
+ return Argument<typename std::tuple_element<index, std::tuple<Arguments...>>::type>(arg);
}
Routine *operator()(const char *name, ...);
@@ -2300,45 +2402,78 @@ namespace rr
{
};
- template<int index, typename Return, typename... Arguments>
- Argument<typename ArgI<index, Arguments...>::Type> Arg(Function<Return(Arguments...)> &function)
- {
- return Argument<typename ArgI<index, Arguments...>::Type>(function.arg(index));
- }
-
RValue<Long> Ticks();
}
namespace rr
{
template<class T>
- LValue<T>::LValue(int arraySize)
+ LValue<T>::LValue(int arraySize) : Variable(T::getType(), arraySize)
{
- address = Nucleus::allocateStackVariable(T::getType(), arraySize);
+#ifdef ENABLE_RR_DEBUG_INFO
+ materialize();
+#endif // ENABLE_RR_DEBUG_INFO
}
- template<class T>
- Value *LValue<T>::loadValue() const
+ inline void Variable::materialize() const
{
- return Nucleus::createLoad(address, T::getType(), false, 0);
+ if(!address)
+ {
+ address = Nucleus::allocateStackVariable(type, arraySize);
+ RR_DEBUG_INFO_EMIT_VAR(address);
+
+ if(rvalue)
+ {
+ storeValue(rvalue);
+ rvalue = nullptr;
+ }
+ }
}
- template<class T>
- Value *LValue<T>::storeValue(Value *value) const
+ inline Value *Variable::loadValue() const
{
- return Nucleus::createStore(value, address, T::getType(), false, 0);
+ if(rvalue)
+ {
+ return rvalue;
+ }
+
+ if(!address)
+ {
+ // TODO: Return undef instead.
+ materialize();
+ }
+
+ return Nucleus::createLoad(address, type, false, 0);
}
- template<class T>
- Value *LValue<T>::getAddress(Value *index, bool unsignedIndex) const
+ inline Value *Variable::storeValue(Value *value) const
{
- return Nucleus::createGEP(address, T::getType(), index, unsignedIndex);
+ if(address)
+ {
+ return Nucleus::createStore(value, address, type, false, 0);
+ }
+
+ rvalue = value;
+
+ return value;
+ }
+
+ inline Value *Variable::getBaseAddress() const
+ {
+ materialize();
+
+ return address;
+ }
+
+ inline Value *Variable::getElementPointer(Value *index, bool unsignedIndex) const
+ {
+ return Nucleus::createGEP(getBaseAddress(), type, index, unsignedIndex);
}
template<class T>
RValue<Pointer<T>> LValue<T>::operator&()
{
- return RValue<Pointer<T>>(address);
+ return RValue<Pointer<T>>(getBaseAddress());
}
template<class T>
@@ -2382,41 +2517,62 @@ namespace rr
return alignment;
}
+#ifdef ENABLE_RR_DEBUG_INFO
+ template<class T>
+ RValue<T>::RValue(const RValue<T> &rvalue) : value(rvalue.value)
+ {
+ RR_DEBUG_INFO_EMIT_VAR(value);
+ }
+#endif // ENABLE_RR_DEBUG_INFO
+
template<class T>
RValue<T>::RValue(Value *rvalue)
{
assert(Nucleus::createBitCast(rvalue, T::getType()) == rvalue); // Run-time type should match T, so bitcast is no-op.
value = rvalue;
+ RR_DEBUG_INFO_EMIT_VAR(value);
}
template<class T>
RValue<T>::RValue(const T &lvalue)
{
value = lvalue.loadValue();
+ RR_DEBUG_INFO_EMIT_VAR(value);
+ }
+
+ template<class T>
+ RValue<T>::RValue(typename BoolLiteral<T>::type i)
+ {
+ value = Nucleus::createConstantBool(i);
+ RR_DEBUG_INFO_EMIT_VAR(value);
}
template<class T>
RValue<T>::RValue(typename IntLiteral<T>::type i)
{
value = Nucleus::createConstantInt(i);
+ RR_DEBUG_INFO_EMIT_VAR(value);
}
template<class T>
RValue<T>::RValue(typename FloatLiteral<T>::type f)
{
value = Nucleus::createConstantFloat(f);
+ RR_DEBUG_INFO_EMIT_VAR(value);
}
template<class T>
RValue<T>::RValue(const Reference<T> &ref)
{
value = ref.loadValue();
+ RR_DEBUG_INFO_EMIT_VAR(value);
}
template<class Vector4, int T>
Swizzle2<Vector4, T>::operator RValue<Vector4>() const
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *vector = parent->loadValue();
return Swizzle(RValue<Vector4>(vector), T);
@@ -2425,6 +2581,7 @@ namespace rr
template<class Vector4, int T>
Swizzle4<Vector4, T>::operator RValue<Vector4>() const
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *vector = parent->loadValue();
return Swizzle(RValue<Vector4>(vector), T);
@@ -2433,6 +2590,7 @@ namespace rr
template<class Vector4, int T>
SwizzleMask4<Vector4, T>::operator RValue<Vector4>() const
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *vector = parent->loadValue();
return Swizzle(RValue<Vector4>(vector), T);
@@ -2441,24 +2599,28 @@ namespace rr
template<class Vector4, int T>
RValue<Vector4> SwizzleMask4<Vector4, T>::operator=(RValue<Vector4> rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return Mask(*parent, rhs, T);
}
template<class Vector4, int T>
RValue<Vector4> SwizzleMask4<Vector4, T>::operator=(RValue<typename Scalar<Vector4>::Type> rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return Mask(*parent, Vector4(rhs), T);
}
template<class Vector4, int T>
SwizzleMask1<Vector4, T>::operator RValue<typename Scalar<Vector4>::Type>() const // FIXME: Call a non-template function
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return Extract(*parent, T & 0x3);
}
template<class Vector4, int T>
SwizzleMask1<Vector4, T>::operator RValue<Vector4>() const
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *vector = parent->loadValue();
return Swizzle(RValue<Vector4>(vector), T);
@@ -2467,24 +2629,28 @@ namespace rr
template<class Vector4, int T>
RValue<Vector4> SwizzleMask1<Vector4, T>::operator=(float x)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return *parent = Insert(*parent, Float(x), T & 0x3);
}
template<class Vector4, int T>
RValue<Vector4> SwizzleMask1<Vector4, T>::operator=(RValue<Vector4> rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return Mask(*parent, Float4(rhs), T);
}
template<class Vector4, int T>
RValue<Vector4> SwizzleMask1<Vector4, T>::operator=(RValue<typename Scalar<Vector4>::Type> rhs) // FIXME: Call a non-template function
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return *parent = Insert(*parent, rhs, T & 0x3);
}
template<class Vector4, int T>
SwizzleMask2<Vector4, T>::operator RValue<Vector4>() const
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *vector = parent->loadValue();
return Swizzle(RValue<Float4>(vector), T);
@@ -2493,6 +2659,7 @@ namespace rr
template<class Vector4, int T>
RValue<Vector4> SwizzleMask2<Vector4, T>::operator=(RValue<Vector4> rhs)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return Mask(*parent, Float4(rhs), T);
}
@@ -2523,24 +2690,28 @@ namespace rr
template<int X, int Y>
Float4::Float4(const Swizzle2<Float4, X> &x, const Swizzle2<Float4, Y> &y) : XYZW(this)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
*this = ShuffleLowHigh(*x.parent, *y.parent, (X & 0xF) | (Y & 0xF) << 4);
}
template<int X, int Y>
Float4::Float4(const SwizzleMask2<Float4, X> &x, const Swizzle2<Float4, Y> &y) : XYZW(this)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
*this = ShuffleLowHigh(*x.parent, *y.parent, (X & 0xF) | (Y & 0xF) << 4);
}
template<int X, int Y>
Float4::Float4(const Swizzle2<Float4, X> &x, const SwizzleMask2<Float4, Y> &y) : XYZW(this)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
*this = ShuffleLowHigh(*x.parent, *y.parent, (X & 0xF) | (Y & 0xF) << 4);
}
template<int X, int Y>
Float4::Float4(const SwizzleMask2<Float4, X> &x, const SwizzleMask2<Float4, Y> &y) : XYZW(this)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
*this = ShuffleLowHigh(*x.parent, *y.parent, (X & 0xF) | (Y & 0xF) << 4);
}
@@ -2559,6 +2730,7 @@ namespace rr
template<class T>
Pointer<T>::Pointer(Argument<Pointer<T>> argument) : alignment(1)
{
+ LValue<Pointer<T>>::materialize(); // FIXME(b/129757459)
LValue<Pointer<T>>::storeValue(argument.value);
}
@@ -2623,6 +2795,7 @@ namespace rr
template<class T>
Reference<T> Pointer<T>::operator[](int index)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *element = Nucleus::createGEP(LValue<Pointer<T>>::loadValue(), T::getType(), Nucleus::createConstantInt(index), false);
return Reference<T>(element, alignment);
@@ -2631,6 +2804,7 @@ namespace rr
template<class T>
Reference<T> Pointer<T>::operator[](unsigned int index)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *element = Nucleus::createGEP(LValue<Pointer<T>>::loadValue(), T::getType(), Nucleus::createConstantInt(index), true);
return Reference<T>(element, alignment);
@@ -2639,6 +2813,7 @@ namespace rr
template<class T>
Reference<T> Pointer<T>::operator[](RValue<Int> index)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *element = Nucleus::createGEP(LValue<Pointer<T>>::loadValue(), T::getType(), index.value, false);
return Reference<T>(element, alignment);
@@ -2647,6 +2822,7 @@ namespace rr
template<class T>
Reference<T> Pointer<T>::operator[](RValue<UInt> index)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *element = Nucleus::createGEP(LValue<Pointer<T>>::loadValue(), T::getType(), index.value, true);
return Reference<T>(element, alignment);
@@ -2666,7 +2842,7 @@ namespace rr
template<class T, int S>
Reference<T> Array<T, S>::operator[](int index)
{
- Value *element = LValue<T>::getAddress(Nucleus::createConstantInt(index), false);
+ Value *element = LValue<T>::getElementPointer(Nucleus::createConstantInt(index), false);
return Reference<T>(element);
}
@@ -2674,7 +2850,7 @@ namespace rr
template<class T, int S>
Reference<T> Array<T, S>::operator[](unsigned int index)
{
- Value *element = LValue<T>::getAddress(Nucleus::createConstantInt(index), true);
+ Value *element = LValue<T>::getElementPointer(Nucleus::createConstantInt(index), true);
return Reference<T>(element);
}
@@ -2682,7 +2858,7 @@ namespace rr
template<class T, int S>
Reference<T> Array<T, S>::operator[](RValue<Int> index)
{
- Value *element = LValue<T>::getAddress(index.value, false);
+ Value *element = LValue<T>::getElementPointer(index.value, false);
return Reference<T>(element);
}
@@ -2690,7 +2866,7 @@ namespace rr
template<class T, int S>
Reference<T> Array<T, S>::operator[](RValue<UInt> index)
{
- Value *element = LValue<T>::getAddress(index.value, true);
+ Value *element = LValue<T>::getElementPointer(index.value, true);
return Reference<T>(element);
}
@@ -2722,12 +2898,14 @@ namespace rr
template<class T>
RValue<T> IfThenElse(RValue<Bool> condition, RValue<T> ifTrue, RValue<T> ifFalse)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<T>(Nucleus::createSelect(condition.value, ifTrue.value, ifFalse.value));
}
template<class T>
RValue<T> IfThenElse(RValue<Bool> condition, const T &ifTrue, RValue<T> ifFalse)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *trueValue = ifTrue.loadValue();
return RValue<T>(Nucleus::createSelect(condition.value, trueValue, ifFalse.value));
@@ -2736,6 +2914,7 @@ namespace rr
template<class T>
RValue<T> IfThenElse(RValue<Bool> condition, RValue<T> ifTrue, const T &ifFalse)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *falseValue = ifFalse.loadValue();
return RValue<T>(Nucleus::createSelect(condition.value, ifTrue.value, falseValue));
@@ -2744,6 +2923,7 @@ namespace rr
template<class T>
RValue<T> IfThenElse(RValue<Bool> condition, const T &ifTrue, const T &ifFalse)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *trueValue = ifTrue.loadValue();
Value *falseValue = ifFalse.loadValue();
@@ -2753,15 +2933,19 @@ namespace rr
template<class T>
void Return(const Pointer<T> &ret)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Nucleus::createRet(Nucleus::createLoad(ret.address, Pointer<T>::getType()));
Nucleus::setInsertBlock(Nucleus::createBasicBlock());
+ Nucleus::createUnreachable();
}
template<class T>
void Return(RValue<Pointer<T>> ret)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Nucleus::createRet(ret.value);
Nucleus::setInsertBlock(Nucleus::createBasicBlock());
+ Nucleus::createUnreachable();
}
template<typename Return, typename... Arguments>
@@ -2803,12 +2987,14 @@ namespace rr
template<class T, class S>
RValue<T> ReinterpretCast(RValue<S> val)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<T>(Nucleus::createBitCast(val.value, T::getType()));
}
template<class T, class S>
RValue<T> ReinterpretCast(const LValue<S> &var)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
Value *val = var.loadValue();
return RValue<T>(Nucleus::createBitCast(val, T::getType()));
@@ -2823,6 +3009,7 @@ namespace rr
template<class T>
RValue<T> As(Value *val)
{
+ RR_DEBUG_INFO_UPDATE_LOC();
return RValue<T>(Nucleus::createBitCast(val, T::getType()));
}
@@ -2844,6 +3031,101 @@ namespace rr
return ReinterpretCast<T>(val);
}
+ template <typename T>
+ inline Value* valueOf(RValue<T> v) { return v.value; }
+
+ template <typename T>
+ inline Value* valueOf(LValue<T> v) { return valueOf(RValue<T>(v.loadValue())); }
+
+ template<typename T>
+ struct CToReactor;
+
+ template<> struct CToReactor<void> { using type = Void; };
+ template<> struct CToReactor<int> { using type = Int; };
+ template<> struct CToReactor<float> { using type = Float; };
+ template<> struct CToReactor<int*> { using type = Pointer<Int>; };
+ template<> struct CToReactor<float*> { using type = Pointer<Float>; };
+
+ // Pointers to non-reactor types are treated as uint8_t*.
+ template<typename T>
+ struct CToReactor<T*> { using type = Pointer<Byte>; };
+
+ // Returns a reactor pointer to the fixed-address ptr.
+ RValue<Pointer<Byte>> ConstantPointer(void const * ptr);
+
+ // Calls the function pointer fptr with the given arguments, return type
+ // and parameter types. Returns the call's return value if the function has
+ // a non-void return type.
+ Value* Call(RValue<Pointer<Byte>> fptr, Type* retTy, std::initializer_list<Value*> args, std::initializer_list<Type*> paramTys);
+
+ template <typename F>
+ class CallHelper {};
+
+ template<typename Return, typename ... Arguments>
+ class CallHelper<Return(Arguments...)>
+ {
+ public:
+ using RReturn = typename CToReactor<Return>::type;
+
+ static inline RReturn Call(Return(fptr)(Arguments...), typename CToReactor<Arguments>::type... args)
+ {
+ return RValue<RReturn>(rr::Call(
+ ConstantPointer(reinterpret_cast<void*>(fptr)),
+ RReturn::getType(),
+ { valueOf(args) ... },
+ { CToReactor<Arguments>::type::getType() ... }));
+ }
+
+ static inline RReturn Call(Pointer<Byte> fptr, typename CToReactor<Arguments>::type... args)
+ {
+ return RValue<RReturn>(rr::Call(
+ fptr,
+ RReturn::getType(),
+ { valueOf(args) ... },
+ { CToReactor<Arguments>::type::getType() ... }));
+ }
+ };
+
+ template<typename ... Arguments>
+ class CallHelper<void(Arguments...)>
+ {
+ public:
+ static inline void Call(void(fptr)(Arguments...), typename CToReactor<Arguments>::type... args)
+ {
+ rr::Call(ConstantPointer(reinterpret_cast<void*>(fptr)),
+ Void::getType(),
+ { valueOf(args) ... },
+ { CToReactor<Arguments>::type::getType() ... });
+ }
+
+ static inline void Call(Pointer<Byte> fptr, typename CToReactor<Arguments>::type... args)
+ {
+ rr::Call(fptr,
+ Void::getType(),
+ { valueOf(args) ... },
+ { CToReactor<Arguments>::type::getType() ... });
+ }
+ };
+
+ // Calls the function pointer fptr with the given arguments args.
+ template<typename Return, typename ... Arguments>
+ inline typename CToReactor<Return>::type Call(Return(fptr)(Arguments...), typename CToReactor<Arguments>::type... args)
+ {
+ return CallHelper<Return(Arguments...)>::Call(fptr, args...);
+ }
+
+ // Calls the function pointer fptr with the signature FUNCTION_SIGNATURE and
+ // arguments.
+ template<typename FUNCTION_SIGNATURE, typename ... Arguments>
+ inline void Call(Pointer<Byte> fptr, Arguments ... args)
+ {
+ CallHelper<FUNCTION_SIGNATURE>::Call(fptr, args...);
+ }
+
+ // Breakpoint emits an instruction that will cause the application to trap.
+ // This can be used to stop an attached debugger at the given call.
+ void Breakpoint();
+
#ifdef ENABLE_RR_PRINT
// PrintValue holds the printf format and value(s) for a single argument
// to Print(). A single argument can be expanded into multiple printf
@@ -2907,6 +3189,13 @@ namespace rr
return out + "]";
}
+ static std::string addr(const void* ptr)
+ {
+ char buf[32];
+ snprintf(buf, sizeof(buf), "%p", ptr);
+ return buf;
+ }
+
public:
const std::string format;
const std::vector<Value*> values;
@@ -2924,7 +3213,6 @@ namespace rr
template <typename T>
PrintValue(const T* arr, int len) : format(fmt(Ty<T>::fmt, len)), values(val(arr, len)) {}
-
// PrintValue constructors for plain-old-data values.
PrintValue(bool v) : format(v ? "true" : "false") {}
PrintValue(int8_t v) : format(std::to_string(v)) {}
@@ -2940,6 +3228,9 @@ namespace rr
PrintValue(const char* v) : format(v) {}
PrintValue(const std::string& v) : format(v) {}
+ template <typename T>
+ PrintValue(const T* v) : format(addr(v)) {}
+
// vals is a helper to build composite value lists.
// vals returns the full, sequential list of printf argument values used
// to print all the provided variadic values.
@@ -2978,6 +3269,11 @@ namespace rr
};
// PrintValue::Ty<T> specializations for standard Reactor types.
+ template <> struct PrintValue::Ty<Bool>
+ {
+ static constexpr const char* fmt = "%d";
+ static std::vector<Value*> val(const RValue<Bool>& v) { return {v.value}; }
+ };
template <> struct PrintValue::Ty<Byte>
{
static constexpr const char* fmt = "%d";
@@ -3038,6 +3334,11 @@ namespace rr
static constexpr const char* fmt = "[%f, %f, %f, %f]";
static std::vector<Value*> val(const RValue<Float4>& v);
};
+ template <> struct PrintValue::Ty<Long>
+ {
+ static constexpr const char* fmt = "%lld";
+ static std::vector<Value*> val(const RValue<Long>& v) { return {v.value}; }
+ };
template <typename T> struct PrintValue::Ty< Pointer<T> >
{
static constexpr const char* fmt = "%p";
@@ -3098,7 +3399,11 @@ namespace rr
// See: https://renenyffenegger.ch/notes/development/languages/C-C-plus-plus/preprocessor/macros/__VA_ARGS__/count-arguments
// Note, this doesn't attempt to use the ##__VA_ARGS__ trick to handle 0
// args as this appears to still be broken on certain compilers.
- #define RR_GET_NTH_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, N, ...) N
+ // MSVC also has issues with variadic macros which requires the RR_VA_MSVC_BUG() work-around.
+ // See: https://stackoverflow.com/a/48711060
+ #define RR_VA_MSVC_BUG(MACRO, ARGS) MACRO ARGS
+ #define RR_GET_NTH_ARG_EX(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, N, ...) N
+ #define RR_GET_NTH_ARG(...) RR_VA_MSVC_BUG(RR_GET_NTH_ARG_EX, (__VA_ARGS__))
#define RR_COUNT_ARGUMENTS(...) RR_GET_NTH_ARG(__VA_ARGS__, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
static_assert(1 == RR_COUNT_ARGUMENTS(a), "RR_COUNT_ARGUMENTS broken"); // Sanity checks.
static_assert(2 == RR_COUNT_ARGUMENTS(a, b), "RR_COUNT_ARGUMENTS broken");
@@ -3114,15 +3419,17 @@ namespace rr
#define RR_WATCH_CONCAT2(a, b) RR_WATCH_CONCAT(a, b)
#define RR_WATCH_FMT(...) RR_WATCH_CONCAT2(RR_WATCH_FMT_, RR_COUNT_ARGUMENTS(__VA_ARGS__))(__VA_ARGS__)
#define RR_WATCH_FMT_1(_1) "\n " #_1 ": {0}"
- #define RR_WATCH_FMT_2(_1, _2) RR_WATCH_FMT_1(_1) "\n " #_2 ": {1}"
- #define RR_WATCH_FMT_3(_1, _2, _3) RR_WATCH_FMT_2(_1, _2) "\n " #_3 ": {2}"
- #define RR_WATCH_FMT_4(_1, _2, _3, _4) RR_WATCH_FMT_3(_1, _2, _3) "\n " #_4 ": {3}"
- #define RR_WATCH_FMT_5(_1, _2, _3, _4, _5) RR_WATCH_FMT_4(_1, _2, _3, _4) "\n " #_5 ": {4}"
- #define RR_WATCH_FMT_6(_1, _2, _3, _4, _5, _6) RR_WATCH_FMT_5(_1, _2, _3, _4, _5) "\n " #_6 ": {5}"
- #define RR_WATCH_FMT_7(_1, _2, _3, _4, _5, _6, _7) RR_WATCH_FMT_6(_1, _2, _3, _4, _5, _6) "\n " #_7 ": {6}"
- #define RR_WATCH_FMT_8(_1, _2, _3, _4, _5, _6, _7, _8) RR_WATCH_FMT_7(_1, _2, _3, _4, _5, _6, _7) "\n " #_8 ": {7}"
- #define RR_WATCH_FMT_9(_1, _2, _3, _4, _5, _6, _7, _8, _9) RR_WATCH_FMT_8(_1, _2, _3, _4, _5, _6, _7, _8) "\n " #_9 ": {8}"
- #define RR_WATCH_FMT_10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) RR_WATCH_FMT_9(_1, _2, _3, _4, _5, _6, _7, _8, _9) "\n " #_10 ": {9}"
+ #define RR_WATCH_FMT_2(_1, _2) RR_WATCH_FMT_1(_1) "\n " #_2 ": {1}"
+ #define RR_WATCH_FMT_3(_1, _2, _3) RR_WATCH_FMT_2(_1, _2) "\n " #_3 ": {2}"
+ #define RR_WATCH_FMT_4(_1, _2, _3, _4) RR_WATCH_FMT_3(_1, _2, _3) "\n " #_4 ": {3}"
+ #define RR_WATCH_FMT_5(_1, _2, _3, _4, _5) RR_WATCH_FMT_4(_1, _2, _3, _4) "\n " #_5 ": {4}"
+ #define RR_WATCH_FMT_6(_1, _2, _3, _4, _5, _6) RR_WATCH_FMT_5(_1, _2, _3, _4, _5) "\n " #_6 ": {5}"
+ #define RR_WATCH_FMT_7(_1, _2, _3, _4, _5, _6, _7) RR_WATCH_FMT_6(_1, _2, _3, _4, _5, _6) "\n " #_7 ": {6}"
+ #define RR_WATCH_FMT_8(_1, _2, _3, _4, _5, _6, _7, _8) RR_WATCH_FMT_7(_1, _2, _3, _4, _5, _6, _7) "\n " #_8 ": {7}"
+ #define RR_WATCH_FMT_9(_1, _2, _3, _4, _5, _6, _7, _8, _9) RR_WATCH_FMT_8(_1, _2, _3, _4, _5, _6, _7, _8) "\n " #_9 ": {8}"
+ #define RR_WATCH_FMT_10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) RR_WATCH_FMT_9(_1, _2, _3, _4, _5, _6, _7, _8, _9) "\n " #_10 ": {9}"
+ #define RR_WATCH_FMT_11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) RR_WATCH_FMT_10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) "\n " #_11 ": {10}"
+ #define RR_WATCH_FMT_12(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) RR_WATCH_FMT_11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) "\n " #_12 ": {11}"
// RR_WATCH() is a helper that prints the name and value of all the supplied
// arguments.
@@ -3156,6 +3463,7 @@ namespace rr
bool setup()
{
+ RR_DEBUG_INFO_FLUSH();
if(Nucleus::getInsertBlock() != endBB)
{
testBB = Nucleus::createBasicBlock();
diff --git a/chromium/third_party/swiftshader/src/Reactor/Reactor.vcxproj b/chromium/third_party/swiftshader/src/Reactor/Reactor.vcxproj
index 4609c73114a..5a4a6e321e8 100644
--- a/chromium/third_party/swiftshader/src/Reactor/Reactor.vcxproj
+++ b/chromium/third_party/swiftshader/src/Reactor/Reactor.vcxproj
@@ -31,6 +31,7 @@
<RootNamespace>Reactor</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
@@ -110,16 +111,15 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>..\;..\..\third_party\LLVM\include;..\..\third_party\LLVM\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
+ <AdditionalIncludeDirectories>..\;..\..\third_party\llvm-7.0\configs\windows\include;..\..\third_party\llvm-7.0\llvm\include;..\..\third_party\llvm-7.0\llvm\lib\Target\X86;..\..\third_party\llvm-7.0\configs\common\include;..\..\third_party\llvm-7.0\configs\common\lib\IR;..\..\third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;..\..\third_party\llvm-7.0\configs\common\lib\Target\X86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;REACTOR_LLVM_VERSION=7;_DEBUG;_LIB;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ <DisableSpecificWarnings>4624;4244;4141;4146;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<TreatWarningAsError>true</TreatWarningAsError>
<ExceptionHandling>false</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -136,9 +136,8 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\;..\..\third_party\LLVM\include;..\..\third_party\LLVM\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
+ <AdditionalIncludeDirectories>..\;..\..\third_party\llvm-7.0\configs\windows\include;..\..\third_party\llvm-7.0\llvm\include;..\..\third_party\llvm-7.0\llvm\lib\Target\X86;..\..\third_party\llvm-7.0\configs\common\include;..\..\third_party\llvm-7.0\configs\common\lib\IR;..\..\third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;..\..\third_party\llvm-7.0\configs\common\lib\Target\X86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;REACTOR_LLVM_VERSION=7;_DEBUG;_LIB;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>false</ExceptionHandling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -146,7 +145,7 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ <DisableSpecificWarnings>4624;4244;4141;4146;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<OmitFramePointers>false</OmitFramePointers>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -165,8 +164,8 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
- <AdditionalIncludeDirectories>..\;..\..\third_party\LLVM\include;..\..\third_party\LLVM\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\;..\..\third_party\llvm-7.0\configs\windows\include;..\..\third_party\llvm-7.0\llvm\include;..\..\third_party\llvm-7.0\llvm\lib\Target\X86;..\..\third_party\llvm-7.0\configs\common\include;..\..\third_party\llvm-7.0\configs\common\lib\IR;..\..\third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;..\..\third_party\llvm-7.0\configs\common\lib\Target\X86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;REACTOR_LLVM_VERSION=7;NDEBUG;_LIB;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>false</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -175,7 +174,7 @@
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>
</DebugInformationFormat>
- <DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ <DisableSpecificWarnings>4624;4244;4141;4146;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
@@ -196,8 +195,8 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>false</OmitFramePointers>
<WholeProgramOptimization>false</WholeProgramOptimization>
- <AdditionalIncludeDirectories>..\;..\..\third_party\LLVM\include;..\..\third_party\LLVM\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\;..\..\third_party\llvm-7.0\configs\windows\include;..\..\third_party\llvm-7.0\llvm\include;..\..\third_party\llvm-7.0\llvm\lib\Target\X86;..\..\third_party\llvm-7.0\configs\common\include;..\..\third_party\llvm-7.0\configs\common\lib\IR;..\..\third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;..\..\third_party\llvm-7.0\configs\common\lib\Target\X86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;REACTOR_LLVM_VERSION=7;NDEBUG;_LIB;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>false</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -205,13 +204,14 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ <DisableSpecificWarnings>4624;4244;4141;4146;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<TreatWarningAsError>true</TreatWarningAsError>
<TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>
<AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<ProjectReference>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
@@ -228,8 +228,8 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
- <AdditionalIncludeDirectories>..\;..\..\third_party\LLVM\include;..\..\third_party\LLVM\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\;..\..\third_party\llvm-7.0\configs\windows\include;..\..\third_party\llvm-7.0\llvm\include;..\..\third_party\llvm-7.0\llvm\lib\Target\X86;..\..\third_party\llvm-7.0\configs\common\include;..\..\third_party\llvm-7.0\configs\common\lib\IR;..\..\third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;..\..\third_party\llvm-7.0\configs\common\lib\Target\X86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;REACTOR_LLVM_VERSION=7;NDEBUG;_LIB;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>false</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -237,7 +237,7 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ <DisableSpecificWarnings>4624;4244;4141;4146;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
@@ -261,8 +261,8 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>false</OmitFramePointers>
<WholeProgramOptimization>false</WholeProgramOptimization>
- <AdditionalIncludeDirectories>..\;..\..\third_party\LLVM\include;..\..\third_party\LLVM\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\;..\..\third_party\llvm-7.0\configs\windows\include;..\..\third_party\llvm-7.0\llvm\include;..\..\third_party\llvm-7.0\llvm\lib\Target\X86;..\..\third_party\llvm-7.0\configs\common\include;..\..\third_party\llvm-7.0\configs\common\lib\IR;..\..\third_party\llvm-7.0\configs\common\lib\Transforms\InstCombine;..\..\third_party\llvm-7.0\configs\common\lib\Target\X86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;REACTOR_LLVM_VERSION=7;NDEBUG;_LIB;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>false</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -270,13 +270,14 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ <DisableSpecificWarnings>4624;4244;4141;4146;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<TreatWarningAsError>true</TreatWarningAsError>
<TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>
<AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<ProjectReference>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
@@ -288,13 +289,17 @@
<ClCompile Include="LLVMRoutine.cpp" />
<ClCompile Include="LLVMRoutineManager.cpp" />
<ClCompile Include="LLVMReactor.cpp" />
+ <ClCompile Include="LLVMReactorDebugInfo.cpp" />
<ClCompile Include="ExecutableMemory.cpp" />
+ <ClCompile Include="Reactor.cpp" />
<ClCompile Include="Routine.cpp" />
<ClCompile Include="Thread.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="CPUID.hpp" />
<ClInclude Include="Debug.hpp" />
+ <ClInclude Include="LLVMReactor.hpp" />
+ <ClInclude Include="LLVMReactorDebugInfo.hpp" />
<ClInclude Include="LLVMRoutine.hpp" />
<ClInclude Include="LLVMRoutineManager.hpp" />
<ClInclude Include="ExecutableMemory.hpp" />
@@ -306,173 +311,8 @@
<ClInclude Include="x86.hpp" />
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\..\third_party\LLVM\include\llvm\intrinsics_gen.vcxproj">
- <Project>{e9b87b46-1eb0-4d95-9049-41b148fbadcd}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\Analysis\LLVMAnalysis.vcxproj">
- <Project>{97edf19c-6360-4770-9255-eba2f1a13e9b}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\CodeGen\LLVMCodeGen.vcxproj">
- <Project>{7be5f26f-0525-42bb-aaed-56c5b4582b99}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\CodeGen\SelectionDAG\LLVMSelectionDAG.vcxproj">
- <Project>{cdc80e5c-954b-4bcb-8c81-58645f5103a5}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\ExecutionEngine\JIT\LLVMJIT.vcxproj">
- <Project>{f03005cf-b4db-46d1-b673-e268c3b0c3f7}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\ExecutionEngine\LLVMExecutionEngine.vcxproj">
- <Project>{75362c64-1b52-4266-b079-22c8e00f53d5}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\MC\LLVMMC.vcxproj">
- <Project>{8ab70e5d-2814-4682-af9f-3062758baeab}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\Support\LLVMSupport.vcxproj">
- <Project>{c688dd59-c6cb-4b33-b56f-a7d6f3761524}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\TableGen\LLVMTableGen.vcxproj">
- <Project>{bd8ee868-0d68-4a92-b277-3c9ebdc5ec3c}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\Target\LLVMTarget.vcxproj">
- <Project>{76f7b8c2-c825-40dc-bb68-9d987275e320}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\Target\X86\InstPrinter\LLVMX86AsmPrinter.vcxproj">
- <Project>{80fe41df-5232-4fc1-8697-461026a708cf}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\Target\X86\LLVMX86CodeGen.vcxproj">
- <Project>{f513cbef-b281-4b76-9cb5-7d31cecc739a}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\Target\X86\MCTargetDesc\LLVMX86Desc.vcxproj">
- <Project>{5c3dad88-8163-499d-bb6c-6f44174f87b6}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\Target\X86\TargetInfo\LLVMX86Info.vcxproj">
- <Project>{180da636-1b92-4dd4-af86-db32bbf7bdac}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\Target\X86\Utils\LLVMX86Utils.vcxproj">
- <Project>{9deaa5e7-d432-4770-b96d-221b56d74fcc}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\Target\X86\X86CommonTableGen.vcxproj">
- <Project>{531b1d71-5ee6-4576-971e-9cc28b0b3868}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\Transforms\InstCombine\LLVMInstCombine.vcxproj">
- <Project>{d35c7204-d4e0-4ee5-8b6d-ba1b589f5d36}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\Transforms\Scalar\LLVMScalarOpts.vcxproj">
- <Project>{a3c67d8f-e19a-46ef-91ab-c7840fe2b97c}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\Transforms\Utils\LLVMTransformUtils.vcxproj">
- <Project>{5c514254-58ee-4850-8743-f5d7beaa3e66}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\lib\VMCore\LLVMCore.vcxproj">
- <Project>{00f3295c-f7a0-43d3-bd0b-1bc0515b30e1}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="..\..\third_party\LLVM\utils\TableGen\llvm-tblgen.vcxproj">
- <Project>{1f8587cb-0779-44bb-afa4-03dd8a036d75}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+ <ProjectReference Include="..\..\build\Visual Studio 15 2017 Win64\llvm.vcxproj">
+ <Project>{b9e0efb7-8e1b-303d-9222-13f7a82b7858}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/src/Reactor/Reactor.vcxproj.filters b/chromium/third_party/swiftshader/src/Reactor/Reactor.vcxproj.filters
index e07432e2794..74328d231ee 100644
--- a/chromium/third_party/swiftshader/src/Reactor/Reactor.vcxproj.filters
+++ b/chromium/third_party/swiftshader/src/Reactor/Reactor.vcxproj.filters
@@ -27,6 +27,9 @@
<ClCompile Include="LLVMReactor.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="LLVMReactorDebugInfo.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
<ClCompile Include="CPUID.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -39,6 +42,9 @@
<ClCompile Include="Thread.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="Reactor.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Nucleus.hpp">
@@ -53,6 +59,12 @@
<ClInclude Include="Routine.hpp">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="LLVMReactor.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="LLVMReactorDebugInfo.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
<ClInclude Include="LLVMRoutineManager.hpp">
<Filter>Header Files</Filter>
</ClInclude>
diff --git a/chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.cpp b/chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.cpp
index 1242d0028ac..b52b722d92b 100644
--- a/chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.cpp
+++ b/chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.cpp
@@ -16,6 +16,8 @@
#include "gtest/gtest.h"
+#include <tuple>
+
using namespace rr;
int reference(int *p, int y)
@@ -110,6 +112,65 @@ TEST(ReactorUnitTests, Uninitialized)
delete routine;
}
+TEST(ReactorUnitTests, Unreachable)
+{
+ Routine *routine = nullptr;
+
+ {
+ Function<Int(Int)> function;
+ {
+ Int a = function.Arg<0>();
+ Int z = 4;
+
+ Return(a + z);
+
+ // Code beyond this point is unreachable but should not cause any
+ // compilation issues.
+
+ z += a;
+ }
+
+ routine = function("one");
+
+ if(routine)
+ {
+ int (*callable)(int) = (int(*)(int))routine->getEntry();
+ int result = callable(16);
+ EXPECT_EQ(result, 20);
+ }
+ }
+
+ delete routine;
+}
+
+TEST(ReactorUnitTests, VariableAddress)
+{
+ Routine *routine = nullptr;
+
+ {
+ Function<Int(Int)> function;
+ {
+ Int a = function.Arg<0>();
+ Int z = 0;
+ Pointer<Int> p = &z;
+ *p = 4;
+
+ Return(a + z);
+ }
+
+ routine = function("one");
+
+ if(routine)
+ {
+ int (*callable)(int) = (int(*)(int))routine->getEntry();
+ int result = callable(16);
+ EXPECT_EQ(result, 20);
+ }
+ }
+
+ delete routine;
+}
+
TEST(ReactorUnitTests, SubVectorLoadStore)
{
Routine *routine = nullptr;
@@ -923,14 +984,29 @@ TEST(ReactorUnitTests, MulHigh)
{
Pointer<Byte> out = function.Arg<0>();
- *Pointer<Short4>(out + 8 * 0) =
- MulHigh(Short4(0x1aa, 0x2dd, 0x3ee, 0xF422),
- Short4(0x1bb, 0x2cc, 0x3ff, 0xF411));
- *Pointer<UShort4>(out + 8 * 1) =
- MulHigh(UShort4(0x1aa, 0x2dd, 0x3ee, 0xF422),
- UShort4(0x1bb, 0x2cc, 0x3ff, 0xF411));
+ *Pointer<Short4>(out + 16 * 0) =
+ MulHigh(Short4(0x01AA, 0x02DD, 0x03EE, 0xF422),
+ Short4(0x01BB, 0x02CC, 0x03FF, 0xF411));
+ *Pointer<UShort4>(out + 16 * 1) =
+ MulHigh(UShort4(0x01AA, 0x02DD, 0x03EE, 0xF422),
+ UShort4(0x01BB, 0x02CC, 0x03FF, 0xF411));
+
+ *Pointer<Int4>(out + 16 * 2) =
+ MulHigh(Int4(0x000001AA, 0x000002DD, 0xC8000000, 0xF8000000),
+ Int4(0x000001BB, 0x84000000, 0x000003EE, 0xD7000000));
+ *Pointer<UInt4>(out + 16 * 3) =
+ MulHigh(UInt4(0x000001AAu, 0x000002DDu, 0xC8000000u, 0xD8000000u),
+ UInt4(0x000001BBu, 0x84000000u, 0x000003EEu, 0xD7000000u));
+
+ *Pointer<Int4>(out + 16 * 4) =
+ MulHigh(Int4(0x7FFFFFFF, 0x7FFFFFFF, 0x80008000, 0xFFFFFFFF),
+ Int4(0x7FFFFFFF, 0x80000000, 0x80008000, 0xFFFFFFFF));
+ *Pointer<UInt4>(out + 16 * 5) =
+ MulHigh(UInt4(0x7FFFFFFFu, 0x7FFFFFFFu, 0x80008000u, 0xFFFFFFFFu),
+ UInt4(0x7FFFFFFFu, 0x80000000u, 0x80008000u, 0xFFFFFFFFu));
+
+ // (U)Short8 variants currently unimplemented.
- // (U)Short8 variants are mentioned but unimplemented
Return(0);
}
@@ -938,7 +1014,7 @@ TEST(ReactorUnitTests, MulHigh)
if(routine)
{
- unsigned int out[2][2];
+ unsigned int out[6][4];
memset(&out, 0, sizeof(out));
@@ -946,10 +1022,30 @@ TEST(ReactorUnitTests, MulHigh)
callable(&out);
EXPECT_EQ(out[0][0], 0x00080002u);
- EXPECT_EQ(out[0][1], 0x008D000fu);
+ EXPECT_EQ(out[0][1], 0x008D000Fu);
EXPECT_EQ(out[1][0], 0x00080002u);
- EXPECT_EQ(out[1][1], 0xe8C0000Fu);
+ EXPECT_EQ(out[1][1], 0xE8C0000Fu);
+
+ EXPECT_EQ(out[2][0], 0x00000000u);
+ EXPECT_EQ(out[2][1], 0xFFFFFE9Cu);
+ EXPECT_EQ(out[2][2], 0xFFFFFF23u);
+ EXPECT_EQ(out[2][3], 0x01480000u);
+
+ EXPECT_EQ(out[3][0], 0x00000000u);
+ EXPECT_EQ(out[3][1], 0x00000179u);
+ EXPECT_EQ(out[3][2], 0x00000311u);
+ EXPECT_EQ(out[3][3], 0xB5680000u);
+
+ EXPECT_EQ(out[4][0], 0x3FFFFFFFu);
+ EXPECT_EQ(out[4][1], 0xC0000000u);
+ EXPECT_EQ(out[4][2], 0x3FFF8000u);
+ EXPECT_EQ(out[4][3], 0x00000000u);
+
+ EXPECT_EQ(out[5][0], 0x3FFFFFFFu);
+ EXPECT_EQ(out[5][1], 0x3FFFFFFFu);
+ EXPECT_EQ(out[5][2], 0x40008000u);
+ EXPECT_EQ(out[5][3], 0xFFFFFFFEu);
}
}
@@ -992,10 +1088,61 @@ TEST(ReactorUnitTests, MulAdd)
delete routine;
}
+TEST(ReactorUnitTests, Call)
+{
+ if (!rr::Caps.CallSupported)
+ {
+ SUCCEED() << "rr::Call() not supported";
+ return;
+ }
+
+ Routine *routine = nullptr;
+
+ struct Class
+ {
+ static int Callback(uint8_t *p, int i, float f)
+ {
+ auto c = reinterpret_cast<Class*>(p);
+ c->i = i;
+ c->f = f;
+ return i + int(f);
+ }
+
+ int i = 0;
+ float f = 0.0f;
+ };
+
+ {
+ Function<Int(Pointer<Byte>)> function;
+ {
+ Pointer<Byte> c = function.Arg<0>();
+ auto res = Call(Class::Callback, c, 10, 20.0f);
+ Return(res);
+ }
+
+ routine = function("one");
+
+ if(routine)
+ {
+ int(*callable)(void*) = (int(*)(void*))routine->getEntry();
+
+ Class c;
+
+ int res = callable(&c);
+
+ EXPECT_EQ(res, 30);
+ EXPECT_EQ(c.i, 10);
+ EXPECT_EQ(c.f, 20.0f);
+ }
+ }
+
+ delete routine;
+}
+
// Check that a complex generated function which utilizes all 8 or 16 XMM
// registers computes the correct result.
// (Note that due to MSC's lack of support for inline assembly in x64,
-// this test does not actually check that the register contents are
+// this test does not actually check that the register contents are
// preserved, just that the generated function computes the correct value.
// It's necessary to inspect the registers in a debugger to actually verify.)
TEST(ReactorUnitTests, PreserveXMMRegisters)
@@ -1080,6 +1227,148 @@ TEST(ReactorUnitTests, PreserveXMMRegisters)
delete routine;
}
+template <typename T>
+class CToReactorCastTest : public ::testing::Test
+{
+public:
+ using CType = typename std::tuple_element<0, T>::type;
+ using ReactorType = typename std::tuple_element<1, T>::type;
+};
+
+using CToReactorCastTestTypes = ::testing::Types
+ < // Subset of types that can be used as arguments.
+ // std::pair<bool, Bool>, FIXME(capn): Not supported as argument type by Subzero.
+ // std::pair<uint8_t, Byte>, FIXME(capn): Not supported as argument type by Subzero.
+ // std::pair<int8_t, SByte>, FIXME(capn): Not supported as argument type by Subzero.
+ // std::pair<int16_t, Short>, FIXME(capn): Not supported as argument type by Subzero.
+ // std::pair<uint16_t, UShort>, FIXME(capn): Not supported as argument type by Subzero.
+ std::pair<int, Int>,
+ std::pair<unsigned int, UInt>,
+ std::pair<float, Float>
+ >;
+
+TYPED_TEST_CASE(CToReactorCastTest, CToReactorCastTestTypes);
+
+TYPED_TEST(CToReactorCastTest, Casts)
+{
+ using CType = typename TestFixture::CType;
+ using ReactorType = typename TestFixture::ReactorType;
+
+ Routine *routine = nullptr;
+
+ {
+ Function< Int(ReactorType) > function;
+ {
+ ReactorType a = function.template Arg<0>();
+ ReactorType b = CType{};
+ RValue<ReactorType> c = RValue<ReactorType>(CType{});
+ Bool same = (a == b) && (a == c);
+ Return(IfThenElse(same, Int(1), Int(0))); // TODO: Ability to use Bools as return values.
+ }
+
+ routine = function("one");
+
+ if(routine)
+ {
+ auto callable = (int(*)(CType))routine->getEntry();
+ CType in = {};
+ EXPECT_EQ(callable(in), 1);
+ }
+ }
+
+ delete routine;
+}
+
+template <typename T>
+class GEPTest : public ::testing::Test
+{
+public:
+ using CType = typename std::tuple_element<0, T>::type;
+ using ReactorType = typename std::tuple_element<1, T>::type;
+};
+
+using GEPTestTypes = ::testing::Types
+ <
+ std::pair<bool, Bool>,
+ std::pair<int8_t, Byte>,
+ std::pair<int8_t, SByte>,
+ std::pair<int8_t[4], Byte4>,
+ std::pair<int8_t[4], SByte4>,
+ std::pair<int8_t[8], Byte8>,
+ std::pair<int8_t[8], SByte8>,
+ std::pair<int8_t[16], Byte16>,
+ std::pair<int8_t[16], SByte16>,
+ std::pair<int16_t, Short>,
+ std::pair<int16_t, UShort>,
+ std::pair<int16_t[2], Short2>,
+ std::pair<int16_t[2], UShort2>,
+ std::pair<int16_t[4], Short4>,
+ std::pair<int16_t[4], UShort4>,
+ std::pair<int16_t[8], Short8>,
+ std::pair<int16_t[8], UShort8>,
+ std::pair<int, Int>,
+ std::pair<int, UInt>,
+ std::pair<int[2], Int2>,
+ std::pair<int[2], UInt2>,
+ std::pair<int[4], Int4>,
+ std::pair<int[4], UInt4>,
+ std::pair<int64_t, Long>,
+ std::pair<int16_t, Half>,
+ std::pair<float, Float>,
+ std::pair<float[2], Float2>,
+ std::pair<float[4], Float4>
+ >;
+
+TYPED_TEST_CASE(GEPTest, GEPTestTypes);
+
+TYPED_TEST(GEPTest, PtrOffsets)
+{
+ using CType = typename TestFixture::CType;
+ using ReactorType = typename TestFixture::ReactorType;
+
+ Routine *routine = nullptr;
+
+ {
+ Function< Pointer<ReactorType>(Pointer<ReactorType>, Int) > function;
+ {
+ Pointer<ReactorType> pointer = function.template Arg<0>();
+ Int index = function.template Arg<1>();
+ Return(&pointer[index]);
+ }
+
+ routine = function("one");
+
+ if(routine)
+ {
+ auto callable = (CType*(*)(CType*, unsigned int))routine->getEntry();
+
+ union PtrInt {
+ CType* p;
+ size_t i;
+ };
+
+ PtrInt base;
+ base.i = 0x10000;
+
+ for (int i = 0; i < 5; i++)
+ {
+ PtrInt reference;
+ reference.p = &base.p[i];
+
+ PtrInt result;
+ result.p = callable(base.p, i);
+
+ auto expect = reference.i - base.i;
+ auto got = result.i - base.i;
+
+ EXPECT_EQ(got, expect) << "i:" << i;
+ }
+ }
+ }
+
+ delete routine;
+}
+
int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
diff --git a/chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.vcxproj b/chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.vcxproj
index cda74e7178d..5e20af25c69 100644
--- a/chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.vcxproj
+++ b/chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.vcxproj
@@ -23,6 +23,7 @@
<Keyword>Win32Proj</Keyword>
<RootNamespace>ReactorUnitTests</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -105,6 +106,7 @@
<ForcedIncludeFiles>gtest/gtest.h</ForcedIncludeFiles>
<TreatSpecificWarningsAsErrors>5038;4838</TreatSpecificWarningsAsErrors>
<AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -123,6 +125,7 @@
<ForcedIncludeFiles>gtest/gtest.h</ForcedIncludeFiles>
<TreatSpecificWarningsAsErrors>5038;4838</TreatSpecificWarningsAsErrors>
<AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -143,6 +146,7 @@
<ForcedIncludeFiles>gtest/gtest.h</ForcedIncludeFiles>
<TreatSpecificWarningsAsErrors>5038;4838</TreatSpecificWarningsAsErrors>
<AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -165,6 +169,7 @@
<ForcedIncludeFiles>gtest/gtest.h</ForcedIncludeFiles>
<TreatSpecificWarningsAsErrors>5038;4838</TreatSpecificWarningsAsErrors>
<AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
diff --git a/chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.vcxproj.user b/chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.vcxproj.user
new file mode 100644
index 00000000000..87232c81250
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Reactor/ReactorUnitTests.vcxproj.user
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LocalDebuggerCommandArguments>--gtest_break_on_failure --gtest_filter=*</LocalDebuggerCommandArguments>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerCommandArguments>--gtest_break_on_failure --gtest_filter=*</LocalDebuggerCommandArguments>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/chromium/third_party/swiftshader/src/Reactor/Subzero.sln b/chromium/third_party/swiftshader/src/Reactor/Subzero.sln
deleted file mode 100644
index 91aa25c0c1e..00000000000
--- a/chromium/third_party/swiftshader/src/Reactor/Subzero.sln
+++ /dev/null
@@ -1,34 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Subzero", "Subzero.vcxproj", "{0EB31AEC-B020-46AB-BA05-730F6D01C29B}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Profile|x64 = Profile|x64
- Profile|x86 = Profile|x86
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Debug|x64.ActiveCfg = Debug|x64
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Debug|x64.Build.0 = Debug|x64
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Debug|x86.ActiveCfg = Debug|Win32
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Debug|x86.Build.0 = Debug|Win32
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Profile|x64.ActiveCfg = Release|x64
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Profile|x64.Build.0 = Release|x64
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Profile|x86.ActiveCfg = Release|Win32
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Profile|x86.Build.0 = Release|Win32
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Release|x64.ActiveCfg = Release|x64
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Release|x64.Build.0 = Release|x64
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Release|x86.ActiveCfg = Release|Win32
- {0EB31AEC-B020-46AB-BA05-730F6D01C29B}.Release|x86.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/chromium/third_party/swiftshader/src/Reactor/Subzero.vcxproj b/chromium/third_party/swiftshader/src/Reactor/Subzero.vcxproj
index 7c829d02110..c8159da53df 100644
--- a/chromium/third_party/swiftshader/src/Reactor/Subzero.vcxproj
+++ b/chromium/third_party/swiftshader/src/Reactor/Subzero.vcxproj
@@ -23,6 +23,7 @@
<Keyword>Win32Proj</Keyword>
<RootNamespace>Subzero</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -224,6 +225,7 @@
<ClCompile Include="Debug.cpp" />
<ClCompile Include="ExecutableMemory.cpp" />
<ClCompile Include="Optimizer.cpp" />
+ <ClCompile Include="Reactor.cpp" />
<ClCompile Include="Routine.cpp" />
<ClCompile Include="SubzeroReactor.cpp" />
</ItemGroup>
diff --git a/chromium/third_party/swiftshader/src/Reactor/Subzero.vcxproj.filters b/chromium/third_party/swiftshader/src/Reactor/Subzero.vcxproj.filters
index e98b53c1093..5466b7e3127 100644
--- a/chromium/third_party/swiftshader/src/Reactor/Subzero.vcxproj.filters
+++ b/chromium/third_party/swiftshader/src/Reactor/Subzero.vcxproj.filters
@@ -129,6 +129,9 @@
<ClCompile Include="Debug.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="Reactor.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(SolutionDir)third_party\subzero\src\IceAssembler.h">
diff --git a/chromium/third_party/swiftshader/src/Reactor/SubzeroLLVMDependencies.vcxproj b/chromium/third_party/swiftshader/src/Reactor/SubzeroLLVMDependencies.vcxproj
index fc819a32d60..c629e75f770 100644
--- a/chromium/third_party/swiftshader/src/Reactor/SubzeroLLVMDependencies.vcxproj
+++ b/chromium/third_party/swiftshader/src/Reactor/SubzeroLLVMDependencies.vcxproj
@@ -22,6 +22,7 @@
<ProjectGuid>{E3BBD7DA-45C1-43EF-9C87-3F411031BDE4}</ProjectGuid>
<RootNamespace>SubzeroLLVMDependencies</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
diff --git a/chromium/third_party/swiftshader/src/Reactor/SubzeroReactor.cpp b/chromium/third_party/swiftshader/src/Reactor/SubzeroReactor.cpp
index b4f19715b2a..3afed7b9525 100644
--- a/chromium/third_party/swiftshader/src/Reactor/SubzeroReactor.cpp
+++ b/chromium/third_party/swiftshader/src/Reactor/SubzeroReactor.cpp
@@ -13,6 +13,7 @@
// limitations under the License.
#include "Reactor.hpp"
+#include "Debug.hpp"
#include "Optimizer.hpp"
#include "ExecutableMemory.hpp"
@@ -51,7 +52,6 @@
#include <mutex>
#include <limits>
#include <iostream>
-#include <cassert>
namespace
{
@@ -133,6 +133,11 @@ namespace
namespace rr
{
+ const Capabilities Caps =
+ {
+ false, // CallSupported
+ };
+
enum EmulatedType
{
EmulatedShift = 16,
@@ -191,7 +196,7 @@ namespace rr
case Type_v8i8: return 8;
case Type_v4i8: return 4;
case Type_v2f32: return 8;
- default: assert(false);
+ default: ASSERT(false);
}
}
@@ -229,7 +234,7 @@ namespace rr
uint32_t symtab_entries = symbolTable->sh_size / symbolTable->sh_entsize;
if(index >= symtab_entries)
{
- assert(index < symtab_entries && "Symbol Index out of range");
+ ASSERT(index < symtab_entries && "Symbol Index out of range");
return nullptr;
}
@@ -272,7 +277,7 @@ namespace rr
}
break;
default:
- assert(false && "Unsupported relocation type");
+ ASSERT(false && "Unsupported relocation type");
return nullptr;
}
}
@@ -290,7 +295,7 @@ namespace rr
// *patchSite = (int32_t)((intptr_t)symbolValue + *patchSite - (intptr_t)patchSite);
// break;
default:
- assert(false && "Unsupported relocation type");
+ ASSERT(false && "Unsupported relocation type");
return nullptr;
}
}
@@ -314,7 +319,7 @@ namespace rr
uint32_t symtab_entries = symbolTable->sh_size / symbolTable->sh_entsize;
if(index >= symtab_entries)
{
- assert(index < symtab_entries && "Symbol Index out of range");
+ ASSERT(index < symtab_entries && "Symbol Index out of range");
return nullptr;
}
@@ -352,7 +357,7 @@ namespace rr
*patchSite32 = (int32_t)((intptr_t)symbolValue + *patchSite32 + relocation.r_addend);
break;
default:
- assert(false && "Unsupported relocation type");
+ ASSERT(false && "Unsupported relocation type");
return nullptr;
}
@@ -369,17 +374,17 @@ namespace rr
}
// Expect ELF bitness to match platform
- assert(sizeof(void*) == 8 ? elfHeader->getFileClass() == ELFCLASS64 : elfHeader->getFileClass() == ELFCLASS32);
+ ASSERT(sizeof(void*) == 8 ? elfHeader->getFileClass() == ELFCLASS64 : elfHeader->getFileClass() == ELFCLASS32);
#if defined(__i386__)
- assert(sizeof(void*) == 4 && elfHeader->e_machine == EM_386);
+ ASSERT(sizeof(void*) == 4 && elfHeader->e_machine == EM_386);
#elif defined(__x86_64__)
- assert(sizeof(void*) == 8 && elfHeader->e_machine == EM_X86_64);
+ ASSERT(sizeof(void*) == 8 && elfHeader->e_machine == EM_X86_64);
#elif defined(__arm__)
- assert(sizeof(void*) == 4 && elfHeader->e_machine == EM_ARM);
+ ASSERT(sizeof(void*) == 4 && elfHeader->e_machine == EM_ARM);
#elif defined(__aarch64__)
- assert(sizeof(void*) == 8 && elfHeader->e_machine == EM_AARCH64);
+ ASSERT(sizeof(void*) == 8 && elfHeader->e_machine == EM_AARCH64);
#elif defined(__mips__)
- assert(sizeof(void*) == 4 && elfHeader->e_machine == EM_MIPS);
+ ASSERT(sizeof(void*) == 4 && elfHeader->e_machine == EM_MIPS);
#else
#error "Unsupported platform"
#endif
@@ -399,7 +404,7 @@ namespace rr
}
else if(sectionHeader[i].sh_type == SHT_REL)
{
- assert(sizeof(void*) == 4 && "UNIMPLEMENTED"); // Only expected/implemented for 32-bit code
+ ASSERT(sizeof(void*) == 4 && "UNIMPLEMENTED"); // Only expected/implemented for 32-bit code
for(Elf32_Word index = 0; index < sectionHeader[i].sh_size / sectionHeader[i].sh_entsize; index++)
{
@@ -409,7 +414,7 @@ namespace rr
}
else if(sectionHeader[i].sh_type == SHT_RELA)
{
- assert(sizeof(void*) == 8 && "UNIMPLEMENTED"); // Only expected/implemented for 64-bit code
+ ASSERT(sizeof(void*) == 8 && "UNIMPLEMENTED"); // Only expected/implemented for 64-bit code
for(Elf32_Word index = 0; index < sectionHeader[i].sh_size / sectionHeader[i].sh_entsize; index++)
{
@@ -477,7 +482,7 @@ namespace rr
buffer[position] = Value;
position++;
}
- else assert(false && "UNIMPLEMENTED");
+ else ASSERT(false && "UNIMPLEMENTED");
}
void writeBytes(llvm::StringRef Bytes) override
@@ -590,7 +595,7 @@ namespace rr
optimize();
::function->translate();
- assert(!::function->hasError());
+ ASSERT(!::function->hasError());
auto globals = ::function->getGlobalInits();
@@ -648,7 +653,10 @@ namespace rr
void Nucleus::setInsertBlock(BasicBlock *basicBlock)
{
- // assert(::basicBlock->getInsts().back().getTerminatorEdges().size() >= 0 && "Previous basic block must have a terminator");
+ // ASSERT(::basicBlock->getInsts().back().getTerminatorEdges().size() >= 0 && "Previous basic block must have a terminator");
+
+ Variable::materializeAll();
+
::basicBlock = basicBlock;
}
@@ -676,24 +684,38 @@ namespace rr
void Nucleus::createRetVoid()
{
+ // Code generated after this point is unreachable, so any variables
+ // being read can safely return an undefined value. We have to avoid
+ // materializing variables after the terminator ret instruction.
+ Variable::killUnmaterialized();
+
Ice::InstRet *ret = Ice::InstRet::create(::function);
::basicBlock->appendInst(ret);
}
void Nucleus::createRet(Value *v)
{
+ // Code generated after this point is unreachable, so any variables
+ // being read can safely return an undefined value. We have to avoid
+ // materializing variables after the terminator ret instruction.
+ Variable::killUnmaterialized();
+
Ice::InstRet *ret = Ice::InstRet::create(::function, v);
::basicBlock->appendInst(ret);
}
void Nucleus::createBr(BasicBlock *dest)
{
+ Variable::materializeAll();
+
auto br = Ice::InstBr::create(::function, dest);
::basicBlock->appendInst(br);
}
void Nucleus::createCondBr(Value *cond, BasicBlock *ifTrue, BasicBlock *ifFalse)
{
+ Variable::materializeAll();
+
auto br = Ice::InstBr::create(::function, cond, ifTrue, ifFalse);
::basicBlock->appendInst(br);
}
@@ -717,7 +739,7 @@ namespace rr
static Value *createArithmetic(Ice::InstArithmetic::OpKind op, Value *lhs, Value *rhs)
{
- assert(lhs->getType() == rhs->getType() || llvm::isa<Ice::Constant>(rhs));
+ ASSERT(lhs->getType() == rhs->getType() || llvm::isa<Ice::Constant>(rhs));
bool swapOperands = llvm::isa<Ice::Constant>(lhs) && isCommutative(op);
@@ -846,8 +868,11 @@ namespace rr
}
}
- Value *Nucleus::createLoad(Value *ptr, Type *type, bool isVolatile, unsigned int align)
+ Value *Nucleus::createLoad(Value *ptr, Type *type, bool isVolatile, unsigned int align, bool atomic, std::memory_order memoryOrder)
{
+ ASSERT(!atomic); // Unimplemented
+ ASSERT(memoryOrder == std::memory_order_relaxed); // Unimplemented
+
int valueType = (int)reinterpret_cast<intptr_t>(type);
Ice::Variable *result = ::function->makeVariable(T(type));
@@ -879,7 +904,7 @@ namespace rr
auto bitcast = Ice::InstCast::create(::function, Ice::InstCast::Bitcast, result, vector.loadValue());
::basicBlock->appendInst(bitcast);
}
- else assert(false);
+ else UNREACHABLE("typeSize(type): %d", int(typeSize(type)));
}
else
{
@@ -900,8 +925,11 @@ namespace rr
return V(result);
}
- Value *Nucleus::createStore(Value *value, Value *ptr, Type *type, bool isVolatile, unsigned int align)
+ Value *Nucleus::createStore(Value *value, Value *ptr, Type *type, bool isVolatile, unsigned int align, bool atomic, std::memory_order memoryOrder)
{
+ ASSERT(!atomic); // Unimplemented
+ ASSERT(memoryOrder == std::memory_order_relaxed); // Unimplemented
+
#if __has_feature(memory_sanitizer)
// Mark all (non-stack) memory writes as initialized by calling __msan_unpoison
if(align != 0)
@@ -945,7 +973,7 @@ namespace rr
Int y = Extract(v, 1);
*Pointer<Int>(pointer + 4) = y;
}
- else assert(false);
+ else UNREACHABLE("typeSize(type): %d", int(typeSize(type)));
}
else
{
@@ -960,7 +988,7 @@ namespace rr
}
else
{
- assert(value->getType() == T(type));
+ ASSERT(value->getType() == T(type));
auto store = Ice::InstStore::create(::function, value, ptr, align);
::basicBlock->appendInst(store);
@@ -971,7 +999,7 @@ namespace rr
Value *Nucleus::createGEP(Value *ptr, Type *type, Value *index, bool unsignedIndex)
{
- assert(index->getType() == Ice::IceType_i32);
+ ASSERT(index->getType() == Ice::IceType_i32);
if(auto *constant = llvm::dyn_cast<Ice::ConstantInteger32>(index))
{
@@ -1007,7 +1035,8 @@ namespace rr
Value *Nucleus::createAtomicAdd(Value *ptr, Value *value)
{
- assert(false && "UNIMPLEMENTED"); return nullptr;
+ UNIMPLEMENTED("createAtomicAdd");
+ return nullptr;
}
static Value *createCast(Ice::InstCast::OpKind op, Value *v, Type *destType)
@@ -1085,7 +1114,7 @@ namespace rr
static Value *createIntCompare(Ice::InstIcmp::ICond condition, Value *lhs, Value *rhs)
{
- assert(lhs->getType() == rhs->getType());
+ ASSERT(lhs->getType() == rhs->getType());
auto result = ::function->makeVariable(Ice::isScalarIntegerType(lhs->getType()) ? Ice::IceType_i1 : lhs->getType());
auto cmp = Ice::InstIcmp::create(::function, condition, result, lhs, rhs);
@@ -1146,8 +1175,8 @@ namespace rr
static Value *createFloatCompare(Ice::InstFcmp::FCond condition, Value *lhs, Value *rhs)
{
- assert(lhs->getType() == rhs->getType());
- assert(Ice::isScalarFloatingType(lhs->getType()) || lhs->getType() == Ice::IceType_v4f32);
+ ASSERT(lhs->getType() == rhs->getType());
+ ASSERT(Ice::isScalarFloatingType(lhs->getType()) || lhs->getType() == Ice::IceType_v4f32);
auto result = ::function->makeVariable(Ice::isScalarFloatingType(lhs->getType()) ? Ice::IceType_i1 : Ice::IceType_v4i32);
auto cmp = Ice::InstFcmp::create(::function, condition, result, lhs, rhs);
@@ -1246,7 +1275,7 @@ namespace rr
Value *Nucleus::createShuffleVector(Value *V1, Value *V2, const int *select)
{
- assert(V1->getType() == V2->getType());
+ ASSERT(V1->getType() == V2->getType());
int size = Ice::typeNumElements(V1->getType());
auto result = ::function->makeVariable(V1->getType());
@@ -1264,7 +1293,7 @@ namespace rr
Value *Nucleus::createSelect(Value *C, Value *ifTrue, Value *ifFalse)
{
- assert(ifTrue->getType() == ifFalse->getType());
+ ASSERT(ifTrue->getType() == ifFalse->getType());
auto result = ::function->makeVariable(ifTrue->getType());
auto *select = Ice::InstSelect::create(::function, result, C, ifTrue, ifFalse);
@@ -1292,34 +1321,6 @@ namespace rr
::basicBlock->appendInst(unreachable);
}
- static Value *createSwizzle4(Value *val, unsigned char select)
- {
- int swizzle[4] =
- {
- (select >> 0) & 0x03,
- (select >> 2) & 0x03,
- (select >> 4) & 0x03,
- (select >> 6) & 0x03,
- };
-
- return Nucleus::createShuffleVector(val, val, swizzle);
- }
-
- static Value *createMask4(Value *lhs, Value *rhs, unsigned char select)
- {
- int64_t mask[4] = {0, 0, 0, 0};
-
- mask[(select >> 0) & 0x03] = -1;
- mask[(select >> 2) & 0x03] = -1;
- mask[(select >> 4) & 0x03] = -1;
- mask[(select >> 6) & 0x03] = -1;
-
- Value *condition = Nucleus::createConstantVector(mask, T(Ice::IceType_v4i1));
- Value *result = Nucleus::createSelect(condition, rhs, lhs);
-
- return result;
- }
-
Type *Nucleus::getPointerType(Type *ElementType)
{
if(sizeof(void*) == 8)
@@ -1336,7 +1337,7 @@ namespace rr
{
if(Ice::isVectorType(T(Ty)))
{
- assert(Ice::typeNumElements(T(Ty)) <= 16);
+ ASSERT(Ice::typeNumElements(T(Ty)) <= 16);
int64_t c[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
return createConstantVector(c, Ty);
}
@@ -1399,7 +1400,7 @@ namespace rr
Value *Nucleus::createConstantVector(const int64_t *constants, Type *type)
{
const int vectorSize = 16;
- assert(Ice::typeWidthInBytes(T(type)) == vectorSize);
+ ASSERT(Ice::typeWidthInBytes(T(type)) == vectorSize);
const int alignment = vectorSize;
auto globalPool = ::function->getGlobalPool();
@@ -1476,7 +1477,7 @@ namespace rr
}
break;
default:
- assert(false && "Unknown constant vector type" && type);
+ UNREACHABLE("Unknown constant vector type: %d", (int)reinterpret_cast<intptr_t>(type));
}
auto name = Ice::GlobalString::createWithoutString(::context);
@@ -1508,1052 +1509,31 @@ namespace rr
return T(Ice::IceType_void);
}
- Bool::Bool(Argument<Bool> argument)
- {
- storeValue(argument.value);
- }
-
- Bool::Bool(bool x)
- {
- storeValue(Nucleus::createConstantBool(x));
- }
-
- Bool::Bool(RValue<Bool> rhs)
- {
- storeValue(rhs.value);
- }
-
- Bool::Bool(const Bool &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Bool::Bool(const Reference<Bool> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Bool> Bool::operator=(RValue<Bool> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Bool> Bool::operator=(const Bool &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Bool>(value);
- }
-
- RValue<Bool> Bool::operator=(const Reference<Bool> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Bool>(value);
- }
-
- RValue<Bool> operator!(RValue<Bool> val)
- {
- return RValue<Bool>(Nucleus::createNot(val.value));
- }
-
- RValue<Bool> operator&&(RValue<Bool> lhs, RValue<Bool> rhs)
- {
- return RValue<Bool>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator||(RValue<Bool> lhs, RValue<Bool> rhs)
- {
- return RValue<Bool>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
Type *Bool::getType()
{
return T(Ice::IceType_i1);
}
- Byte::Byte(Argument<Byte> argument)
- {
- storeValue(argument.value);
- }
-
- Byte::Byte(RValue<Int> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, Byte::getType());
-
- storeValue(integer);
- }
-
- Byte::Byte(RValue<UInt> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, Byte::getType());
-
- storeValue(integer);
- }
-
- Byte::Byte(RValue<UShort> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, Byte::getType());
-
- storeValue(integer);
- }
-
- Byte::Byte(int x)
- {
- storeValue(Nucleus::createConstantByte((unsigned char)x));
- }
-
- Byte::Byte(unsigned char x)
- {
- storeValue(Nucleus::createConstantByte(x));
- }
-
- Byte::Byte(RValue<Byte> rhs)
- {
- storeValue(rhs.value);
- }
-
- Byte::Byte(const Byte &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Byte::Byte(const Reference<Byte> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Byte> Byte::operator=(RValue<Byte> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Byte> Byte::operator=(const Byte &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Byte>(value);
- }
-
- RValue<Byte> Byte::operator=(const Reference<Byte> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Byte>(value);
- }
-
- RValue<Byte> operator+(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator-(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator*(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator/(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createUDiv(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator%(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createURem(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator&(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator|(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator^(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator<<(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator>>(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Byte>(Nucleus::createLShr(lhs.value, rhs.value));
- }
-
- RValue<Byte> operator+=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Byte> operator-=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Byte> operator*=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<Byte> operator/=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<Byte> operator%=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<Byte> operator&=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Byte> operator|=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Byte> operator^=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<Byte> operator<<=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<Byte> operator>>=(Byte &lhs, RValue<Byte> rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<Byte> operator+(RValue<Byte> val)
- {
- return val;
- }
-
- RValue<Byte> operator-(RValue<Byte> val)
- {
- return RValue<Byte>(Nucleus::createNeg(val.value));
- }
-
- RValue<Byte> operator~(RValue<Byte> val)
- {
- return RValue<Byte>(Nucleus::createNot(val.value));
- }
-
- RValue<Byte> operator++(Byte &val, int) // Post-increment
- {
- RValue<Byte> res = val;
- val += Byte(1);
- return res;
- }
-
- const Byte &operator++(Byte &val) // Pre-increment
- {
- val += Byte(1);
- return val;
- }
-
- RValue<Byte> operator--(Byte &val, int) // Post-decrement
- {
- RValue<Byte> res = val;
- val -= Byte(1);
- return res;
- }
-
- const Byte &operator--(Byte &val) // Pre-decrement
- {
- val -= Byte(1);
- return val;
- }
-
- RValue<Bool> operator<(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpULT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpULE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpUGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpUGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<Byte> lhs, RValue<Byte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
- }
-
Type *Byte::getType()
{
return T(Ice::IceType_i8);
}
- SByte::SByte(Argument<SByte> argument)
- {
- storeValue(argument.value);
- }
-
- SByte::SByte(RValue<Int> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, SByte::getType());
-
- storeValue(integer);
- }
-
- SByte::SByte(RValue<Short> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, SByte::getType());
-
- storeValue(integer);
- }
-
- SByte::SByte(signed char x)
- {
- storeValue(Nucleus::createConstantByte(x));
- }
-
- SByte::SByte(RValue<SByte> rhs)
- {
- storeValue(rhs.value);
- }
-
- SByte::SByte(const SByte &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- SByte::SByte(const Reference<SByte> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<SByte> SByte::operator=(RValue<SByte> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<SByte> SByte::operator=(const SByte &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<SByte>(value);
- }
-
- RValue<SByte> SByte::operator=(const Reference<SByte> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<SByte>(value);
- }
-
- RValue<SByte> operator+(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator-(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator*(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator/(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createSDiv(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator%(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createSRem(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator&(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator|(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator^(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator<<(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator>>(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<SByte>(Nucleus::createAShr(lhs.value, rhs.value));
- }
-
- RValue<SByte> operator+=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<SByte> operator-=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<SByte> operator*=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<SByte> operator/=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<SByte> operator%=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<SByte> operator&=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<SByte> operator|=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<SByte> operator^=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<SByte> operator<<=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<SByte> operator>>=(SByte &lhs, RValue<SByte> rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<SByte> operator+(RValue<SByte> val)
- {
- return val;
- }
-
- RValue<SByte> operator-(RValue<SByte> val)
- {
- return RValue<SByte>(Nucleus::createNeg(val.value));
- }
-
- RValue<SByte> operator~(RValue<SByte> val)
- {
- return RValue<SByte>(Nucleus::createNot(val.value));
- }
-
- RValue<SByte> operator++(SByte &val, int) // Post-increment
- {
- RValue<SByte> res = val;
- val += SByte(1);
- return res;
- }
-
- const SByte &operator++(SByte &val) // Pre-increment
- {
- val += SByte(1);
- return val;
- }
-
- RValue<SByte> operator--(SByte &val, int) // Post-decrement
- {
- RValue<SByte> res = val;
- val -= SByte(1);
- return res;
- }
-
- const SByte &operator--(SByte &val) // Pre-decrement
- {
- val -= SByte(1);
- return val;
- }
-
- RValue<Bool> operator<(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSLT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSLE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<SByte> lhs, RValue<SByte> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
- }
-
Type *SByte::getType()
{
return T(Ice::IceType_i8);
}
- Short::Short(Argument<Short> argument)
- {
- storeValue(argument.value);
- }
-
- Short::Short(RValue<Int> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, Short::getType());
-
- storeValue(integer);
- }
-
- Short::Short(short x)
- {
- storeValue(Nucleus::createConstantShort(x));
- }
-
- Short::Short(RValue<Short> rhs)
- {
- storeValue(rhs.value);
- }
-
- Short::Short(const Short &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Short::Short(const Reference<Short> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Short> Short::operator=(RValue<Short> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Short> Short::operator=(const Short &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Short>(value);
- }
-
- RValue<Short> Short::operator=(const Reference<Short> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Short>(value);
- }
-
- RValue<Short> operator+(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Short> operator-(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<Short> operator*(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<Short> operator/(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createSDiv(lhs.value, rhs.value));
- }
-
- RValue<Short> operator%(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createSRem(lhs.value, rhs.value));
- }
-
- RValue<Short> operator&(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Short> operator|(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Short> operator^(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<Short> operator<<(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<Short> operator>>(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Short>(Nucleus::createAShr(lhs.value, rhs.value));
- }
-
- RValue<Short> operator+=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Short> operator-=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Short> operator*=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<Short> operator/=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<Short> operator%=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<Short> operator&=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Short> operator|=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Short> operator^=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<Short> operator<<=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<Short> operator>>=(Short &lhs, RValue<Short> rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<Short> operator+(RValue<Short> val)
- {
- return val;
- }
-
- RValue<Short> operator-(RValue<Short> val)
- {
- return RValue<Short>(Nucleus::createNeg(val.value));
- }
-
- RValue<Short> operator~(RValue<Short> val)
- {
- return RValue<Short>(Nucleus::createNot(val.value));
- }
-
- RValue<Short> operator++(Short &val, int) // Post-increment
- {
- RValue<Short> res = val;
- val += Short(1);
- return res;
- }
-
- const Short &operator++(Short &val) // Pre-increment
- {
- val += Short(1);
- return val;
- }
-
- RValue<Short> operator--(Short &val, int) // Post-decrement
- {
- RValue<Short> res = val;
- val -= Short(1);
- return res;
- }
-
- const Short &operator--(Short &val) // Pre-decrement
- {
- val -= Short(1);
- return val;
- }
-
- RValue<Bool> operator<(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSLT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSLE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<Short> lhs, RValue<Short> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
- }
-
Type *Short::getType()
{
return T(Ice::IceType_i16);
}
- UShort::UShort(Argument<UShort> argument)
- {
- storeValue(argument.value);
- }
-
- UShort::UShort(RValue<UInt> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, UShort::getType());
-
- storeValue(integer);
- }
-
- UShort::UShort(RValue<Int> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, UShort::getType());
-
- storeValue(integer);
- }
-
- UShort::UShort(unsigned short x)
- {
- storeValue(Nucleus::createConstantShort(x));
- }
-
- UShort::UShort(RValue<UShort> rhs)
- {
- storeValue(rhs.value);
- }
-
- UShort::UShort(const UShort &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UShort::UShort(const Reference<UShort> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<UShort> UShort::operator=(RValue<UShort> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<UShort> UShort::operator=(const UShort &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort>(value);
- }
-
- RValue<UShort> UShort::operator=(const Reference<UShort> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort>(value);
- }
-
- RValue<UShort> operator+(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator-(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator*(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator/(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createUDiv(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator%(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createURem(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator&(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator|(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator^(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator<<(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator>>(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<UShort>(Nucleus::createLShr(lhs.value, rhs.value));
- }
-
- RValue<UShort> operator+=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<UShort> operator-=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<UShort> operator*=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<UShort> operator/=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<UShort> operator%=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<UShort> operator&=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<UShort> operator|=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<UShort> operator^=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<UShort> operator<<=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<UShort> operator>>=(UShort &lhs, RValue<UShort> rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<UShort> operator+(RValue<UShort> val)
- {
- return val;
- }
-
- RValue<UShort> operator-(RValue<UShort> val)
- {
- return RValue<UShort>(Nucleus::createNeg(val.value));
- }
-
- RValue<UShort> operator~(RValue<UShort> val)
- {
- return RValue<UShort>(Nucleus::createNot(val.value));
- }
-
- RValue<UShort> operator++(UShort &val, int) // Post-increment
- {
- RValue<UShort> res = val;
- val += UShort(1);
- return res;
- }
-
- const UShort &operator++(UShort &val) // Pre-increment
- {
- val += UShort(1);
- return val;
- }
-
- RValue<UShort> operator--(UShort &val, int) // Post-decrement
- {
- RValue<UShort> res = val;
- val -= UShort(1);
- return res;
- }
-
- const UShort &operator--(UShort &val) // Pre-decrement
- {
- val -= UShort(1);
- return val;
- }
-
- RValue<Bool> operator<(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpULT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpULE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpUGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpUGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<UShort> lhs, RValue<UShort> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
- }
-
Type *UShort::getType()
{
return T(Ice::IceType_i16);
}
- Byte4::Byte4(RValue<Byte8> cast)
- {
- storeValue(Nucleus::createBitCast(cast.value, getType()));
- }
-
- Byte4::Byte4(const Reference<Byte4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
Type *Byte4::getType()
{
return T(Type_v4i8);
@@ -2564,180 +1544,22 @@ namespace rr
return T(Type_v4i8);
}
- Byte8::Byte8(uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4, uint8_t x5, uint8_t x6, uint8_t x7)
- {
- int64_t constantVector[8] = {x0, x1, x2, x3, x4, x5, x6, x7};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Byte8::Byte8(RValue<Byte8> rhs)
- {
- storeValue(rhs.value);
- }
-
- Byte8::Byte8(const Byte8 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Byte8::Byte8(const Reference<Byte8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Byte8> Byte8::operator=(RValue<Byte8> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Byte8> Byte8::operator=(const Byte8 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Byte8>(value);
- }
-
- RValue<Byte8> Byte8::operator=(const Reference<Byte8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Byte8>(value);
- }
-
- RValue<Byte8> operator+(RValue<Byte8> lhs, RValue<Byte8> rhs)
- {
- return RValue<Byte8>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Byte8> operator-(RValue<Byte8> lhs, RValue<Byte8> rhs)
- {
- return RValue<Byte8>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
-// RValue<Byte8> operator*(RValue<Byte8> lhs, RValue<Byte8> rhs)
-// {
-// return RValue<Byte8>(Nucleus::createMul(lhs.value, rhs.value));
-// }
-
-// RValue<Byte8> operator/(RValue<Byte8> lhs, RValue<Byte8> rhs)
-// {
-// return RValue<Byte8>(Nucleus::createUDiv(lhs.value, rhs.value));
-// }
-
-// RValue<Byte8> operator%(RValue<Byte8> lhs, RValue<Byte8> rhs)
-// {
-// return RValue<Byte8>(Nucleus::createURem(lhs.value, rhs.value));
-// }
-
- RValue<Byte8> operator&(RValue<Byte8> lhs, RValue<Byte8> rhs)
- {
- return RValue<Byte8>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Byte8> operator|(RValue<Byte8> lhs, RValue<Byte8> rhs)
- {
- return RValue<Byte8>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Byte8> operator^(RValue<Byte8> lhs, RValue<Byte8> rhs)
- {
- return RValue<Byte8>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
-// RValue<Byte8> operator<<(RValue<Byte8> lhs, unsigned char rhs)
-// {
-// return RValue<Byte8>(Nucleus::createShl(lhs.value, V(::context->getConstantInt32(rhs))));
-// }
-
-// RValue<Byte8> operator>>(RValue<Byte8> lhs, unsigned char rhs)
-// {
-// return RValue<Byte8>(Nucleus::createLShr(lhs.value, V(::context->getConstantInt32(rhs))));
-// }
-
- RValue<Byte8> operator+=(Byte8 &lhs, RValue<Byte8> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Byte8> operator-=(Byte8 &lhs, RValue<Byte8> rhs)
- {
- return lhs = lhs - rhs;
- }
-
-// RValue<Byte8> operator*=(Byte8 &lhs, RValue<Byte8> rhs)
-// {
-// return lhs = lhs * rhs;
-// }
-
-// RValue<Byte8> operator/=(Byte8 &lhs, RValue<Byte8> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<Byte8> operator%=(Byte8 &lhs, RValue<Byte8> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<Byte8> operator&=(Byte8 &lhs, RValue<Byte8> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Byte8> operator|=(Byte8 &lhs, RValue<Byte8> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Byte8> operator^=(Byte8 &lhs, RValue<Byte8> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
-// RValue<Byte8> operator<<=(Byte8 &lhs, RValue<Byte8> rhs)
-// {
-// return lhs = lhs << rhs;
-// }
-
-// RValue<Byte8> operator>>=(Byte8 &lhs, RValue<Byte8> rhs)
-// {
-// return lhs = lhs >> rhs;
-// }
-
-// RValue<Byte8> operator+(RValue<Byte8> val)
-// {
-// return val;
-// }
-
-// RValue<Byte8> operator-(RValue<Byte8> val)
-// {
-// return RValue<Byte8>(Nucleus::createNeg(val.value));
-// }
-
- RValue<Byte8> operator~(RValue<Byte8> val)
- {
- return RValue<Byte8>(Nucleus::createNot(val.value));
- }
-
- RValue<Byte> Extract(RValue<Byte8> val, int i)
+ namespace
{
- return RValue<Byte>(Nucleus::createExtractElement(val.value, Byte::getType(), i));
- }
+ RValue<Byte> SaturateUnsigned(RValue<Short> x)
+ {
+ return Byte(IfThenElse(Int(x) > 0xFF, Int(0xFF), IfThenElse(Int(x) < 0, Int(0), Int(x))));
+ }
- RValue<Byte8> Insert(RValue<Byte8> val, RValue<Byte> element, int i)
- {
- return RValue<Byte8>(Nucleus::createInsertElement(val.value, element.value, i));
- }
+ RValue<Byte> Extract(RValue<Byte8> val, int i)
+ {
+ return RValue<Byte>(Nucleus::createExtractElement(val.value, Byte::getType(), i));
+ }
- RValue<Byte> SaturateUnsigned(RValue<Short> x)
- {
- return Byte(IfThenElse(Int(x) > 0xFF, Int(0xFF), IfThenElse(Int(x) < 0, Int(0), Int(x))));
+ RValue<Byte8> Insert(RValue<Byte8> val, RValue<Byte> element, int i)
+ {
+ return RValue<Byte8>(Nucleus::createInsertElement(val.value, element.value, i));
+ }
}
RValue<Byte8> AddSat(RValue<Byte8> x, RValue<Byte8> y)
@@ -2800,30 +1622,6 @@ namespace rr
}
}
- RValue<Short4> Unpack(RValue<Byte4> x)
- {
- int shuffle[16] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7}; // Real type is v16i8
- return As<Short4>(Nucleus::createShuffleVector(x.value, x.value, shuffle));
- }
-
- RValue<Short4> Unpack(RValue<Byte4> x, RValue<Byte4> y)
- {
- return UnpackLow(As<Byte8>(x), As<Byte8>(y));
- }
-
- RValue<Short4> UnpackLow(RValue<Byte8> x, RValue<Byte8> y)
- {
- int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}; // Real type is v16i8
- return As<Short4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Short4> UnpackHigh(RValue<Byte8> x, RValue<Byte8> y)
- {
- int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}; // Real type is v16i8
- auto lowHigh = RValue<Byte16>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- return As<Short4>(Swizzle(As<Int4>(lowHigh), 0xEE));
- }
-
RValue<SByte> Extract(RValue<SByte8> val, int i)
{
return RValue<SByte>(Nucleus::createExtractElement(val.value, SByte::getType(), i));
@@ -2899,94 +1697,6 @@ namespace rr
return T(Type_v8i8);
}
- SByte8::SByte8(uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4, uint8_t x5, uint8_t x6, uint8_t x7)
- {
- int64_t constantVector[8] = { x0, x1, x2, x3, x4, x5, x6, x7 };
- Value *vector = V(Nucleus::createConstantVector(constantVector, getType()));
-
- storeValue(Nucleus::createBitCast(vector, getType()));
- }
-
- SByte8::SByte8(RValue<SByte8> rhs)
- {
- storeValue(rhs.value);
- }
-
- SByte8::SByte8(const SByte8 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- SByte8::SByte8(const Reference<SByte8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<SByte8> SByte8::operator=(RValue<SByte8> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<SByte8> SByte8::operator=(const SByte8 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<SByte8>(value);
- }
-
- RValue<SByte8> SByte8::operator=(const Reference<SByte8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<SByte8>(value);
- }
-
- RValue<SByte8> operator+(RValue<SByte8> lhs, RValue<SByte8> rhs)
- {
- return RValue<SByte8>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<SByte8> operator-(RValue<SByte8> lhs, RValue<SByte8> rhs)
- {
- return RValue<SByte8>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
-// RValue<SByte8> operator*(RValue<SByte8> lhs, RValue<SByte8> rhs)
-// {
-// return RValue<SByte8>(Nucleus::createMul(lhs.value, rhs.value));
-// }
-
-// RValue<SByte8> operator/(RValue<SByte8> lhs, RValue<SByte8> rhs)
-// {
-// return RValue<SByte8>(Nucleus::createSDiv(lhs.value, rhs.value));
-// }
-
-// RValue<SByte8> operator%(RValue<SByte8> lhs, RValue<SByte8> rhs)
-// {
-// return RValue<SByte8>(Nucleus::createSRem(lhs.value, rhs.value));
-// }
-
- RValue<SByte8> operator&(RValue<SByte8> lhs, RValue<SByte8> rhs)
- {
- return RValue<SByte8>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<SByte8> operator|(RValue<SByte8> lhs, RValue<SByte8> rhs)
- {
- return RValue<SByte8>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<SByte8> operator^(RValue<SByte8> lhs, RValue<SByte8> rhs)
- {
- return RValue<SByte8>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
// RValue<SByte8> operator<<(RValue<SByte8> lhs, unsigned char rhs)
// {
// return RValue<SByte8>(Nucleus::createShl(lhs.value, V(::context->getConstantInt32(rhs))));
@@ -2997,71 +1707,6 @@ namespace rr
// return RValue<SByte8>(Nucleus::createAShr(lhs.value, V(::context->getConstantInt32(rhs))));
// }
- RValue<SByte8> operator+=(SByte8 &lhs, RValue<SByte8> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<SByte8> operator-=(SByte8 &lhs, RValue<SByte8> rhs)
- {
- return lhs = lhs - rhs;
- }
-
-// RValue<SByte8> operator*=(SByte8 &lhs, RValue<SByte8> rhs)
-// {
-// return lhs = lhs * rhs;
-// }
-
-// RValue<SByte8> operator/=(SByte8 &lhs, RValue<SByte8> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<SByte8> operator%=(SByte8 &lhs, RValue<SByte8> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<SByte8> operator&=(SByte8 &lhs, RValue<SByte8> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<SByte8> operator|=(SByte8 &lhs, RValue<SByte8> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<SByte8> operator^=(SByte8 &lhs, RValue<SByte8> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
-// RValue<SByte8> operator<<=(SByte8 &lhs, RValue<SByte8> rhs)
-// {
-// return lhs = lhs << rhs;
-// }
-
-// RValue<SByte8> operator>>=(SByte8 &lhs, RValue<SByte8> rhs)
-// {
-// return lhs = lhs >> rhs;
-// }
-
-// RValue<SByte8> operator+(RValue<SByte8> val)
-// {
-// return val;
-// }
-
-// RValue<SByte8> operator-(RValue<SByte8> val)
-// {
-// return RValue<SByte8>(Nucleus::createNeg(val.value));
-// }
-
- RValue<SByte8> operator~(RValue<SByte8> val)
- {
- return RValue<SByte8>(Nucleus::createNot(val.value));
- }
-
RValue<SByte> SaturateSigned(RValue<Short> x)
{
return SByte(IfThenElse(Int(x) > 0x7F, Int(0x7F), IfThenElse(Int(x) < -0x80, Int(0x80), Int(x))));
@@ -3127,19 +1772,6 @@ namespace rr
}
}
- RValue<Short4> UnpackLow(RValue<SByte8> x, RValue<SByte8> y)
- {
- int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}; // Real type is v16i8
- return As<Short4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Short4> UnpackHigh(RValue<SByte8> x, RValue<SByte8> y)
- {
- int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}; // Real type is v16i8
- auto lowHigh = RValue<Byte16>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- return As<Short4>(Swizzle(As<Int4>(lowHigh), 0xEE));
- }
-
RValue<Int> SignMask(RValue<SByte8> x)
{
if(emulateIntrinsics || CPUID::ARM)
@@ -3175,46 +1807,6 @@ namespace rr
return T(Type_v8i8);
}
- Byte16::Byte16(RValue<Byte16> rhs)
- {
- storeValue(rhs.value);
- }
-
- Byte16::Byte16(const Byte16 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Byte16::Byte16(const Reference<Byte16> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Byte16> Byte16::operator=(RValue<Byte16> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Byte16> Byte16::operator=(const Byte16 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Byte16>(value);
- }
-
- RValue<Byte16> Byte16::operator=(const Reference<Byte16> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Byte16>(value);
- }
-
Type *Byte16::getType()
{
return T(Ice::IceType_v16i8);
@@ -3225,36 +1817,16 @@ namespace rr
return T(Ice::IceType_v16i8);
}
- Short2::Short2(RValue<Short4> cast)
- {
- storeValue(Nucleus::createBitCast(cast.value, getType()));
- }
-
Type *Short2::getType()
{
return T(Type_v2i16);
}
- UShort2::UShort2(RValue<UShort4> cast)
- {
- storeValue(Nucleus::createBitCast(cast.value, getType()));
- }
-
Type *UShort2::getType()
{
return T(Type_v2i16);
}
- Short4::Short4(RValue<Int> cast)
- {
- Value *vector = loadValue();
- Value *element = Nucleus::createTrunc(cast.value, Short::getType());
- Value *insert = Nucleus::createInsertElement(vector, element, 0);
- Value *swizzle = Swizzle(RValue<Short4>(insert), 0x00).value;
-
- storeValue(swizzle);
- }
-
Short4::Short4(RValue<Int4> cast)
{
int select[8] = {0, 2, 4, 6, 0, 2, 4, 6};
@@ -3273,137 +1845,7 @@ namespace rr
Short4::Short4(RValue<Float4> cast)
{
- assert(false && "UNIMPLEMENTED");
- }
-
- Short4::Short4(short xyzw)
- {
- int64_t constantVector[4] = {xyzw, xyzw, xyzw, xyzw};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Short4::Short4(short x, short y, short z, short w)
- {
- int64_t constantVector[4] = {x, y, z, w};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Short4::Short4(RValue<Short4> rhs)
- {
- storeValue(rhs.value);
- }
-
- Short4::Short4(const Short4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Short4::Short4(const Reference<Short4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Short4::Short4(RValue<UShort4> rhs)
- {
- storeValue(rhs.value);
- }
-
- Short4::Short4(const UShort4 &rhs)
- {
- storeValue(rhs.loadValue());
- }
-
- Short4::Short4(const Reference<UShort4> &rhs)
- {
- storeValue(rhs.loadValue());
- }
-
- RValue<Short4> Short4::operator=(RValue<Short4> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Short4> Short4::operator=(const Short4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Short4>(value);
- }
-
- RValue<Short4> Short4::operator=(const Reference<Short4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Short4>(value);
- }
-
- RValue<Short4> Short4::operator=(RValue<UShort4> rhs)
- {
- storeValue(rhs.value);
-
- return RValue<Short4>(rhs);
- }
-
- RValue<Short4> Short4::operator=(const UShort4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Short4>(value);
- }
-
- RValue<Short4> Short4::operator=(const Reference<UShort4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Short4>(value);
- }
-
- RValue<Short4> operator+(RValue<Short4> lhs, RValue<Short4> rhs)
- {
- return RValue<Short4>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Short4> operator-(RValue<Short4> lhs, RValue<Short4> rhs)
- {
- return RValue<Short4>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<Short4> operator*(RValue<Short4> lhs, RValue<Short4> rhs)
- {
- return RValue<Short4>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
-// RValue<Short4> operator/(RValue<Short4> lhs, RValue<Short4> rhs)
-// {
-// return RValue<Short4>(Nucleus::createSDiv(lhs.value, rhs.value));
-// }
-
-// RValue<Short4> operator%(RValue<Short4> lhs, RValue<Short4> rhs)
-// {
-// return RValue<Short4>(Nucleus::createSRem(lhs.value, rhs.value));
-// }
-
- RValue<Short4> operator&(RValue<Short4> lhs, RValue<Short4> rhs)
- {
- return RValue<Short4>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Short4> operator|(RValue<Short4> lhs, RValue<Short4> rhs)
- {
- return RValue<Short4>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Short4> operator^(RValue<Short4> lhs, RValue<Short4> rhs)
- {
- return RValue<Short4>(Nucleus::createXor(lhs.value, rhs.value));
+ UNIMPLEMENTED("Short4::Short4(RValue<Float4> cast)");
}
RValue<Short4> operator<<(RValue<Short4> lhs, unsigned char rhs)
@@ -3442,77 +1884,6 @@ namespace rr
}
}
- RValue<Short4> operator+=(Short4 &lhs, RValue<Short4> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Short4> operator-=(Short4 &lhs, RValue<Short4> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Short4> operator*=(Short4 &lhs, RValue<Short4> rhs)
- {
- return lhs = lhs * rhs;
- }
-
-// RValue<Short4> operator/=(Short4 &lhs, RValue<Short4> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<Short4> operator%=(Short4 &lhs, RValue<Short4> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<Short4> operator&=(Short4 &lhs, RValue<Short4> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Short4> operator|=(Short4 &lhs, RValue<Short4> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Short4> operator^=(Short4 &lhs, RValue<Short4> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<Short4> operator<<=(Short4 &lhs, unsigned char rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<Short4> operator>>=(Short4 &lhs, unsigned char rhs)
- {
- return lhs = lhs >> rhs;
- }
-
-// RValue<Short4> operator+(RValue<Short4> val)
-// {
-// return val;
-// }
-
- RValue<Short4> operator-(RValue<Short4> val)
- {
- return RValue<Short4>(Nucleus::createNeg(val.value));
- }
-
- RValue<Short4> operator~(RValue<Short4> val)
- {
- return RValue<Short4>(Nucleus::createNot(val.value));
- }
-
- RValue<Short4> RoundShort4(RValue<Float4> cast)
- {
- RValue<Int4> int4 = RoundInt(cast);
- return As<Short4>(PackSigned(int4, int4));
- }
-
RValue<Short4> Max(RValue<Short4> x, RValue<Short4> y)
{
Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v8i1);
@@ -3706,47 +2077,6 @@ namespace rr
}
}
- RValue<Int2> UnpackLow(RValue<Short4> x, RValue<Short4> y)
- {
- int shuffle[8] = {0, 8, 1, 9, 2, 10, 3, 11}; // Real type is v8i16
- return As<Int2>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Int2> UnpackHigh(RValue<Short4> x, RValue<Short4> y)
- {
- int shuffle[8] = {0, 8, 1, 9, 2, 10, 3, 11}; // Real type is v8i16
- auto lowHigh = RValue<Short8>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- return As<Int2>(Swizzle(As<Int4>(lowHigh), 0xEE));
- }
-
- RValue<Short4> Swizzle(RValue<Short4> x, unsigned char select)
- {
- // Real type is v8i16
- int shuffle[8] =
- {
- (select >> 0) & 0x03,
- (select >> 2) & 0x03,
- (select >> 4) & 0x03,
- (select >> 6) & 0x03,
- (select >> 0) & 0x03,
- (select >> 2) & 0x03,
- (select >> 4) & 0x03,
- (select >> 6) & 0x03,
- };
-
- return RValue<Short4>(Nucleus::createShuffleVector(x.value, x.value, shuffle));
- }
-
- RValue<Short4> Insert(RValue<Short4> val, RValue<Short> element, int i)
- {
- return RValue<Short4>(Nucleus::createInsertElement(val.value, element.value, i));
- }
-
- RValue<Short> Extract(RValue<Short4> val, int i)
- {
- return RValue<Short>(Nucleus::createExtractElement(val.value, Short::getType(), i));
- }
-
RValue<Short4> CmpGT(RValue<Short4> x, RValue<Short4> y)
{
return RValue<Short4>(createIntCompare(Ice::InstIcmp::Sgt, x.value, y.value));
@@ -3762,11 +2092,6 @@ namespace rr
return T(Type_v4i16);
}
- UShort4::UShort4(RValue<Int4> cast)
- {
- *this = Short4(cast);
- }
-
UShort4::UShort4(RValue<Float4> cast, bool saturate)
{
if(saturate)
@@ -3795,128 +2120,6 @@ namespace rr
}
}
- UShort4::UShort4(unsigned short xyzw)
- {
- int64_t constantVector[4] = {xyzw, xyzw, xyzw, xyzw};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- UShort4::UShort4(unsigned short x, unsigned short y, unsigned short z, unsigned short w)
- {
- int64_t constantVector[4] = {x, y, z, w};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- UShort4::UShort4(RValue<UShort4> rhs)
- {
- storeValue(rhs.value);
- }
-
- UShort4::UShort4(const UShort4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UShort4::UShort4(const Reference<UShort4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UShort4::UShort4(RValue<Short4> rhs)
- {
- storeValue(rhs.value);
- }
-
- UShort4::UShort4(const Short4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UShort4::UShort4(const Reference<Short4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<UShort4> UShort4::operator=(RValue<UShort4> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<UShort4> UShort4::operator=(const UShort4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort4>(value);
- }
-
- RValue<UShort4> UShort4::operator=(const Reference<UShort4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort4>(value);
- }
-
- RValue<UShort4> UShort4::operator=(RValue<Short4> rhs)
- {
- storeValue(rhs.value);
-
- return RValue<UShort4>(rhs);
- }
-
- RValue<UShort4> UShort4::operator=(const Short4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort4>(value);
- }
-
- RValue<UShort4> UShort4::operator=(const Reference<Short4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort4>(value);
- }
-
- RValue<UShort4> operator+(RValue<UShort4> lhs, RValue<UShort4> rhs)
- {
- return RValue<UShort4>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<UShort4> operator-(RValue<UShort4> lhs, RValue<UShort4> rhs)
- {
- return RValue<UShort4>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<UShort4> operator*(RValue<UShort4> lhs, RValue<UShort4> rhs)
- {
- return RValue<UShort4>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<UShort4> operator&(RValue<UShort4> lhs, RValue<UShort4> rhs)
- {
- return RValue<UShort4>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<UShort4> operator|(RValue<UShort4> lhs, RValue<UShort4> rhs)
- {
- return RValue<UShort4>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<UShort4> operator^(RValue<UShort4> lhs, RValue<UShort4> rhs)
- {
- return RValue<UShort4>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
RValue<UShort> Extract(RValue<UShort4> val, int i)
{
return RValue<UShort>(Nucleus::createExtractElement(val.value, UShort::getType(), i));
@@ -3963,21 +2166,6 @@ namespace rr
}
}
- RValue<UShort4> operator<<=(UShort4 &lhs, unsigned char rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<UShort4> operator>>=(UShort4 &lhs, unsigned char rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<UShort4> operator~(RValue<UShort4> val)
- {
- return RValue<UShort4>(Nucleus::createNot(val.value));
- }
-
RValue<UShort4> Max(RValue<UShort4> x, RValue<UShort4> y)
{
Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v8i1);
@@ -4087,55 +2275,61 @@ namespace rr
}
}
- RValue<UShort4> Average(RValue<UShort4> x, RValue<UShort4> y)
+ RValue<Int4> MulHigh(RValue<Int4> x, RValue<Int4> y)
{
- assert(false && "UNIMPLEMENTED"); return RValue<UShort4>(V(nullptr));
- }
+ // TODO: For x86, build an intrinsics version of this which uses shuffles + pmuludq.
- Type *UShort4::getType()
- {
- return T(Type_v4i16);
- }
+ // Scalarized implementation.
+ Int4 result;
+ result = Insert(result, Int((Long(Extract(x, 0)) * Long(Extract(y, 0))) >> Long(Int(32))), 0);
+ result = Insert(result, Int((Long(Extract(x, 1)) * Long(Extract(y, 1))) >> Long(Int(32))), 1);
+ result = Insert(result, Int((Long(Extract(x, 2)) * Long(Extract(y, 2))) >> Long(Int(32))), 2);
+ result = Insert(result, Int((Long(Extract(x, 3)) * Long(Extract(y, 3))) >> Long(Int(32))), 3);
- Short8::Short8(short c)
- {
- int64_t constantVector[8] = {c, c, c, c, c, c, c, c};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
+ return result;
}
- Short8::Short8(short c0, short c1, short c2, short c3, short c4, short c5, short c6, short c7)
+ RValue<UInt4> MulHigh(RValue<UInt4> x, RValue<UInt4> y)
{
- int64_t constantVector[8] = {c0, c1, c2, c3, c4, c5, c6, c7};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
+ // TODO: For x86, build an intrinsics version of this which uses shuffles + pmuludq.
- Short8::Short8(RValue<Short8> rhs)
- {
- storeValue(rhs.value);
- }
+ if(false) // Partial product based implementation.
+ {
+ auto xh = x >> 16;
+ auto yh = y >> 16;
+ auto xl = x & UInt4(0x0000FFFF);
+ auto yl = y & UInt4(0x0000FFFF);
+ auto xlyh = xl * yh;
+ auto xhyl = xh * yl;
+ auto xlyhh = xlyh >> 16;
+ auto xhylh = xhyl >> 16;
+ auto xlyhl = xlyh & UInt4(0x0000FFFF);
+ auto xhyll = xhyl & UInt4(0x0000FFFF);
+ auto xlylh = (xl * yl) >> 16;
+ auto oflow = (xlyhl + xhyll + xlylh) >> 16;
- Short8::Short8(const Reference<Short8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
+ return (xh * yh) + (xlyhh + xhylh) + oflow;
+ }
- Short8::Short8(RValue<Short4> lo, RValue<Short4> hi)
- {
- int shuffle[8] = {0, 1, 2, 3, 8, 9, 10, 11}; // Real type is v8i16
- Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
+ // Scalarized implementation.
+ Int4 result;
+ result = Insert(result, Int((Long(UInt(Extract(As<Int4>(x), 0))) * Long(UInt(Extract(As<Int4>(y), 0)))) >> Long(Int(32))), 0);
+ result = Insert(result, Int((Long(UInt(Extract(As<Int4>(x), 1))) * Long(UInt(Extract(As<Int4>(y), 1)))) >> Long(Int(32))), 1);
+ result = Insert(result, Int((Long(UInt(Extract(As<Int4>(x), 2))) * Long(UInt(Extract(As<Int4>(y), 2)))) >> Long(Int(32))), 2);
+ result = Insert(result, Int((Long(UInt(Extract(As<Int4>(x), 3))) * Long(UInt(Extract(As<Int4>(y), 3)))) >> Long(Int(32))), 3);
- storeValue(packed);
+ return As<UInt4>(result);
}
- RValue<Short8> operator+(RValue<Short8> lhs, RValue<Short8> rhs)
+ RValue<UShort4> Average(RValue<UShort4> x, RValue<UShort4> y)
{
- return RValue<Short8>(Nucleus::createAdd(lhs.value, rhs.value));
+ UNIMPLEMENTED("RValue<UShort4> Average(RValue<UShort4> x, RValue<UShort4> y)");
+ return UShort4(0);
}
- RValue<Short8> operator&(RValue<Short8> lhs, RValue<Short8> rhs)
+ Type *UShort4::getType()
{
- return RValue<Short8>(Nucleus::createAnd(lhs.value, rhs.value));
+ return T(Type_v4i16);
}
RValue<Short> Extract(RValue<Short8> val, int i)
@@ -4194,18 +2388,14 @@ namespace rr
RValue<Int4> MulAdd(RValue<Short8> x, RValue<Short8> y)
{
- assert(false && "UNIMPLEMENTED"); return RValue<Int4>(V(nullptr));
- }
-
- RValue<Int4> Abs(RValue<Int4> x)
- {
- auto negative = x >> 31;
- return (x ^ negative) - negative;
+ UNIMPLEMENTED("RValue<Int4> MulAdd(RValue<Short8> x, RValue<Short8> y)");
+ return Int4(0);
}
RValue<Short8> MulHigh(RValue<Short8> x, RValue<Short8> y)
{
- assert(false && "UNIMPLEMENTED"); return RValue<Short8>(V(nullptr));
+ UNIMPLEMENTED("RValue<Short8> MulHigh(RValue<Short8> x, RValue<Short8> y)");
+ return Short8(0);
}
Type *Short8::getType()
@@ -4213,65 +2403,6 @@ namespace rr
return T(Ice::IceType_v8i16);
}
- UShort8::UShort8(unsigned short c)
- {
- int64_t constantVector[8] = {c, c, c, c, c, c, c, c};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- UShort8::UShort8(unsigned short c0, unsigned short c1, unsigned short c2, unsigned short c3, unsigned short c4, unsigned short c5, unsigned short c6, unsigned short c7)
- {
- int64_t constantVector[8] = {c0, c1, c2, c3, c4, c5, c6, c7};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- UShort8::UShort8(RValue<UShort8> rhs)
- {
- storeValue(rhs.value);
- }
-
- UShort8::UShort8(const Reference<UShort8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UShort8::UShort8(RValue<UShort4> lo, RValue<UShort4> hi)
- {
- int shuffle[8] = {0, 1, 2, 3, 8, 9, 10, 11}; // Real type is v8i16
- Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
-
- storeValue(packed);
- }
-
- RValue<UShort8> UShort8::operator=(RValue<UShort8> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<UShort8> UShort8::operator=(const UShort8 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort8>(value);
- }
-
- RValue<UShort8> UShort8::operator=(const Reference<UShort8> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UShort8>(value);
- }
-
- RValue<UShort8> operator&(RValue<UShort8> lhs, RValue<UShort8> rhs)
- {
- return RValue<UShort8>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
RValue<UShort> Extract(RValue<UShort8> val, int i)
{
return RValue<UShort>(Nucleus::createExtractElement(val.value, UShort::getType(), i));
@@ -4326,40 +2457,22 @@ namespace rr
}
}
- RValue<UShort8> operator+(RValue<UShort8> lhs, RValue<UShort8> rhs)
- {
- return RValue<UShort8>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<UShort8> operator*(RValue<UShort8> lhs, RValue<UShort8> rhs)
- {
- return RValue<UShort8>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<UShort8> operator+=(UShort8 &lhs, RValue<UShort8> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<UShort8> operator~(RValue<UShort8> val)
- {
- return RValue<UShort8>(Nucleus::createNot(val.value));
- }
-
RValue<UShort8> Swizzle(RValue<UShort8> x, char select0, char select1, char select2, char select3, char select4, char select5, char select6, char select7)
{
- assert(false && "UNIMPLEMENTED"); return RValue<UShort8>(V(nullptr));
+ UNIMPLEMENTED("RValue<UShort8> Swizzle(RValue<UShort8> x, char select0, char select1, char select2, char select3, char select4, char select5, char select6, char select7)");
+ return UShort8(0);
}
RValue<UShort8> MulHigh(RValue<UShort8> x, RValue<UShort8> y)
{
- assert(false && "UNIMPLEMENTED"); return RValue<UShort8>(V(nullptr));
+ UNIMPLEMENTED("RValue<UShort8> MulHigh(RValue<UShort8> x, RValue<UShort8> y)");
+ return UShort8(0);
}
// FIXME: Implement as Shuffle(x, y, Select(i0, ..., i16)) and Shuffle(x, y, SELECT_PACK_REPEAT(element))
// RValue<UShort8> PackRepeat(RValue<Byte16> x, RValue<Byte16> y, int element)
// {
-// assert(false && "UNIMPLEMENTED"); return RValue<UShort8>(V(nullptr));
+// ASSERT(false && "UNIMPLEMENTED"); return RValue<UShort8>(V(nullptr));
// }
Type *UShort8::getType()
@@ -4367,263 +2480,6 @@ namespace rr
return T(Ice::IceType_v8i16);
}
- Int::Int(Argument<Int> argument)
- {
- storeValue(argument.value);
- }
-
- Int::Int(RValue<Byte> cast)
- {
- Value *integer = Nucleus::createZExt(cast.value, Int::getType());
-
- storeValue(integer);
- }
-
- Int::Int(RValue<SByte> cast)
- {
- Value *integer = Nucleus::createSExt(cast.value, Int::getType());
-
- storeValue(integer);
- }
-
- Int::Int(RValue<Short> cast)
- {
- Value *integer = Nucleus::createSExt(cast.value, Int::getType());
-
- storeValue(integer);
- }
-
- Int::Int(RValue<UShort> cast)
- {
- Value *integer = Nucleus::createZExt(cast.value, Int::getType());
-
- storeValue(integer);
- }
-
- Int::Int(RValue<Int2> cast)
- {
- *this = Extract(cast, 0);
- }
-
- Int::Int(RValue<Long> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, Int::getType());
-
- storeValue(integer);
- }
-
- Int::Int(RValue<Float> cast)
- {
- Value *integer = Nucleus::createFPToSI(cast.value, Int::getType());
-
- storeValue(integer);
- }
-
- Int::Int(int x)
- {
- storeValue(Nucleus::createConstantInt(x));
- }
-
- Int::Int(RValue<Int> rhs)
- {
- storeValue(rhs.value);
- }
-
- Int::Int(RValue<UInt> rhs)
- {
- storeValue(rhs.value);
- }
-
- Int::Int(const Int &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int::Int(const Reference<Int> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int::Int(const UInt &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int::Int(const Reference<UInt> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Int> Int::operator=(int rhs)
- {
- return RValue<Int>(storeValue(Nucleus::createConstantInt(rhs)));
- }
-
- RValue<Int> Int::operator=(RValue<Int> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Int> Int::operator=(RValue<UInt> rhs)
- {
- storeValue(rhs.value);
-
- return RValue<Int>(rhs);
- }
-
- RValue<Int> Int::operator=(const Int &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int>(value);
- }
-
- RValue<Int> Int::operator=(const Reference<Int> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int>(value);
- }
-
- RValue<Int> Int::operator=(const UInt &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int>(value);
- }
-
- RValue<Int> Int::operator=(const Reference<UInt> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int>(value);
- }
-
- RValue<Int> operator+(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Int> operator-(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<Int> operator*(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<Int> operator/(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createSDiv(lhs.value, rhs.value));
- }
-
- RValue<Int> operator%(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createSRem(lhs.value, rhs.value));
- }
-
- RValue<Int> operator&(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Int> operator|(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Int> operator^(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<Int> operator<<(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<Int> operator>>(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Int>(Nucleus::createAShr(lhs.value, rhs.value));
- }
-
- RValue<Int> operator+=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Int> operator-=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Int> operator*=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<Int> operator/=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<Int> operator%=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<Int> operator&=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Int> operator|=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Int> operator^=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<Int> operator<<=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<Int> operator>>=(Int &lhs, RValue<Int> rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<Int> operator+(RValue<Int> val)
- {
- return val;
- }
-
- RValue<Int> operator-(RValue<Int> val)
- {
- return RValue<Int>(Nucleus::createNeg(val.value));
- }
-
- RValue<Int> operator~(RValue<Int> val)
- {
- return RValue<Int>(Nucleus::createNot(val.value));
- }
-
RValue<Int> operator++(Int &val, int) // Post-increment
{
RValue<Int> res = val;
@@ -4650,51 +2506,6 @@ namespace rr
return val;
}
- RValue<Bool> operator<(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSLT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSLE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpSGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<Int> lhs, RValue<Int> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
- }
-
- RValue<Int> Max(RValue<Int> x, RValue<Int> y)
- {
- return IfThenElse(x > y, x, y);
- }
-
- RValue<Int> Min(RValue<Int> x, RValue<Int> y)
- {
- return IfThenElse(x < y, x, y);
- }
-
- RValue<Int> Clamp(RValue<Int> x, RValue<Int> min, RValue<Int> max)
- {
- return Min(Max(x, min), max);
- }
-
RValue<Int> RoundInt(RValue<Float> cast)
{
if(emulateIntrinsics || CPUID::ARM)
@@ -4720,102 +2531,11 @@ namespace rr
return T(Ice::IceType_i32);
}
- Long::Long(RValue<Int> cast)
- {
- Value *integer = Nucleus::createSExt(cast.value, Long::getType());
-
- storeValue(integer);
- }
-
- Long::Long(RValue<UInt> cast)
- {
- Value *integer = Nucleus::createZExt(cast.value, Long::getType());
-
- storeValue(integer);
- }
-
- Long::Long(RValue<Long> rhs)
- {
- storeValue(rhs.value);
- }
-
- RValue<Long> Long::operator=(int64_t rhs)
- {
- return RValue<Long>(storeValue(Nucleus::createConstantLong(rhs)));
- }
-
- RValue<Long> Long::operator=(RValue<Long> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Long> Long::operator=(const Long &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Long>(value);
- }
-
- RValue<Long> Long::operator=(const Reference<Long> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Long>(value);
- }
-
- RValue<Long> operator+(RValue<Long> lhs, RValue<Long> rhs)
- {
- return RValue<Long>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Long> operator-(RValue<Long> lhs, RValue<Long> rhs)
- {
- return RValue<Long>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<Long> operator+=(Long &lhs, RValue<Long> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Long> operator-=(Long &lhs, RValue<Long> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Long> AddAtomic(RValue<Pointer<Long> > x, RValue<Long> y)
- {
- return RValue<Long>(Nucleus::createAtomicAdd(x.value, y.value));
- }
-
Type *Long::getType()
{
return T(Ice::IceType_i64);
}
- UInt::UInt(Argument<UInt> argument)
- {
- storeValue(argument.value);
- }
-
- UInt::UInt(RValue<UShort> cast)
- {
- Value *integer = Nucleus::createZExt(cast.value, UInt::getType());
-
- storeValue(integer);
- }
-
- UInt::UInt(RValue<Long> cast)
- {
- Value *integer = Nucleus::createTrunc(cast.value, UInt::getType());
-
- storeValue(integer);
- }
-
UInt::UInt(RValue<Float> cast)
{
// Smallest positive value representable in UInt, but not in Int
@@ -4832,216 +2552,6 @@ namespace rr
Int(cast))).value);
}
- UInt::UInt(int x)
- {
- storeValue(Nucleus::createConstantInt(x));
- }
-
- UInt::UInt(unsigned int x)
- {
- storeValue(Nucleus::createConstantInt(x));
- }
-
- UInt::UInt(RValue<UInt> rhs)
- {
- storeValue(rhs.value);
- }
-
- UInt::UInt(RValue<Int> rhs)
- {
- storeValue(rhs.value);
- }
-
- UInt::UInt(const UInt &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt::UInt(const Reference<UInt> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt::UInt(const Int &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt::UInt(const Reference<Int> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<UInt> UInt::operator=(unsigned int rhs)
- {
- return RValue<UInt>(storeValue(Nucleus::createConstantInt(rhs)));
- }
-
- RValue<UInt> UInt::operator=(RValue<UInt> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<UInt> UInt::operator=(RValue<Int> rhs)
- {
- storeValue(rhs.value);
-
- return RValue<UInt>(rhs);
- }
-
- RValue<UInt> UInt::operator=(const UInt &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt>(value);
- }
-
- RValue<UInt> UInt::operator=(const Reference<UInt> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt>(value);
- }
-
- RValue<UInt> UInt::operator=(const Int &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt>(value);
- }
-
- RValue<UInt> UInt::operator=(const Reference<Int> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt>(value);
- }
-
- RValue<UInt> operator+(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator-(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator*(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator/(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createUDiv(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator%(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createURem(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator&(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator|(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator^(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator<<(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator>>(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<UInt>(Nucleus::createLShr(lhs.value, rhs.value));
- }
-
- RValue<UInt> operator+=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<UInt> operator-=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<UInt> operator*=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<UInt> operator/=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<UInt> operator%=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<UInt> operator&=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<UInt> operator|=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<UInt> operator^=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<UInt> operator<<=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<UInt> operator>>=(UInt &lhs, RValue<UInt> rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<UInt> operator+(RValue<UInt> val)
- {
- return val;
- }
-
- RValue<UInt> operator-(RValue<UInt> val)
- {
- return RValue<UInt>(Nucleus::createNeg(val.value));
- }
-
- RValue<UInt> operator~(RValue<UInt> val)
- {
- return RValue<UInt>(Nucleus::createNot(val.value));
- }
-
RValue<UInt> operator++(UInt &val, int) // Post-increment
{
RValue<UInt> res = val;
@@ -5068,54 +2578,9 @@ namespace rr
return val;
}
- RValue<UInt> Max(RValue<UInt> x, RValue<UInt> y)
- {
- return IfThenElse(x > y, x, y);
- }
-
- RValue<UInt> Min(RValue<UInt> x, RValue<UInt> y)
- {
- return IfThenElse(x < y, x, y);
- }
-
- RValue<UInt> Clamp(RValue<UInt> x, RValue<UInt> min, RValue<UInt> max)
- {
- return Min(Max(x, min), max);
- }
-
- RValue<Bool> operator<(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpULT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpULE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpUGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpUGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpNE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<UInt> lhs, RValue<UInt> rhs)
- {
- return RValue<Bool>(Nucleus::createICmpEQ(lhs.value, rhs.value));
- }
-
// RValue<UInt> RoundUInt(RValue<Float> cast)
// {
-// assert(false && "UNIMPLEMENTED"); return RValue<UInt>(V(nullptr));
+// ASSERT(false && "UNIMPLEMENTED"); return RValue<UInt>(V(nullptr));
// }
Type *UInt::getType()
@@ -5137,105 +2602,6 @@ namespace rr
// storeValue(replicate);
// }
- Int2::Int2(RValue<Int4> cast)
- {
- storeValue(Nucleus::createBitCast(cast.value, getType()));
- }
-
- Int2::Int2(int x, int y)
- {
- int64_t constantVector[2] = {x, y};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Int2::Int2(RValue<Int2> rhs)
- {
- storeValue(rhs.value);
- }
-
- Int2::Int2(const Int2 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int2::Int2(const Reference<Int2> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int2::Int2(RValue<Int> lo, RValue<Int> hi)
- {
- int shuffle[4] = {0, 4, 1, 5};
- Value *packed = Nucleus::createShuffleVector(Int4(lo).loadValue(), Int4(hi).loadValue(), shuffle);
-
- storeValue(Nucleus::createBitCast(packed, Int2::getType()));
- }
-
- RValue<Int2> Int2::operator=(RValue<Int2> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Int2> Int2::operator=(const Int2 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int2>(value);
- }
-
- RValue<Int2> Int2::operator=(const Reference<Int2> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int2>(value);
- }
-
- RValue<Int2> operator+(RValue<Int2> lhs, RValue<Int2> rhs)
- {
- return RValue<Int2>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Int2> operator-(RValue<Int2> lhs, RValue<Int2> rhs)
- {
- return RValue<Int2>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
-// RValue<Int2> operator*(RValue<Int2> lhs, RValue<Int2> rhs)
-// {
-// return RValue<Int2>(Nucleus::createMul(lhs.value, rhs.value));
-// }
-
-// RValue<Int2> operator/(RValue<Int2> lhs, RValue<Int2> rhs)
-// {
-// return RValue<Int2>(Nucleus::createSDiv(lhs.value, rhs.value));
-// }
-
-// RValue<Int2> operator%(RValue<Int2> lhs, RValue<Int2> rhs)
-// {
-// return RValue<Int2>(Nucleus::createSRem(lhs.value, rhs.value));
-// }
-
- RValue<Int2> operator&(RValue<Int2> lhs, RValue<Int2> rhs)
- {
- return RValue<Int2>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Int2> operator|(RValue<Int2> lhs, RValue<Int2> rhs)
- {
- return RValue<Int2>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Int2> operator^(RValue<Int2> lhs, RValue<Int2> rhs)
- {
- return RValue<Int2>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
RValue<Int2> operator<<(RValue<Int2> lhs, unsigned char rhs)
{
if(emulateIntrinsics)
@@ -5268,185 +2634,11 @@ namespace rr
}
}
- RValue<Int2> operator+=(Int2 &lhs, RValue<Int2> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Int2> operator-=(Int2 &lhs, RValue<Int2> rhs)
- {
- return lhs = lhs - rhs;
- }
-
-// RValue<Int2> operator*=(Int2 &lhs, RValue<Int2> rhs)
-// {
-// return lhs = lhs * rhs;
-// }
-
-// RValue<Int2> operator/=(Int2 &lhs, RValue<Int2> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<Int2> operator%=(Int2 &lhs, RValue<Int2> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<Int2> operator&=(Int2 &lhs, RValue<Int2> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Int2> operator|=(Int2 &lhs, RValue<Int2> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Int2> operator^=(Int2 &lhs, RValue<Int2> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<Int2> operator<<=(Int2 &lhs, unsigned char rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<Int2> operator>>=(Int2 &lhs, unsigned char rhs)
- {
- return lhs = lhs >> rhs;
- }
-
-// RValue<Int2> operator+(RValue<Int2> val)
-// {
-// return val;
-// }
-
-// RValue<Int2> operator-(RValue<Int2> val)
-// {
-// return RValue<Int2>(Nucleus::createNeg(val.value));
-// }
-
- RValue<Int2> operator~(RValue<Int2> val)
- {
- return RValue<Int2>(Nucleus::createNot(val.value));
- }
-
- RValue<Short4> UnpackLow(RValue<Int2> x, RValue<Int2> y)
- {
- int shuffle[4] = {0, 4, 1, 5}; // Real type is v4i32
- return As<Short4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Short4> UnpackHigh(RValue<Int2> x, RValue<Int2> y)
- {
- int shuffle[4] = {0, 4, 1, 5}; // Real type is v4i32
- auto lowHigh = RValue<Int4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- return As<Short4>(Swizzle(lowHigh, 0xEE));
- }
-
- RValue<Int> Extract(RValue<Int2> val, int i)
- {
- return RValue<Int>(Nucleus::createExtractElement(val.value, Int::getType(), i));
- }
-
- RValue<Int2> Insert(RValue<Int2> val, RValue<Int> element, int i)
- {
- return RValue<Int2>(Nucleus::createInsertElement(val.value, element.value, i));
- }
-
Type *Int2::getType()
{
return T(Type_v2i32);
}
- UInt2::UInt2(unsigned int x, unsigned int y)
- {
- int64_t constantVector[2] = {x, y};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- UInt2::UInt2(RValue<UInt2> rhs)
- {
- storeValue(rhs.value);
- }
-
- UInt2::UInt2(const UInt2 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt2::UInt2(const Reference<UInt2> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<UInt2> UInt2::operator=(RValue<UInt2> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<UInt2> UInt2::operator=(const UInt2 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt2>(value);
- }
-
- RValue<UInt2> UInt2::operator=(const Reference<UInt2> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt2>(value);
- }
-
- RValue<UInt2> operator+(RValue<UInt2> lhs, RValue<UInt2> rhs)
- {
- return RValue<UInt2>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<UInt2> operator-(RValue<UInt2> lhs, RValue<UInt2> rhs)
- {
- return RValue<UInt2>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
-// RValue<UInt2> operator*(RValue<UInt2> lhs, RValue<UInt2> rhs)
-// {
-// return RValue<UInt2>(Nucleus::createMul(lhs.value, rhs.value));
-// }
-
-// RValue<UInt2> operator/(RValue<UInt2> lhs, RValue<UInt2> rhs)
-// {
-// return RValue<UInt2>(Nucleus::createUDiv(lhs.value, rhs.value));
-// }
-
-// RValue<UInt2> operator%(RValue<UInt2> lhs, RValue<UInt2> rhs)
-// {
-// return RValue<UInt2>(Nucleus::createURem(lhs.value, rhs.value));
-// }
-
- RValue<UInt2> operator&(RValue<UInt2> lhs, RValue<UInt2> rhs)
- {
- return RValue<UInt2>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<UInt2> operator|(RValue<UInt2> lhs, RValue<UInt2> rhs)
- {
- return RValue<UInt2>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<UInt2> operator^(RValue<UInt2> lhs, RValue<UInt2> rhs)
- {
- return RValue<UInt2>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
RValue<UInt> Extract(RValue<UInt2> val, int i)
{
return RValue<UInt>(Nucleus::createExtractElement(val.value, UInt::getType(), i));
@@ -5489,80 +2681,11 @@ namespace rr
}
}
- RValue<UInt2> operator+=(UInt2 &lhs, RValue<UInt2> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<UInt2> operator-=(UInt2 &lhs, RValue<UInt2> rhs)
- {
- return lhs = lhs - rhs;
- }
-
-// RValue<UInt2> operator*=(UInt2 &lhs, RValue<UInt2> rhs)
-// {
-// return lhs = lhs * rhs;
-// }
-
-// RValue<UInt2> operator/=(UInt2 &lhs, RValue<UInt2> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<UInt2> operator%=(UInt2 &lhs, RValue<UInt2> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<UInt2> operator&=(UInt2 &lhs, RValue<UInt2> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<UInt2> operator|=(UInt2 &lhs, RValue<UInt2> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<UInt2> operator^=(UInt2 &lhs, RValue<UInt2> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<UInt2> operator<<=(UInt2 &lhs, unsigned char rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<UInt2> operator>>=(UInt2 &lhs, unsigned char rhs)
- {
- return lhs = lhs >> rhs;
- }
-
-// RValue<UInt2> operator+(RValue<UInt2> val)
-// {
-// return val;
-// }
-
-// RValue<UInt2> operator-(RValue<UInt2> val)
-// {
-// return RValue<UInt2>(Nucleus::createNeg(val.value));
-// }
-
- RValue<UInt2> operator~(RValue<UInt2> val)
- {
- return RValue<UInt2>(Nucleus::createNot(val.value));
- }
-
Type *UInt2::getType()
{
return T(Type_v2i32);
}
- Int4::Int4() : XYZW(this)
- {
- }
-
Int4::Int4(RValue<Byte4> cast) : XYZW(this)
{
Value *x = Nucleus::createBitCast(cast.value, Int::getType());
@@ -5597,13 +2720,6 @@ namespace rr
*this = As<Int4>(e) >> 24;
}
- Int4::Int4(RValue<Float4> cast) : XYZW(this)
- {
- Value *xyzw = Nucleus::createFPToSI(cast.value, Int4::getType());
-
- storeValue(xyzw);
- }
-
Int4::Int4(RValue<Short4> cast) : XYZW(this)
{
int swizzle[8] = {0, 0, 1, 1, 2, 2, 3, 3};
@@ -5620,74 +2736,6 @@ namespace rr
storeValue(d);
}
- Int4::Int4(int xyzw) : XYZW(this)
- {
- constant(xyzw, xyzw, xyzw, xyzw);
- }
-
- Int4::Int4(int x, int yzw) : XYZW(this)
- {
- constant(x, yzw, yzw, yzw);
- }
-
- Int4::Int4(int x, int y, int zw) : XYZW(this)
- {
- constant(x, y, zw, zw);
- }
-
- Int4::Int4(int x, int y, int z, int w) : XYZW(this)
- {
- constant(x, y, z, w);
- }
-
- void Int4::constant(int x, int y, int z, int w)
- {
- int64_t constantVector[4] = {x, y, z, w};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Int4::Int4(RValue<Int4> rhs) : XYZW(this)
- {
- storeValue(rhs.value);
- }
-
- Int4::Int4(const Int4 &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int4::Int4(const Reference<Int4> &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int4::Int4(RValue<UInt4> rhs) : XYZW(this)
- {
- storeValue(rhs.value);
- }
-
- Int4::Int4(const UInt4 &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int4::Int4(const Reference<UInt4> &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Int4::Int4(RValue<Int2> lo, RValue<Int2> hi) : XYZW(this)
- {
- int shuffle[4] = {0, 1, 4, 5}; // Real type is v4i32
- Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
-
- storeValue(packed);
- }
-
Int4::Int4(RValue<Int> rhs) : XYZW(this)
{
Value *vector = Nucleus::createBitCast(rhs.value, Int4::getType());
@@ -5698,79 +2746,6 @@ namespace rr
storeValue(replicate);
}
- Int4::Int4(const Int &rhs) : XYZW(this)
- {
- *this = RValue<Int>(rhs.loadValue());
- }
-
- Int4::Int4(const Reference<Int> &rhs) : XYZW(this)
- {
- *this = RValue<Int>(rhs.loadValue());
- }
-
- RValue<Int4> Int4::operator=(RValue<Int4> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Int4> Int4::operator=(const Int4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int4>(value);
- }
-
- RValue<Int4> Int4::operator=(const Reference<Int4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Int4>(value);
- }
-
- RValue<Int4> operator+(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator-(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator*(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator/(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createSDiv(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator%(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createSRem(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator&(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator|(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator^(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
RValue<Int4> operator<<(RValue<Int4> lhs, unsigned char rhs)
{
if(emulateIntrinsics)
@@ -5807,81 +2782,6 @@ namespace rr
}
}
- RValue<Int4> operator<<(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator>>(RValue<Int4> lhs, RValue<Int4> rhs)
- {
- return RValue<Int4>(Nucleus::createAShr(lhs.value, rhs.value));
- }
-
- RValue<Int4> operator+=(Int4 &lhs, RValue<Int4> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Int4> operator-=(Int4 &lhs, RValue<Int4> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Int4> operator*=(Int4 &lhs, RValue<Int4> rhs)
- {
- return lhs = lhs * rhs;
- }
-
-// RValue<Int4> operator/=(Int4 &lhs, RValue<Int4> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<Int4> operator%=(Int4 &lhs, RValue<Int4> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<Int4> operator&=(Int4 &lhs, RValue<Int4> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<Int4> operator|=(Int4 &lhs, RValue<Int4> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<Int4> operator^=(Int4 &lhs, RValue<Int4> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<Int4> operator<<=(Int4 &lhs, unsigned char rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<Int4> operator>>=(Int4 &lhs, unsigned char rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<Int4> operator+(RValue<Int4> val)
- {
- return val;
- }
-
- RValue<Int4> operator-(RValue<Int4> val)
- {
- return RValue<Int4>(Nucleus::createNeg(val.value));
- }
-
- RValue<Int4> operator~(RValue<Int4> val)
- {
- return RValue<Int4>(Nucleus::createNot(val.value));
- }
-
RValue<Int4> CmpEQ(RValue<Int4> x, RValue<Int4> y)
{
return RValue<Int4>(Nucleus::createICmpEQ(x.value, y.value));
@@ -6014,16 +2914,6 @@ namespace rr
}
}
- RValue<Int> Extract(RValue<Int4> x, int i)
- {
- return RValue<Int>(Nucleus::createExtractElement(x.value, Int::getType(), i));
- }
-
- RValue<Int4> Insert(RValue<Int4> x, RValue<Int> element, int i)
- {
- return RValue<Int4>(Nucleus::createInsertElement(x.value, element.value, i));
- }
-
RValue<Int> SignMask(RValue<Int4> x)
{
if(emulateIntrinsics || CPUID::ARM)
@@ -6044,20 +2934,11 @@ namespace rr
}
}
- RValue<Int4> Swizzle(RValue<Int4> x, unsigned char select)
- {
- return RValue<Int4>(createSwizzle4(x.value, select));
- }
-
Type *Int4::getType()
{
return T(Ice::IceType_v4i32);
}
- UInt4::UInt4() : XYZW(this)
- {
- }
-
UInt4::UInt4(RValue<Float4> cast) : XYZW(this)
{
// Smallest positive value representable in UInt, but not in Int
@@ -6074,147 +2955,6 @@ namespace rr
storeValue((~(As<Int4>(cast) >> 31) & uiValue).value);
}
- UInt4::UInt4(int xyzw) : XYZW(this)
- {
- constant(xyzw, xyzw, xyzw, xyzw);
- }
-
- UInt4::UInt4(int x, int yzw) : XYZW(this)
- {
- constant(x, yzw, yzw, yzw);
- }
-
- UInt4::UInt4(int x, int y, int zw) : XYZW(this)
- {
- constant(x, y, zw, zw);
- }
-
- UInt4::UInt4(int x, int y, int z, int w) : XYZW(this)
- {
- constant(x, y, z, w);
- }
-
- void UInt4::constant(int x, int y, int z, int w)
- {
- int64_t constantVector[4] = {x, y, z, w};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- UInt4::UInt4(RValue<UInt4> rhs) : XYZW(this)
- {
- storeValue(rhs.value);
- }
-
- UInt4::UInt4(const UInt4 &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt4::UInt4(const Reference<UInt4> &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt4::UInt4(RValue<Int4> rhs) : XYZW(this)
- {
- storeValue(rhs.value);
- }
-
- UInt4::UInt4(const Int4 &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt4::UInt4(const Reference<Int4> &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- UInt4::UInt4(RValue<UInt2> lo, RValue<UInt2> hi) : XYZW(this)
- {
- int shuffle[4] = {0, 1, 4, 5}; // Real type is v4i32
- Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
-
- storeValue(packed);
- }
-
- RValue<UInt4> UInt4::operator=(RValue<UInt4> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<UInt4> UInt4::operator=(const UInt4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt4>(value);
- }
-
- RValue<UInt4> UInt4::operator=(const Reference<UInt4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<UInt4>(value);
- }
-
- RValue<UInt4> operator+(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createAdd(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator-(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createSub(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator*(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createMul(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator/(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createUDiv(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator%(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createURem(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator&(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createAnd(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator|(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createOr(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator^(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createXor(lhs.value, rhs.value));
- }
-
- RValue<UInt> Extract(RValue<UInt4> x, int i)
- {
- return RValue<UInt>(Nucleus::createExtractElement(x.value, UInt::getType(), i));
- }
-
- RValue<UInt4> Insert(RValue<UInt4> x, RValue<UInt> element, int i)
- {
- return RValue<UInt4>(Nucleus::createInsertElement(x.value, element.value, i));
- }
-
RValue<UInt4> operator<<(RValue<UInt4> lhs, unsigned char rhs)
{
if(emulateIntrinsics)
@@ -6251,81 +2991,6 @@ namespace rr
}
}
- RValue<UInt4> operator<<(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createShl(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator>>(RValue<UInt4> lhs, RValue<UInt4> rhs)
- {
- return RValue<UInt4>(Nucleus::createLShr(lhs.value, rhs.value));
- }
-
- RValue<UInt4> operator+=(UInt4 &lhs, RValue<UInt4> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<UInt4> operator-=(UInt4 &lhs, RValue<UInt4> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<UInt4> operator*=(UInt4 &lhs, RValue<UInt4> rhs)
- {
- return lhs = lhs * rhs;
- }
-
-// RValue<UInt4> operator/=(UInt4 &lhs, RValue<UInt4> rhs)
-// {
-// return lhs = lhs / rhs;
-// }
-
-// RValue<UInt4> operator%=(UInt4 &lhs, RValue<UInt4> rhs)
-// {
-// return lhs = lhs % rhs;
-// }
-
- RValue<UInt4> operator&=(UInt4 &lhs, RValue<UInt4> rhs)
- {
- return lhs = lhs & rhs;
- }
-
- RValue<UInt4> operator|=(UInt4 &lhs, RValue<UInt4> rhs)
- {
- return lhs = lhs | rhs;
- }
-
- RValue<UInt4> operator^=(UInt4 &lhs, RValue<UInt4> rhs)
- {
- return lhs = lhs ^ rhs;
- }
-
- RValue<UInt4> operator<<=(UInt4 &lhs, unsigned char rhs)
- {
- return lhs = lhs << rhs;
- }
-
- RValue<UInt4> operator>>=(UInt4 &lhs, unsigned char rhs)
- {
- return lhs = lhs >> rhs;
- }
-
- RValue<UInt4> operator+(RValue<UInt4> val)
- {
- return val;
- }
-
- RValue<UInt4> operator-(RValue<UInt4> val)
- {
- return RValue<UInt4>(Nucleus::createNeg(val.value));
- }
-
- RValue<UInt4> operator~(RValue<UInt4> val)
- {
- return RValue<UInt4>(Nucleus::createNot(val.value));
- }
-
RValue<UInt4> CmpEQ(RValue<UInt4> x, RValue<UInt4> y)
{
return RValue<UInt4>(Nucleus::createICmpEQ(x.value, y.value));
@@ -6387,224 +3052,11 @@ namespace rr
return T(Ice::IceType_v4i32);
}
- Half::Half(RValue<Float> cast)
- {
- UInt fp32i = As<UInt>(cast);
- UInt abs = fp32i & 0x7FFFFFFF;
- UShort fp16i((fp32i & 0x80000000) >> 16); // sign
-
- If(abs > 0x47FFEFFF) // Infinity
- {
- fp16i |= UShort(0x7FFF);
- }
- Else
- {
- If(abs < 0x38800000) // Denormal
- {
- Int mantissa = (abs & 0x007FFFFF) | 0x00800000;
- Int e = 113 - (abs >> 23);
- abs = IfThenElse(e < 24, mantissa >> e, Int(0));
- fp16i |= UShort((abs + 0x00000FFF + ((abs >> 13) & 1)) >> 13);
- }
- Else
- {
- fp16i |= UShort((abs + 0xC8000000 + 0x00000FFF + ((abs >> 13) & 1)) >> 13);
- }
- }
-
- storeValue(fp16i.loadValue());
- }
-
Type *Half::getType()
{
return T(Ice::IceType_i16);
}
- Float::Float(RValue<Int> cast)
- {
- Value *integer = Nucleus::createSIToFP(cast.value, Float::getType());
-
- storeValue(integer);
- }
-
- Float::Float(RValue<UInt> cast)
- {
- RValue<Float> result = Float(Int(cast & UInt(0x7FFFFFFF))) +
- As<Float>((As<Int>(cast) >> 31) & As<Int>(Float(0x80000000u)));
-
- storeValue(result.value);
- }
-
- Float::Float(RValue<Half> cast)
- {
- Int fp16i(As<UShort>(cast));
-
- Int s = (fp16i >> 15) & 0x00000001;
- Int e = (fp16i >> 10) & 0x0000001F;
- Int m = fp16i & 0x000003FF;
-
- UInt fp32i(s << 31);
- If(e == 0)
- {
- If(m != 0)
- {
- While((m & 0x00000400) == 0)
- {
- m <<= 1;
- e -= 1;
- }
-
- fp32i |= As<UInt>(((e + (127 - 15) + 1) << 23) | ((m & ~0x00000400) << 13));
- }
- }
- Else
- {
- fp32i |= As<UInt>(((e + (127 - 15)) << 23) | (m << 13));
- }
-
- storeValue(As<Float>(fp32i).value);
- }
-
- Float::Float(float x)
- {
- storeValue(Nucleus::createConstantFloat(x));
- }
-
- Float::Float(RValue<Float> rhs)
- {
- storeValue(rhs.value);
- }
-
- Float::Float(const Float &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Float::Float(const Reference<Float> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- RValue<Float> Float::operator=(RValue<Float> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Float> Float::operator=(const Float &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Float>(value);
- }
-
- RValue<Float> Float::operator=(const Reference<Float> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Float>(value);
- }
-
- RValue<Float> operator+(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Float>(Nucleus::createFAdd(lhs.value, rhs.value));
- }
-
- RValue<Float> operator-(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Float>(Nucleus::createFSub(lhs.value, rhs.value));
- }
-
- RValue<Float> operator*(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Float>(Nucleus::createFMul(lhs.value, rhs.value));
- }
-
- RValue<Float> operator/(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Float>(Nucleus::createFDiv(lhs.value, rhs.value));
- }
-
- RValue<Float> operator+=(Float &lhs, RValue<Float> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Float> operator-=(Float &lhs, RValue<Float> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Float> operator*=(Float &lhs, RValue<Float> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<Float> operator/=(Float &lhs, RValue<Float> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<Float> operator+(RValue<Float> val)
- {
- return val;
- }
-
- RValue<Float> operator-(RValue<Float> val)
- {
- return RValue<Float>(Nucleus::createFNeg(val.value));
- }
-
- RValue<Bool> operator<(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Bool>(Nucleus::createFCmpOLT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator<=(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Bool>(Nucleus::createFCmpOLE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Bool>(Nucleus::createFCmpOGT(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator>=(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Bool>(Nucleus::createFCmpOGE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator!=(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Bool>(Nucleus::createFCmpONE(lhs.value, rhs.value));
- }
-
- RValue<Bool> operator==(RValue<Float> lhs, RValue<Float> rhs)
- {
- return RValue<Bool>(Nucleus::createFCmpOEQ(lhs.value, rhs.value));
- }
-
- RValue<Float> Abs(RValue<Float> x)
- {
- return IfThenElse(x > 0.0f, x, -x);
- }
-
- RValue<Float> Max(RValue<Float> x, RValue<Float> y)
- {
- return IfThenElse(x > y, x, y);
- }
-
- RValue<Float> Min(RValue<Float> x, RValue<Float> y)
- {
- return IfThenElse(x < y, x, y);
- }
-
RValue<Float> Rcp_pp(RValue<Float> x, bool exactAtPow2)
{
return 1.0f / x;
@@ -6657,106 +3109,11 @@ namespace rr
return T(Ice::IceType_f32);
}
- Float2::Float2(RValue<Float4> cast)
- {
- storeValue(Nucleus::createBitCast(cast.value, getType()));
- }
-
Type *Float2::getType()
{
return T(Type_v2f32);
}
- Float4::Float4(RValue<Byte4> cast) : XYZW(this)
- {
- Value *a = Int4(cast).loadValue();
- Value *xyzw = Nucleus::createSIToFP(a, Float4::getType());
-
- storeValue(xyzw);
- }
-
- Float4::Float4(RValue<SByte4> cast) : XYZW(this)
- {
- Value *a = Int4(cast).loadValue();
- Value *xyzw = Nucleus::createSIToFP(a, Float4::getType());
-
- storeValue(xyzw);
- }
-
- Float4::Float4(RValue<Short4> cast) : XYZW(this)
- {
- Int4 c(cast);
- storeValue(Nucleus::createSIToFP(RValue<Int4>(c).value, Float4::getType()));
- }
-
- Float4::Float4(RValue<UShort4> cast) : XYZW(this)
- {
- Int4 c(cast);
- storeValue(Nucleus::createSIToFP(RValue<Int4>(c).value, Float4::getType()));
- }
-
- Float4::Float4(RValue<Int4> cast) : XYZW(this)
- {
- Value *xyzw = Nucleus::createSIToFP(cast.value, Float4::getType());
-
- storeValue(xyzw);
- }
-
- Float4::Float4(RValue<UInt4> cast) : XYZW(this)
- {
- RValue<Float4> result = Float4(Int4(cast & UInt4(0x7FFFFFFF))) +
- As<Float4>((As<Int4>(cast) >> 31) & As<Int4>(Float4(0x80000000u)));
-
- storeValue(result.value);
- }
-
- Float4::Float4() : XYZW(this)
- {
- }
-
- Float4::Float4(float xyzw) : XYZW(this)
- {
- constant(xyzw, xyzw, xyzw, xyzw);
- }
-
- Float4::Float4(float x, float yzw) : XYZW(this)
- {
- constant(x, yzw, yzw, yzw);
- }
-
- Float4::Float4(float x, float y, float zw) : XYZW(this)
- {
- constant(x, y, zw, zw);
- }
-
- Float4::Float4(float x, float y, float z, float w) : XYZW(this)
- {
- constant(x, y, z, w);
- }
-
- void Float4::constant(float x, float y, float z, float w)
- {
- double constantVector[4] = {x, y, z, w};
- storeValue(Nucleus::createConstantVector(constantVector, getType()));
- }
-
- Float4::Float4(RValue<Float4> rhs) : XYZW(this)
- {
- storeValue(rhs.value);
- }
-
- Float4::Float4(const Float4 &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
- Float4::Float4(const Reference<Float4> &rhs) : XYZW(this)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
- }
-
Float4::Float4(RValue<Float> rhs) : XYZW(this)
{
Value *vector = Nucleus::createBitCast(rhs.value, Float4::getType());
@@ -6767,128 +3124,6 @@ namespace rr
storeValue(replicate);
}
- Float4::Float4(const Float &rhs) : XYZW(this)
- {
- *this = RValue<Float>(rhs.loadValue());
- }
-
- Float4::Float4(const Reference<Float> &rhs) : XYZW(this)
- {
- *this = RValue<Float>(rhs.loadValue());
- }
-
- RValue<Float4> Float4::operator=(float x)
- {
- return *this = Float4(x, x, x, x);
- }
-
- RValue<Float4> Float4::operator=(RValue<Float4> rhs)
- {
- storeValue(rhs.value);
-
- return rhs;
- }
-
- RValue<Float4> Float4::operator=(const Float4 &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Float4>(value);
- }
-
- RValue<Float4> Float4::operator=(const Reference<Float4> &rhs)
- {
- Value *value = rhs.loadValue();
- storeValue(value);
-
- return RValue<Float4>(value);
- }
-
- RValue<Float4> Float4::operator=(RValue<Float> rhs)
- {
- return *this = Float4(rhs);
- }
-
- RValue<Float4> Float4::operator=(const Float &rhs)
- {
- return *this = Float4(rhs);
- }
-
- RValue<Float4> Float4::operator=(const Reference<Float> &rhs)
- {
- return *this = Float4(rhs);
- }
-
- RValue<Float4> operator+(RValue<Float4> lhs, RValue<Float4> rhs)
- {
- return RValue<Float4>(Nucleus::createFAdd(lhs.value, rhs.value));
- }
-
- RValue<Float4> operator-(RValue<Float4> lhs, RValue<Float4> rhs)
- {
- return RValue<Float4>(Nucleus::createFSub(lhs.value, rhs.value));
- }
-
- RValue<Float4> operator*(RValue<Float4> lhs, RValue<Float4> rhs)
- {
- return RValue<Float4>(Nucleus::createFMul(lhs.value, rhs.value));
- }
-
- RValue<Float4> operator/(RValue<Float4> lhs, RValue<Float4> rhs)
- {
- return RValue<Float4>(Nucleus::createFDiv(lhs.value, rhs.value));
- }
-
- RValue<Float4> operator%(RValue<Float4> lhs, RValue<Float4> rhs)
- {
- return RValue<Float4>(Nucleus::createFRem(lhs.value, rhs.value));
- }
-
- RValue<Float4> operator+=(Float4 &lhs, RValue<Float4> rhs)
- {
- return lhs = lhs + rhs;
- }
-
- RValue<Float4> operator-=(Float4 &lhs, RValue<Float4> rhs)
- {
- return lhs = lhs - rhs;
- }
-
- RValue<Float4> operator*=(Float4 &lhs, RValue<Float4> rhs)
- {
- return lhs = lhs * rhs;
- }
-
- RValue<Float4> operator/=(Float4 &lhs, RValue<Float4> rhs)
- {
- return lhs = lhs / rhs;
- }
-
- RValue<Float4> operator%=(Float4 &lhs, RValue<Float4> rhs)
- {
- return lhs = lhs % rhs;
- }
-
- RValue<Float4> operator+(RValue<Float4> val)
- {
- return val;
- }
-
- RValue<Float4> operator-(RValue<Float4> val)
- {
- return RValue<Float4>(Nucleus::createFNeg(val.value));
- }
-
- RValue<Float4> Abs(RValue<Float4> x)
- {
- Value *vector = Nucleus::createBitCast(x.value, Int4::getType());
- int64_t constantVector[4] = {0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF};
- Value *result = Nucleus::createAnd(vector, V(Nucleus::createConstantVector(constantVector, Int4::getType())));
-
- return As<Float4>(result);
- }
-
RValue<Float4> Max(RValue<Float4> x, RValue<Float4> y)
{
Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v4i1);
@@ -6950,55 +3185,6 @@ namespace rr
}
}
- RValue<Float4> Insert(RValue<Float4> x, RValue<Float> element, int i)
- {
- return RValue<Float4>(Nucleus::createInsertElement(x.value, element.value, i));
- }
-
- RValue<Float> Extract(RValue<Float4> x, int i)
- {
- return RValue<Float>(Nucleus::createExtractElement(x.value, Float::getType(), i));
- }
-
- RValue<Float4> Swizzle(RValue<Float4> x, unsigned char select)
- {
- return RValue<Float4>(createSwizzle4(x.value, select));
- }
-
- RValue<Float4> ShuffleLowHigh(RValue<Float4> x, RValue<Float4> y, unsigned char imm)
- {
- int shuffle[4] =
- {
- ((imm >> 0) & 0x03) + 0,
- ((imm >> 2) & 0x03) + 0,
- ((imm >> 4) & 0x03) + 4,
- ((imm >> 6) & 0x03) + 4,
- };
-
- return RValue<Float4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Float4> UnpackLow(RValue<Float4> x, RValue<Float4> y)
- {
- int shuffle[4] = {0, 4, 1, 5};
- return RValue<Float4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Float4> UnpackHigh(RValue<Float4> x, RValue<Float4> y)
- {
- int shuffle[4] = {2, 6, 3, 7};
- return RValue<Float4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
- }
-
- RValue<Float4> Mask(Float4 &lhs, RValue<Float4> rhs, unsigned char select)
- {
- Value *vector = lhs.loadValue();
- Value *result = createMask4(vector, rhs.value, select);
- lhs.storeValue(result);
-
- return RValue<Float4>(result);
- }
-
RValue<Int> SignMask(RValue<Float4> x)
{
if(emulateIntrinsics || CPUID::ARM)
@@ -7079,16 +3265,6 @@ namespace rr
return RValue<Int4>(Nucleus::createFCmpUGT(x.value, y.value));
}
- RValue<Int4> IsInf(RValue<Float4> x)
- {
- return CmpEQ(As<Int4>(x) & Int4(0x7FFFFFFF), Int4(0x7F800000));
- }
-
- RValue<Int4> IsNan(RValue<Float4> x)
- {
- return ~CmpEQ(x, x);
- }
-
RValue<Float4> Round(RValue<Float4> x)
{
if(emulateIntrinsics || CPUID::ARM)
@@ -7199,88 +3375,58 @@ namespace rr
return T(Ice::IceType_v4f32);
}
- RValue<Pointer<Byte>> operator+(RValue<Pointer<Byte>> lhs, int offset)
- {
- return lhs + RValue<Int>(Nucleus::createConstantInt(offset));
- }
-
- RValue<Pointer<Byte>> operator+(RValue<Pointer<Byte>> lhs, RValue<Int> offset)
- {
- return RValue<Pointer<Byte>>(Nucleus::createGEP(lhs.value, Byte::getType(), offset.value, false));
- }
-
- RValue<Pointer<Byte>> operator+(RValue<Pointer<Byte>> lhs, RValue<UInt> offset)
- {
- return RValue<Pointer<Byte>>(Nucleus::createGEP(lhs.value, Byte::getType(), offset.value, true));
- }
-
- RValue<Pointer<Byte>> operator+=(Pointer<Byte> &lhs, int offset)
- {
- return lhs = lhs + offset;
- }
-
- RValue<Pointer<Byte>> operator+=(Pointer<Byte> &lhs, RValue<Int> offset)
- {
- return lhs = lhs + offset;
- }
-
- RValue<Pointer<Byte>> operator+=(Pointer<Byte> &lhs, RValue<UInt> offset)
- {
- return lhs = lhs + offset;
- }
-
- RValue<Pointer<Byte>> operator-(RValue<Pointer<Byte>> lhs, int offset)
- {
- return lhs + -offset;
- }
-
- RValue<Pointer<Byte>> operator-(RValue<Pointer<Byte>> lhs, RValue<Int> offset)
- {
- return lhs + -offset;
- }
-
- RValue<Pointer<Byte>> operator-(RValue<Pointer<Byte>> lhs, RValue<UInt> offset)
- {
- return lhs + -offset;
- }
-
- RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, int offset)
- {
- return lhs = lhs - offset;
- }
-
- RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, RValue<Int> offset)
- {
- return lhs = lhs - offset;
- }
-
- RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, RValue<UInt> offset)
+ RValue<Long> Ticks()
{
- return lhs = lhs - offset;
+ UNIMPLEMENTED("RValue<Long> Ticks()");
+ return Long(Int(0));
}
- void Return()
+ RValue<Pointer<Byte>> ConstantPointer(void const * ptr)
{
- Nucleus::createRetVoid();
- Nucleus::setInsertBlock(Nucleus::createBasicBlock());
- Nucleus::createUnreachable();
+ return RValue<Pointer<Byte>>(V(::context->getConstantInt64(reinterpret_cast<intptr_t>(ptr))));
}
- void Return(RValue<Int> ret)
+ Value* Call(RValue<Pointer<Byte>> fptr, Type* retTy, std::initializer_list<Value*> args, std::initializer_list<Type*> argTys)
{
- Nucleus::createRet(ret.value);
- Nucleus::setInsertBlock(Nucleus::createBasicBlock());
- Nucleus::createUnreachable();
+ // FIXME: This does not currently work on Windows.
+ Ice::Variable *ret = nullptr;
+ if (retTy != nullptr)
+ {
+ ret = ::function->makeVariable(T(retTy));
+ }
+ auto call = Ice::InstCall::create(::function, args.size(), ret, V(fptr.value), false);
+ for (auto arg : args)
+ {
+ call->addArg(V(arg));
+ }
+ ::basicBlock->appendInst(call);
+ return V(ret);
}
- void branch(RValue<Bool> cmp, BasicBlock *bodyBB, BasicBlock *endBB)
- {
- Nucleus::createCondBr(cmp.value, bodyBB, endBB);
- Nucleus::setInsertBlock(bodyBB);
- }
+ // Below are functions currently unimplemented for the Subzero backend.
+ // They are stubbed to satisfy the linker.
+ RValue<Float4> Sin(RValue<Float4> x) { UNIMPLEMENTED("Subzero Sin()"); return Float4(0); }
+ RValue<Float4> Cos(RValue<Float4> x) { UNIMPLEMENTED("Subzero Cos()"); return Float4(0); }
+ RValue<Float4> Tan(RValue<Float4> x) { UNIMPLEMENTED("Subzero Tan()"); return Float4(0); }
+ RValue<Float4> Asin(RValue<Float4> x) { UNIMPLEMENTED("Subzero Asin()"); return Float4(0); }
+ RValue<Float4> Acos(RValue<Float4> x) { UNIMPLEMENTED("Subzero Acos()"); return Float4(0); }
+ RValue<Float4> Atan(RValue<Float4> x) { UNIMPLEMENTED("Subzero Atan()"); return Float4(0); }
+ RValue<Float4> Sinh(RValue<Float4> x) { UNIMPLEMENTED("Subzero Sinh()"); return Float4(0); }
+ RValue<Float4> Cosh(RValue<Float4> x) { UNIMPLEMENTED("Subzero Cosh()"); return Float4(0); }
+ RValue<Float4> Tanh(RValue<Float4> x) { UNIMPLEMENTED("Subzero Tanh()"); return Float4(0); }
+ RValue<Float4> Asinh(RValue<Float4> x) { UNIMPLEMENTED("Subzero Asinh()"); return Float4(0); }
+ RValue<Float4> Acosh(RValue<Float4> x) { UNIMPLEMENTED("Subzero Acosh()"); return Float4(0); }
+ RValue<Float4> Atanh(RValue<Float4> x) { UNIMPLEMENTED("Subzero Atanh()"); return Float4(0); }
+ RValue<Float4> Atan2(RValue<Float4> x, RValue<Float4> y) { UNIMPLEMENTED("Subzero Atan2()"); return Float4(0); }
+ RValue<Float4> Pow(RValue<Float4> x, RValue<Float4> y) { UNIMPLEMENTED("Subzero Pow()"); return Float4(0); }
+ RValue<Float4> Exp(RValue<Float4> x) { UNIMPLEMENTED("Subzero Exp()"); return Float4(0); }
+ RValue<Float4> Log(RValue<Float4> x) { UNIMPLEMENTED("Subzero Log()"); return Float4(0); }
+ RValue<Float4> Exp2(RValue<Float4> x) { UNIMPLEMENTED("Subzero Exp2()"); return Float4(0); }
+ RValue<Float4> Log2(RValue<Float4> x) { UNIMPLEMENTED("Subzero Log2()"); return Float4(0); }
+ RValue<UInt4> Ctlz(RValue<UInt4> x, bool isZeroUndef) { UNIMPLEMENTED("Subzero Ctlz()"); return UInt4(0); }
+ RValue<UInt4> Cttz(RValue<UInt4> x, bool isZeroUndef) { UNIMPLEMENTED("Subzero Cttz()"); return UInt4(0); }
- RValue<Long> Ticks()
- {
- assert(false && "UNIMPLEMENTED"); return RValue<Long>(V(nullptr));
- }
+ void EmitDebugLocation() {}
+ void EmitDebugVariable(Value* value) {}
+ void FlushDebug() {}
}
diff --git a/chromium/third_party/swiftshader/src/Renderer/PixelProcessor.cpp b/chromium/third_party/swiftshader/src/Renderer/PixelProcessor.cpp
index 1a158a7ed3f..133f90cc133 100644
--- a/chromium/third_party/swiftshader/src/Renderer/PixelProcessor.cpp
+++ b/chromium/third_party/swiftshader/src/Renderer/PixelProcessor.cpp
@@ -933,7 +933,7 @@ namespace sw
void PixelProcessor::setRoutineCacheSize(int cacheSize)
{
delete routineCache;
- routineCache = new RoutineCache<State>(clamp(cacheSize, 1, 65536), precachePixel ? "sw-pixel" : 0);
+ routineCache = new RoutineCache<State>(clamp(cacheSize, 1, 65536));
}
void PixelProcessor::setFogRanges(float start, float end)
diff --git a/chromium/third_party/swiftshader/src/Renderer/Renderer.hpp b/chromium/third_party/swiftshader/src/Renderer/Renderer.hpp
index 0846a27b7b8..1118c5991ad 100644
--- a/chromium/third_party/swiftshader/src/Renderer/Renderer.hpp
+++ b/chromium/third_party/swiftshader/src/Renderer/Renderer.hpp
@@ -165,7 +165,6 @@ namespace sw
float lineWidth;
PixelProcessor::Stencil stencil[2]; // clockwise, counterclockwise
- PixelProcessor::Stencil stencilCCW;
PixelProcessor::Fog fog;
PixelProcessor::Factor factor;
unsigned int occlusion[16]; // Number of pixels passing depth test
diff --git a/chromium/third_party/swiftshader/src/Renderer/RoutineCache.hpp b/chromium/third_party/swiftshader/src/Renderer/RoutineCache.hpp
index 3338f8533e2..8420468a663 100644
--- a/chromium/third_party/swiftshader/src/Renderer/RoutineCache.hpp
+++ b/chromium/third_party/swiftshader/src/Renderer/RoutineCache.hpp
@@ -24,28 +24,7 @@ namespace sw
using namespace rr;
template<class State>
- class RoutineCache : public LRUCache<State, Routine>
- {
- public:
- RoutineCache(int n, const char *precache = nullptr);
- ~RoutineCache();
-
- private:
- const char *precache;
- #if defined(_WIN32)
- HMODULE precacheDLL;
- #endif
- };
-
- template<class State>
- RoutineCache<State>::RoutineCache(int n, const char *precache) : LRUCache<State, Routine>(n), precache(precache)
- {
- }
-
- template<class State>
- RoutineCache<State>::~RoutineCache()
- {
- }
+ using RoutineCache = LRUCache<State, Routine>;
}
#endif // sw_RoutineCache_hpp
diff --git a/chromium/third_party/swiftshader/src/Renderer/SetupProcessor.cpp b/chromium/third_party/swiftshader/src/Renderer/SetupProcessor.cpp
index c5c2a163d96..72114062660 100644
--- a/chromium/third_party/swiftshader/src/Renderer/SetupProcessor.cpp
+++ b/chromium/third_party/swiftshader/src/Renderer/SetupProcessor.cpp
@@ -243,6 +243,6 @@ namespace sw
void SetupProcessor::setRoutineCacheSize(int cacheSize)
{
delete routineCache;
- routineCache = new RoutineCache<State>(clamp(cacheSize, 1, 65536), precacheSetup ? "sw-setup" : 0);
+ routineCache = new RoutineCache<State>(clamp(cacheSize, 1, 65536));
}
}
diff --git a/chromium/third_party/swiftshader/src/Renderer/VertexProcessor.cpp b/chromium/third_party/swiftshader/src/Renderer/VertexProcessor.cpp
index 8321e6d16a9..463393a50a7 100644
--- a/chromium/third_party/swiftshader/src/Renderer/VertexProcessor.cpp
+++ b/chromium/third_party/swiftshader/src/Renderer/VertexProcessor.cpp
@@ -899,7 +899,7 @@ namespace sw
void VertexProcessor::setRoutineCacheSize(int cacheSize)
{
delete routineCache;
- routineCache = new RoutineCache<State>(clamp(cacheSize, 1, 65536), precacheVertex ? "sw-vertex" : 0);
+ routineCache = new RoutineCache<State>(clamp(cacheSize, 1, 65536));
}
const VertexProcessor::State VertexProcessor::update(DrawType drawType)
diff --git a/chromium/third_party/swiftshader/src/SwiftShader/SwiftShader.vcxproj b/chromium/third_party/swiftshader/src/SwiftShader/SwiftShader.vcxproj
index 3431ee6b7dd..f252c8d27a3 100644
--- a/chromium/third_party/swiftshader/src/SwiftShader/SwiftShader.vcxproj
+++ b/chromium/third_party/swiftshader/src/SwiftShader/SwiftShader.vcxproj
@@ -30,6 +30,7 @@
<ProjectGuid>{7B02CB19-4CDF-4F79-BC9B-7F3F6164A003}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
@@ -120,7 +121,6 @@
<OmitFramePointers>false</OmitFramePointers>
<AdditionalIncludeDirectories>..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NO_SANITIZE_FUNCTION=;_DEBUG;_LIB;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
<ExceptionHandling>false</ExceptionHandling>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -157,7 +157,6 @@
<OmitFramePointers>false</OmitFramePointers>
<AdditionalIncludeDirectories>..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NO_SANITIZE_FUNCTION=;_DEBUG;_LIB;_HAS_EXCEPTIONS=0;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
<ExceptionHandling>false</ExceptionHandling>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -246,6 +245,7 @@
<TreatWarningAsError>true</TreatWarningAsError>
<TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>
<AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
@@ -324,6 +324,7 @@
<TreatWarningAsError>true</TreatWarningAsError>
<TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>
<AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
diff --git a/chromium/third_party/swiftshader/src/System/Debug.hpp b/chromium/third_party/swiftshader/src/System/Debug.hpp
index 9758c3b831a..0c862d4dc07 100644
--- a/chromium/third_party/swiftshader/src/System/Debug.hpp
+++ b/chromium/third_party/swiftshader/src/System/Debug.hpp
@@ -15,7 +15,7 @@
#ifndef Debug_hpp
#define Debug_hpp
-#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD)
+#if defined(__ANDROID__) && !defined(ANDROID_HOST_BUILD) && !defined(ANDROID_NDK_BUILD)
#include "DebugAndroid.hpp"
#else
diff --git a/chromium/third_party/swiftshader/src/System/Math.hpp b/chromium/third_party/swiftshader/src/System/Math.hpp
index 79c8e74a31d..9ba58b09807 100644
--- a/chromium/third_party/swiftshader/src/System/Math.hpp
+++ b/chromium/third_party/swiftshader/src/System/Math.hpp
@@ -66,14 +66,6 @@ namespace sw
return min(min(a, b), min(c, d));
}
- template<class T>
- inline void swap(T &a, T &b)
- {
- T t = a;
- a = b;
- b = t;
- }
-
template <typename destType, typename sourceType>
destType bit_cast(const sourceType &source)
{
diff --git a/chromium/third_party/swiftshader/src/System/Memory.cpp b/chromium/third_party/swiftshader/src/System/Memory.cpp
index 0e73891a100..ffaab71a53e 100644
--- a/chromium/third_party/swiftshader/src/System/Memory.cpp
+++ b/chromium/third_party/swiftshader/src/System/Memory.cpp
@@ -54,14 +54,21 @@ void *allocateRaw(size_t bytes, size_t alignment)
ASSERT((alignment & (alignment - 1)) == 0); // Power of 2 alignment.
#if defined(LINUX_ENABLE_NAMED_MMAP)
- void *allocation;
- int result = posix_memalign(&allocation, alignment, bytes);
- if(result != 0)
+ if(alignment < sizeof(void*))
{
- errno = result;
- allocation = nullptr;
+ return malloc(bytes);
+ }
+ else
+ {
+ void *allocation;
+ int result = posix_memalign(&allocation, alignment, bytes);
+ if(result != 0)
+ {
+ errno = result;
+ allocation = nullptr;
+ }
+ return allocation;
}
- return allocation;
#else
unsigned char *block = new unsigned char[bytes + sizeof(Allocation) + alignment];
unsigned char *aligned = nullptr;
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkBuffer.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkBuffer.cpp
index 421a4a053d4..8331b3f97d8 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkBuffer.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkBuffer.cpp
@@ -21,15 +21,18 @@
namespace vk
{
-const size_t Buffer::DataOffset = offsetof(Buffer, memory);
+const int Buffer::DataOffset = static_cast<int>(offsetof(Buffer, memory));
Buffer::Buffer(const VkBufferCreateInfo* pCreateInfo, void* mem) :
flags(pCreateInfo->flags), size(pCreateInfo->size), usage(pCreateInfo->usage),
- sharingMode(pCreateInfo->sharingMode), queueFamilyIndexCount(pCreateInfo->queueFamilyIndexCount),
- queueFamilyIndices(reinterpret_cast<uint32_t*>(mem))
+ sharingMode(pCreateInfo->sharingMode)
{
- size_t queueFamilyIndicesSize = sizeof(uint32_t) * queueFamilyIndexCount;
- memcpy(queueFamilyIndices, pCreateInfo->pQueueFamilyIndices, queueFamilyIndicesSize);
+ if(pCreateInfo->sharingMode == VK_SHARING_MODE_CONCURRENT)
+ {
+ queueFamilyIndexCount = pCreateInfo->queueFamilyIndexCount;
+ queueFamilyIndices = reinterpret_cast<uint32_t*>(mem);
+ memcpy(queueFamilyIndices, pCreateInfo->pQueueFamilyIndices, sizeof(uint32_t) * queueFamilyIndexCount);
+ }
}
void Buffer::destroy(const VkAllocationCallbacks* pAllocator)
@@ -39,7 +42,7 @@ void Buffer::destroy(const VkAllocationCallbacks* pAllocator)
size_t Buffer::ComputeRequiredAllocationSize(const VkBufferCreateInfo* pCreateInfo)
{
- return sizeof(uint32_t) * pCreateInfo->queueFamilyIndexCount;
+ return (pCreateInfo->sharingMode == VK_SHARING_MODE_CONCURRENT) ? sizeof(uint32_t) * pCreateInfo->queueFamilyIndexCount : 0;
}
const VkMemoryRequirements Buffer::getMemoryRequirements() const
@@ -93,9 +96,18 @@ void Buffer::copyTo(Buffer* dstBuffer, const VkBufferCopy& pRegion) const
void Buffer::fill(VkDeviceSize dstOffset, VkDeviceSize fillSize, uint32_t data)
{
- ASSERT((fillSize + dstOffset) <= size);
+ size_t bytes = (fillSize == VK_WHOLE_SIZE) ? (size - dstOffset) : fillSize;
+
+ ASSERT((bytes + dstOffset) <= size);
- memset(getOffsetPointer(dstOffset), data, fillSize);
+ uint32_t* memToWrite = static_cast<uint32_t*>(getOffsetPointer(dstOffset));
+
+ // Vulkan 1.1 spec: "If VK_WHOLE_SIZE is used and the remaining size of the buffer is
+ // not a multiple of 4, then the nearest smaller multiple is used."
+ for(; bytes >= 4; bytes -= 4, memToWrite++)
+ {
+ *memToWrite = data;
+ }
}
void Buffer::update(VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData)
@@ -107,7 +119,12 @@ void Buffer::update(VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* p
void* Buffer::getOffsetPointer(VkDeviceSize offset) const
{
- return reinterpret_cast<char*>(memory) + offset;
+ return reinterpret_cast<uint8_t*>(memory) + offset;
+}
+
+uint8_t* Buffer::end() const
+{
+ return reinterpret_cast<uint8_t*>(getOffsetPointer(size + 1));
}
} // namespace vk
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkBuffer.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkBuffer.hpp
index 255b0f174f4..fe29f8cc42b 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkBuffer.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkBuffer.hpp
@@ -37,10 +37,12 @@ public:
void fill(VkDeviceSize dstOffset, VkDeviceSize fillSize, uint32_t data);
void update(VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
void* getOffsetPointer(VkDeviceSize offset) const;
+ inline VkDeviceSize getSize() const { return size; }
+ uint8_t* end() const;
// DataOffset is the offset in bytes from the Buffer to the pointer to the
// buffer's data memory.
- static const size_t DataOffset;
+ static const int DataOffset;
private:
void* memory = nullptr;
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkBufferView.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkBufferView.cpp
new file mode 100644
index 00000000000..168f2ac3a13
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkBufferView.cpp
@@ -0,0 +1,40 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "VkBufferView.hpp"
+#include "VkBuffer.hpp"
+#include "VkFormat.h"
+
+namespace vk
+{
+
+BufferView::BufferView(const VkBufferViewCreateInfo* pCreateInfo, void* mem) :
+ buffer(pCreateInfo->buffer), format(pCreateInfo->format), offset(pCreateInfo->offset)
+{
+ if (pCreateInfo->range == VK_WHOLE_SIZE)
+ {
+ range = Cast(pCreateInfo->buffer)->getSize() - offset;
+ }
+ else
+ {
+ range = pCreateInfo->range - offset;
+ }
+}
+
+void * BufferView::getPointer() const
+{
+ return Cast(buffer)->getOffsetPointer(offset);
+}
+
+} \ No newline at end of file
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkBufferView.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkBufferView.hpp
index e7fc7341225..db68bb6cd8c 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkBufferView.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkBufferView.hpp
@@ -16,6 +16,7 @@
#define VK_BUFFER_VIEW_HPP_
#include "VkObject.hpp"
+#include "VkFormat.h"
namespace vk
{
@@ -23,11 +24,7 @@ namespace vk
class BufferView : public Object<BufferView, VkBufferView>
{
public:
- BufferView(const VkBufferViewCreateInfo* pCreateInfo, void* mem) :
- buffer(pCreateInfo->buffer), format(pCreateInfo->format), offset(pCreateInfo->offset), range(pCreateInfo->range)
- {
- }
-
+ BufferView(const VkBufferViewCreateInfo* pCreateInfo, void* mem);
~BufferView() = delete;
static size_t ComputeRequiredAllocationSize(const VkBufferViewCreateInfo* pCreateInfo)
@@ -35,6 +32,9 @@ public:
return 0;
}
+ void *getPointer() const;
+ uint32_t getElementCount() const { return range / Format(format).bytes(); }
+
private:
VkBuffer buffer;
VkFormat format;
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkCommandBuffer.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkCommandBuffer.cpp
index 9634c109510..b713275c76b 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkCommandBuffer.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkCommandBuffer.cpp
@@ -19,6 +19,8 @@
#include "VkImage.hpp"
#include "VkImageView.hpp"
#include "VkPipeline.hpp"
+#include "VkPipelineLayout.hpp"
+#include "VkQueryPool.hpp"
#include "VkRenderPass.hpp"
#include "Device/Renderer.hpp"
@@ -59,7 +61,7 @@ protected:
executionState.renderPass = renderPass;
executionState.renderPassFramebuffer = framebuffer;
renderPass->begin();
- framebuffer->clear(clearValueCount, clearValues, renderArea);
+ framebuffer->clear(executionState.renderPass, clearValueCount, clearValues, renderArea);
}
private:
@@ -80,6 +82,16 @@ public:
protected:
void play(CommandBuffer::ExecutionState& executionState) override
{
+ bool hasResolveAttachments = (executionState.renderPass->getCurrentSubpass().pResolveAttachments != nullptr);
+ if(hasResolveAttachments)
+ {
+ // FIXME(sugoi): remove the following lines and resolve in Renderer::finishRendering()
+ // for a Draw command or after the last command of the current subpass
+ // which modifies pixels.
+ executionState.renderer->synchronize();
+ executionState.renderPassFramebuffer->resolve(executionState.renderPass);
+ }
+
executionState.renderPass->nextSubpass();
}
@@ -96,6 +108,15 @@ public:
protected:
void play(CommandBuffer::ExecutionState& executionState) override
{
+ // Execute (implicit or explicit) VkSubpassDependency to VK_SUBPASS_EXTERNAL
+ // This is somewhat heavier than the actual ordering required.
+ executionState.renderer->synchronize();
+
+ // FIXME(sugoi): remove the following line and resolve in Renderer::finishRendering()
+ // for a Draw command or after the last command of the current subpass
+ // which modifies pixels.
+ executionState.renderPassFramebuffer->resolve(executionState.renderPass);
+
executionState.renderPass->end();
executionState.renderPass = nullptr;
executionState.renderPassFramebuffer = nullptr;
@@ -104,6 +125,23 @@ protected:
private:
};
+class ExecuteCommands : public CommandBuffer::Command
+{
+public:
+ ExecuteCommands(const VkCommandBuffer& commandBuffer) : commandBuffer(commandBuffer)
+ {
+ }
+
+protected:
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ Cast(commandBuffer)->submitSecondary(executionState);
+ }
+
+private:
+ const VkCommandBuffer commandBuffer;
+};
+
class PipelineBind : public CommandBuffer::Command
{
public:
@@ -115,7 +153,7 @@ public:
protected:
void play(CommandBuffer::ExecutionState& executionState) override
{
- executionState.pipelines[pipelineBindPoint] = Cast(pipeline);
+ executionState.pipelineState[pipelineBindPoint].pipeline = Cast(pipeline);
}
private:
@@ -123,6 +161,59 @@ private:
VkPipeline pipeline;
};
+class Dispatch : public CommandBuffer::Command
+{
+public:
+ Dispatch(uint32_t pGroupCountX, uint32_t pGroupCountY, uint32_t pGroupCountZ) :
+ groupCountX(pGroupCountX), groupCountY(pGroupCountY), groupCountZ(pGroupCountZ)
+ {
+ }
+
+protected:
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ auto const &pipelineState = executionState.pipelineState[VK_PIPELINE_BIND_POINT_COMPUTE];
+
+ ComputePipeline* pipeline = static_cast<ComputePipeline*>(pipelineState.pipeline);
+ pipeline->run(groupCountX, groupCountY, groupCountZ,
+ pipelineState.descriptorSets,
+ pipelineState.descriptorDynamicOffsets,
+ executionState.pushConstants);
+ }
+
+private:
+ uint32_t groupCountX;
+ uint32_t groupCountY;
+ uint32_t groupCountZ;
+};
+
+class DispatchIndirect : public CommandBuffer::Command
+{
+public:
+ DispatchIndirect(VkBuffer buffer, VkDeviceSize offset) :
+ buffer(buffer), offset(offset)
+ {
+ }
+
+protected:
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ auto cmd = reinterpret_cast<VkDispatchIndirectCommand const *>(Cast(buffer)->getOffsetPointer(offset));
+
+ auto const &pipelineState = executionState.pipelineState[VK_PIPELINE_BIND_POINT_COMPUTE];
+
+ ComputePipeline* pipeline = static_cast<ComputePipeline*>(pipelineState.pipeline);
+ pipeline->run(cmd->x, cmd->y, cmd->z,
+ pipelineState.descriptorSets,
+ pipelineState.descriptorDynamicOffsets,
+ executionState.pushConstants);
+ }
+
+private:
+ VkBuffer buffer;
+ VkDeviceSize offset;
+};
+
struct VertexBufferBind : public CommandBuffer::Command
{
VertexBufferBind(uint32_t pBinding, const VkBuffer pBuffer, const VkDeviceSize pOffset) :
@@ -159,6 +250,172 @@ struct IndexBufferBind : public CommandBuffer::Command
const VkIndexType indexType;
};
+struct SetViewport : public CommandBuffer::Command
+{
+ SetViewport(const VkViewport& viewport, uint32_t viewportID) :
+ viewport(viewport), viewportID(viewportID)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ executionState.dynamicState.viewport = viewport;
+ }
+
+ const VkViewport viewport;
+ uint32_t viewportID;
+};
+
+struct SetScissor : public CommandBuffer::Command
+{
+ SetScissor(const VkRect2D& scissor, uint32_t scissorID) :
+ scissor(scissor), scissorID(scissorID)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ executionState.dynamicState.scissor = scissor;
+ }
+
+ const VkRect2D scissor;
+ uint32_t scissorID;
+};
+
+struct SetDepthBias : public CommandBuffer::Command
+{
+ SetDepthBias(float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) :
+ depthBiasConstantFactor(depthBiasConstantFactor), depthBiasClamp(depthBiasClamp), depthBiasSlopeFactor(depthBiasSlopeFactor)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ executionState.dynamicState.depthBiasConstantFactor = depthBiasConstantFactor;
+ executionState.dynamicState.depthBiasClamp = depthBiasClamp;
+ executionState.dynamicState.depthBiasSlopeFactor = depthBiasSlopeFactor;
+ }
+
+ float depthBiasConstantFactor;
+ float depthBiasClamp;
+ float depthBiasSlopeFactor;
+};
+
+struct SetBlendConstants : public CommandBuffer::Command
+{
+ SetBlendConstants(const float blendConstants[4])
+ {
+ memcpy(this->blendConstants, blendConstants, sizeof(this->blendConstants));
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ memcpy(&(executionState.dynamicState.blendConstants[0]), blendConstants, sizeof(blendConstants));
+ }
+
+ float blendConstants[4];
+};
+
+struct SetDepthBounds : public CommandBuffer::Command
+{
+ SetDepthBounds(float minDepthBounds, float maxDepthBounds) :
+ minDepthBounds(minDepthBounds), maxDepthBounds(maxDepthBounds)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ executionState.dynamicState.minDepthBounds = minDepthBounds;
+ executionState.dynamicState.maxDepthBounds = maxDepthBounds;
+ }
+
+ float minDepthBounds;
+ float maxDepthBounds;
+};
+struct SetStencilCompareMask : public CommandBuffer::Command
+{
+ SetStencilCompareMask(VkStencilFaceFlags faceMask, uint32_t compareMask) :
+ faceMask(faceMask), compareMask(compareMask)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ if(faceMask & VK_STENCIL_FACE_FRONT_BIT)
+ {
+ executionState.dynamicState.compareMask[0] = compareMask;
+ }
+ if(faceMask & VK_STENCIL_FACE_BACK_BIT)
+ {
+ executionState.dynamicState.compareMask[1] = compareMask;
+ }
+ }
+
+ VkStencilFaceFlags faceMask;
+ uint32_t compareMask;
+};
+
+struct SetStencilWriteMask : public CommandBuffer::Command
+{
+ SetStencilWriteMask(VkStencilFaceFlags faceMask, uint32_t writeMask) :
+ faceMask(faceMask), writeMask(writeMask)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ if(faceMask & VK_STENCIL_FACE_FRONT_BIT)
+ {
+ executionState.dynamicState.writeMask[0] = writeMask;
+ }
+ if(faceMask & VK_STENCIL_FACE_BACK_BIT)
+ {
+ executionState.dynamicState.writeMask[1] = writeMask;
+ }
+ }
+
+ VkStencilFaceFlags faceMask;
+ uint32_t writeMask;
+};
+
+struct SetStencilReference : public CommandBuffer::Command
+{
+ SetStencilReference(VkStencilFaceFlags faceMask, uint32_t reference) :
+ faceMask(faceMask), reference(reference)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ if(faceMask & VK_STENCIL_FACE_FRONT_BIT)
+ {
+ executionState.dynamicState.reference[0] = reference;
+ }
+ if(faceMask & VK_STENCIL_FACE_BACK_BIT)
+ {
+ executionState.dynamicState.reference[1] = reference;
+ }
+ }
+
+ VkStencilFaceFlags faceMask;
+ uint32_t reference;
+};
+
+void CommandBuffer::ExecutionState::bindVertexInputs(sw::Context& context, int firstVertex, int firstInstance)
+{
+ for(uint32_t i = 0; i < MAX_VERTEX_INPUT_BINDINGS; i++)
+ {
+ auto &attrib = context.input[i];
+ if (attrib.count)
+ {
+ const auto &vertexInput = vertexInputBindings[attrib.binding];
+ Buffer *buffer = Cast(vertexInput.buffer);
+ attrib.buffer = buffer ? buffer->getOffsetPointer(
+ attrib.offset + vertexInput.offset + attrib.vertexStride * firstVertex + attrib.instanceStride * firstInstance) : nullptr;
+ }
+ }
+}
+
void CommandBuffer::ExecutionState::bindAttachments()
{
// Binds all the attachments for the current subpass
@@ -191,46 +448,98 @@ void CommandBuffer::ExecutionState::bindAttachments()
}
}
-struct Draw : public CommandBuffer::Command
+struct DrawBase : public CommandBuffer::Command
{
- Draw(uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance)
- : vertexCount(vertexCount), instanceCount(instanceCount), firstVertex(firstVertex), firstInstance(firstInstance)
+ int bytesPerIndex(CommandBuffer::ExecutionState const& executionState)
{
+ return executionState.indexType == VK_INDEX_TYPE_UINT16 ? 2 : 4;
}
- void play(CommandBuffer::ExecutionState& executionState) override
+ void draw(CommandBuffer::ExecutionState& executionState, bool indexed,
+ uint32_t count, uint32_t instanceCount, uint32_t first, int32_t vertexOffset, uint32_t firstInstance)
{
- GraphicsPipeline* pipeline = static_cast<GraphicsPipeline*>(
- executionState.pipelines[VK_PIPELINE_BIND_POINT_GRAPHICS]);
+ auto const &pipelineState = executionState.pipelineState[VK_PIPELINE_BIND_POINT_GRAPHICS];
+
+ GraphicsPipeline* pipeline = static_cast<GraphicsPipeline*>(pipelineState.pipeline);
sw::Context context = pipeline->getContext();
- for(uint32_t i = 0; i < MAX_VERTEX_INPUT_BINDINGS; i++)
+
+ executionState.bindVertexInputs(context, vertexOffset, firstInstance);
+
+ context.descriptorSets = pipelineState.descriptorSets;
+ context.descriptorDynamicOffsets = pipelineState.descriptorDynamicOffsets;
+ context.pushConstants = executionState.pushConstants;
+
+ if(indexed)
+ {
+ context.indexBuffer = Cast(executionState.indexBufferBinding.buffer)->getOffsetPointer(
+ executionState.indexBufferBinding.offset + first * bytesPerIndex(executionState));
+ }
+
+ // Apply either pipeline state or dynamic state
+ executionState.renderer->setScissor(pipeline->hasDynamicState(VK_DYNAMIC_STATE_SCISSOR) ?
+ executionState.dynamicState.scissor : pipeline->getScissor());
+ executionState.renderer->setViewport(pipeline->hasDynamicState(VK_DYNAMIC_STATE_VIEWPORT) ?
+ executionState.dynamicState.viewport : pipeline->getViewport());
+ executionState.renderer->setBlendConstant(pipeline->hasDynamicState(VK_DYNAMIC_STATE_BLEND_CONSTANTS) ?
+ executionState.dynamicState.blendConstants : pipeline->getBlendConstants());
+ if(pipeline->hasDynamicState(VK_DYNAMIC_STATE_DEPTH_BIAS))
+ {
+ // If the depth bias clamping feature is not enabled, depthBiasClamp must be 0.0
+ ASSERT(executionState.dynamicState.depthBiasClamp == 0.0f);
+
+ context.depthBias = executionState.dynamicState.depthBiasConstantFactor;
+ context.slopeDepthBias = executionState.dynamicState.depthBiasSlopeFactor;
+ }
+ if(pipeline->hasDynamicState(VK_DYNAMIC_STATE_DEPTH_BOUNDS) && context.depthBoundsTestEnable)
+ {
+ // Unless the VK_EXT_depth_range_unrestricted extension is enabled minDepthBounds and maxDepthBounds must be between 0.0 and 1.0, inclusive
+ ASSERT(executionState.dynamicState.minDepthBounds >= 0.0f && executionState.dynamicState.minDepthBounds <= 1.0f);
+ ASSERT(executionState.dynamicState.maxDepthBounds >= 0.0f && executionState.dynamicState.maxDepthBounds <= 1.0f);
+
+ UNIMPLEMENTED("depthBoundsTestEnable");
+ }
+ if(pipeline->hasDynamicState(VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK) && context.stencilEnable)
{
- auto &attrib = context.input[i];
- if (attrib.count)
- {
- const auto &vertexInput = executionState.vertexInputBindings[attrib.binding];
- Buffer *buffer = Cast(vertexInput.buffer);
- attrib.buffer = buffer ? buffer->getOffsetPointer(
- attrib.offset + vertexInput.offset + attrib.stride * firstVertex) : nullptr;
- }
+ context.frontStencil.compareMask = executionState.dynamicState.compareMask[0];
+ context.backStencil.compareMask = executionState.dynamicState.compareMask[1];
+ }
+ if(pipeline->hasDynamicState(VK_DYNAMIC_STATE_STENCIL_WRITE_MASK) && context.stencilEnable)
+ {
+ context.frontStencil.writeMask = executionState.dynamicState.writeMask[0];
+ context.backStencil.writeMask = executionState.dynamicState.writeMask[1];
+ }
+ if(pipeline->hasDynamicState(VK_DYNAMIC_STATE_STENCIL_REFERENCE) && context.stencilEnable)
+ {
+ context.frontStencil.reference = executionState.dynamicState.reference[0];
+ context.backStencil.reference = executionState.dynamicState.reference[1];
}
executionState.renderer->setContext(context);
- executionState.renderer->setScissor(pipeline->getScissor());
- executionState.renderer->setViewport(pipeline->getViewport());
- executionState.renderer->setBlendConstant(pipeline->getBlendConstants());
executionState.bindAttachments();
- const uint32_t primitiveCount = pipeline->computePrimitiveCount(vertexCount);
- const uint32_t lastInstance = firstInstance + instanceCount - 1;
- for(uint32_t instance = firstInstance; instance <= lastInstance; instance++)
+ const uint32_t primitiveCount = pipeline->computePrimitiveCount(count);
+ for(uint32_t instance = firstInstance; instance != firstInstance + instanceCount; instance++)
{
executionState.renderer->setInstanceID(instance);
- executionState.renderer->draw(context.drawType, primitiveCount);
+ executionState.renderer->draw(context.topology, executionState.indexType, primitiveCount, vertexOffset);
+ executionState.renderer->advanceInstanceAttributes();
}
}
+};
+
+struct Draw : public DrawBase
+{
+ Draw(uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance)
+ : vertexCount(vertexCount), instanceCount(instanceCount), firstVertex(firstVertex), firstInstance(firstInstance)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ draw(executionState, false, vertexCount, instanceCount, 0, firstVertex, firstInstance);
+ }
uint32_t vertexCount;
uint32_t instanceCount;
@@ -238,7 +547,7 @@ struct Draw : public CommandBuffer::Command
uint32_t firstInstance;
};
-struct DrawIndexed : public CommandBuffer::Command
+struct DrawIndexed : public DrawBase
{
DrawIndexed(uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance)
: indexCount(indexCount), instanceCount(instanceCount), firstIndex(firstIndex), vertexOffset(vertexOffset), firstInstance(firstInstance)
@@ -247,49 +556,58 @@ struct DrawIndexed : public CommandBuffer::Command
void play(CommandBuffer::ExecutionState& executionState) override
{
- GraphicsPipeline* pipeline = static_cast<GraphicsPipeline*>(
- executionState.pipelines[VK_PIPELINE_BIND_POINT_GRAPHICS]);
+ draw(executionState, true, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
+ }
- sw::Context context = pipeline->getContext();
- for(uint32_t i = 0; i < MAX_VERTEX_INPUT_BINDINGS; i++)
- {
- auto &attrib = context.input[i];
- if (attrib.count)
- {
- const auto &vertexInput = executionState.vertexInputBindings[attrib.binding];
- Buffer *buffer = Cast(vertexInput.buffer);
- attrib.buffer = buffer ? buffer->getOffsetPointer(
- attrib.offset + vertexInput.offset + attrib.stride * vertexOffset) : nullptr;
- }
- }
+ uint32_t indexCount;
+ uint32_t instanceCount;
+ uint32_t firstIndex;
+ int32_t vertexOffset;
+ uint32_t firstInstance;
+};
- context.indexBuffer = Cast(executionState.indexBufferBinding.buffer)->getOffsetPointer(
- executionState.indexBufferBinding.offset + firstIndex * (executionState.indexType == VK_INDEX_TYPE_UINT16 ? 2 : 4));
+struct DrawIndirect : public DrawBase
+{
+ DrawIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
+ : buffer(buffer), offset(offset), drawCount(drawCount), stride(stride)
+ {
+ }
- executionState.renderer->setContext(context);
- executionState.renderer->setScissor(pipeline->getScissor());
- executionState.renderer->setViewport(pipeline->getViewport());
- executionState.renderer->setBlendConstant(pipeline->getBlendConstants());
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ for (auto drawId = 0u; drawId < drawCount; drawId++)
+ {
+ auto cmd = reinterpret_cast<VkDrawIndirectCommand const *>(Cast(buffer)->getOffsetPointer(offset + drawId * stride));
+ draw(executionState, false, cmd->vertexCount, cmd->instanceCount, 0, cmd->firstVertex, cmd->firstInstance);
+ }
+ }
- executionState.bindAttachments();
+ VkBuffer buffer;
+ VkDeviceSize offset;
+ uint32_t drawCount;
+ uint32_t stride;
+};
- auto drawType = executionState.indexType == VK_INDEX_TYPE_UINT16
- ? (context.drawType | sw::DRAW_INDEXED16) : (context.drawType | sw::DRAW_INDEXED32);
+struct DrawIndexedIndirect : public DrawBase
+{
+ DrawIndexedIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
+ : buffer(buffer), offset(offset), drawCount(drawCount), stride(stride)
+ {
+ }
- const uint32_t primitiveCount = pipeline->computePrimitiveCount(indexCount);
- const uint32_t lastInstance = firstInstance + instanceCount - 1;
- for(uint32_t instance = firstInstance; instance <= lastInstance; instance++)
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ for (auto drawId = 0u; drawId < drawCount; drawId++)
{
- executionState.renderer->setInstanceID(instance);
- executionState.renderer->draw(static_cast<sw::DrawType>(drawType), primitiveCount);
+ auto cmd = reinterpret_cast<VkDrawIndexedIndirectCommand const *>(Cast(buffer)->getOffsetPointer(offset + drawId * stride));
+ draw(executionState, true, cmd->indexCount, cmd->instanceCount, cmd->firstIndex, cmd->vertexOffset, cmd->firstInstance);
}
}
- uint32_t indexCount;
- uint32_t instanceCount;
- uint32_t firstIndex;
- int32_t vertexOffset;
- uint32_t firstInstance;
+ VkBuffer buffer;
+ VkDeviceSize offset;
+ uint32_t drawCount;
+ uint32_t stride;
};
struct ImageToImageCopy : public CommandBuffer::Command
@@ -447,7 +765,7 @@ struct ClearAttachment : public CommandBuffer::Command
void play(CommandBuffer::ExecutionState& executionState) override
{
- executionState.renderPassFramebuffer->clear(attachment, rect);
+ executionState.renderPassFramebuffer->clear(executionState.renderPass, attachment, rect);
}
private:
@@ -474,6 +792,24 @@ private:
VkFilter filter;
};
+struct ResolveImage : public CommandBuffer::Command
+{
+ ResolveImage(VkImage srcImage, VkImage dstImage, const VkImageResolve& region) :
+ srcImage(srcImage), dstImage(dstImage), region(region)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ Cast(srcImage)->resolve(dstImage, region);
+ }
+
+private:
+ VkImage srcImage;
+ VkImage dstImage;
+ VkImageResolve region;
+};
+
struct PipelineBarrier : public CommandBuffer::Command
{
PipelineBarrier()
@@ -503,7 +839,11 @@ struct SignalEvent : public CommandBuffer::Command
void play(CommandBuffer::ExecutionState& executionState) override
{
- Cast(ev)->signal();
+ if(Cast(ev)->signal())
+ {
+ // Was waiting for signal on this event, sync now
+ executionState.renderer->synchronize();
+ }
}
private:
@@ -527,23 +867,179 @@ private:
VkPipelineStageFlags stageMask; // FIXME(b/117835459) : We currently ignore the flags and reset the event at the last stage
};
+struct WaitEvent : public CommandBuffer::Command
+{
+ WaitEvent(VkEvent ev) : ev(ev)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState) override
+ {
+ if(!Cast(ev)->wait())
+ {
+ // Already signaled, sync now
+ executionState.renderer->synchronize();
+ }
+ }
+
+private:
+ VkEvent ev;
+};
+
struct BindDescriptorSet : public CommandBuffer::Command
{
- BindDescriptorSet(VkPipelineBindPoint pipelineBindPoint, uint32_t set, const VkDescriptorSet& descriptorSet)
- : pipelineBindPoint(pipelineBindPoint), set(set), descriptorSet(descriptorSet)
+ BindDescriptorSet(VkPipelineBindPoint pipelineBindPoint, uint32_t set, const VkDescriptorSet& descriptorSet,
+ uint32_t dynamicOffsetCount, uint32_t const *dynamicOffsets)
+ : pipelineBindPoint(pipelineBindPoint), set(set), descriptorSet(descriptorSet),
+ dynamicOffsetCount(dynamicOffsetCount)
{
+ for (uint32_t i = 0; i < dynamicOffsetCount; i++)
+ {
+ this->dynamicOffsets[i] = dynamicOffsets[i];
+ }
}
void play(CommandBuffer::ExecutionState& executionState)
{
- ASSERT((pipelineBindPoint < VK_PIPELINE_BIND_POINT_RANGE_SIZE) && (set < MAX_BOUND_DESCRIPTOR_SETS));
- executionState.boundDescriptorSets[pipelineBindPoint][set] = descriptorSet;
+ ASSERT_OR_RETURN((pipelineBindPoint < VK_PIPELINE_BIND_POINT_RANGE_SIZE) && (set < MAX_BOUND_DESCRIPTOR_SETS));
+ auto &pipelineState = executionState.pipelineState[pipelineBindPoint];
+ auto pipelineLayout = pipelineState.pipeline->getLayout();
+ auto dynamicOffsetBase = pipelineLayout->getDynamicOffsetBase(set);
+ ASSERT_OR_RETURN(dynamicOffsetBase + dynamicOffsetCount <= MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC);
+
+ pipelineState.descriptorSets[set] = vk::Cast(descriptorSet);
+ for (uint32_t i = 0; i < dynamicOffsetCount; i++)
+ {
+ pipelineState.descriptorDynamicOffsets[dynamicOffsetBase + i] = dynamicOffsets[i];
+ }
}
private:
VkPipelineBindPoint pipelineBindPoint;
uint32_t set;
const VkDescriptorSet descriptorSet;
+ uint32_t dynamicOffsetCount;
+ vk::DescriptorSet::DynamicOffsets dynamicOffsets;
+};
+
+struct SetPushConstants : public CommandBuffer::Command
+{
+ SetPushConstants(uint32_t offset, uint32_t size, void const *pValues)
+ : offset(offset), size(size)
+ {
+ ASSERT(offset < MAX_PUSH_CONSTANT_SIZE);
+ ASSERT(offset + size <= MAX_PUSH_CONSTANT_SIZE);
+
+ memcpy(data, pValues, size);
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState)
+ {
+ memcpy(&executionState.pushConstants.data[offset], data, size);
+ }
+
+private:
+ uint32_t offset;
+ uint32_t size;
+ unsigned char data[MAX_PUSH_CONSTANT_SIZE];
+};
+
+struct BeginQuery : public CommandBuffer::Command
+{
+ BeginQuery(VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags)
+ : queryPool(queryPool), query(query), flags(flags)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState)
+ {
+ executionState.renderer->addQuery(Cast(queryPool)->getQuery(query));
+ Cast(queryPool)->begin(query, flags);
+ }
+
+private:
+ VkQueryPool queryPool;
+ uint32_t query;
+ VkQueryControlFlags flags;
+};
+
+struct EndQuery : public CommandBuffer::Command
+{
+ EndQuery(VkQueryPool queryPool, uint32_t query)
+ : queryPool(queryPool), query(query)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState)
+ {
+ executionState.renderer->removeQuery(Cast(queryPool)->getQuery(query));
+ Cast(queryPool)->end(query);
+ }
+
+private:
+ VkQueryPool queryPool;
+ uint32_t query;
+};
+
+struct ResetQueryPool : public CommandBuffer::Command
+{
+ ResetQueryPool(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount)
+ : queryPool(queryPool), firstQuery(firstQuery), queryCount(queryCount)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState)
+ {
+ Cast(queryPool)->reset(firstQuery, queryCount);
+ }
+
+private:
+ VkQueryPool queryPool;
+ uint32_t firstQuery;
+ uint32_t queryCount;
+};
+
+struct WriteTimeStamp : public CommandBuffer::Command
+{
+ WriteTimeStamp(VkQueryPool queryPool, uint32_t query)
+ : queryPool(queryPool), query(query)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState)
+ {
+ Cast(queryPool)->writeTimestamp(query);
+ }
+
+private:
+ VkQueryPool queryPool;
+ uint32_t query;
+};
+
+struct CopyQueryPoolResults : public CommandBuffer::Command
+{
+ CopyQueryPoolResults(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount,
+ VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags)
+ : queryPool(queryPool), firstQuery(firstQuery), queryCount(queryCount), dstBuffer(dstBuffer),
+ dstOffset(dstOffset), stride(stride), flags(flags)
+ {
+ }
+
+ void play(CommandBuffer::ExecutionState& executionState)
+ {
+ vk::Buffer* buffer = Cast(dstBuffer);
+ Cast(queryPool)->getResults(firstQuery, queryCount, buffer->getSize() - dstOffset,
+ buffer->getOffsetPointer(dstOffset), stride, flags);
+ }
+
+private:
+ VkQueryPool queryPool;
+ uint32_t firstQuery;
+ uint32_t queryCount;
+ VkBuffer dstBuffer;
+ VkDeviceSize dstOffset;
+ VkDeviceSize stride;
+ VkQueryResultFlags flags;
};
CommandBuffer::CommandBuffer(VkCommandBufferLevel pLevel) : level(pLevel)
@@ -574,10 +1070,7 @@ VkResult CommandBuffer::begin(VkCommandBufferUsageFlags flags, const VkCommandBu
// must also provide a non-null pInheritanceInfo, which we don't implement yet, but is caught below.
(void) flags;
- if(pInheritanceInfo)
- {
- UNIMPLEMENTED();
- }
+ // pInheritanceInfo merely contains optimization hints, so we currently ignore it
if(state != INITIAL)
{
@@ -611,6 +1104,7 @@ VkResult CommandBuffer::reset(VkCommandPoolResetFlags flags)
template<typename T, typename... Args>
void CommandBuffer::addCommand(Args&&... args)
{
+ // FIXME (b/119409619): use an allocator here so we can control all memory allocations
commands->push_back(std::unique_ptr<T>(new T(std::forward<Args>(args)...)));
}
@@ -619,11 +1113,6 @@ void CommandBuffer::beginRenderPass(VkRenderPass renderPass, VkFramebuffer frame
{
ASSERT(state == RECORDING);
- if(contents != VK_SUBPASS_CONTENTS_INLINE)
- {
- UNIMPLEMENTED();
- }
-
addCommand<BeginRenderPass>(renderPass, framebuffer, renderArea, clearValueCount, clearValues);
}
@@ -641,18 +1130,23 @@ void CommandBuffer::endRenderPass()
void CommandBuffer::executeCommands(uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers)
{
- UNIMPLEMENTED();
+ ASSERT(state == RECORDING);
+
+ for(uint32_t i = 0; i < commandBufferCount; ++i)
+ {
+ addCommand<ExecuteCommands>(pCommandBuffers[i]);
+ }
}
void CommandBuffer::setDeviceMask(uint32_t deviceMask)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("setDeviceMask");
}
void CommandBuffer::dispatchBase(uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ,
uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("dispatchBase");
}
void CommandBuffer::pipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask,
@@ -666,12 +1160,15 @@ void CommandBuffer::pipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelin
void CommandBuffer::bindPipeline(VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline)
{
- if(pipelineBindPoint != VK_PIPELINE_BIND_POINT_GRAPHICS)
+ switch(pipelineBindPoint)
{
- UNIMPLEMENTED();
+ case VK_PIPELINE_BIND_POINT_COMPUTE:
+ case VK_PIPELINE_BIND_POINT_GRAPHICS:
+ addCommand<PipelineBind>(pipelineBindPoint, pipeline);
+ break;
+ default:
+ UNIMPLEMENTED("pipelineBindPoint");
}
-
- addCommand<PipelineBind>(pipelineBindPoint, pipeline);
}
void CommandBuffer::bindVertexBuffers(uint32_t firstBinding, uint32_t bindingCount,
@@ -685,133 +1182,129 @@ void CommandBuffer::bindVertexBuffers(uint32_t firstBinding, uint32_t bindingCou
void CommandBuffer::beginQuery(VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags)
{
- UNIMPLEMENTED();
+ addCommand<BeginQuery>(queryPool, query, flags);
}
void CommandBuffer::endQuery(VkQueryPool queryPool, uint32_t query)
{
- UNIMPLEMENTED();
+ addCommand<EndQuery>(queryPool, query);
}
void CommandBuffer::resetQueryPool(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount)
{
- UNIMPLEMENTED();
+ addCommand<ResetQueryPool>(queryPool, firstQuery, queryCount);
}
void CommandBuffer::writeTimestamp(VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query)
{
- UNIMPLEMENTED();
+ addCommand<WriteTimeStamp>(queryPool, query);
}
void CommandBuffer::copyQueryPoolResults(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount,
VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags)
{
- UNIMPLEMENTED();
+ addCommand<CopyQueryPoolResults>(queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
}
void CommandBuffer::pushConstants(VkPipelineLayout layout, VkShaderStageFlags stageFlags,
uint32_t offset, uint32_t size, const void* pValues)
{
- UNIMPLEMENTED();
+ addCommand<SetPushConstants>(offset, size, pValues);
}
void CommandBuffer::setViewport(uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports)
{
- // Note: The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled
- UNIMPLEMENTED();
+ if(firstViewport != 0 || viewportCount > 1)
+ {
+ UNIMPLEMENTED("viewport");
+ }
+
+ for(uint32_t i = 0; i < viewportCount; i++)
+ {
+ addCommand<SetViewport>(pViewports[i], i + firstViewport);
+ }
}
void CommandBuffer::setScissor(uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors)
{
- // Note: The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled
- UNIMPLEMENTED();
+ if(firstScissor != 0 || scissorCount > 1)
+ {
+ UNIMPLEMENTED("scissor");
+ }
+
+ for(uint32_t i = 0; i < scissorCount; i++)
+ {
+ addCommand<SetScissor>(pScissors[i], i + firstScissor);
+ }
}
void CommandBuffer::setLineWidth(float lineWidth)
{
- // Note: The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled
-
// If the wide lines feature is not enabled, lineWidth must be 1.0
ASSERT(lineWidth == 1.0f);
-
- UNIMPLEMENTED();
}
void CommandBuffer::setDepthBias(float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor)
{
- // Note: The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled
-
- // If the depth bias clamping feature is not enabled, depthBiasClamp must be 0.0
- ASSERT(depthBiasClamp == 0.0f);
-
- UNIMPLEMENTED();
+ addCommand<SetDepthBias>(depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
}
void CommandBuffer::setBlendConstants(const float blendConstants[4])
{
- // Note: The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled
-
- // blendConstants is an array of four values specifying the R, G, B, and A components
- // of the blend constant color used in blending, depending on the blend factor.
-
- UNIMPLEMENTED();
+ addCommand<SetBlendConstants>(blendConstants);
}
void CommandBuffer::setDepthBounds(float minDepthBounds, float maxDepthBounds)
{
- // Note: The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled
-
- // Unless the VK_EXT_depth_range_unrestricted extension is enabled minDepthBounds and maxDepthBounds must be between 0.0 and 1.0, inclusive
- ASSERT(minDepthBounds >= 0.0f && minDepthBounds <= 1.0f);
- ASSERT(maxDepthBounds >= 0.0f && maxDepthBounds <= 1.0f);
-
- UNIMPLEMENTED();
+ addCommand<SetDepthBounds>(minDepthBounds, maxDepthBounds);
}
void CommandBuffer::setStencilCompareMask(VkStencilFaceFlags faceMask, uint32_t compareMask)
{
- // Note: The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled
-
// faceMask must not be 0
ASSERT(faceMask != 0);
- UNIMPLEMENTED();
+ addCommand<SetStencilCompareMask>(faceMask, compareMask);
}
void CommandBuffer::setStencilWriteMask(VkStencilFaceFlags faceMask, uint32_t writeMask)
{
- // Note: The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled
-
// faceMask must not be 0
ASSERT(faceMask != 0);
- UNIMPLEMENTED();
+ addCommand<SetStencilWriteMask>(faceMask, writeMask);
}
void CommandBuffer::setStencilReference(VkStencilFaceFlags faceMask, uint32_t reference)
{
- // Note: The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled
-
// faceMask must not be 0
ASSERT(faceMask != 0);
- UNIMPLEMENTED();
+ addCommand<SetStencilReference>(faceMask, reference);
}
-void CommandBuffer::bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout,
+void CommandBuffer::bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout vkLayout,
uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets,
uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets)
{
ASSERT(state == RECORDING);
- if(dynamicOffsetCount > 0)
- {
- UNIMPLEMENTED();
- }
-
for(uint32_t i = 0; i < descriptorSetCount; i++)
{
- addCommand<BindDescriptorSet>(pipelineBindPoint, firstSet + i, pDescriptorSets[i]);
+ auto descriptorSetIndex = firstSet + i;
+ auto layout = vk::Cast(vkLayout);
+ auto setLayout = layout->getDescriptorSetLayout(descriptorSetIndex);
+
+ auto numDynamicDescriptors = setLayout->getDynamicDescriptorCount();
+ ASSERT(numDynamicDescriptors == 0 || pDynamicOffsets != nullptr);
+ ASSERT(dynamicOffsetCount >= numDynamicDescriptors);
+
+ addCommand<BindDescriptorSet>(
+ pipelineBindPoint, descriptorSetIndex, pDescriptorSets[i],
+ dynamicOffsetCount, pDynamicOffsets);
+
+ pDynamicOffsets += numDynamicDescriptors;
+ dynamicOffsetCount -= numDynamicDescriptors;
}
}
@@ -822,12 +1315,12 @@ void CommandBuffer::bindIndexBuffer(VkBuffer buffer, VkDeviceSize offset, VkInde
void CommandBuffer::dispatch(uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ)
{
- UNIMPLEMENTED();
+ addCommand<Dispatch>(groupCountX, groupCountY, groupCountZ);
}
void CommandBuffer::dispatchIndirect(VkBuffer buffer, VkDeviceSize offset)
{
- UNIMPLEMENTED();
+ addCommand<DispatchIndirect>(buffer, offset);
}
void CommandBuffer::copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions)
@@ -946,7 +1439,16 @@ void CommandBuffer::clearAttachments(uint32_t attachmentCount, const VkClearAtta
void CommandBuffer::resolveImage(VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout,
uint32_t regionCount, const VkImageResolve* pRegions)
{
- UNIMPLEMENTED();
+ ASSERT(state == RECORDING);
+ ASSERT(srcImageLayout == VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL ||
+ srcImageLayout == VK_IMAGE_LAYOUT_GENERAL);
+ ASSERT(dstImageLayout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL ||
+ dstImageLayout == VK_IMAGE_LAYOUT_GENERAL);
+
+ for(uint32_t i = 0; i < regionCount; i++)
+ {
+ addCommand<ResolveImage>(srcImage, dstImage, pRegions[i]);
+ }
}
void CommandBuffer::setEvent(VkEvent event, VkPipelineStageFlags stageMask)
@@ -968,7 +1470,15 @@ void CommandBuffer::waitEvents(uint32_t eventCount, const VkEvent* pEvents, VkPi
uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers,
uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers)
{
- UNIMPLEMENTED();
+ ASSERT(state == RECORDING);
+
+ // TODO(b/117835459): Since we always do a full barrier, all memory barrier related arguments are ignored
+
+ // Note: srcStageMask and dstStageMask are currently ignored
+ for(uint32_t i = 0; i < eventCount; i++)
+ {
+ addCommand<WaitEvent>(pEvents[i]);
+ }
}
void CommandBuffer::draw(uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance)
@@ -983,12 +1493,12 @@ void CommandBuffer::drawIndexed(uint32_t indexCount, uint32_t instanceCount, uin
void CommandBuffer::drawIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
{
- UNIMPLEMENTED();
+ addCommand<DrawIndirect>(buffer, offset, drawCount, stride);
}
void CommandBuffer::drawIndexedIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
{
- UNIMPLEMENTED();
+ addCommand<DrawIndexedIndirect>(buffer, offset, drawCount, stride);
}
void CommandBuffer::submit(CommandBuffer::ExecutionState& executionState)
@@ -1005,4 +1515,12 @@ void CommandBuffer::submit(CommandBuffer::ExecutionState& executionState)
state = EXECUTABLE;
}
+void CommandBuffer::submitSecondary(CommandBuffer::ExecutionState& executionState) const
+{
+ for(auto& command : *commands)
+ {
+ command->play(executionState);
+ }
+}
+
} // namespace vk
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkCommandBuffer.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkCommandBuffer.hpp
index 38d8e59f289..0aeeb962a32 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkCommandBuffer.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkCommandBuffer.hpp
@@ -17,11 +17,14 @@
#include "VkConfig.h"
#include "VkObject.hpp"
+#include "VkDescriptorSet.hpp"
+#include "Device/Context.hpp"
#include <memory>
#include <vector>
namespace sw
{
+ class Context;
class Renderer;
}
@@ -121,11 +124,36 @@ public:
// TODO(sugoi): Move ExecutionState out of CommandBuffer (possibly into Device)
struct ExecutionState
{
+ struct PipelineState
+ {
+ Pipeline *pipeline = nullptr;
+ vk::DescriptorSet::Bindings descriptorSets = {};
+ vk::DescriptorSet::DynamicOffsets descriptorDynamicOffsets = {};
+ };
+
sw::Renderer* renderer = nullptr;
RenderPass* renderPass = nullptr;
Framebuffer* renderPassFramebuffer = nullptr;
- Pipeline* pipelines[VK_PIPELINE_BIND_POINT_RANGE_SIZE] = {};
- VkDescriptorSet boundDescriptorSets[VK_PIPELINE_BIND_POINT_RANGE_SIZE][MAX_BOUND_DESCRIPTOR_SETS] = { { VK_NULL_HANDLE } };
+ std::array<PipelineState, VK_PIPELINE_BIND_POINT_RANGE_SIZE> pipelineState;
+
+ struct DynamicState
+ {
+ VkViewport viewport;
+ VkRect2D scissor;
+ sw::Color<float> blendConstants;
+ float depthBiasConstantFactor = 0.0f;
+ float depthBiasClamp = 0.0f;
+ float depthBiasSlopeFactor = 0.0f;
+ float minDepthBounds = 0.0f;
+ float maxDepthBounds = 0.0f;
+
+ uint32_t compareMask[2] = { 0 };
+ uint32_t writeMask[2] = { 0 };
+ uint32_t reference[2] = { 0 };
+ };
+ DynamicState dynamicState;
+
+ sw::PushConstantStorage pushConstants;
struct VertexInputBinding
{
@@ -137,9 +165,11 @@ public:
VkIndexType indexType;
void bindAttachments();
+ void bindVertexInputs(sw::Context& context, int firstVertex, int firstInstance);
};
void submit(CommandBuffer::ExecutionState& executionState);
+ void submitSecondary(CommandBuffer::ExecutionState& executionState) const;
class Command;
private:
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkCommandPool.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkCommandPool.cpp
index 85c5738e4f7..0a7dc1b74ba 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkCommandPool.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkCommandPool.cpp
@@ -16,6 +16,7 @@
#include "VkCommandBuffer.hpp"
#include "VkDestroy.h"
#include <algorithm>
+#include <new>
namespace vk
{
@@ -23,7 +24,10 @@ namespace vk
CommandPool::CommandPool(const VkCommandPoolCreateInfo* pCreateInfo, void* mem)
{
// FIXME (b/119409619): use an allocator here so we can control all memory allocations
- commandBuffers = new std::set<VkCommandBuffer>();
+ void* deviceMemory = vk::allocate(sizeof(std::set<VkCommandBuffer>), REQUIRED_MEMORY_ALIGNMENT,
+ DEVICE_MEMORY, GetAllocationScope());
+ ASSERT(deviceMemory);
+ commandBuffers = new (deviceMemory) std::set<VkCommandBuffer>();
}
void CommandPool::destroy(const VkAllocationCallbacks* pAllocator)
@@ -35,7 +39,7 @@ void CommandPool::destroy(const VkAllocationCallbacks* pAllocator)
}
// FIXME (b/119409619): use an allocator here so we can control all memory allocations
- delete commandBuffers;
+ vk::deallocate(commandBuffers, DEVICE_MEMORY);
}
size_t CommandPool::ComputeRequiredAllocationSize(const VkCommandPoolCreateInfo* pCreateInfo)
@@ -47,7 +51,11 @@ VkResult CommandPool::allocateCommandBuffers(VkCommandBufferLevel level, uint32_
{
for(uint32_t i = 0; i < commandBufferCount; i++)
{
- DispatchableCommandBuffer* commandBuffer = new (DEVICE_MEMORY) DispatchableCommandBuffer(level);
+ // FIXME (b/119409619): use an allocator here so we can control all memory allocations
+ void* deviceMemory = vk::allocate(sizeof(DispatchableCommandBuffer), REQUIRED_MEMORY_ALIGNMENT,
+ DEVICE_MEMORY, DispatchableCommandBuffer::GetAllocationScope());
+ ASSERT(deviceMemory);
+ DispatchableCommandBuffer* commandBuffer = new (deviceMemory) DispatchableCommandBuffer(level);
if(commandBuffer)
{
pCommandBuffers[i] = *commandBuffer;
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkConfig.h b/chromium/third_party/swiftshader/src/Vulkan/VkConfig.h
index 84c9d4b4cb1..3aa5de84a43 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkConfig.h
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkConfig.h
@@ -50,13 +50,23 @@ enum
MAX_IMAGE_LEVELS_2D = 14,
MAX_IMAGE_LEVELS_3D = 11,
MAX_IMAGE_LEVELS_CUBE = 14,
- MAX_IMAGE_ARRAY_LAYERS = 11,
+ MAX_IMAGE_ARRAY_LAYERS = 2048,
};
enum
{
MAX_BOUND_DESCRIPTOR_SETS = 4,
MAX_VERTEX_INPUT_BINDINGS = 16,
+ MAX_PUSH_CONSTANT_SIZE = 128,
+};
+
+enum
+{
+ MAX_DESCRIPTOR_SET_UNIFORM_BUFFERS_DYNAMIC = 8,
+ MAX_DESCRIPTOR_SET_STORAGE_BUFFERS_DYNAMIC = 4,
+ MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC =
+ MAX_DESCRIPTOR_SET_UNIFORM_BUFFERS_DYNAMIC +
+ MAX_DESCRIPTOR_SET_STORAGE_BUFFERS_DYNAMIC,
};
enum
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkDebug.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkDebug.cpp
index b82ef809e1f..262f70004fb 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkDebug.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkDebug.cpp
@@ -14,25 +14,61 @@
#include "VkDebug.hpp"
+#include <string>
#include <stdarg.h>
namespace vk
{
-void trace(const char *format, ...)
+
+void tracev(const char *format, va_list args)
{
+#ifndef SWIFTSHADER_DISABLE_TRACE
if(false)
{
- FILE *file = fopen("debug.txt", "a");
+ FILE *file = fopen(TRACE_OUTPUT_FILE, "a");
if(file)
{
- va_list vararg;
- va_start(vararg, format);
- vfprintf(file, format, vararg);
- va_end(vararg);
-
+ vfprintf(file, format, args);
fclose(file);
}
}
+#endif
+}
+
+void trace(const char *format, ...)
+{
+ va_list vararg;
+ va_start(vararg, format);
+ tracev(format, vararg);
+ va_end(vararg);
+}
+
+void warn(const char *format, ...)
+{
+ va_list vararg;
+ va_start(vararg, format);
+ tracev(format, vararg);
+ va_end(vararg);
+
+ va_start(vararg, format);
+ vfprintf(stderr, format, vararg);
+ va_end(vararg);
}
+
+void abort(const char *format, ...)
+{
+ va_list vararg;
+
+ va_start(vararg, format);
+ tracev(format, vararg);
+ va_end(vararg);
+
+ va_start(vararg, format);
+ vfprintf(stderr, format, vararg);
+ va_end(vararg);
+
+ ::abort();
+}
+
}
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkDebug.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkDebug.hpp
index 6bad986b76f..3133932721f 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkDebug.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkDebug.hpp
@@ -27,77 +27,85 @@
namespace vk
{
-// Outputs text to the debugging log
-void trace(const char *format, ...);
-inline void trace() {}
+ // Outputs text to the debugging log
+ void trace(const char *format, ...);
+ inline void trace() {}
+
+ // Outputs text to the debugging log and prints to stderr.
+ void warn(const char *format, ...);
+ inline void warn() {}
+
+ // Outputs the message to the debugging log and stderr, and calls abort().
+ void abort(const char *format, ...);
}
-// A macro to output a trace of a function call and its arguments to the debugging log
+// A macro to output a trace of a function call and its arguments to the
+// debugging log. Disabled if SWIFTSHADER_DISABLE_TRACE is defined.
#if defined(SWIFTSHADER_DISABLE_TRACE)
#define TRACE(message, ...) (void(0))
#else
-#define TRACE(message, ...) vk::trace("trace: %s(%d): " message "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__)
+#define TRACE(message, ...) vk::trace("%s:%d TRACE: " message "\n", __FILE__, __LINE__, ##__VA_ARGS__)
#endif
-// A macro to output a function call and its arguments to the debugging log, to denote an item in need of fixing.
-#if defined(SWIFTSHADER_DISABLE_TRACE)
-#define FIXME(message, ...) (void(0))
-#else
-#define FIXME(message, ...) do {vk::trace("fixme: %s(%d): " message "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__); assert(false); abort();} while(false)
-#endif
+// A macro to print a warning message to the debugging log and stderr to denote
+// an issue that needs fixing.
+#define FIXME(message, ...) vk::warn("%s:%d FIXME: " message "\n", __FILE__, __LINE__, ##__VA_ARGS__);
-// A macro to output a function call and its arguments to the debugging log, in case of error.
-#if defined(SWIFTSHADER_DISABLE_TRACE)
-#define ERR(message, ...) (void(0))
+// A macro to print a warning message to the debugging log and stderr.
+#define WARN(message, ...) vk::warn("%s:%d WARNING: " message "\n", __FILE__, __LINE__, ##__VA_ARGS__);
+
+// A macro that prints the message to the debugging log and stderr and
+// immediately aborts execution of the application.
+//
+// Note: This will terminate the application regardless of build flags!
+// Use with extreme caution!
+#undef ABORT
+#define ABORT(message, ...) vk::abort("%s:%d ABORT: " message "\n", __FILE__, __LINE__, ##__VA_ARGS__)
+
+// A macro that delegates to:
+// ABORT() in debug builds (!NDEBUG || DCHECK_ALWAYS_ON)
+// or
+// WARN() in release builds (NDEBUG && !DCHECK_ALWAYS_ON)
+#undef DABORT
+#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
+#define DABORT(message, ...) ABORT(message, ##__VA_ARGS__)
#else
-#define ERR(message, ...) do {vk::trace("err: %s(%d): " message "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__); assert(false); abort();} while(false)
+#define DABORT(message, ...) WARN(message, ##__VA_ARGS__)
#endif
-// A macro asserting a condition and outputting failures to the debug log
+// A macro asserting a condition.
+// If the condition fails, the condition and message is passed to DABORT().
+#undef ASSERT_MSG
+#define ASSERT_MSG(expression, format, ...) do { \
+ if(!(expression)) { \
+ DABORT("ASSERT(%s): " format "\n", #expression, ##__VA_ARGS__); \
+ } } while(0)
+
+// A macro asserting a condition.
+// If the condition fails, the condition is passed to DABORT().
#undef ASSERT
-#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
#define ASSERT(expression) do { \
if(!(expression)) { \
- ERR("\t! Assert failed in %s(%d): "#expression"\n", __FUNCTION__, __LINE__); \
- assert(expression); \
- abort(); \
+ DABORT("ASSERT(%s)\n", #expression); \
} } while(0)
-#else
-#define ASSERT(expression) (void(0))
-#endif
-// A macro to indicate unimplemented functionality
+// A macro to indicate unimplemented functionality.
#undef UNIMPLEMENTED
-#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
-#define UNIMPLEMENTED(...) do { \
- vk::trace("\t! Unimplemented: %s(%d): ", __FUNCTION__, __LINE__); \
- vk::trace(__VA_ARGS__); \
- vk::trace("\n"); \
- assert(false); \
- abort(); \
- } while(0)
-#else
- #define UNIMPLEMENTED(...) FIXME("\t! Unimplemented: %s(%d)\n", __FUNCTION__, __LINE__)
-#endif
+#define UNIMPLEMENTED(format, ...) DABORT("UNIMPLEMENTED: " format, ##__VA_ARGS__)
-// A macro for code which is not expected to be reached under valid assumptions
+// A macro for code which is not expected to be reached under valid assumptions.
#undef UNREACHABLE
-#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
-#define UNREACHABLE(value) do { \
- ERR("\t! Unreachable case reached: %s(%d). %s: %d\n", __FUNCTION__, __LINE__, #value, value); \
- assert(false); \
- abort(); \
- } while(0)
-#else
- #define UNREACHABLE(value) ERR("\t! Unreachable reached: %s(%d). %s: %d\n", __FUNCTION__, __LINE__, #value, value)
-#endif
+#define UNREACHABLE(format, ...) DABORT("UNREACHABLE: " format, ##__VA_ARGS__)
-// A macro asserting a condition and outputting failures to the debug log, or return when in release mode.
+// A macro asserting a condition and performing a return.
#undef ASSERT_OR_RETURN
+#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
+#define ASSERT_OR_RETURN(expression) ASSERT(expression)
+#else
#define ASSERT_OR_RETURN(expression) do { \
if(!(expression)) { \
- ASSERT(expression); \
return; \
} } while(0)
+#endif
#endif // VK_DEBUG_H_
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorPool.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorPool.cpp
index 1de234e386c..28907bb9b1e 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorPool.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorPool.cpp
@@ -47,11 +47,12 @@ size_t DescriptorPool::ComputeRequiredAllocationSize(const VkDescriptorPoolCreat
VkResult DescriptorPool::allocateSets(uint32_t descriptorSetCount, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets)
{
+ // FIXME (b/119409619): use an allocator here so we can control all memory allocations
std::unique_ptr<size_t[]> layoutSizes(new size_t[descriptorSetCount]);
for(uint32_t i = 0; i < descriptorSetCount; i++)
{
pDescriptorSets[i] = VK_NULL_HANDLE;
- layoutSizes[i] = Cast(pSetLayouts[i])->getSize();
+ layoutSizes[i] = Cast(pSetLayouts[i])->getDescriptorSetAllocationSize();
}
VkResult result = allocateSets(&(layoutSizes[0]), descriptorSetCount, pDescriptorSets);
@@ -79,7 +80,7 @@ VkDescriptorSet DescriptorPool::findAvailableMemory(size_t size)
size_t freeSpace = poolSize - nextItemStart;
if(freeSpace >= size)
{
- return reinterpret_cast<VkDescriptorSet>(nextItemStart);
+ return reinterpret_cast<VkDescriptorSet>(reinterpret_cast<char*>(pool) + nextItemStart);
}
// Second, look for space at the beginning of the pool
@@ -121,17 +122,19 @@ VkResult DescriptorPool::allocateSets(size_t* sizes, uint32_t numAllocs, VkDescr
}
// Attempt to allocate single chunk of memory
- VkDescriptorSet memory = findAvailableMemory(totalSize);
- if(memory != VK_NULL_HANDLE)
{
- pDescriptorSets[0] = memory;
- for(uint32_t i = 1; i < numAllocs; i++)
+ VkDescriptorSet memory = findAvailableMemory(totalSize);
+ if(memory != VK_NULL_HANDLE)
{
- pDescriptorSets[i] =
- reinterpret_cast<VkDescriptorSet>(reinterpret_cast<char*>(memory) + sizes[i - 1]);
- nodes.insert(Node(pDescriptorSets[i], sizes[i]));
+ for(uint32_t i = 0; i < numAllocs; i++)
+ {
+ pDescriptorSets[i] = memory;
+ nodes.insert(Node(pDescriptorSets[i], sizes[i]));
+ memory = reinterpret_cast<VkDescriptorSet>(reinterpret_cast<char*>(memory) + sizes[i]);
+ }
+
+ return VK_SUCCESS;
}
- return VK_SUCCESS;
}
// Atttempt to allocate each descriptor set separately
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSet.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSet.hpp
new file mode 100644
index 00000000000..dee38b54439
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSet.hpp
@@ -0,0 +1,44 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef VK_DESCRIPTOR_SET_HPP_
+#define VK_DESCRIPTOR_SET_HPP_
+
+// Intentionally not including VkObject.hpp here due to b/127920555
+
+#include <array>
+#include <memory>
+
+namespace vk
+{
+ class DescriptorSetLayout;
+
+ class DescriptorSet
+ {
+ public:
+ using Bindings = std::array<vk::DescriptorSet*, vk::MAX_BOUND_DESCRIPTOR_SETS>;
+ using DynamicOffsets = std::array<uint32_t, vk::MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC>;
+
+ DescriptorSetLayout* layout;
+ uint8_t data[1];
+ };
+
+ inline DescriptorSet* Cast(VkDescriptorSet object)
+ {
+ return reinterpret_cast<DescriptorSet*>(object);
+ }
+
+} // namespace vk
+
+#endif // VK_DESCRIPTOR_SET_HPP_
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSetLayout.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSetLayout.cpp
index 14f43a87c6b..ded7cd0f8f6 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSetLayout.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSetLayout.cpp
@@ -13,6 +13,11 @@
// limitations under the License.
#include "VkDescriptorSetLayout.hpp"
+
+#include "VkDescriptorSet.hpp"
+#include "VkSampler.hpp"
+#include "VkImageView.hpp"
+#include "VkBufferView.hpp"
#include "System/Types.hpp"
#include <algorithm>
@@ -21,17 +26,6 @@
namespace
{
-struct DescriptorSet
-{
- vk::DescriptorSetLayout* layout;
- uint8_t data[];
-};
-
-static inline DescriptorSet* Cast(VkDescriptorSet object)
-{
- return reinterpret_cast<DescriptorSet*>(object);
-}
-
static bool UsesImmutableSamplers(const VkDescriptorSetLayoutBinding& binding)
{
return (((binding.descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER) ||
@@ -75,17 +69,7 @@ DescriptorSetLayout::DescriptorSetLayout(const VkDescriptorSetLayoutCreateInfo*
void DescriptorSetLayout::destroy(const VkAllocationCallbacks* pAllocator)
{
- for(uint32_t i = 0; i < bindingCount; i++)
- {
- if(UsesImmutableSamplers(bindings[i]))
- {
- // A single allocation is used for all immutable samplers, so only a single deallocation is needed.
- vk::deallocate(const_cast<VkSampler*>(bindings[i].pImmutableSamplers), pAllocator);
- break;
- }
- }
-
- vk::deallocate(bindings, pAllocator);
+ vk::deallocate(bindings, pAllocator); // This allocation also contains pImmutableSamplers
}
size_t DescriptorSetLayout::ComputeRequiredAllocationSize(const VkDescriptorSetLayoutCreateInfo* pCreateInfo)
@@ -110,11 +94,13 @@ size_t DescriptorSetLayout::GetDescriptorSize(VkDescriptorType type)
case VK_DESCRIPTOR_TYPE_SAMPLER:
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
+ return sizeof(SampledImageDescriptor);
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
+ case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
+ return sizeof(StorageImageDescriptor);
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
return sizeof(VkDescriptorImageInfo);
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
- case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
return sizeof(VkBufferView);
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
@@ -128,13 +114,20 @@ size_t DescriptorSetLayout::GetDescriptorSize(VkDescriptorType type)
return 0;
}
-size_t DescriptorSetLayout::getSize() const
+size_t DescriptorSetLayout::getDescriptorSetAllocationSize() const
+{
+ // vk::DescriptorSet has a layout member field.
+ return sizeof(vk::DescriptorSetLayout*) + getDescriptorSetDataSize();
+}
+
+size_t DescriptorSetLayout::getDescriptorSetDataSize() const
{
size_t size = 0;
for(uint32_t i = 0; i < bindingCount; i++)
{
size += bindings[i].descriptorCount * GetDescriptorSize(bindings[i].descriptorType);
}
+
return size;
}
@@ -148,14 +141,14 @@ uint32_t DescriptorSetLayout::getBindingIndex(uint32_t binding) const
}
}
- ASSERT(false); // Bindings should always be found
+ DABORT("Invalid DescriptorSetLayout binding: %d", int(binding));
return 0;
}
void DescriptorSetLayout::initialize(VkDescriptorSet vkDescriptorSet)
{
// Use a pointer to this descriptor set layout as the descriptor set's header
- DescriptorSet* descriptorSet = ::Cast(vkDescriptorSet);
+ DescriptorSet* descriptorSet = vk::Cast(vkDescriptorSet);
descriptorSet->layout = this;
uint8_t* mem = descriptorSet->data;
@@ -166,8 +159,8 @@ void DescriptorSetLayout::initialize(VkDescriptorSet vkDescriptorSet)
{
for(uint32_t j = 0; j < bindings[i].descriptorCount; j++)
{
- VkDescriptorImageInfo* imageInfo = reinterpret_cast<VkDescriptorImageInfo*>(mem);
- imageInfo->sampler = bindings[i].pImmutableSamplers[j];
+ SampledImageDescriptor* imageSamplerDescriptor = reinterpret_cast<SampledImageDescriptor*>(mem);
+ imageSamplerDescriptor->sampler = vk::Cast(bindings[i].pImmutableSamplers[j]);
mem += typeSize;
}
}
@@ -178,81 +171,322 @@ void DescriptorSetLayout::initialize(VkDescriptorSet vkDescriptorSet)
}
}
-size_t DescriptorSetLayout::getBindingOffset(uint32_t binding) const
+size_t DescriptorSetLayout::getBindingCount() const
+{
+ return bindingCount;
+}
+
+size_t DescriptorSetLayout::getBindingOffset(uint32_t binding, size_t arrayElement) const
+{
+ uint32_t index = getBindingIndex(binding);
+ auto typeSize = GetDescriptorSize(bindings[index].descriptorType);
+ return bindingOffsets[index] + OFFSET(DescriptorSet, data[0]) + (typeSize * arrayElement);
+}
+
+bool DescriptorSetLayout::isDynamic(VkDescriptorType type)
+{
+ return type == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC ||
+ type == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC;
+}
+
+bool DescriptorSetLayout::isBindingDynamic(uint32_t binding) const
+{
+ uint32_t index = getBindingIndex(binding);
+ return isDynamic(bindings[index].descriptorType);
+}
+
+uint32_t DescriptorSetLayout::getDynamicDescriptorCount() const
+{
+ uint32_t count = 0;
+ for (size_t i = 0; i < bindingCount; i++)
+ {
+ if (isDynamic(bindings[i].descriptorType))
+ {
+ count += bindings[i].descriptorCount;
+ }
+ }
+ return count;
+}
+
+uint32_t DescriptorSetLayout::getDynamicDescriptorOffset(uint32_t binding) const
+{
+ uint32_t n = getBindingIndex(binding);
+ ASSERT(isDynamic(bindings[n].descriptorType));
+
+ uint32_t index = 0;
+ for (uint32_t i = 0; i < n; i++)
+ {
+ if (isDynamic(bindings[i].descriptorType))
+ {
+ index += bindings[i].descriptorCount;
+ }
+ }
+ return index;
+}
+
+VkDescriptorSetLayoutBinding const & DescriptorSetLayout::getBindingLayout(uint32_t binding) const
{
uint32_t index = getBindingIndex(binding);
- return bindingOffsets[index] + OFFSET(DescriptorSet, data[0]);
+ return bindings[index];
}
-uint8_t* DescriptorSetLayout::getOffsetPointer(VkDescriptorSet descriptorSet, uint32_t binding, uint32_t arrayElement, uint32_t count, size_t* typeSize) const
+uint8_t* DescriptorSetLayout::getOffsetPointer(DescriptorSet *descriptorSet, uint32_t binding, uint32_t arrayElement, uint32_t count, size_t* typeSize) const
{
uint32_t index = getBindingIndex(binding);
*typeSize = GetDescriptorSize(bindings[index].descriptorType);
size_t byteOffset = bindingOffsets[index] + (*typeSize * arrayElement);
- ASSERT(((*typeSize * count) + byteOffset) <= getSize()); // Make sure the operation will not go out of bounds
- return &(::Cast(descriptorSet)->data[byteOffset]);
+ ASSERT(((*typeSize * count) + byteOffset) <= getDescriptorSetDataSize()); // Make sure the operation will not go out of bounds
+ return &descriptorSet->data[byteOffset];
}
-const uint8_t* DescriptorSetLayout::GetInputData(const VkWriteDescriptorSet& descriptorWrites)
+const uint8_t* DescriptorSetLayout::GetInputData(const VkWriteDescriptorSet& writeDescriptorSet)
{
- switch(descriptorWrites.descriptorType)
+ switch(writeDescriptorSet.descriptorType)
{
case VK_DESCRIPTOR_TYPE_SAMPLER:
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
- case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
- return reinterpret_cast<const uint8_t*>(descriptorWrites.pImageInfo);
+ return reinterpret_cast<const uint8_t*>(writeDescriptorSet.pImageInfo);
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
- case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
- return reinterpret_cast<const uint8_t*>(descriptorWrites.pTexelBufferView);
- break;
+ return reinterpret_cast<const uint8_t*>(writeDescriptorSet.pTexelBufferView);
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
- return reinterpret_cast<const uint8_t*>(descriptorWrites.pBufferInfo);
- break;
+ return reinterpret_cast<const uint8_t*>(writeDescriptorSet.pBufferInfo);
+ case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
+ case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
+ ASSERT("descriptorType has custom handling");
default:
- UNIMPLEMENTED();
+ UNIMPLEMENTED("descriptorType");
return nullptr;
}
}
-void DescriptorSetLayout::WriteDescriptorSet(const VkWriteDescriptorSet& descriptorWrites)
+void DescriptorSetLayout::WriteDescriptorSet(const VkWriteDescriptorSet& writeDescriptorSet)
{
- DescriptorSet* dstSet = ::Cast(descriptorWrites.dstSet);
+ DescriptorSet* dstSet = vk::Cast(writeDescriptorSet.dstSet);
DescriptorSetLayout* dstLayout = dstSet->layout;
ASSERT(dstLayout);
+ ASSERT(dstLayout->bindings[dstLayout->getBindingIndex(writeDescriptorSet.dstBinding)].descriptorType == writeDescriptorSet.descriptorType);
size_t typeSize = 0;
- uint8_t* memToWrite = dstLayout->getOffsetPointer(descriptorWrites.dstSet, descriptorWrites.dstBinding, descriptorWrites.dstArrayElement, descriptorWrites.descriptorCount, &typeSize);
-
- // If the dstBinding has fewer than descriptorCount array elements remaining
- // starting from dstArrayElement, then the remainder will be used to update
- // the subsequent binding - dstBinding+1 starting at array element zero. If
- // a binding has a descriptorCount of zero, it is skipped. This behavior
- // applies recursively, with the update affecting consecutive bindings as
- // needed to update all descriptorCount descriptors.
- size_t writeSize = typeSize * descriptorWrites.descriptorCount;
- memcpy(memToWrite, DescriptorSetLayout::GetInputData(descriptorWrites), writeSize);
+ uint8_t* memToWrite = dstLayout->getOffsetPointer(dstSet, writeDescriptorSet.dstBinding, writeDescriptorSet.dstArrayElement, writeDescriptorSet.descriptorCount, &typeSize);
+
+ if(writeDescriptorSet.descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER)
+ {
+ SampledImageDescriptor *imageSampler = reinterpret_cast<SampledImageDescriptor*>(memToWrite);
+
+ for(uint32_t i = 0; i < writeDescriptorSet.descriptorCount; i++)
+ {
+ vk::Sampler *sampler = vk::Cast(writeDescriptorSet.pImageInfo[i].sampler);
+ vk::ImageView *imageView = vk::Cast(writeDescriptorSet.pImageInfo[i].imageView);
+
+ imageSampler[i].sampler = sampler;
+ imageSampler[i].imageView = imageView;
+
+ sw::Texture *texture = &imageSampler[i].texture;
+ memset(texture, 0, sizeof(sw::Texture)); // TODO(b/129523279): eliminate
+
+ auto &subresourceRange = imageView->getSubresourceRange();
+ int baseLevel = subresourceRange.baseMipLevel;
+
+ for(int mipmapLevel = 0; mipmapLevel < sw::MIPMAP_LEVELS; mipmapLevel++)
+ {
+ int level = mipmapLevel - baseLevel; // Level within the image view
+ level = sw::clamp(level, 0, (int)subresourceRange.levelCount);
+
+ VkOffset3D offset = {0, 0, 0};
+ VkImageAspectFlagBits aspect = VK_IMAGE_ASPECT_COLOR_BIT;
+ void *buffer = imageView->getOffsetPointer(offset, aspect);
+
+ sw::Mipmap &mipmap = texture->mipmap[mipmapLevel];
+ mipmap.buffer[0] = buffer;
+
+ VkExtent3D extent = imageView->getMipLevelExtent(level);
+ Format format = imageView->getFormat();
+ int width = extent.width;
+ int height = extent.height;
+ int depth = extent.depth;
+ int pitchP = imageView->rowPitchBytes(aspect, level) / format.bytes();
+ int sliceP = imageView->slicePitchBytes(aspect, level) / format.bytes();
+
+ float exp2LOD = 1.0f;
+
+ if(mipmapLevel == 0)
+ {
+ texture->widthHeightLOD[0] = width * exp2LOD;
+ texture->widthHeightLOD[1] = width * exp2LOD;
+ texture->widthHeightLOD[2] = height * exp2LOD;
+ texture->widthHeightLOD[3] = height * exp2LOD;
+
+ texture->widthLOD[0] = width * exp2LOD;
+ texture->widthLOD[1] = width * exp2LOD;
+ texture->widthLOD[2] = width * exp2LOD;
+ texture->widthLOD[3] = width * exp2LOD;
+
+ texture->heightLOD[0] = height * exp2LOD;
+ texture->heightLOD[1] = height * exp2LOD;
+ texture->heightLOD[2] = height * exp2LOD;
+ texture->heightLOD[3] = height * exp2LOD;
+
+ texture->depthLOD[0] = depth * exp2LOD;
+ texture->depthLOD[1] = depth * exp2LOD;
+ texture->depthLOD[2] = depth * exp2LOD;
+ texture->depthLOD[3] = depth * exp2LOD;
+ }
+
+ if(format.isFloatFormat())
+ {
+ mipmap.fWidth[0] = (float)width / 65536.0f;
+ mipmap.fWidth[1] = (float)width / 65536.0f;
+ mipmap.fWidth[2] = (float)width / 65536.0f;
+ mipmap.fWidth[3] = (float)width / 65536.0f;
+
+ mipmap.fHeight[0] = (float)height / 65536.0f;
+ mipmap.fHeight[1] = (float)height / 65536.0f;
+ mipmap.fHeight[2] = (float)height / 65536.0f;
+ mipmap.fHeight[3] = (float)height / 65536.0f;
+
+ mipmap.fDepth[0] = (float)depth / 65536.0f;
+ mipmap.fDepth[1] = (float)depth / 65536.0f;
+ mipmap.fDepth[2] = (float)depth / 65536.0f;
+ mipmap.fDepth[3] = (float)depth / 65536.0f;
+ }
+
+ short halfTexelU = 0x8000 / width;
+ short halfTexelV = 0x8000 / height;
+ short halfTexelW = 0x8000 / depth;
+
+ mipmap.uHalf[0] = halfTexelU;
+ mipmap.uHalf[1] = halfTexelU;
+ mipmap.uHalf[2] = halfTexelU;
+ mipmap.uHalf[3] = halfTexelU;
+
+ mipmap.vHalf[0] = halfTexelV;
+ mipmap.vHalf[1] = halfTexelV;
+ mipmap.vHalf[2] = halfTexelV;
+ mipmap.vHalf[3] = halfTexelV;
+
+ mipmap.wHalf[0] = halfTexelW;
+ mipmap.wHalf[1] = halfTexelW;
+ mipmap.wHalf[2] = halfTexelW;
+ mipmap.wHalf[3] = halfTexelW;
+
+ mipmap.width[0] = width;
+ mipmap.width[1] = width;
+ mipmap.width[2] = width;
+ mipmap.width[3] = width;
+
+ mipmap.height[0] = height;
+ mipmap.height[1] = height;
+ mipmap.height[2] = height;
+ mipmap.height[3] = height;
+
+ mipmap.depth[0] = depth;
+ mipmap.depth[1] = depth;
+ mipmap.depth[2] = depth;
+ mipmap.depth[3] = depth;
+
+ mipmap.onePitchP[0] = 1;
+ mipmap.onePitchP[1] = pitchP;
+ mipmap.onePitchP[2] = 1;
+ mipmap.onePitchP[3] = pitchP;
+
+ mipmap.pitchP[0] = pitchP;
+ mipmap.pitchP[1] = pitchP;
+ mipmap.pitchP[2] = pitchP;
+ mipmap.pitchP[3] = pitchP;
+
+ mipmap.sliceP[0] = sliceP;
+ mipmap.sliceP[1] = sliceP;
+ mipmap.sliceP[2] = sliceP;
+ mipmap.sliceP[3] = sliceP;
+
+ // TODO(b/129523279)
+ if(false/*format == FORMAT_YV12_BT601 ||
+ format == FORMAT_YV12_BT709 ||
+ format == FORMAT_YV12_JFIF*/)
+ {
+ unsigned int YStride = pitchP;
+ unsigned int YSize = YStride * height;
+ unsigned int CStride = sw::align<16>(YStride / 2);
+ unsigned int CSize = CStride * height / 2;
+
+ mipmap.buffer[1] = (sw::byte*)mipmap.buffer[0] + YSize;
+ mipmap.buffer[2] = (sw::byte*)mipmap.buffer[1] + CSize;
+
+ texture->mipmap[1].width[0] = width / 2;
+ texture->mipmap[1].width[1] = width / 2;
+ texture->mipmap[1].width[2] = width / 2;
+ texture->mipmap[1].width[3] = width / 2;
+ texture->mipmap[1].height[0] = height / 2;
+ texture->mipmap[1].height[1] = height / 2;
+ texture->mipmap[1].height[2] = height / 2;
+ texture->mipmap[1].height[3] = height / 2;
+ texture->mipmap[1].onePitchP[0] = 1;
+ texture->mipmap[1].onePitchP[1] = CStride;
+ texture->mipmap[1].onePitchP[2] = 1;
+ texture->mipmap[1].onePitchP[3] = CStride;
+ }
+ }
+ }
+ }
+ else if (writeDescriptorSet.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_IMAGE)
+ {
+ auto descriptor = reinterpret_cast<StorageImageDescriptor *>(memToWrite);
+ for(uint32_t i = 0; i < writeDescriptorSet.descriptorCount; i++)
+ {
+ auto imageView = vk::Cast(writeDescriptorSet.pImageInfo[i].imageView);
+ descriptor[i].ptr = imageView->getOffsetPointer({0, 0, 0}, VK_IMAGE_ASPECT_COLOR_BIT);
+ descriptor[i].extent = imageView->getMipLevelExtent(0);
+ descriptor[i].rowPitchBytes = imageView->rowPitchBytes(VK_IMAGE_ASPECT_COLOR_BIT, 0);
+ descriptor[i].slicePitchBytes = imageView->slicePitchBytes(VK_IMAGE_ASPECT_COLOR_BIT, 0);
+ descriptor[i].arrayLayers = imageView->getSubresourceRange().layerCount;
+ }
+ }
+ else if (writeDescriptorSet.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER)
+ {
+ auto descriptor = reinterpret_cast<StorageImageDescriptor *>(memToWrite);
+ for (uint32_t i = 0; i < writeDescriptorSet.descriptorCount; i++)
+ {
+ auto bufferView = vk::Cast(writeDescriptorSet.pTexelBufferView[i]);
+ descriptor[i].ptr = bufferView->getPointer();
+ descriptor[i].extent = {bufferView->getElementCount(), 1, 1};
+ descriptor[i].rowPitchBytes = 0;
+ descriptor[i].slicePitchBytes = 0;
+ descriptor[i].arrayLayers = 1;
+ }
+ }
+ else
+ {
+ // If the dstBinding has fewer than descriptorCount array elements remaining
+ // starting from dstArrayElement, then the remainder will be used to update
+ // the subsequent binding - dstBinding+1 starting at array element zero. If
+ // a binding has a descriptorCount of zero, it is skipped. This behavior
+ // applies recursively, with the update affecting consecutive bindings as
+ // needed to update all descriptorCount descriptors.
+ size_t writeSize = typeSize * writeDescriptorSet.descriptorCount;
+ memcpy(memToWrite, DescriptorSetLayout::GetInputData(writeDescriptorSet), writeSize);
+ }
}
void DescriptorSetLayout::CopyDescriptorSet(const VkCopyDescriptorSet& descriptorCopies)
{
- DescriptorSet* srcSet = ::Cast(descriptorCopies.srcSet);
+ DescriptorSet* srcSet = vk::Cast(descriptorCopies.srcSet);
DescriptorSetLayout* srcLayout = srcSet->layout;
ASSERT(srcLayout);
- DescriptorSet* dstSet = ::Cast(descriptorCopies.dstSet);
+ DescriptorSet* dstSet = vk::Cast(descriptorCopies.dstSet);
DescriptorSetLayout* dstLayout = dstSet->layout;
ASSERT(dstLayout);
size_t srcTypeSize = 0;
- uint8_t* memToRead = srcLayout->getOffsetPointer(descriptorCopies.srcSet, descriptorCopies.srcBinding, descriptorCopies.srcArrayElement, descriptorCopies.descriptorCount, &srcTypeSize);
+ uint8_t* memToRead = srcLayout->getOffsetPointer(srcSet, descriptorCopies.srcBinding, descriptorCopies.srcArrayElement, descriptorCopies.descriptorCount, &srcTypeSize);
size_t dstTypeSize = 0;
- uint8_t* memToWrite = dstLayout->getOffsetPointer(descriptorCopies.dstSet, descriptorCopies.dstBinding, descriptorCopies.dstArrayElement, descriptorCopies.descriptorCount, &dstTypeSize);
+ uint8_t* memToWrite = dstLayout->getOffsetPointer(dstSet, descriptorCopies.dstBinding, descriptorCopies.dstArrayElement, descriptorCopies.descriptorCount, &dstTypeSize);
ASSERT(srcTypeSize == dstTypeSize);
size_t writeSize = dstTypeSize * descriptorCopies.descriptorCount;
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSetLayout.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSetLayout.hpp
index d332c28c6b5..621e13f5186 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSetLayout.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorSetLayout.hpp
@@ -17,9 +17,34 @@
#include "VkObject.hpp"
+#include "Vulkan/VkSampler.hpp"
+#include "Vulkan/VkImageView.hpp"
+#include "Device/Sampler.hpp"
+
namespace vk
{
+class DescriptorSet;
+
+// TODO(b/129523279): Move to the Device or Pipeline layer.
+struct SampledImageDescriptor
+{
+ // TODO(b/129523279): Minimize to the data actually needed.
+ vk::Sampler *sampler;
+ vk::ImageView *imageView;
+
+ sw::Texture texture;
+};
+
+struct StorageImageDescriptor
+{
+ void *ptr;
+ VkExtent3D extent;
+ int rowPitchBytes;
+ int slicePitchBytes;
+ int arrayLayers;
+};
+
class DescriptorSetLayout : public Object<DescriptorSetLayout, VkDescriptorSetLayout>
{
public:
@@ -34,13 +59,42 @@ public:
static void CopyDescriptorSet(const VkCopyDescriptorSet& descriptorCopies);
void initialize(VkDescriptorSet descriptorSet);
- size_t getSize() const;
- size_t getBindingOffset(uint32_t binding) const;
+
+ // Returns the total size of the descriptor set in bytes.
+ size_t getDescriptorSetAllocationSize() const;
+
+ // Returns the number of bindings in the descriptor set.
+ size_t getBindingCount() const;
+
+ // Returns the byte offset from the base address of the descriptor set for
+ // the given binding and array element within that binding.
+ size_t getBindingOffset(uint32_t binding, size_t arrayElement) const;
+
+ // Returns the number of descriptors across all bindings that are dynamic
+ // (see isBindingDynamic).
+ uint32_t getDynamicDescriptorCount() const;
+
+ // Returns the relative offset into the pipeline's dynamic offsets array for
+ // the given binding. This offset should be added to the base offset
+ // returned by PipelineLayout::getDynamicOffsetBase() to produce the
+ // starting index for dynamic descriptors.
+ uint32_t getDynamicDescriptorOffset(uint32_t binding) const;
+
+ // Returns true if the given binding is of type:
+ // VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC or
+ // VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
+ bool isBindingDynamic(uint32_t binding) const;
+
+ // Returns the VkDescriptorSetLayoutBinding for the given binding.
+ VkDescriptorSetLayoutBinding const & getBindingLayout(uint32_t binding) const;
+
+ uint8_t* getOffsetPointer(DescriptorSet *descriptorSet, uint32_t binding, uint32_t arrayElement, uint32_t count, size_t* typeSize) const;
private:
+ size_t getDescriptorSetDataSize() const;
uint32_t getBindingIndex(uint32_t binding) const;
- uint8_t* getOffsetPointer(VkDescriptorSet descriptorSet, uint32_t binding, uint32_t arrayElement, uint32_t count, size_t* typeSize) const;
static const uint8_t* GetInputData(const VkWriteDescriptorSet& descriptorWrites);
+ static bool isDynamic(VkDescriptorType type);
VkDescriptorSetLayoutCreateFlags flags;
uint32_t bindingCount;
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorUpdateTemplate.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorUpdateTemplate.cpp
new file mode 100644
index 00000000000..2a1400fcf7b
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorUpdateTemplate.cpp
@@ -0,0 +1,74 @@
+// Copyright 2018 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "VkDescriptorUpdateTemplate.hpp"
+#include "VkDescriptorSet.hpp"
+#include "VkDescriptorSetLayout.hpp"
+#include <cstring>
+
+namespace vk
+{
+ DescriptorUpdateTemplate::DescriptorUpdateTemplate(const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, void* mem) :
+ descriptorUpdateEntryCount(pCreateInfo->descriptorUpdateEntryCount),
+ descriptorUpdateEntries(reinterpret_cast<VkDescriptorUpdateTemplateEntry*>(mem)),
+ descriptorSetLayout(Cast(pCreateInfo->descriptorSetLayout))
+ {
+ for(uint32_t i = 0; i < descriptorUpdateEntryCount; i++)
+ {
+ descriptorUpdateEntries[i] = pCreateInfo->pDescriptorUpdateEntries[i];
+ }
+ }
+
+ size_t DescriptorUpdateTemplate::ComputeRequiredAllocationSize(const VkDescriptorUpdateTemplateCreateInfo* info)
+ {
+ return info->descriptorUpdateEntryCount * sizeof(VkDescriptorUpdateTemplateEntry);
+ }
+
+ void DescriptorUpdateTemplate::updateDescriptorSet(VkDescriptorSet vkDescriptorSet, const void* pData)
+ {
+ DescriptorSet* descriptorSet = vk::Cast(vkDescriptorSet);
+
+ for(uint32_t i = 0; i < descriptorUpdateEntryCount; i++)
+ {
+ auto const &entry = descriptorUpdateEntries[i];
+ auto binding = entry.dstBinding;
+ auto arrayElement = entry.dstArrayElement;
+ for (uint32_t descriptorIndex = 0; descriptorIndex < entry.descriptorCount; descriptorIndex++)
+ {
+ while (arrayElement == descriptorSetLayout->getBindingLayout(binding).descriptorCount)
+ {
+ // If descriptorCount is greater than the number of remaining
+ // array elements in the destination binding, those affect
+ // consecutive bindings in a manner similar to
+ // VkWriteDescriptorSet.
+ // If a binding has a descriptorCount of zero, it is skipped.
+ arrayElement = 0;
+ binding++;
+ }
+
+ uint8_t *memToRead = (uint8_t *)pData + entry.offset + descriptorIndex * entry.stride;
+ size_t typeSize = 0;
+ uint8_t* memToWrite = descriptorSetLayout->getOffsetPointer(
+ descriptorSet,
+ binding,
+ arrayElement,
+ 1, // count
+ &typeSize);
+ memcpy(memToWrite, memToRead, typeSize);
+
+ arrayElement++;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorUpdateTemplate.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorUpdateTemplate.hpp
new file mode 100644
index 00000000000..315e05943ad
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkDescriptorUpdateTemplate.hpp
@@ -0,0 +1,47 @@
+// Copyright 2018 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef VK_DESCRIPTOR_UPDATE_TEMPLATE_HPP_
+#define VK_DESCRIPTOR_UPDATE_TEMPLATE_HPP_
+
+#include "VkObject.hpp"
+
+namespace vk
+{
+ class DescriptorSetLayout;
+
+ class DescriptorUpdateTemplate : public Object<DescriptorUpdateTemplate, VkDescriptorUpdateTemplate>
+ {
+ public:
+ DescriptorUpdateTemplate(const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, void* mem);
+ ~DescriptorUpdateTemplate() = delete;
+
+ static size_t ComputeRequiredAllocationSize(const VkDescriptorUpdateTemplateCreateInfo* info);
+
+ void updateDescriptorSet(VkDescriptorSet descriptorSet, const void* pData);
+
+ private:
+ uint32_t descriptorUpdateEntryCount = 0;
+ VkDescriptorUpdateTemplateEntry* descriptorUpdateEntries = nullptr;
+ DescriptorSetLayout* descriptorSetLayout = nullptr;
+ };
+
+ static inline DescriptorUpdateTemplate* Cast(VkDescriptorUpdateTemplate object)
+ {
+ return reinterpret_cast<DescriptorUpdateTemplate*>(object);
+ }
+
+} // namespace vk
+
+#endif // VK_DESCRIPTOR_UPDATE_TEMPLATE_HPP_
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkDevice.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkDevice.cpp
index b56a41aadf3..ca91985b4fd 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkDevice.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkDevice.cpp
@@ -18,6 +18,7 @@
#include "VkDebug.hpp"
#include "VkDescriptorSetLayout.hpp"
#include "VkQueue.hpp"
+#include "Device/Blitter.hpp"
#include <new> // Must #include this to use "placement new"
@@ -48,8 +49,11 @@ Device::Device(const Device::CreateInfo* info, void* mem)
if(pCreateInfo->enabledLayerCount)
{
// "The ppEnabledLayerNames and enabledLayerCount members of VkDeviceCreateInfo are deprecated and their values must be ignored by implementations."
- UNIMPLEMENTED(); // TODO(b/119321052): UNIMPLEMENTED() should be used only for features that must still be implemented. Use a more informational macro here.
+ UNIMPLEMENTED("enabledLayerCount"); // TODO(b/119321052): UNIMPLEMENTED() should be used only for features that must still be implemented. Use a more informational macro here.
}
+
+ // FIXME (b/119409619): use an allocator here so we can control all memory allocations
+ blitter = new sw::Blitter();
}
void Device::destroy(const VkAllocationCallbacks* pAllocator)
@@ -60,6 +64,8 @@ void Device::destroy(const VkAllocationCallbacks* pAllocator)
}
vk::deallocate(queues, pAllocator);
+
+ delete blitter;
}
size_t Device::ComputeRequiredAllocationSize(const Device::CreateInfo* info)
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkDevice.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkDevice.hpp
index 24e09234c3d..ae096f2f07a 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkDevice.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkDevice.hpp
@@ -17,6 +17,11 @@
#include "VkObject.hpp"
+namespace sw
+{
+ class Blitter;
+};
+
namespace vk
{
@@ -46,11 +51,13 @@ public:
VkPhysicalDevice getPhysicalDevice() const { return physicalDevice; }
void updateDescriptorSets(uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites,
uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
+ sw::Blitter* getBlitter() const { return blitter; }
private:
VkPhysicalDevice physicalDevice = VK_NULL_HANDLE;
Queue* queues = nullptr;
uint32_t queueCount = 0;
+ sw::Blitter* blitter = nullptr;
};
using DispatchableDevice = DispatchableObject<Device, VkDevice>;
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkEvent.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkEvent.hpp
index 538668b584e..47355646f43 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkEvent.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkEvent.hpp
@@ -34,9 +34,12 @@ public:
return 0;
}
- void signal()
+ bool signal()
{
status = VK_EVENT_SET;
+ bool wasWaiting = waiting;
+ waiting = false;
+ return wasWaiting;
}
void reset()
@@ -49,8 +52,19 @@ public:
return status;
}
+ bool wait()
+ {
+ if(status != VK_EVENT_SET)
+ {
+ waiting = true;
+ }
+
+ return waiting;
+ }
+
private:
VkResult status = VK_EVENT_RESET;
+ bool waiting = false;
};
static inline Event* Cast(VkEvent object)
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkFormat.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkFormat.cpp
new file mode 100644
index 00000000000..325b61a9c02
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkFormat.cpp
@@ -0,0 +1,1974 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "VkFormat.h"
+#include "VkDebug.hpp"
+#include "System/Math.hpp"
+
+namespace vk
+{
+
+bool Format::isSignedNonNormalizedInteger() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8B8_SINT:
+ case VK_FORMAT_B8G8R8_SINT:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_B8G8R8A8_SINT:
+ case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+ case VK_FORMAT_A2R10G10B10_SINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_SINT_PACK32:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16B16_SINT:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32B32_SINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R64_SINT:
+ case VK_FORMAT_R64G64_SINT:
+ case VK_FORMAT_R64G64B64_SINT:
+ case VK_FORMAT_R64G64B64A64_SINT:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool Format::isUnsignedNonNormalizedInteger() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8B8_UINT:
+ case VK_FORMAT_B8G8R8_UINT:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_B8G8R8A8_UINT:
+ case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+ case VK_FORMAT_A2R10G10B10_UINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_UINT_PACK32:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16B16_UINT:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32B32_UINT:
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R64_UINT:
+ case VK_FORMAT_R64G64_UINT:
+ case VK_FORMAT_R64G64B64_UINT:
+ case VK_FORMAT_R64G64B64A64_UINT:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool Format::isNonNormalizedInteger() const
+{
+ return isSignedNonNormalizedInteger() || isUnsignedNonNormalizedInteger();
+}
+
+bool Format::isStencil() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_D16_UNORM_S8_UINT:
+ case VK_FORMAT_D24_UNORM_S8_UINT:
+ case VK_FORMAT_S8_UINT:
+ case VK_FORMAT_D32_SFLOAT_S8_UINT:
+ return true;
+ case VK_FORMAT_D16_UNORM:
+ case VK_FORMAT_X8_D24_UNORM_PACK32:
+ case VK_FORMAT_D32_SFLOAT:
+ default:
+ return false;
+ }
+}
+
+bool Format::isDepth() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_D16_UNORM:
+ case VK_FORMAT_D16_UNORM_S8_UINT:
+ case VK_FORMAT_X8_D24_UNORM_PACK32:
+ case VK_FORMAT_D24_UNORM_S8_UINT:
+ case VK_FORMAT_D32_SFLOAT:
+ case VK_FORMAT_D32_SFLOAT_S8_UINT:
+ return true;
+ case VK_FORMAT_S8_UINT:
+ default:
+ return false;
+ }
+}
+
+bool Format::hasQuadLayout() const
+{
+ return false;
+}
+
+bool Format::isSRGBformat() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_R8_SRGB:
+ case VK_FORMAT_R8G8_SRGB:
+ case VK_FORMAT_R8G8B8_SRGB:
+ case VK_FORMAT_B8G8R8_SRGB:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_B8G8R8A8_SRGB:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool Format::isSRGBreadable() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SRGB:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool Format::isSRGBwritable() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_UNDEFINED:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SRGB:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool Format::isFloatFormat() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_R4G4_UNORM_PACK8:
+ case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
+ case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_B5G6R5_UNORM_PACK16:
+ case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
+ case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
+ case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8_USCALED:
+ case VK_FORMAT_R8_SSCALED:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8_SRGB:
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8_USCALED:
+ case VK_FORMAT_R8G8_SSCALED:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8_SRGB:
+ case VK_FORMAT_R8G8B8_UNORM:
+ case VK_FORMAT_R8G8B8_SNORM:
+ case VK_FORMAT_R8G8B8_USCALED:
+ case VK_FORMAT_R8G8B8_SSCALED:
+ case VK_FORMAT_R8G8B8_UINT:
+ case VK_FORMAT_R8G8B8_SINT:
+ case VK_FORMAT_R8G8B8_SRGB:
+ case VK_FORMAT_B8G8R8_UNORM:
+ case VK_FORMAT_B8G8R8_SNORM:
+ case VK_FORMAT_B8G8R8_USCALED:
+ case VK_FORMAT_B8G8R8_SSCALED:
+ case VK_FORMAT_B8G8R8_UINT:
+ case VK_FORMAT_B8G8R8_SINT:
+ case VK_FORMAT_B8G8R8_SRGB:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_R8G8B8A8_USCALED:
+ case VK_FORMAT_R8G8B8A8_SSCALED:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SNORM:
+ case VK_FORMAT_B8G8R8A8_USCALED:
+ case VK_FORMAT_B8G8R8A8_SSCALED:
+ case VK_FORMAT_B8G8R8A8_UINT:
+ case VK_FORMAT_B8G8R8A8_SINT:
+ case VK_FORMAT_B8G8R8A8_SRGB:
+ case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
+ case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
+ case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+ case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
+ case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
+ case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_UINT_PACK32:
+ case VK_FORMAT_A2R10G10B10_SINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_UINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_SINT_PACK32:
+ case VK_FORMAT_R16_UNORM:
+ case VK_FORMAT_R16_SNORM:
+ case VK_FORMAT_R16_USCALED:
+ case VK_FORMAT_R16_SSCALED:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R16G16_SNORM:
+ case VK_FORMAT_R16G16_USCALED:
+ case VK_FORMAT_R16G16_SSCALED:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16B16_UNORM:
+ case VK_FORMAT_R16G16B16_SNORM:
+ case VK_FORMAT_R16G16B16_USCALED:
+ case VK_FORMAT_R16G16B16_SSCALED:
+ case VK_FORMAT_R16G16B16_UINT:
+ case VK_FORMAT_R16G16B16_SINT:
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_R16G16B16A16_SNORM:
+ case VK_FORMAT_R16G16B16A16_USCALED:
+ case VK_FORMAT_R16G16B16A16_SSCALED:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32B32_UINT:
+ case VK_FORMAT_R32G32B32_SINT:
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R64_UINT:
+ case VK_FORMAT_R64_SINT:
+ case VK_FORMAT_R64G64_UINT:
+ case VK_FORMAT_R64G64_SINT:
+ case VK_FORMAT_R64G64B64_UINT:
+ case VK_FORMAT_R64G64B64_SINT:
+ case VK_FORMAT_R64G64B64A64_UINT:
+ case VK_FORMAT_R64G64B64A64_SINT:
+ case VK_FORMAT_D16_UNORM:
+ case VK_FORMAT_X8_D24_UNORM_PACK32:
+ case VK_FORMAT_S8_UINT:
+ case VK_FORMAT_D16_UNORM_S8_UINT:
+ case VK_FORMAT_D24_UNORM_S8_UINT:
+ case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
+ return false;
+ case VK_FORMAT_R16_SFLOAT:
+ case VK_FORMAT_R16G16_SFLOAT:
+ case VK_FORMAT_R16G16B16_SFLOAT:
+ case VK_FORMAT_R16G16B16A16_SFLOAT:
+ case VK_FORMAT_R32_SFLOAT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ case VK_FORMAT_R32G32B32_SFLOAT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ case VK_FORMAT_R64_SFLOAT:
+ case VK_FORMAT_R64G64_SFLOAT:
+ case VK_FORMAT_R64G64B64_SFLOAT:
+ case VK_FORMAT_R64G64B64A64_SFLOAT:
+ case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
+ case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
+ case VK_FORMAT_D32_SFLOAT:
+ case VK_FORMAT_D32_SFLOAT_S8_UINT:
+ return true;
+ default:
+ UNIMPLEMENTED("Format: %d", int(format));
+ }
+
+ return false;
+}
+
+bool Format::isCompressed() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
+ case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
+ case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
+ case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
+ case VK_FORMAT_BC2_UNORM_BLOCK:
+ case VK_FORMAT_BC2_SRGB_BLOCK:
+ case VK_FORMAT_BC3_UNORM_BLOCK:
+ case VK_FORMAT_BC3_SRGB_BLOCK:
+ case VK_FORMAT_BC4_UNORM_BLOCK:
+ case VK_FORMAT_BC4_SNORM_BLOCK:
+ case VK_FORMAT_BC5_UNORM_BLOCK:
+ case VK_FORMAT_BC5_SNORM_BLOCK:
+ case VK_FORMAT_BC6H_UFLOAT_BLOCK:
+ case VK_FORMAT_BC6H_SFLOAT_BLOCK:
+ case VK_FORMAT_BC7_UNORM_BLOCK:
+ case VK_FORMAT_BC7_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
+ case VK_FORMAT_EAC_R11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11_SNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
+ return true;
+ default:
+ return false;
+ }
+}
+
+VkFormat Format::compatibleFormat() const
+{
+ // According to the Vulkan 1.1 Spec, 37.1.6. Format Compatibility Classes:
+ // "Uncompressed color formats are compatible with each other if they occupy
+ // the same number of bits per texel block. Compressed color formats are
+ // compatible with each other if the only difference between them is the
+ // numerical type of the uncompressed pixels (e.g. signed vs. unsigned, or
+ // SRGB vs. UNORM encoding). Each depth/stencil format is only compatible
+ // with itself. In the following table, all the formats in the same row are
+ // compatible."
+
+ // Return a single format per group of compatible formats, for quick comparison
+ switch(format)
+ {
+ // 8 - bit, Block size 1 byte, 1 texel / block
+ case VK_FORMAT_R4G4_UNORM_PACK8:
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8_USCALED:
+ case VK_FORMAT_R8_SSCALED:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8_SRGB:
+ return VK_FORMAT_R8_UNORM;
+
+ // 16 - bit, Block size 2 bytes, 1 texel / block
+ case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
+ case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_B5G6R5_UNORM_PACK16:
+ case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
+ case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
+ case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8_USCALED:
+ case VK_FORMAT_R8G8_SSCALED:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8_SRGB:
+ case VK_FORMAT_R16_UNORM:
+ case VK_FORMAT_R16_SNORM:
+ case VK_FORMAT_R16_USCALED:
+ case VK_FORMAT_R16_SSCALED:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_SFLOAT:
+ case VK_FORMAT_R10X6_UNORM_PACK16:
+ case VK_FORMAT_R12X4_UNORM_PACK16:
+ return VK_FORMAT_R16_UNORM;
+
+ // 24 - bit, Block size 3 bytes, 1 texel / block
+ case VK_FORMAT_R8G8B8_UNORM:
+ case VK_FORMAT_R8G8B8_SNORM:
+ case VK_FORMAT_R8G8B8_USCALED:
+ case VK_FORMAT_R8G8B8_SSCALED:
+ case VK_FORMAT_R8G8B8_UINT:
+ case VK_FORMAT_R8G8B8_SINT:
+ case VK_FORMAT_R8G8B8_SRGB:
+ case VK_FORMAT_B8G8R8_UNORM:
+ case VK_FORMAT_B8G8R8_SNORM:
+ case VK_FORMAT_B8G8R8_USCALED:
+ case VK_FORMAT_B8G8R8_SSCALED:
+ case VK_FORMAT_B8G8R8_UINT:
+ case VK_FORMAT_B8G8R8_SINT:
+ case VK_FORMAT_B8G8R8_SRGB:
+ return VK_FORMAT_R8G8B8_UNORM;
+
+ // 32 - bit, Block size 4 bytes, 1 texel / block
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_R8G8B8A8_USCALED:
+ case VK_FORMAT_R8G8B8A8_SSCALED:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SNORM:
+ case VK_FORMAT_B8G8R8A8_USCALED:
+ case VK_FORMAT_B8G8R8A8_SSCALED:
+ case VK_FORMAT_B8G8R8A8_UINT:
+ case VK_FORMAT_B8G8R8A8_SINT:
+ case VK_FORMAT_B8G8R8A8_SRGB:
+ case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
+ case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
+ case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+ case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
+ case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
+ case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_UINT_PACK32:
+ case VK_FORMAT_A2R10G10B10_SINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_UINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_SINT_PACK32:
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R16G16_SNORM:
+ case VK_FORMAT_R16G16_USCALED:
+ case VK_FORMAT_R16G16_SSCALED:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_SFLOAT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32_SFLOAT:
+ case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
+ case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
+ case VK_FORMAT_R10X6G10X6_UNORM_2PACK16:
+ case VK_FORMAT_R12X4G12X4_UNORM_2PACK16:
+ return VK_FORMAT_R8G8B8A8_UNORM;
+
+ // 48 - bit, Block size 6 bytes, 1 texel / block
+ case VK_FORMAT_R16G16B16_UNORM:
+ case VK_FORMAT_R16G16B16_SNORM:
+ case VK_FORMAT_R16G16B16_USCALED:
+ case VK_FORMAT_R16G16B16_SSCALED:
+ case VK_FORMAT_R16G16B16_UINT:
+ case VK_FORMAT_R16G16B16_SINT:
+ case VK_FORMAT_R16G16B16_SFLOAT:
+ return VK_FORMAT_R16G16B16_UNORM;
+
+ // 64 - bit, Block size 8 bytes, 1 texel / block
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_R16G16B16A16_SNORM:
+ case VK_FORMAT_R16G16B16A16_USCALED:
+ case VK_FORMAT_R16G16B16A16_SSCALED:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R16G16B16A16_SFLOAT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ case VK_FORMAT_R64_UINT:
+ case VK_FORMAT_R64_SINT:
+ case VK_FORMAT_R64_SFLOAT:
+ return VK_FORMAT_R16G16B16A16_UNORM;
+
+ // 96 - bit, Block size 12 bytes, 1 texel / block
+ case VK_FORMAT_R32G32B32_UINT:
+ case VK_FORMAT_R32G32B32_SINT:
+ case VK_FORMAT_R32G32B32_SFLOAT:
+ return VK_FORMAT_R32G32B32_UINT;
+
+ // 128 - bit, Block size 16 bytes, 1 texel / block
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ case VK_FORMAT_R64G64_UINT:
+ case VK_FORMAT_R64G64_SINT:
+ case VK_FORMAT_R64G64_SFLOAT:
+ return VK_FORMAT_R32G32B32A32_UINT;
+
+ // 192 - bit, Block size 24 bytes, 1 texel / block
+ case VK_FORMAT_R64G64B64_UINT:
+ case VK_FORMAT_R64G64B64_SINT:
+ case VK_FORMAT_R64G64B64_SFLOAT:
+ return VK_FORMAT_R64G64B64_UINT;
+
+ // 256 - bit, Block size 32 bytes, 1 texel / block
+ case VK_FORMAT_R64G64B64A64_UINT:
+ case VK_FORMAT_R64G64B64A64_SINT:
+ case VK_FORMAT_R64G64B64A64_SFLOAT:
+ return VK_FORMAT_R64G64B64A64_UINT;
+
+ // BC1_RGB(64 bit), Block size 8 bytes, 16 texels / block
+ case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
+ case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
+ return VK_FORMAT_BC1_RGB_UNORM_BLOCK;
+
+ // BC1_RGBA(64 bit), Block size 8 bytes, 16 texels / block
+ case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
+ case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
+ return VK_FORMAT_BC1_RGBA_UNORM_BLOCK;
+
+ // BC2(128 bit), Block size 16 bytes, 16 texels / block
+ case VK_FORMAT_BC2_UNORM_BLOCK:
+ case VK_FORMAT_BC2_SRGB_BLOCK:
+ return VK_FORMAT_BC2_UNORM_BLOCK;
+
+ // BC3(128 bit), Block size 16 bytes, 16 texels / block
+ case VK_FORMAT_BC3_UNORM_BLOCK:
+ case VK_FORMAT_BC3_SRGB_BLOCK:
+ return VK_FORMAT_BC3_UNORM_BLOCK;
+
+ // BC4(64 bit), Block size 8 bytes, 16 texels / block
+ case VK_FORMAT_BC4_UNORM_BLOCK:
+ case VK_FORMAT_BC4_SNORM_BLOCK:
+ return VK_FORMAT_BC4_UNORM_BLOCK;
+
+ // BC5(128 bit), Block size 16 bytes, 16 texels / block
+ case VK_FORMAT_BC5_UNORM_BLOCK:
+ case VK_FORMAT_BC5_SNORM_BLOCK:
+ return VK_FORMAT_BC5_UNORM_BLOCK;
+
+ // BC6H(128 bit), Block size 16 bytes, 16 texels / block
+ case VK_FORMAT_BC6H_UFLOAT_BLOCK:
+ case VK_FORMAT_BC6H_SFLOAT_BLOCK:
+ return VK_FORMAT_BC6H_UFLOAT_BLOCK;
+
+ // BC7(128 bit), Block size 16 bytes, 16 texels / block
+ case VK_FORMAT_BC7_UNORM_BLOCK:
+ case VK_FORMAT_BC7_SRGB_BLOCK:
+ return VK_FORMAT_BC7_UNORM_BLOCK;
+
+ // ETC2_RGB(64 bit), Block size 8 bytes, 16 texels / block
+ case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
+ return VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK;
+
+ // ETC2_RGBA(64 bit), Block size 8 bytes, 16 texels / block
+ case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
+ return VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK;
+
+ // ETC2_EAC_RGBA(64 bit), Block size 8 bytes, 16 texels / block
+ case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
+ return VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK;
+
+ // EAC_R(64 bit), Block size 8 bytes, 16 texels / block
+ case VK_FORMAT_EAC_R11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11_SNORM_BLOCK:
+ return VK_FORMAT_EAC_R11_UNORM_BLOCK;
+
+ // EAC_RG(128 bit), Block size 16 bytes, 16 texels / block
+ case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
+ return VK_FORMAT_EAC_R11G11_UNORM_BLOCK;
+
+ // ASTC_4x4(128 bit), Block size 16 bytes, 16 texels / block
+ case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_4x4_UNORM_BLOCK;
+
+ // ASTC_5x4(128 bit), Block size 16 bytes, 20 texels / block
+ case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_5x4_UNORM_BLOCK;
+
+ // ASTC_5x5(128 bit), Block size 16 bytes, 25 texels / block
+ case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_5x5_UNORM_BLOCK;
+
+ // ASTC_6x5(128 bit), Block size 16 bytes, 30 texels / block
+ case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_6x5_UNORM_BLOCK;
+
+ // ASTC_6x6(128 bit), Block size 16 bytes, 36 texels / block
+ case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_6x6_UNORM_BLOCK;
+
+ // ASTC_8x5(128 bit), Block size 16 bytes, 40 texels / block
+ case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_8x5_UNORM_BLOCK;
+
+ // ASTC_8x6(128 bit), Block size 16 bytes, 48 texels / block
+ case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_8x6_UNORM_BLOCK;
+
+ // ASTC_8x8(128 bit), Block size 16 bytes, 64 texels / block
+ case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_8x8_UNORM_BLOCK;
+
+ // ASTC_10x5(128 bit), Block size 16 bytes, 50 texels / block
+ case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_10x5_UNORM_BLOCK;
+
+ // ASTC_10x6(128 bit), Block size 16 bytes, 60 texels / block
+ case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_10x6_UNORM_BLOCK;
+
+ // ASTC_10x8(128 bit), Block size 16 bytes, 80 texels / block
+ case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_10x8_UNORM_BLOCK;
+
+ // ASTC_10x10(128 bit), Block size 16 bytes, 100 texels / block
+ case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_10x10_UNORM_BLOCK;
+
+ // ASTC_12x10(128 bit), Block size 16 bytes, 120 texels / block
+ case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_12x10_UNORM_BLOCK;
+
+ // ASTC_12x12(128 bit), Block size 16 bytes, 144 texels / block
+ case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
+ return VK_FORMAT_ASTC_12x12_UNORM_BLOCK;
+
+ // All other formats are only compatible with themselves
+ default:
+ return format;
+ }
+}
+
+bool Format::isCompatible(const Format& other) const
+{
+ return compatibleFormat() == other.compatibleFormat();
+}
+
+int Format::blockWidth() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
+ case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
+ case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
+ case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
+ case VK_FORMAT_BC2_UNORM_BLOCK:
+ case VK_FORMAT_BC2_SRGB_BLOCK:
+ case VK_FORMAT_BC3_UNORM_BLOCK:
+ case VK_FORMAT_BC3_SRGB_BLOCK:
+ case VK_FORMAT_BC4_UNORM_BLOCK:
+ case VK_FORMAT_BC4_SNORM_BLOCK:
+ case VK_FORMAT_BC5_UNORM_BLOCK:
+ case VK_FORMAT_BC5_SNORM_BLOCK:
+ case VK_FORMAT_BC6H_UFLOAT_BLOCK:
+ case VK_FORMAT_BC6H_SFLOAT_BLOCK:
+ case VK_FORMAT_BC7_UNORM_BLOCK:
+ case VK_FORMAT_BC7_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
+ case VK_FORMAT_EAC_R11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11_SNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
+ return 4;
+ case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
+ return 5;
+ case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
+ return 6;
+ case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
+ return 8;
+ case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
+ return 10;
+ case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
+ return 12;
+ default:
+ return 1;
+ }
+}
+
+int Format::blockHeight() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
+ case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
+ case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
+ case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
+ case VK_FORMAT_BC2_UNORM_BLOCK:
+ case VK_FORMAT_BC2_SRGB_BLOCK:
+ case VK_FORMAT_BC3_UNORM_BLOCK:
+ case VK_FORMAT_BC3_SRGB_BLOCK:
+ case VK_FORMAT_BC4_UNORM_BLOCK:
+ case VK_FORMAT_BC4_SNORM_BLOCK:
+ case VK_FORMAT_BC5_UNORM_BLOCK:
+ case VK_FORMAT_BC5_SNORM_BLOCK:
+ case VK_FORMAT_BC6H_UFLOAT_BLOCK:
+ case VK_FORMAT_BC6H_SFLOAT_BLOCK:
+ case VK_FORMAT_BC7_UNORM_BLOCK:
+ case VK_FORMAT_BC7_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
+ case VK_FORMAT_EAC_R11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11_SNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
+ return 4;
+ case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
+ return 5;
+ case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
+ return 6;
+ case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
+ return 8;
+ case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
+ return 10;
+ case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
+ return 12;
+ default:
+ return 1;
+ }
+}
+
+int Format::bytesPerBlock() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
+ case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
+ case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
+ case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
+ case VK_FORMAT_BC4_UNORM_BLOCK:
+ case VK_FORMAT_BC4_SNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
+ case VK_FORMAT_EAC_R11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11_SNORM_BLOCK:
+ return 8;
+ case VK_FORMAT_BC2_UNORM_BLOCK:
+ case VK_FORMAT_BC2_SRGB_BLOCK:
+ case VK_FORMAT_BC3_UNORM_BLOCK:
+ case VK_FORMAT_BC3_SRGB_BLOCK:
+ case VK_FORMAT_BC5_UNORM_BLOCK:
+ case VK_FORMAT_BC5_SNORM_BLOCK:
+ case VK_FORMAT_BC6H_UFLOAT_BLOCK:
+ case VK_FORMAT_BC6H_SFLOAT_BLOCK:
+ case VK_FORMAT_BC7_UNORM_BLOCK:
+ case VK_FORMAT_BC7_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
+ case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
+ return 16;
+ default:
+ return bytes();
+ }
+}
+
+int Format::componentCount() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8_USCALED:
+ case VK_FORMAT_R8_SSCALED:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8_SRGB:
+ case VK_FORMAT_R16_UNORM:
+ case VK_FORMAT_R16_SNORM:
+ case VK_FORMAT_R16_USCALED:
+ case VK_FORMAT_R16_SSCALED:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_SFLOAT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32_SFLOAT:
+ case VK_FORMAT_R64_UINT:
+ case VK_FORMAT_R64_SINT:
+ case VK_FORMAT_R64_SFLOAT:
+ case VK_FORMAT_D16_UNORM:
+ case VK_FORMAT_X8_D24_UNORM_PACK32:
+ case VK_FORMAT_D32_SFLOAT:
+ case VK_FORMAT_S8_UINT:
+ case VK_FORMAT_D16_UNORM_S8_UINT:
+ case VK_FORMAT_D24_UNORM_S8_UINT:
+ case VK_FORMAT_D32_SFLOAT_S8_UINT:
+ return 1;
+ case VK_FORMAT_R4G4_UNORM_PACK8:
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8_USCALED:
+ case VK_FORMAT_R8G8_SSCALED:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8_SRGB:
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R16G16_SNORM:
+ case VK_FORMAT_R16G16_USCALED:
+ case VK_FORMAT_R16G16_SSCALED:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_SFLOAT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ case VK_FORMAT_R64G64_UINT:
+ case VK_FORMAT_R64G64_SINT:
+ case VK_FORMAT_R64G64_SFLOAT:
+ return 2;
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_B5G6R5_UNORM_PACK16:
+ case VK_FORMAT_R8G8B8_UNORM:
+ case VK_FORMAT_R8G8B8_SNORM:
+ case VK_FORMAT_R8G8B8_USCALED:
+ case VK_FORMAT_R8G8B8_SSCALED:
+ case VK_FORMAT_R8G8B8_UINT:
+ case VK_FORMAT_R8G8B8_SINT:
+ case VK_FORMAT_R8G8B8_SRGB:
+ case VK_FORMAT_B8G8R8_UNORM:
+ case VK_FORMAT_B8G8R8_SNORM:
+ case VK_FORMAT_B8G8R8_USCALED:
+ case VK_FORMAT_B8G8R8_SSCALED:
+ case VK_FORMAT_B8G8R8_UINT:
+ case VK_FORMAT_B8G8R8_SINT:
+ case VK_FORMAT_B8G8R8_SRGB:
+ case VK_FORMAT_R16G16B16_UNORM:
+ case VK_FORMAT_R16G16B16_SNORM:
+ case VK_FORMAT_R16G16B16_USCALED:
+ case VK_FORMAT_R16G16B16_SSCALED:
+ case VK_FORMAT_R16G16B16_UINT:
+ case VK_FORMAT_R16G16B16_SINT:
+ case VK_FORMAT_R16G16B16_SFLOAT:
+ case VK_FORMAT_R32G32B32_UINT:
+ case VK_FORMAT_R32G32B32_SINT:
+ case VK_FORMAT_R32G32B32_SFLOAT:
+ case VK_FORMAT_R64G64B64_UINT:
+ case VK_FORMAT_R64G64B64_SINT:
+ case VK_FORMAT_R64G64B64_SFLOAT:
+ case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
+ case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
+ case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
+ return 3;
+ case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
+ case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
+ case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
+ case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
+ case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_R8G8B8A8_USCALED:
+ case VK_FORMAT_R8G8B8A8_SSCALED:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SNORM:
+ case VK_FORMAT_B8G8R8A8_USCALED:
+ case VK_FORMAT_B8G8R8A8_SSCALED:
+ case VK_FORMAT_B8G8R8A8_UINT:
+ case VK_FORMAT_B8G8R8A8_SINT:
+ case VK_FORMAT_B8G8R8A8_SRGB:
+ case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
+ case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
+ case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+ case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
+ case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
+ case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_UINT_PACK32:
+ case VK_FORMAT_A2R10G10B10_SINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_UINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_SINT_PACK32:
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_R16G16B16A16_SNORM:
+ case VK_FORMAT_R16G16B16A16_USCALED:
+ case VK_FORMAT_R16G16B16A16_SSCALED:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R16G16B16A16_SFLOAT:
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ case VK_FORMAT_R64G64B64A64_UINT:
+ case VK_FORMAT_R64G64B64A64_SINT:
+ case VK_FORMAT_R64G64B64A64_SFLOAT:
+ return 4;
+ default:
+ UNIMPLEMENTED("Format: %d", int(format));
+ }
+
+ return 1;
+}
+
+bool Format::isUnsignedComponent(int component) const
+{
+ switch(format)
+ {
+ case VK_FORMAT_UNDEFINED:
+ case VK_FORMAT_R4G4_UNORM_PACK8:
+ case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
+ case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_B5G6R5_UNORM_PACK16:
+ case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
+ case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
+ case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8_SRGB:
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_R8G8_USCALED:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8_SRGB:
+ case VK_FORMAT_R8G8B8_UNORM:
+ case VK_FORMAT_R8G8B8_USCALED:
+ case VK_FORMAT_R8G8B8_UINT:
+ case VK_FORMAT_R8G8B8_SRGB:
+ case VK_FORMAT_B8G8R8_UNORM:
+ case VK_FORMAT_B8G8R8_USCALED:
+ case VK_FORMAT_B8G8R8_UINT:
+ case VK_FORMAT_B8G8R8_SRGB:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_USCALED:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_USCALED:
+ case VK_FORMAT_B8G8R8A8_UINT:
+ case VK_FORMAT_B8G8R8A8_SRGB:
+ case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
+ case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+ case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
+ case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_UINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_UINT_PACK32:
+ case VK_FORMAT_R16_UNORM:
+ case VK_FORMAT_R16_USCALED:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R16G16_USCALED:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16B16_UNORM:
+ case VK_FORMAT_R16G16B16_USCALED:
+ case VK_FORMAT_R16G16B16_UINT:
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_R16G16B16A16_USCALED:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32B32_UINT:
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R64_UINT:
+ case VK_FORMAT_R64G64_UINT:
+ case VK_FORMAT_R64G64B64_UINT:
+ case VK_FORMAT_R64G64B64A64_UINT:
+ case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
+ case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
+ case VK_FORMAT_D16_UNORM:
+ case VK_FORMAT_X8_D24_UNORM_PACK32:
+ case VK_FORMAT_S8_UINT:
+ case VK_FORMAT_D16_UNORM_S8_UINT:
+ case VK_FORMAT_D24_UNORM_S8_UINT:
+ case VK_FORMAT_D32_SFLOAT:
+ case VK_FORMAT_D32_SFLOAT_S8_UINT:
+ case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
+ return true;
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_R8G8B8A8_SSCALED:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_B8G8R8A8_SNORM:
+ case VK_FORMAT_B8G8R8A8_SSCALED:
+ case VK_FORMAT_B8G8R8A8_SINT:
+ case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
+ case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+ case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
+ case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_SINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_SINT_PACK32:
+ case VK_FORMAT_R16G16B16A16_SNORM:
+ case VK_FORMAT_R16G16B16A16_SSCALED:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R16G16B16A16_SFLOAT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ case VK_FORMAT_R64G64B64A64_SINT:
+ case VK_FORMAT_R64G64B64A64_SFLOAT:
+ return false;
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8_USCALED:
+ case VK_FORMAT_R8_SSCALED:
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R16_SNORM:
+ case VK_FORMAT_R16_SSCALED:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_SFLOAT:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32_SFLOAT:
+ case VK_FORMAT_R64_SINT:
+ case VK_FORMAT_R64_SFLOAT:
+ return component >= 1;
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8_SSCALED:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R16G16_SNORM:
+ case VK_FORMAT_R16G16_SSCALED:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_SFLOAT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ case VK_FORMAT_R64G64_SINT:
+ case VK_FORMAT_R64G64_SFLOAT:
+ return component >= 2;
+ case VK_FORMAT_R8G8B8_SNORM:
+ case VK_FORMAT_R8G8B8_SSCALED:
+ case VK_FORMAT_R8G8B8_SINT:
+ case VK_FORMAT_B8G8R8_SNORM:
+ case VK_FORMAT_B8G8R8_SSCALED:
+ case VK_FORMAT_B8G8R8_SINT:
+ case VK_FORMAT_R16G16B16_SNORM:
+ case VK_FORMAT_R16G16B16_SSCALED:
+ case VK_FORMAT_R16G16B16_SINT:
+ case VK_FORMAT_R16G16B16_SFLOAT:
+ case VK_FORMAT_R32G32B32_SINT:
+ case VK_FORMAT_R32G32B32_SFLOAT:
+ case VK_FORMAT_R64G64B64_SINT:
+ case VK_FORMAT_R64G64B64_SFLOAT:
+ return component >= 3;
+ default:
+ UNIMPLEMENTED("Format: %d", int(format));
+ }
+
+ return false;
+}
+
+int Format::bytes() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_UNDEFINED:
+ return 0;
+ case VK_FORMAT_R4G4_UNORM_PACK8:
+ return 1;
+ case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
+ case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_B5G6R5_UNORM_PACK16:
+ case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
+ case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
+ case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
+ return 2;
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8_USCALED:
+ case VK_FORMAT_R8_SSCALED:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8_SRGB:
+ return 1;
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8_USCALED:
+ case VK_FORMAT_R8G8_SSCALED:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8_SRGB:
+ return 2;
+ case VK_FORMAT_R8G8B8_UNORM:
+ case VK_FORMAT_R8G8B8_SNORM:
+ case VK_FORMAT_R8G8B8_USCALED:
+ case VK_FORMAT_R8G8B8_SSCALED:
+ case VK_FORMAT_R8G8B8_UINT:
+ case VK_FORMAT_R8G8B8_SINT:
+ case VK_FORMAT_R8G8B8_SRGB:
+ case VK_FORMAT_B8G8R8_UNORM:
+ case VK_FORMAT_B8G8R8_SNORM:
+ case VK_FORMAT_B8G8R8_USCALED:
+ case VK_FORMAT_B8G8R8_SSCALED:
+ case VK_FORMAT_B8G8R8_UINT:
+ case VK_FORMAT_B8G8R8_SINT:
+ case VK_FORMAT_B8G8R8_SRGB:
+ return 3;
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_R8G8B8A8_USCALED:
+ case VK_FORMAT_R8G8B8A8_SSCALED:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SNORM:
+ case VK_FORMAT_B8G8R8A8_USCALED:
+ case VK_FORMAT_B8G8R8A8_SSCALED:
+ case VK_FORMAT_B8G8R8A8_UINT:
+ case VK_FORMAT_B8G8R8A8_SINT:
+ case VK_FORMAT_B8G8R8A8_SRGB:
+ case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
+ case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
+ case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+ case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
+ case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
+ case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_UINT_PACK32:
+ case VK_FORMAT_A2R10G10B10_SINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_UINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_SINT_PACK32:
+ return 4;
+ case VK_FORMAT_R16_UNORM:
+ case VK_FORMAT_R16_SNORM:
+ case VK_FORMAT_R16_USCALED:
+ case VK_FORMAT_R16_SSCALED:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_SFLOAT:
+ return 2;
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R16G16_SNORM:
+ case VK_FORMAT_R16G16_USCALED:
+ case VK_FORMAT_R16G16_SSCALED:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_SFLOAT:
+ return 4;
+ case VK_FORMAT_R16G16B16_UNORM:
+ case VK_FORMAT_R16G16B16_SNORM:
+ case VK_FORMAT_R16G16B16_USCALED:
+ case VK_FORMAT_R16G16B16_SSCALED:
+ case VK_FORMAT_R16G16B16_UINT:
+ case VK_FORMAT_R16G16B16_SINT:
+ case VK_FORMAT_R16G16B16_SFLOAT:
+ return 6;
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_R16G16B16A16_SNORM:
+ case VK_FORMAT_R16G16B16A16_USCALED:
+ case VK_FORMAT_R16G16B16A16_SSCALED:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R16G16B16A16_SFLOAT:
+ return 8;
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32_SFLOAT:
+ return 4;
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ return 8;
+ case VK_FORMAT_R32G32B32_UINT:
+ case VK_FORMAT_R32G32B32_SINT:
+ case VK_FORMAT_R32G32B32_SFLOAT:
+ return 12;
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ return 16;
+ case VK_FORMAT_R64_UINT:
+ case VK_FORMAT_R64_SINT:
+ case VK_FORMAT_R64_SFLOAT:
+ return 8;
+ case VK_FORMAT_R64G64_UINT:
+ case VK_FORMAT_R64G64_SINT:
+ case VK_FORMAT_R64G64_SFLOAT:
+ return 16;
+ case VK_FORMAT_R64G64B64_UINT:
+ case VK_FORMAT_R64G64B64_SINT:
+ case VK_FORMAT_R64G64B64_SFLOAT:
+ return 24;
+ case VK_FORMAT_R64G64B64A64_UINT:
+ case VK_FORMAT_R64G64B64A64_SINT:
+ case VK_FORMAT_R64G64B64A64_SFLOAT:
+ return 32;
+ case VK_FORMAT_B10G11R11_UFLOAT_PACK32: return 4;
+ case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: return 4;
+ case VK_FORMAT_D16_UNORM: return 2;
+ case VK_FORMAT_X8_D24_UNORM_PACK32: return 4;
+ case VK_FORMAT_D32_SFLOAT: return 4;
+ case VK_FORMAT_S8_UINT: return 1;
+ case VK_FORMAT_D16_UNORM_S8_UINT: return 2; // Separate depth and stencil planes
+ case VK_FORMAT_D24_UNORM_S8_UINT: return 4; // Combined depth and stencil planes
+ case VK_FORMAT_D32_SFLOAT_S8_UINT: return 4; // Separate depth and stencil planes
+ // Note: Compressed formats don't return bytes per pixel,
+ // since these would be fractional. The returned value
+ // is bytes per pixel for 1 column, so 2 for 64 bit 4x4
+ // blocks and 4 for 128 bit 4x4 blocks.
+ case VK_FORMAT_BC1_RGB_UNORM_BLOCK: return 2;
+ case VK_FORMAT_BC1_RGB_SRGB_BLOCK: return 2;
+ case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: return 2;
+ case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: return 2;
+ case VK_FORMAT_BC2_UNORM_BLOCK: return 4;
+ case VK_FORMAT_BC2_SRGB_BLOCK: return 4;
+ case VK_FORMAT_BC3_UNORM_BLOCK: return 4;
+ case VK_FORMAT_BC3_SRGB_BLOCK: return 4;
+ case VK_FORMAT_BC4_UNORM_BLOCK: return 2;
+ case VK_FORMAT_BC4_SNORM_BLOCK: return 2;
+ case VK_FORMAT_BC5_UNORM_BLOCK: return 4;
+ case VK_FORMAT_BC5_SNORM_BLOCK: return 4;
+ case VK_FORMAT_BC6H_UFLOAT_BLOCK: return 4;
+ case VK_FORMAT_BC6H_SFLOAT_BLOCK: return 4;
+ case VK_FORMAT_BC7_UNORM_BLOCK: return 4;
+ case VK_FORMAT_BC7_SRGB_BLOCK: return 4;
+ case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: return 2;
+ case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: return 2;
+ case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: return 2;
+ case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: return 2;
+ case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: return 4;
+ case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: return 4;
+ case VK_FORMAT_EAC_R11_UNORM_BLOCK: return 2;
+ case VK_FORMAT_EAC_R11_SNORM_BLOCK: return 2;
+ case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: return 4;
+ case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: return 4;
+ case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: return 4;
+ case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: return 4;
+ case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: return 0; // FIXME
+ case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM: return 1; // Y plane only
+ default:
+ UNIMPLEMENTED("Format: %d", int(format));
+ }
+
+ return 0;
+}
+
+int Format::pitchB(int width, int border, bool target) const
+{
+ width += 2 * border;
+
+ // Render targets require 2x2 quads
+ if(target || isDepth() || isStencil())
+ {
+ width = sw::align<2>(width);
+ }
+
+ switch(format)
+ {
+ case VK_FORMAT_EAC_R11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11_SNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
+ return 8 * ((width + 3) / 4); // 64 bit per 4x4 block, computed per 4 rows
+ case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
+ return 16 * ((width + 3) / 4); // 128 bit per 4x4 block, computed per 4 rows
+ case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
+ return 16 * ((width + 4) / 5);
+ case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
+ return 16 * ((width + 5) / 6);
+ case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
+ return 16 * ((width + 7) / 8);
+ case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
+ return 16 * ((width + 9) / 10);
+ case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
+ return 16 * ((width + 11) / 12);
+ case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
+ return sw::align<16>(width);
+ default:
+ return bytes() * width;
+ }
+}
+
+int Format::sliceB(int width, int height, int border, bool target) const
+{
+ height += 2 * border;
+
+ // Render targets require 2x2 quads
+ if(target || isDepth() || isStencil())
+ {
+ height = sw::align<2>(height);
+ }
+
+ switch(format)
+ {
+ case VK_FORMAT_EAC_R11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11_SNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
+ return pitchB(width, border, target) * ((height + 3) / 4); // Pitch computed per 4 rows
+ case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
+ return pitchB(width, border, target) * ((height + 4) / 5); // Pitch computed per 5 rows
+ case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
+ return pitchB(width, border, target) * ((height + 5) / 6); // Pitch computed per 6 rows
+ case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
+ return pitchB(width, border, target) * ((height + 7) / 8); // Pitch computed per 8 rows
+ case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
+ return pitchB(width, border, target) * ((height + 9) / 10); // Pitch computed per 10 rows
+ case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
+ return pitchB(width, border, target) * ((height + 11) / 12); // Pitch computed per 12 rows
+ default:
+ return pitchB(width, border, target) * height; // Pitch computed per row
+ }
+}
+
+bool Format::getScale(sw::float4 &scale) const
+{
+ switch(format)
+ {
+ case VK_FORMAT_R4G4_UNORM_PACK8:
+ case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
+ case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
+ scale = sw::vector(0xF, 0xF, 0xF, 0xF);
+ break;
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_R8G8B8_UNORM:
+ case VK_FORMAT_B8G8R8_UNORM:
+ case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_R8_SRGB:
+ case VK_FORMAT_R8G8_SRGB:
+ case VK_FORMAT_R8G8B8_SRGB:
+ case VK_FORMAT_B8G8R8_SRGB:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_B8G8R8A8_SRGB:
+ scale = sw::vector(0xFF, 0xFF, 0xFF, 0xFF);
+ break;
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8B8_SNORM:
+ case VK_FORMAT_B8G8R8_SNORM:
+ case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_B8G8R8A8_SNORM:
+ scale = sw::vector(0x7F, 0x7F, 0x7F, 0x7F);
+ break;
+ case VK_FORMAT_R16_UNORM:
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R16G16B16_UNORM:
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ scale = sw::vector(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF);
+ break;
+ case VK_FORMAT_R16_SNORM:
+ case VK_FORMAT_R16G16_SNORM:
+ case VK_FORMAT_R16G16B16_SNORM:
+ case VK_FORMAT_R16G16B16A16_SNORM:
+ scale = sw::vector(0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF);
+ break;
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8B8_SINT:
+ case VK_FORMAT_R8G8B8_UINT:
+ case VK_FORMAT_B8G8R8_SINT:
+ case VK_FORMAT_B8G8R8_UINT:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+ case VK_FORMAT_B8G8R8A8_SINT:
+ case VK_FORMAT_B8G8R8A8_UINT:
+ case VK_FORMAT_R8_USCALED:
+ case VK_FORMAT_R8G8_USCALED:
+ case VK_FORMAT_R8G8B8_USCALED:
+ case VK_FORMAT_B8G8R8_USCALED:
+ case VK_FORMAT_R8G8B8A8_USCALED:
+ case VK_FORMAT_B8G8R8A8_USCALED:
+ case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
+ case VK_FORMAT_R8_SSCALED:
+ case VK_FORMAT_R8G8_SSCALED:
+ case VK_FORMAT_R8G8B8_SSCALED:
+ case VK_FORMAT_B8G8R8_SSCALED:
+ case VK_FORMAT_R8G8B8A8_SSCALED:
+ case VK_FORMAT_B8G8R8A8_SSCALED:
+ case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ case VK_FORMAT_R16_SSCALED:
+ case VK_FORMAT_R16G16_SSCALED:
+ case VK_FORMAT_R16G16B16_SSCALED:
+ case VK_FORMAT_R16G16B16A16_SSCALED:
+ case VK_FORMAT_R16_USCALED:
+ case VK_FORMAT_R16G16_USCALED:
+ case VK_FORMAT_R16G16B16_USCALED:
+ case VK_FORMAT_R16G16B16A16_USCALED:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32B32_SINT:
+ case VK_FORMAT_R32G32B32_UINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ case VK_FORMAT_R32G32B32_SFLOAT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ case VK_FORMAT_R32_SFLOAT:
+ case VK_FORMAT_R16G16B16A16_SFLOAT:
+ case VK_FORMAT_R16G16B16_SFLOAT:
+ case VK_FORMAT_R16G16_SFLOAT:
+ case VK_FORMAT_R16_SFLOAT:
+ case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
+ case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
+ case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_UINT_PACK32:
+ case VK_FORMAT_A2R10G10B10_SINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_UINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_SINT_PACK32:
+ scale = sw::vector(1.0f, 1.0f, 1.0f, 1.0f);
+ break;
+ case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
+ case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
+ case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
+ scale = sw::vector(0x1F, 0x1F, 0x1F, 0x01);
+ break;
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_B5G6R5_UNORM_PACK16:
+ scale = sw::vector(0x1F, 0x3F, 0x1F, 1.0f);
+ break;
+ case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+ scale = sw::vector(0x3FF, 0x3FF, 0x3FF, 0x03);
+ break;
+ case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
+ scale = sw::vector(0x1FF, 0x1FF, 0x1FF, 0x01);
+ break;
+ case VK_FORMAT_D16_UNORM:
+ scale = sw::vector(0xFFFF, 0.0f, 0.0f, 0.0f);
+ break;
+ case VK_FORMAT_D24_UNORM_S8_UINT:
+ case VK_FORMAT_X8_D24_UNORM_PACK32:
+ scale = sw::vector(0xFFFFFF, 0.0f, 0.0f, 0.0f);
+ break;
+ case VK_FORMAT_D32_SFLOAT:
+ case VK_FORMAT_D32_SFLOAT_S8_UINT:
+ case VK_FORMAT_S8_UINT:
+ scale = sw::vector(1.0f, 1.0f, 1.0f, 1.0f);
+ break;
+ default:
+ return false;
+ }
+
+ return true;
+}
+
+bool Format::has16bitTextureFormat() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ return true;
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_R32_SFLOAT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
+ return false;
+ default:
+ UNIMPLEMENTED("Format: %d", int(format));
+ }
+
+ return false;
+}
+
+bool Format::has8bitTextureComponents() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ return true;
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_R32_SFLOAT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
+ return false;
+ default:
+ UNIMPLEMENTED("Format: %d", int(format));
+ }
+
+ return false;
+}
+
+bool Format::has16bitTextureComponents() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_R32_SFLOAT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
+ return false;
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ return true;
+ default:
+ UNIMPLEMENTED("Format: %d", int(format));
+ }
+
+ return false;
+}
+
+bool Format::has32bitIntegerTextureComponents() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ case VK_FORMAT_R32_SFLOAT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
+ return false;
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R32G32B32A32_UINT:
+ return true;
+ default:
+ UNIMPLEMENTED("Format: %d", int(format));
+ }
+
+ return false;
+}
+
+bool Format::hasYuvFormat() const
+{
+ switch(format)
+ {
+ case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
+ return true;
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_R32_SFLOAT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ return false;
+ default:
+ UNIMPLEMENTED("Format: %d", int(format));
+ }
+
+ return false;
+}
+
+bool Format::isRGBComponent(int component) const
+{
+ switch(format)
+ {
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32_SFLOAT:
+ return component < 1;
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ return component < 2;
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
+ return component < 3;
+ default:
+ UNIMPLEMENTED("Format: %d", int(format));
+ }
+
+ return false;
+}
+
+} // namespace vk \ No newline at end of file
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkFormat.h b/chromium/third_party/swiftshader/src/Vulkan/VkFormat.h
new file mode 100644
index 00000000000..24a3724da3b
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkFormat.h
@@ -0,0 +1,79 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef VK_FORMAT_UTILS_HPP_
+#define VK_FORMAT_UTILS_HPP_
+
+#include <vulkan/vulkan_core.h>
+
+namespace sw
+{
+ struct float4;
+}
+
+namespace vk
+{
+
+class Format
+{
+public:
+ Format() {}
+ Format(VkFormat format) : format(format) {}
+ inline operator VkFormat() const { return format; }
+
+ bool isSignedNonNormalizedInteger() const;
+ bool isUnsignedNonNormalizedInteger() const;
+ bool isNonNormalizedInteger() const;
+
+ bool isStencil() const;
+ bool isDepth() const;
+ bool hasQuadLayout() const;
+
+ bool isSRGBformat() const;
+ bool isSRGBreadable() const;
+ bool isSRGBwritable() const;
+ bool isFloatFormat() const;
+
+ bool isCompatible(const Format& other) const;
+ bool isCompressed() const;
+ int blockWidth() const;
+ int blockHeight() const;
+ int bytesPerBlock() const;
+
+ int componentCount() const;
+ bool isUnsignedComponent(int component) const;
+
+ int bytes() const;
+ int pitchB(int width, int border, bool target) const;
+ int sliceB(int width, int height, int border, bool target) const;
+
+ bool getScale(sw::float4 &scale) const;
+
+ // Texture sampling utilities
+ bool has16bitTextureFormat() const;
+ bool has8bitTextureComponents() const;
+ bool has16bitTextureComponents() const;
+ bool has32bitIntegerTextureComponents() const;
+ bool hasYuvFormat() const;
+ bool isRGBComponent(int component) const;
+
+private:
+ VkFormat compatibleFormat() const;
+
+ VkFormat format = VK_FORMAT_UNDEFINED;
+};
+
+} // namespace vk
+
+#endif // VK_FORMAT_UTILS_HPP_ \ No newline at end of file
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkFramebuffer.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkFramebuffer.cpp
index 1d0f81d9dba..c5bdfde0736 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkFramebuffer.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkFramebuffer.cpp
@@ -15,7 +15,6 @@
#include "VkFramebuffer.hpp"
#include "VkImageView.hpp"
#include "VkRenderPass.hpp"
-#include "Device/Surface.hpp"
#include <algorithm>
#include <memory.h>
@@ -23,7 +22,6 @@ namespace vk
{
Framebuffer::Framebuffer(const VkFramebufferCreateInfo* pCreateInfo, void* mem) :
- renderPass(Cast(pCreateInfo->renderPass)),
attachmentCount(pCreateInfo->attachmentCount),
attachments(reinterpret_cast<ImageView**>(mem))
{
@@ -38,7 +36,7 @@ void Framebuffer::destroy(const VkAllocationCallbacks* pAllocator)
vk::deallocate(attachments, pAllocator);
}
-void Framebuffer::clear(uint32_t clearValueCount, const VkClearValue* pClearValues, const VkRect2D& renderArea)
+void Framebuffer::clear(const RenderPass* renderPass, uint32_t clearValueCount, const VkClearValue* pClearValues, const VkRect2D& renderArea)
{
ASSERT(attachmentCount == renderPass->getAttachmentCount());
@@ -46,8 +44,9 @@ void Framebuffer::clear(uint32_t clearValueCount, const VkClearValue* pClearValu
for(uint32_t i = 0; i < count; i++)
{
const VkAttachmentDescription attachment = renderPass->getAttachment(i);
- bool isDepth = sw::Surface::isDepth(attachment.format);
- bool isStencil = sw::Surface::isStencil(attachment.format);
+ const Format format(attachment.format);
+ bool isDepth = format.isDepth();
+ bool isStencil = format.isStencil();
if(isDepth || isStencil)
{
@@ -69,7 +68,7 @@ void Framebuffer::clear(uint32_t clearValueCount, const VkClearValue* pClearValu
}
}
-void Framebuffer::clear(const VkClearAttachment& attachment, const VkClearRect& rect)
+void Framebuffer::clear(const RenderPass* renderPass, const VkClearAttachment& attachment, const VkClearRect& rect)
{
if(attachment.aspectMask == VK_IMAGE_ASPECT_COLOR_BIT)
{
@@ -99,6 +98,22 @@ ImageView *Framebuffer::getAttachment(uint32_t index) const
return attachments[index];
}
+void Framebuffer::resolve(const RenderPass* renderPass)
+{
+ VkSubpassDescription subpass = renderPass->getCurrentSubpass();
+ if(subpass.pResolveAttachments)
+ {
+ for(uint32_t i = 0; i < subpass.colorAttachmentCount; i++)
+ {
+ uint32_t resolveAttachment = subpass.pResolveAttachments[i].attachment;
+ if(resolveAttachment != VK_ATTACHMENT_UNUSED)
+ {
+ attachments[subpass.pColorAttachments[i].attachment]->resolve(attachments[resolveAttachment]);
+ }
+ }
+ }
+}
+
size_t Framebuffer::ComputeRequiredAllocationSize(const VkFramebufferCreateInfo* pCreateInfo)
{
return pCreateInfo->attachmentCount * sizeof(void*);
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkFramebuffer.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkFramebuffer.hpp
index c615763c06f..8830bb77c9f 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkFramebuffer.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkFramebuffer.hpp
@@ -30,14 +30,14 @@ public:
~Framebuffer() = delete;
void destroy(const VkAllocationCallbacks* pAllocator);
- void clear(uint32_t clearValueCount, const VkClearValue* pClearValues, const VkRect2D& renderArea);
- void clear(const VkClearAttachment& attachment, const VkClearRect& rect);
+ void clear(const RenderPass* renderPass, uint32_t clearValueCount, const VkClearValue* pClearValues, const VkRect2D& renderArea);
+ void clear(const RenderPass* renderPass, const VkClearAttachment& attachment, const VkClearRect& rect);
static size_t ComputeRequiredAllocationSize(const VkFramebufferCreateInfo* pCreateInfo);
ImageView *getAttachment(uint32_t index) const;
+ void resolve(const RenderPass* renderPass);
private:
- RenderPass* renderPass;
uint32_t attachmentCount = 0;
ImageView** attachments = nullptr;
};
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkGetProcAddress.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkGetProcAddress.cpp
index ea7eb7bf96d..e1d3f9cb355 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkGetProcAddress.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkGetProcAddress.cpp
@@ -19,6 +19,11 @@
#include <vulkan/vulkan.h>
+#ifdef __ANDROID__
+#include <cerrno>
+#include <hardware/hwvulkan.h>
+#endif
+
namespace vk
{
@@ -74,14 +79,18 @@ static const std::unordered_map<std::string, PFN_vkVoidFunction> instanceFunctio
MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2KHR),
MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceMemoryProperties2KHR),
MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2KHR),
+#ifndef __ANDROID__
+ // VK_KHR_surface
MAKE_VULKAN_INSTANCE_ENTRY(vkDestroySurfaceKHR),
-#ifdef VK_USE_PLATFORM_XLIB_KHR
- MAKE_VULKAN_INSTANCE_ENTRY(vkCreateXlibSurfaceKHR),
-#endif
MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSurfaceSupportKHR),
MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSurfaceCapabilitiesKHR),
MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSurfaceFormatsKHR),
MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSurfacePresentModesKHR),
+#endif
+#ifdef VK_USE_PLATFORM_XLIB_KHR
+ // VK_KHR_xlib_surface
+ MAKE_VULKAN_INSTANCE_ENTRY(vkCreateXlibSurfaceKHR),
+#endif
};
#undef MAKE_VULKAN_INSTANCE_ENTRY
@@ -248,9 +257,16 @@ static const std::unordered_map<std::string, PFN_vkVoidFunction> deviceFunctionP
MAKE_VULKAN_DEVICE_ENTRY(vkGetImageSparseMemoryRequirements2KHR),
// VK_KHR_maintenance3
MAKE_VULKAN_DEVICE_ENTRY(vkGetDescriptorSetLayoutSupportKHR),
+#ifndef __ANDROID__
+ // VK_KHR_swapchain
MAKE_VULKAN_DEVICE_ENTRY(vkCreateSwapchainKHR),
MAKE_VULKAN_DEVICE_ENTRY(vkDestroySwapchainKHR),
MAKE_VULKAN_DEVICE_ENTRY(vkGetSwapchainImagesKHR),
+ MAKE_VULKAN_DEVICE_ENTRY(vkAcquireNextImageKHR),
+ MAKE_VULKAN_DEVICE_ENTRY(vkQueuePresentKHR),
+ MAKE_VULKAN_DEVICE_ENTRY(vkGetDeviceGroupPresentCapabilitiesKHR),
+ MAKE_VULKAN_DEVICE_ENTRY(vkGetDeviceGroupSurfacePresentModesKHR),
+#endif
};
#undef MAKE_VULKAN_DEVICE_ENTRY
@@ -292,3 +308,50 @@ PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* pName)
}
}
+
+#ifdef __ANDROID__
+
+extern "C" hwvulkan_module_t HAL_MODULE_INFO_SYM;
+
+namespace {
+
+ int CloseDevice(struct hw_device_t *) { return 0; }
+
+ hwvulkan_device_t hal_device = {
+ .common = {
+ .tag = HARDWARE_DEVICE_TAG,
+ .version = HWVULKAN_DEVICE_API_VERSION_0_1,
+ .module = &HAL_MODULE_INFO_SYM.common,
+ .close = CloseDevice,
+ },
+ .EnumerateInstanceExtensionProperties = vkEnumerateInstanceExtensionProperties,
+ .CreateInstance = vkCreateInstance,
+ .GetInstanceProcAddr = vk::GetInstanceProcAddr,
+ };
+
+ int OpenDevice(const hw_module_t *module, const char *id, hw_device_t **device)
+ {
+ if (strcmp(id, HWVULKAN_DEVICE_0) != 0) return -ENOENT;
+ *device = &hal_device.common;
+ return 0;
+ }
+
+ hw_module_methods_t module_methods = { .open = OpenDevice };
+
+}
+
+extern "C" hwvulkan_module_t HAL_MODULE_INFO_SYM =
+{
+ .common =
+ {
+ .tag = HARDWARE_MODULE_TAG,
+ .module_api_version = HWVULKAN_MODULE_API_VERSION_0_1,
+ .hal_api_version = HARDWARE_HAL_API_VERSION,
+ .id = HWVULKAN_HARDWARE_MODULE_ID,
+ .name = "Swiftshader Pastel",
+ .author = "Google",
+ .methods = &module_methods,
+ }
+};
+
+#endif
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkImage.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkImage.cpp
index 463a8f73bf5..5498bb793bc 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkImage.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkImage.cpp
@@ -14,21 +14,21 @@
#include "VkDeviceMemory.hpp"
#include "VkBuffer.hpp"
+#include "VkDevice.hpp"
#include "VkImage.hpp"
#include "Device/Blitter.hpp"
-#include "Device/Surface.hpp"
#include <cstring>
namespace
{
- VkImageAspectFlags GetAspects(VkFormat format)
+ VkImageAspectFlags GetAspects(vk::Format format)
{
// TODO: probably just flatten this out to a full format list, and alter
// isDepth / isStencil etc to check for their aspect
VkImageAspectFlags aspects = 0;
- if (sw::Surface::isDepth(format)) aspects |= VK_IMAGE_ASPECT_DEPTH_BIT;
- if (sw::Surface::isStencil(format)) aspects |= VK_IMAGE_ASPECT_STENCIL_BIT;
+ if (format.isDepth()) aspects |= VK_IMAGE_ASPECT_DEPTH_BIT;
+ if (format.isStencil()) aspects |= VK_IMAGE_ASPECT_STENCIL_BIT;
// TODO: YCbCr planar formats have different aspects
@@ -41,30 +41,25 @@ namespace
namespace vk
{
-Image::Image(const VkImageCreateInfo* pCreateInfo, void* mem) :
- flags(pCreateInfo->flags),
- imageType(pCreateInfo->imageType),
- format(pCreateInfo->format),
- extent(pCreateInfo->extent),
- mipLevels(pCreateInfo->mipLevels),
- arrayLayers(pCreateInfo->arrayLayers),
- samples(pCreateInfo->samples),
- tiling(pCreateInfo->tiling)
+Image::Image(const Image::CreateInfo* pCreateInfo, void* mem) :
+ device(Cast(pCreateInfo->device)),
+ flags(pCreateInfo->pCreateInfo->flags),
+ imageType(pCreateInfo->pCreateInfo->imageType),
+ format(pCreateInfo->pCreateInfo->format),
+ extent(pCreateInfo->pCreateInfo->extent),
+ mipLevels(pCreateInfo->pCreateInfo->mipLevels),
+ arrayLayers(pCreateInfo->pCreateInfo->arrayLayers),
+ samples(pCreateInfo->pCreateInfo->samples),
+ tiling(pCreateInfo->pCreateInfo->tiling),
+ usage(pCreateInfo->pCreateInfo->usage)
{
- blitter = new sw::Blitter();
-
- if (samples != VK_SAMPLE_COUNT_1_BIT)
- {
- UNIMPLEMENTED("Multisample images not yet supported");
- }
}
void Image::destroy(const VkAllocationCallbacks* pAllocator)
{
- delete blitter;
}
-size_t Image::ComputeRequiredAllocationSize(const VkImageCreateInfo* pCreateInfo)
+size_t Image::ComputeRequiredAllocationSize(const Image::CreateInfo* pCreateInfo)
{
return 0;
}
@@ -91,11 +86,11 @@ void Image::getSubresourceLayout(const VkImageSubresource* pSubresource, VkSubre
(pSubresource->aspectMask == VK_IMAGE_ASPECT_DEPTH_BIT) ||
(pSubresource->aspectMask == VK_IMAGE_ASPECT_STENCIL_BIT)))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("aspectMask");
}
auto aspect = static_cast<VkImageAspectFlagBits>(pSubresource->aspectMask);
pLayout->offset = getMemoryOffset(aspect, pSubresource->mipLevel, pSubresource->arrayLayer);
- pLayout->size = getMipLevelSize(aspect, pSubresource->mipLevel);
+ pLayout->size = getMultiSampledLevelSize(aspect, pSubresource->mipLevel);
pLayout->rowPitch = rowPitchBytes(aspect, pSubresource->mipLevel);
pLayout->depthPitch = slicePitchBytes(aspect, pSubresource->mipLevel);
pLayout->arrayPitch = getLayerSize(aspect);
@@ -110,29 +105,48 @@ void Image::copyTo(VkImage dstImage, const VkImageCopy& pRegion)
if(!((pRegion.srcSubresource.aspectMask == VK_IMAGE_ASPECT_COLOR_BIT) ||
(pRegion.srcSubresource.aspectMask == VK_IMAGE_ASPECT_DEPTH_BIT) ||
(pRegion.srcSubresource.aspectMask == VK_IMAGE_ASPECT_STENCIL_BIT)) ||
- (pRegion.srcSubresource.baseArrayLayer != 0) ||
(pRegion.srcSubresource.layerCount != 1))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("srcSubresource");
}
if(!((pRegion.dstSubresource.aspectMask == VK_IMAGE_ASPECT_COLOR_BIT) ||
(pRegion.dstSubresource.aspectMask == VK_IMAGE_ASPECT_DEPTH_BIT) ||
(pRegion.dstSubresource.aspectMask == VK_IMAGE_ASPECT_STENCIL_BIT)) ||
- (pRegion.dstSubresource.baseArrayLayer != 0) ||
(pRegion.dstSubresource.layerCount != 1))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("dstSubresource");
+ }
+
+ if((samples > VK_SAMPLE_COUNT_1_BIT) && (imageType == VK_IMAGE_TYPE_2D) && !format.isNonNormalizedInteger())
+ {
+ // Requires multisampling resolve
+ VkImageBlit region;
+ region.srcSubresource = pRegion.srcSubresource;
+ region.srcOffsets[0] = pRegion.srcOffset;
+ region.srcOffsets[1].x = region.srcOffsets[0].x + pRegion.extent.width;
+ region.srcOffsets[1].y = region.srcOffsets[0].y + pRegion.extent.height;
+ region.srcOffsets[1].z = region.srcOffsets[0].z + pRegion.extent.depth;
+
+ region.dstSubresource = pRegion.dstSubresource;
+ region.dstOffsets[0] = pRegion.dstOffset;
+ region.dstOffsets[1].x = region.dstOffsets[0].x + pRegion.extent.width;
+ region.dstOffsets[1].y = region.dstOffsets[0].y + pRegion.extent.height;
+ region.dstOffsets[1].z = region.dstOffsets[0].z + pRegion.extent.depth;
+
+ return device->getBlitter()->blit(this, dst, region, VK_FILTER_NEAREST);
}
VkImageAspectFlagBits srcAspect = static_cast<VkImageAspectFlagBits>(pRegion.srcSubresource.aspectMask);
VkImageAspectFlagBits dstAspect = static_cast<VkImageAspectFlagBits>(pRegion.dstSubresource.aspectMask);
- int srcBytesPerTexel = bytesPerTexel(srcAspect);
- ASSERT(srcBytesPerTexel == dst->bytesPerTexel(dstAspect));
+ Format srcFormat = getFormat(srcAspect);
+ Format dstFormat = dst->getFormat(dstAspect);
+ int srcBytesPerBlock = srcFormat.bytesPerBlock();
+ ASSERT(srcBytesPerBlock == dstFormat.bytesPerBlock());
- const char* srcMem = static_cast<const char*>(getTexelPointer(pRegion.srcOffset, pRegion.srcSubresource));
- char* dstMem = static_cast<char*>(dst->getTexelPointer(pRegion.dstOffset, pRegion.dstSubresource));
+ const uint8_t* srcMem = static_cast<const uint8_t*>(getTexelPointer(pRegion.srcOffset, pRegion.srcSubresource));
+ uint8_t* dstMem = static_cast<uint8_t*>(dst->getTexelPointer(pRegion.dstOffset, pRegion.dstSubresource));
int srcRowPitchBytes = rowPitchBytes(srcAspect, pRegion.srcSubresource.mipLevel);
int srcSlicePitchBytes = slicePitchBytes(srcAspect, pRegion.srcSubresource.mipLevel);
@@ -141,148 +155,195 @@ void Image::copyTo(VkImage dstImage, const VkImageCopy& pRegion)
VkExtent3D srcExtent = getMipLevelExtent(pRegion.srcSubresource.mipLevel);
VkExtent3D dstExtent = dst->getMipLevelExtent(pRegion.dstSubresource.mipLevel);
+ VkExtent3D copyExtent = imageExtentInBlocks(pRegion.extent, srcAspect);
- bool isSinglePlane = (pRegion.extent.depth == 1);
- bool isSingleLine = (pRegion.extent.height == 1) && isSinglePlane;
+ bool isSinglePlane = (copyExtent.depth == 1);
+ bool isSingleLine = (copyExtent.height == 1) && isSinglePlane;
// In order to copy multiple lines using a single memcpy call, we
// have to make sure that we need to copy the entire line and that
// both source and destination lines have the same length in bytes
bool isEntireLine = (pRegion.extent.width == srcExtent.width) &&
(pRegion.extent.width == dstExtent.width) &&
- (srcRowPitchBytes == dstRowPitchBytes);
+ // For non compressed formats, blockWidth is 1. For compressed
+ // formats, rowPitchBytes returns the number of bytes for a row of
+ // blocks, so we have to divide by the block height, which means:
+ // srcRowPitchBytes / srcBlockWidth == dstRowPitchBytes / dstBlockWidth
+ // And, to avoid potential non exact integer division, for example if a
+ // block has 16 bytes and represents 5 lines, we change the equation to:
+ // srcRowPitchBytes * dstBlockWidth == dstRowPitchBytes * srcBlockWidth
+ ((srcRowPitchBytes * dstFormat.blockWidth()) ==
+ (dstRowPitchBytes * srcFormat.blockWidth()));
// In order to copy multiple planes using a single memcpy call, we
// have to make sure that we need to copy the entire plane and that
// both source and destination planes have the same length in bytes
bool isEntirePlane = isEntireLine &&
- (pRegion.extent.height == srcExtent.height) &&
- (pRegion.extent.height == dstExtent.height) &&
+ (copyExtent.height == srcExtent.height) &&
+ (copyExtent.height == dstExtent.height) &&
(srcSlicePitchBytes == dstSlicePitchBytes);
if(isSingleLine) // Copy one line
{
- memcpy(dstMem, srcMem, pRegion.extent.width * srcBytesPerTexel);
+ size_t copySize = copyExtent.width * srcBytesPerBlock;
+ ASSERT((srcMem + copySize) < end());
+ ASSERT((dstMem + copySize) < dst->end());
+ memcpy(dstMem, srcMem, copySize);
}
else if(isEntireLine && isSinglePlane) // Copy one plane
{
- memcpy(dstMem, srcMem, pRegion.extent.height * srcRowPitchBytes);
+ size_t copySize = copyExtent.height * srcRowPitchBytes;
+ ASSERT((srcMem + copySize) < end());
+ ASSERT((dstMem + copySize) < dst->end());
+ memcpy(dstMem, srcMem, copySize);
}
else if(isEntirePlane) // Copy multiple planes
{
- memcpy(dstMem, srcMem, pRegion.extent.depth * srcSlicePitchBytes);
+ size_t copySize = copyExtent.depth * srcSlicePitchBytes;
+ ASSERT((srcMem + copySize) < end());
+ ASSERT((dstMem + copySize) < dst->end());
+ memcpy(dstMem, srcMem, copySize);
}
else if(isEntireLine) // Copy plane by plane
{
- for(uint32_t z = 0; z < pRegion.extent.depth; z++, dstMem += dstSlicePitchBytes, srcMem += srcSlicePitchBytes)
+ size_t copySize = copyExtent.height * srcRowPitchBytes;
+
+ for(uint32_t z = 0; z < copyExtent.depth; z++, dstMem += dstSlicePitchBytes, srcMem += srcSlicePitchBytes)
{
- memcpy(dstMem, srcMem, pRegion.extent.height * srcRowPitchBytes);
+ ASSERT((srcMem + copySize) < end());
+ ASSERT((dstMem + copySize) < dst->end());
+ memcpy(dstMem, srcMem, copySize);
}
}
else // Copy line by line
{
- for(uint32_t z = 0; z < pRegion.extent.depth; z++)
+ size_t copySize = copyExtent.width * srcBytesPerBlock;
+
+ for(uint32_t z = 0; z < copyExtent.depth; z++)
{
- for(uint32_t y = 0; y < pRegion.extent.height; y++, dstMem += dstRowPitchBytes, srcMem += srcRowPitchBytes)
+ for(uint32_t y = 0; y < copyExtent.height; y++, dstMem += dstRowPitchBytes, srcMem += srcRowPitchBytes)
{
- memcpy(dstMem, srcMem, pRegion.extent.width * srcBytesPerTexel);
+ ASSERT((srcMem + copySize) < end());
+ ASSERT((dstMem + copySize) < dst->end());
+ memcpy(dstMem, srcMem, copySize);
}
}
}
}
-void Image::copy(VkBuffer buffer, const VkBufferImageCopy& region, bool bufferIsSource)
+void Image::copy(VkBuffer buf, const VkBufferImageCopy& region, bool bufferIsSource)
{
if(!((region.imageSubresource.aspectMask == VK_IMAGE_ASPECT_COLOR_BIT) ||
(region.imageSubresource.aspectMask == VK_IMAGE_ASPECT_DEPTH_BIT) ||
(region.imageSubresource.aspectMask == VK_IMAGE_ASPECT_STENCIL_BIT)))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("imageSubresource");
}
VkImageAspectFlagBits aspect = static_cast<VkImageAspectFlagBits>(region.imageSubresource.aspectMask);
+ Format copyFormat = getFormat(aspect);
VkExtent3D mipLevelExtent = getMipLevelExtent(region.imageSubresource.mipLevel);
- int imageBytesPerTexel = bytesPerTexel(aspect);
+ VkExtent3D imageExtent = imageExtentInBlocks(region.imageExtent, aspect);
+ VkExtent2D bufferExtent = bufferExtentInBlocks({ imageExtent.width, imageExtent.height }, region);
+ int imageBytesPerBlock = copyFormat.bytesPerBlock();
int imageRowPitchBytes = rowPitchBytes(aspect, region.imageSubresource.mipLevel);
int imageSlicePitchBytes = slicePitchBytes(aspect, region.imageSubresource.mipLevel);
- int bufferRowPitchBytes = ((region.bufferRowLength == 0) ? region.imageExtent.width : region.bufferRowLength) *
- imageBytesPerTexel;
- int bufferSlicePitchBytes = (((region.bufferImageHeight == 0) || (region.bufferRowLength == 0))) ?
- region.imageExtent.height * bufferRowPitchBytes :
- (region.bufferImageHeight * region.bufferRowLength) * imageBytesPerTexel;
+ int bufferRowPitchBytes = bufferExtent.width * imageBytesPerBlock;
+ int bufferSlicePitchBytes = bufferExtent.height * bufferRowPitchBytes;
int srcSlicePitchBytes = bufferIsSource ? bufferSlicePitchBytes : imageSlicePitchBytes;
int dstSlicePitchBytes = bufferIsSource ? imageSlicePitchBytes : bufferSlicePitchBytes;
int srcRowPitchBytes = bufferIsSource ? bufferRowPitchBytes : imageRowPitchBytes;
int dstRowPitchBytes = bufferIsSource ? imageRowPitchBytes : bufferRowPitchBytes;
- bool isSinglePlane = (region.imageExtent.depth == 1);
- bool isSingleLine = (region.imageExtent.height == 1) && isSinglePlane;
- bool isEntireLine = (region.imageExtent.width == mipLevelExtent.width) &&
+ bool isSinglePlane = (imageExtent.depth == 1);
+ bool isSingleLine = (imageExtent.height == 1) && isSinglePlane;
+ bool isEntireLine = (imageExtent.width == mipLevelExtent.width) &&
(imageRowPitchBytes == bufferRowPitchBytes);
- bool isEntirePlane = isEntireLine && (region.imageExtent.height == mipLevelExtent.height) &&
+ bool isEntirePlane = isEntireLine && (imageExtent.height == mipLevelExtent.height) &&
(imageSlicePitchBytes == bufferSlicePitchBytes);
- VkDeviceSize layerSize = getLayerSize(aspect);
- char* bufferMemory = static_cast<char*>(Cast(buffer)->getOffsetPointer(region.bufferOffset));
- char* imageMemory = static_cast<char*>(deviceMemory->getOffsetPointer(
- getMemoryOffset(aspect, region.imageSubresource.mipLevel,
- region.imageSubresource.baseArrayLayer) +
- texelOffsetBytesInStorage(region.imageOffset, region.imageSubresource)));
- char* srcMemory = bufferIsSource ? bufferMemory : imageMemory;
- char* dstMemory = bufferIsSource ? imageMemory : bufferMemory;
+ Buffer* buffer = Cast(buf);
+ uint8_t* bufferMemory = static_cast<uint8_t*>(buffer->getOffsetPointer(region.bufferOffset));
+ uint8_t* imageMemory = static_cast<uint8_t*>(getTexelPointer(region.imageOffset, region.imageSubresource));
+ uint8_t* srcMemory = bufferIsSource ? bufferMemory : imageMemory;
+ uint8_t* dstMemory = bufferIsSource ? imageMemory : bufferMemory;
VkDeviceSize copySize = 0;
+ VkDeviceSize bufferLayerSize = 0;
if(isSingleLine)
{
- copySize = region.imageExtent.width * imageBytesPerTexel;
+ copySize = imageExtent.width * imageBytesPerBlock;
+ bufferLayerSize = copySize;
}
else if(isEntireLine && isSinglePlane)
{
- copySize = region.imageExtent.height * imageRowPitchBytes;
+ copySize = imageExtent.height * imageRowPitchBytes;
+ bufferLayerSize = copySize;
}
else if(isEntirePlane)
{
- copySize = region.imageExtent.depth * imageSlicePitchBytes; // Copy multiple planes
+ copySize = imageExtent.depth * imageSlicePitchBytes; // Copy multiple planes
+ bufferLayerSize = copySize;
}
else if(isEntireLine) // Copy plane by plane
{
- copySize = region.imageExtent.height * imageRowPitchBytes;
+ copySize = imageExtent.height * imageRowPitchBytes;
+ bufferLayerSize = copySize * imageExtent.depth;
}
else // Copy line by line
{
- copySize = region.imageExtent.width * imageBytesPerTexel;
+ copySize = imageExtent.width * imageBytesPerBlock;
+ bufferLayerSize = copySize * imageExtent.depth * imageExtent.height;
}
+ VkDeviceSize imageLayerSize = getLayerSize(aspect);
+ VkDeviceSize srcLayerSize = bufferIsSource ? bufferLayerSize : imageLayerSize;
+ VkDeviceSize dstLayerSize = bufferIsSource ? imageLayerSize : bufferLayerSize;
+
for(uint32_t i = 0; i < region.imageSubresource.layerCount; i++)
{
if(isSingleLine || (isEntireLine && isSinglePlane) || isEntirePlane)
{
+ ASSERT(((bufferIsSource ? dstMemory : srcMemory) + copySize) < end());
+ ASSERT(((bufferIsSource ? srcMemory : dstMemory) + copySize) < buffer->end());
memcpy(dstMemory, srcMemory, copySize);
}
else if(isEntireLine) // Copy plane by plane
{
- for(uint32_t z = 0; z < region.imageExtent.depth; z++)
+ uint8_t* srcPlaneMemory = srcMemory;
+ uint8_t* dstPlaneMemory = dstMemory;
+ for(uint32_t z = 0; z < imageExtent.depth; z++)
{
- memcpy(dstMemory, srcMemory, copySize);
- srcMemory += srcSlicePitchBytes;
- dstMemory += dstSlicePitchBytes;
+ ASSERT(((bufferIsSource ? dstPlaneMemory : srcPlaneMemory) + copySize) < end());
+ ASSERT(((bufferIsSource ? srcPlaneMemory : dstPlaneMemory) + copySize) < buffer->end());
+ memcpy(dstPlaneMemory, srcPlaneMemory, copySize);
+ srcPlaneMemory += srcSlicePitchBytes;
+ dstPlaneMemory += dstSlicePitchBytes;
}
}
else // Copy line by line
{
- for(uint32_t z = 0; z < region.imageExtent.depth; z++)
+ uint8_t* srcLayerMemory = srcMemory;
+ uint8_t* dstLayerMemory = dstMemory;
+ for(uint32_t z = 0; z < imageExtent.depth; z++)
{
- for(uint32_t y = 0; y < region.imageExtent.height; y++)
+ uint8_t* srcPlaneMemory = srcLayerMemory;
+ uint8_t* dstPlaneMemory = dstLayerMemory;
+ for(uint32_t y = 0; y < imageExtent.height; y++)
{
- memcpy(dstMemory, srcMemory, copySize);
- srcMemory += srcRowPitchBytes;
- dstMemory += dstRowPitchBytes;
+ ASSERT(((bufferIsSource ? dstPlaneMemory : srcPlaneMemory) + copySize) < end());
+ ASSERT(((bufferIsSource ? srcPlaneMemory : dstPlaneMemory) + copySize) < buffer->end());
+ memcpy(dstPlaneMemory, srcPlaneMemory, copySize);
+ srcPlaneMemory += srcRowPitchBytes;
+ dstPlaneMemory += dstRowPitchBytes;
}
+ srcLayerMemory += srcSlicePitchBytes;
+ dstLayerMemory += dstSlicePitchBytes;
}
}
- srcMemory += layerSize;
- dstMemory += layerSize;
+ srcMemory += srcLayerSize;
+ dstMemory += dstLayerSize;
}
}
@@ -303,12 +364,85 @@ void* Image::getTexelPointer(const VkOffset3D& offset, const VkImageSubresourceL
getMemoryOffset(aspect, subresource.mipLevel, subresource.baseArrayLayer));
}
+VkExtent3D Image::imageExtentInBlocks(const VkExtent3D& extent, VkImageAspectFlagBits aspect) const
+{
+ VkExtent3D adjustedExtent = extent;
+ Format usedFormat = getFormat(aspect);
+ if(usedFormat.isCompressed())
+ {
+ // When using a compressed format, we use the block as the base unit, instead of the texel
+ int blockWidth = usedFormat.blockWidth();
+ int blockHeight = usedFormat.blockHeight();
+
+ // Mip level allocations will round up to the next block for compressed texture
+ adjustedExtent.width = ((adjustedExtent.width + blockWidth - 1) / blockWidth);
+ adjustedExtent.height = ((adjustedExtent.height + blockHeight - 1) / blockHeight);
+ }
+ return adjustedExtent;
+}
+
+VkOffset3D Image::imageOffsetInBlocks(const VkOffset3D& offset, VkImageAspectFlagBits aspect) const
+{
+ VkOffset3D adjustedOffset = offset;
+ Format usedFormat = getFormat(aspect);
+ if(usedFormat.isCompressed())
+ {
+ // When using a compressed format, we use the block as the base unit, instead of the texel
+ int blockWidth = usedFormat.blockWidth();
+ int blockHeight = usedFormat.blockHeight();
+
+ ASSERT(((offset.x % blockWidth) == 0) && ((offset.y % blockHeight) == 0)); // We can't offset within a block
+
+ adjustedOffset.x /= blockWidth;
+ adjustedOffset.y /= blockHeight;
+ }
+ return adjustedOffset;
+}
+
+VkExtent2D Image::bufferExtentInBlocks(const VkExtent2D& extent, const VkBufferImageCopy& region) const
+{
+ VkExtent2D adjustedExtent = extent;
+ VkImageAspectFlagBits aspect = static_cast<VkImageAspectFlagBits>(region.imageSubresource.aspectMask);
+ Format usedFormat = getFormat(aspect);
+ if(region.bufferRowLength != 0)
+ {
+ adjustedExtent.width = region.bufferRowLength;
+
+ if(usedFormat.isCompressed())
+ {
+ int blockWidth = usedFormat.blockWidth();
+ ASSERT((adjustedExtent.width % blockWidth) == 0);
+ adjustedExtent.width /= blockWidth;
+ }
+ }
+ if(region.bufferImageHeight != 0)
+ {
+ adjustedExtent.height = region.bufferImageHeight;
+
+ if(usedFormat.isCompressed())
+ {
+ int blockHeight = usedFormat.blockHeight();
+ ASSERT((adjustedExtent.height % blockHeight) == 0);
+ adjustedExtent.height /= blockHeight;
+ }
+ }
+ return adjustedExtent;
+}
+
+int Image::borderSize(VkImageAspectFlagBits aspect) const
+{
+ // We won't add a border to compressed cube textures, we'll add it when we decompress the texture
+ return (isCube() && !format.isCompressed()) ? 1 : 0;
+}
+
VkDeviceSize Image::texelOffsetBytesInStorage(const VkOffset3D& offset, const VkImageSubresourceLayers& subresource) const
{
VkImageAspectFlagBits aspect = static_cast<VkImageAspectFlagBits>(subresource.aspectMask);
- return offset.z * slicePitchBytes(aspect, subresource.mipLevel) +
- offset.y * rowPitchBytes(aspect, subresource.mipLevel) +
- offset.x * bytesPerTexel(aspect);
+ VkOffset3D adjustedOffset = imageOffsetInBlocks(offset, aspect);
+ int border = borderSize(aspect);
+ return adjustedOffset.z * slicePitchBytes(aspect, subresource.mipLevel) +
+ (adjustedOffset.y + border) * rowPitchBytes(aspect, subresource.mipLevel) +
+ (adjustedOffset.x + border) * getFormat(aspect).bytesPerBlock();
}
VkExtent3D Image::getMipLevelExtent(uint32_t mipLevel) const
@@ -337,28 +471,39 @@ int Image::rowPitchBytes(VkImageAspectFlagBits aspect, uint32_t mipLevel) const
{
// Depth and Stencil pitch should be computed separately
ASSERT((aspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) !=
- (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT));
- return sw::Surface::pitchB(getMipLevelExtent(mipLevel).width, isCube() ? 1 : 0, getFormat(aspect), false);
+ (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT));
+ return getFormat(aspect).pitchB(getMipLevelExtent(mipLevel).width, borderSize(aspect), true);
}
int Image::slicePitchBytes(VkImageAspectFlagBits aspect, uint32_t mipLevel) const
{
// Depth and Stencil slice should be computed separately
ASSERT((aspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) !=
- (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT));
+ (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT));
VkExtent3D mipLevelExtent = getMipLevelExtent(mipLevel);
- return sw::Surface::sliceB(mipLevelExtent.width, mipLevelExtent.height, isCube() ? 1 : 0, getFormat(aspect), false);
+ Format usedFormat = getFormat(aspect);
+ if(usedFormat.isCompressed())
+ {
+ sw::align(mipLevelExtent.width, usedFormat.blockWidth());
+ sw::align(mipLevelExtent.height, usedFormat.blockHeight());
+ }
+ return getFormat(aspect).sliceB(mipLevelExtent.width, mipLevelExtent.height, borderSize(aspect), true);
}
int Image::bytesPerTexel(VkImageAspectFlagBits aspect) const
{
// Depth and Stencil bytes should be computed separately
ASSERT((aspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) !=
- (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT));
- return sw::Surface::bytes(getFormat(aspect));
+ (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT));
+ return getFormat(aspect).bytes();
+}
+
+Format Image::getFormat(VkImageAspectFlagBits aspect) const
+{
+ return GetFormat(format, aspect);
}
-VkFormat Image::getFormat(VkImageAspectFlagBits aspect) const
+Format Image::GetFormat(const vk::Format& format, VkImageAspectFlagBits aspect)
{
switch(aspect)
{
@@ -398,6 +543,11 @@ bool Image::isCube() const
return (flags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) && (imageType == VK_IMAGE_TYPE_2D);
}
+uint8_t* Image::end() const
+{
+ return reinterpret_cast<uint8_t*>(deviceMemory->getOffsetPointer(deviceMemory->getCommittedMemoryInBytes() + 1));
+}
+
VkDeviceSize Image::getMemoryOffset(VkImageAspectFlagBits aspect) const
{
switch(format)
@@ -423,7 +573,7 @@ VkDeviceSize Image::getMemoryOffset(VkImageAspectFlagBits aspect, uint32_t mipLe
VkDeviceSize offset = getMemoryOffset(aspect);
for(uint32_t i = 0; i < mipLevel; ++i)
{
- offset += getMipLevelSize(aspect, i);
+ offset += getMultiSampledLevelSize(aspect, i);
}
return offset;
}
@@ -438,13 +588,18 @@ VkDeviceSize Image::getMipLevelSize(VkImageAspectFlagBits aspect, uint32_t mipLe
return getMipLevelExtent(mipLevel).depth * slicePitchBytes(aspect, mipLevel);
}
+VkDeviceSize Image::getMultiSampledLevelSize(VkImageAspectFlagBits aspect, uint32_t mipLevel) const
+{
+ return getMipLevelSize(aspect, mipLevel) * samples;
+}
+
VkDeviceSize Image::getLayerSize(VkImageAspectFlagBits aspect) const
{
VkDeviceSize layerSize = 0;
for(uint32_t mipLevel = 0; mipLevel < mipLevels; ++mipLevel)
{
- layerSize += getMipLevelSize(aspect, mipLevel);
+ layerSize += getMultiSampledLevelSize(aspect, mipLevel);
}
return layerSize;
@@ -459,61 +614,40 @@ VkDeviceSize Image::getStorageSize(VkImageAspectFlags aspectMask) const
return arrayLayers * getLayerSize(static_cast<VkImageAspectFlagBits>(aspectMask));
}
-sw::Surface* Image::asSurface(VkImageAspectFlagBits aspect, uint32_t mipLevel, uint32_t layer) const
+void Image::blit(VkImage dstImage, const VkImageBlit& region, VkFilter filter)
{
- VkExtent3D mipLevelExtent = getMipLevelExtent(mipLevel);
- return sw::Surface::create(mipLevelExtent.width, mipLevelExtent.height, mipLevelExtent.depth, getFormat(aspect),
- deviceMemory->getOffsetPointer(getMemoryOffset(aspect, mipLevel, layer)),
- rowPitchBytes(aspect, mipLevel), slicePitchBytes(aspect, mipLevel));
+ device->getBlitter()->blit(this, Cast(dstImage), region, filter);
}
-void Image::blit(VkImage dstImage, const VkImageBlit& region, VkFilter filter)
+void Image::resolve(VkImage dstImage, const VkImageResolve& region)
{
- VkImageAspectFlagBits srcAspect = static_cast<VkImageAspectFlagBits>(region.srcSubresource.aspectMask);
- VkImageAspectFlagBits dstAspect = static_cast<VkImageAspectFlagBits>(region.dstSubresource.aspectMask);
- if((region.srcSubresource.baseArrayLayer != 0) ||
- (region.dstSubresource.baseArrayLayer != 0) ||
- (region.srcSubresource.layerCount != 1) ||
- (region.dstSubresource.layerCount != 1) ||
- (srcAspect != dstAspect))
- {
- UNIMPLEMENTED();
- }
+ VkImageBlit blitRegion;
- int32_t numSlices = (region.srcOffsets[1].z - region.srcOffsets[0].z);
- ASSERT(numSlices == (region.dstOffsets[1].z - region.dstOffsets[0].z));
+ blitRegion.srcOffsets[0] = blitRegion.srcOffsets[1] = region.srcOffset;
+ blitRegion.srcOffsets[1].x += region.extent.width;
+ blitRegion.srcOffsets[1].y += region.extent.height;
+ blitRegion.srcOffsets[1].z += region.extent.depth;
- sw::Surface* srcSurface = asSurface(srcAspect, region.srcSubresource.mipLevel, 0);
- sw::Surface* dstSurface = Cast(dstImage)->asSurface(dstAspect, region.dstSubresource.mipLevel, 0);
+ blitRegion.dstOffsets[0] = blitRegion.dstOffsets[1] = region.dstOffset;
+ blitRegion.dstOffsets[1].x += region.extent.width;
+ blitRegion.dstOffsets[1].y += region.extent.height;
+ blitRegion.dstOffsets[1].z += region.extent.depth;
- sw::SliceRectF sRect(static_cast<float>(region.srcOffsets[0].x), static_cast<float>(region.srcOffsets[0].y),
- static_cast<float>(region.srcOffsets[1].x), static_cast<float>(region.srcOffsets[1].y),
- region.srcOffsets[0].z);
+ blitRegion.srcSubresource = region.srcSubresource;
+ blitRegion.dstSubresource = region.dstSubresource;
- sw::SliceRect dRect(region.dstOffsets[0].x, region.dstOffsets[0].y,
- region.dstOffsets[1].x, region.dstOffsets[1].y, region.dstOffsets[0].z);
-
- for(int i = 0; i < numSlices; i++)
- {
- blitter->blit(srcSurface, sRect, dstSurface, dRect,
- {filter != VK_FILTER_NEAREST, srcAspect == VK_IMAGE_ASPECT_STENCIL_BIT, false});
- sRect.slice++;
- dRect.slice++;
- }
-
- delete srcSurface;
- delete dstSurface;
+ device->getBlitter()->blit(this, Cast(dstImage), blitRegion, VK_FILTER_NEAREST);
}
VkFormat Image::getClearFormat() const
{
// Set the proper format for the clear value, as described here:
// https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#clears-values
- if(sw::Surface::isSignedNonNormalizedInteger(format))
+ if(format.isSignedNonNormalizedInteger())
{
return VK_FORMAT_R32G32B32A32_SINT;
}
- else if(sw::Surface::isUnsignedNonNormalizedInteger(format))
+ else if(format.isUnsignedNonNormalizedInteger())
{
return VK_FORMAT_R32G32B32A32_UINT;
}
@@ -533,61 +667,19 @@ uint32_t Image::getLastMipLevel(const VkImageSubresourceRange& subresourceRange)
mipLevels : (subresourceRange.baseMipLevel + subresourceRange.levelCount)) - 1;
}
-void Image::clear(void* pixelData, VkFormat format, const VkImageSubresourceRange& subresourceRange, VkImageAspectFlagBits aspect)
+void Image::clear(void* pixelData, VkFormat pixelFormat, const vk::Format& viewFormat, const VkImageSubresourceRange& subresourceRange, const VkRect2D& renderArea)
{
- uint32_t firstLayer = subresourceRange.baseArrayLayer;
- uint32_t lastLayer = getLastLayerIndex(subresourceRange);
- for(uint32_t layer = firstLayer; layer <= lastLayer; ++layer)
- {
- uint32_t lastLevel = getLastMipLevel(subresourceRange);
- for(uint32_t mipLevel = subresourceRange.baseMipLevel; mipLevel <= lastLevel; ++mipLevel)
- {
- VkExtent3D mipLevelExtent = getMipLevelExtent(mipLevel);
- for(uint32_t s = 0; s < mipLevelExtent.depth; ++s)
- {
- const sw::SliceRect dRect(0, 0, mipLevelExtent.width, mipLevelExtent.height, s);
- sw::Surface* surface = asSurface(aspect, mipLevel, layer);
- blitter->clear(pixelData, format, surface, dRect, 0xF);
- delete surface;
- }
- }
- }
-}
-
-void Image::clear(void* pixelData, VkFormat format, const VkRect2D& renderArea, const VkImageSubresourceRange& subresourceRange, VkImageAspectFlagBits aspect)
-{
- if((subresourceRange.baseMipLevel != 0) ||
- (subresourceRange.levelCount != 1))
- {
- UNIMPLEMENTED();
- }
-
- sw::SliceRect dRect(renderArea.offset.x, renderArea.offset.y,
- renderArea.offset.x + renderArea.extent.width,
- renderArea.offset.y + renderArea.extent.height, 0);
-
- uint32_t firstLayer = subresourceRange.baseArrayLayer;
- uint32_t lastLayer = getLastLayerIndex(subresourceRange);
- for(uint32_t layer = firstLayer; layer <= lastLayer; ++layer)
- {
- for(uint32_t s = 0; s < extent.depth; ++s)
- {
- dRect.slice = s;
- sw::Surface* surface = asSurface(aspect, 0, layer);
- blitter->clear(pixelData, format, surface, dRect, 0xF);
- delete surface;
- }
- }
+ device->getBlitter()->clear(pixelData, pixelFormat, this, viewFormat, subresourceRange, &renderArea);
}
void Image::clear(const VkClearColorValue& color, const VkImageSubresourceRange& subresourceRange)
{
if(!(subresourceRange.aspectMask == VK_IMAGE_ASPECT_COLOR_BIT))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("aspectMask");
}
- clear((void*)color.float32, getClearFormat(), subresourceRange, VK_IMAGE_ASPECT_COLOR_BIT);
+ device->getBlitter()->clear((void*)color.float32, getClearFormat(), this, format, subresourceRange);
}
void Image::clear(const VkClearDepthStencilValue& color, const VkImageSubresourceRange& subresourceRange)
@@ -595,45 +687,51 @@ void Image::clear(const VkClearDepthStencilValue& color, const VkImageSubresourc
if((subresourceRange.aspectMask & ~(VK_IMAGE_ASPECT_DEPTH_BIT |
VK_IMAGE_ASPECT_STENCIL_BIT)) != 0)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("aspectMask");
}
if(subresourceRange.aspectMask & VK_IMAGE_ASPECT_DEPTH_BIT)
{
- clear((void*)(&color.depth), VK_FORMAT_D32_SFLOAT, subresourceRange, VK_IMAGE_ASPECT_DEPTH_BIT);
+ VkImageSubresourceRange depthSubresourceRange = subresourceRange;
+ depthSubresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
+ device->getBlitter()->clear((void*)(&color.depth), VK_FORMAT_D32_SFLOAT, this, format, depthSubresourceRange);
}
if(subresourceRange.aspectMask & VK_IMAGE_ASPECT_STENCIL_BIT)
{
- clear((void*)(&color.stencil), VK_FORMAT_S8_UINT, subresourceRange, VK_IMAGE_ASPECT_STENCIL_BIT);
+ VkImageSubresourceRange stencilSubresourceRange = subresourceRange;
+ stencilSubresourceRange.aspectMask = VK_IMAGE_ASPECT_STENCIL_BIT;
+ device->getBlitter()->clear((void*)(&color.stencil), VK_FORMAT_S8_UINT, this, format, stencilSubresourceRange);
}
}
-void Image::clear(const VkClearValue& clearValue, const VkRect2D& renderArea, const VkImageSubresourceRange& subresourceRange)
+void Image::clear(const VkClearValue& clearValue, const vk::Format& viewFormat, const VkRect2D& renderArea, const VkImageSubresourceRange& subresourceRange)
{
if(!((subresourceRange.aspectMask == VK_IMAGE_ASPECT_COLOR_BIT) ||
(subresourceRange.aspectMask & (VK_IMAGE_ASPECT_DEPTH_BIT |
- VK_IMAGE_ASPECT_STENCIL_BIT))) ||
- (subresourceRange.baseMipLevel != 0) ||
- (subresourceRange.levelCount != 1))
+ VK_IMAGE_ASPECT_STENCIL_BIT))))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("subresourceRange");
}
if(subresourceRange.aspectMask == VK_IMAGE_ASPECT_COLOR_BIT)
{
- clear((void*)(clearValue.color.float32), getClearFormat(), renderArea, subresourceRange, VK_IMAGE_ASPECT_COLOR_BIT);
+ clear((void*)(clearValue.color.float32), getClearFormat(), viewFormat, subresourceRange, renderArea);
}
else
{
if(subresourceRange.aspectMask & VK_IMAGE_ASPECT_DEPTH_BIT)
{
- clear((void*)(&clearValue.depthStencil.depth), VK_FORMAT_D32_SFLOAT, renderArea, subresourceRange, VK_IMAGE_ASPECT_DEPTH_BIT);
+ VkImageSubresourceRange depthSubresourceRange = subresourceRange;
+ depthSubresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
+ clear((void*)(&clearValue.depthStencil.depth), VK_FORMAT_D32_SFLOAT, viewFormat, depthSubresourceRange, renderArea);
}
if(subresourceRange.aspectMask & VK_IMAGE_ASPECT_STENCIL_BIT)
{
- clear((void*)(&clearValue.depthStencil.stencil), VK_FORMAT_S8_UINT, renderArea, subresourceRange, VK_IMAGE_ASPECT_STENCIL_BIT);
+ VkImageSubresourceRange stencilSubresourceRange = subresourceRange;
+ stencilSubresourceRange.aspectMask = VK_IMAGE_ASPECT_STENCIL_BIT;
+ clear((void*)(&clearValue.depthStencil.stencil), VK_FORMAT_S8_UINT, viewFormat, stencilSubresourceRange, renderArea);
}
}
}
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkImage.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkImage.hpp
index d3a77cd817d..0ad40a5c27a 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkImage.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkImage.hpp
@@ -16,26 +16,28 @@
#define VK_IMAGE_HPP_
#include "VkObject.hpp"
-
-namespace sw
-{
- class Blitter;
- class Surface;
-};
+#include "VkFormat.h"
namespace vk
{
+class Device;
class DeviceMemory;
class Image : public Object<Image, VkImage>
{
public:
- Image(const VkImageCreateInfo* pCreateInfo, void* mem);
+ struct CreateInfo
+ {
+ const VkImageCreateInfo* pCreateInfo;
+ const VkDevice device;
+ };
+
+ Image(const CreateInfo* pCreateInfo, void* mem);
~Image() = delete;
void destroy(const VkAllocationCallbacks* pAllocator);
- static size_t ComputeRequiredAllocationSize(const VkImageCreateInfo* pCreateInfo);
+ static size_t ComputeRequiredAllocationSize(const CreateInfo* pCreateInfo);
const VkMemoryRequirements getMemoryRequirements() const;
void getSubresourceLayout(const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) const;
@@ -45,49 +47,59 @@ public:
void copyFrom(VkBuffer srcBuffer, const VkBufferImageCopy& region);
void blit(VkImage dstImage, const VkImageBlit& region, VkFilter filter);
- void clear(const VkClearValue& clearValue, const VkRect2D& renderArea, const VkImageSubresourceRange& subresourceRange);
+ void resolve(VkImage dstImage, const VkImageResolve& region);
+ void clear(const VkClearValue& clearValue, const vk::Format& viewFormat, const VkRect2D& renderArea, const VkImageSubresourceRange& subresourceRange);
void clear(const VkClearColorValue& color, const VkImageSubresourceRange& subresourceRange);
void clear(const VkClearDepthStencilValue& color, const VkImageSubresourceRange& subresourceRange);
VkImageType getImageType() const { return imageType; }
- VkFormat getFormat() const { return format; }
+ const Format& getFormat() const { return format; }
+ Format getFormat(VkImageAspectFlagBits aspect) const;
uint32_t getArrayLayers() const { return arrayLayers; }
+ uint32_t getMipLevels() const { return mipLevels; }
+ VkImageUsageFlags getUsage() const { return usage; }
+ uint32_t getLastLayerIndex(const VkImageSubresourceRange& subresourceRange) const;
+ uint32_t getLastMipLevel(const VkImageSubresourceRange& subresourceRange) const;
VkSampleCountFlagBits getSampleCountFlagBits() const { return samples; }
+ VkExtent3D getMipLevelExtent(uint32_t mipLevel) const;
int rowPitchBytes(VkImageAspectFlagBits aspect, uint32_t mipLevel) const;
int slicePitchBytes(VkImageAspectFlagBits aspect, uint32_t mipLevel) const;
void* getTexelPointer(const VkOffset3D& offset, const VkImageSubresourceLayers& subresource) const;
bool isCube() const;
+ uint8_t* end() const;
+
+ static Format GetFormat(const vk::Format& format, VkImageAspectFlagBits aspect);
private:
- sw::Surface* asSurface(VkImageAspectFlagBits aspect, uint32_t mipLevel, uint32_t layer) const;
void copy(VkBuffer buffer, const VkBufferImageCopy& region, bool bufferIsSource);
VkDeviceSize getStorageSize(VkImageAspectFlags flags) const;
VkDeviceSize getMipLevelSize(VkImageAspectFlagBits aspect, uint32_t mipLevel) const;
+ VkDeviceSize getMultiSampledLevelSize(VkImageAspectFlagBits aspect, uint32_t mipLevel) const;
VkDeviceSize getLayerSize(VkImageAspectFlagBits aspect) const;
VkDeviceSize getMemoryOffset(VkImageAspectFlagBits aspect, uint32_t mipLevel) const;
VkDeviceSize getMemoryOffset(VkImageAspectFlagBits aspect, uint32_t mipLevel, uint32_t layer) const;
VkDeviceSize texelOffsetBytesInStorage(const VkOffset3D& offset, const VkImageSubresourceLayers& subresource) const;
VkDeviceSize getMemoryOffset(VkImageAspectFlagBits aspect) const;
+ VkExtent3D imageExtentInBlocks(const VkExtent3D& extent, VkImageAspectFlagBits aspect) const;
+ VkOffset3D imageOffsetInBlocks(const VkOffset3D& offset, VkImageAspectFlagBits aspect) const;
+ VkExtent2D bufferExtentInBlocks(const VkExtent2D& extent, const VkBufferImageCopy& region) const;
int bytesPerTexel(VkImageAspectFlagBits flags) const;
- VkExtent3D getMipLevelExtent(uint32_t mipLevel) const;
- VkFormat getFormat(VkImageAspectFlagBits flags) const;
- uint32_t getLastLayerIndex(const VkImageSubresourceRange& subresourceRange) const;
- uint32_t getLastMipLevel(const VkImageSubresourceRange& subresourceRange) const;
VkFormat getClearFormat() const;
- void clear(void* pixelData, VkFormat format, const VkImageSubresourceRange& subresourceRange, VkImageAspectFlagBits aspect);
- void clear(void* pixelData, VkFormat format, const VkRect2D& renderArea, const VkImageSubresourceRange& subresourceRange, VkImageAspectFlagBits aspect);
+ void clear(void* pixelData, VkFormat pixelFormat, const vk::Format& viewFormat, const VkImageSubresourceRange& subresourceRange, const VkRect2D& renderArea);
+ int borderSize(VkImageAspectFlagBits aspect) const;
+ const Device *const device = nullptr;
DeviceMemory* deviceMemory = nullptr;
VkDeviceSize memoryOffset = 0;
VkImageCreateFlags flags = 0;
VkImageType imageType = VK_IMAGE_TYPE_2D;
- VkFormat format = VK_FORMAT_UNDEFINED;
+ Format format;
VkExtent3D extent = {0, 0, 0};
uint32_t mipLevels = 0;
uint32_t arrayLayers = 0;
VkSampleCountFlagBits samples = VK_SAMPLE_COUNT_1_BIT;
VkImageTiling tiling = VK_IMAGE_TILING_OPTIMAL;
- sw::Blitter* blitter = nullptr;
+ VkImageUsageFlags usage = (VkImageUsageFlags)0;
};
static inline Image* Cast(VkImage object)
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkImageView.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkImageView.cpp
index 34e4f9332d7..b403fb21f92 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkImageView.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkImageView.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 The SwiftShader Authors. All Rights Reserved.
+// Copyright 2018 The SwiftShader Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -35,44 +35,38 @@ void ImageView::destroy(const VkAllocationCallbacks* pAllocator)
bool ImageView::imageTypesMatch(VkImageType imageType) const
{
- bool isCube = image->isCube();
+ uint32_t imageArrayLayers = image->getArrayLayers();
- switch(imageType)
+ switch(viewType)
{
- case VK_IMAGE_TYPE_1D:
- switch(viewType)
- {
- case VK_IMAGE_VIEW_TYPE_1D:
- case VK_IMAGE_VIEW_TYPE_1D_ARRAY:
- return true;
- default:
- break;
- }
- break;
- case VK_IMAGE_TYPE_2D:
- switch(viewType)
- {
- case VK_IMAGE_VIEW_TYPE_2D:
- case VK_IMAGE_VIEW_TYPE_2D_ARRAY:
- return !isCube;
- case VK_IMAGE_VIEW_TYPE_CUBE:
- case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:
- return isCube;
- default:
- break;
- }
- break;
- case VK_IMAGE_TYPE_3D:
- switch(viewType)
- {
- case VK_IMAGE_VIEW_TYPE_3D:
- return true;
- default:
- break;
- }
- break;
+ case VK_IMAGE_VIEW_TYPE_1D:
+ return (imageType == VK_IMAGE_TYPE_1D) &&
+ (subresourceRange.layerCount == 1);
+ case VK_IMAGE_VIEW_TYPE_1D_ARRAY:
+ return imageType == VK_IMAGE_TYPE_1D;
+ case VK_IMAGE_VIEW_TYPE_2D:
+ return ((imageType == VK_IMAGE_TYPE_2D) ||
+ ((imageType == VK_IMAGE_TYPE_3D) &&
+ (imageArrayLayers == 1))) &&
+ (subresourceRange.layerCount == 1);
+ case VK_IMAGE_VIEW_TYPE_2D_ARRAY:
+ return (imageType == VK_IMAGE_TYPE_2D) ||
+ ((imageType == VK_IMAGE_TYPE_3D) &&
+ (imageArrayLayers == 1));
+ case VK_IMAGE_VIEW_TYPE_CUBE:
+ return image->isCube() &&
+ (imageArrayLayers >= subresourceRange.layerCount) &&
+ (subresourceRange.layerCount == 6);
+ case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:
+ return image->isCube() &&
+ (imageArrayLayers >= subresourceRange.layerCount) &&
+ (subresourceRange.layerCount >= 6);
+ case VK_IMAGE_VIEW_TYPE_3D:
+ return (imageType == VK_IMAGE_TYPE_3D) &&
+ (imageArrayLayers == 1) &&
+ (subresourceRange.layerCount == 1);
default:
- break;
+ UNREACHABLE("Unexpected viewType %d", (int)viewType);
}
return false;
@@ -84,15 +78,17 @@ void ImageView::clear(const VkClearValue& clearValue, const VkImageAspectFlags a
if(!imageTypesMatch(image->getImageType()))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("imageTypesMatch");
}
- if(image->getFormat() != format)
+ if(!format.isCompatible(image->getFormat()))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("incompatible formats");
}
- image->clear(clearValue, renderArea, subresourceRange);
+ VkImageSubresourceRange sr = subresourceRange;
+ sr.aspectMask = aspectMask;
+ image->clear(clearValue, format, renderArea, sr);
}
void ImageView::clear(const VkClearValue& clearValue, const VkImageAspectFlags aspectMask, const VkClearRect& renderArea)
@@ -101,12 +97,12 @@ void ImageView::clear(const VkClearValue& clearValue, const VkImageAspectFlags a
if(!imageTypesMatch(image->getImageType()))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("imageTypesMatch");
}
- if(image->getFormat() != format)
+ if(!format.isCompatible(image->getFormat()))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("incompatible formats");
}
VkImageSubresourceRange sr;
@@ -116,14 +112,43 @@ void ImageView::clear(const VkClearValue& clearValue, const VkImageAspectFlags a
sr.baseArrayLayer = renderArea.baseArrayLayer + subresourceRange.baseArrayLayer;
sr.layerCount = renderArea.layerCount;
- image->clear(clearValue, renderArea.rect, sr);
+ image->clear(clearValue, format, renderArea.rect, sr);
+}
+
+void ImageView::resolve(ImageView* resolveAttachment)
+{
+ if((subresourceRange.levelCount != 1) || (resolveAttachment->subresourceRange.levelCount != 1))
+ {
+ UNIMPLEMENTED("levelCount");
+ }
+
+ VkImageCopy region;
+ region.srcSubresource =
+ {
+ subresourceRange.aspectMask,
+ subresourceRange.baseMipLevel,
+ subresourceRange.baseArrayLayer,
+ subresourceRange.layerCount
+ };
+ region.srcOffset = { 0, 0, 0 };
+ region.dstSubresource =
+ {
+ resolveAttachment->subresourceRange.aspectMask,
+ resolveAttachment->subresourceRange.baseMipLevel,
+ resolveAttachment->subresourceRange.baseArrayLayer,
+ resolveAttachment->subresourceRange.layerCount
+ };
+ region.dstOffset = { 0, 0, 0 };
+ region.extent = image->getMipLevelExtent(subresourceRange.baseMipLevel);
+
+ image->copyTo(*(resolveAttachment->image), region);
}
void *ImageView::getOffsetPointer(const VkOffset3D& offset, VkImageAspectFlagBits aspect) const
{
VkImageSubresourceLayers imageSubresourceLayers =
{
- aspect,
+ static_cast<VkImageAspectFlags>(aspect),
subresourceRange.baseMipLevel,
subresourceRange.baseArrayLayer,
subresourceRange.layerCount
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkImageView.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkImageView.hpp
index 89cc7a125c9..4e54f8a4c57 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkImageView.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkImageView.hpp
@@ -16,6 +16,7 @@
#define VK_IMAGE_VIEW_HPP_
#include "VkDebug.hpp"
+#include "VkFormat.h"
#include "VkObject.hpp"
#include "VkImage.hpp"
@@ -33,24 +34,30 @@ public:
void clear(const VkClearValue& clearValues, VkImageAspectFlags aspectMask, const VkRect2D& renderArea);
void clear(const VkClearValue& clearValue, VkImageAspectFlags aspectMask, const VkClearRect& renderArea);
+ void resolve(ImageView* resolveAttachment);
- VkFormat getFormat() const { return format; }
+ VkImageViewType getType() const { return viewType; }
+ Format getFormat() const { return format; }
int getSampleCount() const { return image->getSampleCountFlagBits(); }
- int rowPitchBytes(VkImageAspectFlagBits aspect) const { return image->rowPitchBytes(aspect, subresourceRange.baseMipLevel); }
- int slicePitchBytes(VkImageAspectFlagBits aspect) const { return image->slicePitchBytes(aspect, subresourceRange.baseMipLevel); }
+ int rowPitchBytes(VkImageAspectFlagBits aspect, uint32_t mipLevel) const { return image->rowPitchBytes(aspect, subresourceRange.baseMipLevel + mipLevel); }
+ int slicePitchBytes(VkImageAspectFlagBits aspect, uint32_t mipLevel) const { return image->slicePitchBytes(aspect, subresourceRange.baseMipLevel + mipLevel); }
+ VkExtent3D getMipLevelExtent(uint32_t mipLevel) const { return image->getMipLevelExtent(subresourceRange.baseMipLevel + mipLevel); }
void *getOffsetPointer(const VkOffset3D& offset, VkImageAspectFlagBits aspect) const;
bool hasDepthAspect() const { return (subresourceRange.aspectMask & VK_IMAGE_ASPECT_DEPTH_BIT) != 0; }
bool hasStencilAspect() const { return (subresourceRange.aspectMask & VK_IMAGE_ASPECT_STENCIL_BIT) != 0; }
+ const VkComponentMapping &getComponentMapping() const { return components; }
+ const VkImageSubresourceRange &getSubresourceRange() const { return subresourceRange; }
+
private:
- bool imageTypesMatch(VkImageType imageType) const;
+ bool imageTypesMatch(VkImageType imageType) const;
- Image* image = nullptr;
- VkImageViewType viewType = VK_IMAGE_VIEW_TYPE_2D;
- VkFormat format = VK_FORMAT_UNDEFINED;
- VkComponentMapping components = {};
- VkImageSubresourceRange subresourceRange = {};
+ Image *const image = nullptr;
+ const VkImageViewType viewType = VK_IMAGE_VIEW_TYPE_2D;
+ const Format format;
+ const VkComponentMapping components = {};
+ const VkImageSubresourceRange subresourceRange = {};
};
static inline ImageView* Cast(VkImageView object)
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkObject.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkObject.hpp
index 757d5560cc0..805fe595ccd 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkObject.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkObject.hpp
@@ -19,6 +19,7 @@
#include "VkDebug.hpp"
#include "VkMemory.h"
+#include <new>
#include <vulkan/vulkan_core.h>
#include <vulkan/vk_icd.h>
@@ -43,7 +44,14 @@ static VkResult Create(const VkAllocationCallbacks* pAllocator, const CreateInfo
}
}
- auto object = new (pAllocator) T(pCreateInfo, memory);
+ void* objectMemory = vk::allocate(sizeof(T), alignof(T), pAllocator, T::GetAllocationScope());
+ if(!objectMemory)
+ {
+ vk::deallocate(memory, pAllocator);
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
+ }
+
+ auto object = new (objectMemory) T(pCreateInfo, memory);
if(!object)
{
@@ -64,11 +72,6 @@ public:
void destroy(const VkAllocationCallbacks* pAllocator) {} // Method defined by objects to delete their content, if necessary
- void* operator new(size_t count, const VkAllocationCallbacks* pAllocator)
- {
- return vk::allocate(count, alignof(T), pAllocator, T::GetAllocationScope());
- }
-
void operator delete(void* ptr, const VkAllocationCallbacks* pAllocator)
{
// Should never happen
@@ -119,11 +122,6 @@ public:
object.destroy(pAllocator);
}
- void* operator new(size_t count, const VkAllocationCallbacks* pAllocator)
- {
- return vk::allocate(count, alignof(T), pAllocator, T::GetAllocationScope());
- }
-
void operator delete(void* ptr, const VkAllocationCallbacks* pAllocator)
{
// Should never happen
@@ -144,7 +142,8 @@ public:
static inline T* Cast(VkT vkObject)
{
- return &(reinterpret_cast<DispatchableObject<T, VkT>*>(vkObject)->object);
+ return (vkObject == VK_NULL_HANDLE) ? nullptr :
+ &(reinterpret_cast<DispatchableObject<T, VkT>*>(vkObject)->object);
}
operator VkT()
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkPhysicalDevice.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkPhysicalDevice.cpp
index b4bfe61a884..997f09078d2 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkPhysicalDevice.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkPhysicalDevice.cpp
@@ -15,6 +15,8 @@
#include "VkPhysicalDevice.hpp"
#include "VkConfig.h"
+#include "Pipeline/SpirvShader.hpp" // sw::SIMD::Width
+
#include <cstring>
namespace vk
@@ -37,8 +39,8 @@ const VkPhysicalDeviceFeatures& PhysicalDevice::getFeatures() const
false, // sampleRateShading
false, // dualSrcBlend
false, // logicOp
- false, // multiDrawIndirect
- false, // drawIndirectFirstInstance
+ true, // multiDrawIndirect
+ true, // drawIndirectFirstInstance
false, // depthClamp
false, // depthBiasClamp
false, // fillModeNonSolid
@@ -126,6 +128,11 @@ void PhysicalDevice::getFeatures(VkPhysicalDeviceProtectedMemoryFeatures* featur
features->protectedMemory = VK_FALSE;
}
+void PhysicalDevice::getFeatures(VkPhysicalDeviceShaderDrawParameterFeatures* features) const
+{
+ features->shaderDrawParameters = VK_FALSE;
+}
+
VkSampleCountFlags PhysicalDevice::getSampleCounts() const
{
return VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT;
@@ -137,15 +144,15 @@ const VkPhysicalDeviceLimits& PhysicalDevice::getLimits() const
static const VkPhysicalDeviceLimits limits =
{
- (1 << vk::MAX_IMAGE_LEVELS_1D), // maxImageDimension1D
- (1 << vk::MAX_IMAGE_LEVELS_2D), // maxImageDimension2D
- (1 << vk::MAX_IMAGE_LEVELS_3D), // maxImageDimension3D
- (1 << vk::MAX_IMAGE_LEVELS_CUBE), // maxImageDimensionCube
- (1 << vk::MAX_IMAGE_ARRAY_LAYERS), // maxImageArrayLayers
+ 1 << (vk::MAX_IMAGE_LEVELS_1D - 1), // maxImageDimension1D
+ 1 << (vk::MAX_IMAGE_LEVELS_2D - 1), // maxImageDimension2D
+ 1 << (vk::MAX_IMAGE_LEVELS_3D - 1), // maxImageDimension3D
+ 1 << (vk::MAX_IMAGE_LEVELS_CUBE - 1), // maxImageDimensionCube
+ vk::MAX_IMAGE_ARRAY_LAYERS, // maxImageArrayLayers
65536, // maxTexelBufferElements
16384, // maxUniformBufferRange
(1ul << 27), // maxStorageBufferRange
- 128, // maxPushConstantsSize
+ vk::MAX_PUSH_CONSTANT_SIZE, // maxPushConstantsSize
4096, // maxMemoryAllocationCount
4000, // maxSamplerAllocationCount
131072, // bufferImageGranularity
@@ -160,9 +167,9 @@ const VkPhysicalDeviceLimits& PhysicalDevice::getLimits() const
128, // maxPerStageResources
96, // maxDescriptorSetSamplers
72, // maxDescriptorSetUniformBuffers
- 8, // maxDescriptorSetUniformBuffersDynamic
+ MAX_DESCRIPTOR_SET_UNIFORM_BUFFERS_DYNAMIC, // maxDescriptorSetUniformBuffersDynamic
24, // maxDescriptorSetStorageBuffers
- 4, // maxDescriptorSetStorageBuffersDynamic
+ MAX_DESCRIPTOR_SET_STORAGE_BUFFERS_DYNAMIC, // maxDescriptorSetStorageBuffersDynamic
96, // maxDescriptorSetSampledImages
24, // maxDescriptorSetStorageImages
4, // maxDescriptorSetInputAttachments
@@ -303,12 +310,45 @@ void PhysicalDevice::getProperties(VkPhysicalDeviceProtectedMemoryProperties* pr
void PhysicalDevice::getProperties(VkPhysicalDeviceSubgroupProperties* properties) const
{
- properties->subgroupSize = 1;
+ properties->subgroupSize = sw::SIMD::Width;
properties->supportedStages = VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT | VK_SHADER_STAGE_COMPUTE_BIT;
properties->supportedOperations = VK_SUBGROUP_FEATURE_BASIC_BIT;
properties->quadOperationsInAllStages = VK_FALSE;
}
+void PhysicalDevice::getProperties(const VkExternalMemoryHandleTypeFlagBits* handleType, VkExternalImageFormatProperties* properties) const
+{
+ properties->externalMemoryProperties.compatibleHandleTypes = 0;
+ properties->externalMemoryProperties.exportFromImportedHandleTypes = 0;
+ properties->externalMemoryProperties.externalMemoryFeatures = 0;
+}
+
+void PhysicalDevice::getProperties(VkSamplerYcbcrConversionImageFormatProperties* properties) const
+{
+ properties->combinedImageSamplerDescriptorCount = 0;
+}
+
+void PhysicalDevice::getProperties(const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const
+{
+ pExternalBufferProperties->externalMemoryProperties.compatibleHandleTypes = 0;
+ pExternalBufferProperties->externalMemoryProperties.exportFromImportedHandleTypes = 0;
+ pExternalBufferProperties->externalMemoryProperties.externalMemoryFeatures = 0;
+}
+
+void PhysicalDevice::getProperties(const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const
+{
+ pExternalFenceProperties->compatibleHandleTypes = 0;
+ pExternalFenceProperties->exportFromImportedHandleTypes = 0;
+ pExternalFenceProperties->externalFenceFeatures = 0;
+}
+
+void PhysicalDevice::getProperties(const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const
+{
+ pExternalSemaphoreProperties->compatibleHandleTypes = 0;
+ pExternalSemaphoreProperties->exportFromImportedHandleTypes = 0;
+ pExternalSemaphoreProperties->externalSemaphoreFeatures = 0;
+}
+
bool PhysicalDevice::hasFeatures(const VkPhysicalDeviceFeatures& requestedFeatures) const
{
const VkPhysicalDeviceFeatures& supportedFeatures = getFeatures();
@@ -401,7 +441,11 @@ void PhysicalDevice::getFormatProperties(VkFormat format, VkFormatProperties* pF
case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
pFormatProperties->optimalTilingFeatures |=
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT;
+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT |
+ VK_FORMAT_FEATURE_TRANSFER_SRC_BIT |
+ VK_FORMAT_FEATURE_TRANSFER_DST_BIT |
+ VK_FORMAT_FEATURE_BLIT_SRC_BIT |
+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
break;
default:
break;
@@ -607,46 +651,53 @@ void PhysicalDevice::getImageFormatProperties(VkFormat format, VkImageType type,
VkImageUsageFlags usage, VkImageCreateFlags flags,
VkImageFormatProperties* pImageFormatProperties) const
{
- pImageFormatProperties->maxArrayLayers = 1 << vk::MAX_IMAGE_ARRAY_LAYERS;
+ pImageFormatProperties->sampleCounts = VK_SAMPLE_COUNT_1_BIT;
+ pImageFormatProperties->maxArrayLayers = vk::MAX_IMAGE_ARRAY_LAYERS;
+ pImageFormatProperties->maxExtent.depth = 1;
switch(type)
{
case VK_IMAGE_TYPE_1D:
pImageFormatProperties->maxMipLevels = vk::MAX_IMAGE_LEVELS_1D;
- pImageFormatProperties->maxExtent.width = 1 << vk::MAX_IMAGE_LEVELS_1D;
+ pImageFormatProperties->maxExtent.width = 1 << (vk::MAX_IMAGE_LEVELS_1D - 1);
pImageFormatProperties->maxExtent.height = 1;
- pImageFormatProperties->maxExtent.depth = 1;
break;
case VK_IMAGE_TYPE_2D:
if(flags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT)
{
pImageFormatProperties->maxMipLevels = vk::MAX_IMAGE_LEVELS_CUBE;
- pImageFormatProperties->maxExtent.width = 1 << vk::MAX_IMAGE_LEVELS_CUBE;
- pImageFormatProperties->maxExtent.height = 1 << vk::MAX_IMAGE_LEVELS_CUBE;
- pImageFormatProperties->maxExtent.depth = 1;
+ pImageFormatProperties->maxExtent.width = 1 << (vk::MAX_IMAGE_LEVELS_CUBE - 1);
+ pImageFormatProperties->maxExtent.height = 1 << (vk::MAX_IMAGE_LEVELS_CUBE - 1);
}
else
{
pImageFormatProperties->maxMipLevels = vk::MAX_IMAGE_LEVELS_2D;
- pImageFormatProperties->maxExtent.width = 1 << vk::MAX_IMAGE_LEVELS_2D;
- pImageFormatProperties->maxExtent.height = 1 << vk::MAX_IMAGE_LEVELS_2D;
- pImageFormatProperties->maxExtent.depth = 1;
+ pImageFormatProperties->maxExtent.width = 1 << (vk::MAX_IMAGE_LEVELS_2D - 1);
+ pImageFormatProperties->maxExtent.height = 1 << (vk::MAX_IMAGE_LEVELS_2D - 1);
+
+ VkFormatProperties props;
+ getFormatProperties(format, &props);
+ auto features = tiling == VK_IMAGE_TILING_LINEAR ? props.linearTilingFeatures : props.optimalTilingFeatures;
+ if (features & (VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT))
+ {
+ // Only renderable formats make sense for multisample
+ pImageFormatProperties->sampleCounts = getSampleCounts();
+ }
}
break;
case VK_IMAGE_TYPE_3D:
pImageFormatProperties->maxMipLevels = vk::MAX_IMAGE_LEVELS_3D;
- pImageFormatProperties->maxExtent.width = 1 << vk::MAX_IMAGE_LEVELS_3D;
- pImageFormatProperties->maxExtent.height = 1 << vk::MAX_IMAGE_LEVELS_3D;
- pImageFormatProperties->maxExtent.depth = 1 << vk::MAX_IMAGE_LEVELS_3D;
+ pImageFormatProperties->maxExtent.width = 1 << (vk::MAX_IMAGE_LEVELS_3D - 1);
+ pImageFormatProperties->maxExtent.height = 1 << (vk::MAX_IMAGE_LEVELS_3D - 1);
+ pImageFormatProperties->maxExtent.depth = 1 << (vk::MAX_IMAGE_LEVELS_3D - 1);
+ pImageFormatProperties->maxArrayLayers = 1; // no 3D + layers
break;
default:
- UNREACHABLE(type);
+ UNREACHABLE("VkImageType: %d", int(type));
break;
}
pImageFormatProperties->maxResourceSize = 1 << 31; // Minimum value for maxResourceSize
- pImageFormatProperties->sampleCounts = getSampleCounts();
-
}
uint32_t PhysicalDevice::getQueueFamilyPropertyCount() const
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkPhysicalDevice.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkPhysicalDevice.hpp
index abfef2d645f..e07ce79cc0a 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkPhysicalDevice.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkPhysicalDevice.hpp
@@ -37,6 +37,7 @@ public:
void getFeatures(VkPhysicalDevice8BitStorageFeaturesKHR* features) const;
void getFeatures(VkPhysicalDeviceMultiviewFeatures* features) const;
void getFeatures(VkPhysicalDeviceProtectedMemoryFeatures* features) const;
+ void getFeatures(VkPhysicalDeviceShaderDrawParameterFeatures* features) const;
bool hasFeatures(const VkPhysicalDeviceFeatures& requestedFeatures) const;
const VkPhysicalDeviceProperties& getProperties() const;
@@ -46,6 +47,11 @@ public:
void getProperties(VkPhysicalDevicePointClippingProperties* properties) const;
void getProperties(VkPhysicalDeviceProtectedMemoryProperties* properties) const;
void getProperties(VkPhysicalDeviceSubgroupProperties* properties) const;
+ void getProperties(const VkExternalMemoryHandleTypeFlagBits* handleType, VkExternalImageFormatProperties* properties) const;
+ void getProperties(VkSamplerYcbcrConversionImageFormatProperties* properties) const;
+ void getProperties(const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const;
+ void getProperties(const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const;
+ void getProperties(const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const;
void getFormatProperties(VkFormat format, VkFormatProperties* pFormatProperties) const;
void getImageFormatProperties(VkFormat format, VkImageType type, VkImageTiling tiling,
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkPipeline.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkPipeline.cpp
index 3e512a5b2c7..9e83c39b536 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkPipeline.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkPipeline.cpp
@@ -15,51 +15,15 @@
#include "VkPipeline.hpp"
#include "VkPipelineLayout.hpp"
#include "VkShaderModule.hpp"
+#include "Pipeline/ComputeProgram.hpp"
#include "Pipeline/SpirvShader.hpp"
#include "spirv-tools/optimizer.hpp"
-namespace
-{
+#include <iostream>
-sw::DrawType Convert(VkPrimitiveTopology topology)
-{
- switch(topology)
- {
- case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:
- return sw::DRAW_POINTLIST;
- case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:
- return sw::DRAW_LINELIST;
- case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:
- return sw::DRAW_LINESTRIP;
- case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:
- return sw::DRAW_TRIANGLELIST;
- case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:
- return sw::DRAW_TRIANGLESTRIP;
- case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:
- return sw::DRAW_TRIANGLEFAN;
- case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:
- case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:
- case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:
- case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:
- // geometry shader specific
- ASSERT(false);
- break;
- case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:
- // tesselation shader specific
- ASSERT(false);
- break;
- default:
- UNIMPLEMENTED();
- }
-
- return sw::DRAW_TRIANGLELIST;
-}
-
-sw::Rect Convert(const VkRect2D& rect)
+namespace
{
- return sw::Rect(rect.offset.x, rect.offset.y, rect.offset.x + rect.extent.width, rect.offset.y + rect.extent.height);
-}
sw::StreamType getStreamType(VkFormat format)
{
@@ -121,7 +85,7 @@ sw::StreamType getStreamType(VkFormat format)
case VK_FORMAT_R32G32B32A32_SFLOAT:
return sw::STREAMTYPE_FLOAT;
default:
- UNIMPLEMENTED();
+ UNIMPLEMENTED("format");
}
return sw::STREAMTYPE_BYTE;
@@ -181,7 +145,7 @@ uint32_t getNumberOfChannels(VkFormat format)
case VK_FORMAT_R32G32B32A32_SFLOAT:
return 4;
default:
- UNIMPLEMENTED();
+ UNIMPLEMENTED("format");
}
return 0;
@@ -196,22 +160,21 @@ std::vector<uint32_t> preprocessSpirv(
spvtools::Optimizer opt{SPV_ENV_VULKAN_1_1};
opt.SetMessageConsumer([](spv_message_level_t level, const char*, const spv_position_t& p, const char* m) {
+ const char* category = "";
switch (level)
{
- case SPV_MSG_FATAL:
- case SPV_MSG_INTERNAL_ERROR:
- case SPV_MSG_ERROR:
- ERR("%d:%d %s", p.line, p.column, m);
- break;
- case SPV_MSG_WARNING:
- case SPV_MSG_INFO:
- case SPV_MSG_DEBUG:
- TRACE("%d:%d %s", p.line, p.column, m);
- break;
+ case SPV_MSG_FATAL: category = "FATAL"; break;
+ case SPV_MSG_INTERNAL_ERROR: category = "INTERNAL_ERROR"; break;
+ case SPV_MSG_ERROR: category = "ERROR"; break;
+ case SPV_MSG_WARNING: category = "WARNING"; break;
+ case SPV_MSG_INFO: category = "INFO"; break;
+ case SPV_MSG_DEBUG: category = "DEBUG"; break;
}
+ vk::trace("%s: %d:%d %s", category, p.line, p.column, m);
});
opt.RegisterPass(spvtools::CreateInlineExhaustivePass());
+ opt.RegisterPass(spvtools::CreateEliminateDeadFunctionsPass());
// If the pipeline uses specialization, apply the specializations before freezing
if (specializationInfo)
@@ -231,8 +194,28 @@ std::vector<uint32_t> preprocessSpirv(
opt.RegisterPass(spvtools::CreateFreezeSpecConstantValuePass());
opt.RegisterPass(spvtools::CreateFoldSpecConstantOpAndCompositePass());
+ // Basic optimization passes to primarily address glslang's love of loads &
+ // stores. Significantly reduces time spent in LLVM passes and codegen.
+ opt.RegisterPass(spvtools::CreateLocalAccessChainConvertPass());
+ opt.RegisterPass(spvtools::CreateLocalSingleBlockLoadStoreElimPass());
+ opt.RegisterPass(spvtools::CreateLocalSingleStoreElimPass());
+ opt.RegisterPass(spvtools::CreateBlockMergePass());
+ opt.RegisterPass(spvtools::CreateLocalMultiStoreElimPass());
+ opt.RegisterPass(spvtools::CreateSSARewritePass());
+
std::vector<uint32_t> optimized;
opt.Run(code.data(), code.size(), &optimized);
+
+ if (false) {
+ spvtools::SpirvTools core(SPV_ENV_VULKAN_1_1);
+ std::string preOpt;
+ core.Disassemble(code, &preOpt, SPV_BINARY_TO_TEXT_OPTION_NONE);
+ std::string postOpt;
+ core.Disassemble(optimized, &postOpt, SPV_BINARY_TO_TEXT_OPTION_NONE);
+ std::cout << "PRE-OPT: " << preOpt << std::endl
+ << "POST-OPT: " << postOpt << std::endl;
+ }
+
return optimized;
}
@@ -246,41 +229,42 @@ Pipeline::Pipeline(PipelineLayout const *layout) : layout(layout) {}
GraphicsPipeline::GraphicsPipeline(const VkGraphicsPipelineCreateInfo* pCreateInfo, void* mem)
: Pipeline(Cast(pCreateInfo->layout))
{
- if((pCreateInfo->flags != 0) ||
+ if(((pCreateInfo->flags & ~(VK_PIPELINE_CREATE_DERIVATIVE_BIT | VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT)) != 0) ||
(pCreateInfo->stageCount != 2) ||
- (pCreateInfo->pTessellationState != nullptr) ||
- (pCreateInfo->pDynamicState != nullptr) ||
- (pCreateInfo->subpass != 0) ||
- (pCreateInfo->basePipelineHandle != VK_NULL_HANDLE) ||
- (pCreateInfo->basePipelineIndex != 0))
- {
- UNIMPLEMENTED();
- }
-
- const VkPipelineShaderStageCreateInfo& vertexStage = pCreateInfo->pStages[0];
- if((vertexStage.stage != VK_SHADER_STAGE_VERTEX_BIT) ||
- (vertexStage.flags != 0) ||
- !((vertexStage.pSpecializationInfo == nullptr) ||
- ((vertexStage.pSpecializationInfo->mapEntryCount == 0) &&
- (vertexStage.pSpecializationInfo->dataSize == 0))))
+ (pCreateInfo->pTessellationState != nullptr))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo settings");
}
- const VkPipelineShaderStageCreateInfo& fragmentStage = pCreateInfo->pStages[1];
- if((fragmentStage.stage != VK_SHADER_STAGE_FRAGMENT_BIT) ||
- (fragmentStage.flags != 0) ||
- !((fragmentStage.pSpecializationInfo == nullptr) ||
- ((fragmentStage.pSpecializationInfo->mapEntryCount == 0) &&
- (fragmentStage.pSpecializationInfo->dataSize == 0))))
+ if(pCreateInfo->pDynamicState)
{
- UNIMPLEMENTED();
+ for(uint32_t i = 0; i < pCreateInfo->pDynamicState->dynamicStateCount; i++)
+ {
+ VkDynamicState dynamicState = pCreateInfo->pDynamicState->pDynamicStates[i];
+ switch(dynamicState)
+ {
+ case VK_DYNAMIC_STATE_VIEWPORT:
+ case VK_DYNAMIC_STATE_SCISSOR:
+ case VK_DYNAMIC_STATE_LINE_WIDTH:
+ case VK_DYNAMIC_STATE_DEPTH_BIAS:
+ case VK_DYNAMIC_STATE_BLEND_CONSTANTS:
+ case VK_DYNAMIC_STATE_DEPTH_BOUNDS:
+ case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:
+ case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:
+ case VK_DYNAMIC_STATE_STENCIL_REFERENCE:
+ ASSERT(dynamicState < (sizeof(dynamicStateFlags) * 8));
+ dynamicStateFlags |= (1 << dynamicState);
+ break;
+ default:
+ UNIMPLEMENTED("dynamic state");
+ }
+ }
}
const VkPipelineVertexInputStateCreateInfo* vertexInputState = pCreateInfo->pVertexInputState;
if(vertexInputState->flags != 0)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("vertexInputState->flags");
}
// Context must always have a PipelineLayout set.
@@ -288,15 +272,13 @@ GraphicsPipeline::GraphicsPipeline(const VkGraphicsPipelineCreateInfo* pCreateIn
// Temporary in-binding-order representation of buffer strides, to be consumed below
// when considering attributes. TODO: unfuse buffers from attributes in backend, is old GL model.
- uint32_t bufferStrides[MAX_VERTEX_INPUT_BINDINGS];
+ uint32_t vertexStrides[MAX_VERTEX_INPUT_BINDINGS];
+ uint32_t instanceStrides[MAX_VERTEX_INPUT_BINDINGS];
for(uint32_t i = 0; i < vertexInputState->vertexBindingDescriptionCount; i++)
{
auto const & desc = vertexInputState->pVertexBindingDescriptions[i];
- bufferStrides[desc.binding] = desc.stride;
- if(desc.inputRate != VK_VERTEX_INPUT_RATE_VERTEX)
- {
- UNIMPLEMENTED();
- }
+ vertexStrides[desc.binding] = desc.inputRate == VK_VERTEX_INPUT_RATE_VERTEX ? desc.stride : 0;
+ instanceStrides[desc.binding] = desc.inputRate == VK_VERTEX_INPUT_RATE_INSTANCE ? desc.stride : 0;
}
for(uint32_t i = 0; i < vertexInputState->vertexAttributeDescriptionCount; i++)
@@ -305,20 +287,21 @@ GraphicsPipeline::GraphicsPipeline(const VkGraphicsPipelineCreateInfo* pCreateIn
sw::Stream& input = context.input[desc.location];
input.count = getNumberOfChannels(desc.format);
input.type = getStreamType(desc.format);
- input.normalized = !sw::Surface::isNonNormalizedInteger(desc.format);
+ input.normalized = !vk::Format(desc.format).isNonNormalizedInteger();
input.offset = desc.offset;
input.binding = desc.binding;
- input.stride = bufferStrides[desc.binding];
+ input.vertexStride = vertexStrides[desc.binding];
+ input.instanceStride = instanceStrides[desc.binding];
}
const VkPipelineInputAssemblyStateCreateInfo* assemblyState = pCreateInfo->pInputAssemblyState;
if((assemblyState->flags != 0) ||
(assemblyState->primitiveRestartEnable != 0))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pInputAssemblyState settings");
}
- context.drawType = Convert(assemblyState->topology);
+ context.topology = assemblyState->topology;
const VkPipelineViewportStateCreateInfo* viewportState = pCreateInfo->pViewportState;
if(viewportState)
@@ -327,11 +310,18 @@ GraphicsPipeline::GraphicsPipeline(const VkGraphicsPipelineCreateInfo* pCreateIn
(viewportState->viewportCount != 1) ||
(viewportState->scissorCount != 1))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pViewportState settings");
+ }
+
+ if(!hasDynamicState(VK_DYNAMIC_STATE_SCISSOR))
+ {
+ scissor = viewportState->pScissors[0];
}
- scissor = Convert(viewportState->pScissors[0]);
- viewport = viewportState->pViewports[0];
+ if(!hasDynamicState(VK_DYNAMIC_STATE_VIEWPORT))
+ {
+ viewport = viewportState->pViewports[0];
+ }
}
const VkPipelineRasterizationStateCreateInfo* rasterizationState = pCreateInfo->pRasterizationState;
@@ -339,10 +329,10 @@ GraphicsPipeline::GraphicsPipeline(const VkGraphicsPipelineCreateInfo* pCreateIn
(rasterizationState->depthClampEnable != 0) ||
(rasterizationState->polygonMode != VK_POLYGON_MODE_FILL))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pRasterizationState settings");
}
- context.rasterizerDiscard = rasterizationState->rasterizerDiscardEnable;
+ context.rasterizerDiscard = (rasterizationState->rasterizerDiscardEnable == VK_TRUE);
context.cullMode = rasterizationState->cullMode;
context.frontFacingCCW = rasterizationState->frontFace == VK_FRONT_FACE_COUNTER_CLOCKWISE;
context.depthBias = (rasterizationState->depthBiasEnable ? rasterizationState->depthBiasConstantFactor : 0.0f);
@@ -362,14 +352,15 @@ GraphicsPipeline::GraphicsPipeline(const VkGraphicsPipelineCreateInfo* pCreateIn
UNIMPLEMENTED("Unsupported sample count");
}
+ if (multisampleState->pSampleMask)
+ context.sampleMask = multisampleState->pSampleMask[0];
+
if((multisampleState->flags != 0) ||
(multisampleState->sampleShadingEnable != 0) ||
- !((multisampleState->pSampleMask == nullptr) ||
- (*(multisampleState->pSampleMask) == 0xFFFFFFFFu)) ||
(multisampleState->alphaToCoverageEnable != 0) ||
(multisampleState->alphaToOneEnable != 0))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("multisampleState");
}
}
else
@@ -381,35 +372,21 @@ GraphicsPipeline::GraphicsPipeline(const VkGraphicsPipelineCreateInfo* pCreateIn
if(depthStencilState)
{
if((depthStencilState->flags != 0) ||
- (depthStencilState->depthBoundsTestEnable != 0) ||
- (depthStencilState->minDepthBounds != 0.0f) ||
- (depthStencilState->maxDepthBounds != 1.0f))
+ (depthStencilState->depthBoundsTestEnable != 0))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("depthStencilState");
}
- context.depthBufferEnable = depthStencilState->depthTestEnable;
- context.depthWriteEnable = depthStencilState->depthWriteEnable;
+ context.depthBoundsTestEnable = (depthStencilState->depthBoundsTestEnable == VK_TRUE);
+ context.depthBufferEnable = (depthStencilState->depthTestEnable == VK_TRUE);
+ context.depthWriteEnable = (depthStencilState->depthWriteEnable == VK_TRUE);
context.depthCompareMode = depthStencilState->depthCompareOp;
- context.stencilEnable = context.twoSidedStencil = depthStencilState->stencilTestEnable;
+ context.stencilEnable = context.twoSidedStencil = (depthStencilState->stencilTestEnable == VK_TRUE);
if(context.stencilEnable)
{
- context.stencilMask = depthStencilState->front.compareMask;
- context.stencilCompareMode = depthStencilState->front.compareOp;
- context.stencilZFailOperation = depthStencilState->front.depthFailOp;
- context.stencilFailOperation = depthStencilState->front.failOp;
- context.stencilPassOperation = depthStencilState->front.passOp;
- context.stencilReference = depthStencilState->front.reference;
- context.stencilWriteMask = depthStencilState->front.writeMask;
-
- context.stencilMaskCCW = depthStencilState->back.compareMask;
- context.stencilCompareModeCCW = depthStencilState->back.compareOp;
- context.stencilZFailOperationCCW = depthStencilState->back.depthFailOp;
- context.stencilFailOperationCCW = depthStencilState->back.failOp;
- context.stencilPassOperationCCW = depthStencilState->back.passOp;
- context.stencilReferenceCCW = depthStencilState->back.reference;
- context.stencilWriteMaskCCW = depthStencilState->back.writeMask;
+ context.frontStencil = depthStencilState->front;
+ context.backStencil = depthStencilState->back;
}
}
@@ -420,23 +397,22 @@ GraphicsPipeline::GraphicsPipeline(const VkGraphicsPipelineCreateInfo* pCreateIn
((colorBlendState->logicOpEnable != 0) &&
(colorBlendState->attachmentCount > 1)))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("colorBlendState");
}
- blendConstants.r = colorBlendState->blendConstants[0];
- blendConstants.g = colorBlendState->blendConstants[1];
- blendConstants.b = colorBlendState->blendConstants[2];
- blendConstants.a = colorBlendState->blendConstants[3];
+ if(!hasDynamicState(VK_DYNAMIC_STATE_BLEND_CONSTANTS))
+ {
+ blendConstants.r = colorBlendState->blendConstants[0];
+ blendConstants.g = colorBlendState->blendConstants[1];
+ blendConstants.b = colorBlendState->blendConstants[2];
+ blendConstants.a = colorBlendState->blendConstants[3];
+ }
if(colorBlendState->attachmentCount == 1)
{
const VkPipelineColorBlendAttachmentState& attachment = colorBlendState->pAttachments[0];
- if(attachment.colorWriteMask != (VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT))
- {
- UNIMPLEMENTED();
- }
-
- context.alphaBlendEnable = attachment.blendEnable;
+ context.setColorWriteMask(0, attachment.colorWriteMask);
+ context.alphaBlendEnable = (attachment.blendEnable == VK_TRUE);
context.separateAlphaBlendEnable = (attachment.alphaBlendOp != attachment.colorBlendOp) ||
(attachment.dstAlphaBlendFactor != attachment.dstColorBlendFactor) ||
(attachment.srcAlphaBlendFactor != attachment.srcColorBlendFactor);
@@ -465,10 +441,15 @@ void GraphicsPipeline::compileShaders(const VkAllocationCallbacks* pAllocator, c
{
for (auto pStage = pCreateInfo->pStages; pStage != pCreateInfo->pStages + pCreateInfo->stageCount; pStage++)
{
- auto module = Cast(pStage->module);
+ if (pStage->flags != 0)
+ {
+ UNIMPLEMENTED("pStage->flags");
+ }
+ auto module = Cast(pStage->module);
auto code = preprocessSpirv(module->getCode(), pStage->pSpecializationInfo);
+ // FIXME (b/119409619): use an allocator here so we can control all memory allocations
// TODO: also pass in any pipeline state which will affect shader compilation
auto spirvShader = new sw::SpirvShader{code};
@@ -490,22 +471,22 @@ void GraphicsPipeline::compileShaders(const VkAllocationCallbacks* pAllocator, c
uint32_t GraphicsPipeline::computePrimitiveCount(uint32_t vertexCount) const
{
- switch(context.drawType)
+ switch(context.topology)
{
- case sw::DRAW_POINTLIST:
+ case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:
return vertexCount;
- case sw::DRAW_LINELIST:
+ case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:
return vertexCount / 2;
- case sw::DRAW_LINESTRIP:
+ case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:
return vertexCount - 1;
- case sw::DRAW_TRIANGLELIST:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:
return vertexCount / 3;
- case sw::DRAW_TRIANGLESTRIP:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:
return vertexCount - 2;
- case sw::DRAW_TRIANGLEFAN:
+ case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:
return vertexCount - 2;
default:
- UNIMPLEMENTED();
+ UNIMPLEMENTED("context.topology %d", int(context.topology));
}
return 0;
@@ -516,7 +497,7 @@ const sw::Context& GraphicsPipeline::getContext() const
return context;
}
-const sw::Rect& GraphicsPipeline::getScissor() const
+const VkRect2D& GraphicsPipeline::getScissor() const
{
return scissor;
}
@@ -531,6 +512,11 @@ const sw::Color<float>& GraphicsPipeline::getBlendConstants() const
return blendConstants;
}
+bool GraphicsPipeline::hasDynamicState(VkDynamicState dynamicState) const
+{
+ return (dynamicStateFlags & (1 << dynamicState)) != 0;
+}
+
ComputePipeline::ComputePipeline(const VkComputePipelineCreateInfo* pCreateInfo, void* mem)
: Pipeline(Cast(pCreateInfo->layout))
{
@@ -538,6 +524,7 @@ ComputePipeline::ComputePipeline(const VkComputePipelineCreateInfo* pCreateInfo,
void ComputePipeline::destroyPipeline(const VkAllocationCallbacks* pAllocator)
{
+ delete shader;
}
size_t ComputePipeline::ComputeRequiredAllocationSize(const VkComputePipelineCreateInfo* pCreateInfo)
@@ -545,4 +532,36 @@ size_t ComputePipeline::ComputeRequiredAllocationSize(const VkComputePipelineCre
return 0;
}
+void ComputePipeline::compileShaders(const VkAllocationCallbacks* pAllocator, const VkComputePipelineCreateInfo* pCreateInfo)
+{
+ auto module = Cast(pCreateInfo->stage.module);
+
+ auto code = preprocessSpirv(module->getCode(), pCreateInfo->stage.pSpecializationInfo);
+
+ ASSERT_OR_RETURN(code.size() > 0);
+
+ ASSERT(shader == nullptr);
+
+ // FIXME(b/119409619): use allocator.
+ shader = new sw::SpirvShader(code);
+ vk::DescriptorSet::Bindings descriptorSets; // FIXME(b/129523279): Delay code generation until invoke time.
+ sw::ComputeProgram program(shader, layout, descriptorSets);
+
+ program.generate();
+
+ // TODO(bclayton): Cache program
+ routine = program("ComputeRoutine");
+}
+
+void ComputePipeline::run(uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ,
+ vk::DescriptorSet::Bindings const &descriptorSets,
+ vk::DescriptorSet::DynamicOffsets const &descriptorDynamicOffsets,
+ sw::PushConstantStorage const &pushConstants)
+{
+ ASSERT_OR_RETURN(routine != nullptr);
+ sw::ComputeProgram::run(
+ routine, descriptorSets, descriptorDynamicOffsets, pushConstants,
+ groupCountX, groupCountY, groupCountZ);
+}
+
} // namespace vk
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkPipeline.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkPipeline.hpp
index 7b4d5914279..bf6092a3488 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkPipeline.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkPipeline.hpp
@@ -16,6 +16,7 @@
#define VK_PIPELINE_HPP_
#include "VkObject.hpp"
+#include "Vulkan/VkDescriptorSet.hpp"
#include "Device/Renderer.hpp"
namespace sw { class SpirvShader; }
@@ -71,16 +72,18 @@ public:
uint32_t computePrimitiveCount(uint32_t vertexCount) const;
const sw::Context& getContext() const;
- const sw::Rect& getScissor() const;
+ const VkRect2D& getScissor() const;
const VkViewport& getViewport() const;
const sw::Color<float>& getBlendConstants() const;
+ bool hasDynamicState(VkDynamicState dynamicState) const;
private:
sw::SpirvShader *vertexShader = nullptr;
sw::SpirvShader *fragmentShader = nullptr;
+ uint32_t dynamicStateFlags = 0;
sw::Context context;
- sw::Rect scissor;
+ VkRect2D scissor;
VkViewport viewport;
sw::Color<float> blendConstants;
};
@@ -100,6 +103,17 @@ public:
#endif
static size_t ComputeRequiredAllocationSize(const VkComputePipelineCreateInfo* pCreateInfo);
+
+ void compileShaders(const VkAllocationCallbacks* pAllocator, const VkComputePipelineCreateInfo* pCreateInfo);
+
+ void run(uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ,
+ vk::DescriptorSet::Bindings const &descriptorSets,
+ vk::DescriptorSet::DynamicOffsets const &descriptorDynamicOffsets,
+ sw::PushConstantStorage const &pushConstants);
+
+protected:
+ sw::SpirvShader *shader = nullptr;
+ rr::Routine *routine = nullptr;
};
static inline Pipeline* Cast(VkPipeline object)
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkPipelineCache.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkPipelineCache.cpp
new file mode 100644
index 00000000000..e0890f1fe0d
--- /dev/null
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkPipelineCache.cpp
@@ -0,0 +1,79 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "VkPipelineCache.hpp"
+#include <cstring>
+
+namespace vk
+{
+
+PipelineCache::PipelineCache(const VkPipelineCacheCreateInfo* pCreateInfo, void* mem) :
+ dataSize(ComputeRequiredAllocationSize(pCreateInfo)), data(reinterpret_cast<uint8_t*>(mem))
+{
+ CacheHeader* header = reinterpret_cast<CacheHeader*>(mem);
+ header->headerLength = sizeof(CacheHeader);
+ header->headerVersion = VK_PIPELINE_CACHE_HEADER_VERSION_ONE;
+ header->vendorID = VENDOR_ID;
+ header->deviceID = DEVICE_ID;
+ memcpy(header->pipelineCacheUUID, SWIFTSHADER_UUID, VK_UUID_SIZE);
+
+ if(pCreateInfo->pInitialData && (pCreateInfo->initialDataSize > 0))
+ {
+ memcpy(data + sizeof(CacheHeader), pCreateInfo->pInitialData, pCreateInfo->initialDataSize);
+ }
+}
+
+void PipelineCache::destroy(const VkAllocationCallbacks* pAllocator)
+{
+ vk::deallocate(data, pAllocator);
+}
+
+size_t PipelineCache::ComputeRequiredAllocationSize(const VkPipelineCacheCreateInfo* pCreateInfo)
+{
+ return pCreateInfo->initialDataSize + sizeof(CacheHeader);
+}
+
+VkResult PipelineCache::getData(size_t* pDataSize, void* pData)
+{
+ if(!pData)
+ {
+ *pDataSize = dataSize;
+ return VK_SUCCESS;
+ }
+
+ if(*pDataSize != dataSize)
+ {
+ *pDataSize = 0;
+ return VK_INCOMPLETE;
+ }
+
+ if(*pDataSize > 0)
+ {
+ memcpy(pData, data, *pDataSize);
+ }
+
+ return VK_SUCCESS;
+}
+
+VkResult PipelineCache::merge(uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches)
+{
+ for(uint32_t i = 0; i < srcCacheCount; i++)
+ {
+ // TODO (b/123588002): merge pSrcCaches[i];
+ }
+
+ return VK_SUCCESS;
+}
+
+} // namespace vk
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkPipelineCache.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkPipelineCache.hpp
index 6218394c206..927c7a219c0 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkPipelineCache.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkPipelineCache.hpp
@@ -23,18 +23,27 @@ namespace vk
class PipelineCache : public Object<PipelineCache, VkPipelineCache>
{
public:
- PipelineCache(const VkPipelineCacheCreateInfo* pCreateInfo, void* mem)
- {
- }
-
+ PipelineCache(const VkPipelineCacheCreateInfo* pCreateInfo, void* mem);
~PipelineCache() = delete;
+ void destroy(const VkAllocationCallbacks* pAllocator);
- static size_t ComputeRequiredAllocationSize(const VkPipelineCacheCreateInfo* pCreateInfo)
- {
- return 0;
- }
+ static size_t ComputeRequiredAllocationSize(const VkPipelineCacheCreateInfo* pCreateInfo);
+
+ VkResult getData(size_t* pDataSize, void* pData);
+ VkResult merge(uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
private:
+ struct CacheHeader
+ {
+ uint32_t headerLength;
+ uint32_t headerVersion;
+ uint32_t vendorID;
+ uint32_t deviceID;
+ uint8_t pipelineCacheUUID[VK_UUID_SIZE];
+ };
+
+ size_t dataSize = 0;
+ uint8_t* data = nullptr;
};
static inline PipelineCache* Cast(VkPipelineCache object)
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkPipelineLayout.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkPipelineLayout.cpp
index fcc6c662b96..1c80ca76f9d 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkPipelineLayout.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkPipelineLayout.cpp
@@ -31,6 +31,16 @@ PipelineLayout::PipelineLayout(const VkPipelineLayoutCreateInfo* pCreateInfo, vo
size_t pushConstantRangesSize = pCreateInfo->pushConstantRangeCount * sizeof(VkPushConstantRange);
pushConstantRanges = reinterpret_cast<VkPushConstantRange*>(hostMem);
memcpy(pushConstantRanges, pCreateInfo->pPushConstantRanges, pushConstantRangesSize);
+ hostMem += pushConstantRangesSize;
+
+ dynamicOffsetBases = reinterpret_cast<uint32_t*>(hostMem);
+ uint32_t dynamicOffsetBase = 0;
+ for (uint32_t i = 0; i < setLayoutCount; i++)
+ {
+ ASSERT_OR_RETURN(dynamicOffsetBase < MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC);
+ dynamicOffsetBases[i] = dynamicOffsetBase;
+ dynamicOffsetBase += setLayouts[i]->getDynamicDescriptorCount();
+ }
}
void PipelineLayout::destroy(const VkAllocationCallbacks* pAllocator)
@@ -41,7 +51,8 @@ void PipelineLayout::destroy(const VkAllocationCallbacks* pAllocator)
size_t PipelineLayout::ComputeRequiredAllocationSize(const VkPipelineLayoutCreateInfo* pCreateInfo)
{
return (pCreateInfo->setLayoutCount * sizeof(DescriptorSetLayout*)) +
- (pCreateInfo->pushConstantRangeCount * sizeof(VkPushConstantRange));
+ (pCreateInfo->pushConstantRangeCount * sizeof(VkPushConstantRange)) +
+ (pCreateInfo->setLayoutCount * sizeof(uint32_t)); // dynamicOffsetBases
}
size_t PipelineLayout::getNumDescriptorSets() const
@@ -49,10 +60,16 @@ size_t PipelineLayout::getNumDescriptorSets() const
return setLayoutCount;
}
-size_t PipelineLayout::getBindingOffset(size_t descriptorSet, size_t binding) const
+DescriptorSetLayout const* PipelineLayout::getDescriptorSetLayout(size_t descriptorSet) const
+{
+ ASSERT(descriptorSet < setLayoutCount);
+ return setLayouts[descriptorSet];
+}
+
+uint32_t PipelineLayout::getDynamicOffsetBase(size_t descriptorSet) const
{
ASSERT(descriptorSet < setLayoutCount);
- return setLayouts[descriptorSet]->getBindingOffset(binding);
+ return dynamicOffsetBases[descriptorSet];
}
} // namespace vk
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkPipelineLayout.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkPipelineLayout.hpp
index 5723317184a..57dc9ca638b 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkPipelineLayout.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkPipelineLayout.hpp
@@ -30,13 +30,18 @@ public:
static size_t ComputeRequiredAllocationSize(const VkPipelineLayoutCreateInfo* pCreateInfo);
size_t getNumDescriptorSets() const;
- size_t getBindingOffset(size_t descriptorSet, size_t binding) const;
+ DescriptorSetLayout const* getDescriptorSetLayout(size_t descriptorSet) const;
+
+ // Returns the starting index into the pipeline's dynamic offsets array for
+ // the given descriptor set.
+ uint32_t getDynamicOffsetBase(size_t descriptorSet) const;
private:
uint32_t setLayoutCount = 0;
DescriptorSetLayout** setLayouts = nullptr;
uint32_t pushConstantRangeCount = 0;
VkPushConstantRange* pushConstantRanges = nullptr;
+ uint32_t* dynamicOffsetBases = nullptr; // Base offset per set layout.
};
static inline PipelineLayout* Cast(VkPipelineLayout object)
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkQueryPool.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkQueryPool.cpp
index 8a632087054..864ddb27930 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkQueryPool.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkQueryPool.cpp
@@ -13,11 +13,17 @@
// limitations under the License.
#include "VkQueryPool.hpp"
+#include "Common/Thread.hpp"
+
+#include <chrono>
+#include <cstring>
+#include <new>
namespace vk
{
QueryPool::QueryPool(const VkQueryPoolCreateInfo* pCreateInfo, void* mem) :
- queryCount(pCreateInfo->queryCount)
+ pool(reinterpret_cast<Query*>(mem)), type(pCreateInfo->queryType),
+ count(pCreateInfo->queryCount)
{
// According to the Vulkan spec, section 34.1. Features:
// "pipelineStatisticsQuery specifies whether the pipeline statistics
@@ -25,30 +31,147 @@ namespace vk
// type VK_QUERY_TYPE_PIPELINE_STATISTICS cannot be created, and
// none of the VkQueryPipelineStatisticFlagBits bits can be set in the
// pipelineStatistics member of the VkQueryPoolCreateInfo structure."
- if(pCreateInfo->queryType == VK_QUERY_TYPE_PIPELINE_STATISTICS)
+ if(type == VK_QUERY_TYPE_PIPELINE_STATISTICS)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->queryType");
}
+
+ // Construct all queries
+ for(uint32_t i = 0; i < count; i++)
+ {
+ new (&pool[i]) Query();
+ }
+ }
+
+ void QueryPool::destroy(const VkAllocationCallbacks* pAllocator)
+ {
+ vk::deallocate(pool, pAllocator);
}
size_t QueryPool::ComputeRequiredAllocationSize(const VkQueryPoolCreateInfo* pCreateInfo)
{
- return 0;
+ return sizeof(Query) * pCreateInfo->queryCount;
}
- void QueryPool::getResults(uint32_t pFirstQuery, uint32_t pQueryCount, size_t pDataSize,
- void* pData, VkDeviceSize pStride, VkQueryResultFlags pFlags) const
+ VkResult QueryPool::getResults(uint32_t firstQuery, uint32_t queryCount, size_t dataSize,
+ void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const
{
// dataSize must be large enough to contain the result of each query
- ASSERT(static_cast<size_t>(pStride * pQueryCount) <= pDataSize);
+ ASSERT(static_cast<size_t>(stride * queryCount) <= dataSize);
+
+ // The sum of firstQuery and queryCount must be less than or equal to the number of queries
+ ASSERT((firstQuery + queryCount) <= count);
+
+ VkResult result = VK_SUCCESS;
+ uint8_t* data = static_cast<uint8_t*>(pData);
+ for(uint32_t i = firstQuery; i < (firstQuery + queryCount); i++, data += stride)
+ {
+ // If VK_QUERY_RESULT_WAIT_BIT and VK_QUERY_RESULT_PARTIAL_BIT are both not set
+ // then no result values are written to pData for queries that are in the
+ // unavailable state at the time of the call, and vkGetQueryPoolResults returns
+ // VK_NOT_READY. However, availability state is still written to pData for those
+ // queries if VK_QUERY_RESULT_WITH_AVAILABILITY_BIT is set.
+ auto &query = pool[i];
+ std::unique_lock<std::mutex> mutexLock(query.mutex);
+ if(flags & VK_QUERY_RESULT_WAIT_BIT) // Must wait for query to finish
+ {
+ query.condition.wait(mutexLock, [&query] { return query.state != Query::ACTIVE; });
+ }
+
+ bool writeResult = true;
+ if(pool[i].state == Query::ACTIVE)
+ {
+ result = VK_NOT_READY;
+ writeResult = (flags & VK_QUERY_RESULT_PARTIAL_BIT); // Allow writing partial results
+ }
+
+ if(flags & VK_QUERY_RESULT_64_BIT)
+ {
+ uint64_t* result64 = reinterpret_cast<uint64_t*>(data);
+ if(writeResult)
+ {
+ result64[0] = pool[i].data;
+ }
+ if(flags & VK_QUERY_RESULT_WITH_AVAILABILITY_BIT) // Output query availablity
+ {
+ result64[1] = pool[i].state;
+ }
+ }
+ else
+ {
+ uint32_t* result32 = reinterpret_cast<uint32_t*>(data);
+ if(writeResult)
+ {
+ result32[0] = static_cast<uint32_t>(pool[i].data);
+ }
+ if(flags & VK_QUERY_RESULT_WITH_AVAILABILITY_BIT) // Output query availablity
+ {
+ result32[1] = pool[i].state;
+ }
+ }
+ }
+
+ return result;
+ }
+
+ void QueryPool::begin(uint32_t query, VkQueryControlFlags flags)
+ {
+ ASSERT(query < count);
+
+ if(flags != 0)
+ {
+ UNIMPLEMENTED("flags");
+ }
+
+ ASSERT(pool[query].state == Query::UNAVAILABLE);
+ pool[query].state = Query::ACTIVE;
+ pool[query].data = 0;
+ pool[query].reference = 1;
+ pool[query].type = type;
+ }
+
+ void QueryPool::end(uint32_t query)
+ {
+ ASSERT(query < count);
+ #if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
+ {
+ std::unique_lock<std::mutex> mutexLock(pool[query].mutex);
+ ASSERT(pool[query].state == Query::ACTIVE);
+ }
+ #endif
+
+ int ref = --pool[query].reference;
+ if(ref == 0)
+ {
+ std::unique_lock<std::mutex> mutexLock(pool[query].mutex);
+ pool[query].state = Query::FINISHED;
+ }
+ }
+
+ void QueryPool::reset(uint32_t firstQuery, uint32_t queryCount)
+ {
// The sum of firstQuery and queryCount must be less than or equal to the number of queries
- ASSERT((pFirstQuery + pQueryCount) <= queryCount);
+ ASSERT((firstQuery + queryCount) <= count);
- char* data = static_cast<char*>(pData);
- for(uint32_t i = 0; i < pQueryCount; i++, data += pStride)
+ for(uint32_t i = firstQuery; i < (firstQuery + queryCount); i++)
{
- UNIMPLEMENTED();
+ std::unique_lock<std::mutex> mutexLock(pool[i].mutex);
+
+ ASSERT(pool[i].state != Query::ACTIVE);
+
+ pool[i].state = Query::UNAVAILABLE;
+ pool[i].data = 0;
}
}
+
+ void QueryPool::writeTimestamp(uint32_t query)
+ {
+ ASSERT(query < count);
+ ASSERT(type == VK_QUERY_TYPE_TIMESTAMP);
+
+ std::unique_lock<std::mutex> mutexLock(pool[query].mutex);
+ pool[query].data = std::chrono::time_point_cast<std::chrono::nanoseconds>(
+ std::chrono::system_clock::now()).time_since_epoch().count();
+ }
} // namespace vk
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkQueryPool.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkQueryPool.hpp
index 9f8072e225c..1ccc1a0943a 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkQueryPool.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkQueryPool.hpp
@@ -16,23 +16,53 @@
#define VK_QUERY_POOL_HPP_
#include "VkObject.hpp"
+#include <atomic>
+#include <condition_variable>
+#include <mutex>
namespace vk
{
+struct Query
+{
+ enum State
+ {
+ UNAVAILABLE,
+ ACTIVE,
+ FINISHED
+ };
+
+ std::mutex mutex;
+ std::condition_variable condition;
+ State state; // guarded by mutex
+ int64_t data; // guarded by mutex
+ std::atomic<int> reference;
+ VkQueryType type;
+};
+
class QueryPool : public Object<QueryPool, VkQueryPool>
{
public:
QueryPool(const VkQueryPoolCreateInfo* pCreateInfo, void* mem);
~QueryPool() = delete;
+ void destroy(const VkAllocationCallbacks* pAllocator);
static size_t ComputeRequiredAllocationSize(const VkQueryPoolCreateInfo* pCreateInfo);
- void getResults(uint32_t pFirstQuery, uint32_t pQueryCount, size_t pDataSize,
- void* pData, VkDeviceSize pStride, VkQueryResultFlags pFlags) const;
+ VkResult getResults(uint32_t firstQuery, uint32_t queryCount, size_t dataSize,
+ void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const;
+ void begin(uint32_t query, VkQueryControlFlags flags);
+ void end(uint32_t query);
+ void reset(uint32_t firstQuery, uint32_t queryCount);
+
+ void writeTimestamp(uint32_t query);
+
+ inline Query* getQuery(uint32_t query) const { return &(pool[query]); }
private:
- uint32_t queryCount;
+ Query* pool;
+ VkQueryType type;
+ uint32_t count;
};
static inline QueryPool* Cast(VkQueryPool object)
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkQueue.cpp b/chromium/third_party/swiftshader/src/Vulkan/VkQueue.cpp
index 6a96c1677bc..4239350cacc 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkQueue.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkQueue.cpp
@@ -17,12 +17,14 @@
#include "VkQueue.hpp"
#include "VkSemaphore.hpp"
#include "Device/Renderer.hpp"
+#include "WSI/VkSwapchainKHR.hpp"
namespace vk
{
Queue::Queue(uint32_t pFamilyIndex, float pPriority) : familyIndex(pFamilyIndex), priority(pPriority)
{
+ // FIXME (b/119409619): use an allocator here so we can control all memory allocations
context = new sw::Context();
renderer = new sw::Renderer(context, sw::OpenGL, true);
}
@@ -71,6 +73,23 @@ void Queue::waitIdle()
// with an infinite timeout for that fence to signal
// FIXME (b/117835459): implement once we have working fences
+
+ renderer->synchronize();
+}
+
+#ifndef __ANDROID__
+void Queue::present(const VkPresentInfoKHR* presentInfo)
+{
+ for(uint32_t i = 0; i < presentInfo->waitSemaphoreCount; i++)
+ {
+ vk::Cast(presentInfo->pWaitSemaphores[i])->wait();
+ }
+
+ for(uint32_t i = 0; i < presentInfo->swapchainCount; i++)
+ {
+ vk::Cast(presentInfo->pSwapchains[i])->present(presentInfo->pImageIndices[i]);
+ }
}
+#endif
-} // namespace vk \ No newline at end of file
+} // namespace vk
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkQueue.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkQueue.hpp
index d38e3a091c3..95ff39cbac7 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkQueue.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkQueue.hpp
@@ -43,6 +43,9 @@ public:
void destroy();
void submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
void waitIdle();
+#ifndef __ANDROID__
+ void present(const VkPresentInfoKHR* presentInfo);
+#endif
private:
sw::Context* context = nullptr;
diff --git a/chromium/third_party/swiftshader/src/Vulkan/VkSampler.hpp b/chromium/third_party/swiftshader/src/Vulkan/VkSampler.hpp
index fc62389133b..5fa0b4efa08 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/VkSampler.hpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/VkSampler.hpp
@@ -49,22 +49,21 @@ public:
return 0;
}
-private:
- VkFilter magFilter = VK_FILTER_NEAREST;
- VkFilter minFilter = VK_FILTER_NEAREST;
- VkSamplerMipmapMode mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST;
- VkSamplerAddressMode addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT;
- VkSamplerAddressMode addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT;
- VkSamplerAddressMode addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
- float mipLodBias = 0.0f;
- VkBool32 anisotropyEnable = VK_FALSE;
- float maxAnisotropy = 0.0f;
- VkBool32 compareEnable = VK_FALSE;
- VkCompareOp compareOp = VK_COMPARE_OP_NEVER;
- float minLod = 0.0f;
- float maxLod = 0.0f;
- VkBorderColor borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
- VkBool32 unnormalizedCoordinates = VK_FALSE;
+ const VkFilter magFilter = VK_FILTER_NEAREST;
+ const VkFilter minFilter = VK_FILTER_NEAREST;
+ const VkSamplerMipmapMode mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST;
+ const VkSamplerAddressMode addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT;
+ const VkSamplerAddressMode addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT;
+ const VkSamplerAddressMode addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
+ const float mipLodBias = 0.0f;
+ const VkBool32 anisotropyEnable = VK_FALSE;
+ const float maxAnisotropy = 0.0f;
+ const VkBool32 compareEnable = VK_FALSE;
+ const VkCompareOp compareOp = VK_COMPARE_OP_NEVER;
+ const float minLod = 0.0f;
+ const float maxLod = 0.0f;
+ const VkBorderColor borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
+ const VkBool32 unnormalizedCoordinates = VK_FALSE;
};
static inline Sampler* Cast(VkSampler object)
diff --git a/chromium/third_party/swiftshader/src/Vulkan/libVulkan.cpp b/chromium/third_party/swiftshader/src/Vulkan/libVulkan.cpp
index 5b2f7353ca3..188c2d32a2e 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/libVulkan.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/libVulkan.cpp
@@ -20,6 +20,7 @@
#include "VkDebug.hpp"
#include "VkDescriptorPool.hpp"
#include "VkDescriptorSetLayout.hpp"
+#include "VkDescriptorUpdateTemplate.hpp"
#include "VkDestroy.h"
#include "VkDevice.hpp"
#include "VkDeviceMemory.hpp"
@@ -51,6 +52,24 @@
#include <cstring>
#include <string>
+namespace
+{
+
+bool HasExtensionProperty(const char* extensionName, const VkExtensionProperties* extensionProperties, uint32_t extensionPropertiesCount)
+{
+ for(uint32_t j = 0; j < extensionPropertiesCount; ++j)
+ {
+ if(strcmp(extensionName, extensionProperties[j].extensionName) == 0)
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+}
+
extern "C"
{
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(VkInstance instance, const char* pName)
@@ -73,7 +92,9 @@ static const VkExtensionProperties instanceExtensionProperties[] =
{ VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION },
{ VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME, VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION },
{ VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION },
+#ifndef __ANDROID__
{ VK_KHR_SURFACE_EXTENSION_NAME, VK_KHR_SURFACE_SPEC_VERSION },
+#endif
#ifdef VK_USE_PLATFORM_XLIB_KHR
{ VK_KHR_XLIB_SURFACE_EXTENSION_NAME, VK_KHR_XLIB_SURFACE_SPEC_VERSION },
#endif
@@ -99,7 +120,9 @@ static const VkExtensionProperties deviceExtensionProperties[] =
{ VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION },
{ VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME, VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION },
{ VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, VK_KHR_VARIABLE_POINTERS_SPEC_VERSION },
+#ifndef __ANDROID__
{ VK_KHR_SWAPCHAIN_EXTENSION_NAME, VK_KHR_SWAPCHAIN_SPEC_VERSION },
+#endif
};
VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance)
@@ -109,25 +132,13 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(const VkInstanceCreateInfo* pCre
if(pCreateInfo->enabledLayerCount)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->enabledLayerCount");
}
+ uint32_t extensionPropertiesCount = sizeof(instanceExtensionProperties) / sizeof(instanceExtensionProperties[0]);
for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; ++i)
{
- const char* currentExtensionName = pCreateInfo->ppEnabledExtensionNames[i];
- uint32_t extensionPropertiesCount = sizeof(instanceExtensionProperties) / sizeof(instanceExtensionProperties[0]);
- bool foundExtension = false;
-
- for (uint32_t j = 0; j < extensionPropertiesCount; ++j)
- {
- if (strcmp(currentExtensionName, instanceExtensionProperties[j].extensionName) == 0)
- {
- foundExtension = true;
- break;
- }
- }
-
- if (!foundExtension)
+ if (!HasExtensionProperty(pCreateInfo->ppEnabledExtensionNames[i], instanceExtensionProperties, extensionPropertiesCount))
{
return VK_ERROR_EXTENSION_NOT_PRESENT;
}
@@ -145,7 +156,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(const VkInstanceCreateInfo* pCre
// Vulkan structures in this Specification."
break;
default:
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext");
}
}
@@ -233,7 +244,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(VkPhysic
break;
default:
- UNIMPLEMENTED();
+ UNIMPLEMENTED("tiling");
}
vk::Cast(physicalDevice)->getImageFormatProperties(format, type, tiling, usage, flags, pImageFormatProperties);
@@ -292,32 +303,18 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(VkPhysicalDevice physicalDevice, c
if(pCreateInfo->enabledLayerCount)
{
// "The ppEnabledLayerNames and enabledLayerCount members of VkDeviceCreateInfo are deprecated and their values must be ignored by implementations."
- UNIMPLEMENTED(); // TODO(b/119321052): UNIMPLEMENTED() should be used only for features that must still be implemented. Use a more informational macro here.
+ UNIMPLEMENTED("pCreateInfo->enabledLayerCount"); // TODO(b/119321052): UNIMPLEMENTED() should be used only for features that must still be implemented. Use a more informational macro here.
}
-
+ uint32_t extensionPropertiesCount = sizeof(deviceExtensionProperties) / sizeof(deviceExtensionProperties[0]);
for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; ++i)
{
- const char* currentExtensionName = pCreateInfo->ppEnabledExtensionNames[i];
- uint32_t extensionPropertiesCount = sizeof(deviceExtensionProperties) / sizeof(deviceExtensionProperties[0]);
- bool foundExtension = false;
-
- for (uint32_t j = 0; j < extensionPropertiesCount; ++j)
- {
- if (strcmp(currentExtensionName, deviceExtensionProperties[j].extensionName) == 0)
- {
- foundExtension = true;
- break;
- }
- }
-
- if (!foundExtension)
+ if (!HasExtensionProperty(pCreateInfo->ppEnabledExtensionNames[i], deviceExtensionProperties, extensionPropertiesCount))
{
return VK_ERROR_EXTENSION_NOT_PRESENT;
}
}
-
const VkBaseInStructure* extensionCreateInfo = reinterpret_cast<const VkBaseInStructure*>(pCreateInfo->pNext);
while(extensionCreateInfo)
@@ -390,7 +387,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(VkPhysicalDevice physicalDevice, c
break;
default:
// "the [driver] must skip over, without processing (other than reading the sType and pNext members) any structures in the chain with sType values not defined by [supported extenions]"
- UNIMPLEMENTED(); // TODO(b/119321052): UNIMPLEMENTED() should be used only for features that must still be implemented. Use a more informational macro here.
+ UNIMPLEMENTED("extensionCreateInfo->sType"); // TODO(b/119321052): UNIMPLEMENTED() should be used only for features that must still be implemented. Use a more informational macro here.
break;
}
@@ -403,7 +400,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(VkPhysicalDevice physicalDevice, c
{
if(!vk::Cast(physicalDevice)->hasFeatures(*(pCreateInfo->pEnabledFeatures)))
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pEnabledFeatures");
return VK_ERROR_FEATURE_NOT_PRESENT;
}
}
@@ -415,7 +412,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(VkPhysicalDevice physicalDevice, c
const VkDeviceQueueCreateInfo& queueCreateInfo = pCreateInfo->pQueueCreateInfos[i];
if(queueCreateInfo.pNext || queueCreateInfo.flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("queueCreateInfo.pNext || queueCreateInfo.flags");
}
ASSERT(queueCreateInfo.queueFamilyIndex < queueFamilyPropertyCount);
@@ -546,7 +543,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(VkDevice device, const VkMemoryA
TRACE("(VkDevice device = 0x%X, const VkMemoryAllocateInfo* pAllocateInfo = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X, VkDeviceMemory* pMemory = 0x%X)",
device, pAllocateInfo, pAllocator, pMemory);
- const VkBaseOutStructure* allocationInfo = reinterpret_cast<const VkBaseOutStructure*>(pAllocateInfo->pNext);
+ const VkBaseInStructure* allocationInfo = reinterpret_cast<const VkBaseInStructure*>(pAllocateInfo->pNext);
while(allocationInfo)
{
switch(allocationInfo->sType)
@@ -557,7 +554,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(VkDevice device, const VkMemoryA
// includes a handle of the sole buffer or image resource that the memory *can* be bound to."
break;
default:
- UNIMPLEMENTED();
+ UNIMPLEMENTED("allocationInfo->sType");
break;
}
@@ -679,8 +676,8 @@ VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(VkDevice device, VkImage
VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
{
- TRACE("(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements)",
- device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
+ TRACE("(VkDevice device = 0x%X, VkImage image = 0x%X, uint32_t* pSparseMemoryRequirementCount = 0x%X, VkSparseImageMemoryRequirements* pSparseMemoryRequirements = 0x%X)",
+ device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
// The 'sparseBinding' feature is not supported, so images can not be created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag.
// "If the image was not created with VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT then pSparseMemoryRequirementCount will be set to zero and pSparseMemoryRequirements will not be written to."
@@ -689,7 +686,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(VkDevice device, V
VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties)
{
- TRACE("(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties)",
+ TRACE("(VkPhysicalDevice physicalDevice = 0x%X, VkFormat format = %d, VkImageType type = %d, VkSampleCountFlagBits samples = %d, VkImageUsageFlags usage = %d, VkImageTiling tiling = %d, uint32_t* pPropertyCount = 0x%X, VkSparseImageFormatProperties* pProperties = 0x%X)",
physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
// We do not support sparse images.
@@ -699,7 +696,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(VkPhys
VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence)
{
TRACE("()");
- UNIMPLEMENTED();
+ UNIMPLEMENTED("vkQueueBindSparse");
return VK_SUCCESS;
}
@@ -710,7 +707,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(VkDevice device, const VkFenceCreat
if(pCreateInfo->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext");
}
return vk::Fence::Create(pAllocator, pCreateInfo, pFence);
@@ -762,7 +759,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(VkDevice device, const VkSemaph
if(pCreateInfo->pNext || pCreateInfo->flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext || pCreateInfo->flags");
}
return vk::Semaphore::Create(pAllocator, pCreateInfo, pSemaphore);
@@ -783,7 +780,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(VkDevice device, const VkEventCreat
if(pCreateInfo->pNext || pCreateInfo->flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext || pCreateInfo->flags");
}
return vk::Event::Create(pAllocator, pCreateInfo, pEvent);
@@ -829,7 +826,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(VkDevice device, const VkQueryP
if(pCreateInfo->pNext || pCreateInfo->flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext || pCreateInfo->flags");
}
return vk::QueryPool::Create(pAllocator, pCreateInfo, pQueryPool);
@@ -848,9 +845,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(VkDevice device, VkQueryPoo
TRACE("(VkDevice device = 0x%X, VkQueryPool queryPool = 0x%X, uint32_t firstQuery = %d, uint32_t queryCount = %d, size_t dataSize = %d, void* pData = 0x%X, VkDeviceSize stride = 0x%X, VkQueryResultFlags flags = %d)",
device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
- vk::Cast(queryPool)->getResults(firstQuery, queryCount, dataSize, pData, stride, flags);
-
- return VK_SUCCESS;
+ return vk::Cast(queryPool)->getResults(firstQuery, queryCount, dataSize, pData, stride, flags);
}
VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)
@@ -860,7 +855,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(VkDevice device, const VkBufferCre
if(pCreateInfo->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext");
}
return vk::Buffer::Create(pAllocator, pCreateInfo, pBuffer);
@@ -876,12 +871,12 @@ VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(VkDevice device, VkBuffer buffer, con
VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView)
{
- TRACE("(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView)",
- device, pCreateInfo, pAllocator, pView);
+ TRACE("(VkDevice device = 0x%X, const VkBufferViewCreateInfo* pCreateInfo = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X, VkBufferView* pView = 0x%X)",
+ device, pCreateInfo, pAllocator, pView);
if(pCreateInfo->pNext || pCreateInfo->flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext || pCreateInfo->flags");
}
return vk::BufferView::Create(pAllocator, pCreateInfo, pView);
@@ -889,8 +884,8 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(VkDevice device, const VkBuffe
VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator)
{
- TRACE("(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator)",
- device, bufferView, pAllocator);
+ TRACE("(VkDevice device = 0x%X, VkBufferView bufferView = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X)",
+ device, bufferView, pAllocator);
vk::destroy(bufferView, pAllocator);
}
@@ -902,10 +897,16 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(VkDevice device, const VkImageCreat
if(pCreateInfo->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext");
}
- return vk::Image::Create(pAllocator, pCreateInfo, pImage);
+ vk::Image::CreateInfo imageCreateInfo =
+ {
+ pCreateInfo,
+ device
+ };
+
+ return vk::Image::Create(pAllocator, &imageCreateInfo, pImage);
}
VKAPI_ATTR void VKAPI_CALL vkDestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator)
@@ -918,8 +919,8 @@ VKAPI_ATTR void VKAPI_CALL vkDestroyImage(VkDevice device, VkImage image, const
VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout)
{
- TRACE("(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout)",
- device, image, pSubresource, pLayout);
+ TRACE("(VkDevice device = 0x%X, VkImage image = 0x%X, const VkImageSubresource* pSubresource = 0x%X, VkSubresourceLayout* pLayout = 0x%X)",
+ device, image, pSubresource, pLayout);
vk::Cast(image)->getSubresourceLayout(pSubresource, pLayout);
}
@@ -929,9 +930,41 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(VkDevice device, const VkImageV
TRACE("(VkDevice device = 0x%X, const VkImageViewCreateInfo* pCreateInfo = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X, VkImageView* pView = 0x%X)",
device, pCreateInfo, pAllocator, pView);
- if(pCreateInfo->pNext || pCreateInfo->flags)
+ if(pCreateInfo->flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->flags");
+ }
+
+ const VkBaseInStructure* extensionCreateInfo = reinterpret_cast<const VkBaseInStructure*>(pCreateInfo->pNext);
+
+ while(extensionCreateInfo)
+ {
+ switch(extensionCreateInfo->sType)
+ {
+ case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR:
+ {
+ const VkImageViewUsageCreateInfo* multiviewCreateInfo = reinterpret_cast<const VkImageViewUsageCreateInfo*>(extensionCreateInfo);
+ ASSERT(!(~vk::Cast(pCreateInfo->image)->getUsage() & multiviewCreateInfo->usage));
+ }
+ break;
+ case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
+ {
+ const VkSamplerYcbcrConversionInfo* ycbcrConversionInfo = reinterpret_cast<const VkSamplerYcbcrConversionInfo*>(extensionCreateInfo);
+ if(ycbcrConversionInfo->conversion != VK_NULL_HANDLE)
+ {
+ ASSERT((pCreateInfo->components.r == VK_COMPONENT_SWIZZLE_IDENTITY) &&
+ (pCreateInfo->components.g == VK_COMPONENT_SWIZZLE_IDENTITY) &&
+ (pCreateInfo->components.b == VK_COMPONENT_SWIZZLE_IDENTITY) &&
+ (pCreateInfo->components.a == VK_COMPONENT_SWIZZLE_IDENTITY));
+ }
+ }
+ break;
+ default:
+ UNIMPLEMENTED("extensionCreateInfo->sType");
+ break;
+ }
+
+ extensionCreateInfo = extensionCreateInfo->pNext;
}
return vk::ImageView::Create(pAllocator, pCreateInfo, pView);
@@ -952,7 +985,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(VkDevice device, const VkSha
if(pCreateInfo->pNext || pCreateInfo->flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext || pCreateInfo->flags");
}
return vk::ShaderModule::Create(pAllocator, pCreateInfo, pShaderModule);
@@ -968,12 +1001,12 @@ VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(VkDevice device, VkShaderModule
VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache)
{
- TRACE("(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache)",
- device, pCreateInfo, pAllocator, pPipelineCache);
+ TRACE("(VkDevice device = 0x%X, const VkPipelineCacheCreateInfo* pCreateInfo = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X, VkPipelineCache* pPipelineCache = 0x%X)",
+ device, pCreateInfo, pAllocator, pPipelineCache);
if(pCreateInfo->pNext || pCreateInfo->flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext || pCreateInfo->flags");
}
return vk::PipelineCache::Create(pAllocator, pCreateInfo, pPipelineCache);
@@ -981,24 +1014,26 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(VkDevice device, const VkPi
VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator)
{
- TRACE("(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator)",
- device, pipelineCache, pAllocator);
+ TRACE("(VkDevice device = 0x%X, VkPipelineCache pipelineCache = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X)",
+ device, pipelineCache, pAllocator);
vk::destroy(pipelineCache, pAllocator);
}
VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData)
{
- TRACE("()");
- UNIMPLEMENTED();
- return VK_SUCCESS;
+ TRACE("(VkDevice device = 0x%X, VkPipelineCache pipelineCache = 0x%X, size_t* pDataSize = 0x%X, void* pData = 0x%X)",
+ device, pipelineCache, pDataSize, pData);
+
+ return vk::Cast(pipelineCache)->getData(pDataSize, pData);
}
VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches)
{
- TRACE("()");
- UNIMPLEMENTED();
- return VK_SUCCESS;
+ TRACE("(VkDevice device = 0x%X, VkPipelineCache dstCache = 0x%X, uint32_t srcCacheCount = %d, const VkPipelineCache* pSrcCaches = 0x%X)",
+ device, dstCache, srcCacheCount, pSrcCaches);
+
+ return vk::Cast(dstCache)->merge(srcCacheCount, pSrcCaches);
}
VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
@@ -1012,7 +1047,11 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(VkDevice device, VkPipe
for(uint32_t i = 0; i < createInfoCount; i++)
{
VkResult result = vk::GraphicsPipeline::Create(pAllocator, &pCreateInfos[i], &pPipelines[i]);
- if(result != VK_SUCCESS)
+ if(result == VK_SUCCESS)
+ {
+ static_cast<vk::GraphicsPipeline*>(vk::Cast(pPipelines[i]))->compileShaders(pAllocator, &pCreateInfos[i]);
+ }
+ else
{
// According to the Vulkan spec, section 9.4. Multiple Pipeline Creation
// "When an application attempts to create many pipelines in a single command,
@@ -1025,10 +1064,6 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(VkDevice device, VkPipe
pPipelines[i] = VK_NULL_HANDLE;
errorResult = result;
}
- else
- {
- static_cast<vk::GraphicsPipeline*>(vk::Cast(pPipelines[i]))->compileShaders(pAllocator, &pCreateInfos[i]);
- }
}
return errorResult;
@@ -1045,7 +1080,11 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(VkDevice device, VkPipel
for(uint32_t i = 0; i < createInfoCount; i++)
{
VkResult result = vk::ComputePipeline::Create(pAllocator, &pCreateInfos[i], &pPipelines[i]);
- if(result != VK_SUCCESS)
+ if(result == VK_SUCCESS)
+ {
+ static_cast<vk::ComputePipeline*>(vk::Cast(pPipelines[i]))->compileShaders(pAllocator, &pCreateInfos[i]);
+ }
+ else
{
// According to the Vulkan spec, section 9.4. Multiple Pipeline Creation
// "When an application attempts to create many pipelines in a single command,
@@ -1078,7 +1117,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(VkDevice device, const VkP
if(pCreateInfo->pNext || pCreateInfo->flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext || pCreateInfo->flags");
}
return vk::PipelineLayout::Create(pAllocator, pCreateInfo, pPipelineLayout);
@@ -1099,7 +1138,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(VkDevice device, const VkSamplerC
if(pCreateInfo->pNext || pCreateInfo->flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext || pCreateInfo->flags");
}
return vk::Sampler::Create(pAllocator, pCreateInfo, pSampler);
@@ -1120,7 +1159,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(VkDevice device, cons
if(pCreateInfo->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext");
}
return vk::DescriptorSetLayout::Create(pAllocator, pCreateInfo, pSetLayout);
@@ -1141,7 +1180,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(VkDevice device, const VkD
if(pCreateInfo->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext");
}
return vk::DescriptorPool::Create(pAllocator, pCreateInfo, pDescriptorPool);
@@ -1162,7 +1201,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(VkDevice device, VkDescript
if(flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("flags");
}
return vk::Cast(descriptorPool)->reset();
@@ -1175,7 +1214,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(VkDevice device, const V
if(pAllocateInfo->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pAllocateInfo->pNext");
}
return vk::Cast(pAllocateInfo->descriptorPool)->allocateSets(
@@ -1207,7 +1246,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(VkDevice device, const VkFram
if(pCreateInfo->pNext || pCreateInfo->flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext || pCreateInfo->flags");
}
return vk::Framebuffer::Create(pAllocator, pCreateInfo, pFramebuffer);
@@ -1225,9 +1264,91 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(VkDevice device, const VkRende
TRACE("(VkDevice device = 0x%X, const VkRenderPassCreateInfo* pCreateInfo = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X, VkRenderPass* pRenderPass = 0x%X)",
device, pCreateInfo, pAllocator, pRenderPass);
- if(pCreateInfo->pNext || pCreateInfo->flags)
+ if(pCreateInfo->flags)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->flags");
+ }
+
+ const VkBaseInStructure* extensionCreateInfo = reinterpret_cast<const VkBaseInStructure*>(pCreateInfo->pNext);
+
+ while(extensionCreateInfo)
+ {
+ switch(extensionCreateInfo->sType)
+ {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:
+ {
+ const VkRenderPassInputAttachmentAspectCreateInfo* inputAttachmentAspectCreateInfo = reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfo*>(extensionCreateInfo);
+
+ for(uint32_t i = 0; i < inputAttachmentAspectCreateInfo->aspectReferenceCount; i++)
+ {
+ const VkInputAttachmentAspectReference& aspectReference = inputAttachmentAspectCreateInfo->pAspectReferences[i];
+ ASSERT(aspectReference.subpass < pCreateInfo->subpassCount);
+ const VkSubpassDescription& subpassDescription = pCreateInfo->pSubpasses[aspectReference.subpass];
+ ASSERT(aspectReference.inputAttachmentIndex < subpassDescription.inputAttachmentCount);
+ const VkAttachmentReference& attachmentReference = subpassDescription.pInputAttachments[aspectReference.inputAttachmentIndex];
+ if(attachmentReference.attachment != VK_ATTACHMENT_UNUSED)
+ {
+ // If the pNext chain includes an instance of VkRenderPassInputAttachmentAspectCreateInfo, for any
+ // element of the pInputAttachments member of any element of pSubpasses where the attachment member
+ // is not VK_ATTACHMENT_UNUSED, the aspectMask member of the corresponding element of
+ // VkRenderPassInputAttachmentAspectCreateInfo::pAspectReferences must only include aspects that are
+ // present in images of the format specified by the element of pAttachments at attachment
+ vk::Format format(pCreateInfo->pAttachments[attachmentReference.attachment].format);
+ bool isDepth = format.isDepth();
+ bool isStencil = format.isStencil();
+ ASSERT(!(aspectReference.aspectMask & VK_IMAGE_ASPECT_COLOR_BIT) || (!isDepth && !isStencil));
+ ASSERT(!(aspectReference.aspectMask & VK_IMAGE_ASPECT_DEPTH_BIT) || isDepth);
+ ASSERT(!(aspectReference.aspectMask & VK_IMAGE_ASPECT_STENCIL_BIT) || isStencil);
+ }
+ }
+ }
+ break;
+ case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:
+ {
+ const VkRenderPassMultiviewCreateInfo* multiviewCreateInfo = reinterpret_cast<const VkRenderPassMultiviewCreateInfo*>(extensionCreateInfo);
+ ASSERT((multiviewCreateInfo->subpassCount == 0) || (multiviewCreateInfo->subpassCount == pCreateInfo->subpassCount));
+ ASSERT((multiviewCreateInfo->dependencyCount == 0) || (multiviewCreateInfo->dependencyCount == pCreateInfo->dependencyCount));
+
+ bool zeroMask = (multiviewCreateInfo->pViewMasks[0] == 0);
+ for(uint32_t i = 1; i < multiviewCreateInfo->subpassCount; i++)
+ {
+ ASSERT((multiviewCreateInfo->pViewMasks[i] == 0) == zeroMask);
+ }
+
+ if(zeroMask)
+ {
+ ASSERT(multiviewCreateInfo->correlationMaskCount == 0);
+ }
+
+ for(uint32_t i = 0; i < multiviewCreateInfo->dependencyCount; i++)
+ {
+ const VkSubpassDependency &dependency = pCreateInfo->pDependencies[i];
+ if(multiviewCreateInfo->pViewOffsets[i] != 0)
+ {
+ ASSERT(dependency.srcSubpass != dependency.dstSubpass);
+ ASSERT(dependency.dependencyFlags & VK_DEPENDENCY_VIEW_LOCAL_BIT);
+ }
+ if(zeroMask)
+ {
+ ASSERT(!(dependency.dependencyFlags & VK_DEPENDENCY_VIEW_LOCAL_BIT));
+ }
+ }
+
+ // If the pNext chain includes an instance of VkRenderPassMultiviewCreateInfo,
+ // each element of its pViewMask member must not include a bit at a position
+ // greater than the value of VkPhysicalDeviceLimits::maxFramebufferLayers
+ // pViewMask is a 32 bit value. If maxFramebufferLayers > 32, it's impossible
+ // for pViewMask to contain a bit at an illegal position
+ // Note: Verify pViewMask values instead if we hit this assert
+ ASSERT(vk::Cast(vk::Cast(device)->getPhysicalDevice())->getProperties().limits.maxFramebufferLayers >= 32);
+ }
+ break;
+ default:
+ UNIMPLEMENTED("extensionCreateInfo->sType");
+ break;
+ }
+
+ extensionCreateInfo = extensionCreateInfo->pNext;
}
return vk::RenderPass::Create(pAllocator, pCreateInfo, pRenderPass);
@@ -1256,7 +1377,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(VkDevice device, const VkComm
if(pCreateInfo->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pCreateInfo->pNext");
}
return vk::CommandPool::Create(pAllocator, pCreateInfo, pCommandPool);
@@ -1285,7 +1406,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(VkDevice device, const V
if(pAllocateInfo->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pAllocateInfo->pNext");
}
return vk::Cast(pAllocateInfo->commandPool)->allocateCommandBuffers(
@@ -1307,7 +1428,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(VkCommandBuffer commandBuffe
if(pBeginInfo->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pBeginInfo->pNext");
}
return vk::Cast(commandBuffer)->begin(pBeginInfo->flags, pBeginInfo->pInheritanceInfo);
@@ -1657,7 +1778,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, c
if(pRenderPassBegin->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pRenderPassBegin->pNext");
}
vk::Cast(commandBuffer)->beginRenderPass(pRenderPassBegin->renderPass, pRenderPassBegin->framebuffer,
@@ -1704,7 +1825,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2(VkDevice device, uint32_t bin
{
if(pBindInfos[i].pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pBindInfos[%d].pNext", i);
}
vk::Cast(pBindInfos[i].buffer)->bind(pBindInfos[i].memory, pBindInfos[i].memoryOffset);
@@ -1716,7 +1837,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2(VkDevice device, uint32_t bin
VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos)
{
TRACE("()");
- UNIMPLEMENTED();
+ UNIMPLEMENTED("vkBindImageMemory2");
return VK_SUCCESS;
}
@@ -1726,19 +1847,19 @@ VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeatures(VkDevice device, u
device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
ASSERT(localDeviceIndex != remoteDeviceIndex); // "localDeviceIndex must not equal remoteDeviceIndex"
- UNREACHABLE(remoteDeviceIndex); // Only one physical device is supported, and since the device indexes can't be equal, this should never be called.
+ UNREACHABLE("remoteDeviceIndex: %d", int(remoteDeviceIndex)); // Only one physical device is supported, and since the device indexes can't be equal, this should never be called.
}
VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMask(VkCommandBuffer commandBuffer, uint32_t deviceMask)
{
TRACE("()");
- UNIMPLEMENTED();
+ UNIMPLEMENTED("vkCmdSetDeviceMask");
}
VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBase(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ)
{
TRACE("()");
- UNIMPLEMENTED();
+ UNIMPLEMENTED("vkCmdDispatchBase");
}
VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroups(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
@@ -1763,9 +1884,29 @@ VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2(VkDevice device, const
TRACE("(VkDevice device = 0x%X, const VkImageMemoryRequirementsInfo2* pInfo = 0x%X, VkMemoryRequirements2* pMemoryRequirements = 0x%X)",
device, pInfo, pMemoryRequirements);
- if(pInfo->pNext || pMemoryRequirements->pNext)
+ if(pInfo->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pInfo->pNext");
+ }
+
+ VkBaseOutStructure* extensionRequirements = reinterpret_cast<VkBaseOutStructure*>(pMemoryRequirements->pNext);
+ while(extensionRequirements)
+ {
+ switch(extensionRequirements->sType)
+ {
+ case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
+ {
+ auto& requirements = *reinterpret_cast<VkMemoryDedicatedRequirements*>(extensionRequirements);
+ requirements.prefersDedicatedAllocation = VK_FALSE;
+ requirements.requiresDedicatedAllocation = VK_FALSE;
+ }
+ break;
+ default:
+ UNIMPLEMENTED("extensionRequirements->sType");
+ break;
+ }
+
+ extensionRequirements = extensionRequirements->pNext;
}
vkGetImageMemoryRequirements(device, pInfo->image, &(pMemoryRequirements->memoryRequirements));
@@ -1776,9 +1917,29 @@ VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2(VkDevice device, const
TRACE("(VkDevice device = 0x%X, const VkBufferMemoryRequirementsInfo2* pInfo = 0x%X, VkMemoryRequirements2* pMemoryRequirements = 0x%X)",
device, pInfo, pMemoryRequirements);
- if(pInfo->pNext || pMemoryRequirements->pNext)
+ if(pInfo->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pInfo->pNext");
+ }
+
+ VkBaseOutStructure* extensionRequirements = reinterpret_cast<VkBaseOutStructure*>(pMemoryRequirements->pNext);
+ while(extensionRequirements)
+ {
+ switch(extensionRequirements->sType)
+ {
+ case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
+ {
+ auto& requirements = *reinterpret_cast<VkMemoryDedicatedRequirements*>(extensionRequirements);
+ requirements.prefersDedicatedAllocation = VK_FALSE;
+ requirements.requiresDedicatedAllocation = VK_FALSE;
+ }
+ break;
+ default:
+ UNIMPLEMENTED("extensionRequirements->sType");
+ break;
+ }
+
+ extensionRequirements = extensionRequirements->pNext;
}
vkGetBufferMemoryRequirements(device, pInfo->buffer, &(pMemoryRequirements->memoryRequirements));
@@ -1791,7 +1952,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2(VkDevice device,
if(pInfo->pNext || pSparseMemoryRequirements->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pInfo->pNext || pSparseMemoryRequirements->pNext");
}
vkGetImageSparseMemoryRequirements(device, pInfo->image, pSparseMemoryRequirementCount, &(pSparseMemoryRequirements->memoryRequirements));
@@ -1842,9 +2003,15 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2(VkPhysicalDevice physica
vk::Cast(physicalDevice)->getFeatures(&features);
}
break;
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES:
+ {
+ auto& features = *reinterpret_cast<VkPhysicalDeviceShaderDrawParameterFeatures*>(extensionFeatures);
+ vk::Cast(physicalDevice)->getFeatures(&features);
+ }
+ break;
default:
// "the [driver] must skip over, without processing (other than reading the sType and pNext members) any structures in the chain with sType values not defined by [supported extenions]"
- UNIMPLEMENTED(); // TODO(b/119321052): UNIMPLEMENTED() should be used only for features that must still be implemented. Use a more informational macro here.
+ UNIMPLEMENTED("extensionFeatures->sType"); // TODO(b/119321052): UNIMPLEMENTED() should be used only for features that must still be implemented. Use a more informational macro here.
break;
}
@@ -1899,9 +2066,14 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2(VkPhysicalDevice physi
vk::Cast(physicalDevice)->getProperties(&properties);
}
break;
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:
+ // Explicitly ignored, since VK_EXT_sample_locations is not supported
+ ASSERT(!HasExtensionProperty(VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, deviceExtensionProperties,
+ sizeof(deviceExtensionProperties) / sizeof(deviceExtensionProperties[0])));
+ break;
default:
// "the [driver] must skip over, without processing (other than reading the sType and pNext members) any structures in the chain with sType values not defined by [supported extenions]"
- UNIMPLEMENTED(); // TODO(b/119321052): UNIMPLEMENTED() should be used only for features that must still be implemented. Use a more informational macro here.
+ UNIMPLEMENTED("extensionProperties->sType"); // TODO(b/119321052): UNIMPLEMENTED() should be used only for features that must still be implemented. Use a more informational macro here.
break;
}
@@ -1918,7 +2090,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2(VkPhysicalDevice
if(pFormatProperties->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pFormatProperties->pNext");
}
vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &(pFormatProperties->formatProperties));
@@ -1929,9 +2101,79 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2(VkPhysi
TRACE("(VkPhysicalDevice physicalDevice = 0x%X, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo = 0x%X, VkImageFormatProperties2* pImageFormatProperties = 0x%X)",
physicalDevice, pImageFormatInfo, pImageFormatProperties);
- if(pImageFormatInfo->pNext || pImageFormatProperties->pNext)
+ const VkBaseInStructure* extensionFormatInfo = reinterpret_cast<const VkBaseInStructure*>(pImageFormatInfo->pNext);
+
+ const VkExternalMemoryHandleTypeFlagBits* handleType = nullptr;
+ while(extensionFormatInfo)
{
- UNIMPLEMENTED();
+ switch(extensionFormatInfo->sType)
+ {
+ case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR:
+ {
+ // Explicitly ignored, since VK_KHR_image_format_list is not supported
+ ASSERT(!HasExtensionProperty(VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME, deviceExtensionProperties,
+ sizeof(deviceExtensionProperties) / sizeof(deviceExtensionProperties[0])));
+ }
+ break;
+ case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT:
+ {
+ // Explicitly ignored, since VK_EXT_separate_stencil_usage is not supported
+ ASSERT(!HasExtensionProperty(VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME, deviceExtensionProperties,
+ sizeof(deviceExtensionProperties) / sizeof(deviceExtensionProperties[0])));
+ }
+ break;
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:
+ {
+ const VkPhysicalDeviceExternalImageFormatInfo* imageFormatInfo = reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfo*>(extensionFormatInfo);
+ handleType = &(imageFormatInfo->handleType);
+ }
+ break;
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT:
+ {
+ // Explicitly ignored, since VK_EXT_image_drm_format_modifier is not supported
+ ASSERT(!HasExtensionProperty(VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME, deviceExtensionProperties,
+ sizeof(deviceExtensionProperties) / sizeof(deviceExtensionProperties[0])));
+ }
+ break;
+ default:
+ UNIMPLEMENTED("extensionFormatInfo->sType");
+ break;
+ }
+
+ extensionFormatInfo = extensionFormatInfo->pNext;
+ }
+
+ VkBaseOutStructure* extensionProperties = reinterpret_cast<VkBaseOutStructure*>(pImageFormatProperties->pNext);
+
+ while(extensionProperties)
+ {
+ switch(extensionProperties->sType)
+ {
+ case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:
+ {
+ auto& properties = *reinterpret_cast<VkExternalImageFormatProperties*>(extensionProperties);
+ vk::Cast(physicalDevice)->getProperties(handleType, &properties);
+ }
+ break;
+ case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:
+ {
+ auto& properties = *reinterpret_cast<VkSamplerYcbcrConversionImageFormatProperties*>(extensionProperties);
+ vk::Cast(physicalDevice)->getProperties(&properties);
+ }
+ break;
+ case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD:
+ {
+ // Explicitly ignored, since VK_AMD_texture_gather_bias_lod is not supported
+ ASSERT(!HasExtensionProperty(VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME, deviceExtensionProperties,
+ sizeof(deviceExtensionProperties) / sizeof(deviceExtensionProperties[0])));
+ }
+ break;
+ default:
+ UNIMPLEMENTED("extensionProperties->sType");
+ break;
+ }
+
+ extensionProperties = extensionProperties->pNext;
}
return vkGetPhysicalDeviceImageFormatProperties(physicalDevice,
@@ -1950,7 +2192,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2(VkPhysicalD
if(pQueueFamilyProperties && pQueueFamilyProperties->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pQueueFamilyProperties->pNext");
}
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount,
@@ -1963,7 +2205,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2(VkPhysicalDevice
if(pMemoryProperties->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pMemoryProperties->pNext");
}
vkGetPhysicalDeviceMemoryProperties(physicalDevice, &(pMemoryProperties->memoryProperties));
@@ -1976,7 +2218,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2(VkPhy
if(pProperties && pProperties->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pProperties->pNext");
}
vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, pFormatInfo->format, pFormatInfo->type,
@@ -1999,7 +2241,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2(VkDevice device, const VkDeviceQueu
if(pQueueInfo->pNext)
{
- UNIMPLEMENTED();
+ UNIMPLEMENTED("pQueueInfo->pNext");
}
// The only flag that can be set here is VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT
@@ -2020,33 +2262,43 @@ VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2(VkDevice device, const VkDeviceQueu
VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion)
{
TRACE("()");
- UNIMPLEMENTED();
+ UNIMPLEMENTED("vkCreateSamplerYcbcrConversion");
return VK_SUCCESS;
}
VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversion(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator)
{
TRACE("()");
- UNIMPLEMENTED();
+ UNIMPLEMENTED("vkDestroySamplerYcbcrConversion");
}
VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplate(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
{
- TRACE("()");
- UNIMPLEMENTED();
- return VK_SUCCESS;
+ TRACE("(VkDevice device = 0x%X, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate = 0x%X)",
+ device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
+
+ if(pCreateInfo->pNext || pCreateInfo->flags || (pCreateInfo->templateType != VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET))
+ {
+ UNIMPLEMENTED("pCreateInfo->pNext || pCreateInfo->flags || (pCreateInfo->templateType != VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET)");
+ }
+
+ return vk::DescriptorUpdateTemplate::Create(pAllocator, pCreateInfo, pDescriptorUpdateTemplate);
}
VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplate(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator)
{
- TRACE("()");
- UNIMPLEMENTED();
+ TRACE("(VkDevice device = 0x%X, VkDescriptorUpdateTemplate descriptorUpdateTemplate = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X)",
+ device, descriptorUpdateTemplate, pAllocator);
+
+ vk::destroy(descriptorUpdateTemplate, pAllocator);
}
VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplate(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData)
{
- TRACE("()");
- UNIMPLEMENTED();
+ TRACE("(VkDevice device = 0x%X, VkDescriptorSet descriptorSet = 0x%X, VkDescriptorUpdateTemplate descriptorUpdateTemplate = 0x%X, const void* pData = 0x%X)",
+ device, descriptorSet, descriptorUpdateTemplate, pData);
+
+ vk::Cast(descriptorUpdateTemplate)->updateDescriptorSet(descriptorSet, pData);
}
VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties)
@@ -2054,7 +2306,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties(VkPhysica
TRACE("(VkPhysicalDevice physicalDevice = 0x%X, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo = 0x%X, VkExternalBufferProperties* pExternalBufferProperties = 0x%X)",
physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
- UNIMPLEMENTED();
+ vk::Cast(physicalDevice)->getProperties(pExternalBufferInfo, pExternalBufferProperties);
}
VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties)
@@ -2062,7 +2314,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties(VkPhysical
TRACE("(VkPhysicalDevice physicalDevice = 0x%X, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo = 0x%X, VkExternalFenceProperties* pExternalFenceProperties = 0x%X)",
physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
- UNIMPLEMENTED();
+ vk::Cast(physicalDevice)->getProperties(pExternalFenceInfo, pExternalFenceProperties);
}
VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
@@ -2070,25 +2322,17 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties(VkPhys
TRACE("(VkPhysicalDevice physicalDevice = 0x%X, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo = 0x%X, VkExternalSemaphoreProperties* pExternalSemaphoreProperties = 0x%X)",
physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
- UNIMPLEMENTED();
+ vk::Cast(physicalDevice)->getProperties(pExternalSemaphoreInfo, pExternalSemaphoreProperties);
}
VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport)
{
- TRACE("(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport)",
- device, pCreateInfo, pSupport);
+ TRACE("(VkDevice device = 0x%X, const VkDescriptorSetLayoutCreateInfo* pCreateInfo = 0x%X, VkDescriptorSetLayoutSupport* pSupport = 0x%X)",
+ device, pCreateInfo, pSupport);
vk::Cast(device)->getDescriptorSetLayoutSupport(pCreateInfo, pSupport);
}
-VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator)
-{
- TRACE("(VkInstance instance = 0x%X, VkSurfaceKHR surface = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X)",
- instance, surface, pAllocator);
-
- vk::destroy(surface, pAllocator);
-}
-
#ifdef VK_USE_PLATFORM_XLIB_KHR
VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
{
@@ -2099,6 +2343,15 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(VkInstance instance, const
}
#endif
+#ifndef __ANDROID__
+VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator)
+{
+ TRACE("(VkInstance instance = 0x%X, VkSurfaceKHR surface = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X)",
+ instance, surface, pAllocator);
+
+ vk::destroy(surface, pAllocator);
+}
+
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported)
{
TRACE("(VkPhysicalDevice physicalDevice = 0x%X, uint32_t queueFamilyIndex = 0x%X, VkSurface surface = 0x%X, VKBool32* pSupported = 0x%X)",
@@ -2151,6 +2404,16 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(VkDevice device, const VkSwa
TRACE("(VkDevice device = 0x%X, const VkSwapchainCreateInfoKHR* pCreateInfo = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X, VkSwapchainKHR* pSwapchain = 0x%X)",
device, pCreateInfo, pAllocator, pSwapchain);
+ if(pCreateInfo->oldSwapchain)
+ {
+ vk::Cast(pCreateInfo->oldSwapchain)->retire();
+ }
+
+ if(vk::Cast(pCreateInfo->surface)->getAssociatedSwapchain() != VK_NULL_HANDLE)
+ {
+ return VK_ERROR_NATIVE_WINDOW_IN_USE_KHR;
+ }
+
VkResult status = vk::SwapchainKHR::Create(pAllocator, pCreateInfo, pSwapchain);
if(status != VK_SUCCESS)
@@ -2166,6 +2429,8 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(VkDevice device, const VkSwa
return status;
}
+ vk::Cast(pCreateInfo->surface)->associateSwapchain(*pSwapchain);
+
return VK_SUCCESS;
}
@@ -2191,4 +2456,50 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(VkDevice device, VkSwapch
return vk::Cast(swapchain)->getImages(pSwapchainImageCount, pSwapchainImages);
}
+VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex)
+{
+ TRACE("(VkDevice device = 0x%X, VkSwapchainKHR swapchain = 0x%X, uint64_t timeout = 0x%X, VkSemaphore semaphore = 0x%X, VkFence fence = 0x%X, uint32_t* pImageIndex = 0x%X)",
+ device, swapchain, timeout, semaphore, fence, pImageIndex);
+
+ return vk::Cast(swapchain)->getNextImage(timeout, semaphore, fence, pImageIndex);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* pPresentInfo)
+{
+ TRACE("(VkQueue queue = 0x%X, const VkPresentInfoKHR* pPresentInfo = 0x%X)",
+ queue, pPresentInfo);
+
+ vk::Cast(queue)->present(pPresentInfo);
+
+ return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR *pDeviceGroupPresentCapabilities)
+{
+ TRACE("(VkDevice device = 0x%X, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities = 0x%X)",
+ device, pDeviceGroupPresentCapabilities);
+
+ for (int i = 0; i < VK_MAX_DEVICE_GROUP_SIZE; i++)
+ {
+ // The only real physical device in the presentation group is device 0,
+ // and it can present to itself.
+ pDeviceGroupPresentCapabilities->presentMask[i] = (i == 0) ? 1 : 0;
+ }
+
+ pDeviceGroupPresentCapabilities->modes = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR;
+
+ return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR *pModes)
+{
+ TRACE("(VkDevice device = 0x%X, VkSurfaceKHR surface = 0x%X, VkDeviceGroupPresentModeFlagsKHR *pModes = 0x%X)",
+ device, surface, pModes);
+
+ *pModes = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR;
+ return VK_SUCCESS;
+}
+
+#endif // ! __ANDROID__
+
}
diff --git a/chromium/third_party/swiftshader/src/Vulkan/swiftshader_icd.def b/chromium/third_party/swiftshader/src/Vulkan/libvk_swiftshader.def
index a66bd8bd5a8..a66bd8bd5a8 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/swiftshader_icd.def
+++ b/chromium/third_party/swiftshader/src/Vulkan/libvk_swiftshader.def
diff --git a/chromium/third_party/swiftshader/src/Vulkan/libvk_swiftshader.lds b/chromium/third_party/swiftshader/src/Vulkan/libvk_swiftshader.lds
index f3cee5cc396..f31c0c03f6b 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/libvk_swiftshader.lds
+++ b/chromium/third_party/swiftshader/src/Vulkan/libvk_swiftshader.lds
@@ -8,6 +8,9 @@ global:
_ZTS*;
_ZTI*;
+ # Android HAL module info object
+ HMI;
+
local:
*;
};
diff --git a/chromium/third_party/swiftshader/src/Vulkan/main.cpp b/chromium/third_party/swiftshader/src/Vulkan/main.cpp
index 80b6ee03618..9a75f051b17 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/main.cpp
+++ b/chromium/third_party/swiftshader/src/Vulkan/main.cpp
@@ -62,9 +62,17 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved
switch(reason)
{
case DLL_PROCESS_ATTACH:
-#ifdef DEBUGGER_WAIT_DIALOG
- WaitForDebugger(instance);
-#endif
+ #ifdef DEBUGGER_WAIT_DIALOG
+ {
+ char disable_debugger_wait_dialog[] = "0";
+ GetEnvironmentVariable("SWIFTSHADER_DISABLE_DEBUGGER_WAIT_DIALOG", disable_debugger_wait_dialog, sizeof(disable_debugger_wait_dialog));
+
+ if(disable_debugger_wait_dialog[0] != '1')
+ {
+ WaitForDebugger(instance);
+ }
+ }
+ #endif
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
diff --git a/chromium/third_party/swiftshader/src/Vulkan/vk_swiftshader_icd.json.tmpl b/chromium/third_party/swiftshader/src/Vulkan/vk_swiftshader_icd.json.tmpl
index 13dcaaa6683..9f4fbaae9f4 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/vk_swiftshader_icd.json.tmpl
+++ b/chromium/third_party/swiftshader/src/Vulkan/vk_swiftshader_icd.json.tmpl
@@ -1,7 +1,7 @@
{
"file_format_version": "1.0.0",
"ICD": {
- "library_path": "${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/${CMAKE_SHARED_LIBRARY_PREFIX}vk_swiftshader${CMAKE_SHARED_LIBRARY_SUFFIX}",
+ "library_path": "${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/${CMAKE_SHARED_LIBRARY_PREFIX}vk_swiftshader${CMAKE_SHARED_LIBRARY_SUFFIX}",
"api_version": "1.0.5"
}
-} \ No newline at end of file
+}
diff --git a/chromium/third_party/swiftshader/src/Vulkan/vulkan.vcxproj b/chromium/third_party/swiftshader/src/Vulkan/vulkan.vcxproj
index 39a84a6f271..bced1dc3d80 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/vulkan.vcxproj
+++ b/chromium/third_party/swiftshader/src/Vulkan/vulkan.vcxproj
@@ -16,6 +16,7 @@
<RootNamespace>vulkan</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<ProjectName>Vulkan</ProjectName>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
@@ -65,16 +66,20 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
<TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
- <ModuleDefinitionFile>swiftshader_icd.def</ModuleDefinitionFile>
+ <ModuleDefinitionFile>libvk_swiftshader.def</ModuleDefinitionFile>
<AdditionalDependencies>dxguid.lib;WS2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>mkdir "$(SolutionDir)out\$(Configuration)_$(Platform)\"
-copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)out\$(Configuration)_$(Platform)\"</Command>
+mkdir "$(SolutionDir)build\$(Configuration)_$(Platform)\"
+copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)out\$(Configuration)_$(Platform)\"
+copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)build\$(Configuration)_$(Platform)\"
+IF EXIST "$(SolutionDir)..\deqp\build\external\vulkancts\modules\vulkan\" (copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)..\deqp\build\external\vulkancts\modules\vulkan\vulkan-1.dll")</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -87,27 +92,34 @@ copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)out\$(Configuration)_$(Platfor
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
<TreatSpecificWarningsAsErrors>4018;5038;4838</TreatSpecificWarningsAsErrors>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
- <ModuleDefinitionFile>swiftshader_icd.def</ModuleDefinitionFile>
+ <ModuleDefinitionFile>libvk_swiftshader.def</ModuleDefinitionFile>
<AdditionalDependencies>dxguid.lib;WS2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>mkdir "$(SolutionDir)out\$(Configuration)_$(Platform)\"
-copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)out\$(Configuration)_$(Platform)\"</Command>
+mkdir "$(SolutionDir)build\$(Configuration)_$(Platform)\"
+copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)out\$(Configuration)_$(Platform)\"
+copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)build\$(Configuration)_$(Platform)\"
+IF EXIST "$(SolutionDir)..\deqp\build\external\vulkancts\modules\vulkan\" (copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)..\deqp\build\external\vulkancts\modules\vulkan\vulkan-1.dll")</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="libVulkan.cpp" />
<ClCompile Include="main.cpp" />
<ClCompile Include="VkBuffer.cpp" />
+ <ClCompile Include="VkBufferView.cpp" />
<ClCompile Include="VkCommandBuffer.cpp" />
<ClCompile Include="VkCommandPool.cpp" />
<ClCompile Include="VkDebug.cpp" />
<ClCompile Include="VkDescriptorPool.cpp" />
<ClCompile Include="VkDescriptorSetLayout.cpp" />
+ <ClCompile Include="VkDescriptorUpdateTemplate.cpp" />
<ClCompile Include="VkDevice.cpp" />
<ClCompile Include="VkDeviceMemory.cpp" />
+ <ClCompile Include="VkFormat.cpp" />
<ClCompile Include="VkFramebuffer.cpp" />
<ClCompile Include="VkGetProcAddress.cpp" />
<ClCompile Include="VkImage.cpp" />
@@ -116,6 +128,7 @@ copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)out\$(Configuration)_$(Platfor
<ClCompile Include="VkMemory.cpp" />
<ClCompile Include="VkPhysicalDevice.cpp" />
<ClCompile Include="VkPipeline.cpp" />
+ <ClCompile Include="VkPipelineCache.cpp" />
<ClCompile Include="VkPipelineLayout.cpp" />
<ClCompile Include="VkPromotedExtensions.cpp" />
<ClCompile Include="VkQueryPool.cpp" />
@@ -136,10 +149,10 @@ copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)out\$(Configuration)_$(Platfor
<ClCompile Include="..\Device\Renderer.cpp" />
<ClCompile Include="..\Device\Sampler.cpp" />
<ClCompile Include="..\Device\SetupProcessor.cpp" />
- <ClCompile Include="..\Device\Surface.cpp" />
<ClCompile Include="..\Device\SwiftConfig.cpp" />
<ClCompile Include="..\Device\Vector.cpp" />
<ClCompile Include="..\Device\VertexProcessor.cpp" />
+ <ClCompile Include="..\Pipeline\ComputeProgram.cpp" />
<ClCompile Include="..\Pipeline\Constants.cpp" />
<ClCompile Include="..\Pipeline\PixelProgram.cpp" />
<ClCompile Include="..\Pipeline\PixelRoutine.cpp" />
@@ -147,6 +160,7 @@ copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)out\$(Configuration)_$(Platfor
<ClCompile Include="..\Pipeline\SetupRoutine.cpp" />
<ClCompile Include="..\Pipeline\ShaderCore.cpp" />
<ClCompile Include="..\Pipeline\SpirvShader.cpp" />
+ <ClCompile Include="..\Pipeline\SpirvShaderSampling.cpp" />
<ClCompile Include="..\Pipeline\SpirvShader_dbg.cpp" />
<ClCompile Include="..\Pipeline\VertexProgram.cpp" />
<ClCompile Include="..\Pipeline\VertexRoutine.cpp" />
@@ -170,22 +184,6 @@ copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)out\$(Configuration)_$(Platfor
<ClCompile Include="..\System\Timer.cpp" />
<ClCompile Include="..\WSI\VkSurfaceKHR.cpp" />
<ClCompile Include="..\WSI\VkSwapchainKHR.cpp" />
- <ClCompile Include="..\WSI\FrameBuffer.cpp" />
- <ClCompile Include="..\WSI\FrameBufferAndroid.cpp">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- </ClCompile>
- <ClCompile Include="..\WSI\FrameBufferDD.cpp" />
- <ClCompile Include="..\WSI\FrameBufferGDI.cpp" />
- <ClCompile Include="..\WSI\FrameBufferOzone.cpp">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- </ClCompile>
- <ClCompile Include="..\WSI\FrameBufferWin.cpp" />
- <ClCompile Include="..\WSI\FrameBufferX11.cpp">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- </ClCompile>
<ClCompile Include="..\WSI\libX11.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
@@ -202,11 +200,13 @@ copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)out\$(Configuration)_$(Platfor
<ClInclude Include="VkDebug.hpp" />
<ClInclude Include="VkDescriptorPool.hpp" />
<ClInclude Include="VkDescriptorSetLayout.hpp" />
+ <ClInclude Include="VkDescriptorUpdateTemplate.hpp" />
<ClInclude Include="VkDestroy.h" />
<ClInclude Include="VkDevice.hpp" />
<ClInclude Include="VkDeviceMemory.hpp" />
<ClInclude Include="VkEvent.hpp" />
<ClInclude Include="VkFence.hpp" />
+ <ClInclude Include="VkFormat.h" />
<ClInclude Include="VkFramebuffer.hpp" />
<ClInclude Include="VkGetProcAddress.h" />
<ClInclude Include="VkImage.hpp" />
@@ -244,12 +244,12 @@ copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)out\$(Configuration)_$(Platfor
<ClInclude Include="..\Device\Sampler.hpp" />
<ClInclude Include="..\Device\SetupProcessor.hpp" />
<ClInclude Include="..\Device\Stream.hpp" />
- <ClInclude Include="..\Device\Surface.hpp" />
<ClInclude Include="..\Device\SwiftConfig.hpp" />
<ClInclude Include="..\Device\Triangle.hpp" />
<ClInclude Include="..\Device\Vector.hpp" />
<ClInclude Include="..\Device\Vertex.hpp" />
<ClInclude Include="..\Device\VertexProcessor.hpp" />
+ <ClInclude Include="..\Pipeline\ComputeProgram.hpp" />
<ClInclude Include="..\Pipeline\Constants.hpp" />
<ClInclude Include="..\Pipeline\PixelProgram.hpp" />
<ClInclude Include="..\Pipeline\PixelRoutine.hpp" />
@@ -283,37 +283,13 @@ copy "$(OutDir)vk_swiftshader.dll" "$(SolutionDir)out\$(Configuration)_$(Platfor
<ClInclude Include="..\System\Types.hpp" />
<ClInclude Include="..\WSI\VkSurfaceKHR.hpp" />
<ClInclude Include="..\WSI\VkSwapchainKHR.hpp" />
- <ClInclude Include="..\WSI\FrameBuffer.hpp" />
- <ClInclude Include="..\WSI\FrameBufferAndroid.hpp">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- </ClInclude>
- <ClInclude Include="..\WSI\FrameBufferDD.hpp" />
- <ClInclude Include="..\WSI\FrameBufferGDI.hpp" />
- <ClInclude Include="..\WSI\FrameBufferOSX.hpp">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- </ClInclude>
- <ClInclude Include="..\WSI\FrameBufferOzone.hpp">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- </ClInclude>
- <ClInclude Include="..\WSI\FrameBufferWin.hpp" />
- <ClInclude Include="..\WSI\FrameBufferX11.hpp">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- </ClInclude>
<ClInclude Include="..\WSI\libX11.hpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClInclude>
</ItemGroup>
<ItemGroup>
- <None Include="..\WSI\FrameBufferOSX.mm">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- </None>
- <None Include="swiftshader_icd.def" />
+ <None Include="libvk_swiftshader.def" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Vulkan.rc" />
diff --git a/chromium/third_party/swiftshader/src/Vulkan/vulkan.vcxproj.filters b/chromium/third_party/swiftshader/src/Vulkan/vulkan.vcxproj.filters
index 65c83fe43af..de82743853b 100644
--- a/chromium/third_party/swiftshader/src/Vulkan/vulkan.vcxproj.filters
+++ b/chromium/third_party/swiftshader/src/Vulkan/vulkan.vcxproj.filters
@@ -54,9 +54,6 @@
<ClCompile Include="..\Device\SwiftConfig.cpp">
<Filter>Source Files\Device</Filter>
</ClCompile>
- <ClCompile Include="..\Device\Surface.cpp">
- <Filter>Source Files\Device</Filter>
- </ClCompile>
<ClCompile Include="..\Device\SetupProcessor.cpp">
<Filter>Source Files\Device</Filter>
</ClCompile>
@@ -120,29 +117,11 @@
<ClCompile Include="..\Pipeline\PixelProgram.cpp">
<Filter>Source Files\Pipeline</Filter>
</ClCompile>
- <ClCompile Include="..\Pipeline\Constants.cpp">
+ <ClCompile Include="..\Pipeline\ComputeProgram.cpp">
<Filter>Source Files\Pipeline</Filter>
</ClCompile>
- <ClCompile Include="..\WSI\FrameBuffer.cpp">
- <Filter>Source Files\WSI</Filter>
- </ClCompile>
- <ClCompile Include="..\WSI\FrameBufferAndroid.cpp">
- <Filter>Source Files\WSI</Filter>
- </ClCompile>
- <ClCompile Include="..\WSI\FrameBufferDD.cpp">
- <Filter>Source Files\WSI</Filter>
- </ClCompile>
- <ClCompile Include="..\WSI\FrameBufferGDI.cpp">
- <Filter>Source Files\WSI</Filter>
- </ClCompile>
- <ClCompile Include="..\WSI\FrameBufferOzone.cpp">
- <Filter>Source Files\WSI</Filter>
- </ClCompile>
- <ClCompile Include="..\WSI\FrameBufferWin.cpp">
- <Filter>Source Files\WSI</Filter>
- </ClCompile>
- <ClCompile Include="..\WSI\FrameBufferX11.cpp">
- <Filter>Source Files\WSI</Filter>
+ <ClCompile Include="..\Pipeline\Constants.cpp">
+ <Filter>Source Files\Pipeline</Filter>
</ClCompile>
<ClCompile Include="..\WSI\libX11.cpp">
<Filter>Source Files\WSI</Filter>
@@ -195,6 +174,9 @@
<ClCompile Include="VkBuffer.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
+ <ClCompile Include="VkBufferView.cpp">
+ <Filter>Source Files\Vulkan</Filter>
+ </ClCompile>
<ClCompile Include="VkCommandBuffer.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
@@ -210,15 +192,30 @@
<ClCompile Include="VkDescriptorSetLayout.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
+ <ClCompile Include="VkDescriptorUpdateTemplate.cpp">
+ <Filter>Source Files\Vulkan</Filter>
+ </ClCompile>
<ClCompile Include="VkDevice.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
<ClCompile Include="VkDeviceMemory.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
+ <ClCompile Include="VkFormat.cpp">
+ <Filter>Source Files\Vulkan</Filter>
+ </ClCompile>
+ <ClCompile Include="VkFramebuffer.cpp">
+ <Filter>Source Files\Vulkan</Filter>
+ </ClCompile>
<ClCompile Include="VkGetProcAddress.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
+ <ClCompile Include="VkImage.cpp">
+ <Filter>Source Files\Vulkan</Filter>
+ </ClCompile>
+ <ClCompile Include="VkImageView.cpp">
+ <Filter>Source Files\Vulkan</Filter>
+ </ClCompile>
<ClCompile Include="VkInstance.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
@@ -231,22 +228,19 @@
<ClCompile Include="VkPipeline.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
- <ClCompile Include="VkPipelineLayout.cpp">
+ <ClCompile Include="VkPipelineCache.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
- <ClCompile Include="VkImage.cpp">
- <Filter>Source Files\Vulkan</Filter>
- </ClCompile>
- <ClCompile Include="VkImageView.cpp">
+ <ClCompile Include="VkPipelineLayout.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
<ClCompile Include="VkPromotedExtensions.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
- <ClCompile Include="VkQueue.cpp">
+ <ClCompile Include="VkQueryPool.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
- <ClCompile Include="VkFramebuffer.cpp">
+ <ClCompile Include="VkQueue.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
<ClCompile Include="VkRenderPass.cpp">
@@ -255,15 +249,18 @@
<ClCompile Include="VkShaderModule.cpp">
<Filter>Source Files\Vulkan</Filter>
</ClCompile>
- <ClCompile Include="VkQueryPool.cpp">
- <Filter>Source Files\Vulkan</Filter>
- </ClCompile>
<ClCompile Include="..\Pipeline\SpirvShader.cpp">
<Filter>Source Files\Pipeline</Filter>
</ClCompile>
+ <ClCompile Include="..\Pipeline\SpirvShaderSampling.cpp">
+ <Filter>Source Files\Pipeline</Filter>
+ </ClCompile>
<ClCompile Include="..\Pipeline\SpirvShader_dbg.cpp">
<Filter>Source Files\Pipeline</Filter>
</ClCompile>
+ <ClCompile Include="..\WSI\VkSwapchainKHR.cpp">
+ <Filter>Source Files\WSI</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource.h">
@@ -290,6 +287,9 @@
<ClInclude Include="VkDescriptorSetLayout.hpp">
<Filter>Header Files\Vulkan</Filter>
</ClInclude>
+ <ClInclude Include="VkDescriptorUpdateTemplate.hpp">
+ <Filter>Header Files\Vulkan</Filter>
+ </ClInclude>
<ClInclude Include="VkDevice.hpp">
<Filter>Header Files\Vulkan</Filter>
</ClInclude>
@@ -302,6 +302,9 @@
<ClInclude Include="VkFence.hpp">
<Filter>Header Files\Vulkan</Filter>
</ClInclude>
+ <ClInclude Include="VkFormat.h">
+ <Filter>Header Files\Vulkan</Filter>
+ </ClInclude>
<ClInclude Include="VkFramebuffer.hpp">
<Filter>Header Files\Vulkan</Filter>
</ClInclude>
@@ -368,9 +371,6 @@
<ClInclude Include="..\Device\SwiftConfig.hpp">
<Filter>Header Files\Device</Filter>
</ClInclude>
- <ClInclude Include="..\Device\Surface.hpp">
- <Filter>Header Files\Device</Filter>
- </ClInclude>
<ClInclude Include="..\Device\Stream.hpp">
<Filter>Header Files\Device</Filter>
</ClInclude>
@@ -431,30 +431,6 @@
<ClInclude Include="..\Device\Blitter.hpp">
<Filter>Header Files\Device</Filter>
</ClInclude>
- <ClInclude Include="..\WSI\FrameBuffer.hpp">
- <Filter>Header Files\WSI</Filter>
- </ClInclude>
- <ClInclude Include="..\WSI\FrameBufferAndroid.hpp">
- <Filter>Header Files\WSI</Filter>
- </ClInclude>
- <ClInclude Include="..\WSI\FrameBufferDD.hpp">
- <Filter>Header Files\WSI</Filter>
- </ClInclude>
- <ClInclude Include="..\WSI\FrameBufferGDI.hpp">
- <Filter>Header Files\WSI</Filter>
- </ClInclude>
- <ClInclude Include="..\WSI\FrameBufferOSX.hpp">
- <Filter>Header Files\WSI</Filter>
- </ClInclude>
- <ClInclude Include="..\WSI\FrameBufferOzone.hpp">
- <Filter>Header Files\WSI</Filter>
- </ClInclude>
- <ClInclude Include="..\WSI\FrameBufferWin.hpp">
- <Filter>Header Files\WSI</Filter>
- </ClInclude>
- <ClInclude Include="..\WSI\FrameBufferX11.hpp">
- <Filter>Header Files\WSI</Filter>
- </ClInclude>
<ClInclude Include="..\WSI\libX11.hpp">
<Filter>Header Files\WSI</Filter>
</ClInclude>
@@ -485,6 +461,9 @@
<ClInclude Include="..\Pipeline\PixelProgram.hpp">
<Filter>Header Files\Pipeline</Filter>
</ClInclude>
+ <ClInclude Include="..\Pipeline\ComputeProgram.hpp">
+ <Filter>Header Files\Pipeline</Filter>
+ </ClInclude>
<ClInclude Include="..\Pipeline\Constants.hpp">
<Filter>Header Files\Pipeline</Filter>
</ClInclude>
@@ -543,12 +522,12 @@
<ClInclude Include="..\Pipeline\SpirvShader.hpp">
<Filter>Header Files\Pipeline</Filter>
</ClInclude>
+ <ClInclude Include="..\WSI\VkSwapchainKHR.hpp">
+ <Filter>Header Files\WSI</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
- <None Include="swiftshader_icd.def" />
- <None Include="..\WSI\FrameBufferOSX.mm">
- <Filter>Source Files\WSI</Filter>
- </None>
+ <None Include="libvk_swiftshader.def" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Vulkan.rc">
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBuffer.cpp b/chromium/third_party/swiftshader/src/WSI/FrameBuffer.cpp
deleted file mode 100644
index 04ab0fad8d5..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBuffer.cpp
+++ /dev/null
@@ -1,569 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "FrameBuffer.hpp"
-
-#include "Device/Surface.hpp"
-#include "Reactor/Reactor.hpp"
-#include "System/Timer.hpp"
-#include "System/Debug.hpp"
-
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-
-#define ASYNCHRONOUS_BLIT false // FIXME: Currently leads to rare race conditions
-
-namespace sw
-{
- extern bool forceWindowed;
-
- FrameBuffer::Cursor FrameBuffer::cursor = {};
- bool FrameBuffer::topLeftOrigin = false;
-
- FrameBuffer::FrameBuffer(int width, int height, bool fullscreen, bool topLeftOrigin)
- {
- this->topLeftOrigin = topLeftOrigin;
-
- framebuffer = nullptr;
-
- this->width = width;
- this->height = height;
- format = VK_FORMAT_B8G8R8A8_UNORM;
- stride = 0;
-
- windowed = !fullscreen || forceWindowed;
-
- blitFunction = nullptr;
- blitRoutine = nullptr;
- blitState = {};
-
- if(ASYNCHRONOUS_BLIT)
- {
- terminate = false;
- FrameBuffer *parameters = this;
- blitThread = new Thread(threadFunction, &parameters);
- }
- }
-
- FrameBuffer::~FrameBuffer()
- {
- if(ASYNCHRONOUS_BLIT)
- {
- terminate = true;
- blitEvent.signal();
- blitThread->join();
- delete blitThread;
- }
-
- delete blitRoutine;
- }
-
- void FrameBuffer::setCursorImage(sw::Surface *cursorImage)
- {
- if(cursorImage)
- {
- cursor.image = cursorImage->lockExternal(0, 0, 0, sw::LOCK_READONLY, sw::PUBLIC);
- cursorImage->unlockExternal();
-
- cursor.width = cursorImage->getWidth();
- cursor.height = cursorImage->getHeight();
- }
- else
- {
- cursor.width = 0;
- cursor.height = 0;
- }
- }
-
- void FrameBuffer::setCursorOrigin(int x0, int y0)
- {
- cursor.hotspotX = x0;
- cursor.hotspotY = y0;
- }
-
- void FrameBuffer::setCursorPosition(int x, int y)
- {
- cursor.positionX = x;
- cursor.positionY = y;
- }
-
- void FrameBuffer::copy(sw::Surface *source)
- {
- if(!source)
- {
- return;
- }
-
- if(!lock())
- {
- return;
- }
-
- int sourceStride = source->getInternalPitchB();
-
- updateState = {};
- updateState.width = width;
- updateState.height = height;
- updateState.destFormat = format;
- updateState.destStride = stride;
- updateState.sourceFormat = source->getInternalFormat();
- updateState.sourceStride = topLeftOrigin ? sourceStride : -sourceStride;
- updateState.cursorWidth = cursor.width;
- updateState.cursorHeight = cursor.height;
-
- renderbuffer = source->lockInternal(0, 0, 0, sw::LOCK_READONLY, sw::PUBLIC);
-
- if(!topLeftOrigin)
- {
- renderbuffer = (byte*)renderbuffer + (height - 1) * sourceStride;
- }
-
- cursor.x = cursor.positionX - cursor.hotspotX;
- cursor.y = cursor.positionY - cursor.hotspotY;
-
- if(ASYNCHRONOUS_BLIT)
- {
- blitEvent.signal();
- syncEvent.wait();
- }
- else
- {
- copyLocked();
- }
-
- source->unlockInternal();
- unlock();
-
- profiler.nextFrame(); // Assumes every copy() is a full frame
- }
-
- void FrameBuffer::copyLocked()
- {
- if(memcmp(&blitState, &updateState, sizeof(BlitState)) != 0)
- {
- blitState = updateState;
- delete blitRoutine;
-
- blitRoutine = copyRoutine(blitState);
- blitFunction = (void(*)(void*, void*, Cursor*))blitRoutine->getEntry();
- }
-
- blitFunction(framebuffer, renderbuffer, &cursor);
- }
-
- Routine *FrameBuffer::copyRoutine(const BlitState &state)
- {
- const int width = state.width;
- const int height = state.height;
- const int dBytes = Surface::bytes(state.destFormat);
- const int dStride = state.destStride;
- const int sBytes = Surface::bytes(state.sourceFormat);
- const int sStride = state.sourceStride;
-
- Function<Void(Pointer<Byte>, Pointer<Byte>, Pointer<Byte>)> function;
- {
- Pointer<Byte> dst(function.Arg<0>());
- Pointer<Byte> src(function.Arg<1>());
- Pointer<Byte> cursor(function.Arg<2>());
-
- For(Int y = 0, y < height, y++)
- {
- Pointer<Byte> d = dst + y * dStride;
- Pointer<Byte> s = src + y * sStride;
-
- Int x0 = 0;
-
- switch(state.destFormat)
- {
- case VK_FORMAT_B8G8R8A8_UNORM:
- {
- Int x = x0;
-
- switch(state.sourceFormat)
- {
- case VK_FORMAT_B8G8R8A8_UNORM:
- For(, x < width - 3, x += 4)
- {
- *Pointer<Int4>(d, 1) = *Pointer<Int4>(s, sStride % 16 ? 1 : 16);
-
- s += 4 * sBytes;
- d += 4 * dBytes;
- }
- break;
- case VK_FORMAT_R8G8B8A8_UNORM:
- For(, x < width - 3, x += 4)
- {
- Int4 bgra = *Pointer<Int4>(s, sStride % 16 ? 1 : 16);
-
- *Pointer<Int4>(d, 1) = ((bgra & Int4(0x00FF0000)) >> 16) |
- ((bgra & Int4(0x000000FF)) << 16) |
- (bgra & Int4(0xFF00FF00));
-
- s += 4 * sBytes;
- d += 4 * dBytes;
- }
- break;
- case VK_FORMAT_R16G16B16A16_UNORM:
- For(, x < width - 1, x += 2)
- {
- Short4 c0 = As<UShort4>(Swizzle(*Pointer<Short4>(s + 0), 0xC6)) >> 8;
- Short4 c1 = As<UShort4>(Swizzle(*Pointer<Short4>(s + 8), 0xC6)) >> 8;
-
- *Pointer<Int2>(d) = As<Int2>(PackUnsigned(c0, c1));
-
- s += 2 * sBytes;
- d += 2 * dBytes;
- }
- break;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- For(, x < width - 3, x += 4)
- {
- Int4 rgb = Int4(*Pointer<Short4>(s));
-
- *Pointer<Int4>(d) = (((rgb & Int4(0xF800)) << 8) | ((rgb & Int4(0xE01F)) << 3)) |
- (((rgb & Int4(0x07E0)) << 5) | ((rgb & Int4(0x0600)) >> 1)) |
- (((rgb & Int4(0x001C)) >> 2) | Int4(0xFF000000));
-
- s += 4 * sBytes;
- d += 4 * dBytes;
- }
- break;
- default:
- ASSERT(false);
- break;
- }
-
- For(, x < width, x++)
- {
- switch(state.sourceFormat)
- {
- case VK_FORMAT_B8G8R8A8_UNORM:
- *Pointer<Int>(d) = *Pointer<Int>(s);
- break;
- case VK_FORMAT_R8G8B8A8_UNORM:
- {
- Int rgba = *Pointer<Int>(s);
-
- *Pointer<Int>(d) = ((rgba & Int(0x00FF0000)) >> 16) |
- ((rgba & Int(0x000000FF)) << 16) |
- (rgba & Int(0xFF00FF00));
- }
- break;
- case VK_FORMAT_R16G16B16A16_UNORM:
- {
- Short4 c = As<UShort4>(Swizzle(*Pointer<Short4>(s), 0xC6)) >> 8;
-
- *Pointer<Int>(d) = Int(As<Int2>(PackUnsigned(c, c)));
- }
- break;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- {
- Int rgb = Int(*Pointer<Short>(s));
-
- *Pointer<Int>(d) = 0xFF000000 |
- ((rgb & 0xF800) << 8) | ((rgb & 0xE01F) << 3) |
- ((rgb & 0x07E0) << 5) | ((rgb & 0x0600) >> 1) |
- ((rgb & 0x001C) >> 2);
- }
- break;
- default:
- ASSERT(false);
- break;
- }
-
- s += sBytes;
- d += dBytes;
- }
- }
- break;
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SRGB:
- {
- Int x = x0;
-
- switch(state.sourceFormat)
- {
- case VK_FORMAT_R8G8B8A8_UNORM:
- For(, x < width - 3, x += 4)
- {
- *Pointer<Int4>(d, 1) = *Pointer<Int4>(s, sStride % 16 ? 1 : 16);
-
- s += 4 * sBytes;
- d += 4 * dBytes;
- }
- break;
- case VK_FORMAT_B8G8R8A8_UNORM:
- For(, x < width - 3, x += 4)
- {
- Int4 bgra = *Pointer<Int4>(s, sStride % 16 ? 1 : 16);
-
- *Pointer<Int4>(d, 1) = ((bgra & Int4(0x00FF0000)) >> 16) |
- ((bgra & Int4(0x000000FF)) << 16) |
- (bgra & Int4(0xFF00FF00));
-
- s += 4 * sBytes;
- d += 4 * dBytes;
- }
- break;
- case VK_FORMAT_R16G16B16A16_UNORM:
- For(, x < width - 1, x += 2)
- {
- Short4 c0 = *Pointer<UShort4>(s + 0) >> 8;
- Short4 c1 = *Pointer<UShort4>(s + 8) >> 8;
-
- *Pointer<Int2>(d) = As<Int2>(PackUnsigned(c0, c1));
-
- s += 2 * sBytes;
- d += 2 * dBytes;
- }
- break;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- For(, x < width - 3, x += 4)
- {
- Int4 rgb = Int4(*Pointer<Short4>(s));
-
- *Pointer<Int4>(d) = Int4(0xFF000000) |
- (((rgb & Int4(0x001F)) << 19) | ((rgb & Int4(0x001C)) << 14)) |
- (((rgb & Int4(0x07E0)) << 5) | ((rgb & Int4(0x0600)) >> 1)) |
- (((rgb & Int4(0xF800)) >> 8) | ((rgb & Int4(0xE000)) >> 13));
-
- s += 4 * sBytes;
- d += 4 * dBytes;
- }
- break;
- default:
- ASSERT(false);
- break;
- }
-
- For(, x < width, x++)
- {
- switch(state.sourceFormat)
- {
- case VK_FORMAT_R8G8B8A8_UNORM:
- *Pointer<Int>(d) = *Pointer<Int>(s);
- break;
- case VK_FORMAT_B8G8R8A8_UNORM:
- {
- Int bgra = *Pointer<Int>(s);
- *Pointer<Int>(d) = ((bgra & Int(0x00FF0000)) >> 16) |
- ((bgra & Int(0x000000FF)) << 16) |
- (bgra & Int(0xFF00FF00));
- }
- break;
- case VK_FORMAT_R16G16B16A16_UNORM:
- {
- Short4 c = *Pointer<UShort4>(s) >> 8;
-
- *Pointer<Int>(d) = Int(As<Int2>(PackUnsigned(c, c)));
- }
- break;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- {
- Int rgb = Int(*Pointer<Short>(s));
-
- *Pointer<Int>(d) = 0xFF000000 |
- ((rgb & 0x001F) << 19) | ((rgb & 0x001C) << 14) |
- ((rgb & 0x07E0) << 5) | ((rgb & 0x0600) >> 1) |
- ((rgb & 0xF800) >> 8) | ((rgb & 0xE000) >> 13);
- }
- break;
- default:
- ASSERT(false);
- break;
- }
-
- s += sBytes;
- d += dBytes;
- }
- }
- break;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- {
- For(Int x = x0, x < width, x++)
- {
- switch(state.sourceFormat)
- {
- case VK_FORMAT_B8G8R8A8_UNORM:
- {
- Int c = *Pointer<Int>(s);
-
- *Pointer<Short>(d) = Short((c & 0x00F80000) >> 8 |
- (c & 0x0000FC00) >> 5 |
- (c & 0x000000F8) >> 3);
- }
- break;
- case VK_FORMAT_R8G8B8A8_UNORM:
- {
- Int c = *Pointer<Int>(s);
-
- *Pointer<Short>(d) = Short((c & 0x00F80000) >> 19 |
- (c & 0x0000FC00) >> 5 |
- (c & 0x000000F8) << 8);
- }
- break;
- case VK_FORMAT_R16G16B16A16_UNORM:
- {
- Short4 cc = *Pointer<UShort4>(s) >> 8;
- Int c = Int(As<Int2>(PackUnsigned(cc, cc)));
-
- *Pointer<Short>(d) = Short((c & 0x00F80000) >> 19 |
- (c & 0x0000FC00) >> 5 |
- (c & 0x000000F8) << 8);
- }
- break;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- *Pointer<Short>(d) = *Pointer<Short>(s);
- break;
- default:
- ASSERT(false);
- break;
- }
-
- s += sBytes;
- d += dBytes;
- }
- }
- break;
- default:
- ASSERT(false);
- break;
- }
- }
-
- if(state.cursorWidth > 0 && state.cursorHeight > 0)
- {
- Int x0 = *Pointer<Int>(cursor + OFFSET(Cursor,x));
- Int y0 = *Pointer<Int>(cursor + OFFSET(Cursor,y));
-
- For(Int y1 = 0, y1 < state.cursorHeight, y1++)
- {
- Int y = y0 + y1;
-
- If(y >= 0 && y < height)
- {
- Pointer<Byte> d = dst + y * dStride + x0 * dBytes;
- Pointer<Byte> s = src + y * sStride + x0 * sBytes;
- Pointer<Byte> c = *Pointer<Pointer<Byte>>(cursor + OFFSET(Cursor,image)) + y1 * state.cursorWidth * 4;
-
- For(Int x1 = 0, x1 < state.cursorWidth, x1++)
- {
- Int x = x0 + x1;
-
- If(x >= 0 && x < width)
- {
- blend(state, d, s, c);
- }
-
- c += 4;
- s += sBytes;
- d += dBytes;
- }
- }
- }
- }
- }
-
- return function("FrameBuffer");
- }
-
- void FrameBuffer::blend(const BlitState &state, const Pointer<Byte> &d, const Pointer<Byte> &s, const Pointer<Byte> &c)
- {
- Short4 c1;
- Short4 c2;
-
- c1 = Unpack(*Pointer<Byte4>(c));
-
- switch(state.sourceFormat)
- {
- case VK_FORMAT_B8G8R8A8_UNORM:
- c2 = Unpack(*Pointer<Byte4>(s));
- break;
- case VK_FORMAT_R8G8B8A8_UNORM:
- c2 = Swizzle(Unpack(*Pointer<Byte4>(s)), 0xC6);
- break;
- case VK_FORMAT_R16G16B16A16_UNORM:
- c2 = Swizzle(*Pointer<Short4>(s), 0xC6);
- break;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- {
- Int rgb(*Pointer<Short>(s));
- rgb = 0xFF000000 |
- ((rgb & 0xF800) << 8) | ((rgb & 0xE01F) << 3) |
- ((rgb & 0x07E0) << 5) | ((rgb & 0x0600) >> 1) |
- ((rgb & 0x001C) >> 2);
- c2 = Unpack(As<Byte4>(rgb));
- }
- break;
- default:
- ASSERT(false);
- break;
- }
-
- c1 = As<Short4>(As<UShort4>(c1) >> 9);
- c2 = As<Short4>(As<UShort4>(c2) >> 9);
-
- Short4 alpha = Swizzle(c1, 0xFF) & Short4(0xFFFFu, 0xFFFFu, 0xFFFFu, 0x0000);
-
- c1 = (c1 - c2) * alpha;
- c1 = c1 >> 7;
- c1 = c1 + c2;
- c1 = c1 + c1;
-
- switch(state.destFormat)
- {
- case VK_FORMAT_B8G8R8A8_UNORM:
- *Pointer<Byte4>(d) = Byte4(PackUnsigned(c1, c1));
- break;
- case VK_FORMAT_R8G8B8A8_UNORM:
- case VK_FORMAT_R8G8B8A8_SRGB:
- {
- c1 = Swizzle(c1, 0xC6);
-
- *Pointer<Byte4>(d) = Byte4(PackUnsigned(c1, c1));
- }
- break;
- case VK_FORMAT_R5G6B5_UNORM_PACK16:
- {
- Int c = Int(As<Int2>(PackUnsigned(c1, c1)));
-
- *Pointer<Short>(d) = Short((c & 0x00F80000) >> 8 |
- (c & 0x0000FC00) >> 5 |
- (c & 0x000000F8) >> 3);
- }
- break;
- default:
- ASSERT(false);
- break;
- }
- }
-
- void FrameBuffer::threadFunction(void *parameters)
- {
- FrameBuffer *frameBuffer = *static_cast<FrameBuffer**>(parameters);
-
- while(!frameBuffer->terminate)
- {
- frameBuffer->blitEvent.wait();
-
- if(!frameBuffer->terminate)
- {
- frameBuffer->copyLocked();
-
- frameBuffer->syncEvent.signal();
- }
- }
- }
-}
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBuffer.hpp b/chromium/third_party/swiftshader/src/WSI/FrameBuffer.hpp
deleted file mode 100644
index b41fbe3cf39..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBuffer.hpp
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef sw_FrameBuffer_hpp
-#define sw_FrameBuffer_hpp
-
-#include "Reactor/Reactor.hpp"
-#include "Device/Surface.hpp"
-#include "System/Thread.hpp"
-
-namespace sw
-{
- using namespace rr;
-
- class Surface;
-
- struct BlitState
- {
- int width;
- int height;
- VkFormat destFormat;
- VkFormat sourceFormat;
- int destStride;
- int sourceStride;
- int cursorWidth;
- int cursorHeight;
- };
-
- class FrameBuffer
- {
- public:
- FrameBuffer(int width, int height, bool fullscreen, bool topLeftOrigin);
-
- virtual ~FrameBuffer() = 0;
-
- virtual void flip(sw::Surface *source) = 0;
- virtual void blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect) = 0;
-
- virtual void *lock() = 0;
- virtual void unlock() = 0;
-
- static void setCursorImage(sw::Surface *cursor);
- static void setCursorOrigin(int x0, int y0);
- static void setCursorPosition(int x, int y);
-
- static Routine *copyRoutine(const BlitState &state);
-
- protected:
- void copy(sw::Surface *source);
-
- bool windowed;
-
- void *framebuffer; // Native window buffer.
- int width;
- int height;
- int stride;
- VkFormat format;
-
- private:
- void copyLocked();
-
- static void threadFunction(void *parameters);
-
- void *renderbuffer; // Render target buffer.
-
- struct Cursor
- {
- void *image;
- int x;
- int y;
- int width;
- int height;
- int hotspotX;
- int hotspotY;
- int positionX;
- int positionY;
- };
-
- static Cursor cursor;
-
- void (*blitFunction)(void *dst, void *src, Cursor *cursor);
- Routine *blitRoutine;
- BlitState blitState; // State of the current blitRoutine.
- BlitState updateState; // State of the routine to be generated.
-
- static void blend(const BlitState &state, const Pointer<Byte> &d, const Pointer<Byte> &s, const Pointer<Byte> &c);
-
- Thread *blitThread;
- Event syncEvent;
- Event blitEvent;
- volatile bool terminate;
-
- static bool topLeftOrigin;
- };
-}
-
-#endif // sw_FrameBuffer_hpp
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferAndroid.cpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferAndroid.cpp
deleted file mode 100644
index 415ad69f393..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferAndroid.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "FrameBufferAndroid.hpp"
-
-#include "System/GrallocAndroid.hpp"
-
-#include <system/window.h>
-
-namespace sw
-{
- inline int dequeueBuffer(ANativeWindow* window, ANativeWindowBuffer** buffer)
- {
- #if ANDROID_PLATFORM_SDK_VERSION > 16
- return native_window_dequeue_buffer_and_wait(window, buffer);
- #else
- return window->dequeueBuffer(window, buffer);
- #endif
- }
-
- inline int queueBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer, int fenceFd)
- {
- #if ANDROID_PLATFORM_SDK_VERSION > 16
- return window->queueBuffer(window, buffer, fenceFd);
- #else
- return window->queueBuffer(window, buffer);
- #endif
- }
-
- inline int cancelBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer, int fenceFd)
- {
- #if ANDROID_PLATFORM_SDK_VERSION > 16
- return window->cancelBuffer(window, buffer, fenceFd);
- #else
- return window->cancelBuffer(window, buffer);
- #endif
- }
-
- FrameBufferAndroid::FrameBufferAndroid(ANativeWindow* window, int width, int height)
- : FrameBuffer(width, height, false, false),
- nativeWindow(window), buffer(nullptr)
- {
- nativeWindow->common.incRef(&nativeWindow->common);
- native_window_set_usage(nativeWindow, GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_OFTEN);
- }
-
- FrameBufferAndroid::~FrameBufferAndroid()
- {
- nativeWindow->common.decRef(&nativeWindow->common);
- }
-
- void FrameBufferAndroid::blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect)
- {
- copy(source);
-
- if(buffer)
- {
- if(framebuffer)
- {
- framebuffer = nullptr;
- unlock();
- }
-
- queueBuffer(nativeWindow, buffer, -1);
- }
- }
-
- void *FrameBufferAndroid::lock()
- {
- if(dequeueBuffer(nativeWindow, &buffer) != 0)
- {
- return nullptr;
- }
-
- if(GrallocModule::getInstance()->lock(buffer->handle,
- GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_OFTEN,
- 0, 0, buffer->width, buffer->height, &framebuffer) != 0)
- {
- TRACE("%s failed to lock buffer %p", __FUNCTION__, buffer);
- return nullptr;
- }
-
- if((buffer->width < width) || (buffer->height < height))
- {
- TRACE("lock failed: buffer of %dx%d too small for window of %dx%d",
- buffer->width, buffer->height, width, height);
- return nullptr;
- }
-
- switch(buffer->format)
- {
- case HAL_PIXEL_FORMAT_RGB_565: format = VK_FORMAT_R5G6B5_UNORM_PACK16; break;
- case HAL_PIXEL_FORMAT_RGBA_8888: format = VK_FORMAT_R8G8B8A8_UNORM; break;
-#if ANDROID_PLATFORM_SDK_VERSION > 16
- case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: format = FORMAT_X8B8G8R8; break;
-#endif
- case HAL_PIXEL_FORMAT_RGBX_8888: format = FORMAT_X8B8G8R8; break;
- case HAL_PIXEL_FORMAT_BGRA_8888: format = VK_FORMAT_B8G8R8A8_UNORM; break;
- case HAL_PIXEL_FORMAT_RGB_888:
- // Frame buffers are expected to have 16-bit or 32-bit colors, not 24-bit.
- TRACE("Unsupported frame buffer format RGB_888"); ASSERT(false);
- format = FORMAT_R8G8B8; // Wrong component order.
- break;
- default:
- TRACE("Unsupported frame buffer format %d", buffer->format); ASSERT(false);
- format = VK_FORMAT_UNDEFINED;
- break;
- }
-
- stride = buffer->stride * Surface::bytes(format);
- return framebuffer;
- }
-
- void FrameBufferAndroid::unlock()
- {
- if(!buffer)
- {
- TRACE("%s: badness unlock with no active buffer", __FUNCTION__);
- return;
- }
-
- framebuffer = nullptr;
-
- if(GrallocModule::getInstance()->unlock(buffer->handle) != 0)
- {
- TRACE("%s: badness unlock failed", __FUNCTION__);
- }
- }
-}
-
-sw::FrameBuffer *createFrameBuffer(void *display, ANativeWindow* window, int width, int height)
-{
- return new sw::FrameBufferAndroid(window, width, height);
-}
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferAndroid.hpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferAndroid.hpp
deleted file mode 100644
index fd6a0160d8c..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferAndroid.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef sw_FrameBufferAndroid_hpp
-#define sw_FrameBufferAndroid_hpp
-
-#include "WSI/FrameBuffer.hpp"
-#include "System/Debug.hpp"
-
-struct ANativeWindow;
-struct ANativeWindowBuffer;
-
-namespace sw
-{
- class FrameBufferAndroid : public FrameBuffer
- {
- public:
- FrameBufferAndroid(ANativeWindow *window, int width, int height);
-
- ~FrameBufferAndroid() override;
-
- void flip(sw::Surface *source) override {blit(source, nullptr, nullptr);};
- void blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect) override;
-
- void *lock() override;
- void unlock() override;
-
- bool setSwapRectangle(int l, int t, int w, int h);
-
- private:
- ANativeWindow *nativeWindow;
- ANativeWindowBuffer *buffer;
- };
-}
-
-#endif // sw_FrameBufferAndroid
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferDD.cpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferDD.cpp
deleted file mode 100644
index 48963ee7314..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferDD.cpp
+++ /dev/null
@@ -1,503 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "FrameBufferDD.hpp"
-
-#include "System/Debug.hpp"
-
-namespace sw
-{
- extern bool forceWindowed;
-
- GUID secondaryDisplay = {0};
-
- int __stdcall enumDisplayCallback(GUID* guid, char *driverDescription, char *driverName, void *context, HMONITOR monitor)
- {
- if(strcmp(driverName, "\\\\.\\DISPLAY2") == 0)
- {
- secondaryDisplay = *guid;
- }
-
- return 1;
- }
-
- FrameBufferDD::FrameBufferDD(HWND windowHandle, int width, int height, bool fullscreen, bool topLeftOrigin) : FrameBufferWin(windowHandle, width, height, fullscreen, topLeftOrigin)
- {
- directDraw = 0;
- frontBuffer = 0;
- backBuffer = 0;
-
- framebuffer = nullptr;
-
- ddraw = LoadLibrary("ddraw.dll");
- DirectDrawCreate = (DIRECTDRAWCREATE)GetProcAddress(ddraw, "DirectDrawCreate");
- DirectDrawEnumerateExA = (DIRECTDRAWENUMERATEEXA)GetProcAddress(ddraw, "DirectDrawEnumerateExA");
-
- if(!windowed)
- {
- initFullscreen();
- }
- else
- {
- initWindowed();
- }
- }
-
- FrameBufferDD::~FrameBufferDD()
- {
- releaseAll();
-
- FreeLibrary(ddraw);
- }
-
- void FrameBufferDD::createSurfaces()
- {
- if(backBuffer)
- {
- backBuffer->Release();
- backBuffer = 0;
- }
-
- if(frontBuffer)
- {
- frontBuffer->Release();
- frontBuffer = 0;
- }
-
- if(!windowed)
- {
- DDSURFACEDESC surfaceDescription = {0};
- surfaceDescription.dwSize = sizeof(surfaceDescription);
- surfaceDescription.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
- surfaceDescription.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
- surfaceDescription.dwBackBufferCount = 1;
- directDraw->CreateSurface(&surfaceDescription, &frontBuffer, 0);
-
- if(frontBuffer)
- {
- DDSCAPS surfaceCapabilties = {0};
- surfaceCapabilties.dwCaps = DDSCAPS_BACKBUFFER;
- frontBuffer->GetAttachedSurface(&surfaceCapabilties, &backBuffer);
- backBuffer->AddRef();
- }
- }
- else
- {
- IDirectDrawClipper *clipper;
-
- DDSURFACEDESC ddsd = {0};
- ddsd.dwSize = sizeof(ddsd);
- ddsd.dwFlags = DDSD_CAPS;
- ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
-
- long result = directDraw->CreateSurface(&ddsd, &frontBuffer, 0);
- directDraw->GetDisplayMode(&ddsd);
-
- switch(ddsd.ddpfPixelFormat.dwRGBBitCount)
- {
- case 32: format = VK_FORMAT_B8G8R8A8_UNORM; break;
- case 16: format = VK_FORMAT_R5G6B5_UNORM_PACK16; break;
- default: format = VK_FORMAT_UNDEFINED; break;
- }
-
- if((result != DD_OK && result != DDERR_PRIMARYSURFACEALREADYEXISTS) || (format == VK_FORMAT_UNDEFINED))
- {
- assert(!"Failed to initialize graphics: Incompatible display mode.");
- }
- else
- {
- ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
- ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
- ddsd.dwWidth = width;
- ddsd.dwHeight = height;
-
- directDraw->CreateSurface(&ddsd, &backBuffer, 0);
-
- directDraw->CreateClipper(0, &clipper, 0);
- clipper->SetHWnd(0, windowHandle);
- frontBuffer->SetClipper(clipper);
- clipper->Release();
- }
- }
- }
-
- bool FrameBufferDD::readySurfaces()
- {
- if(!frontBuffer || !backBuffer)
- {
- createSurfaces();
- }
-
- if(frontBuffer && backBuffer)
- {
- if(frontBuffer->IsLost() || backBuffer->IsLost())
- {
- restoreSurfaces();
- }
-
- if(frontBuffer && backBuffer)
- {
- if(!frontBuffer->IsLost() && !backBuffer->IsLost())
- {
- return true;
- }
- }
- }
-
- return false;
- }
-
- void FrameBufferDD::updateClipper(HWND windowOverride)
- {
- if(windowed)
- {
- if(frontBuffer)
- {
- HWND window = windowOverride ? windowOverride : windowHandle;
-
- IDirectDrawClipper *clipper;
- frontBuffer->GetClipper(&clipper);
- clipper->SetHWnd(0, window);
- clipper->Release();
- }
- }
- }
-
- void FrameBufferDD::restoreSurfaces()
- {
- long result1 = frontBuffer->Restore();
- long result2 = backBuffer->Restore();
-
- if(result1 != DD_OK || result2 != DD_OK) // Surfaces could not be restored; recreate them
- {
- createSurfaces();
- }
- }
-
- void FrameBufferDD::initFullscreen()
- {
- releaseAll();
-
- if(true) // Render to primary display
- {
- DirectDrawCreate(0, &directDraw, 0);
- }
- else // Render to secondary display
- {
- DirectDrawEnumerateEx(&enumDisplayCallback, 0, DDENUM_ATTACHEDSECONDARYDEVICES);
- DirectDrawCreate(&secondaryDisplay, &directDraw, 0);
- }
-
- directDraw->SetCooperativeLevel(windowHandle, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
-
- long result = DD_FALSE;
-
- do
- {
- format = VK_FORMAT_B8G8R8A8_UNORM;
- result = directDraw->SetDisplayMode(width, height, 32);
-
- if(result == DDERR_INVALIDMODE)
- {
- format = VK_FORMAT_R5G6B5_UNORM_PACK16;
- result = directDraw->SetDisplayMode(width, height, 16);
-
- if(result == DDERR_INVALIDMODE)
- {
- assert(!"Failed to initialize graphics: Display mode not supported.");
- }
- }
-
- if(result != DD_OK)
- {
- Sleep(1);
- }
- }
- while(result != DD_OK);
-
- createSurfaces();
-
- updateBounds(windowHandle);
- }
-
- void FrameBufferDD::initWindowed()
- {
- releaseAll();
-
- DirectDrawCreate(0, &directDraw, 0);
- directDraw->SetCooperativeLevel(windowHandle, DDSCL_NORMAL);
-
- createSurfaces();
-
- updateBounds(windowHandle);
- }
-
- void FrameBufferDD::flip(sw::Surface *source)
- {
- copy(source);
-
- if(!readySurfaces())
- {
- return;
- }
-
- while(true)
- {
- long result;
-
- if(windowed)
- {
- result = frontBuffer->Blt(&bounds, backBuffer, 0, DDBLT_WAIT, 0);
- }
- else
- {
- result = frontBuffer->Flip(0, DDFLIP_NOVSYNC);
- }
-
- if(result != DDERR_WASSTILLDRAWING)
- {
- break;
- }
-
- Sleep(0);
- }
- }
-
- void FrameBufferDD::blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect)
- {
- copy(source);
-
- if(!readySurfaces())
- {
- return;
- }
-
- RECT dRect;
-
- if(destRect)
- {
- dRect.bottom = bounds.top + destRect->y1;
- dRect.left = bounds.left + destRect->x0;
- dRect.right = bounds.left + destRect->x1;
- dRect.top = bounds.top + destRect->y0;
- }
- else
- {
- dRect.bottom = bounds.top + height;
- dRect.left = bounds.left + 0;
- dRect.right = bounds.left + width;
- dRect.top = bounds.top + 0;
- }
-
- while(true)
- {
- long result = frontBuffer->Blt(&dRect, backBuffer, (LPRECT)sourceRect, DDBLT_WAIT, 0);
-
- if(result != DDERR_WASSTILLDRAWING)
- {
- break;
- }
-
- Sleep(0);
- }
- }
-
- void FrameBufferDD::flip(HWND windowOverride, sw::Surface *source)
- {
- updateClipper(windowOverride);
- updateBounds(windowOverride);
-
- flip(source);
- }
-
- void FrameBufferDD::blit(HWND windowOverride, sw::Surface *source, const Rect *sourceRect, const Rect *destRect)
- {
- updateClipper(windowOverride);
- updateBounds(windowOverride);
-
- blit(source, sourceRect, destRect);
- }
-
- void FrameBufferDD::screenshot(void *destBuffer)
- {
- if(!readySurfaces())
- {
- return;
- }
-
- DDSURFACEDESC DDSD;
- DDSD.dwSize = sizeof(DDSD);
-
- long result = frontBuffer->Lock(0, &DDSD, DDLOCK_WAIT, 0);
-
- if(result == DD_OK)
- {
- int width = DDSD.dwWidth;
- int height = DDSD.dwHeight;
- int stride = DDSD.lPitch;
-
- void *sourceBuffer = DDSD.lpSurface;
-
- for(int y = 0; y < height; y++)
- {
- memcpy(destBuffer, sourceBuffer, width * 4); // FIXME: Assumes 32-bit buffer
-
- (char*&)sourceBuffer += stride;
- (char*&)destBuffer += 4 * width;
- }
-
- frontBuffer->Unlock(0);
- }
- }
-
- void FrameBufferDD::setGammaRamp(GammaRamp *gammaRamp, bool calibrate)
- {
- IDirectDrawGammaControl *gammaControl = 0;
-
- if(frontBuffer)
- {
- frontBuffer->QueryInterface(IID_IDirectDrawGammaControl, (void**)&gammaControl);
-
- if(gammaControl)
- {
- gammaControl->SetGammaRamp(calibrate ? DDSGR_CALIBRATE : 0, (DDGAMMARAMP*)gammaRamp);
-
- gammaControl->Release();
- }
- }
- }
-
- void FrameBufferDD::getGammaRamp(GammaRamp *gammaRamp)
- {
- IDirectDrawGammaControl *gammaControl = 0;
-
- if(frontBuffer)
- {
- frontBuffer->QueryInterface(IID_IDirectDrawGammaControl, (void**)&gammaControl);
-
- if(gammaControl)
- {
- gammaControl->GetGammaRamp(0, (DDGAMMARAMP*)gammaRamp);
-
- gammaControl->Release();
- }
- }
- }
-
- void *FrameBufferDD::lock()
- {
- if(framebuffer)
- {
- return framebuffer;
- }
-
- if(!readySurfaces())
- {
- return nullptr;
- }
-
- DDSURFACEDESC DDSD;
- DDSD.dwSize = sizeof(DDSD);
-
- long result = backBuffer->Lock(0, &DDSD, DDLOCK_WAIT, 0);
-
- if(result == DD_OK)
- {
- width = DDSD.dwWidth;
- height = DDSD.dwHeight;
- stride = DDSD.lPitch;
-
- framebuffer = DDSD.lpSurface;
-
- return framebuffer;
- }
-
- return nullptr;
- }
-
- void FrameBufferDD::unlock()
- {
- if(!framebuffer || !backBuffer) return;
-
- backBuffer->Unlock(0);
-
- framebuffer = nullptr;
- }
-
- void FrameBufferDD::drawText(int x, int y, const char *string, ...)
- {
- char buffer[256];
- va_list arglist;
-
- va_start(arglist, string);
- vsprintf(buffer, string, arglist);
- va_end(arglist);
-
- HDC hdc;
-
- backBuffer->GetDC(&hdc);
-
- SetBkColor(hdc, RGB(0, 0, 255));
- SetTextColor(hdc, RGB(255, 255, 255));
-
- TextOut(hdc, x, y, buffer, lstrlen(buffer));
-
- backBuffer->ReleaseDC(hdc);
- }
-
- bool FrameBufferDD::getScanline(bool &inVerticalBlank, unsigned int &scanline)
- {
- HRESULT result = directDraw->GetScanLine((unsigned long*)&scanline);
-
- if(result == DD_OK)
- {
- inVerticalBlank = false;
- }
- else if(result == DDERR_VERTICALBLANKINPROGRESS)
- {
- inVerticalBlank = true;
- }
- else if(result == DDERR_UNSUPPORTED)
- {
- return false;
- }
- else ASSERT(false);
-
- return true;
- }
-
- void FrameBufferDD::releaseAll()
- {
- unlock();
-
- if(backBuffer)
- {
- backBuffer->Release();
- backBuffer = 0;
- }
-
- if(frontBuffer)
- {
- frontBuffer->Release();
- frontBuffer = 0;
- }
-
- if(directDraw)
- {
- directDraw->SetCooperativeLevel(0, DDSCL_NORMAL);
- directDraw->Release();
- directDraw = 0;
- }
- }
-}
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferDD.hpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferDD.hpp
deleted file mode 100644
index 22d76c950f1..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferDD.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef sw_FrameBufferDD_hpp
-#define sw_FrameBufferDD_hpp
-
-#include "FrameBufferWin.hpp"
-
-#include <ddraw.h>
-
-namespace sw
-{
- class FrameBufferDD : public FrameBufferWin
- {
- public:
- FrameBufferDD(HWND windowHandle, int width, int height, bool fullscreen, bool topLeftOrigin);
-
- ~FrameBufferDD() override;
-
- void flip(sw::Surface *source) override;
- void blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect) override;
-
- void flip(HWND windowOverride, sw::Surface *source) override;
- void blit(HWND windowOverride, sw::Surface *source, const Rect *sourceRect, const Rect *destRect) override;
-
- void *lock() override;
- void unlock() override;
-
- void setGammaRamp(GammaRamp *gammaRamp, bool calibrate) override;
- void getGammaRamp(GammaRamp *gammaRamp) override;
-
- void screenshot(void *destBuffer) override;
- bool getScanline(bool &inVerticalBlank, unsigned int &scanline) override;
-
- void drawText(int x, int y, const char *string, ...);
-
- private:
- void initFullscreen();
- void initWindowed();
- void createSurfaces();
- bool readySurfaces();
- void updateClipper(HWND windowOverride);
- void restoreSurfaces();
- void releaseAll();
-
- HMODULE ddraw;
- typedef HRESULT (WINAPI *DIRECTDRAWCREATE)( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );
- HRESULT (WINAPI *DirectDrawCreate)( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );
- typedef HRESULT (WINAPI *DIRECTDRAWENUMERATEEXA)( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
- HRESULT (WINAPI *DirectDrawEnumerateExA)( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
-
- IDirectDraw *directDraw;
- IDirectDrawSurface *frontBuffer;
- IDirectDrawSurface *backBuffer;
- };
-}
-
-#endif // sw_FrameBufferDD_hpp
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferGDI.cpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferGDI.cpp
deleted file mode 100644
index f7c7d079fc0..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferGDI.cpp
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "FrameBufferGDI.hpp"
-
-#include "System/Debug.hpp"
-
-namespace sw
-{
- extern bool forceWindowed;
-
- FrameBufferGDI::FrameBufferGDI(HWND windowHandle, int width, int height, bool fullscreen, bool topLeftOrigin) : FrameBufferWin(windowHandle, width, height, fullscreen, topLeftOrigin)
- {
- if(!windowed)
- {
- SetWindowPos(windowHandle, HWND_TOPMOST, 0, 0, width, height, SWP_SHOWWINDOW);
-
- DEVMODE deviceMode;
- deviceMode.dmSize = sizeof(DEVMODE);
- deviceMode.dmPelsWidth= width;
- deviceMode.dmPelsHeight = height;
- deviceMode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
-
- ChangeDisplaySettings(&deviceMode, CDS_FULLSCREEN);
- }
-
- init(this->windowHandle);
-
- format = VK_FORMAT_B8G8R8A8_UNORM;
- }
-
- FrameBufferGDI::~FrameBufferGDI()
- {
- release();
-
- if(!windowed)
- {
- ChangeDisplaySettings(0, 0);
-
- RECT clientRect;
- RECT windowRect;
- GetClientRect(windowHandle, &clientRect);
- GetWindowRect(windowHandle, &windowRect);
- int windowWidth = width + (windowRect.right - windowRect.left) - (clientRect.right - clientRect.left);
- int windowHeight = height + (windowRect.bottom - windowRect.top) - (clientRect.bottom - clientRect.top);
- int desktopWidth = GetSystemMetrics(SM_CXSCREEN);
- int desktopHeight = GetSystemMetrics(SM_CYSCREEN);
- SetWindowPos(windowHandle, HWND_TOP, desktopWidth / 2 - windowWidth / 2, desktopHeight / 2 - windowHeight / 2, windowWidth, windowHeight, SWP_SHOWWINDOW);
- }
- }
-
- void *FrameBufferGDI::lock()
- {
- stride = width * 4;
-
- return framebuffer;
- }
-
- void FrameBufferGDI::unlock()
- {
- }
-
- void FrameBufferGDI::flip(sw::Surface *source)
- {
- blit(source, nullptr, nullptr);
- }
-
- void FrameBufferGDI::blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect)
- {
- copy(source);
-
- int sourceLeft = sourceRect ? sourceRect->x0 : 0;
- int sourceTop = sourceRect ? sourceRect->y0 : 0;
- int sourceWidth = sourceRect ? sourceRect->x1 - sourceRect->x0 : width;
- int sourceHeight = sourceRect ? sourceRect->y1 - sourceRect->y0 : height;
- int destLeft = destRect ? destRect->x0 : 0;
- int destTop = destRect ? destRect->y0 : 0;
- int destWidth = destRect ? destRect->x1 - destRect->x0 : bounds.right - bounds.left;
- int destHeight = destRect ? destRect->y1 - destRect->y0 : bounds.bottom - bounds.top;
-
- StretchBlt(windowContext, destLeft, destTop, destWidth, destHeight, bitmapContext, sourceLeft, sourceTop, sourceWidth, sourceHeight, SRCCOPY);
- }
-
- void FrameBufferGDI::flip(HWND windowOverride, sw::Surface *source)
- {
- blit(windowOverride, source, nullptr, nullptr);
- }
-
- void FrameBufferGDI::blit(HWND windowOverride, sw::Surface *source, const Rect *sourceRect, const Rect *destRect)
- {
- if(windowed && windowOverride != 0 && windowOverride != bitmapWindow)
- {
- release();
- init(windowOverride);
- }
-
- blit(source, sourceRect, destRect);
- }
-
- void FrameBufferGDI::setGammaRamp(GammaRamp *gammaRamp, bool calibrate)
- {
- SetDeviceGammaRamp(windowContext, gammaRamp);
- }
-
- void FrameBufferGDI::getGammaRamp(GammaRamp *gammaRamp)
- {
- GetDeviceGammaRamp(windowContext, gammaRamp);
- }
-
- void FrameBufferGDI::screenshot(void *destBuffer)
- {
- UNIMPLEMENTED();
- }
-
- bool FrameBufferGDI::getScanline(bool &inVerticalBlank, unsigned int &scanline)
- {
- UNIMPLEMENTED();
-
- return false;
- }
-
- void FrameBufferGDI::init(HWND window)
- {
- bitmapWindow = window;
-
- windowContext = GetDC(window);
- bitmapContext = CreateCompatibleDC(windowContext);
-
- BITMAPINFO bitmapInfo;
- memset(&bitmapInfo, 0, sizeof(BITMAPINFO));
- bitmapInfo.bmiHeader.biSize = sizeof(BITMAPINFO);
- bitmapInfo.bmiHeader.biBitCount = 32;
- bitmapInfo.bmiHeader.biPlanes = 1;
- bitmapInfo.bmiHeader.biHeight = -height;
- bitmapInfo.bmiHeader.biWidth = width;
- bitmapInfo.bmiHeader.biCompression = BI_RGB;
-
- bitmap = CreateDIBSection(bitmapContext, &bitmapInfo, DIB_RGB_COLORS, &framebuffer, 0, 0);
- SelectObject(bitmapContext, bitmap);
-
- updateBounds(window);
- }
-
- void FrameBufferGDI::release()
- {
- SelectObject(bitmapContext, 0);
- DeleteObject(bitmap);
- ReleaseDC(bitmapWindow, windowContext);
- DeleteDC(bitmapContext);
- }
-}
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferGDI.hpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferGDI.hpp
deleted file mode 100644
index add25045a9c..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferGDI.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef sw_FrameBufferGDI_hpp
-#define sw_FrameBufferGDI_hpp
-
-#include "FrameBufferWin.hpp"
-
-namespace sw
-{
- class FrameBufferGDI : public FrameBufferWin
- {
- public:
- FrameBufferGDI(HWND windowHandle, int width, int height, bool fullscreen, bool topLeftOrigin);
-
- ~FrameBufferGDI() override;
-
- void flip(sw::Surface *source) override;
- void blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect) override;
-
- void flip(HWND windowOverride, sw::Surface *source) override;
- void blit(HWND windowOverride, sw::Surface *source, const Rect *sourceRect, const Rect *destRect) override;
-
- void *lock() override;
- void unlock() override;
-
- void setGammaRamp(GammaRamp *gammaRamp, bool calibrate) override;
- void getGammaRamp(GammaRamp *gammaRamp) override;
-
- void screenshot(void *destBuffer) override;
- bool getScanline(bool &inVerticalBlank, unsigned int &scanline) override;
-
- private:
- void init(HWND bitmapWindow);
- void release();
-
- HDC windowContext;
- HDC bitmapContext;
- HWND bitmapWindow;
-
- HBITMAP bitmap;
- };
-}
-
-#endif // sw_FrameBufferGDI_hpp
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferOSX.hpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferOSX.hpp
deleted file mode 100644
index 85a2621da7f..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferOSX.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef sw_FrameBufferOSX_hpp
-#define sw_FrameBufferOSX_hpp
-
-#include "WSI/FrameBuffer.hpp"
-
-#import <Cocoa/Cocoa.h>
-
-@class CALayer;
-
-namespace sw
-{
- class FrameBufferOSX : public FrameBuffer
- {
- public:
- FrameBufferOSX(CALayer *layer, int width, int height);
- ~FrameBufferOSX() override;
-
- void flip(sw::Surface *source) override;
- void blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect) override;
-
- void *lock() override;
- void unlock() override;
-
- private:
- int width;
- int height;
- CALayer *layer;
- uint8_t *buffer;
- CGDataProviderRef provider;
- CGColorSpaceRef colorspace;
- CGImageRef currentImage;
- };
-}
-
-#endif // sw_FrameBufferOSX
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferOSX.mm b/chromium/third_party/swiftshader/src/WSI/FrameBufferOSX.mm
deleted file mode 100644
index 0403a545fd4..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferOSX.mm
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "FrameBufferOSX.hpp"
-
-#include "System/Debug.hpp"
-
-#include <EGL/egl.h>
-#import <QuartzCore/QuartzCore.h>
-
-namespace sw {
-
- FrameBufferOSX::FrameBufferOSX(CALayer* layer, int width, int height)
- : FrameBuffer(width, height, false, false), width(width), height(height),
- layer(layer), buffer(nullptr), provider(nullptr), currentImage(nullptr)
- {
- format = sw::FORMAT_X8B8G8R8;
- int bufferSize = width * height * 4 * sizeof(uint8_t);
- buffer = new uint8_t[bufferSize];
- provider = CGDataProviderCreateWithData(nullptr, buffer, bufferSize, nullptr);
- colorspace = CGColorSpaceCreateDeviceRGB();
- }
-
- FrameBufferOSX::~FrameBufferOSX()
- {
- //[CATransaction begin];
- //[layer setContents:nullptr];
- //[CATransaction commit];
-
- CGImageRelease(currentImage);
- CGColorSpaceRelease(colorspace);
- CGDataProviderRelease(provider);
-
- delete[] buffer;
- }
-
- void FrameBufferOSX::flip(sw::Surface *source)
- {
- blit(source, nullptr, nullptr);
- }
-
- void FrameBufferOSX::blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect)
- {
- copy(source);
-
- int bytesPerRow = width * 4 * sizeof(uint8_t);
- CGImageRef image = CGImageCreate(width, height, 8, 32, bytesPerRow, colorspace, kCGBitmapByteOrder32Big, provider, nullptr, false, kCGRenderingIntentDefault);
-
- [CATransaction begin];
- [layer setContents:(id)image];
- [CATransaction commit];
- [CATransaction flush];
-
- if(currentImage)
- {
- CGImageRelease(currentImage);
- }
- currentImage = image;
- }
-
- void *FrameBufferOSX::lock()
- {
- stride = width * 4 * sizeof(uint8_t);
- framebuffer = buffer;
- return framebuffer;
- };
-
- void FrameBufferOSX::unlock()
- {
- framebuffer = nullptr;
- };
-}
-
-sw::FrameBuffer *createFrameBuffer(void *display, EGLNativeWindowType nativeWindow, int width, int height)
-{
- NSObject *window = reinterpret_cast<NSObject*>(nativeWindow);
- CALayer *layer = nullptr;
-
- if([window isKindOfClass:[NSView class]])
- {
- NSView *view = reinterpret_cast<NSView*>(window);
- [view setWantsLayer:YES];
- layer = [view layer];
- }
- else if([window isKindOfClass:[CALayer class]])
- {
- layer = reinterpret_cast<CALayer*>(window);
- }
- else ASSERT(0);
-
- return new sw::FrameBufferOSX(layer, width, height);
-}
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferOzone.cpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferOzone.cpp
deleted file mode 100644
index 95e0729b925..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferOzone.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2017 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "FrameBufferOzone.hpp"
-
-namespace sw
-{
- FrameBufferOzone::FrameBufferOzone(intptr_t display, intptr_t window, int width, int height) : FrameBuffer(width, height, false, false)
- {
- buffer = sw::Surface::create(width, height, 1, format, nullptr,
- sw::Surface::pitchB(width, 0, format, true),
- sw::Surface::sliceB(width, height, 0, format, true));
- }
-
- FrameBufferOzone::~FrameBufferOzone()
- {
- delete buffer;
- }
-
- void *FrameBufferOzone::lock()
- {
- framebuffer = buffer->lockInternal(0, 0, 0, sw::LOCK_READWRITE, sw::PUBLIC);
-
- return framebuffer;
- }
-
- void FrameBufferOzone::unlock()
- {
- buffer->unlockInternal();
-
- framebuffer = nullptr;
- }
-
- void FrameBufferOzone::blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect)
- {
- copy(source);
- }
-}
-
-NO_SANITIZE_FUNCTION sw::FrameBuffer *createFrameBuffer(void* display, intptr_t window, int width, int height)
-{
- return new sw::FrameBufferOzone((intptr_t)display, window, width, height);
-}
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferOzone.hpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferOzone.hpp
deleted file mode 100644
index 1f253fa5377..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferOzone.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2017 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef sw_FrameBufferOzone_hpp
-#define sw_FrameBufferOzone_hpp
-
-#include "WSI/FrameBuffer.hpp"
-
-namespace sw
-{
- class FrameBufferOzone : public FrameBuffer
- {
- public:
- FrameBufferOzone(intptr_t display, intptr_t window, int width, int height);
-
- ~FrameBufferOzone() override;
-
- void flip(sw::Surface *source) override {blit(source, nullptr, nullptr);};
- void blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect) override;
-
- void *lock() override;
- void unlock() override;
-
- private:
- sw::Surface* buffer;
- };
-}
-
-#endif // sw_FrameBufferOzone_hpp
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferWin.cpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferWin.cpp
deleted file mode 100644
index e23487a2f5b..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferWin.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "FrameBufferWin.hpp"
-
-namespace sw
-{
- FrameBufferWin::FrameBufferWin(HWND windowHandle, int width, int height, bool fullscreen, bool topLeftOrigin) : FrameBuffer(width, height, fullscreen, topLeftOrigin), windowHandle(windowHandle)
- {
- if(!windowed)
- {
- // Force fullscreen window style (no borders)
- originalWindowStyle = GetWindowLong(windowHandle, GWL_STYLE);
- SetWindowLong(windowHandle, GWL_STYLE, WS_POPUP);
- }
- }
-
- FrameBufferWin::~FrameBufferWin()
- {
- if(!windowed && GetWindowLong(windowHandle, GWL_STYLE) == WS_POPUP)
- {
- SetWindowLong(windowHandle, GWL_STYLE, originalWindowStyle);
- }
- }
-
- void FrameBufferWin::updateBounds(HWND windowOverride)
- {
- HWND window = windowOverride ? windowOverride : windowHandle;
-
- if(windowed)
- {
- GetClientRect(window, &bounds);
- ClientToScreen(window, (POINT*)&bounds);
- ClientToScreen(window, (POINT*)&bounds + 1);
- }
- else
- {
- SetRect(&bounds, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));
- }
- }
-}
-
-#include "FrameBufferDD.hpp"
-#include "FrameBufferGDI.hpp"
-#include "System/Configurator.hpp"
-
-sw::FrameBufferWin *createFrameBufferWin(HWND windowHandle, int width, int height, bool fullscreen, bool topLeftOrigin)
-{
- sw::Configurator ini("SwiftShader.ini");
- int api = ini.getInteger("Testing", "FrameBufferAPI", 0);
-
- if(api == 0 && topLeftOrigin)
- {
- return new sw::FrameBufferDD(windowHandle, width, height, fullscreen, topLeftOrigin);
- }
- else
- {
- return new sw::FrameBufferGDI(windowHandle, width, height, fullscreen, topLeftOrigin);
- }
-
- return 0;
-}
-
-sw::FrameBuffer *createFrameBuffer(void *display, HWND window, int width, int height)
-{
- return createFrameBufferWin(window, width, height, false, false);
-}
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferWin.hpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferWin.hpp
deleted file mode 100644
index 15c1e0e5456..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferWin.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef sw_FrameBufferWin_hpp
-#define sw_FrameBufferWin_hpp
-
-#include "FrameBuffer.hpp"
-
-namespace sw
-{
- struct GammaRamp
- {
- short red[256];
- short green[256];
- short blue[256];
- };
-
- class FrameBufferWin : public FrameBuffer
- {
- public:
- FrameBufferWin(HWND windowHandle, int width, int height, bool fullscreen, bool topLeftOrigin);
-
- ~FrameBufferWin() override;
-
- void flip(sw::Surface *source) override = 0;
- void blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect) override = 0;
-
- virtual void flip(HWND windowOverride, sw::Surface *source) = 0;
- virtual void blit(HWND windowOverride, sw::Surface *source, const Rect *sourceRect, const Rect *destRect) = 0;
-
- virtual void setGammaRamp(GammaRamp *gammaRamp, bool calibrate) = 0;
- virtual void getGammaRamp(GammaRamp *gammaRamp) = 0;
-
- virtual void screenshot(void *destBuffer) = 0;
- virtual bool getScanline(bool &inVerticalBlank, unsigned int &scanline) = 0;
-
- protected:
- void updateBounds(HWND windowOverride);
-
- HWND windowHandle;
- DWORD originalWindowStyle;
- RECT bounds;
- };
-}
-
-sw::FrameBufferWin *createFrameBufferWin(HWND windowHandle, int width, int height, bool fullscreen, bool topLeftOrigin);
-
-#endif // sw_FrameBufferWin_hpp
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferX11.cpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferX11.cpp
deleted file mode 100644
index aa9f38ea18a..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferX11.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "FrameBufferX11.hpp"
-
-#include "libX11.hpp"
-#include "System/Timer.hpp"
-
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#include <string.h>
-#include <assert.h>
-#include <stdlib.h>
-
-namespace sw
-{
- static int (*PreviousXErrorHandler)(Display *display, XErrorEvent *event) = 0;
- static bool shmBadAccess = false;
-
- // Catches BadAcces errors so we can fall back to not using MIT-SHM
- static int XShmErrorHandler(Display *display, XErrorEvent *event)
- {
- if(event->error_code == BadAccess)
- {
- shmBadAccess = true;
- return 0;
- }
- else
- {
- return PreviousXErrorHandler(display, event);
- }
- }
-
- FrameBufferX11::FrameBufferX11(Display *display, Window window, int width, int height) : FrameBuffer(width, height, false, false), ownX11(!display), x_display(display), x_window(window)
- {
- if(!x_display)
- {
- x_display = libX11->XOpenDisplay(0);
- assert(x_display);
- }
-
- int screen = DefaultScreen(x_display);
- x_gc = libX11->XDefaultGC(x_display, screen);
- int depth = libX11->XDefaultDepth(x_display, screen);
-
- XVisualInfo x_visual;
- Status status = libX11->XMatchVisualInfo(x_display, screen, 32, TrueColor, &x_visual);
- bool match = (status != 0 && x_visual.blue_mask == 0xFF); // Prefer X8R8G8B8
- Visual *visual = match ? x_visual.visual : libX11->XDefaultVisual(x_display, screen);
-
- mit_shm = (libX11->XShmQueryExtension && libX11->XShmQueryExtension(x_display) == True);
-
- if(mit_shm)
- {
- x_image = libX11->XShmCreateImage(x_display, visual, depth, ZPixmap, 0, &shminfo, width, height);
-
- shminfo.shmid = shmget(IPC_PRIVATE, x_image->bytes_per_line * x_image->height, IPC_CREAT | SHM_R | SHM_W);
- shminfo.shmaddr = x_image->data = (char*)shmat(shminfo.shmid, 0, 0);
- shminfo.readOnly = False;
-
- PreviousXErrorHandler = libX11->XSetErrorHandler(XShmErrorHandler);
- libX11->XShmAttach(x_display, &shminfo); // May produce a BadAccess error
- libX11->XSync(x_display, False);
- libX11->XSetErrorHandler(PreviousXErrorHandler);
-
- if(shmBadAccess)
- {
- mit_shm = false;
-
- XDestroyImage(x_image);
- shmdt(shminfo.shmaddr);
- shmctl(shminfo.shmid, IPC_RMID, 0);
-
- shmBadAccess = false;
- }
- }
-
- if(!mit_shm)
- {
- int bytes_per_line = width * 4;
- int bytes_per_image = height * bytes_per_line;
- char *buffer = (char*)malloc(bytes_per_image);
- memset(buffer, 0, bytes_per_image);
-
- x_image = libX11->XCreateImage(x_display, visual, depth, ZPixmap, 0, buffer, width, height, 32, bytes_per_line);
- assert(x_image);
-
- if(!x_image)
- {
- free(buffer);
- }
- }
- }
-
- FrameBufferX11::~FrameBufferX11()
- {
- if(!mit_shm)
- {
- XDestroyImage(x_image);
- }
- else
- {
- libX11->XShmDetach(x_display, &shminfo);
- XDestroyImage(x_image);
- shmdt(shminfo.shmaddr);
- shmctl(shminfo.shmid, IPC_RMID, 0);
- }
-
- if(ownX11)
- {
- libX11->XCloseDisplay(x_display);
- }
- }
-
- void *FrameBufferX11::lock()
- {
- if(x_image)
- {
- stride = x_image->bytes_per_line;
- framebuffer = x_image->data;
- }
-
- return framebuffer;
- }
-
- void FrameBufferX11::unlock()
- {
- framebuffer = nullptr;
- }
-
- void FrameBufferX11::blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect)
- {
- copy(source);
-
- if(!mit_shm)
- {
- libX11->XPutImage(x_display, x_window, x_gc, x_image, 0, 0, 0, 0, width, height);
- }
- else
- {
- libX11->XShmPutImage(x_display, x_window, x_gc, x_image, 0, 0, 0, 0, width, height, False);
- }
-
- libX11->XSync(x_display, False);
-
- if(false) // Draw the framerate on screen
- {
- static double fpsTime = sw::Timer::seconds();
- static int frames = -1;
-
- double time = sw::Timer::seconds();
- double delta = time - fpsTime;
- frames++;
-
- static double FPS = 0.0;
- static double maxFPS = 0.0;
-
- if(delta > 1.0)
- {
- FPS = frames / delta;
-
- fpsTime = time;
- frames = 0;
-
- if(FPS > maxFPS)
- {
- maxFPS = FPS;
- }
- }
-
- char string[256];
- sprintf(string, "FPS: %.2f (max: %.2f)", FPS, maxFPS);
- libX11->XDrawString(x_display, x_window, x_gc, 50, 50, string, strlen(string));
- }
- }
-}
-
-NO_SANITIZE_FUNCTION sw::FrameBuffer *createFrameBuffer(void *display, Window window, int width, int height)
-{
- return new sw::FrameBufferX11((::Display*)display, window, width, height);
-}
diff --git a/chromium/third_party/swiftshader/src/WSI/FrameBufferX11.hpp b/chromium/third_party/swiftshader/src/WSI/FrameBufferX11.hpp
deleted file mode 100644
index d40bed948c5..00000000000
--- a/chromium/third_party/swiftshader/src/WSI/FrameBufferX11.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef sw_FrameBufferX11_hpp
-#define sw_FrameBufferX11_hpp
-
-#include "WSI/FrameBuffer.hpp"
-#include "System/Debug.hpp"
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/extensions/XShm.h>
-
-namespace sw
-{
- class FrameBufferX11 : public FrameBuffer
- {
- public:
- FrameBufferX11(Display *display, Window window, int width, int height);
-
- ~FrameBufferX11() override;
-
- void flip(sw::Surface *source) override { blit(source, nullptr, nullptr); }
- void blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect) override;
-
- void *lock() override;
- void unlock() override;
-
- private:
- const bool ownX11;
- Display *x_display;
- const Window x_window;
- XImage *x_image = nullptr;
- GC x_gc;
-
- bool mit_shm;
- XShmSegmentInfo shminfo;
- };
-}
-
-#endif // sw_FrameBufferX11_hpp
diff --git a/chromium/third_party/swiftshader/src/WSI/VkSurfaceKHR.cpp b/chromium/third_party/swiftshader/src/WSI/VkSurfaceKHR.cpp
index 0fd34683277..ba121b7ea75 100644
--- a/chromium/third_party/swiftshader/src/WSI/VkSurfaceKHR.cpp
+++ b/chromium/third_party/swiftshader/src/WSI/VkSurfaceKHR.cpp
@@ -34,7 +34,7 @@ void SurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabi
uint32_t SurfaceKHR::getSurfaceFormatsCount() const
{
- return surfaceFormats.size();
+ return static_cast<uint32_t>(surfaceFormats.size());
}
VkResult SurfaceKHR::getSurfaceFormats(uint32_t *pSurfaceFormatCount, VkSurfaceFormatKHR *pSurfaceFormats) const
@@ -83,6 +83,19 @@ VkResult SurfaceKHR::getPresentModes(uint32_t *pPresentModeCount, VkPresentModeK
return VK_SUCCESS;
}
+void SurfaceKHR::associateSwapchain(VkSwapchainKHR swapchain)
+{
+ associatedSwapchain = swapchain;
+}
+void SurfaceKHR::disassociateSwapchain()
+{
+ associatedSwapchain = VK_NULL_HANDLE;
+}
+
+VkSwapchainKHR SurfaceKHR::getAssociatedSwapchain()
+{
+ return associatedSwapchain;
+}
} \ No newline at end of file
diff --git a/chromium/third_party/swiftshader/src/WSI/VkSurfaceKHR.hpp b/chromium/third_party/swiftshader/src/WSI/VkSurfaceKHR.hpp
index 47340976f3b..c7c6752fc44 100644
--- a/chromium/third_party/swiftshader/src/WSI/VkSurfaceKHR.hpp
+++ b/chromium/third_party/swiftshader/src/WSI/VkSurfaceKHR.hpp
@@ -22,6 +22,21 @@
namespace vk
{
+enum PresentImageStatus
+{
+ NONEXISTENT, // Image wasn't made
+ AVAILABLE,
+ DRAWING,
+ PRESENTING,
+};
+
+struct PresentImage
+{
+ VkImage image;
+ VkDeviceMemory imageMemory;
+ PresentImageStatus imageStatus;
+};
+
class SurfaceKHR
{
public:
@@ -45,7 +60,18 @@ public:
uint32_t getPresentModeCount() const;
VkResult getPresentModes(uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) const;
+ virtual void attachImage(PresentImage* image) = 0;
+ virtual void detachImage(PresentImage* image) = 0;
+ virtual void present(PresentImage* image) = 0;
+
+ void associateSwapchain(VkSwapchainKHR swapchain);
+ void disassociateSwapchain();
+ VkSwapchainKHR getAssociatedSwapchain();
+
+
private:
+ VkSwapchainKHR associatedSwapchain;
+
const std::vector<VkSurfaceFormatKHR> surfaceFormats =
{
{VK_FORMAT_B8G8R8A8_UNORM, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR},
diff --git a/chromium/third_party/swiftshader/src/WSI/VkSwapchainKHR.cpp b/chromium/third_party/swiftshader/src/WSI/VkSwapchainKHR.cpp
index c825f72e4d6..59639356b92 100644
--- a/chromium/third_party/swiftshader/src/WSI/VkSwapchainKHR.cpp
+++ b/chromium/third_party/swiftshader/src/WSI/VkSwapchainKHR.cpp
@@ -24,7 +24,8 @@ namespace vk
{
SwapchainKHR::SwapchainKHR(const VkSwapchainCreateInfoKHR *pCreateInfo, void *mem) :
- createInfo(*pCreateInfo)
+ createInfo(*pCreateInfo),
+ retired(false)
{
images.resize(pCreateInfo->minImageCount);
resetImages();
@@ -36,12 +37,18 @@ void SwapchainKHR::destroy(const VkAllocationCallbacks *pAllocator)
{
if (currentImage.imageStatus != NONEXISTENT)
{
+ vk::Cast(createInfo.surface)->detachImage(&currentImage);
vk::destroy(currentImage.imageMemory, pAllocator);
vk::destroy(currentImage.image, pAllocator);
currentImage.imageStatus = NONEXISTENT;
}
}
+
+ if(!retired)
+ {
+ vk::Cast(createInfo.surface)->disassociateSwapchain();
+ }
}
size_t SwapchainKHR::ComputeRequiredAllocationSize(const VkSwapchainCreateInfoKHR *pCreateInfo)
@@ -49,6 +56,27 @@ size_t SwapchainKHR::ComputeRequiredAllocationSize(const VkSwapchainCreateInfoKH
return 0;
}
+void SwapchainKHR::retire()
+{
+ if(!retired)
+ {
+ retired = true;
+ vk::Cast(createInfo.surface)->disassociateSwapchain();
+
+ for(auto& currentImage : images)
+ {
+ if(currentImage.imageStatus == AVAILABLE)
+ {
+ vk::Cast(createInfo.surface)->detachImage(&currentImage);
+ vk::destroy(currentImage.imageMemory, nullptr);
+ vk::destroy(currentImage.image, nullptr);
+
+ currentImage.imageStatus = NONEXISTENT;
+ }
+ }
+ }
+}
+
void SwapchainKHR::resetImages()
{
for(auto& currentImage : images)
@@ -116,6 +144,8 @@ VkResult SwapchainKHR::createImages(VkDevice device)
vkBindImageMemory(device, currentImage.image, currentImage.imageMemory, 0);
currentImage.imageStatus = AVAILABLE;
+
+ vk::Cast(createInfo.surface)->attachImage(&currentImage);
}
return VK_SUCCESS;
@@ -146,4 +176,48 @@ VkResult SwapchainKHR::getImages(uint32_t *pSwapchainImageCount, VkImage *pSwapc
return VK_SUCCESS;
}
+VkResult SwapchainKHR::getNextImage(uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t *pImageIndex)
+{
+ for(uint32_t i = 0; i < getImageCount(); i++)
+ {
+ PresentImage& currentImage = images[i];
+ if(currentImage.imageStatus == AVAILABLE)
+ {
+ currentImage.imageStatus = DRAWING;
+ *pImageIndex = i;
+
+ if(semaphore)
+ {
+ vk::Cast(semaphore)->signal();
+ }
+
+ if(fence)
+ {
+ vk::Cast(fence)->signal();
+ }
+
+ return VK_SUCCESS;
+ }
+ }
+
+ return VK_NOT_READY;
+}
+
+void SwapchainKHR::present(uint32_t index)
+{
+ auto & image = images[index];
+ image.imageStatus = PRESENTING;
+ vk::Cast(createInfo.surface)->present(&image);
+ image.imageStatus = AVAILABLE;
+
+ if(retired)
+ {
+ vk::Cast(createInfo.surface)->detachImage(&image);
+ vk::destroy(image.imageMemory, nullptr);
+ vk::destroy(image.image, nullptr);
+
+ image.imageStatus = NONEXISTENT;
+ }
+}
+
} \ No newline at end of file
diff --git a/chromium/third_party/swiftshader/src/WSI/VkSwapchainKHR.hpp b/chromium/third_party/swiftshader/src/WSI/VkSwapchainKHR.hpp
index 5be25844269..3924992db67 100644
--- a/chromium/third_party/swiftshader/src/WSI/VkSwapchainKHR.hpp
+++ b/chromium/third_party/swiftshader/src/WSI/VkSwapchainKHR.hpp
@@ -18,27 +18,13 @@
#include "Vulkan/VkObject.hpp"
#include "Vulkan/VkImage.hpp"
+#include "VkSurfaceKHR.hpp"
#include <vector>
namespace vk
{
-enum PresentImageStatus
-{
- NONEXISTENT, // Image wasn't made
- AVAILABLE,
- DRAWING,
- PRESENTING,
-};
-
-struct PresentImage
-{
- VkImage image;
- VkDeviceMemory imageMemory;
- PresentImageStatus imageStatus;
-};
-
class SwapchainKHR : public Object<SwapchainKHR, VkSwapchainKHR>
{
public:
@@ -49,14 +35,21 @@ public:
static size_t ComputeRequiredAllocationSize(const VkSwapchainCreateInfoKHR* pCreateInfo);
+ void retire();
+
VkResult createImages(VkDevice device);
uint32_t getImageCount() const;
VkResult getImages(uint32_t *pSwapchainImageCount, VkImage *pSwapchainImages) const;
+ VkResult getNextImage(uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
+
+ void present(uint32_t index);
+
private:
VkSwapchainCreateInfoKHR createInfo;
std::vector<PresentImage> images;
+ bool retired;
void resetImages();
};
diff --git a/chromium/third_party/swiftshader/src/WSI/XlibSurfaceKHR.cpp b/chromium/third_party/swiftshader/src/WSI/XlibSurfaceKHR.cpp
index 9dd7575881e..3bf3022b594 100644
--- a/chromium/third_party/swiftshader/src/WSI/XlibSurfaceKHR.cpp
+++ b/chromium/third_party/swiftshader/src/WSI/XlibSurfaceKHR.cpp
@@ -11,23 +11,37 @@
#include "XlibSurfaceKHR.hpp"
+#include "Vulkan/VkDeviceMemory.hpp"
+
+#include <string.h>
+
namespace vk {
XlibSurfaceKHR::XlibSurfaceKHR(const VkXlibSurfaceCreateInfoKHR *pCreateInfo, void *mem) :
pDisplay(pCreateInfo->dpy),
- window(pCreateInfo->window) {
+ window(pCreateInfo->window)
+{
+ int screen = DefaultScreen(pDisplay);
+ gc = libX11->XDefaultGC(pDisplay, screen);
+ XVisualInfo xVisual;
+ Status status = libX11->XMatchVisualInfo(pDisplay, screen, 32, TrueColor, &xVisual);
+ bool match = (status != 0 && xVisual.blue_mask ==0xFF);
+ visual = match ? xVisual.visual : libX11->XDefaultVisual(pDisplay, screen);
}
-void XlibSurfaceKHR::destroySurface(const VkAllocationCallbacks *pAllocator) {
+void XlibSurfaceKHR::destroySurface(const VkAllocationCallbacks *pAllocator)
+{
}
-size_t XlibSurfaceKHR::ComputeRequiredAllocationSize(const VkXlibSurfaceCreateInfoKHR *pCreateInfo) {
+size_t XlibSurfaceKHR::ComputeRequiredAllocationSize(const VkXlibSurfaceCreateInfoKHR *pCreateInfo)
+{
return 0;
}
-void XlibSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const {
+void XlibSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const
+{
SurfaceKHR::getSurfaceCapabilities(pSurfaceCapabilities);
XWindowAttributes attr;
@@ -39,4 +53,46 @@ void XlibSurfaceKHR::getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCa
pSurfaceCapabilities->maxImageExtent = extent;
}
+void XlibSurfaceKHR::attachImage(PresentImage* image)
+{
+ XWindowAttributes attr;
+ libX11->XGetWindowAttributes(pDisplay, window, &attr);
+
+ VkExtent3D extent = vk::Cast(image->image)->getMipLevelExtent(0);
+
+ int bytes_per_line = vk::Cast(image->image)->rowPitchBytes(VK_IMAGE_ASPECT_COLOR_BIT, 0);
+ char* buffer = static_cast<char*>(vk::Cast(image->imageMemory)->getOffsetPointer(0));
+
+ XImage* xImage = libX11->XCreateImage(pDisplay, visual, attr.depth, ZPixmap, 0, buffer, extent.width, extent.height, 32, bytes_per_line);
+
+ imageMap[image] = xImage;
+}
+
+void XlibSurfaceKHR::detachImage(PresentImage* image)
+{
+ auto it = imageMap.find(image);
+ if(it != imageMap.end())
+ {
+ XImage* xImage = it->second;
+ xImage->data = nullptr; // the XImage does not actually own the buffer
+ XDestroyImage(xImage);
+ imageMap.erase(image);
+ }
+}
+
+void XlibSurfaceKHR::present(PresentImage* image)
+{
+ auto it = imageMap.find(image);
+ if(it != imageMap.end())
+ {
+ XImage* xImage = it->second;
+
+ if(xImage->data)
+ {
+ VkExtent3D extent = vk::Cast(image->image)->getMipLevelExtent(0);
+ libX11->XPutImage(pDisplay, window, gc, xImage, 0, 0, 0, 0, extent.width, extent.height);
+ }
+ }
+}
+
} \ No newline at end of file
diff --git a/chromium/third_party/swiftshader/src/WSI/XlibSurfaceKHR.hpp b/chromium/third_party/swiftshader/src/WSI/XlibSurfaceKHR.hpp
index 56540fe4955..bafd9732821 100644
--- a/chromium/third_party/swiftshader/src/WSI/XlibSurfaceKHR.hpp
+++ b/chromium/third_party/swiftshader/src/WSI/XlibSurfaceKHR.hpp
@@ -16,9 +16,12 @@
#define SWIFTSHADER_XLIBSURFACEKHR_HPP
#include "Vulkan/VkObject.hpp"
+#include "Vulkan/VkImage.hpp"
#include "libX11.hpp"
#include "VkSurfaceKHR.hpp"
+#include <map>
+
namespace vk {
class XlibSurfaceKHR : public SurfaceKHR, public ObjectBase<XlibSurfaceKHR, VkSurfaceKHR> {
@@ -33,10 +36,16 @@ public:
void getSurfaceCapabilities(VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) const override;
+ virtual void attachImage(PresentImage* image) override;
+ virtual void detachImage(PresentImage* image) override;
+ void present(PresentImage* image) override;
+
private:
Display *pDisplay;
Window window;
-
+ GC gc;
+ Visual *visual = nullptr;
+ std::map<PresentImage*, XImage*> imageMap;
};
}
diff --git a/chromium/third_party/swiftshader/src/WSI/libX11.hpp b/chromium/third_party/swiftshader/src/WSI/libX11.hpp
index c18838669fa..b923d3d39ba 100644
--- a/chromium/third_party/swiftshader/src/WSI/libX11.hpp
+++ b/chromium/third_party/swiftshader/src/WSI/libX11.hpp
@@ -48,7 +48,7 @@ struct LibX11exports
int (*XShmPutImage)(Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height, bool send_event);
};
-#undef Bool
+#undef Bool // b/127920555
class LibX11
{
diff --git a/chromium/third_party/swiftshader/third_party/LLVM/Android.bp b/chromium/third_party/swiftshader/third_party/LLVM/Android.bp
deleted file mode 100644
index a5be4ab11d5..00000000000
--- a/chromium/third_party/swiftshader/third_party/LLVM/Android.bp
+++ /dev/null
@@ -1,455 +0,0 @@
-//
-// Copyright (C) 2018 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-// No ARM, MIPS support because there are no generated files checked in
-// for these architectures.
-
-libLLVM_swiftshader_x86_srcs = [
- "lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp",
- "lib/Target/X86/InstPrinter/X86InstComments.cpp",
- "lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp",
- "lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp",
- "lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp",
- "lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp",
- "lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp",
- "lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp",
- "lib/Target/X86/TargetInfo/X86TargetInfo.cpp",
- "lib/Target/X86/Utils/X86ShuffleDecode.cpp",
- "lib/Target/X86/X86CodeEmitter.cpp",
- "lib/Target/X86/X86ELFWriterInfo.cpp",
- "lib/Target/X86/X86FastISel.cpp",
- "lib/Target/X86/X86FloatingPoint.cpp",
- "lib/Target/X86/X86FrameLowering.cpp",
- "lib/Target/X86/X86InstrInfo.cpp",
- "lib/Target/X86/X86ISelDAGToDAG.cpp",
- "lib/Target/X86/X86ISelLowering.cpp",
- "lib/Target/X86/X86JITInfo.cpp",
- "lib/Target/X86/X86RegisterInfo.cpp",
- "lib/Target/X86/X86SelectionDAGInfo.cpp",
- "lib/Target/X86/X86Subtarget.cpp",
- "lib/Target/X86/X86TargetMachine.cpp",
- "lib/Target/X86/X86TargetObjectFile.cpp",
- "lib/Target/X86/X86VZeroUpper.cpp",
-]
-
-cc_library_static {
- name: "libLLVM_swiftshader",
-
- defaults: [ "swiftshader_common_release" ],
-
- device_supported: false,
- host_supported: true,
-
- cflags: [
- "-D_GNU_SOURCE",
- "-D__STDC_LIMIT_MACROS",
- "-D__STDC_CONSTANT_MACROS",
- "-D__STDC_FORMAT_MACROS",
- "-DLOG_TAG=\"libLLVM_swiftshader\"",
- "-Wno-implicit-fallthrough",
- "-Wno-unused-result",
- "-Wno-unused-function",
- "-Wno-unused-variable",
- "-Wno-unused-parameter",
- "-Wno-unused-local-typedef",
- "-Wno-unused-private-field",
- "-Wno-unneeded-internal-declaration",
- ],
-
- cppflags: [
- "-Wno-sign-promo",
- "-Wno-undefined-var-template",
- ],
-
- srcs: [
- "lib/Analysis/AliasAnalysis.cpp",
- "lib/Analysis/AliasSetTracker.cpp",
- "lib/Analysis/BasicAliasAnalysis.cpp",
- "lib/Analysis/BranchProbabilityInfo.cpp",
- "lib/Analysis/CaptureTracking.cpp",
- "lib/Analysis/ConstantFolding.cpp",
- "lib/Analysis/DebugInfo.cpp",
- "lib/Analysis/DIBuilder.cpp",
- "lib/Analysis/InstructionSimplify.cpp",
- "lib/Analysis/IVUsers.cpp",
- "lib/Analysis/Loads.cpp",
- "lib/Analysis/LoopInfo.cpp",
- "lib/Analysis/LoopPass.cpp",
- "lib/Analysis/MemoryBuiltins.cpp",
- "lib/Analysis/MemoryDependenceAnalysis.cpp",
- "lib/Analysis/NoAliasAnalysis.cpp",
- "lib/Analysis/PathNumbering.cpp",
- "lib/Analysis/PHITransAddr.cpp",
- "lib/Analysis/ProfileInfo.cpp",
- "lib/Analysis/ScalarEvolution.cpp",
- "lib/Analysis/ScalarEvolutionExpander.cpp",
- "lib/Analysis/ScalarEvolutionNormalization.cpp",
- "lib/Analysis/TypeBasedAliasAnalysis.cpp",
- "lib/Analysis/ValueTracking.cpp",
- "lib/CodeGen/SelectionDAG/DAGCombiner.cpp",
- "lib/CodeGen/SelectionDAG/FastISel.cpp",
- "lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp",
- "lib/CodeGen/SelectionDAG/InstrEmitter.cpp",
- "lib/CodeGen/SelectionDAG/LegalizeDAG.cpp",
- "lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp",
- "lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp",
- "lib/CodeGen/SelectionDAG/LegalizeTypes.cpp",
- "lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp",
- "lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp",
- "lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp",
- "lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp",
- "lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp",
- "lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp",
- "lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp",
- "lib/CodeGen/SelectionDAG/SelectionDAG.cpp",
- "lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp",
- "lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp",
- "lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp",
- "lib/CodeGen/SelectionDAG/TargetLowering.cpp",
- "lib/CodeGen/SelectionDAG/TargetSelectionDAGInfo.cpp",
- "lib/CodeGen/AggressiveAntiDepBreaker.cpp",
- "lib/CodeGen/AllocationOrder.cpp",
- "lib/CodeGen/Analysis.cpp",
- "lib/CodeGen/BranchFolding.cpp",
- "lib/CodeGen/CalcSpillWeights.cpp",
- "lib/CodeGen/CallingConvLower.cpp",
- "lib/CodeGen/CodeGen.cpp",
- "lib/CodeGen/CodePlacementOpt.cpp",
- "lib/CodeGen/CriticalAntiDepBreaker.cpp",
- "lib/CodeGen/DeadMachineInstructionElim.cpp",
- "lib/CodeGen/DwarfEHPrepare.cpp",
- "lib/CodeGen/EdgeBundles.cpp",
- "lib/CodeGen/ELFCodeEmitter.cpp",
- "lib/CodeGen/ELFWriter.cpp",
- "lib/CodeGen/ExecutionDepsFix.cpp",
- "lib/CodeGen/ExpandISelPseudos.cpp",
- "lib/CodeGen/ExpandPostRAPseudos.cpp",
- "lib/CodeGen/GCMetadata.cpp",
- "lib/CodeGen/GCStrategy.cpp",
- "lib/CodeGen/IfConversion.cpp",
- "lib/CodeGen/InlineSpiller.cpp",
- "lib/CodeGen/InterferenceCache.cpp",
- "lib/CodeGen/IntrinsicLowering.cpp",
- "lib/CodeGen/LatencyPriorityQueue.cpp",
- "lib/CodeGen/LexicalScopes.cpp",
- "lib/CodeGen/LiveDebugVariables.cpp",
- "lib/CodeGen/LiveIntervalAnalysis.cpp",
- "lib/CodeGen/LiveInterval.cpp",
- "lib/CodeGen/LiveIntervalUnion.cpp",
- "lib/CodeGen/LiveRangeCalc.cpp",
- "lib/CodeGen/LiveRangeEdit.cpp",
- "lib/CodeGen/LiveStackAnalysis.cpp",
- "lib/CodeGen/LiveVariables.cpp",
- "lib/CodeGen/LLVMTargetMachine.cpp",
- "lib/CodeGen/LocalStackSlotAllocation.cpp",
- "lib/CodeGen/MachineBasicBlock.cpp",
- "lib/CodeGen/MachineBlockFrequencyInfo.cpp",
- "lib/CodeGen/MachineBranchProbabilityInfo.cpp",
- "lib/CodeGen/MachineCSE.cpp",
- "lib/CodeGen/MachineDominators.cpp",
- "lib/CodeGen/MachineFunctionAnalysis.cpp",
- "lib/CodeGen/MachineFunction.cpp",
- "lib/CodeGen/MachineFunctionPass.cpp",
- "lib/CodeGen/MachineFunctionPrinterPass.cpp",
- "lib/CodeGen/MachineInstr.cpp",
- "lib/CodeGen/MachineLICM.cpp",
- "lib/CodeGen/MachineLoopInfo.cpp",
- "lib/CodeGen/MachineLoopRanges.cpp",
- "lib/CodeGen/MachineModuleInfo.cpp",
- "lib/CodeGen/MachineModuleInfoImpls.cpp",
- "lib/CodeGen/MachinePassRegistry.cpp",
- "lib/CodeGen/MachineRegisterInfo.cpp",
- "lib/CodeGen/MachineSink.cpp",
- "lib/CodeGen/MachineSSAUpdater.cpp",
- "lib/CodeGen/MachineVerifier.cpp",
- "lib/CodeGen/ObjectCodeEmitter.cpp",
- "lib/CodeGen/OcamlGC.cpp",
- "lib/CodeGen/OptimizePHIs.cpp",
- "lib/CodeGen/Passes.cpp",
- "lib/CodeGen/PeepholeOptimizer.cpp",
- "lib/CodeGen/PHIElimination.cpp",
- "lib/CodeGen/PHIEliminationUtils.cpp",
- "lib/CodeGen/PostRASchedulerList.cpp",
- "lib/CodeGen/ProcessImplicitDefs.cpp",
- "lib/CodeGen/PrologEpilogInserter.cpp",
- "lib/CodeGen/PseudoSourceValue.cpp",
- "lib/CodeGen/RegAllocBasic.cpp",
- "lib/CodeGen/RegAllocFast.cpp",
- "lib/CodeGen/RegAllocGreedy.cpp",
- "lib/CodeGen/RegAllocLinearScan.cpp",
- "lib/CodeGen/RegAllocPBQP.cpp",
- "lib/CodeGen/RegisterClassInfo.cpp",
- "lib/CodeGen/RegisterCoalescer.cpp",
- "lib/CodeGen/RegisterScavenging.cpp",
- "lib/CodeGen/RenderMachineFunction.cpp",
- "lib/CodeGen/ScheduleDAG.cpp",
- "lib/CodeGen/ScheduleDAGEmit.cpp",
- "lib/CodeGen/ScheduleDAGInstrs.cpp",
- "lib/CodeGen/ScheduleDAGPrinter.cpp",
- "lib/CodeGen/ScoreboardHazardRecognizer.cpp",
- "lib/CodeGen/ShadowStackGC.cpp",
- "lib/CodeGen/ShrinkWrapping.cpp",
- "lib/CodeGen/SjLjEHPrepare.cpp",
- "lib/CodeGen/SlotIndexes.cpp",
- "lib/CodeGen/Spiller.cpp",
- "lib/CodeGen/SpillPlacement.cpp",
- "lib/CodeGen/SplitKit.cpp",
- "lib/CodeGen/Splitter.cpp",
- "lib/CodeGen/StackProtector.cpp",
- "lib/CodeGen/StackSlotColoring.cpp",
- "lib/CodeGen/StrongPHIElimination.cpp",
- "lib/CodeGen/TailDuplication.cpp",
- "lib/CodeGen/TargetInstrInfoImpl.cpp",
- "lib/CodeGen/TargetLoweringObjectFileImpl.cpp",
- "lib/CodeGen/TwoAddressInstructionPass.cpp",
- "lib/CodeGen/UnreachableBlockElim.cpp",
- "lib/CodeGen/VirtRegMap.cpp",
- "lib/CodeGen/VirtRegRewriter.cpp",
- "lib/ExecutionEngine/JIT/Intercept.cpp",
- "lib/ExecutionEngine/JIT/JIT.cpp",
- "lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp",
- "lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp",
- "lib/ExecutionEngine/JIT/JITEmitter.cpp",
- "lib/ExecutionEngine/JIT/JITMemoryManager.cpp",
- "lib/ExecutionEngine/JIT/OProfileJITEventListener.cpp",
- "lib/ExecutionEngine/ExecutionEngine.cpp",
- "lib/ExecutionEngine/TargetSelect.cpp",
- "lib/MC/ELFObjectWriter.cpp",
- "lib/MC/MachObjectWriter.cpp",
- "lib/MC/MCAsmBackend.cpp",
- "lib/MC/MCAsmInfoCOFF.cpp",
- "lib/MC/MCAsmInfo.cpp",
- "lib/MC/MCAsmInfoDarwin.cpp",
- "lib/MC/MCAsmStreamer.cpp",
- "lib/MC/MCAssembler.cpp",
- "lib/MC/MCAtom.cpp",
- "lib/MC/MCCodeEmitter.cpp",
- "lib/MC/MCCodeGenInfo.cpp",
- "lib/MC/MCContext.cpp",
- "lib/MC/MCDisassembler.cpp",
- "lib/MC/MCDwarf.cpp",
- "lib/MC/MCELF.cpp",
- "lib/MC/MCELFObjectTargetWriter.cpp",
- "lib/MC/MCELFStreamer.cpp",
- "lib/MC/MCExpr.cpp",
- "lib/MC/MCInst.cpp",
- "lib/MC/MCInstPrinter.cpp",
- "lib/MC/MCInstrAnalysis.cpp",
- "lib/MC/MCLabel.cpp",
- "lib/MC/MCLoggingStreamer.cpp",
- "lib/MC/MCMachObjectTargetWriter.cpp",
- "lib/MC/MCMachOStreamer.cpp",
- "lib/MC/MCModule.cpp",
- "lib/MC/MCNullStreamer.cpp",
- "lib/MC/MCObjectFileInfo.cpp",
- "lib/MC/MCObjectStreamer.cpp",
- "lib/MC/MCObjectWriter.cpp",
- "lib/MC/MCPureStreamer.cpp",
- "lib/MC/MCSectionCOFF.cpp",
- "lib/MC/MCSection.cpp",
- "lib/MC/MCSectionELF.cpp",
- "lib/MC/MCSectionMachO.cpp",
- "lib/MC/MCStreamer.cpp",
- "lib/MC/MCSubtargetInfo.cpp",
- "lib/MC/MCSymbol.cpp",
- "lib/MC/MCTargetAsmLexer.cpp",
- "lib/MC/MCValue.cpp",
- "lib/MC/MCWin64EH.cpp",
- "lib/MC/SubtargetFeature.cpp",
- "lib/MC/WinCOFFObjectWriter.cpp",
- "lib/MC/WinCOFFStreamer.cpp",
- "lib/Support/Allocator.cpp",
- "lib/Support/APFloat.cpp",
- "lib/Support/APInt.cpp",
- "lib/Support/APSInt.cpp",
- "lib/Support/Atomic.cpp",
- "lib/Support/BlockFrequency.cpp",
- "lib/Support/BranchProbability.cpp",
- "lib/Support/circular_raw_ostream.cpp",
- "lib/Support/CommandLine.cpp",
- "lib/Support/ConstantRange.cpp",
- "lib/Support/CrashRecoveryContext.cpp",
- "lib/Support/DAGDeltaAlgorithm.cpp",
- "lib/Support/DataExtractor.cpp",
- "lib/Support/Debug.cpp",
- "lib/Support/DeltaAlgorithm.cpp",
- "lib/Support/Disassembler.cpp",
- "lib/Support/Dwarf.cpp",
- "lib/Support/DynamicLibrary.cpp",
- "lib/Support/Errno.cpp",
- "lib/Support/ErrorHandling.cpp",
- "lib/Support/FileUtilities.cpp",
- "lib/Support/FoldingSet.cpp",
- "lib/Support/FormattedStream.cpp",
- "lib/Support/GraphWriter.cpp",
- "lib/Support/Host.cpp",
- "lib/Support/IncludeFile.cpp",
- "lib/Support/IntEqClasses.cpp",
- "lib/Support/IntervalMap.cpp",
- "lib/Support/IsInf.cpp",
- "lib/Support/IsNAN.cpp",
- "lib/Support/ManagedStatic.cpp",
- "lib/Support/MemoryBuffer.cpp",
- "lib/Support/Memory.cpp",
- "lib/Support/MemoryObject.cpp",
- "lib/Support/Mutex.cpp",
- "lib/Support/Path.cpp",
- "lib/Support/PathV2.cpp",
- "lib/Support/PluginLoader.cpp",
- "lib/Support/PrettyStackTrace.cpp",
- "lib/Support/Process.cpp",
- "lib/Support/Program.cpp",
- "lib/Support/raw_os_ostream.cpp",
- "lib/Support/raw_ostream.cpp",
- "lib/Support/Regex.cpp",
- "lib/Support/RWMutex.cpp",
- "lib/Support/SearchForAddressOfSpecialSymbol.cpp",
- "lib/Support/Signals.cpp",
- "lib/Support/SmallPtrSet.cpp",
- "lib/Support/SmallVector.cpp",
- "lib/Support/SourceMgr.cpp",
- "lib/Support/Statistic.cpp",
- "lib/Support/StringExtras.cpp",
- "lib/Support/StringMap.cpp",
- "lib/Support/StringPool.cpp",
- "lib/Support/StringRef.cpp",
- "lib/Support/system_error.cpp",
- "lib/Support/SystemUtils.cpp",
- "lib/Support/TargetRegistry.cpp",
- "lib/Support/Threading.cpp",
- "lib/Support/ThreadLocal.cpp",
- "lib/Support/Timer.cpp",
- "lib/Support/TimeValue.cpp",
- "lib/Support/ToolOutputFile.cpp",
- "lib/Support/Triple.cpp",
- "lib/Support/Twine.cpp",
- "lib/Support/Valgrind.cpp",
- "lib/Target/Mangler.cpp",
- "lib/Target/Target.cpp",
- "lib/Target/TargetData.cpp",
- "lib/Target/TargetELFWriterInfo.cpp",
- "lib/Target/TargetFrameLowering.cpp",
- "lib/Target/TargetInstrInfo.cpp",
- "lib/Target/TargetLibraryInfo.cpp",
- "lib/Target/TargetLoweringObjectFile.cpp",
- "lib/Target/TargetMachine.cpp",
- "lib/Target/TargetRegisterInfo.cpp",
- "lib/Target/TargetSubtargetInfo.cpp",
- "lib/Transforms/InstCombine/InstCombineAddSub.cpp",
- "lib/Transforms/InstCombine/InstCombineAndOrXor.cpp",
- "lib/Transforms/InstCombine/InstCombineCalls.cpp",
- "lib/Transforms/InstCombine/InstCombineCasts.cpp",
- "lib/Transforms/InstCombine/InstCombineCompares.cpp",
- "lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp",
- "lib/Transforms/InstCombine/InstCombineMulDivRem.cpp",
- "lib/Transforms/InstCombine/InstCombinePHI.cpp",
- "lib/Transforms/InstCombine/InstCombineSelect.cpp",
- "lib/Transforms/InstCombine/InstCombineShifts.cpp",
- "lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp",
- "lib/Transforms/InstCombine/InstCombineVectorOps.cpp",
- "lib/Transforms/InstCombine/InstructionCombining.cpp",
- "lib/Transforms/Scalar/ADCE.cpp",
- "lib/Transforms/Scalar/CodeGenPrepare.cpp",
- "lib/Transforms/Scalar/DeadStoreElimination.cpp",
- "lib/Transforms/Scalar/GVN.cpp",
- "lib/Transforms/Scalar/LICM.cpp",
- "lib/Transforms/Scalar/LoopStrengthReduce.cpp",
- "lib/Transforms/Scalar/Reassociate.cpp",
- "lib/Transforms/Scalar/Reg2Mem.cpp",
- "lib/Transforms/Scalar/ScalarReplAggregates.cpp",
- "lib/Transforms/Scalar/SCCP.cpp",
- "lib/Transforms/Scalar/SimplifyCFGPass.cpp",
- "lib/Transforms/Utils/AddrModeMatcher.cpp",
- "lib/Transforms/Utils/BasicBlockUtils.cpp",
- "lib/Transforms/Utils/BreakCriticalEdges.cpp",
- "lib/Transforms/Utils/BuildLibCalls.cpp",
- "lib/Transforms/Utils/DemoteRegToStack.cpp",
- "lib/Transforms/Utils/InstructionNamer.cpp",
- "lib/Transforms/Utils/LCSSA.cpp",
- "lib/Transforms/Utils/Local.cpp",
- "lib/Transforms/Utils/LoopSimplify.cpp",
- "lib/Transforms/Utils/LowerInvoke.cpp",
- "lib/Transforms/Utils/LowerSwitch.cpp",
- "lib/Transforms/Utils/Mem2Reg.cpp",
- "lib/Transforms/Utils/PromoteMemoryToRegister.cpp",
- "lib/Transforms/Utils/SimplifyCFG.cpp",
- "lib/Transforms/Utils/SSAUpdater.cpp",
- "lib/Transforms/Utils/UnifyFunctionExitNodes.cpp",
- "lib/VMCore/AsmWriter.cpp",
- "lib/VMCore/Attributes.cpp",
- "lib/VMCore/AutoUpgrade.cpp",
- "lib/VMCore/BasicBlock.cpp",
- "lib/VMCore/ConstantFold.cpp",
- "lib/VMCore/Constants.cpp",
- "lib/VMCore/Core.cpp",
- "lib/VMCore/DebugInfoProbe.cpp",
- "lib/VMCore/DebugLoc.cpp",
- "lib/VMCore/Dominators.cpp",
- "lib/VMCore/Function.cpp",
- "lib/VMCore/GCOV.cpp",
- "lib/VMCore/Globals.cpp",
- "lib/VMCore/GVMaterializer.cpp",
- "lib/VMCore/InlineAsm.cpp",
- "lib/VMCore/Instruction.cpp",
- "lib/VMCore/Instructions.cpp",
- "lib/VMCore/IntrinsicInst.cpp",
- "lib/VMCore/IRBuilder.cpp",
- "lib/VMCore/LeakDetector.cpp",
- "lib/VMCore/LLVMContext.cpp",
- "lib/VMCore/LLVMContextImpl.cpp",
- "lib/VMCore/Metadata.cpp",
- "lib/VMCore/Module.cpp",
- "lib/VMCore/Pass.cpp",
- "lib/VMCore/PassManager.cpp",
- "lib/VMCore/PassRegistry.cpp",
- "lib/VMCore/PrintModulePass.cpp",
- "lib/VMCore/Type.cpp",
- "lib/VMCore/Use.cpp",
- "lib/VMCore/User.cpp",
- "lib/VMCore/Value.cpp",
- "lib/VMCore/ValueSymbolTable.cpp",
- "lib/VMCore/ValueTypes.cpp",
- "lib/VMCore/Verifier.cpp",
- ],
-
- arch: {
- x86: {
- local_include_dirs: [ "lib/Target/X86" ],
-
- srcs: libLLVM_swiftshader_x86_srcs,
- },
-
- x86_64: {
- local_include_dirs: [ "lib/Target/X86" ],
-
- srcs: libLLVM_swiftshader_x86_srcs,
- },
- },
-
- target: {
- android: {
- export_include_dirs: [ "include-android", "include" ],
- },
-
- linux: {
- export_include_dirs: [ "include-linux", "include" ],
- },
-
- darwin: {
- export_include_dirs: [ "include-osx", "include" ],
- },
- },
-}
diff --git a/chromium/third_party/swiftshader/third_party/LLVM/Android.mk b/chromium/third_party/swiftshader/third_party/LLVM/Android.mk
deleted file mode 100644
index 23f7d78e80b..00000000000
--- a/chromium/third_party/swiftshader/third_party/LLVM/Android.mk
+++ /dev/null
@@ -1,447 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_CLANG := true
-
-LOCAL_MODULE := libLLVM_swiftshader
-LOCAL_MODULE_TAGS := optional
-LOCAL_VENDOR_MODULE := true
-
-LOCAL_SRC_FILES := \
- lib/Analysis/AliasAnalysis.cpp \
- lib/Analysis/AliasSetTracker.cpp \
- lib/Analysis/BasicAliasAnalysis.cpp \
- lib/Analysis/BranchProbabilityInfo.cpp \
- lib/Analysis/CaptureTracking.cpp \
- lib/Analysis/ConstantFolding.cpp \
- lib/Analysis/DebugInfo.cpp \
- lib/Analysis/DIBuilder.cpp \
- lib/Analysis/InstructionSimplify.cpp \
- lib/Analysis/IVUsers.cpp \
- lib/Analysis/Loads.cpp \
- lib/Analysis/LoopInfo.cpp \
- lib/Analysis/LoopPass.cpp \
- lib/Analysis/MemoryBuiltins.cpp \
- lib/Analysis/MemoryDependenceAnalysis.cpp \
- lib/Analysis/NoAliasAnalysis.cpp \
- lib/Analysis/PathNumbering.cpp \
- lib/Analysis/PHITransAddr.cpp \
- lib/Analysis/ProfileInfo.cpp \
- lib/Analysis/ScalarEvolution.cpp \
- lib/Analysis/ScalarEvolutionExpander.cpp \
- lib/Analysis/ScalarEvolutionNormalization.cpp \
- lib/Analysis/TypeBasedAliasAnalysis.cpp \
- lib/Analysis/ValueTracking.cpp \
-
-LOCAL_SRC_FILES += \
- lib/CodeGen/SelectionDAG/DAGCombiner.cpp \
- lib/CodeGen/SelectionDAG/FastISel.cpp \
- lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp \
- lib/CodeGen/SelectionDAG/InstrEmitter.cpp \
- lib/CodeGen/SelectionDAG/LegalizeDAG.cpp \
- lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp \
- lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp \
- lib/CodeGen/SelectionDAG/LegalizeTypes.cpp \
- lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp \
- lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp \
- lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp \
- lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp \
- lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp \
- lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp \
- lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp \
- lib/CodeGen/SelectionDAG/SelectionDAG.cpp \
- lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp \
- lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp \
- lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp \
- lib/CodeGen/SelectionDAG/TargetLowering.cpp \
- lib/CodeGen/SelectionDAG/TargetSelectionDAGInfo.cpp \
- lib/CodeGen/AggressiveAntiDepBreaker.cpp \
- lib/CodeGen/AllocationOrder.cpp \
- lib/CodeGen/Analysis.cpp \
- lib/CodeGen/BranchFolding.cpp \
- lib/CodeGen/CalcSpillWeights.cpp \
- lib/CodeGen/CallingConvLower.cpp \
- lib/CodeGen/CodeGen.cpp \
- lib/CodeGen/CodePlacementOpt.cpp \
- lib/CodeGen/CriticalAntiDepBreaker.cpp \
- lib/CodeGen/DeadMachineInstructionElim.cpp \
- lib/CodeGen/DwarfEHPrepare.cpp \
- lib/CodeGen/EdgeBundles.cpp \
- lib/CodeGen/ELFCodeEmitter.cpp \
- lib/CodeGen/ELFWriter.cpp \
- lib/CodeGen/ExecutionDepsFix.cpp \
- lib/CodeGen/ExpandISelPseudos.cpp \
- lib/CodeGen/ExpandPostRAPseudos.cpp \
- lib/CodeGen/GCMetadata.cpp \
- lib/CodeGen/GCStrategy.cpp \
- lib/CodeGen/IfConversion.cpp \
- lib/CodeGen/InlineSpiller.cpp \
- lib/CodeGen/InterferenceCache.cpp \
- lib/CodeGen/IntrinsicLowering.cpp \
- lib/CodeGen/LatencyPriorityQueue.cpp \
- lib/CodeGen/LexicalScopes.cpp \
- lib/CodeGen/LiveDebugVariables.cpp \
- lib/CodeGen/LiveIntervalAnalysis.cpp \
- lib/CodeGen/LiveInterval.cpp \
- lib/CodeGen/LiveIntervalUnion.cpp \
- lib/CodeGen/LiveRangeCalc.cpp \
- lib/CodeGen/LiveRangeEdit.cpp \
- lib/CodeGen/LiveStackAnalysis.cpp \
- lib/CodeGen/LiveVariables.cpp \
- lib/CodeGen/LLVMTargetMachine.cpp \
- lib/CodeGen/LocalStackSlotAllocation.cpp \
- lib/CodeGen/MachineBasicBlock.cpp \
- lib/CodeGen/MachineBlockFrequencyInfo.cpp \
- lib/CodeGen/MachineBranchProbabilityInfo.cpp \
- lib/CodeGen/MachineCSE.cpp \
- lib/CodeGen/MachineDominators.cpp \
- lib/CodeGen/MachineFunctionAnalysis.cpp \
- lib/CodeGen/MachineFunction.cpp \
- lib/CodeGen/MachineFunctionPass.cpp \
- lib/CodeGen/MachineFunctionPrinterPass.cpp \
- lib/CodeGen/MachineInstr.cpp \
- lib/CodeGen/MachineLICM.cpp \
- lib/CodeGen/MachineLoopInfo.cpp \
- lib/CodeGen/MachineLoopRanges.cpp \
- lib/CodeGen/MachineModuleInfo.cpp \
- lib/CodeGen/MachineModuleInfoImpls.cpp \
- lib/CodeGen/MachinePassRegistry.cpp \
- lib/CodeGen/MachineRegisterInfo.cpp \
- lib/CodeGen/MachineSink.cpp \
- lib/CodeGen/MachineSSAUpdater.cpp \
- lib/CodeGen/MachineVerifier.cpp \
- lib/CodeGen/ObjectCodeEmitter.cpp \
- lib/CodeGen/OcamlGC.cpp \
- lib/CodeGen/OptimizePHIs.cpp \
- lib/CodeGen/Passes.cpp \
- lib/CodeGen/PeepholeOptimizer.cpp \
- lib/CodeGen/PHIElimination.cpp \
- lib/CodeGen/PHIEliminationUtils.cpp \
- lib/CodeGen/PostRASchedulerList.cpp \
- lib/CodeGen/ProcessImplicitDefs.cpp \
- lib/CodeGen/PrologEpilogInserter.cpp \
- lib/CodeGen/PseudoSourceValue.cpp \
- lib/CodeGen/RegAllocBasic.cpp \
- lib/CodeGen/RegAllocFast.cpp \
- lib/CodeGen/RegAllocGreedy.cpp \
- lib/CodeGen/RegAllocLinearScan.cpp \
- lib/CodeGen/RegAllocPBQP.cpp \
- lib/CodeGen/RegisterClassInfo.cpp \
- lib/CodeGen/RegisterCoalescer.cpp \
- lib/CodeGen/RegisterScavenging.cpp \
- lib/CodeGen/RenderMachineFunction.cpp \
- lib/CodeGen/ScheduleDAG.cpp \
- lib/CodeGen/ScheduleDAGEmit.cpp \
- lib/CodeGen/ScheduleDAGInstrs.cpp \
- lib/CodeGen/ScheduleDAGPrinter.cpp \
- lib/CodeGen/ScoreboardHazardRecognizer.cpp \
- lib/CodeGen/ShadowStackGC.cpp \
- lib/CodeGen/ShrinkWrapping.cpp \
- lib/CodeGen/SjLjEHPrepare.cpp \
- lib/CodeGen/SlotIndexes.cpp \
- lib/CodeGen/Spiller.cpp \
- lib/CodeGen/SpillPlacement.cpp \
- lib/CodeGen/SplitKit.cpp \
- lib/CodeGen/Splitter.cpp \
- lib/CodeGen/StackProtector.cpp \
- lib/CodeGen/StackSlotColoring.cpp \
- lib/CodeGen/StrongPHIElimination.cpp \
- lib/CodeGen/TailDuplication.cpp \
- lib/CodeGen/TargetInstrInfoImpl.cpp \
- lib/CodeGen/TargetLoweringObjectFileImpl.cpp \
- lib/CodeGen/TwoAddressInstructionPass.cpp \
- lib/CodeGen/UnreachableBlockElim.cpp \
- lib/CodeGen/VirtRegMap.cpp \
- lib/CodeGen/VirtRegRewriter.cpp \
-
-LOCAL_SRC_FILES += \
- lib/ExecutionEngine/JIT/Intercept.cpp \
- lib/ExecutionEngine/JIT/JIT.cpp \
- lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp \
- lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp \
- lib/ExecutionEngine/JIT/JITEmitter.cpp \
- lib/ExecutionEngine/JIT/JITMemoryManager.cpp \
- lib/ExecutionEngine/JIT/OProfileJITEventListener.cpp \
- lib/ExecutionEngine/ExecutionEngine.cpp \
- lib/ExecutionEngine/TargetSelect.cpp \
-
-LOCAL_SRC_FILES += \
- lib/MC/ELFObjectWriter.cpp \
- lib/MC/MachObjectWriter.cpp \
- lib/MC/MCAsmBackend.cpp \
- lib/MC/MCAsmInfoCOFF.cpp \
- lib/MC/MCAsmInfo.cpp \
- lib/MC/MCAsmInfoDarwin.cpp \
- lib/MC/MCAsmStreamer.cpp \
- lib/MC/MCAssembler.cpp \
- lib/MC/MCAtom.cpp \
- lib/MC/MCCodeEmitter.cpp \
- lib/MC/MCCodeGenInfo.cpp \
- lib/MC/MCContext.cpp \
- lib/MC/MCDisassembler.cpp \
- lib/MC/MCDwarf.cpp \
- lib/MC/MCELF.cpp \
- lib/MC/MCELFObjectTargetWriter.cpp \
- lib/MC/MCELFStreamer.cpp \
- lib/MC/MCExpr.cpp \
- lib/MC/MCInst.cpp \
- lib/MC/MCInstPrinter.cpp \
- lib/MC/MCInstrAnalysis.cpp \
- lib/MC/MCLabel.cpp \
- lib/MC/MCLoggingStreamer.cpp \
- lib/MC/MCMachObjectTargetWriter.cpp \
- lib/MC/MCMachOStreamer.cpp \
- lib/MC/MCModule.cpp \
- lib/MC/MCNullStreamer.cpp \
- lib/MC/MCObjectFileInfo.cpp \
- lib/MC/MCObjectStreamer.cpp \
- lib/MC/MCObjectWriter.cpp \
- lib/MC/MCPureStreamer.cpp \
- lib/MC/MCSectionCOFF.cpp \
- lib/MC/MCSection.cpp \
- lib/MC/MCSectionELF.cpp \
- lib/MC/MCSectionMachO.cpp \
- lib/MC/MCStreamer.cpp \
- lib/MC/MCSubtargetInfo.cpp \
- lib/MC/MCSymbol.cpp \
- lib/MC/MCTargetAsmLexer.cpp \
- lib/MC/MCValue.cpp \
- lib/MC/MCWin64EH.cpp \
- lib/MC/SubtargetFeature.cpp \
- lib/MC/WinCOFFObjectWriter.cpp \
- lib/MC/WinCOFFStreamer.cpp \
-
-LOCAL_SRC_FILES += \
- lib/Support/Allocator.cpp \
- lib/Support/APFloat.cpp \
- lib/Support/APInt.cpp \
- lib/Support/APSInt.cpp \
- lib/Support/Atomic.cpp \
- lib/Support/BlockFrequency.cpp \
- lib/Support/BranchProbability.cpp \
- lib/Support/circular_raw_ostream.cpp \
- lib/Support/CommandLine.cpp \
- lib/Support/ConstantRange.cpp \
- lib/Support/CrashRecoveryContext.cpp \
- lib/Support/DAGDeltaAlgorithm.cpp \
- lib/Support/DataExtractor.cpp \
- lib/Support/Debug.cpp \
- lib/Support/DeltaAlgorithm.cpp \
- lib/Support/Disassembler.cpp \
- lib/Support/Dwarf.cpp \
- lib/Support/DynamicLibrary.cpp \
- lib/Support/Errno.cpp \
- lib/Support/ErrorHandling.cpp \
- lib/Support/FileUtilities.cpp \
- lib/Support/FoldingSet.cpp \
- lib/Support/FormattedStream.cpp \
- lib/Support/GraphWriter.cpp \
- lib/Support/Host.cpp \
- lib/Support/IncludeFile.cpp \
- lib/Support/IntEqClasses.cpp \
- lib/Support/IntervalMap.cpp \
- lib/Support/IsInf.cpp \
- lib/Support/IsNAN.cpp \
- lib/Support/ManagedStatic.cpp \
- lib/Support/MemoryBuffer.cpp \
- lib/Support/Memory.cpp \
- lib/Support/MemoryObject.cpp \
- lib/Support/Mutex.cpp \
- lib/Support/Path.cpp \
- lib/Support/PathV2.cpp \
- lib/Support/PluginLoader.cpp \
- lib/Support/PrettyStackTrace.cpp \
- lib/Support/Process.cpp \
- lib/Support/Program.cpp \
- lib/Support/raw_os_ostream.cpp \
- lib/Support/raw_ostream.cpp \
- lib/Support/Regex.cpp \
- lib/Support/RWMutex.cpp \
- lib/Support/SearchForAddressOfSpecialSymbol.cpp \
- lib/Support/Signals.cpp \
- lib/Support/SmallPtrSet.cpp \
- lib/Support/SmallVector.cpp \
- lib/Support/SourceMgr.cpp \
- lib/Support/Statistic.cpp \
- lib/Support/StringExtras.cpp \
- lib/Support/StringMap.cpp \
- lib/Support/StringPool.cpp \
- lib/Support/StringRef.cpp \
- lib/Support/system_error.cpp \
- lib/Support/SystemUtils.cpp \
- lib/Support/TargetRegistry.cpp \
- lib/Support/Threading.cpp \
- lib/Support/ThreadLocal.cpp \
- lib/Support/Timer.cpp \
- lib/Support/TimeValue.cpp \
- lib/Support/ToolOutputFile.cpp \
- lib/Support/Triple.cpp \
- lib/Support/Twine.cpp \
- lib/Support/Valgrind.cpp \
-
-LOCAL_SRC_FILES += \
- lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp \
- lib/Target/X86/InstPrinter/X86InstComments.cpp \
- lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp \
- lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp \
- lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp \
- lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp \
- lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp \
- lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp \
- lib/Target/X86/TargetInfo/X86TargetInfo.cpp \
- lib/Target/X86/Utils/X86ShuffleDecode.cpp \
- lib/Target/X86/X86CodeEmitter.cpp \
- lib/Target/X86/X86ELFWriterInfo.cpp \
- lib/Target/X86/X86FastISel.cpp \
- lib/Target/X86/X86FloatingPoint.cpp \
- lib/Target/X86/X86FrameLowering.cpp \
- lib/Target/X86/X86InstrInfo.cpp \
- lib/Target/X86/X86ISelDAGToDAG.cpp \
- lib/Target/X86/X86ISelLowering.cpp \
- lib/Target/X86/X86JITInfo.cpp \
- lib/Target/X86/X86RegisterInfo.cpp \
- lib/Target/X86/X86SelectionDAGInfo.cpp \
- lib/Target/X86/X86Subtarget.cpp \
- lib/Target/X86/X86TargetMachine.cpp \
- lib/Target/X86/X86TargetObjectFile.cpp \
- lib/Target/X86/X86VZeroUpper.cpp \
- lib/Target/Mangler.cpp \
- lib/Target/Target.cpp \
- lib/Target/TargetData.cpp \
- lib/Target/TargetELFWriterInfo.cpp \
- lib/Target/TargetFrameLowering.cpp \
- lib/Target/TargetInstrInfo.cpp \
- lib/Target/TargetLibraryInfo.cpp \
- lib/Target/TargetLoweringObjectFile.cpp \
- lib/Target/TargetMachine.cpp \
- lib/Target/TargetRegisterInfo.cpp \
- lib/Target/TargetSubtargetInfo.cpp \
-
-LOCAL_SRC_FILES += \
- lib/Transforms/InstCombine/InstCombineAddSub.cpp \
- lib/Transforms/InstCombine/InstCombineAndOrXor.cpp \
- lib/Transforms/InstCombine/InstCombineCalls.cpp \
- lib/Transforms/InstCombine/InstCombineCasts.cpp \
- lib/Transforms/InstCombine/InstCombineCompares.cpp \
- lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp \
- lib/Transforms/InstCombine/InstCombineMulDivRem.cpp \
- lib/Transforms/InstCombine/InstCombinePHI.cpp \
- lib/Transforms/InstCombine/InstCombineSelect.cpp \
- lib/Transforms/InstCombine/InstCombineShifts.cpp \
- lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp \
- lib/Transforms/InstCombine/InstCombineVectorOps.cpp \
- lib/Transforms/InstCombine/InstructionCombining.cpp \
- lib/Transforms/Scalar/ADCE.cpp \
- lib/Transforms/Scalar/CodeGenPrepare.cpp \
- lib/Transforms/Scalar/DeadStoreElimination.cpp \
- lib/Transforms/Scalar/GVN.cpp \
- lib/Transforms/Scalar/LICM.cpp \
- lib/Transforms/Scalar/LoopStrengthReduce.cpp \
- lib/Transforms/Scalar/Reassociate.cpp \
- lib/Transforms/Scalar/Reg2Mem.cpp \
- lib/Transforms/Scalar/ScalarReplAggregates.cpp \
- lib/Transforms/Scalar/SCCP.cpp \
- lib/Transforms/Scalar/SimplifyCFGPass.cpp \
- lib/Transforms/Utils/AddrModeMatcher.cpp \
- lib/Transforms/Utils/BasicBlockUtils.cpp \
- lib/Transforms/Utils/BreakCriticalEdges.cpp \
- lib/Transforms/Utils/BuildLibCalls.cpp \
- lib/Transforms/Utils/DemoteRegToStack.cpp \
- lib/Transforms/Utils/InstructionNamer.cpp \
- lib/Transforms/Utils/LCSSA.cpp \
- lib/Transforms/Utils/Local.cpp \
- lib/Transforms/Utils/LoopSimplify.cpp \
- lib/Transforms/Utils/LowerInvoke.cpp \
- lib/Transforms/Utils/LowerSwitch.cpp \
- lib/Transforms/Utils/Mem2Reg.cpp \
- lib/Transforms/Utils/PromoteMemoryToRegister.cpp \
- lib/Transforms/Utils/SimplifyCFG.cpp \
- lib/Transforms/Utils/SSAUpdater.cpp \
- lib/Transforms/Utils/UnifyFunctionExitNodes.cpp \
-
-LOCAL_SRC_FILES += \
- lib/VMCore/AsmWriter.cpp \
- lib/VMCore/Attributes.cpp \
- lib/VMCore/AutoUpgrade.cpp \
- lib/VMCore/BasicBlock.cpp \
- lib/VMCore/ConstantFold.cpp \
- lib/VMCore/Constants.cpp \
- lib/VMCore/Core.cpp \
- lib/VMCore/DebugInfoProbe.cpp \
- lib/VMCore/DebugLoc.cpp \
- lib/VMCore/Dominators.cpp \
- lib/VMCore/Function.cpp \
- lib/VMCore/GCOV.cpp \
- lib/VMCore/Globals.cpp \
- lib/VMCore/GVMaterializer.cpp \
- lib/VMCore/InlineAsm.cpp \
- lib/VMCore/Instruction.cpp \
- lib/VMCore/Instructions.cpp \
- lib/VMCore/IntrinsicInst.cpp \
- lib/VMCore/IRBuilder.cpp \
- lib/VMCore/LeakDetector.cpp \
- lib/VMCore/LLVMContext.cpp \
- lib/VMCore/LLVMContextImpl.cpp \
- lib/VMCore/Metadata.cpp \
- lib/VMCore/Module.cpp \
- lib/VMCore/Pass.cpp \
- lib/VMCore/PassManager.cpp \
- lib/VMCore/PassRegistry.cpp \
- lib/VMCore/PrintModulePass.cpp \
- lib/VMCore/Type.cpp \
- lib/VMCore/Use.cpp \
- lib/VMCore/User.cpp \
- lib/VMCore/Value.cpp \
- lib/VMCore/ValueSymbolTable.cpp \
- lib/VMCore/ValueTypes.cpp \
- lib/VMCore/Verifier.cpp \
-
-LOCAL_CFLAGS += \
- -DLOG_TAG=\"libLLVM_swiftshader\" \
- -Wall \
- -Werror \
- -Wno-implicit-exception-spec-mismatch \
- -Wno-implicit-fallthrough \
- -Wno-overloaded-virtual \
- -Wno-undefined-var-template \
- -Wno-unneeded-internal-declaration \
- -Wno-unused-const-variable \
- -Wno-unused-function \
- -Wno-unused-local-typedef \
- -Wno-unused-parameter \
- -Wno-unused-private-field \
- -Wno-unused-variable \
- -Wno-unknown-warning-option
-
-ifneq (16,${PLATFORM_SDK_VERSION})
-LOCAL_CFLAGS += -Xclang -fuse-init-array
-else
-LOCAL_CFLAGS += -D__STDC_INT64__
-endif
-
-ifeq (19,${PLATFORM_SDK_VERSION})
-# The compiler that shipped with K had false positives for missing sentinels
-LOCAL_CFLAGS += -Wno-sentinel
-endif
-
-LOCAL_CFLAGS += -fomit-frame-pointer -Os -ffunction-sections -fdata-sections
-LOCAL_CFLAGS += -fno-operator-names -msse2 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS
-LOCAL_CFLAGS += -std=c++11
-LOCAL_CFLAGS += -DANDROID_PLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION)
-
-# Android's make system also uses NDEBUG, so we need to set/unset it forcefully
-# Uncomment for debug ON:
-# LOCAL_CFLAGS += -UNDEBUG -g -O0
-
-LOCAL_C_INCLUDES += \
- bionic \
- $(LOCAL_PATH)/include-android \
- $(LOCAL_PATH)/include \
- $(LOCAL_PATH)/lib/Target/X86 \
-
-# Marshmallow does not have stlport, but comes with libc++ by default
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23 && echo PreMarshmallow),PreMarshmallow)
-LOCAL_C_INCLUDES += external/stlport/stlport
-endif
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/Analysis/LoopInfo.h b/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/Analysis/LoopInfo.h
index 18364a218f8..6744f5ede0a 100644
--- a/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/Analysis/LoopInfo.h
+++ b/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/Analysis/LoopInfo.h
@@ -294,7 +294,6 @@ public:
// Loop over the predecessors of the header node...
BlockT *Header = getHeader();
- typedef GraphTraits<BlockT*> BlockTraits;
typedef GraphTraits<Inverse<BlockT*> > InvBlockTraits;
for (typename InvBlockTraits::ChildIteratorType PI =
InvBlockTraits::child_begin(Header),
@@ -828,10 +827,10 @@ public:
typedef GraphTraits<Inverse<BlockT*> > InvBlockTraits;
// Add all of the predecessors of X to the end of the work stack...
- for (typename InvBlockTraits::ChildIteratorType PI = InvBlockTraits::child_begin(X), PE = InvBlockTraits::child_end(X); PI != PE; ++PI) {
- typename InvBlockTraits::NodeType *N = *PI;
- TodoStack.push_back(N);
- }
+ for (typename InvBlockTraits::ChildIteratorType PI = InvBlockTraits::child_begin(X), PE = InvBlockTraits::child_end(X); PI != PE; ++PI) {
+ typename InvBlockTraits::NodeType *N = *PI;
+ TodoStack.push_back(N);
+ }
}
}
diff --git a/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/SymbolTableListTraits.h b/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/SymbolTableListTraits.h
index 91a4eb99ff0..78f39ece850 100644
--- a/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/SymbolTableListTraits.h
+++ b/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/SymbolTableListTraits.h
@@ -29,7 +29,7 @@
namespace llvm {
class ValueSymbolTable;
-
+
template<typename NodeTy> class ilist_iterator;
template<typename NodeTy, typename Traits> class iplist;
template<typename Ty> struct ilist_traits;
@@ -46,7 +46,6 @@ public:
/// getListOwner - Return the object that owns this list. If this is a list
/// of instructions, it returns the BasicBlock that owns them.
ItemParentClass *getListOwner() {
- typedef iplist<ValueSubClass> ItemParentClass::*Sublist;
size_t Offset(size_t(&((ItemParentClass*)0->*ItemParentClass::
getSublistAccess(static_cast<ValueSubClass*>(0)))));
iplist<ValueSubClass>* Anchor(static_cast<iplist<ValueSubClass>*>(this));
diff --git a/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/intrinsics_gen.vcxproj b/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/intrinsics_gen.vcxproj
index 15c888d0114..3192d36c8db 100644
--- a/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/intrinsics_gen.vcxproj
+++ b/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/intrinsics_gen.vcxproj
@@ -187,8 +187,8 @@
</CustomBuild>
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\..\utils/TableGen/llvm-tblgen.vcxproj">
- <Project>1F8587CB-0779-44BB-AFA4-03DD8A036D75</Project>
+ <ProjectReference Include="..\..\utils\TableGen\llvm-tblgen.vcxproj">
+ <Project>{1f8587cb-0779-44bb-afa4-03dd8a036d75}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/chromium/third_party/swiftshader/third_party/LLVM/lib/CodeGen/MachineModuleInfo.cpp b/chromium/third_party/swiftshader/third_party/LLVM/lib/CodeGen/MachineModuleInfo.cpp
index 80c4854238a..39d601e8116 100644
--- a/chromium/third_party/swiftshader/third_party/LLVM/lib/CodeGen/MachineModuleInfo.cpp
+++ b/chromium/third_party/swiftshader/third_party/LLVM/lib/CodeGen/MachineModuleInfo.cpp
@@ -265,13 +265,6 @@ MachineModuleInfo::MachineModuleInfo(const MCAsmInfo &MAI,
TheModule = 0;
}
-MachineModuleInfo::MachineModuleInfo()
- : ImmutablePass(ID),
- Context(*(MCAsmInfo*)0, *(MCRegisterInfo*)0, (MCObjectFileInfo*)0) {
- assert(0 && "This MachineModuleInfo constructor should never be called, MMI "
- "should always be explicitly constructed by LLVMTargetMachine");
- abort();
-}
MachineModuleInfo::~MachineModuleInfo() {
delete ObjFileMMI;
diff --git a/chromium/third_party/swiftshader/third_party/LLVM/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/chromium/third_party/swiftshader/third_party/LLVM/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index 63255ae2ebd..a078945c878 100644
--- a/chromium/third_party/swiftshader/third_party/LLVM/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/chromium/third_party/swiftshader/third_party/LLVM/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
@@ -1441,7 +1441,7 @@ SDValue SelectionDAGLegalize::LegalizeOp(SDValue Op) {
&LoadChains[0], LoadChains.size());
EVT TempWideVector = EVT::getVectorVT(*DAG.getContext(),
SrcVT.getScalarType(), NumElem*SizeRatio);
- SDValue ValRes = DAG.getNode(ISD::BUILD_VECTOR, dl,
+ SDValue ValRes = DAG.getNode(ISD::BUILD_VECTOR, dl,
TempWideVector, &LoadVals[0], LoadVals.size());
// Cast to the correct type
@@ -1629,7 +1629,6 @@ SDValue SelectionDAGLegalize::LegalizeOp(SDValue Op) {
break;
case TargetLowering::Expand:
- EVT WideScalarVT = Tmp3.getValueType().getScalarType();
EVT NarrowScalarVT = StVT.getScalarType();
if (StVT.isVector()) {
@@ -1649,7 +1648,6 @@ SDValue SelectionDAGLegalize::LegalizeOp(SDValue Op) {
if (RegScalarLegal) {
// Cast floats into integers
unsigned ScalarSize = MemSclVT.getSizeInBits();
- EVT EltVT = EVT::getIntegerVT(*DAG.getContext(), ScalarSize);
// Round odd types to the next pow of two.
if (!isPowerOf2_32(ScalarSize))
diff --git a/chromium/third_party/swiftshader/third_party/LLVM/lib/MC/WinCOFFObjectWriter.cpp b/chromium/third_party/swiftshader/third_party/LLVM/lib/MC/WinCOFFObjectWriter.cpp
index 2881bcc62dc..78dea6e1cf0 100644
--- a/chromium/third_party/swiftshader/third_party/LLVM/lib/MC/WinCOFFObjectWriter.cpp
+++ b/chromium/third_party/swiftshader/third_party/LLVM/lib/MC/WinCOFFObjectWriter.cpp
@@ -191,17 +191,6 @@ static inline void write_uint32_le(void *Data, uint32_t const &Value) {
Ptr[3] = (Value & 0xFF000000) >> 24;
}
-static inline void write_uint16_le(void *Data, uint16_t const &Value) {
- uint8_t *Ptr = reinterpret_cast<uint8_t *>(Data);
- Ptr[0] = (Value & 0x00FF) >> 0;
- Ptr[1] = (Value & 0xFF00) >> 8;
-}
-
-static inline void write_uint8_le(void *Data, uint8_t const &Value) {
- uint8_t *Ptr = reinterpret_cast<uint8_t *>(Data);
- Ptr[0] = (Value & 0xFF) >> 0;
-}
-
//------------------------------------------------------------------------------
// Symbol class implementation
diff --git a/chromium/third_party/swiftshader/third_party/LLVM/lib/Support/CrashRecoveryContext.cpp b/chromium/third_party/swiftshader/third_party/LLVM/lib/Support/CrashRecoveryContext.cpp
index e667931ead1..08b786663b2 100644
--- a/chromium/third_party/swiftshader/third_party/LLVM/lib/Support/CrashRecoveryContext.cpp
+++ b/chromium/third_party/swiftshader/third_party/LLVM/lib/Support/CrashRecoveryContext.cpp
@@ -58,7 +58,7 @@ public:
static sys::Mutex gCrashRecoveryContexMutex;
static bool gCrashRecoveryEnabled = false;
-static sys::ThreadLocal<const CrashRecoveryContextCleanup>
+static sys::ThreadLocal<const CrashRecoveryContextCleanup>
tlIsRecoveringFromCrash;
CrashRecoveryContextCleanup::~CrashRecoveryContextCleanup() {}
@@ -75,7 +75,7 @@ CrashRecoveryContext::~CrashRecoveryContext() {
delete tmp;
}
tlIsRecoveringFromCrash.erase();
-
+
CrashRecoveryContextImpl *CRCI = (CrashRecoveryContextImpl *) Impl;
delete CRCI;
}
@@ -224,10 +224,10 @@ void CrashRecoveryContext::Disable() {
#include <signal.h>
+#ifdef ENABLE_SIGNAL_OVERRIDES
static int Signals[] = { SIGABRT, SIGBUS, SIGFPE, SIGILL, SIGSEGV, SIGTRAP };
static const unsigned NumSignals = sizeof(Signals) / sizeof(Signals[0]);
static struct sigaction PrevActions[NumSignals];
-
static void CrashRecoverySignalHandler(int Signal) {
// Lookup the current thread local recovery object.
const CrashRecoveryContextImpl *CRCI = CurrentContext.get();
@@ -259,6 +259,7 @@ static void CrashRecoverySignalHandler(int Signal) {
if (CRCI)
const_cast<CrashRecoveryContextImpl*>(CRCI)->HandleCrash();
}
+#endif // ENABLE_SIGNAL_OVERRIDES
void CrashRecoveryContext::Enable() {
sys::ScopedLock L(gCrashRecoveryContexMutex);
diff --git a/chromium/third_party/swiftshader/third_party/LLVM/lib/Support/Unix/Program.inc b/chromium/third_party/swiftshader/third_party/LLVM/lib/Support/Unix/Program.inc
index fefb28b7126..4467de06fa6 100644
--- a/chromium/third_party/swiftshader/third_party/LLVM/lib/Support/Unix/Program.inc
+++ b/chromium/third_party/swiftshader/third_party/LLVM/lib/Support/Unix/Program.inc
@@ -149,8 +149,10 @@ static bool RedirectIO_PS(const Path *Path, int FD, std::string *ErrMsg,
}
#endif
+#ifdef ENABLE_SIGNAL_OVERRIDES
static void TimeOutHandler(int Sig) {
}
+#endif
static void SetMemoryLimits (unsigned size)
{
@@ -302,6 +304,7 @@ Program::Wait(const sys::Path &path,
{
#ifdef HAVE_SYS_WAIT_H
struct sigaction Act, Old;
+ (void)Act; (void)Old;
if (Data_ == 0) {
MakeErrMsg(ErrMsg, "Process not started!");
diff --git a/chromium/third_party/swiftshader/third_party/LLVM/lib/Support/Unix/Signals.inc b/chromium/third_party/swiftshader/third_party/LLVM/lib/Support/Unix/Signals.inc
index 3b6c90d4b90..5dbd7759640 100644
--- a/chromium/third_party/swiftshader/third_party/LLVM/lib/Support/Unix/Signals.inc
+++ b/chromium/third_party/swiftshader/third_party/LLVM/lib/Support/Unix/Signals.inc
@@ -32,7 +32,9 @@
#endif
using namespace llvm;
+#ifdef ENABLE_SIGNAL_OVERRIDES
static RETSIGTYPE SignalHandler(int Sig); // defined below.
+#endif // ENABLE_SIGNAL_OVERRIDES
static SmartMutex<true> SignalsMutex;
@@ -76,6 +78,7 @@ static struct {
} RegisteredSignalInfo[(sizeof(IntSigs)+sizeof(KillSigs))/sizeof(KillSigs[0])];
+#ifdef ENABLE_SIGNAL_OVERRIDES
static void RegisterHandler(int Signal) {
assert(NumRegisteredSignals <
sizeof(RegisteredSignalInfo)/sizeof(RegisteredSignalInfo[0]) &&
@@ -93,6 +96,7 @@ static void RegisterHandler(int Signal) {
RegisteredSignalInfo[NumRegisteredSignals].SigNo = Signal;
++NumRegisteredSignals;
}
+#endif // ENABLE_SIGNAL_OVERRIDES
static void RegisterHandlers() {
#ifdef ENABLE_SIGNAL_OVERRIDES
@@ -104,6 +108,7 @@ static void RegisterHandlers() {
#endif
}
+#ifdef ENABLE_SIGNAL_OVERRIDES
static void UnregisterHandlers() {
// Restore all of the signal handlers to how they were before we showed up.
for (unsigned i = 0, e = NumRegisteredSignals; i != e; ++i)
@@ -111,6 +116,7 @@ static void UnregisterHandlers() {
&RegisteredSignalInfo[i].SA, 0);
NumRegisteredSignals = 0;
}
+#endif // ENABLE_SIGNAL_OVERRIDES
/// RemoveFilesToRemove - Process the FilesToRemove list. This function
@@ -122,6 +128,7 @@ static void RemoveFilesToRemove() {
}
}
+#ifdef ENABLE_SIGNAL_OVERRIDES
// SignalHandler - The signal handler that runs.
static RETSIGTYPE SignalHandler(int Sig) {
// Restore the signal behavior to default, so that the program actually
@@ -158,6 +165,7 @@ static RETSIGTYPE SignalHandler(int Sig) {
for (unsigned i = 0, e = CallBacksToRun.size(); i != e; ++i)
CallBacksToRun[i].first(CallBacksToRun[i].second);
}
+#endif // ENABLE_SIGNAL_OVERRIDES
void llvm::sys::RunInterruptHandlers() {
SignalsMutex.acquire();
diff --git a/chromium/third_party/swiftshader/third_party/LLVM/lib/Transforms/InstCombine/InstCombinePHI.cpp b/chromium/third_party/swiftshader/third_party/LLVM/lib/Transforms/InstCombine/InstCombinePHI.cpp
index 664546c1655..02cf9569661 100644
--- a/chromium/third_party/swiftshader/third_party/LLVM/lib/Transforms/InstCombine/InstCombinePHI.cpp
+++ b/chromium/third_party/swiftshader/third_party/LLVM/lib/Transforms/InstCombine/InstCombinePHI.cpp
@@ -27,10 +27,10 @@ Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) {
unsigned Opc = FirstInst->getOpcode();
Value *LHSVal = FirstInst->getOperand(0);
Value *RHSVal = FirstInst->getOperand(1);
-
+
Type *LHSType = LHSVal->getType();
Type *RHSType = RHSVal->getType();
-
+
bool isNUW = false, isNSW = false, isExact = false;
if (OverflowingBinaryOperator *BO =
dyn_cast<OverflowingBinaryOperator>(FirstInst)) {
@@ -39,7 +39,7 @@ Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) {
} else if (PossiblyExactOperator *PEO =
dyn_cast<PossiblyExactOperator>(FirstInst))
isExact = PEO->isExact();
-
+
// Scan to see if all operands are the same opcode, and all have one use.
for (unsigned i = 1; i != PN.getNumIncomingValues(); ++i) {
Instruction *I = dyn_cast<Instruction>(PN.getIncomingValue(i));
@@ -54,14 +54,14 @@ Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) {
if (CmpInst *CI = dyn_cast<CmpInst>(I))
if (CI->getPredicate() != cast<CmpInst>(FirstInst)->getPredicate())
return 0;
-
+
if (isNUW)
isNUW = cast<OverflowingBinaryOperator>(I)->hasNoUnsignedWrap();
if (isNSW)
isNSW = cast<OverflowingBinaryOperator>(I)->hasNoSignedWrap();
if (isExact)
isExact = cast<PossiblyExactOperator>(I)->isExact();
-
+
// Keep track of which operand needs a phi node.
if (I->getOperand(0) != LHSVal) LHSVal = 0;
if (I->getOperand(1) != RHSVal) RHSVal = 0;
@@ -73,9 +73,9 @@ Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) {
// bad when the PHIs are in the header of a loop.
if (!LHSVal && !RHSVal)
return 0;
-
+
// Otherwise, this is safe to transform!
-
+
Value *InLHS = FirstInst->getOperand(0);
Value *InRHS = FirstInst->getOperand(1);
PHINode *NewLHS = 0, *NewRHS = 0;
@@ -86,7 +86,7 @@ Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) {
InsertNewInstBefore(NewLHS, PN);
LHSVal = NewLHS;
}
-
+
if (RHSVal == 0) {
NewRHS = PHINode::Create(RHSType, PN.getNumIncomingValues(),
FirstInst->getOperand(1)->getName() + ".pn");
@@ -94,7 +94,7 @@ Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) {
InsertNewInstBefore(NewRHS, PN);
RHSVal = NewRHS;
}
-
+
// Add all operands to the new PHIs.
if (NewLHS || NewRHS) {
for (unsigned i = 1, e = PN.getNumIncomingValues(); i != e; ++i) {
@@ -109,7 +109,7 @@ Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) {
}
}
}
-
+
if (CmpInst *CIOp = dyn_cast<CmpInst>(FirstInst)) {
CmpInst *NewCI = CmpInst::Create(CIOp->getOpcode(), CIOp->getPredicate(),
LHSVal, RHSVal);
@@ -129,8 +129,8 @@ Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) {
Instruction *InstCombiner::FoldPHIArgGEPIntoPHI(PHINode &PN) {
GetElementPtrInst *FirstInst =cast<GetElementPtrInst>(PN.getIncomingValue(0));
-
- SmallVector<Value*, 16> FixedOperands(FirstInst->op_begin(),
+
+ SmallVector<Value*, 16> FixedOperands(FirstInst->op_begin(),
FirstInst->op_end());
// This is true if all GEP bases are allocas and if all indices into them are
// constants.
@@ -140,9 +140,9 @@ Instruction *InstCombiner::FoldPHIArgGEPIntoPHI(PHINode &PN) {
// more than one phi, which leads to higher register pressure. This is
// especially bad when the PHIs are in the header of a loop.
bool NeededPhi = false;
-
+
bool AllInBounds = true;
-
+
// Scan to see if all operands are the same opcode, and all have one use.
for (unsigned i = 1; i != PN.getNumIncomingValues(); ++i) {
GetElementPtrInst *GEP= dyn_cast<GetElementPtrInst>(PN.getIncomingValue(i));
@@ -151,18 +151,18 @@ Instruction *InstCombiner::FoldPHIArgGEPIntoPHI(PHINode &PN) {
return 0;
AllInBounds &= GEP->isInBounds();
-
+
// Keep track of whether or not all GEPs are of alloca pointers.
if (AllBasePointersAreAllocas &&
(!isa<AllocaInst>(GEP->getOperand(0)) ||
!GEP->hasAllConstantIndices()))
AllBasePointersAreAllocas = false;
-
+
// Compare the operand lists.
for (unsigned op = 0, e = FirstInst->getNumOperands(); op != e; ++op) {
if (FirstInst->getOperand(op) == GEP->getOperand(op))
continue;
-
+
// Don't merge two GEPs when two operands differ (introducing phi nodes)
// if one of the PHIs has a constant for the index. The index may be
// substantially cheaper to compute for the constants, so making it a
@@ -171,7 +171,7 @@ Instruction *InstCombiner::FoldPHIArgGEPIntoPHI(PHINode &PN) {
if (isa<ConstantInt>(FirstInst->getOperand(op)) ||
isa<ConstantInt>(GEP->getOperand(op)))
return 0;
-
+
if (FirstInst->getOperand(op)->getType() !=GEP->getOperand(op)->getType())
return 0;
@@ -186,7 +186,7 @@ Instruction *InstCombiner::FoldPHIArgGEPIntoPHI(PHINode &PN) {
NeededPhi = true;
}
}
-
+
// If all of the base pointers of the PHI'd GEPs are from allocas, don't
// bother doing this transformation. At best, this will just save a bit of
// offset calculation, but all the predecessors will have to materialize the
@@ -195,11 +195,11 @@ Instruction *InstCombiner::FoldPHIArgGEPIntoPHI(PHINode &PN) {
// which can usually all be folded into the load.
if (AllBasePointersAreAllocas)
return 0;
-
+
// Otherwise, this is safe to transform. Insert PHI nodes for each operand
// that is variable.
SmallVector<PHINode*, 16> OperandPhis(FixedOperands.size());
-
+
bool HasAnyPHIs = false;
for (unsigned i = 0, e = FixedOperands.size(); i != e; ++i) {
if (FixedOperands[i]) continue; // operand doesn't need a phi.
@@ -207,28 +207,28 @@ Instruction *InstCombiner::FoldPHIArgGEPIntoPHI(PHINode &PN) {
PHINode *NewPN = PHINode::Create(FirstOp->getType(), e,
FirstOp->getName()+".pn");
InsertNewInstBefore(NewPN, PN);
-
+
NewPN->addIncoming(FirstOp, PN.getIncomingBlock(0));
OperandPhis[i] = NewPN;
FixedOperands[i] = NewPN;
HasAnyPHIs = true;
}
-
+
// Add all operands to the new PHIs.
if (HasAnyPHIs) {
for (unsigned i = 1, e = PN.getNumIncomingValues(); i != e; ++i) {
GetElementPtrInst *InGEP =cast<GetElementPtrInst>(PN.getIncomingValue(i));
BasicBlock *InBB = PN.getIncomingBlock(i);
-
+
for (unsigned op = 0, e = OperandPhis.size(); op != e; ++op)
if (PHINode *OpPhi = OperandPhis[op])
OpPhi->addIncoming(InGEP->getOperand(op), InBB);
}
}
-
+
Value *Base = FixedOperands[0];
- GetElementPtrInst *NewGEP =
+ GetElementPtrInst *NewGEP =
GetElementPtrInst::Create(Base, makeArrayRef(FixedOperands).slice(1));
if (AllInBounds) NewGEP->setIsInBounds();
NewGEP->setDebugLoc(FirstInst->getDebugLoc());
@@ -246,11 +246,11 @@ Instruction *InstCombiner::FoldPHIArgGEPIntoPHI(PHINode &PN) {
/// to a register.
static bool isSafeAndProfitableToSinkLoad(LoadInst *L) {
BasicBlock::iterator BBI = L, E = L->getParent()->end();
-
+
for (++BBI; BBI != E; ++BBI)
if (BBI->mayWriteToMemory())
return false;
-
+
// Check for non-address taken alloca. If not address-taken already, it isn't
// profitable to do this xform.
if (AllocaInst *AI = dyn_cast<AllocaInst>(L->getOperand(0))) {
@@ -266,11 +266,11 @@ static bool isSafeAndProfitableToSinkLoad(LoadInst *L) {
isAddressTaken = true;
break;
}
-
+
if (!isAddressTaken && AI->isStaticAlloca())
return false;
}
-
+
// If this load is a load from a GEP with a constant offset from an alloca,
// then we don't want to sink it. In its present form, it will be
// load [constant stack offset]. Sinking it will cause us to have to
@@ -280,7 +280,7 @@ static bool isSafeAndProfitableToSinkLoad(LoadInst *L) {
if (AllocaInst *AI = dyn_cast<AllocaInst>(GEP->getOperand(0)))
if (AI->isStaticAlloca() && GEP->hasAllConstantIndices())
return false;
-
+
return true;
}
@@ -300,41 +300,41 @@ Instruction *InstCombiner::FoldPHIArgLoadIntoPHI(PHINode &PN) {
bool isVolatile = FirstLI->isVolatile();
unsigned LoadAlignment = FirstLI->getAlignment();
unsigned LoadAddrSpace = FirstLI->getPointerAddressSpace();
-
+
// We can't sink the load if the loaded value could be modified between the
// load and the PHI.
if (FirstLI->getParent() != PN.getIncomingBlock(0) ||
!isSafeAndProfitableToSinkLoad(FirstLI))
return 0;
-
+
// If the PHI is of volatile loads and the load block has multiple
// successors, sinking it would remove a load of the volatile value from
// the path through the other successor.
- if (isVolatile &&
+ if (isVolatile &&
FirstLI->getParent()->getTerminator()->getNumSuccessors() != 1)
return 0;
-
+
// Check to see if all arguments are the same operation.
for (unsigned i = 1, e = PN.getNumIncomingValues(); i != e; ++i) {
LoadInst *LI = dyn_cast<LoadInst>(PN.getIncomingValue(i));
if (!LI || !LI->hasOneUse())
return 0;
-
- // We can't sink the load if the loaded value could be modified between
+
+ // We can't sink the load if the loaded value could be modified between
// the load and the PHI.
if (LI->isVolatile() != isVolatile ||
LI->getParent() != PN.getIncomingBlock(i) ||
LI->getPointerAddressSpace() != LoadAddrSpace ||
!isSafeAndProfitableToSinkLoad(LI))
return 0;
-
+
// If some of the loads have an alignment specified but not all of them,
// we can't do the transformation.
if ((LoadAlignment != 0) != (LI->getAlignment() != 0))
return 0;
-
+
LoadAlignment = std::min(LoadAlignment, LI->getAlignment());
-
+
// If the PHI is of volatile loads and the load block has multiple
// successors, sinking it would remove a load of the volatile value from
// the path through the other successor.
@@ -342,16 +342,16 @@ Instruction *InstCombiner::FoldPHIArgLoadIntoPHI(PHINode &PN) {
LI->getParent()->getTerminator()->getNumSuccessors() != 1)
return 0;
}
-
+
// Okay, they are all the same operation. Create a new PHI node of the
// correct type, and PHI together all of the LHS's of the instructions.
PHINode *NewPN = PHINode::Create(FirstLI->getOperand(0)->getType(),
PN.getNumIncomingValues(),
PN.getName()+".in");
-
+
Value *InVal = FirstLI->getOperand(0);
NewPN->addIncoming(InVal, PN.getIncomingBlock(0));
-
+
// Add all operands to the new PHI.
for (unsigned i = 1, e = PN.getNumIncomingValues(); i != e; ++i) {
Value *NewInVal = cast<LoadInst>(PN.getIncomingValue(i))->getOperand(0);
@@ -359,7 +359,7 @@ Instruction *InstCombiner::FoldPHIArgLoadIntoPHI(PHINode &PN) {
InVal = 0;
NewPN->addIncoming(NewInVal, PN.getIncomingBlock(i));
}
-
+
Value *PhiVal;
if (InVal) {
// The new PHI unions all of the same values together. This is really
@@ -370,14 +370,14 @@ Instruction *InstCombiner::FoldPHIArgLoadIntoPHI(PHINode &PN) {
InsertNewInstBefore(NewPN, PN);
PhiVal = NewPN;
}
-
+
// If this was a volatile load that we are merging, make sure to loop through
// and mark all the input loads as non-volatile. If we don't do this, we will
// insert a new volatile load and the old ones will not be deletable.
if (isVolatile)
for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i)
cast<LoadInst>(PN.getIncomingValue(i))->setVolatile(false);
-
+
LoadInst *NewLI = new LoadInst(PhiVal, "", isVolatile, LoadAlignment);
NewLI->setDebugLoc(FirstLI->getDebugLoc());
return NewLI;
@@ -395,7 +395,7 @@ Instruction *InstCombiner::FoldPHIArgOpIntoPHI(PHINode &PN) {
return FoldPHIArgGEPIntoPHI(PN);
if (isa<LoadInst>(FirstInst))
return FoldPHIArgLoadIntoPHI(PN);
-
+
// Scan the instruction, looking for input operations that can be folded away.
// If all input operands to the phi are the same instruction (e.g. a cast from
// the same type or "+42") we can pull the operation through the PHI, reducing
@@ -403,7 +403,7 @@ Instruction *InstCombiner::FoldPHIArgOpIntoPHI(PHINode &PN) {
Constant *ConstantOp = 0;
Type *CastSrcTy = 0;
bool isNUW = false, isNSW = false, isExact = false;
-
+
if (isa<CastInst>(FirstInst)) {
CastSrcTy = FirstInst->getOperand(0)->getType();
@@ -414,12 +414,12 @@ Instruction *InstCombiner::FoldPHIArgOpIntoPHI(PHINode &PN) {
return 0;
}
} else if (isa<BinaryOperator>(FirstInst) || isa<CmpInst>(FirstInst)) {
- // Can fold binop, compare or shift here if the RHS is a constant,
+ // Can fold binop, compare or shift here if the RHS is a constant,
// otherwise call FoldPHIArgBinOpIntoPHI.
ConstantOp = dyn_cast<Constant>(FirstInst->getOperand(1));
if (ConstantOp == 0)
return FoldPHIArgBinOpIntoPHI(PN);
-
+
if (OverflowingBinaryOperator *BO =
dyn_cast<OverflowingBinaryOperator>(FirstInst)) {
isNUW = BO->hasNoUnsignedWrap();
@@ -442,7 +442,7 @@ Instruction *InstCombiner::FoldPHIArgOpIntoPHI(PHINode &PN) {
} else if (I->getOperand(1) != ConstantOp) {
return 0;
}
-
+
if (isNUW)
isNUW = cast<OverflowingBinaryOperator>(I)->hasNoUnsignedWrap();
if (isNSW)
@@ -486,7 +486,7 @@ Instruction *InstCombiner::FoldPHIArgOpIntoPHI(PHINode &PN) {
NewCI->setDebugLoc(FirstInst->getDebugLoc());
return NewCI;
}
-
+
if (BinaryOperator *BinOp = dyn_cast<BinaryOperator>(FirstInst)) {
BinOp = BinaryOperator::Create(BinOp->getOpcode(), PhiVal, ConstantOp);
if (isNUW) BinOp->setHasNoUnsignedWrap();
@@ -495,7 +495,7 @@ Instruction *InstCombiner::FoldPHIArgOpIntoPHI(PHINode &PN) {
BinOp->setDebugLoc(FirstInst->getDebugLoc());
return BinOp;
}
-
+
CmpInst *CIOp = cast<CmpInst>(FirstInst);
CmpInst *NewCI = CmpInst::Create(CIOp->getOpcode(), CIOp->getPredicate(),
PhiVal, ConstantOp);
@@ -513,7 +513,7 @@ static bool DeadPHICycle(PHINode *PN,
// Remember this node, and if we find the cycle, return.
if (!PotentiallyDeadPHIs.insert(PN))
return true;
-
+
// Don't scan crazily complex things.
if (PotentiallyDeadPHIs.size() == 16)
return false;
@@ -527,16 +527,16 @@ static bool DeadPHICycle(PHINode *PN,
/// PHIsEqualValue - Return true if this phi node is always equal to
/// NonPhiInVal. This happens with mutually cyclic phi nodes like:
/// z = some value; x = phi (y, z); y = phi (x, z)
-static bool PHIsEqualValue(PHINode *PN, Value *NonPhiInVal,
+static bool PHIsEqualValue(PHINode *PN, Value *NonPhiInVal,
SmallPtrSet<PHINode*, 16> &ValueEqualPHIs) {
// See if we already saw this PHI node.
if (!ValueEqualPHIs.insert(PN))
return true;
-
+
// Don't scan crazily complex things.
if (ValueEqualPHIs.size() == 16)
return false;
-
+
// Scan the operands to see if they are either phi nodes or are equal to
// the value.
for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) {
@@ -547,7 +547,7 @@ static bool PHIsEqualValue(PHINode *PN, Value *NonPhiInVal,
} else if (Op != NonPhiInVal)
return false;
}
-
+
return true;
}
@@ -557,10 +557,10 @@ struct PHIUsageRecord {
unsigned PHIId; // The ID # of the PHI (something determinstic to sort on)
unsigned Shift; // The amount shifted.
Instruction *Inst; // The trunc instruction.
-
+
PHIUsageRecord(unsigned pn, unsigned Sh, Instruction *User)
: PHIId(pn), Shift(Sh), Inst(User) {}
-
+
bool operator<(const PHIUsageRecord &RHS) const {
if (PHIId < RHS.PHIId) return true;
if (PHIId > RHS.PHIId) return false;
@@ -570,15 +570,15 @@ struct PHIUsageRecord {
RHS.Inst->getType()->getPrimitiveSizeInBits();
}
};
-
+
struct LoweredPHIRecord {
PHINode *PN; // The PHI that was lowered.
unsigned Shift; // The amount shifted.
unsigned Width; // The width extracted.
-
+
LoweredPHIRecord(PHINode *pn, unsigned Sh, Type *Ty)
: PN(pn), Shift(Sh), Width(Ty->getPrimitiveSizeInBits()) {}
-
+
// Ctor form used by DenseMap.
LoweredPHIRecord(PHINode *pn, unsigned Sh)
: PN(pn), Shift(Sh), Width(0) {}
@@ -608,7 +608,6 @@ namespace llvm {
struct isPodLike<LoweredPHIRecord> { static const bool value = true; };
}
-
/// SliceUpIllegalIntegerPHI - This is an integer PHI and we know that it has an
/// illegal type: see if it is only used by trunc or trunc(lshr) operations. If
/// so, we split the PHI into the various pieces being extracted. This sort of
@@ -618,23 +617,28 @@ namespace llvm {
/// inttoptr. We should produce new PHIs in the right type.
///
Instruction *InstCombiner::SliceUpIllegalIntegerPHI(PHINode &FirstPhi) {
+
+ // Silence unused variable warning. I'd normally just remove them - but this
+ // will cause chaos if the compiler is wrong.
+ (void) isPodLike<LoweredPHIRecord>::value;
+
// PHIUsers - Keep track of all of the truncated values extracted from a set
// of PHIs, along with their offset. These are the things we want to rewrite.
SmallVector<PHIUsageRecord, 16> PHIUsers;
-
+
// PHIs are often mutually cyclic, so we keep track of a whole set of PHI
// nodes which are extracted from. PHIsToSlice is a set we use to avoid
// revisiting PHIs, PHIsInspected is a ordered list of PHIs that we need to
// check the uses of (to ensure they are all extracts).
SmallVector<PHINode*, 8> PHIsToSlice;
SmallPtrSet<PHINode*, 8> PHIsInspected;
-
+
PHIsToSlice.push_back(&FirstPhi);
PHIsInspected.insert(&FirstPhi);
-
+
for (unsigned PHIId = 0; PHIId != PHIsToSlice.size(); ++PHIId) {
PHINode *PN = PHIsToSlice[PHIId];
-
+
// Scan the input list of the PHI. If any input is an invoke, and if the
// input is defined in the predecessor, then we won't be split the critical
// edge which is required to insert a truncate. Because of this, we have to
@@ -644,85 +648,85 @@ Instruction *InstCombiner::SliceUpIllegalIntegerPHI(PHINode &FirstPhi) {
if (II == 0) continue;
if (II->getParent() != PN->getIncomingBlock(i))
continue;
-
+
// If we have a phi, and if it's directly in the predecessor, then we have
// a critical edge where we need to put the truncate. Since we can't
// split the edge in instcombine, we have to bail out.
return 0;
}
-
-
+
+
for (Value::use_iterator UI = PN->use_begin(), E = PN->use_end();
UI != E; ++UI) {
Instruction *User = cast<Instruction>(*UI);
-
+
// If the user is a PHI, inspect its uses recursively.
if (PHINode *UserPN = dyn_cast<PHINode>(User)) {
if (PHIsInspected.insert(UserPN))
PHIsToSlice.push_back(UserPN);
continue;
}
-
+
// Truncates are always ok.
if (isa<TruncInst>(User)) {
PHIUsers.push_back(PHIUsageRecord(PHIId, 0, User));
continue;
}
-
+
// Otherwise it must be a lshr which can only be used by one trunc.
if (User->getOpcode() != Instruction::LShr ||
!User->hasOneUse() || !isa<TruncInst>(User->use_back()) ||
!isa<ConstantInt>(User->getOperand(1)))
return 0;
-
+
unsigned Shift = cast<ConstantInt>(User->getOperand(1))->getZExtValue();
PHIUsers.push_back(PHIUsageRecord(PHIId, Shift, User->use_back()));
}
}
-
+
// If we have no users, they must be all self uses, just nuke the PHI.
if (PHIUsers.empty())
return ReplaceInstUsesWith(FirstPhi, UndefValue::get(FirstPhi.getType()));
-
+
// If this phi node is transformable, create new PHIs for all the pieces
// extracted out of it. First, sort the users by their offset and size.
array_pod_sort(PHIUsers.begin(), PHIUsers.end());
-
+
DEBUG(errs() << "SLICING UP PHI: " << FirstPhi << '\n';
for (unsigned i = 1, e = PHIsToSlice.size(); i != e; ++i)
errs() << "AND USER PHI #" << i << ": " << *PHIsToSlice[i] <<'\n';
);
-
+
// PredValues - This is a temporary used when rewriting PHI nodes. It is
// hoisted out here to avoid construction/destruction thrashing.
DenseMap<BasicBlock*, Value*> PredValues;
-
+
// ExtractedVals - Each new PHI we introduce is saved here so we don't
// introduce redundant PHIs.
DenseMap<LoweredPHIRecord, PHINode*> ExtractedVals;
-
+
for (unsigned UserI = 0, UserE = PHIUsers.size(); UserI != UserE; ++UserI) {
unsigned PHIId = PHIUsers[UserI].PHIId;
PHINode *PN = PHIsToSlice[PHIId];
unsigned Offset = PHIUsers[UserI].Shift;
Type *Ty = PHIUsers[UserI].Inst->getType();
-
+
PHINode *EltPHI;
-
+
// If we've already lowered a user like this, reuse the previously lowered
// value.
if ((EltPHI = ExtractedVals[LoweredPHIRecord(PN, Offset, Ty)]) == 0) {
-
+
// Otherwise, Create the new PHI node for this user.
EltPHI = PHINode::Create(Ty, PN->getNumIncomingValues(),
PN->getName()+".off"+Twine(Offset), PN);
assert(EltPHI->getType() != PN->getType() &&
"Truncate didn't shrink phi?");
-
+
for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) {
BasicBlock *Pred = PN->getIncomingBlock(i);
Value *&PredVal = PredValues[Pred];
-
+
// If we already have a value for this predecessor, reuse it.
if (PredVal) {
EltPHI->addIncoming(PredVal, Pred);
@@ -736,7 +740,7 @@ Instruction *InstCombiner::SliceUpIllegalIntegerPHI(PHINode &FirstPhi) {
EltPHI->addIncoming(PredVal, Pred);
continue;
}
-
+
if (PHINode *InPHI = dyn_cast<PHINode>(PN)) {
// If the incoming value was a PHI, and if it was one of the PHIs we
// already rewrote it, just use the lowered value.
@@ -746,7 +750,7 @@ Instruction *InstCombiner::SliceUpIllegalIntegerPHI(PHINode &FirstPhi) {
continue;
}
}
-
+
// Otherwise, do an extract in the predecessor.
Builder->SetInsertPoint(Pred, Pred->getTerminator());
Value *Res = InVal;
@@ -756,7 +760,7 @@ Instruction *InstCombiner::SliceUpIllegalIntegerPHI(PHINode &FirstPhi) {
Res = Builder->CreateTrunc(Res, Ty, "extract.t");
PredVal = Res;
EltPHI->addIncoming(Res, Pred);
-
+
// If the incoming value was a PHI, and if it was one of the PHIs we are
// rewriting, we will ultimately delete the code we inserted. This
// means we need to revisit that PHI to make sure we extract out the
@@ -765,22 +769,22 @@ Instruction *InstCombiner::SliceUpIllegalIntegerPHI(PHINode &FirstPhi) {
if (PHIsInspected.count(OldInVal)) {
unsigned RefPHIId = std::find(PHIsToSlice.begin(),PHIsToSlice.end(),
OldInVal)-PHIsToSlice.begin();
- PHIUsers.push_back(PHIUsageRecord(RefPHIId, Offset,
+ PHIUsers.push_back(PHIUsageRecord(RefPHIId, Offset,
cast<Instruction>(Res)));
++UserE;
}
}
PredValues.clear();
-
+
DEBUG(errs() << " Made element PHI for offset " << Offset << ": "
<< *EltPHI << '\n');
ExtractedVals[LoweredPHIRecord(PN, Offset, Ty)] = EltPHI;
}
-
+
// Replace the use of this piece with the PHI node.
ReplaceInstUsesWith(*PHIUsers[UserI].Inst, EltPHI);
}
-
+
// Replace all the remaining uses of the PHI nodes (self uses and the lshrs)
// with undefs.
Value *Undef = UndefValue::get(FirstPhi.getType());
@@ -818,7 +822,7 @@ Instruction *InstCombiner::visitPHINode(PHINode &PN) {
if (DeadPHICycle(PU, PotentiallyDeadPHIs))
return ReplaceInstUsesWith(PN, UndefValue::get(PN.getType()));
}
-
+
// If this phi has a single use, and if that use just computes a value for
// the next iteration of a loop, delete the phi. This occurs with unused
// induction variables, e.g. "for (int j = 0; ; ++j);". Detecting this
@@ -847,7 +851,7 @@ Instruction *InstCombiner::visitPHINode(PHINode &PN) {
if (InValNo != NumIncomingVals) {
Value *NonPhiInVal = PN.getIncomingValue(InValNo);
-
+
// Scan the rest of the operands to see if there are any conflicts, if so
// there is no need to recursively scan other phis.
for (++InValNo; InValNo != NumIncomingVals; ++InValNo) {
@@ -855,7 +859,7 @@ Instruction *InstCombiner::visitPHINode(PHINode &PN) {
if (OpVal != NonPhiInVal && !isa<PHINode>(OpVal))
break;
}
-
+
// If we scanned over all operands, then we have one unique value plus
// phi values. Scan PHI nodes to see if they all merge in each other or
// the value.
@@ -899,6 +903,6 @@ Instruction *InstCombiner::visitPHINode(PHINode &PN) {
!TD->isLegalInteger(PN.getType()->getPrimitiveSizeInBits()))
if (Instruction *Res = SliceUpIllegalIntegerPHI(PN))
return Res;
-
+
return 0;
}
diff --git a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Advanced/ChameleonMan/OGLES2/Build/WindowsVC2010/OGLES2ChameleonMan.vcxproj b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Advanced/ChameleonMan/OGLES2/Build/WindowsVC2010/OGLES2ChameleonMan.vcxproj
index a1c5e929343..9a16c4e30d2 100644
--- a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Advanced/ChameleonMan/OGLES2/Build/WindowsVC2010/OGLES2ChameleonMan.vcxproj
+++ b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Advanced/ChameleonMan/OGLES2/Build/WindowsVC2010/OGLES2ChameleonMan.vcxproj
@@ -22,6 +22,7 @@
<ProjectGuid>{9CF4408B-9B08-481F-95DA-3DF0846DABE4}</ProjectGuid>
<RootNamespace>OGLES2ChameleonMan</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
diff --git a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Beginner/01_HelloAPI/OGLES2/Build/WindowsVC2010/OGLES2HelloAPI.vcxproj b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Beginner/01_HelloAPI/OGLES2/Build/WindowsVC2010/OGLES2HelloAPI.vcxproj
index ee653002e3b..9c1a98c23ff 100644
--- a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Beginner/01_HelloAPI/OGLES2/Build/WindowsVC2010/OGLES2HelloAPI.vcxproj
+++ b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Beginner/01_HelloAPI/OGLES2/Build/WindowsVC2010/OGLES2HelloAPI.vcxproj
@@ -22,6 +22,7 @@
<ProjectGuid>{9DAFEE32-19F6-4410-AA09-2B564FB86F62}</ProjectGuid>
<RootNamespace>OGLES2HelloAPI</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
diff --git a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Beginner/04_BasicTnL/OGLES/Build/WindowsVC2010/OGLESBasicTnL.vcxproj b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Beginner/04_BasicTnL/OGLES/Build/WindowsVC2010/OGLESBasicTnL.vcxproj
index 5bf06405e15..23047fe8537 100644
--- a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Beginner/04_BasicTnL/OGLES/Build/WindowsVC2010/OGLESBasicTnL.vcxproj
+++ b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Beginner/04_BasicTnL/OGLES/Build/WindowsVC2010/OGLESBasicTnL.vcxproj
@@ -22,6 +22,7 @@
<ProjectGuid>{AB1EB229-D86C-41B3-8E20-7A7E1FF5DDF5}</ProjectGuid>
<RootNamespace>OGLESBasicTnL</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
diff --git a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Intermediate/ColourGrading/OGLES3/Build/WindowsVC2010/OGLES3ColourGrading.vcxproj b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Intermediate/ColourGrading/OGLES3/Build/WindowsVC2010/OGLES3ColourGrading.vcxproj
index 32293622378..479ef1eb010 100644
--- a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Intermediate/ColourGrading/OGLES3/Build/WindowsVC2010/OGLES3ColourGrading.vcxproj
+++ b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Intermediate/ColourGrading/OGLES3/Build/WindowsVC2010/OGLES3ColourGrading.vcxproj
@@ -22,6 +22,7 @@
<ProjectGuid>{2EA5725B-25DA-44E2-B71E-BD9F55F3C2E2}</ProjectGuid>
<RootNamespace>OGLES3ColourGrading</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
diff --git a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Intermediate/DisplacementMap/OGLES2/Build/WindowsVC2010/OGLES2DisplacementMap.vcxproj b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Intermediate/DisplacementMap/OGLES2/Build/WindowsVC2010/OGLES2DisplacementMap.vcxproj
index 8b216a8a220..113cad5cbb7 100644
--- a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Intermediate/DisplacementMap/OGLES2/Build/WindowsVC2010/OGLES2DisplacementMap.vcxproj
+++ b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Examples/Intermediate/DisplacementMap/OGLES2/Build/WindowsVC2010/OGLES2DisplacementMap.vcxproj
@@ -22,6 +22,7 @@
<ProjectGuid>{04FC5430-3F1B-42A2-A18A-D8BB7E5B2733}</ProjectGuid>
<RootNamespace>OGLES2DisplacementMap</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
diff --git a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Tools/OGLES2/Build/WindowsVC2010/OGLES2Tools.vcxproj b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Tools/OGLES2/Build/WindowsVC2010/OGLES2Tools.vcxproj
index 1c3d36579f4..66a944e2327 100644
--- a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Tools/OGLES2/Build/WindowsVC2010/OGLES2Tools.vcxproj
+++ b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Tools/OGLES2/Build/WindowsVC2010/OGLES2Tools.vcxproj
@@ -23,6 +23,7 @@
<RootNamespace>OGLES2Tools</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
@@ -86,6 +87,7 @@
</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -99,6 +101,7 @@
</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -113,6 +116,7 @@
</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -127,6 +131,7 @@
</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Tools/OGLES3/Build/WindowsVC2010/OGLES3Tools.vcxproj b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Tools/OGLES3/Build/WindowsVC2010/OGLES3Tools.vcxproj
index f0eeaf6f302..2d4be7980e4 100644
--- a/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Tools/OGLES3/Build/WindowsVC2010/OGLES3Tools.vcxproj
+++ b/chromium/third_party/swiftshader/third_party/PowerVR_SDK/Tools/OGLES3/Build/WindowsVC2010/OGLES3Tools.vcxproj
@@ -23,6 +23,7 @@
<RootNamespace>OGLES3Tools</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
@@ -86,6 +87,7 @@
</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -99,6 +101,7 @@
</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -113,6 +116,7 @@
</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -127,6 +131,7 @@
</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/chromium/third_party/swiftshader/third_party/SPIRV-Headers/Android.bp b/chromium/third_party/swiftshader/third_party/SPIRV-Headers/Android.bp
new file mode 100644
index 00000000000..96b7faa8674
--- /dev/null
+++ b/chromium/third_party/swiftshader/third_party/SPIRV-Headers/Android.bp
@@ -0,0 +1,34 @@
+filegroup {
+ name: "swiftshader_spirv.core.grammar.json-1.0",
+ srcs: ["include/spirv/1.0/spirv.core.grammar.json"],
+}
+
+filegroup {
+ name: "swiftshader_spirv.core.grammar.json-1.1",
+ srcs: ["include/spirv/1.1/spirv.core.grammar.json"],
+}
+
+filegroup {
+ name: "swiftshader_spirv.core.grammar.json-1.2",
+ srcs: ["include/spirv/1.2/spirv.core.grammar.json"],
+}
+
+filegroup {
+ name: "swiftshader_spirv.core.grammar.json-unified1",
+ srcs: ["include/spirv/unified1/spirv.core.grammar.json"],
+}
+
+filegroup {
+ name: "swiftshader_spirv.glsl.grammar.json",
+ srcs: ["include/spirv/1.2/extinst.glsl.std.450.grammar.json"],
+}
+
+filegroup {
+ name: "swiftshader_spirv.opencl.grammar.json",
+ srcs: ["include/spirv/1.2/extinst.opencl.std.100.grammar.json"],
+}
+
+filegroup {
+ name: "swiftshader_spirv.registry.xml",
+ srcs: ["include/spirv/spir-v.xml"],
+}
diff --git a/chromium/third_party/swiftshader/third_party/SPIRV-Tools/Android.bp b/chromium/third_party/swiftshader/third_party/SPIRV-Tools/Android.bp
new file mode 100644
index 00000000000..e3eab69652d
--- /dev/null
+++ b/chromium/third_party/swiftshader/third_party/SPIRV-Tools/Android.bp
@@ -0,0 +1,255 @@
+//
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// SPIRV Tools
+
+filegroup {
+ name: "swiftshader_spirv.debuginfo.grammar.json",
+ srcs: ["source/extinst.debuginfo.grammar.json"],
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_1.0",
+ out: [
+ "core.insts-1.0.inc",
+ "operand.kinds-1.0.inc",
+ "glsl.std.450.insts.inc",
+ "opencl.std.insts.inc",
+ ],
+ srcs: [
+ ":swiftshader_spirv.core.grammar.json-1.0",
+ ":swiftshader_spirv.glsl.grammar.json",
+ ":swiftshader_spirv.opencl.grammar.json",
+ ":swiftshader_spirv.debuginfo.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --spirv-core-grammar=$(location :swiftshader_spirv.core.grammar.json-1.0) "+
+ "--extinst-glsl-grammar=$(location :swiftshader_spirv.glsl.grammar.json) "+
+ "--extinst-opencl-grammar=$(location :swiftshader_spirv.opencl.grammar.json) "+
+ "--extinst-debuginfo-grammar=$(location :swiftshader_spirv.debuginfo.grammar.json) "+
+ "--core-insts-output=$(location core.insts-1.0.inc) "+
+ "--glsl-insts-output=$(location glsl.std.450.insts.inc) "+
+ "--opencl-insts-output=$(location opencl.std.insts.inc) "+
+ "--operand-kinds-output=$(location operand.kinds-1.0.inc)",
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_1.1",
+ out: [
+ "core.insts-1.1.inc",
+ "operand.kinds-1.1.inc",
+ ],
+ srcs: [
+ ":swiftshader_spirv.core.grammar.json-1.1",
+ ":swiftshader_spirv.debuginfo.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --spirv-core-grammar=$(location :swiftshader_spirv.core.grammar.json-1.1) "+
+ "--extinst-debuginfo-grammar=$(location :swiftshader_spirv.debuginfo.grammar.json) "+
+ "--core-insts-output=$(location core.insts-1.1.inc) "+
+ "--operand-kinds-output=$(location operand.kinds-1.1.inc)",
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_1.2",
+ out: [
+ "core.insts-1.2.inc",
+ "operand.kinds-1.2.inc",
+ ],
+ srcs: [
+ ":swiftshader_spirv.core.grammar.json-1.2",
+ ":swiftshader_spirv.debuginfo.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --spirv-core-grammar=$(location :swiftshader_spirv.core.grammar.json-1.2) "+
+ "--extinst-debuginfo-grammar=$(location :swiftshader_spirv.debuginfo.grammar.json) "+
+ "--core-insts-output=$(location core.insts-1.2.inc) "+
+ "--operand-kinds-output=$(location operand.kinds-1.2.inc)",
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_unified1",
+ out: [
+ "core.insts-unified1.inc",
+ "operand.kinds-unified1.inc",
+ ],
+ srcs: [
+ ":swiftshader_spirv.core.grammar.json-unified1",
+ ":swiftshader_spirv.debuginfo.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --spirv-core-grammar=$(location :swiftshader_spirv.core.grammar.json-unified1) "+
+ "--extinst-debuginfo-grammar=$(location :swiftshader_spirv.debuginfo.grammar.json) "+
+ "--core-insts-output=$(location core.insts-unified1.inc) "+
+ "--operand-kinds-output=$(location operand.kinds-unified1.inc)",
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_debuginfo",
+ out: [
+ "debuginfo.insts.inc",
+ ],
+ srcs: [
+ ":swiftshader_spirv.debuginfo.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --extinst-vendor-grammar=$(in) "+
+ "--vendor-insts-output=$(out)"
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_amd-gcn-shader",
+ out: [
+ "spv-amd-gcn-shader.insts.inc",
+ ],
+ srcs: [
+ "source/extinst.spv-amd-gcn-shader.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --extinst-vendor-grammar=$(in) "+
+ "--vendor-insts-output=$(out)"
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_amd-shader-ballot",
+ out: [
+ "spv-amd-shader-ballot.insts.inc",
+ ],
+ srcs: [
+ "source/extinst.spv-amd-shader-ballot.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --extinst-vendor-grammar=$(in) "+
+ "--vendor-insts-output=$(out)"
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_amd-shader-explicit-vertex-parameter",
+ out: [
+ "spv-amd-shader-explicit-vertex-parameter.insts.inc",
+ ],
+ srcs: [
+ "source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --extinst-vendor-grammar=$(in) "+
+ "--vendor-insts-output=$(out)"
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_amd-shader-trinary-minmax",
+ out: [
+ "spv-amd-shader-trinary-minmax.insts.inc",
+ ],
+ srcs: [
+ "source/extinst.spv-amd-shader-trinary-minmax.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --extinst-vendor-grammar=$(in) "+
+ "--vendor-insts-output=$(out)"
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_lang_headers",
+ out: [
+ "DebugInfo.h",
+ ],
+ srcs: [
+ ":swiftshader_spirv.debuginfo.grammar.json",
+ ],
+ tool_files: ["utils/generate_language_headers.py"],
+ cmd: "$(location) --extinst-name=DebugInfo "+
+ "--extinst-grammar=$(location :swiftshader_spirv.debuginfo.grammar.json) "+
+ "--extinst-output-base=$$(dirname $(location DebugInfo.h))/DebugInfo",
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_enum_string_mapping",
+ out: [
+ "extension_enum.inc",
+ "enum_string_mapping.inc",
+ ],
+ srcs: [
+ ":swiftshader_spirv.core.grammar.json-unified1",
+ ":swiftshader_spirv.debuginfo.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --spirv-core-grammar=$(location :swiftshader_spirv.core.grammar.json-unified1) "+
+ "--extinst-debuginfo-grammar=$(location :swiftshader_spirv.debuginfo.grammar.json) "+
+ "--extension-enum-output=$(location extension_enum.inc) "+
+ "--enum-string-mapping-output=$(location enum_string_mapping.inc) "
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_generators_inc",
+ out: [
+ "generators.inc"
+ ],
+ srcs: [
+ ":swiftshader_spirv.registry.xml"
+ ],
+ tool_files: ["utils/generate_registry_tables.py"],
+ cmd: "$(location) --xml=$(location :swiftshader_spirv.registry.xml) --generator-output=$(location generators.inc)",
+}
+
+genrule { // FIXME this relies on `git` which is no good on build machines
+ name: "swiftshader_gen_spvtools_build_version_inc",
+ out: ["build-version.inc"],
+ srcs: ["CHANGES"],
+ tool_files: ["utils/update_build_version.py"],
+ cmd: "$(location) $$(dirname $(location CHANGES)) " +
+ "$(location build-version.inc)",
+}
+
+cc_library_static {
+ name: "swiftshader_spirv-tools",
+ vendor_available: true,
+ sdk_version: "27",
+ srcs: [
+ "source/*.cpp",
+ "source/util/*.cpp",
+ "source/val/*.cpp",
+ "source/opt/*.cpp",
+ ],
+ local_include_dirs: [
+ "source",
+ ],
+ export_include_dirs: [
+ "include",
+ ],
+ include_dirs: [
+ "external/swiftshader/third_party/SPIRV-Headers/include"
+ ],
+ generated_headers: [
+ "swiftshader_gen_spvtools_grammar_tables_1.0",
+ "swiftshader_gen_spvtools_grammar_tables_1.1",
+ "swiftshader_gen_spvtools_grammar_tables_1.2",
+ "swiftshader_gen_spvtools_grammar_tables_unified1",
+ "swiftshader_gen_spvtools_grammar_tables_debuginfo",
+ "swiftshader_gen_spvtools_grammar_tables_amd-gcn-shader",
+ "swiftshader_gen_spvtools_grammar_tables_amd-shader-ballot",
+ "swiftshader_gen_spvtools_grammar_tables_amd-shader-explicit-vertex-parameter",
+ "swiftshader_gen_spvtools_grammar_tables_amd-shader-trinary-minmax",
+ "swiftshader_gen_spvtools_enum_string_mapping",
+ "swiftshader_gen_spvtools_generators_inc",
+ "swiftshader_gen_spvtools_build_version_inc",
+ "swiftshader_gen_spvtools_lang_headers",
+ ],
+ stl: "libc++_static",
+ cppflags: [
+ "-Wno-implicit-fallthrough"
+ ],
+}
diff --git a/chromium/third_party/swiftshader/third_party/libbacktrace/config/darwin/include/backtrace-supported.h b/chromium/third_party/swiftshader/third_party/libbacktrace/config/darwin/include/backtrace-supported.h
new file mode 100644
index 00000000000..7709fcab748
--- /dev/null
+++ b/chromium/third_party/swiftshader/third_party/libbacktrace/config/darwin/include/backtrace-supported.h
@@ -0,0 +1,66 @@
+/* backtrace-supported.h.in -- Whether stack backtrace is supported.
+ Copyright (C) 2012-2016 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Google.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ (1) Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ (2) 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.
+
+ (3) The name of the author may not be used to
+ endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. */
+
+/* The file backtrace-supported.h.in is used by configure to generate
+ the file backtrace-supported.h. The file backtrace-supported.h may
+ be #include'd to see whether the backtrace library will be able to
+ get a backtrace and produce symbolic information. */
+
+
+/* BACKTRACE_SUPPORTED will be #define'd as 1 if the backtrace library
+ should work, 0 if it will not. Libraries may #include this to make
+ other arrangements. */
+
+#define BACKTRACE_SUPPORTED 1
+
+/* BACKTRACE_USES_MALLOC will be #define'd as 1 if the backtrace
+ library will call malloc as it works, 0 if it will call mmap
+ instead. This may be used to determine whether it is safe to call
+ the backtrace functions from a signal handler. In general this
+ only applies to calls like backtrace and backtrace_pcinfo. It does
+ not apply to backtrace_simple, which never calls malloc. It does
+ not apply to backtrace_print, which always calls fprintf and
+ therefore malloc. */
+
+#define BACKTRACE_USES_MALLOC 0
+
+/* BACKTRACE_SUPPORTS_THREADS will be #define'd as 1 if the backtrace
+ library is configured with threading support, 0 if not. If this is
+ 0, the threaded parameter to backtrace_create_state must be passed
+ as 0. */
+
+#define BACKTRACE_SUPPORTS_THREADS 1
+
+/* BACKTRACE_SUPPORTS_DATA will be #defined'd as 1 if the backtrace_syminfo
+ will work for variables. It will always work for functions. */
+
+#define BACKTRACE_SUPPORTS_DATA 1
diff --git a/chromium/third_party/swiftshader/third_party/libbacktrace/config/darwin/include/config.h b/chromium/third_party/swiftshader/third_party/libbacktrace/config/darwin/include/config.h
new file mode 100644
index 00000000000..ee92775ba6b
--- /dev/null
+++ b/chromium/third_party/swiftshader/third_party/libbacktrace/config/darwin/include/config.h
@@ -0,0 +1,150 @@
+/* config.h. Generated from config.h.in by configure. */
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* ELF size: 32 or 64 */
+#define BACKTRACE_ELF_SIZE 64
+
+/* XCOFF size: 32 or 64 */
+#define BACKTRACE_XCOFF_SIZE unused
+
+/* Define to 1 if you have the __atomic functions */
+#define HAVE_ATOMIC_FUNCTIONS 1
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#define HAVE_CLOCK_GETTIME 1
+
+/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
+ don't. */
+#define HAVE_DECL_STRNLEN 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if dl_iterate_phdr is available. */
+/* #undef HAVE_DL_ITERATE_PHDR */
+
+/* Define to 1 if you have the fcntl function */
+#define HAVE_FCNTL 1
+
+/* Define if getexecname is available. */
+/* #undef HAVE_GETEXECNAME */
+
+/* Define if _Unwind_GetIPInfo is available. */
+#define HAVE_GETIPINFO 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `z' library (-lz). */
+#define HAVE_LIBZ 1
+
+/* Define to 1 if you have the <link.h> header file. */
+/* #undef HAVE_LINK_H */
+
+/* Define if AIX loadquery is available. */
+/* #undef HAVE_LOADQUERY */
+
+/* Define to 1 if you have the `lstat' function. */
+#define HAVE_LSTAT 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `readlink' function. */
+#define HAVE_READLINK 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the __sync functions */
+#define HAVE_SYNC_FUNCTIONS 1
+
+/* Define to 1 if you have the <sys/ldr.h> header file. */
+/* #undef HAVE_SYS_LDR_H */
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define if -lz is available. */
+#define HAVE_ZLIB 1
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#define LT_OBJDIR ".libs/"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "package-unused"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "package-unused version-unused"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "libbacktrace"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "version-unused"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# define _ALL_SOURCE 1
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# define _POSIX_PTHREAD_SEMANTICS 1
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# define _TANDEM_SOURCE 1
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# define __EXTENSIONS__ 1
+#endif
+
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to 1 if on MINIX. */
+/* #undef _MINIX */
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+/* #undef _POSIX_SOURCE */
diff --git a/chromium/third_party/swiftshader/third_party/libbacktrace/config/linux/include/backtrace-supported.h b/chromium/third_party/swiftshader/third_party/libbacktrace/config/linux/include/backtrace-supported.h
new file mode 100644
index 00000000000..7709fcab748
--- /dev/null
+++ b/chromium/third_party/swiftshader/third_party/libbacktrace/config/linux/include/backtrace-supported.h
@@ -0,0 +1,66 @@
+/* backtrace-supported.h.in -- Whether stack backtrace is supported.
+ Copyright (C) 2012-2016 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Google.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ (1) Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ (2) 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.
+
+ (3) The name of the author may not be used to
+ endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. */
+
+/* The file backtrace-supported.h.in is used by configure to generate
+ the file backtrace-supported.h. The file backtrace-supported.h may
+ be #include'd to see whether the backtrace library will be able to
+ get a backtrace and produce symbolic information. */
+
+
+/* BACKTRACE_SUPPORTED will be #define'd as 1 if the backtrace library
+ should work, 0 if it will not. Libraries may #include this to make
+ other arrangements. */
+
+#define BACKTRACE_SUPPORTED 1
+
+/* BACKTRACE_USES_MALLOC will be #define'd as 1 if the backtrace
+ library will call malloc as it works, 0 if it will call mmap
+ instead. This may be used to determine whether it is safe to call
+ the backtrace functions from a signal handler. In general this
+ only applies to calls like backtrace and backtrace_pcinfo. It does
+ not apply to backtrace_simple, which never calls malloc. It does
+ not apply to backtrace_print, which always calls fprintf and
+ therefore malloc. */
+
+#define BACKTRACE_USES_MALLOC 0
+
+/* BACKTRACE_SUPPORTS_THREADS will be #define'd as 1 if the backtrace
+ library is configured with threading support, 0 if not. If this is
+ 0, the threaded parameter to backtrace_create_state must be passed
+ as 0. */
+
+#define BACKTRACE_SUPPORTS_THREADS 1
+
+/* BACKTRACE_SUPPORTS_DATA will be #defined'd as 1 if the backtrace_syminfo
+ will work for variables. It will always work for functions. */
+
+#define BACKTRACE_SUPPORTS_DATA 1
diff --git a/chromium/third_party/swiftshader/third_party/libbacktrace/config/linux/include/config.h b/chromium/third_party/swiftshader/third_party/libbacktrace/config/linux/include/config.h
new file mode 100644
index 00000000000..7333ecaa050
--- /dev/null
+++ b/chromium/third_party/swiftshader/third_party/libbacktrace/config/linux/include/config.h
@@ -0,0 +1,150 @@
+/* config.h. Generated from config.h.in by configure. */
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* ELF size: 32 or 64 */
+#define BACKTRACE_ELF_SIZE 64
+
+/* XCOFF size: 32 or 64 */
+#define BACKTRACE_XCOFF_SIZE unused
+
+/* Define to 1 if you have the __atomic functions */
+#define HAVE_ATOMIC_FUNCTIONS 1
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#define HAVE_CLOCK_GETTIME 1
+
+/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
+ don't. */
+#define HAVE_DECL_STRNLEN 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if dl_iterate_phdr is available. */
+#define HAVE_DL_ITERATE_PHDR 1
+
+/* Define to 1 if you have the fcntl function */
+#define HAVE_FCNTL 1
+
+/* Define if getexecname is available. */
+/* #undef HAVE_GETEXECNAME */
+
+/* Define if _Unwind_GetIPInfo is available. */
+#define HAVE_GETIPINFO 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `z' library (-lz). */
+#define HAVE_LIBZ 1
+
+/* Define to 1 if you have the <link.h> header file. */
+#define HAVE_LINK_H 1
+
+/* Define if AIX loadquery is available. */
+/* #undef HAVE_LOADQUERY */
+
+/* Define to 1 if you have the `lstat' function. */
+#define HAVE_LSTAT 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `readlink' function. */
+#define HAVE_READLINK 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the __sync functions */
+#define HAVE_SYNC_FUNCTIONS 1
+
+/* Define to 1 if you have the <sys/ldr.h> header file. */
+/* #undef HAVE_SYS_LDR_H */
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define if -lz is available. */
+#define HAVE_ZLIB 1
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#define LT_OBJDIR ".libs/"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "package-unused"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "package-unused version-unused"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "libbacktrace"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "version-unused"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# define _ALL_SOURCE 1
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# define _POSIX_PTHREAD_SEMANTICS 1
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# define _TANDEM_SOURCE 1
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# define __EXTENSIONS__ 1
+#endif
+
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to 1 if on MINIX. */
+/* #undef _MINIX */
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+/* #undef _POSIX_SOURCE */
diff --git a/chromium/third_party/swiftshader/third_party/llvm-7.0/BUILD.gn b/chromium/third_party/swiftshader/third_party/llvm-7.0/BUILD.gn
index 0f1b937a3e3..8e8a99d7183 100644
--- a/chromium/third_party/swiftshader/third_party/llvm-7.0/BUILD.gn
+++ b/chromium/third_party/swiftshader/third_party/llvm-7.0/BUILD.gn
@@ -55,9 +55,7 @@ config("swiftshader_llvm_private_config") {
}
if (is_clang) {
- cflags += [ "-Wno-header-hygiene",
- "-Wno-error=header-hygiene"
- ]
+ cflags += [ "-Wno-header-hygiene" ]
if (target_cpu == "x86" || target_cpu == "x64") {
cflags += [ "-msse2" ]
}
diff --git a/chromium/third_party/swiftshader/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h b/chromium/third_party/swiftshader/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h
index dbc0ee2fc9b..250ae56a08f 100644
--- a/chromium/third_party/swiftshader/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h
+++ b/chromium/third_party/swiftshader/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h
@@ -5300,7 +5300,7 @@ void TargetX86Base<TraitsType>::lowerMemset(Operand *Dest, Operand *Val,
// reverse order. Then handle any remainder with overlapping copies. Since
// the remainder will be at the end, there will be reduces pressure on the
// memory unit as the access to the same memory are far apart.
- Type Ty;
+ Type Ty = IceType_void;
if (ValValue == 0 && CountValue >= BytesPerStoreq &&
CountValue <= BytesPerStorep * Traits::MEMSET_UNROLL_LIMIT) {
// When the value is zero it can be loaded into a vector register cheaply