vulkan: Changes to 'ubuntu'
.travis.yml | 2
BUILD.md | 1
CMakeLists.txt | 8
debian/changelog | 13
debian/patches/demos-mir.diff | 22
debian/patches/loader-mir.diff | 14
demos/cube.c | 8
demos/cube.cpp | 261
external/glslang/CMakeLists.txt | 5
external/glslang/OGLCompilersDLL/CMakeLists.txt | 9
external/glslang/SPIRV/CMakeLists.txt | 14
external/glslang/SPIRV/GLSL.ext.AMD.h | 2
external/glslang/SPIRV/GLSL.ext.KHR.h | 3
external/glslang/SPIRV/GlslangToSpv.cpp | 46
external/glslang/SPIRV/doc.cpp | 2
external/glslang/SPIRV/spirv.hpp | 6
external/glslang/StandAlone/CMakeLists.txt | 13
external/glslang/StandAlone/StandAlone.cpp | 628
external/glslang/Test/300.vert | 17
external/glslang/Test/450.frag | 2
external/glslang/Test/450.geom | 2
external/glslang/Test/450.tese | 7
external/glslang/Test/baseResults/300.vert.out | 21
external/glslang/Test/baseResults/450.frag.out | 5
external/glslang/Test/baseResults/450.geom.out | 5
external/glslang/Test/baseResults/450.tese.out | 25
external/glslang/Test/baseResults/glsl.-D-U.frag.out | 55
external/glslang/Test/baseResults/hlsl.-D-U.frag.out | 65
external/glslang/Test/baseResults/hlsl.array.frag.out | 9
external/glslang/Test/baseResults/hlsl.buffer.frag.out | 406
external/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out | 194
external/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out | 561
external/glslang/Test/baseResults/hlsl.clipdistance-3.vert.out | 229
external/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out | 386
external/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out | 435
external/glslang/Test/baseResults/hlsl.constructArray.vert.out | 381
external/glslang/Test/baseResults/hlsl.entry-in.frag.out | 17
external/glslang/Test/baseResults/hlsl.getsampleposition.dx10.frag.out | 9
external/glslang/Test/baseResults/hlsl.hull.3.tesc.out | 382
external/glslang/Test/baseResults/hlsl.hull.void.tesc.out | 3
external/glslang/Test/baseResults/hlsl.inoutquals.frag.out | 483
external/glslang/Test/baseResults/hlsl.intrinsics.comp.out | 576
external/glslang/Test/baseResults/hlsl.intrinsics.double.frag.out | 72
external/glslang/Test/baseResults/hlsl.intrinsics.evalfns.frag.out | 9
external/glslang/Test/baseResults/hlsl.intrinsics.frag.out | 4980 +--
external/glslang/Test/baseResults/hlsl.intrinsics.negative.frag.out | 32
external/glslang/Test/baseResults/hlsl.intrinsics.vert.out | 2152 -
external/glslang/Test/baseResults/hlsl.precedence2.frag.out | 36
external/glslang/Test/baseResults/hlsl.reflection.vert.out | 32
external/glslang/Test/baseResults/hlsl.scalar2matrix.frag.out | 506
external/glslang/Test/baseResults/hlsl.semantic.geom.out | 179
external/glslang/Test/baseResults/hlsl.semantic.vert.out | 278
external/glslang/Test/baseResults/hlsl.struct.frag.out | 51
external/glslang/Test/baseResults/hlsl.struct.split.assign.frag.out | 9
external/glslang/Test/baseResults/hlsl.structbuffer.append.fn.frag.out | 9
external/glslang/Test/baseResults/hlsl.structbuffer.append.frag.out | 9
external/glslang/Test/baseResults/hlsl.structbuffer.atomics.frag.out | 9
external/glslang/Test/baseResults/hlsl.structbuffer.byte.frag.out | 9
external/glslang/Test/baseResults/hlsl.structbuffer.coherent.frag.out | 9
external/glslang/Test/baseResults/hlsl.structbuffer.fn.frag.out | 9
external/glslang/Test/baseResults/hlsl.structbuffer.frag.out | 9
external/glslang/Test/baseResults/hlsl.structbuffer.incdec.frag.out | 9
external/glslang/Test/baseResults/hlsl.structbuffer.rw.frag.out | 9
external/glslang/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out | 9
external/glslang/Test/baseResults/hlsl.switch.frag.out | 18
external/glslang/Test/baseResults/hlsl.synthesizeInput.frag.out | 151
external/glslang/Test/baseResults/hlsl.target.frag.out | 188
external/glslang/Test/baseResults/hlsl.targetStruct1.frag.out | 277
external/glslang/Test/baseResults/hlsl.targetStruct2.frag.out | 277
external/glslang/Test/baseResults/hlsl.type.half.frag.out | 67
external/glslang/Test/baseResults/hlsl.type.identifier.frag.out | 111
external/glslang/Test/baseResults/spv.450.tesc.out | 3
external/glslang/Test/baseResults/spv.OVR_multiview.vert.out | 57
external/glslang/Test/baseResults/spv.arbPostDepthCoverage.frag.out | 43
external/glslang/Test/baseResults/spv.arbPostDepthCoverage_Error.frag.out | 7
external/glslang/Test/baseResults/spv.extPostDepthCoverage.frag.out | 23
external/glslang/Test/baseResults/spv.extPostDepthCoverage_Error.frag.out | 4
external/glslang/Test/baseResults/spv.shaderStencilExport.frag.out | 26
external/glslang/Test/baseResults/spv.specConstant.vert.out | 6
external/glslang/Test/baseResults/spv.texture.sampler.transform.frag.out | 29
external/glslang/Test/glsl.-D-U.frag | 32
external/glslang/Test/hlsl.-D-U.frag | 31
external/glslang/Test/hlsl.buffer.frag | 39
external/glslang/Test/hlsl.clipdistance-1.vert | 8
external/glslang/Test/hlsl.clipdistance-2.vert | 15
external/glslang/Test/hlsl.clipdistance-3.vert | 13
external/glslang/Test/hlsl.clipdistance-4.vert | 21
external/glslang/Test/hlsl.clipdistance-5.vert | 21
external/glslang/Test/hlsl.constructArray.vert | 10
external/glslang/Test/hlsl.hull.3.tesc | 39
external/glslang/Test/hlsl.hull.void.tesc | 2
external/glslang/Test/hlsl.inoutquals.frag | 5
external/glslang/Test/hlsl.reflection.vert | 45
external/glslang/Test/hlsl.scalar2matrix.frag | 28
external/glslang/Test/hlsl.synthesizeInput.frag | 9
external/glslang/Test/hlsl.target.frag | 10
external/glslang/Test/hlsl.targetStruct1.frag | 19
external/glslang/Test/hlsl.targetStruct2.frag | 19
external/glslang/Test/hlsl.type.identifier.frag | 1
external/glslang/Test/runtests | 18
external/glslang/Test/spv.OVR_multiview.vert | 9
external/glslang/Test/spv.arbPostDepthCoverage.frag | 13
external/glslang/Test/spv.arbPostDepthCoverage_Error.frag | 12
external/glslang/Test/spv.extPostDepthCoverage.frag | 9
external/glslang/Test/spv.extPostDepthCoverage_Error.frag | 9
external/glslang/Test/spv.shaderStencilExport.frag | 8
external/glslang/Test/spv.targetOpenGL.vert | 9
external/glslang/Test/spv.targetVulkan.vert | 9
external/glslang/glslang/CMakeLists.txt | 19
external/glslang/glslang/Include/BaseTypes.h | 3
external/glslang/glslang/Include/Types.h | 31
external/glslang/glslang/Include/intermediate.h | 13
external/glslang/glslang/MachineIndependent/Initialize.cpp | 47
external/glslang/glslang/MachineIndependent/Intermediate.cpp | 45
external/glslang/glslang/MachineIndependent/ParseHelper.cpp | 50
external/glslang/glslang/MachineIndependent/ParseHelper.h | 2
external/glslang/glslang/MachineIndependent/Scan.cpp | 6
external/glslang/glslang/MachineIndependent/ShaderLang.cpp | 132
external/glslang/glslang/MachineIndependent/Versions.cpp | 28
external/glslang/glslang/MachineIndependent/Versions.h | 33
external/glslang/glslang/MachineIndependent/intermOut.cpp | 2
external/glslang/glslang/MachineIndependent/iomapper.cpp | 10
external/glslang/glslang/MachineIndependent/linkValidate.cpp | 12
external/glslang/glslang/MachineIndependent/localintermediate.h | 7
external/glslang/glslang/MachineIndependent/reflection.cpp | 4
external/glslang/glslang/OSDependent/Unix/CMakeLists.txt | 9
external/glslang/glslang/OSDependent/Windows/CMakeLists.txt | 9
external/glslang/glslang/Public/ShaderLang.h | 68
external/glslang/gtests/CMakeLists.txt | 6
external/glslang/gtests/Hlsl.FromFile.cpp | 12
external/glslang/gtests/Spv.FromFile.cpp | 8
external/glslang/hlsl/CMakeLists.txt | 9
external/glslang/hlsl/hlslGrammar.cpp | 165
external/glslang/hlsl/hlslGrammar.h | 5
external/glslang/hlsl/hlslParseHelper.cpp | 522
external/glslang/hlsl/hlslParseHelper.h | 21
external/glslang/hlsl/hlslScanContext.cpp | 2
external/spirv-tools/.travis.yml | 21
external/spirv-tools/CHANGES | 22
external/spirv-tools/CMakeLists.txt | 23
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.core.grammar.json | 149
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.h | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.hpp | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.hpp11 | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.json | 24
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.lua | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.py | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.core.grammar.json | 149
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.h | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.hpp | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.hpp11 | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.json | 24
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.lua | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.py | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.core.grammar.json | 149
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.h | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.hpp | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.hpp11 | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.json | 24
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.lua | 20
external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.py | 20
external/spirv-tools/external/spirv-headers/include/spirv/spir-v.xml | 5
external/spirv-tools/include/spirv-tools/libspirv.h | 3
external/spirv-tools/include/spirv-tools/markv.h | 91
external/spirv-tools/include/spirv-tools/optimizer.hpp | 46
external/spirv-tools/source/CMakeLists.txt | 14
external/spirv-tools/source/assembly_grammar.cpp | 4
external/spirv-tools/source/assembly_grammar.h | 16
external/spirv-tools/source/binary.cpp | 67
external/spirv-tools/source/comp/CMakeLists.txt | 34
external/spirv-tools/source/comp/markv_codec.cpp | 1556 +
external/spirv-tools/source/ext_inst.cpp | 27
external/spirv-tools/source/extinst.spv-amd-shader-ballot.grammar.json | 41
external/spirv-tools/source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json | 14
external/spirv-tools/source/extinst.spv-amd-shader-trinary-minmax.grammar.json | 95
external/spirv-tools/source/operand.cpp | 63
external/spirv-tools/source/operand.h | 31
external/spirv-tools/source/opt/CMakeLists.txt | 17
external/spirv-tools/source/opt/basic_block.h | 17
external/spirv-tools/source/opt/block_merge_pass.cpp | 143
external/spirv-tools/source/opt/block_merge_pass.h | 73
external/spirv-tools/source/opt/inline_pass.cpp | 2
external/spirv-tools/source/opt/insert_extract_elim.cpp | 125
external/spirv-tools/source/opt/insert_extract_elim.h | 77
external/spirv-tools/source/opt/local_access_chain_convert_pass.cpp | 2
external/spirv-tools/source/opt/local_single_block_elim_pass.cpp | 2
external/spirv-tools/source/opt/local_single_store_elim_pass.cpp | 469
external/spirv-tools/source/opt/local_single_store_elim_pass.h | 220
external/spirv-tools/source/opt/optimizer.cpp | 15
external/spirv-tools/source/opt/passes.h | 3
external/spirv-tools/source/text.cpp | 19
external/spirv-tools/source/util/bit_stream.cpp | 72
external/spirv-tools/source/util/bit_stream.h | 68
external/spirv-tools/source/util/huffman_codec.h | 299
external/spirv-tools/source/util/move_to_front.h | 649
external/spirv-tools/source/val/validation_state.cpp | 20
external/spirv-tools/source/val/validation_state.h | 2
external/spirv-tools/source/validate.cpp | 4
external/spirv-tools/test/CMakeLists.txt | 13
external/spirv-tools/test/bit_stream.cpp | 148
external/spirv-tools/test/comp/CMakeLists.txt | 23
external/spirv-tools/test/comp/markv_codec_test.cpp | 433
external/spirv-tools/test/huffman_codec.cpp | 220
external/spirv-tools/test/move_to_front_test.cpp | 785
external/spirv-tools/test/operand_pattern_test.cpp | 90
external/spirv-tools/test/opt/CMakeLists.txt | 15
external/spirv-tools/test/opt/block_merge_test.cpp | 337
external/spirv-tools/test/opt/insert_extract_elim_test.cpp | 334
external/spirv-tools/test/opt/local_single_store_elim_test.cpp | 521
external/spirv-tools/test/text_to_binary.extension_test.cpp | 106
external/spirv-tools/test/val/val_extensions_test.cpp | 6
external/spirv-tools/tools/CMakeLists.txt | 17
external/spirv-tools/tools/comp/markv.cpp | 247
external/spirv-tools/tools/emacs/CMakeLists.txt | 4
external/spirv-tools/tools/lesspipe/CMakeLists.txt | 4
external/spirv-tools/tools/opt/opt.cpp | 6
external/spirv-tools/utils/generate_grammar_tables.py | 9
external_revisions/glslang_revision | 2
external_revisions/spirv-headers_revision | 2
external_revisions/spirv-tools_revision | 2
include/vulkan/vk_icd.h | 8
include/vulkan/vulkan.h | 1212
include/vulkan/vulkan.hpp |12620 +++++-----
layers/CMakeLists.txt | 14
layers/buffer_validation.cpp | 354
layers/buffer_validation.h | 5
layers/core_validation.cpp | 540
layers/core_validation_types.h | 10
layers/descriptor_sets.cpp | 77
layers/descriptor_sets.h | 47
layers/linux/VkLayer_core_validation.json | 14
layers/linux/VkLayer_object_tracker.json | 14
layers/linux/VkLayer_parameter_validation.json | 14
layers/linux/VkLayer_standard_validation.json | 2
layers/linux/VkLayer_threading.json | 2
layers/linux/VkLayer_unique_objects.json | 2
layers/object_tracker.cpp | 455
layers/parameter_validation.cpp | 739
layers/parameter_validation_utils.h | 103
layers/shader_validation.cpp | 37
layers/spec.py | 357
layers/vk_layer_logging.h | 20
layers/vk_layer_table.cpp | 59
layers/vk_validation_error_database.txt | 1751 -
layers/vk_validation_error_messages.h | 828
layers/vk_validation_stats.py | 414
layers/vuid_mapping.py | 941
layers/windows/VkLayer_core_validation.json | 14
layers/windows/VkLayer_object_tracker.json | 14
layers/windows/VkLayer_parameter_validation.json | 14
layers/windows/VkLayer_standard_validation.json | 2
layers/windows/VkLayer_threading.json | 2
layers/windows/VkLayer_unique_objects.json | 2
loader/CMakeLists.txt | 49
loader/LoaderAndLayerInterface.md | 31
loader/asm_offset.c | 117
loader/dev_ext_trampoline.c | 509
loader/extension_manual.c | 148
loader/extension_manual.h | 24
loader/loader.c | 64
loader/loader.h | 3
loader/phys_dev_ext.c | 779
loader/trampoline.c | 16
loader/unknown_ext_chain.c | 819
loader/unknown_ext_chain_gas.asm | 869
loader/unknown_ext_chain_masm.asm | 883
scripts/helper_file_generator.py | 8
scripts/loader_extension_generator.py | 71
scripts/parameter_validation_generator.py | 146
scripts/reg.py | 4
scripts/spec.py | 357
scripts/unique_objects_generator.py | 3
scripts/vk.xml | 1142
scripts/vk_validation_stats.py | 450
scripts/vuid_mapping.py | 1086
tests/_run_all_tests.ps1 | 2
tests/_vkvalidatelayerdoc.ps1 | 18
tests/layer_validation_tests.cpp | 1838 -
tests/layers/CMakeLists.txt | 4
tests/layers/device_profile_api.cpp | 7
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_lunarg_device_profile_api_layer.h | 17
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/run_all_tests.sh | 2
tests/vkrenderframework.cpp | 23
tests/vkrenderframework.h | 2
tests/vkvalidatelayerdoc.sh | 14
update_external_sources.bat | 5
292 files changed, 38660 insertions(+), 16951 deletions(-)
New commits:
commit f5225086d255ae1573e9988e6193e87e83f4b752
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Tue Aug 1 13:31:15 2017 +0300
release to artful
diff --git a/debian/changelog b/debian/changelog
index fb31584..76e30ac 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+vulkan (1.0.54.0+dfsg1-1ubuntu1) artful; urgency=medium
+
+ * Merge from Debian.
+ * patches: Refreshed.
+
+ -- Timo Aaltonen <tjaalton@debian.org> Mon, 31 Jul 2017 16:57:18 +0300
+
vulkan (1.0.54.0+dfsg1-1) unstable; urgency=medium
* New upstream release.
diff --git a/debian/patches/demos-mir.diff b/debian/patches/demos-mir.diff
index 5add113..ba6228c 100644
--- a/debian/patches/demos-mir.diff
+++ b/debian/patches/demos-mir.diff
@@ -28,7 +28,7 @@
#endif
#ifdef ANDROID
-@@ -337,6 +338,9 @@ struct demo {
+@@ -336,6 +337,9 @@ struct demo {
struct wl_shell *shell;
struct wl_shell_surface *shell_surface;
#elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -38,7 +38,7 @@
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
ANativeWindow *window;
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
-@@ -2431,6 +2435,9 @@ static void demo_cleanup(struct demo *de
+@@ -2410,6 +2414,9 @@ static void demo_cleanup(struct demo *de
wl_registry_destroy(demo->registry);
wl_display_disconnect(demo->display);
#elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -46,9 +46,9 @@
+ mir_window_release_sync(demo->mir_window);
+ mir_connection_release(demo->mir_connection);
#endif
- }
-@@ -2843,6 +2850,66 @@ static void demo_run(struct demo *demo)
+ vkDestroyInstance(demo->inst, NULL);
+@@ -2823,6 +2830,66 @@ static void demo_run(struct demo *demo)
demo->curFrame++;
}
#elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -115,7 +115,7 @@
#elif defined(VK_USE_PLATFORM_DISPLAY_KHR)
static VkResult demo_create_display_surface(struct demo *demo) {
VkResult U_ASSERT_ONLY err;
-@@ -3139,6 +3206,12 @@ static void demo_init_vk(struct demo *de
+@@ -3119,6 +3186,12 @@ static void demo_init_vk(struct demo *de
VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME;
}
#elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -128,7 +128,7 @@
#elif defined(VK_USE_PLATFORM_DISPLAY_KHR)
if (!strcmp(VK_KHR_DISPLAY_EXTENSION_NAME,
instance_extensions[i].extensionName)) {
-@@ -3226,6 +3299,13 @@ static void demo_init_vk(struct demo *de
+@@ -3206,6 +3279,13 @@ static void demo_init_vk(struct demo *de
"information.\n",
"vkCreateInstance Failure");
#elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -142,7 +142,7 @@
#elif defined(VK_USE_PLATFORM_DISPLAY_KHR)
ERR_EXIT("vkEnumerateInstanceExtensionProperties failed to find "
"the " VK_KHR_DISPLAY_EXTENSION_NAME
-@@ -3551,6 +3631,15 @@ static void demo_init_vk_swapchain(struc
+@@ -3531,6 +3611,15 @@ static void demo_init_vk_swapchain(struc
err = vkCreateWaylandSurfaceKHR(demo->inst, &createInfo, NULL,
&demo->surface);
#elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -158,7 +158,7 @@
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
VkAndroidSurfaceCreateInfoKHR createInfo;
createInfo.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
-@@ -3755,7 +3844,6 @@ static void registry_handle_global_remov
+@@ -3735,7 +3824,6 @@ static void registry_handle_global_remov
static const struct wl_registry_listener registry_listener = {
registry_handle_global, registry_handle_global_remove};
@@ -166,7 +166,7 @@
#endif
static void demo_init_connection(struct demo *demo) {
-@@ -3792,6 +3880,9 @@ static void demo_init_connection(struct
+@@ -3772,6 +3860,9 @@ static void demo_init_connection(struct
wl_registry_add_listener(demo->registry, ®istry_listener, demo);
wl_display_dispatch(demo->display);
#elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -176,7 +176,7 @@
#endif
}
-@@ -4104,6 +4195,7 @@ int main(int argc, char **argv) {
+@@ -4084,6 +4175,7 @@ int main(int argc, char **argv) {
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
demo_create_window(&demo);
#elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -184,7 +184,7 @@
#endif
demo_init_vk_swapchain(&demo);
-@@ -4117,6 +4209,7 @@ int main(int argc, char **argv) {
+@@ -4097,6 +4189,7 @@ int main(int argc, char **argv) {
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
demo_run(&demo);
#elif defined(VK_USE_PLATFORM_MIR_KHR)
diff --git a/debian/patches/loader-mir.diff b/debian/patches/loader-mir.diff
index 919bf7b..36c88fa 100644
--- a/debian/patches/loader-mir.diff
+++ b/debian/patches/loader-mir.diff
@@ -31,7 +31,7 @@
#endif
};
-@@ -419,7 +423,7 @@ static const char *VkFormatString(VkForm
+@@ -420,7 +424,7 @@ static const char *VkFormatString(VkForm
return "UNKNOWN_FORMAT";
}
}
@@ -40,7 +40,7 @@
static const char *VkPresentModeString(VkPresentModeKHR mode) {
switch (mode) {
#define STR(r) \
-@@ -603,7 +607,7 @@ static void AppCreateInstance(struct App
+@@ -604,7 +608,7 @@ static void AppCreateInstance(struct App
}
#if defined(VK_USE_PLATFORM_XCB_KHR) || defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_WAYLAND_KHR) || \
@@ -49,7 +49,7 @@
if (ext_count)
for (i = 0; ((i < inst->global_extension_count) && (ext_count < MAX_EXTENSIONS)); i++) {
const char *found_name = inst->global_extensions[i].extensionName;
-@@ -627,6 +631,10 @@ static void AppCreateInstance(struct App
+@@ -628,6 +632,10 @@ static void AppCreateInstance(struct App
if (!strcmp(VK_KHR_ANDROID_SURFACE_EXTENSION_NAME, found_name)) {
ext_names[ext_count++] = VK_KHR_ANDROID_SURFACE_EXTENSION_NAME;
}
@@ -60,7 +60,7 @@
#endif
}
#endif
-@@ -824,7 +832,8 @@ static void AppDestroyWin32Window(struct
+@@ -825,7 +833,8 @@ static void AppDestroyWin32Window(struct
#if defined(VK_USE_PLATFORM_XCB_KHR) || \
defined(VK_USE_PLATFORM_XLIB_KHR) || \
@@ -70,7 +70,7 @@
static void AppDestroySurface(struct AppInstance *inst) { //same for all platforms
vkDestroySurfaceKHR(inst->instance, inst->surface, NULL);
}
-@@ -933,12 +942,65 @@ static void AppDestroyXlibWindow(struct
+@@ -934,12 +943,65 @@ static void AppDestroyXlibWindow(struct
XDestroyWindow(inst->xlib_display, inst->xlib_window);
XCloseDisplay(inst->xlib_display);
}
@@ -138,7 +138,7 @@
static int AppDumpSurfaceFormats(struct AppInstance *inst, struct AppGpu *gpu){
// Get the list of VkFormat's that are supported:
VkResult U_ASSERT_ONLY err;
-@@ -1280,7 +1342,7 @@ static void AppDumpExtensions(const char
+@@ -1283,7 +1345,7 @@ static void AppDumpExtensions(const char
fflush(stdout);
}
@@ -147,7 +147,7 @@
// Returns true if the named extension is in the list of extensions.
static bool HasExtension(const char *extension_name, const uint32_t extension_count,
const VkExtensionProperties *extension_properties) {
-@@ -1558,8 +1620,22 @@ int main(int argc, char **argv) {
+@@ -1561,8 +1623,22 @@ int main(int argc, char **argv) {
}
AppDestroyXlibWindow(&inst);
}
commit 50203dbc808f1138b20e0cc8af5090ea3406384d
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Mon Jul 24 12:38:24 2017 +0300
release to sid
diff --git a/debian/changelog b/debian/changelog
index 93d3619..097b46a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,8 @@
-vulkan (1.0.54.0+dfsg1-1) UNRELEASED; urgency=medium
+vulkan (1.0.54.0+dfsg1-1) unstable; urgency=medium
* New upstream release.
- -- Timo Aaltonen <tjaalton@debian.org> Mon, 24 Jul 2017 12:27:29 +0300
+ -- Timo Aaltonen <tjaalton@debian.org> Mon, 24 Jul 2017 12:38:14 +0300
vulkan (1.0.51.0+dfsg1-1) unstable; urgency=medium
commit f3146b9424f16cd53132b9b1fa28575e78d8de67
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Mon Jul 24 12:38:12 2017 +0300
update the changelog
diff --git a/debian/changelog b/debian/changelog
index 08b8aed..93d3619 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+vulkan (1.0.54.0+dfsg1-1) UNRELEASED; urgency=medium
+
+ * New upstream release.
+
+ -- Timo Aaltonen <tjaalton@debian.org> Mon, 24 Jul 2017 12:27:29 +0300
+
vulkan (1.0.51.0+dfsg1-1) unstable; urgency=medium
* New upstream release.
commit f7825272e341a108b4ad9f0e85d80eaf6d3f26ef
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Mon Jul 24 12:27:00 2017 +0300
Refresh external/
diff --git a/external/glslang/CMakeLists.txt b/external/glslang/CMakeLists.txt
index 1d98c9f..9bc94b0 100644
--- a/external/glslang/CMakeLists.txt
+++ b/external/glslang/CMakeLists.txt
@@ -6,6 +6,11 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# Adhere to GNU filesystem layout conventions
include(GNUInstallDirs)
+option(SKIP_GLSLANG_INSTALL "Skip installation" ${SKIP_GLSLANG_INSTALL})
+if(NOT ${SKIP_GLSLANG_INSTALL})
+ set(ENABLE_GLSLANG_INSTALL ON)
+endif()
+
option(ENABLE_AMD_EXTENSIONS "Enables support of AMD-specific extensions" ON)
option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON)
diff --git a/external/glslang/OGLCompilersDLL/CMakeLists.txt b/external/glslang/OGLCompilersDLL/CMakeLists.txt
index 8edd143..5bb3f0e 100644
--- a/external/glslang/OGLCompilersDLL/CMakeLists.txt
+++ b/external/glslang/OGLCompilersDLL/CMakeLists.txt
@@ -1,11 +1,14 @@
set(SOURCES InitializeDll.cpp InitializeDll.h)
add_library(OGLCompiler STATIC ${SOURCES})
-set_property(TARGET OGLCompiler PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON)
+set_property(TARGET OGLCompiler PROPERTY FOLDER glslang)
+set_property(TARGET OGLCompiler PROPERTY POSITION_INDEPENDENT_CODE ON)
if(WIN32)
source_group("Source" FILES ${SOURCES})
endif(WIN32)
-install(TARGETS OGLCompiler
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+if(ENABLE_GLSLANG_INSTALL)
+ install(TARGETS OGLCompiler
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/external/glslang/SPIRV/CMakeLists.txt b/external/glslang/SPIRV/CMakeLists.txt
index 2ad86d6..3c5ebab 100755
--- a/external/glslang/SPIRV/CMakeLists.txt
+++ b/external/glslang/SPIRV/CMakeLists.txt
@@ -40,18 +40,22 @@ if(ENABLE_NV_EXTENSIONS)
endif(ENABLE_NV_EXTENSIONS)
add_library(SPIRV STATIC ${SOURCES} ${HEADERS})
-set_property(TARGET SPIRV PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON)
+set_property(TARGET SPIRV PROPERTY FOLDER glslang)
+set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON)
target_link_libraries(SPIRV glslang)
add_library(SPVRemapper STATIC ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
-set_property(TARGET SPVRemapper PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON)
+set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
+set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON)
if(WIN32)
source_group("Source" FILES ${SOURCES} ${HEADERS})
source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
endif(WIN32)
-install(TARGETS SPIRV SPVRemapper
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+if(ENABLE_GLSLANG_INSTALL)
+ install(TARGETS SPIRV SPVRemapper
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/)
+ install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/)
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/external/glslang/SPIRV/GLSL.ext.AMD.h b/external/glslang/SPIRV/GLSL.ext.AMD.h
index a1b9ef9..4fff8c8 100644
--- a/external/glslang/SPIRV/GLSL.ext.AMD.h
+++ b/external/glslang/SPIRV/GLSL.ext.AMD.h
@@ -117,7 +117,7 @@ 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 OpCapabilityImageGatherBiasLodAMD = static_cast<Capability>(5009);
+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";
diff --git a/external/glslang/SPIRV/GLSL.ext.KHR.h b/external/glslang/SPIRV/GLSL.ext.KHR.h
index c9e31a6..6e02529 100644
--- a/external/glslang/SPIRV/GLSL.ext.KHR.h
+++ b/external/glslang/SPIRV/GLSL.ext.KHR.h
@@ -32,7 +32,7 @@ enum Op;
enum Capability;
static const int GLSLextKHRVersion = 100;
-static const int GLSLextKHRRevision = 1;
+static const int GLSLextKHRRevision = 2;
static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot";
static const char* const E_SPV_KHR_subgroup_vote = "SPV_KHR_subgroup_vote";
@@ -41,5 +41,6 @@ static const char* const E_SPV_KHR_multiview = "SPV_KHR_multi
static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shader_draw_parameters";
static const char* const E_SPV_KHR_16bit_storage = "SPV_KHR_16bit_storage";
static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class";
+static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_depth_coverage";
#endif // #ifndef GLSLextKHR_H
diff --git a/external/glslang/SPIRV/GlslangToSpv.cpp b/external/glslang/SPIRV/GlslangToSpv.cpp
index 9a29b2e..50806d0 100755
--- a/external/glslang/SPIRV/GlslangToSpv.cpp
+++ b/external/glslang/SPIRV/GlslangToSpv.cpp
@@ -520,6 +520,10 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
builder.addCapability(spv::CapabilityGeometry);
return spv::BuiltInPrimitiveId;
+ case glslang::EbvFragStencilRef:
+ logger->missingFunctionality("shader stencil export");
+ return spv::BuiltInMax;
+
case glslang::EbvInvocationId: return spv::BuiltInInvocationId;
case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner;
case glslang::EbvTessLevelOuter: return spv::BuiltInTessLevelOuter;
@@ -976,6 +980,12 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
if (glslangIntermediate->getEarlyFragmentTests())
builder.addExecutionMode(shaderEntry, spv::ExecutionModeEarlyFragmentTests);
+ if (glslangIntermediate->getPostDepthCoverage()) {
+ builder.addCapability(spv::CapabilitySampleMaskPostDepthCoverage);
+ builder.addExecutionMode(shaderEntry, spv::ExecutionModePostDepthCoverage);
+ builder.addExtension(spv::E_SPV_KHR_post_depth_coverage);
+ }
+
switch(glslangIntermediate->getDepth()) {
case glslang::EldGreater: mode = spv::ExecutionModeDepthGreater; break;
case glslang::EldLess: mode = spv::ExecutionModeDepthLess; break;
@@ -2431,7 +2441,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
// Create a vector of struct types for SPIR-V to consume
std::vector<spv::Id> spvMembers;
int memberDelta = 0; // how much the member's index changes from glslang to SPIR-V, normally 0, except sometimes for blocks
- int locationOffset = 0; // for use across struct members, when they are called recursively
for (int i = 0; i < (int)glslangMembers->size(); i++) {
glslang::TType& glslangMember = *(*glslangMembers)[i].type;
if (glslangMember.hiddenMember()) {
@@ -2448,11 +2457,9 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
glslang::TQualifier memberQualifier = glslangMember.getQualifier();
InheritQualifiers(memberQualifier, qualifier);
- // manually inherit location; it's more complex
+ // manually inherit location
if (! memberQualifier.hasLocation() && qualifier.hasLocation())
- memberQualifier.layoutLocation = qualifier.layoutLocation + locationOffset;
- if (qualifier.hasLocation())
- locationOffset += glslangIntermediate->computeTypeLocationSize(glslangMember);
+ memberQualifier.layoutLocation = qualifier.layoutLocation;
// recurse
spvMembers.push_back(convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier));
@@ -2515,29 +2522,12 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
addMemberDecoration(spvType, member, memory[i]);
}
- // Compute location decoration; tricky based on whether inheritance is at play and
- // what kind of container we have, etc.
- // TODO: This algorithm (and it's cousin above doing almost the same thing) should
- // probably move to the linker stage of the front end proper, and just have the
- // answer sitting already distributed throughout the individual member locations.
- int location = -1; // will only decorate if present or inherited
+ // Location assignment was already completed correctly by the front end,
+ // just track whether a member needs to be decorated.
// Ignore member locations if the container is an array, as that's
- // ill-specified and decisions have been made to not allow this anyway.
- // The object itself must have a location, and that comes out from decorating the object,
- // not the type (this code decorates types).
- if (! type.isArray()) {
- if (memberQualifier.hasLocation()) { // no inheritance, or override of inheritance
- // struct members should not have explicit locations
- assert(type.getBasicType() != glslang::EbtStruct);
- location = memberQualifier.layoutLocation;
- } else if (type.getBasicType() != glslang::EbtBlock) {
- // If it is a not a Block, (...) Its members are assigned consecutive locations (...)
- // The members, and their nested types, must not themselves have Location decorations.
- } else if (qualifier.hasLocation()) // inheritance
- location = qualifier.layoutLocation + locationOffset;
- }
- if (location >= 0)
- builder.addMemberDecoration(spvType, member, spv::DecorationLocation, location);
+ // ill-specified and decisions have been made to not allow this.
+ if (! type.isArray() && memberQualifier.hasLocation())
+ builder.addMemberDecoration(spvType, member, spv::DecorationLocation, memberQualifier.layoutLocation);
if (qualifier.hasLocation()) // track for upcoming inheritance
locationOffset += glslangIntermediate->computeTypeLocationSize(glslangMember);
@@ -3294,7 +3284,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
if (bias || cracked.lod ||
sourceExtensions.find(glslang::E_GL_AMD_texture_gather_bias_lod) != sourceExtensions.end()) {
builder.addExtension(spv::E_SPV_AMD_texture_gather_bias_lod);
- builder.addCapability(spv::OpCapabilityImageGatherBiasLodAMD);
+ builder.addCapability(spv::CapabilityImageGatherBiasLodAMD);
}
}
#endif
diff --git a/external/glslang/SPIRV/doc.cpp b/external/glslang/SPIRV/doc.cpp
index bae43bd..03097d0 100755
--- a/external/glslang/SPIRV/doc.cpp
+++ b/external/glslang/SPIRV/doc.cpp
@@ -175,6 +175,7 @@ const char* ExecutionModeString(int mode)
case 31: return "ContractionOff";
case 32: return "Bad";
+ case 4446: return "PostDepthCoverage";
case ExecutionModeCeiling:
default: return "Bad";
}
@@ -843,6 +844,7 @@ const char* CapabilityString(int info)
case 5009: return "ImageGatherBiasLodAMD";
#endif
+ case 4447: return "SampleMaskPostDepthCoverage";
#ifdef NV_EXTENSIONS
case 5251: return "GeometryShaderPassthroughNV";
case 5254: return "ShaderViewportIndexLayerNV";
diff --git a/external/glslang/SPIRV/spirv.hpp b/external/glslang/SPIRV/spirv.hpp
index 91cb59e..c9f6f71 100755
--- a/external/glslang/SPIRV/spirv.hpp
+++ b/external/glslang/SPIRV/spirv.hpp
@@ -47,11 +47,11 @@ namespace spv {
typedef unsigned int Id;
#define SPV_VERSION 0x10000
-#define SPV_REVISION 10
+#define SPV_REVISION 11
static const unsigned int MagicNumber = 0x07230203;
static const unsigned int Version = 0x00010000;
-static const unsigned int Revision = 10;
+static const unsigned int Revision = 11;
static const unsigned int OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16;
@@ -122,6 +122,7 @@ enum ExecutionMode {
ExecutionModeOutputTriangleStrip = 29,
ExecutionModeVecTypeHint = 30,
ExecutionModeContractionOff = 31,
+ ExecutionModePostDepthCoverage = 4446,
ExecutionModeMax = 0x7fffffff,
};
@@ -628,6 +629,7 @@ enum Capability {
CapabilityMultiView = 4439,
CapabilityVariablePointersStorageBuffer = 4441,
CapabilityVariablePointers = 4442,
+ CapabilitySampleMaskPostDepthCoverage = 4447,
CapabilitySampleMaskOverrideCoverageNV = 5249,
CapabilityGeometryShaderPassthroughNV = 5251,
CapabilityShaderViewportIndexLayerNV = 5254,
diff --git a/external/glslang/StandAlone/CMakeLists.txt b/external/glslang/StandAlone/CMakeLists.txt
index c61667c..b0d863d 100644
--- a/external/glslang/StandAlone/CMakeLists.txt
+++ b/external/glslang/StandAlone/CMakeLists.txt
@@ -1,6 +1,7 @@
add_library(glslang-default-resource-limits
${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp)
-set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON)
+set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang)
+set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON)
target_include_directories(glslang-default-resource-limits
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
@@ -37,8 +38,10 @@ if(WIN32)
source_group("Source" FILES ${SOURCES})
endif(WIN32)
-install(TARGETS glslangValidator
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+if(ENABLE_GLSLANG_INSTALL)
+ install(TARGETS glslangValidator
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
-install(TARGETS spirv-remap
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ install(TARGETS spirv-remap
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/external/glslang/StandAlone/StandAlone.cpp b/external/glslang/StandAlone/StandAlone.cpp
index 0b8b8f4..1e2c8f7 100644
--- a/external/glslang/StandAlone/StandAlone.cpp
+++ b/external/glslang/StandAlone/StandAlone.cpp
@@ -115,18 +115,14 @@ enum TFailCode {
EShLanguage FindLanguage(const std::string& name, bool parseSuffix=true);
void CompileFile(const char* fileName, ShHandle);
void usage();
-void FreeFileData(char** data);
-char** ReadFileData(const char* fileName);
+char* ReadFileData(const char* fileName);
+void FreeFileData(char* data);
void InfoLogMsg(const char* msg, const char* name, const int num);
// Globally track if any compile or link failure.
bool CompileFailed = false;
bool LinkFailed = false;
-// Use to test breaking up a single shader file into multiple strings.
-// Set in ReadFileData().
-int NumShaderStrings;
-
TBuiltInResource Resources;
std::string ConfigFile;
@@ -135,29 +131,13 @@ std::string ConfigFile;
//
void ProcessConfigFile()
{
- char** configStrings = 0;
- char* config = 0;
- if (ConfigFile.size() > 0) {
- configStrings = ReadFileData(ConfigFile.c_str());
- if (configStrings)
- config = *configStrings;
- else {
- printf("Error opening configuration file; will instead use the default configuration\n");
- usage();
- }
- }
-
- if (config == 0) {
+ if (ConfigFile.size() == 0)
Resources = glslang::DefaultTBuiltInResource;
- return;
+ else {
+ char* configString = ReadFileData(ConfigFile.c_str());
+ glslang::DecodeResourceLimits(&Resources, configString);
+ FreeFileData(configString);
}
-
- glslang::DecodeResourceLimits(&Resources, config);
-
- if (configStrings)
- FreeFileData(configStrings);
- else
- delete[] config;
}
int Options = 0;
@@ -168,6 +148,10 @@ const char* sourceEntryPointName = nullptr;
const char* shaderStageName = nullptr;
const char* variableName = nullptr;
std::vector<std::string> IncludeDirectoryList;
+int ClientInputSemanticsVersion = 100; // maps to, say, #define VULKAN 100
+int VulkanClientVersion = 100; // would map to, say, Vulkan 1.0
+int OpenGLClientVersion = 450; // doesn't influence anything yet, but maps to OpenGL 4.50
+unsigned int TargetVersion = 0x00001000; // maps to, say, SPIR-V 1.0
std::array<unsigned int, EShLangCount> baseSamplerBinding;
std::array<unsigned int, EShLangCount> baseTextureBinding;
@@ -177,6 +161,52 @@ std::array<unsigned int, EShLangCount> baseSsboBinding;
std::array<unsigned int, EShLangCount> baseUavBinding;
std::array<std::vector<std::string>, EShLangCount> baseResourceSetBinding;
+// Add things like "#define ..." to a preamble to use in the beginning of the shader.
+class TPreamble {
+public:
+ TPreamble() { }
+
+ bool isSet() const { return text.size() > 0; }
+ const char* get() const { return text.c_str(); }
+
+ // #define...
+ void addDef(std::string def)
+ {
+ text.append("#define ");
+ fixLine(def);
+
+ // The first "=" needs to turn into a space
+ int equal = def.find_first_of("=");
+ if (equal != def.npos)
+ def[equal] = ' ';
+
+ text.append(def);
+ text.append("\n");
+ }
+
+ // #undef...
+ void addUndef(std::string undef)
+ {
+ text.append("#undef ");
+ fixLine(undef);
+ text.append(undef);
+ text.append("\n");
+ }
+
+protected:
+ void fixLine(std::string& line)
+ {
+ // Can't go past a newline in the line
+ int end = line.find_first_of("\n");
+ if (end != line.npos)
+ line = line.substr(0, end);
+ }
+
+ std::string text; // contents of preamble
+};
+
+TPreamble UserPreamble;
+
//
// Create the default name for saving a binary if -o is not provided.
//
@@ -268,15 +298,15 @@ void ProcessResourceSetBindingBase(int& argc, char**& argv, std::array<std::vect
base[lang].push_back(argv[2]);
base[lang].push_back(argv[3]);
base[lang].push_back(argv[4]);
- argc-= 4;
- argv+= 4;
+ argc -= 4;
+ argv += 4;
while(argv[1] != NULL) {
if(argv[1][0] != '-') {
base[lang].push_back(argv[1]);
base[lang].push_back(argv[2]);
base[lang].push_back(argv[3]);
- argc-= 3;
- argv+= 3;
+ argc -= 3;
+ argv += 3;
}
else {
break;
@@ -310,9 +340,48 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
ExecutableName = argv[0];
workItems.reserve(argc);
- argc--;
- argv++;
- for (; argc >= 1; argc--, argv++) {
+ const auto bumpArg = [&]() {
+ if (argc > 0) {
+ argc--;
+ argv++;
+ }
+ };
+
+ // read a string directly attached to a single-letter option
+ const auto getStringOperand = [&](const char* desc) {
+ if (argv[0][2] == 0) {
+ printf("%s must immediately follow option (no spaces)\n", desc);
+ exit(EFailUsage);
+ }
+ return argv[0] + 2;
+ };
+
+ // read a number attached to a single-letter option
+ const auto getAttachedNumber = [&](const char* desc) {
+ int num = atoi(argv[0] + 2);
+ if (num == 0) {
+ printf("%s: expected attached non-0 number\n", desc);
+ exit(EFailUsage);
+ }
+ return num;
+ };
+
+ // minimum needed (without overriding something else) to target Vulkan SPIR-V
+ const auto setVulkanSpv = []() {
+ Options |= EOptionSpv;
+ Options |= EOptionVulkanRules;
+ Options |= EOptionLinkProgram;
+ };
+
+ // minimum needed (without overriding something else) to target OpenGL SPIR-V
+ const auto setOpenGlSpv = []() {
+ Options |= EOptionSpv;
+ Options |= EOptionLinkProgram;
+ // undo a -H default to Vulkan
+ Options &= ~EOptionVulkanRules;
+ };
Reply to: