vulkan: Changes to 'debian-unstable'
.appveyor.yml | 1
BUILD.md | 31
CMakeLists.txt | 11
common/android_util.cpp | 1
debian/changelog | 8
debian/patches/install-vk-layer-dispatch-table-h.diff | 10
debian/patches/series | 1
debian/patches/use-mxgot-for-mips64.patch | 4
demos/android/jni/Android.mk | 1
demos/cube.c | 125
demos/cube.cpp | 629 -
demos/smoke/CMakeLists.txt | 4
demos/smoke/ShellAndroid.cpp | 1
demos/smoke/ShellWayland.cpp | 147
demos/smoke/ShellWayland.h | 51
demos/smoke/Simulation.cpp | 1
demos/smoke/android/CMakeLists.txt | 5
demos/vulkaninfo.c | 353
external/glslang/.gitignore | 4
external/glslang/SPIRV/GLSL.ext.AMD.h | 28
external/glslang/SPIRV/GLSL.ext.KHR.h | 2
external/glslang/SPIRV/GlslangToSpv.cpp | 191
external/glslang/SPIRV/SpvBuilder.cpp | 50
external/glslang/SPIRV/SpvBuilder.h | 10
external/glslang/SPIRV/doc.cpp | 10
external/glslang/SPIRV/hex_float.h | 2
external/glslang/SPIRV/spirv.hpp | 25
external/glslang/SPIRV/spvIR.h | 8
external/glslang/StandAlone/StandAlone.cpp | 75
external/glslang/Test/320.comp | 5
external/glslang/Test/320.frag | 225
external/glslang/Test/320.geom | 134
external/glslang/Test/320.tesc | 150
external/glslang/Test/320.tese | 114
external/glslang/Test/320.vert | 255
external/glslang/Test/435.vert | 2
external/glslang/Test/450.vert | 20
external/glslang/Test/460.frag | 17
external/glslang/Test/460.vert | 15
external/glslang/Test/baseResults/310.frag.out | 2
external/glslang/Test/baseResults/320.comp.out | 19
external/glslang/Test/baseResults/320.frag.out | 576
external/glslang/Test/baseResults/320.geom.out | 251
external/glslang/Test/baseResults/320.tesc.out | 516
external/glslang/Test/baseResults/320.tese.out | 276
external/glslang/Test/baseResults/320.vert.out | 797 +
external/glslang/Test/baseResults/435.vert.out | 25
external/glslang/Test/baseResults/450.vert.out | 54
external/glslang/Test/baseResults/460.frag.out | 55
external/glslang/Test/baseResults/460.vert.out | 51
external/glslang/Test/baseResults/glspv.frag.out | 4
external/glslang/Test/baseResults/hlsl.aliasOpaque.frag.out | 58
external/glslang/Test/baseResults/hlsl.amend.frag.out | 6
external/glslang/Test/baseResults/hlsl.array.flatten.frag.out | 16
external/glslang/Test/baseResults/hlsl.array.multidim.frag.out | 16
external/glslang/Test/baseResults/hlsl.attribute.frag.out | 2
external/glslang/Test/baseResults/hlsl.basic.geom.out | 162
external/glslang/Test/baseResults/hlsl.calculatelod.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out | 16
external/glslang/Test/baseResults/hlsl.clipdistance-1.frag.out | 190
external/glslang/Test/baseResults/hlsl.clipdistance-1.geom.out | 737 +
external/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out | 8
external/glslang/Test/baseResults/hlsl.clipdistance-2.frag.out | 419
external/glslang/Test/baseResults/hlsl.clipdistance-2.geom.out | 924 +
external/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out | 32
external/glslang/Test/baseResults/hlsl.clipdistance-3.frag.out | 190
external/glslang/Test/baseResults/hlsl.clipdistance-3.geom.out | 830 +
external/glslang/Test/baseResults/hlsl.clipdistance-4.frag.out | 262
external/glslang/Test/baseResults/hlsl.clipdistance-4.geom.out | 819 +
external/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out | 90
external/glslang/Test/baseResults/hlsl.clipdistance-5.frag.out | 325
external/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out | 90
external/glslang/Test/baseResults/hlsl.clipdistance-6.frag.out | 399
external/glslang/Test/baseResults/hlsl.clipdistance-6.vert.out | 556
external/glslang/Test/baseResults/hlsl.clipdistance-7.frag.out | 385
external/glslang/Test/baseResults/hlsl.clipdistance-7.vert.out | 505
external/glslang/Test/baseResults/hlsl.clipdistance-8.frag.out | 285
external/glslang/Test/baseResults/hlsl.clipdistance-8.vert.out | 336
external/glslang/Test/baseResults/hlsl.clipdistance-9.frag.out | 250
external/glslang/Test/baseResults/hlsl.clipdistance-9.vert.out | 299
external/glslang/Test/baseResults/hlsl.comparison.vec.frag.out | 16
external/glslang/Test/baseResults/hlsl.constructexpr.frag.out | 16
external/glslang/Test/baseResults/hlsl.domain.1.tese.out | 385
external/glslang/Test/baseResults/hlsl.domain.2.tese.out | 220
external/glslang/Test/baseResults/hlsl.domain.3.tese.out | 159
external/glslang/Test/baseResults/hlsl.emptystructreturn.frag.out | 17
external/glslang/Test/baseResults/hlsl.emptystructreturn.vert.out | 21
external/glslang/Test/baseResults/hlsl.entry-in.frag.out | 112
external/glslang/Test/baseResults/hlsl.entry-out.frag.out | 64
external/glslang/Test/baseResults/hlsl.entry.rename.frag.out | 16
external/glslang/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out | 66
external/glslang/Test/baseResults/hlsl.explicitDescriptorSet.frag.out | 66
external/glslang/Test/baseResults/hlsl.flatten.return.frag.out | 64
external/glslang/Test/baseResults/hlsl.flattenOpaque.frag.out | 140
external/glslang/Test/baseResults/hlsl.flattenOpaqueInit.vert.out | 213
external/glslang/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out | 159
external/glslang/Test/baseResults/hlsl.gather.array.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.gather.basic.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.gather.basic.dx10.vert.out | 26
external/glslang/Test/baseResults/hlsl.gather.offset.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out | 34
external/glslang/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out | 34
external/glslang/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out | 36
external/glslang/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out | 36
external/glslang/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out | 34
external/glslang/Test/baseResults/hlsl.getdimensions.dx10.frag.out | 33
external/glslang/Test/baseResults/hlsl.getdimensions.dx10.vert.out | 26
external/glslang/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out | 40
external/glslang/Test/baseResults/hlsl.getsampleposition.dx10.frag.out | 33
external/glslang/Test/baseResults/hlsl.global-const-init.frag.out | 178
external/glslang/Test/baseResults/hlsl.hull.1.tesc.out | 37
external/glslang/Test/baseResults/hlsl.hull.2.tesc.out | 37
external/glslang/Test/baseResults/hlsl.hull.3.tesc.out | 37
external/glslang/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out | 61
external/glslang/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out | 61
external/glslang/Test/baseResults/hlsl.if.frag.out | 2
external/glslang/Test/baseResults/hlsl.implicitBool.frag.out | 4
external/glslang/Test/baseResults/hlsl.init2.frag.out | 16
external/glslang/Test/baseResults/hlsl.inoutquals.frag.out | 32
external/glslang/Test/baseResults/hlsl.intrinsic.frexp.frag.out | 16
external/glslang/Test/baseResults/hlsl.intrinsics.frag.out | 16
external/glslang/Test/baseResults/hlsl.intrinsics.promote.down.frag.out | 16
external/glslang/Test/baseResults/hlsl.intrinsics.promote.frag.out | 16
external/glslang/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out | 16
external/glslang/Test/baseResults/hlsl.isfinite.frag.out | 2
external/glslang/Test/baseResults/hlsl.load.2dms.dx10.frag.out | 37
external/glslang/Test/baseResults/hlsl.load.array.dx10.frag.out | 36
external/glslang/Test/baseResults/hlsl.load.basic.dx10.frag.out | 36
external/glslang/Test/baseResults/hlsl.load.basic.dx10.vert.out | 30
external/glslang/Test/baseResults/hlsl.load.buffer.dx10.frag.out | 36
external/glslang/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out | 36
external/glslang/Test/baseResults/hlsl.load.offset.dx10.frag.out | 36
external/glslang/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out | 36
external/glslang/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out | 22
external/glslang/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out | 38
external/glslang/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out | 38
external/glslang/Test/baseResults/hlsl.logical.binary.frag.out | 16
external/glslang/Test/baseResults/hlsl.logical.binary.vec.frag.out | 16
external/glslang/Test/baseResults/hlsl.logical.unary.frag.out | 16
external/glslang/Test/baseResults/hlsl.matNx1.frag.out | 16
external/glslang/Test/baseResults/hlsl.matType.bool.frag.out | 16
external/glslang/Test/baseResults/hlsl.matType.int.frag.out | 16
external/glslang/Test/baseResults/hlsl.matpack-1.frag.out | 187
external/glslang/Test/baseResults/hlsl.matpack-pragma.frag.out | 268
external/glslang/Test/baseResults/hlsl.matrixindex.frag.out | 16
external/glslang/Test/baseResults/hlsl.mintypes.frag.out | 16
external/glslang/Test/baseResults/hlsl.multiDescriptorSet.frag.out | 67
external/glslang/Test/baseResults/hlsl.numericsuffixes.frag.out | 16
external/glslang/Test/baseResults/hlsl.partialInit.frag.out | 64
external/glslang/Test/baseResults/hlsl.pp.line.frag.out | 32
external/glslang/Test/baseResults/hlsl.precise.frag.out | 16
external/glslang/Test/baseResults/hlsl.preprocessor.frag.out | 163
external/glslang/Test/baseResults/hlsl.promote.atomic.frag.out | 2
external/glslang/Test/baseResults/hlsl.promote.binary.frag.out | 16
external/glslang/Test/baseResults/hlsl.promotions.frag.out | 16
external/glslang/Test/baseResults/hlsl.rw.atomics.frag.out | 22
external/glslang/Test/baseResults/hlsl.rw.bracket.frag.out | 22
external/glslang/Test/baseResults/hlsl.rw.register.frag.out | 20
external/glslang/Test/baseResults/hlsl.rw.scalar.bracket.frag.out | 22
external/glslang/Test/baseResults/hlsl.rw.swizzle.frag.out | 2
external/glslang/Test/baseResults/hlsl.rw.vec2.bracket.frag.out | 22
external/glslang/Test/baseResults/hlsl.sample.array.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.sample.basic.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.sample.offset.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out | 16
external/glslang/Test/baseResults/hlsl.samplebias.array.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out | 38
external/glslang/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out | 26
external/glslang/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out | 26
external/glslang/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out | 32
external/glslang/Test/baseResults/hlsl.scalarCast.vert.out | 55
external/glslang/Test/baseResults/hlsl.semantic-1.vert.out | 374
external/glslang/Test/baseResults/hlsl.semantic.geom.out | 425
external/glslang/Test/baseResults/hlsl.semantic.vert.out | 621 -
external/glslang/Test/baseResults/hlsl.semicolons.frag.out | 16
external/glslang/Test/baseResults/hlsl.stringtoken.frag.out | 16
external/glslang/Test/baseResults/hlsl.struct.frag.out | 305
external/glslang/Test/baseResults/hlsl.struct.split-1.vert.out | 128
external/glslang/Test/baseResults/hlsl.struct.split.array.geom.out | 39
external/glslang/Test/baseResults/hlsl.struct.split.assign.frag.out | 236
external/glslang/Test/baseResults/hlsl.struct.split.call.vert.out | 128
external/glslang/Test/baseResults/hlsl.struct.split.nested.geom.out | 451
external/glslang/Test/baseResults/hlsl.struct.split.trivial.geom.out | 61
external/glslang/Test/baseResults/hlsl.struct.split.trivial.vert.out | 42
external/glslang/Test/baseResults/hlsl.structIoFourWay.frag.out | 305
external/glslang/Test/baseResults/hlsl.structarray.flatten.frag.out | 159
external/glslang/Test/baseResults/hlsl.structarray.flatten.geom.out | 112
external/glslang/Test/baseResults/hlsl.structbuffer.coherent.frag.out | 2
external/glslang/Test/baseResults/hlsl.structbuffer.fn.frag.out | 1
external/glslang/Test/baseResults/hlsl.structbuffer.fn2.comp.out | 3
external/glslang/Test/baseResults/hlsl.structbuffer.frag.out | 3
external/glslang/Test/baseResults/hlsl.structin.vert.out | 550
external/glslang/Test/baseResults/hlsl.switch.frag.out | 2
external/glslang/Test/baseResults/hlsl.synthesizeInput.frag.out | 67
external/glslang/Test/baseResults/hlsl.target.frag.out | 79
external/glslang/Test/baseResults/hlsl.targetStruct1.frag.out | 99
external/glslang/Test/baseResults/hlsl.targetStruct2.frag.out | 99
external/glslang/Test/baseResults/hlsl.texture.struct.frag.out | 1184 +
external/glslang/Test/baseResults/hlsl.tx.bracket.frag.out | 20
external/glslang/Test/baseResults/reflection.vert.out | 9
external/glslang/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out | 14
external/glslang/Test/baseResults/remap.hlsl.sample.basic.none.frag.out | 16
external/glslang/Test/baseResults/spv.450.geom.out | 16
external/glslang/Test/baseResults/spv.450.tesc.out | 156
external/glslang/Test/baseResults/spv.460.comp.out | 33
external/glslang/Test/baseResults/spv.460.frag.out | 51
external/glslang/Test/baseResults/spv.460.vert.out | 45
external/glslang/Test/baseResults/spv.buffer.autoassign.frag.out | 8
external/glslang/Test/baseResults/spv.debugInfo.frag.out | 18
external/glslang/Test/baseResults/spv.hlslDebugInfo.frag.out | 58
external/glslang/Test/baseResults/spv.image.frag.out | 9
external/glslang/Test/baseResults/spv.imageLoadStoreLod.frag.out | 135
external/glslang/Test/baseResults/spv.looseUniformNoLoc.vert.out | 8
external/glslang/Test/baseResults/spv.memoryQualifier.frag.out | 6
external/glslang/Test/baseResults/spv.noBuiltInLoc.vert.out | 74
external/glslang/Test/baseResults/spv.paramMemory.frag.out | 137
external/glslang/Test/baseResults/spv.register.autoassign-2.frag.out | 8
external/glslang/Test/baseResults/spv.register.autoassign.frag.out | 8
external/glslang/Test/baseResults/spv.register.noautoassign.frag.out | 8
external/glslang/Test/baseResults/spv.rw.autoassign.frag.out | 12
external/glslang/Test/baseResults/spv.separate.frag.out | 1
external/glslang/Test/baseResults/spv.shaderStencilExport.frag.out | 4
external/glslang/Test/baseResults/spv.sparseTexture.frag.out | 1
external/glslang/Test/baseResults/spv.ssbo.autoassign.frag.out | 2
external/glslang/Test/baseResults/spv.stereoViewRendering.vert.out | 1
external/glslang/Test/baseResults/spv.subpass.frag.out | 1
external/glslang/Test/baseResults/spv.viewportArray2.tesc.out | 1
external/glslang/Test/baseResults/spv.viewportArray2.vert.out | 1
external/glslang/Test/glspv.frag | 7
external/glslang/Test/hlsl.clipdistance-1.frag | 6
external/glslang/Test/hlsl.clipdistance-1.geom | 19
external/glslang/Test/hlsl.clipdistance-2.frag | 7
external/glslang/Test/hlsl.clipdistance-2.geom | 19
external/glslang/Test/hlsl.clipdistance-3.frag | 6
external/glslang/Test/hlsl.clipdistance-3.geom | 20
external/glslang/Test/hlsl.clipdistance-4.frag | 9
external/glslang/Test/hlsl.clipdistance-4.geom | 21
external/glslang/Test/hlsl.clipdistance-5.frag | 9
external/glslang/Test/hlsl.clipdistance-6.frag | 10
external/glslang/Test/hlsl.clipdistance-6.vert | 23
external/glslang/Test/hlsl.clipdistance-7.frag | 10
external/glslang/Test/hlsl.clipdistance-7.vert | 23
external/glslang/Test/hlsl.clipdistance-8.frag | 10
external/glslang/Test/hlsl.clipdistance-8.vert | 20
external/glslang/Test/hlsl.clipdistance-9.frag | 8
external/glslang/Test/hlsl.clipdistance-9.vert | 19
external/glslang/Test/hlsl.domain.1.tese | 4
external/glslang/Test/hlsl.explicitDescriptorSet.frag | 15
external/glslang/Test/hlsl.flattenOpaqueInit.vert | 22
external/glslang/Test/hlsl.flattenOpaqueInitMix.vert | 13
external/glslang/Test/hlsl.function.frag | 2
external/glslang/Test/hlsl.global-const-init.frag | 14
external/glslang/Test/hlsl.matpack-1.frag | 27
external/glslang/Test/hlsl.matpack-pragma.frag | 33
external/glslang/Test/hlsl.preprocessor.frag | 13
external/glslang/Test/hlsl.semantic-1.vert | 24
external/glslang/Test/hlsl.semantic.geom | 5
external/glslang/Test/hlsl.semantic.vert | 8
external/glslang/Test/hlsl.struct.split.assign.frag | 2
external/glslang/Test/hlsl.struct.split.nested.geom | 7
external/glslang/Test/hlsl.structin.vert | 13
external/glslang/Test/hlsl.switch.frag | 2
external/glslang/Test/hlsl.texture.struct.frag | 55
external/glslang/Test/hlsl.texture.subvec4.frag | 2
external/glslang/Test/reflection.vert | 24
external/glslang/Test/runtests | 23
external/glslang/Test/spv.450.geom | 2
external/glslang/Test/spv.450.tesc | 3
external/glslang/Test/spv.460.comp | 9
external/glslang/Test/spv.460.frag | 17
external/glslang/Test/spv.460.vert | 6
external/glslang/Test/spv.hlslDebugInfo.vert | 4
external/glslang/Test/spv.imageLoadStoreLod.frag | 36
external/glslang/Test/spv.looseUniformNoLoc.vert | 15
external/glslang/Test/spv.noBuiltInLoc.vert | 17
external/glslang/Test/spv.paramMemory.frag | 30
external/glslang/Test/spv.targetOpenGL.vert | 5
external/glslang/Test/vulkan.frag | 2
external/glslang/glslang/Include/Common.h | 2
external/glslang/glslang/Include/Types.h | 86
external/glslang/glslang/Include/intermediate.h | 42
external/glslang/glslang/MachineIndependent/Initialize.cpp | 189
external/glslang/glslang/MachineIndependent/Intermediate.cpp | 7
external/glslang/glslang/MachineIndependent/ParseHelper.cpp | 73
external/glslang/glslang/MachineIndependent/ParseHelper.h | 5
external/glslang/glslang/MachineIndependent/Scan.cpp | 28
external/glslang/glslang/MachineIndependent/ShaderLang.cpp | 82
external/glslang/glslang/MachineIndependent/SymbolTable.cpp | 19
external/glslang/glslang/MachineIndependent/Versions.cpp | 4
external/glslang/glslang/MachineIndependent/Versions.h | 3
external/glslang/glslang/MachineIndependent/glslang.y | 11
external/glslang/glslang/MachineIndependent/glslang_tab.cpp | 3037 ++---
external/glslang/glslang/MachineIndependent/intermOut.cpp | 15
external/glslang/glslang/MachineIndependent/iomapper.cpp | 50
external/glslang/glslang/MachineIndependent/localintermediate.h | 208
external/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp | 4
external/glslang/glslang/MachineIndependent/reflection.cpp | 30
external/glslang/glslang/MachineIndependent/reflection.h | 21
external/glslang/glslang/Public/ShaderLang.h | 16
external/glslang/gtests/AST.FromFile.cpp | 9
external/glslang/gtests/Hlsl.FromFile.cpp | 25
external/glslang/gtests/Spv.FromFile.cpp | 5
external/glslang/hlsl/hlslGrammar.cpp | 54
external/glslang/hlsl/hlslGrammar.h | 4
external/glslang/hlsl/hlslParseHelper.cpp | 1667 +-
external/glslang/hlsl/hlslParseHelper.h | 91
external/glslang/hlsl/hlslScanContext.cpp | 26
external/spirv-tools/.appveyor.yml | 1
external/spirv-tools/CHANGES | 28
external/spirv-tools/CMakeLists.txt | 4
external/spirv-tools/README.md | 40
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.core.grammar.json | 60
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.h | 9
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.hpp | 9
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.hpp11 | 9
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.json | 9
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.lua | 7
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.py | 7
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.core.grammar.json | 60
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.h | 9
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.hpp | 9
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.hpp11 | 9
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.json | 9
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.lua | 7
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.py | 7
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.core.grammar.json | 60
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.h | 9
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.hpp | 9
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.hpp11 | 9
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.json | 9
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.lua | 7
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.py | 7
external/spirv-tools/external/spirv-headers/include/spirv/spir-v.xml | 4
external/spirv-tools/include/spirv-tools/optimizer.hpp | 134
external/spirv-tools/source/CMakeLists.txt | 2
external/spirv-tools/source/comp/markv_codec.cpp | 2
external/spirv-tools/source/id_descriptor.cpp | 78
external/spirv-tools/source/id_descriptor.h | 59
external/spirv-tools/source/opt/CMakeLists.txt | 15
external/spirv-tools/source/opt/aggressive_dead_code_elim_pass.cpp | 529
external/spirv-tools/source/opt/aggressive_dead_code_elim_pass.h | 136
external/spirv-tools/source/opt/basic_block.cpp | 61
external/spirv-tools/source/opt/basic_block.h | 21
external/spirv-tools/source/opt/block_merge_pass.cpp | 68
external/spirv-tools/source/opt/block_merge_pass.h | 10
external/spirv-tools/source/opt/common_uniform_elim_pass.cpp | 622 +
external/spirv-tools/source/opt/common_uniform_elim_pass.h | 212
external/spirv-tools/source/opt/dead_branch_elim_pass.cpp | 391
external/spirv-tools/source/opt/dead_branch_elim_pass.h | 133
external/spirv-tools/source/opt/def_use_manager.cpp | 34
external/spirv-tools/source/opt/def_use_manager.h | 6
external/spirv-tools/source/opt/inline_exhaustive_pass.cpp | 74
external/spirv-tools/source/opt/inline_exhaustive_pass.h | 54
external/spirv-tools/source/opt/inline_opaque_pass.cpp | 122
external/spirv-tools/source/opt/inline_opaque_pass.h | 61
external/spirv-tools/source/opt/inline_pass.cpp | 246
external/spirv-tools/source/opt/inline_pass.h | 23
external/spirv-tools/source/opt/insert_extract_elim.cpp | 81
external/spirv-tools/source/opt/insert_extract_elim.h | 11
external/spirv-tools/source/opt/instruction.h | 24
external/spirv-tools/source/opt/local_access_chain_convert_pass.cpp | 231
external/spirv-tools/source/opt/local_access_chain_convert_pass.h | 64
external/spirv-tools/source/opt/local_single_block_elim_pass.cpp | 275
external/spirv-tools/source/opt/local_single_block_elim_pass.h | 78
external/spirv-tools/source/opt/local_single_store_elim_pass.cpp | 271
external/spirv-tools/source/opt/local_single_store_elim_pass.h | 74
external/spirv-tools/source/opt/local_ssa_elim_pass.cpp | 597
external/spirv-tools/source/opt/local_ssa_elim_pass.h | 193
external/spirv-tools/source/opt/mem_pass.cpp | 299
external/spirv-tools/source/opt/mem_pass.h | 136
external/spirv-tools/source/opt/module.cpp | 9
external/spirv-tools/source/opt/module.h | 16
external/spirv-tools/source/opt/optimizer.cpp | 30
external/spirv-tools/source/opt/pass.cpp | 65
external/spirv-tools/source/opt/pass.h | 14
external/spirv-tools/source/opt/passes.h | 7
external/spirv-tools/source/print.cpp | 64
external/spirv-tools/source/spirv_stats.cpp | 109
external/spirv-tools/source/spirv_stats.h | 40
external/spirv-tools/source/util/bit_stream.cpp | 2
external/spirv-tools/source/util/huffman_codec.h | 256
external/spirv-tools/source/util/move_to_front.h | 215
external/spirv-tools/source/validate_id.cpp | 4
external/spirv-tools/source/validate_type_unique.cpp | 9
external/spirv-tools/test/bit_stream.cpp | 19
external/spirv-tools/test/enum_string_mapping_test.cpp | 5
external/spirv-tools/test/huffman_codec.cpp | 98
external/spirv-tools/test/move_to_front_test.cpp | 142
external/spirv-tools/test/operand_capabilities_test.cpp | 2
external/spirv-tools/test/opt/CMakeLists.txt | 25
external/spirv-tools/test/opt/aggressive_dead_code_elim_test.cpp | 1061 +
external/spirv-tools/test/opt/common_uniform_elim_test.cpp | 673 +
external/spirv-tools/test/opt/dead_branch_elim_test.cpp | 1076 +
external/spirv-tools/test/opt/inline_opaque_test.cpp | 412
external/spirv-tools/test/opt/inline_test.cpp | 519
external/spirv-tools/test/opt/insert_extract_elim_test.cpp | 82
external/spirv-tools/test/opt/instruction_test.cpp | 73
external/spirv-tools/test/opt/local_access_chain_convert_test.cpp | 209
external/spirv-tools/test/opt/local_single_block_elim.cpp | 428
external/spirv-tools/test/opt/local_single_store_elim_test.cpp | 204
external/spirv-tools/test/opt/local_ssa_elim_test.cpp | 1239 ++
external/spirv-tools/test/stats/stats_aggregate_test.cpp | 51
external/spirv-tools/test/val/val_capability_test.cpp | 2
external/spirv-tools/test/val/val_type_unique_test.cpp | 33
external/spirv-tools/tools/dis/dis.cpp | 14
external/spirv-tools/tools/opt/opt.cpp | 67
external/spirv-tools/tools/stats/stats.cpp | 152
external/spirv-tools/tools/stats/stats_analyzer.cpp | 574
external/spirv-tools/tools/stats/stats_analyzer.h | 29
external_revisions/glslang_revision | 2
external_revisions/spirv-headers_revision | 2
external_revisions/spirv-tools_revision | 2
include/vulkan/vk_icd.h | 2
include/vulkan/vulkan.h | 624 -
include/vulkan/vulkan.hpp | 2507 +++-
layers/CMakeLists.txt | 7
layers/buffer_validation.cpp | 586
layers/buffer_validation.h | 17
layers/core_validation.cpp | 1730 +-
layers/core_validation_types.h | 42
layers/descriptor_sets.cpp | 46
layers/descriptor_sets.h | 5
layers/linux/VkLayer_core_validation.json | 2
layers/linux/VkLayer_object_tracker.json | 2
layers/linux/VkLayer_parameter_validation.json | 2
layers/linux/VkLayer_standard_validation.json | 2
layers/linux/VkLayer_threading.json | 2
layers/linux/VkLayer_unique_objects.json | 2
layers/object_tracker.cpp | 5527 ---------
layers/object_tracker.h | 193
layers/object_tracker_utils.cpp | 1096 +
layers/parameter_validation.cpp | 6004 ----------
layers/parameter_validation.h | 897 +
layers/parameter_validation_utils.cpp | 2467 ++++
layers/parameter_validation_utils.h | 898 -
layers/shader_validation.cpp | 25
layers/threading.h | 7
layers/unique_objects.cpp | 4
layers/vk_layer_logging.h | 15
layers/vk_layer_settings.txt | 2
layers/vk_layer_utils.cpp | 14
layers/vk_validation_error_database.txt | 932 +
layers/vk_validation_error_messages.h | 824 +
layers/vu_csv_stats.sh | 38
layers/windows/VkLayer_core_validation.json | 2
layers/windows/VkLayer_object_tracker.json | 2
layers/windows/VkLayer_parameter_validation.json | 2
layers/windows/VkLayer_standard_validation.json | 2
layers/windows/VkLayer_threading.json | 2
layers/windows/VkLayer_unique_objects.json | 2
libs/vkjson/vkjson.cc | 6
libs/vkjson/vkjson_info.cc | 12
libs/vkjson/vkjson_instance.cc | 3
loader/CMakeLists.txt | 4
loader/LoaderAndLayerInterface.md | 90
loader/loader.c | 386
loader/loader.h | 1
loader/trampoline.c | 5
loader/unknown_ext_chain_gas.asm | 4
loader/vk_loader_platform.h | 26
scripts/cgenerator.py | 18
scripts/generator.py | 7
scripts/helper_file_generator.py | 30
scripts/lvl_genvk.py | 33
scripts/object_tracker_generator.py | 949 +
scripts/parameter_validation_generator.py | 396
scripts/reg.py | 14
scripts/unique_objects_generator.py | 16
scripts/vk.xml | 2459 ++--
scripts/vk_validation_stats.py | 11
scripts/vuid_mapping.py | 69
tests/_run_all_tests.ps1 | 3
tests/layer_validation_tests.cpp | 4093 +++---
tests/layers/device_profile_api.cpp | 92
tests/layers/linux/VkLayer_device_profile_api.json | 2
tests/layers/linux/VkLayer_test.json | 2
tests/layers/linux/VkLayer_wrap_objects.json | 2
tests/layers/vk_device_profile_api_layer.h | 2
tests/layers/vk_lunarg_device_profile_api_layer.h | 4
tests/layers/windows/VkLayer_device_profile_api.json | 2
tests/layers/windows/VkLayer_test.json | 2
tests/layers/windows/VkLayer_wrap_objects.json | 2
tests/loader_validation_tests.cpp | 85
tests/run_wrap_objects_tests.sh | 2
tests/vkrenderframework.cpp | 32
tests/vkrenderframework.h | 5
update_external_sources.bat | 140
update_external_sources.sh | 101
507 files changed, 53588 insertions(+), 25500 deletions(-)
New commits:
commit 6bb8dedc75208a38b8409492fac46397f1372948
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Thu Sep 21 15:29:08 2017 +0300
release to unstable
diff --git a/debian/changelog b/debian/changelog
index a9ac23e..a150545 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,10 @@
-vulkan (1.0.61.1+dfsg1-1) UNRELEASED; urgency=medium
+vulkan (1.0.61.1+dfsg1-1) unstable; urgency=medium
* New upstream release.
* patches: Dropped install-vk-layer-dispatch-table-h.diff which is
upstream, refresh use-mxgot-for-mips64.patch.
- -- Timo Aaltonen <tjaalton@debian.org> Thu, 21 Sep 2017 15:16:32 +0300
+ -- Timo Aaltonen <tjaalton@debian.org> Thu, 21 Sep 2017 15:28:57 +0300
vulkan (1.0.54.0+dfsg1-1) unstable; urgency=medium
commit 40d9e4434c99d5e53940da8305fee1bd6157526b
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Thu Sep 21 15:27:35 2017 +0300
patches: Dropped install-vk-layer-dispatch-table-h.diff which is upstream, refresh use-mxgot-for-mips64.patch.
diff --git a/debian/changelog b/debian/changelog
index 919c74d..a9ac23e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,8 @@
vulkan (1.0.61.1+dfsg1-1) UNRELEASED; urgency=medium
* New upstream release.
+ * patches: Dropped install-vk-layer-dispatch-table-h.diff which is
+ upstream, refresh use-mxgot-for-mips64.patch.
-- Timo Aaltonen <tjaalton@debian.org> Thu, 21 Sep 2017 15:16:32 +0300
diff --git a/debian/patches/install-vk-layer-dispatch-table-h.diff b/debian/patches/install-vk-layer-dispatch-table-h.diff
deleted file mode 100644
index 86a4ad7..0000000
--- a/debian/patches/install-vk-layer-dispatch-table-h.diff
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -318,6 +318,7 @@ endif()
- if(UNIX)
- if(INSTALL_LVL_FILES)
- install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/vulkan" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-+ install(FILES "${CMAKE_BINARY_DIR}/vk_layer_dispatch_table.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/vulkan)
- endif()
-
- # uninstall target
diff --git a/debian/patches/series b/debian/patches/series
index 382d831..146bbf8 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1,3 @@
demos-dont-build-cube.diff
use-mxgot-for-mips64.patch
install-vulkan-intel-header.diff
-install-vk-layer-dispatch-table-h.diff
diff --git a/debian/patches/use-mxgot-for-mips64.patch b/debian/patches/use-mxgot-for-mips64.patch
index f2755c3..b32c3b1 100644
--- a/debian/patches/use-mxgot-for-mips64.patch
+++ b/debian/patches/use-mxgot-for-mips64.patch
@@ -3,7 +3,7 @@ Author: Dejan Latinovic <Dejan.Latinovic@imgtec.com>
--- a/layers/CMakeLists.txt
+++ b/layers/CMakeLists.txt
-@@ -138,6 +138,12 @@ if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "
+@@ -167,6 +167,12 @@ if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "
endif()
endif()
@@ -14,5 +14,5 @@ Author: Dejan Latinovic <Dejan.Latinovic@imgtec.com>
+endif()
+
run_vk_xml_generate(threading_generator.py thread_check.h)
- run_vk_xml_generate(parameter_validation_generator.py parameter_validation.h)
+ run_vk_xml_generate(parameter_validation_generator.py parameter_validation.cpp)
run_vk_xml_generate(unique_objects_generator.py unique_objects_wrappers.h)
commit d1557e281d367f2a2f7a1de846bf87717a45934c
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Thu Sep 21 15:16:58 2017 +0300
update changelog
diff --git a/debian/changelog b/debian/changelog
index 097b46a..919c74d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+vulkan (1.0.61.1+dfsg1-1) UNRELEASED; urgency=medium
+
+ * New upstream release.
+
+ -- Timo Aaltonen <tjaalton@debian.org> Thu, 21 Sep 2017 15:16:32 +0300
+
vulkan (1.0.54.0+dfsg1-1) unstable; urgency=medium
* New upstream release.
commit 2aa57af4ae93d5d73f3485ed68c74a0cd0cc2ebc
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Thu Sep 21 15:16:30 2017 +0300
Refresh external/
diff --git a/external/glslang/.gitignore b/external/glslang/.gitignore
index 30889ac..3e6cc14 100644
--- a/external/glslang/.gitignore
+++ b/external/glslang/.gitignore
@@ -6,8 +6,4 @@ tags
TAGS
build/
Test/localResults/
-Test/multiThread.out
-Test/singleThread.out
-Test/vert.spv
-Test/frag.spv
External/googletest
diff --git a/external/glslang/SPIRV/GLSL.ext.AMD.h b/external/glslang/SPIRV/GLSL.ext.AMD.h
index 4fff8c8..5121ed9 100644
--- a/external/glslang/SPIRV/GLSL.ext.AMD.h
+++ b/external/glslang/SPIRV/GLSL.ext.AMD.h
@@ -33,20 +33,11 @@ enum Decoration;
enum Op;
static const int GLSLextAMDVersion = 100;
-static const int GLSLextAMDRevision = 4;
+static const int GLSLextAMDRevision = 5;
// SPV_AMD_shader_ballot
static const char* const E_SPV_AMD_shader_ballot = "SPV_AMD_shader_ballot";
-static const Op OpGroupIAddNonUniformAMD = static_cast<Op>(5000);
-static const Op OpGroupFAddNonUniformAMD = static_cast<Op>(5001);
-static const Op OpGroupFMinNonUniformAMD = static_cast<Op>(5002);
-static const Op OpGroupUMinNonUniformAMD = static_cast<Op>(5003);
-static const Op OpGroupSMinNonUniformAMD = static_cast<Op>(5004);
-static const Op OpGroupFMaxNonUniformAMD = static_cast<Op>(5005);
-static const Op OpGroupUMaxNonUniformAMD = static_cast<Op>(5006);
-static const Op OpGroupSMaxNonUniformAMD = static_cast<Op>(5007);
-
enum ShaderBallotAMD {
ShaderBallotBadAMD = 0, // Don't use
@@ -80,16 +71,6 @@ enum ShaderTrinaryMinMaxAMD {
// SPV_AMD_shader_explicit_vertex_parameter
static const char* const E_SPV_AMD_shader_explicit_vertex_parameter = "SPV_AMD_shader_explicit_vertex_parameter";
-static const BuiltIn BuiltInBaryCoordNoPerspAMD = static_cast<BuiltIn>(4992);
-static const BuiltIn BuiltInBaryCoordNoPerspCentroidAMD = static_cast<BuiltIn>(4993);
-static const BuiltIn BuiltInBaryCoordNoPerspSampleAMD = static_cast<BuiltIn>(4994);
-static const BuiltIn BuiltInBaryCoordSmoothAMD = static_cast<BuiltIn>(4995);
-static const BuiltIn BuiltInBaryCoordSmoothCentroidAMD = static_cast<BuiltIn>(4996);
-static const BuiltIn BuiltInBaryCoordSmoothSampleAMD = static_cast<BuiltIn>(4997);
-static const BuiltIn BuiltInBaryCoordPullModelAMD = static_cast<BuiltIn>(4998);
-
-static const Decoration DecorationExplicitInterpAMD = static_cast<Decoration>(4999);
-
enum ShaderExplicitVertexParameterAMD {
ShaderExplicitVertexParameterBadAMD = 0, // Don't use
@@ -117,9 +98,12 @@ static const char* const E_SPV_AMD_gpu_shader_half_float = "SPV_AMD_gpu_shader_h
// SPV_AMD_texture_gather_bias_lod
static const char* const E_SPV_AMD_texture_gather_bias_lod = "SPV_AMD_texture_gather_bias_lod";
-static const Capability CapabilityImageGatherBiasLodAMD = static_cast<Capability>(5009);
-
// SPV_AMD_gpu_shader_int16
static const char* const E_SPV_AMD_gpu_shader_int16 = "SPV_AMD_gpu_shader_int16";
+// SPV_AMD_shader_image_load_store_lod
+static const char* const E_SPV_AMD_shader_image_load_store_lod = "SPV_AMD_shader_image_load_store_lod";
+
+static const Capability CapabilityImageReadWriteLodAMD = static_cast<Capability>(5015);
+
#endif // #ifndef GLSLextAMD_H
diff --git a/external/glslang/SPIRV/GLSL.ext.KHR.h b/external/glslang/SPIRV/GLSL.ext.KHR.h
index 6e02529..2eb10ae 100644
--- a/external/glslang/SPIRV/GLSL.ext.KHR.h
+++ b/external/glslang/SPIRV/GLSL.ext.KHR.h
@@ -42,5 +42,7 @@ static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shade
static const char* const E_SPV_KHR_16bit_storage = "SPV_KHR_16bit_storage";
static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class";
static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_depth_coverage";
+static const char* const E_SPV_EXT_shader_stencil_export = "SPV_EXT_shader_stencil_export";
+static const char* const E_SPV_EXT_shader_viewport_index_layer = "SPV_EXT_shader_viewport_index_layer";
#endif // #ifndef GLSLextKHR_H
diff --git a/external/glslang/SPIRV/GlslangToSpv.cpp b/external/glslang/SPIRV/GlslangToSpv.cpp
index 50806d0..b6c9705 100755
--- a/external/glslang/SPIRV/GlslangToSpv.cpp
+++ b/external/glslang/SPIRV/GlslangToSpv.cpp
@@ -122,6 +122,7 @@ protected:
spv::Decoration TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier);
spv::BuiltIn TranslateBuiltInDecoration(glslang::TBuiltInVariable, bool memberDeclaration);
spv::ImageFormat TranslateImageFormat(const glslang::TType& type);
+ spv::SelectionControlMask TranslateSelectionControl(glslang::TSelectionControl) const;
spv::LoopControlMask TranslateLoopControl(glslang::TLoopControl) const;
spv::StorageClass TranslateStorageClass(const glslang::TType&);
spv::Id createSpvVariable(const glslang::TIntermSymbol*);
@@ -454,15 +455,13 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
case glslang::EbvViewportIndex:
if (!memberDeclaration) {
builder.addCapability(spv::CapabilityMultiViewport);
-#ifdef NV_EXTENSIONS
if (glslangIntermediate->getStage() == EShLangVertex ||
glslangIntermediate->getStage() == EShLangTessControl ||
glslangIntermediate->getStage() == EShLangTessEvaluation) {
- builder.addExtension(spv::E_SPV_NV_viewport_array2);
- builder.addCapability(spv::CapabilityShaderViewportIndexLayerNV);
+ builder.addExtension(spv::E_SPV_EXT_shader_viewport_index_layer);
+ builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT);
}
-#endif
}
return spv::BuiltInViewportIndex;
@@ -481,15 +480,13 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
case glslang::EbvLayer:
if (!memberDeclaration) {
builder.addCapability(spv::CapabilityGeometry);
-#ifdef NV_EXTENSIONS
if (glslangIntermediate->getStage() == EShLangVertex ||
glslangIntermediate->getStage() == EShLangTessControl ||
glslangIntermediate->getStage() == EShLangTessEvaluation) {
- builder.addExtension(spv::E_SPV_NV_viewport_array2);
- builder.addCapability(spv::CapabilityShaderViewportIndexLayerNV);
+ builder.addExtension(spv::E_SPV_EXT_shader_viewport_index_layer);
+ builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT);
}
-#endif
}
return spv::BuiltInLayer;
@@ -521,8 +518,9 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
return spv::BuiltInPrimitiveId;
case glslang::EbvFragStencilRef:
- logger->missingFunctionality("shader stencil export");
- return spv::BuiltInMax;
+ builder.addExtension(spv::E_SPV_EXT_shader_stencil_export);
+ builder.addCapability(spv::CapabilityStencilExportEXT);
+ return spv::BuiltInFragStencilRefEXT;
case glslang::EbvInvocationId: return spv::BuiltInInvocationId;
case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner;
@@ -741,6 +739,16 @@ spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TTy
}
}
+spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSelectionControl(glslang::TSelectionControl selectionControl) const
+{
+ switch (selectionControl) {
+ case glslang::ESelectionControlNone: return spv::SelectionControlMaskNone;
+ case glslang::ESelectionControlFlatten: return spv::SelectionControlFlattenMask;
+ case glslang::ESelectionControlDontFlatten: return spv::SelectionControlDontFlattenMask;
+ default: return spv::SelectionControlMaskNone;
+ }
+}
+
spv::LoopControlMask TGlslangToSpvTraverser::TranslateLoopControl(glslang::TLoopControl loopControl) const
{
switch (loopControl) {
@@ -869,11 +877,30 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage());
builder.clearAccessChain();
- builder.setSource(TranslateSourceLanguage(glslangIntermediate->getSource(), glslangIntermediate->getProfile()), glslangIntermediate->getVersion());
+ builder.setSource(TranslateSourceLanguage(glslangIntermediate->getSource(), glslangIntermediate->getProfile()),
+ glslangIntermediate->getVersion());
+
if (options.generateDebugInfo) {
- builder.setSourceFile(glslangIntermediate->getSourceFile());
- builder.setSourceText(glslangIntermediate->getSourceText());
builder.setEmitOpLines();
+ builder.setSourceFile(glslangIntermediate->getSourceFile());
+
+ // Set the source shader's text. If for SPV version 1.0, include
+ // a preamble in comments stating the OpModuleProcessed instructions.
+ // Otherwise, emit those as actual instructions.
+ std::string text;
+ const std::vector<std::string>& processes = glslangIntermediate->getProcesses();
+ for (int p = 0; p < (int)processes.size(); ++p) {
+ if (glslangIntermediate->getSpv().spv < 0x00010100) {
+ text.append("// OpModuleProcessed ");
+ text.append(processes[p]);
+ text.append("\n");
+ } else
+ builder.addModuleProcessed(processes[p]);
+ }
+ if (glslangIntermediate->getSpv().spv < 0x00010100 && (int)processes.size() > 0)
+ text.append("#line 1\n");
+ text.append(glslangIntermediate->getSourceText());
+ builder.setSourceText(text);
}
stdBuiltins = builder.import("GLSL.std.450");
builder.setMemoryModel(spv::AddressingModelLogical, spv::MemoryModelGLSL450);
@@ -1441,7 +1468,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
builder.setAccessChainRValue(result);
return false;
+#ifdef AMD_EXTENSIONS
+ } else if (node->getOp() == glslang::EOpImageStore || node->getOp() == glslang::EOpImageStoreLod) {
+#else
} else if (node->getOp() == glslang::EOpImageStore) {
+#endif
// "imageStore" is a special case, which has no result
return false;
}
@@ -1734,6 +1765,20 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
atomic = true;
break;
+ case glslang::EOpAtomicCounterAdd:
+ case glslang::EOpAtomicCounterSubtract:
+ case glslang::EOpAtomicCounterMin:
+ case glslang::EOpAtomicCounterMax:
+ case glslang::EOpAtomicCounterAnd:
+ case glslang::EOpAtomicCounterOr:
+ case glslang::EOpAtomicCounterXor:
+ case glslang::EOpAtomicCounterExchange:
+ case glslang::EOpAtomicCounterCompSwap:
+ builder.addExtension("SPV_KHR_shader_atomic_counter_ops");
+ builder.addCapability(spv::CapabilityAtomicStorageOps);
+ atomic = true;
+ break;
+
default:
break;
}
@@ -1804,6 +1849,15 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
case glslang::EOpAtomicXor:
case glslang::EOpAtomicExchange:
case glslang::EOpAtomicCompSwap:
+ case glslang::EOpAtomicCounterAdd:
+ case glslang::EOpAtomicCounterSubtract:
+ case glslang::EOpAtomicCounterMin:
+ case glslang::EOpAtomicCounterMax:
+ case glslang::EOpAtomicCounterAnd:
+ case glslang::EOpAtomicCounterOr:
+ case glslang::EOpAtomicCounterXor:
+ case glslang::EOpAtomicCounterExchange:
+ case glslang::EOpAtomicCounterCompSwap:
if (arg == 0)
lvalue = true;
break;
@@ -1941,8 +1995,7 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang
return false;
}
- // Instead, emit control flow...
-
+ // Instead, emit control flow...
// Don't handle results as temporaries, because there will be two names
// and better to leave SSA to later passes.
spv::Id result = (node->getBasicType() == glslang::EbtVoid)
@@ -1952,8 +2005,11 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang
// emit the condition before doing anything with selection
node->getCondition()->traverse(this);
+ // Selection control:
+ const spv::SelectionControlMask control = TranslateSelectionControl(node->getSelectionControl());
+
// make an "if" based on the value created by the condition
- spv::Builder::If ifBuilder(accessChainLoad(node->getCondition()->getType()), builder);
+ spv::Builder::If ifBuilder(accessChainLoad(node->getCondition()->getType()), control, builder);
// emit the "then" statement
if (node->getTrueBlock() != nullptr) {
@@ -1991,6 +2047,9 @@ bool TGlslangToSpvTraverser::visitSwitch(glslang::TVisit /* visit */, glslang::T
node->getCondition()->traverse(this);
spv::Id selector = accessChainLoad(node->getCondition()->getAsTyped()->getType());
+ // Selection control:
+ const spv::SelectionControlMask control = TranslateSelectionControl(node->getSelectionControl());
+
// browse the children to sort out code segments
int defaultSegment = -1;
std::vector<TIntermNode*> codeSegments;
@@ -2016,7 +2075,7 @@ bool TGlslangToSpvTraverser::visitSwitch(glslang::TVisit /* visit */, glslang::T
// make the switch statement
std::vector<spv::Block*> segmentBlocks; // returned, as the blocks allocated in the call
- builder.makeSwitch(selector, (int)codeSegments.size(), caseValues, valueIndexToSegment, defaultSegment, segmentBlocks);
+ builder.makeSwitch(selector, control, (int)codeSegments.size(), caseValues, valueIndexToSegment, defaultSegment, segmentBlocks);
// emit all the code in the segments
breakForLoop.push(false);
@@ -2426,6 +2485,10 @@ bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member)
if (member.getFieldName() == "gl_ViewportMaskPerViewNV" &&
extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end())
return true;
+ if ((member.getFieldName() == "gl_ViewportIndex" || member.getFieldName() == "gl_Layer") &&
+ extensions.find(glslang::E_GL_ARB_shader_viewport_layer_array) == extensions.end() &&
+ extensions.find("GL_NV_viewport_array2") == extensions.end())
+ return true;
return false;
};
@@ -2515,7 +2578,9 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
}
addMemberDecoration(spvType, member, TranslateInvariantDecoration(memberQualifier));
- if (qualifier.storage == glslang::EvqBuffer) {
+ if (type.getBasicType() == glslang::EbtBlock &&
+ qualifier.storage == glslang::EvqBuffer) {
+ // Add memory decorations only to top-level members of shader storage block
std::vector<spv::Decoration> memory;
TranslateMemoryDecoration(memberQualifier, memory);
for (unsigned int i = 0; i < memory.size(); ++i)
@@ -2806,7 +2871,7 @@ int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType, gl
// 'currentOffset' should be passed in already initialized, ready to modify, and reflecting
// the migration of data from nextOffset -> currentOffset. It should be -1 on the first call.
// -1 means a non-forced member offset (no decoration needed).
-void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& /*structType*/, const glslang::TType& memberType, int& currentOffset, int& nextOffset,
+void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset,
glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout)
{
// this will get a positive value when deemed necessary
@@ -2840,8 +2905,12 @@ void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& /*structTy
int memberAlignment = glslangIntermediate->getBaseAlignment(memberType, memberSize, dummyStride, explicitLayout == glslang::ElpStd140, matrixLayout == glslang::ElmRowMajor);
// Adjust alignment for HLSL rules
+ // TODO: make this consistent in early phases of code:
+ // adjusting this late means inconsistencies with earlier code, which for reflection is an issue
+ // Until reflection is brought in sync with these adjustments, don't apply to $Global,
+ // which is the most likely to rely on reflection, and least likely to rely implicit layouts
if (glslangIntermediate->usingHlslOFfsets() &&
- ! memberType.isArray() && memberType.isVector()) {
+ ! memberType.isArray() && memberType.isVector() && structType.getTypeName().compare("$Global") != 0) {
int dummySize;
int componentAlignment = glslangIntermediate->getBaseAlignmentScalar(memberType, dummySize);
if (componentAlignment <= 4)
@@ -2894,6 +2963,13 @@ bool TGlslangToSpvTraverser::isShaderEntryPoint(const glslang::TIntermAggregate*
// Make all the functions, skeletally, without actually visiting their bodies.
void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslFunctions)
{
+ const auto getParamDecorations = [](std::vector<spv::Decoration>& decorations, const glslang::TType& type) {
+ spv::Decoration paramPrecision = TranslatePrecisionDecoration(type);
+ if (paramPrecision != spv::NoPrecision)
+ decorations.push_back(paramPrecision);
+ TranslateMemoryDecoration(type.getQualifier(), decorations);
+ };
+
for (int f = 0; f < (int)glslFunctions.size(); ++f) {
glslang::TIntermAggregate* glslFunction = glslFunctions[f]->getAsAggregate();
if (! glslFunction || glslFunction->getOp() != glslang::EOpFunction || isShaderEntryPoint(glslFunction))
@@ -2914,11 +2990,13 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF
// GLSL has copy-in/copy-out semantics. They can be handled though with a pointer to a copy.
std::vector<spv::Id> paramTypes;
- std::vector<spv::Decoration> paramPrecisions;
+ std::vector<std::vector<spv::Decoration>> paramDecorations; // list of decorations per parameter
glslang::TIntermSequence& parameters = glslFunction->getSequence()[0]->getAsAggregate()->getSequence();
- bool implicitThis = (int)parameters.size() > 0 && parameters[0]->getAsSymbolNode()->getName() == glslangIntermediate->implicitThisName;
+ bool implicitThis = (int)parameters.size() > 0 && parameters[0]->getAsSymbolNode()->getName() ==
+ glslangIntermediate->implicitThisName;
+ paramDecorations.resize(parameters.size());
for (int p = 0; p < (int)parameters.size(); ++p) {
const glslang::TType& paramType = parameters[p]->getAsTyped()->getType();
spv::Id typeId = convertGlslangToSpvType(paramType);
@@ -2932,14 +3010,15 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF
typeId = builder.makePointer(spv::StorageClassFunction, typeId);
else
rValueParameters.insert(parameters[p]->getAsSymbolNode()->getId());
- paramPrecisions.push_back(TranslatePrecisionDecoration(paramType));
+ getParamDecorations(paramDecorations[p], paramType);
paramTypes.push_back(typeId);
}
spv::Block* functionBlock;
spv::Function *function = builder.makeFunctionEntry(TranslatePrecisionDecoration(glslFunction->getType()),
convertGlslangToSpvType(glslFunction->getType()),
- glslFunction->getName().c_str(), paramTypes, paramPrecisions, &functionBlock);
+ glslFunction->getName().c_str(), paramTypes,
Reply to: