.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 <[email protected]>
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 <[email protected]> Thu, 21 Sep 2017 15:16:32 +0300
+ -- Timo Aaltonen <[email protected]> Thu, 21 Sep 2017 15:28:57 +0300
vulkan (1.0.54.0+dfsg1-1) unstable; urgency=medium
commit 40d9e4434c99d5e53940da8305fee1bd6157526b
Author: Timo Aaltonen <[email protected]>
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 <[email protected]> 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 <[email protected]>
--- 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 <[email protected]>
+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 <[email protected]>
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 <[email protected]> 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 <[email protected]>
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,