Add more SPIR-V 1.4 tests based on Amber
authorDavid Neto <dneto@google.com>
Wed, 27 Mar 2019 00:45:28 +0000 (20:45 -0400)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 10 Oct 2019 13:23:11 +0000 (09:23 -0400)
commit085fd5b790dcb59a30879fc229d7f81c73748368
treebc599f5e4529c9e8d8291b22ce2fbe2285aa38d6
parent676da336b3286220ab1565c9800a7faaf38d0118
Add more SPIR-V 1.4 tests based on Amber

Tests:
- New instructions: OpPtrDiff, OpPtrEqual, OpPtrNotEqual,
  OpDecorateString
- New decorations: UniformId, NonWritable, UserSemantic, CounterBuffer,
  NoSignedWrap, NoUnsignedWrap
- OpCopyMemory can have two sets of memory access operands
- OpEntryPoint lists all module-scope variables
- New loop controls
- New cases for OpSelect
- UConvert in OpSpecConstantOp for Shader modules

Local fixes:
- Update Amber to newer version that handles push constants.
  With MSVC, force Amber to use shared C Runtime DLL
- Modified the entrypoint tessellation control and evaluation tests to
  set TessLevelInner and TessLevelOuter.
- Modified the tessellation control tests to fix typos and apply Patch
  decoration.
- Artificially make all values within a buffer the same type, to
  accommodate a new Amber limitation.
  See https://github.com/google/amber/issues/497
- Loop control tests:
  - Reduce iteration count to match sample data, adjust loop control
  values
  - Make loop control match test file name
  - Use int data instead of float, so we can read int iteration count
    from storage.
  - Fix comment on all loop control tests
- Use StorageBuffer/Block instead of Uniform/BufferBlock
- Modify to use binding 0:
   comp_pc_entry_point.amber,
   wg_comparisons_equal.amber
   wg_comparisons_not_equal.amber
- Fix typo for TessLevelOuter builtin
- Fix method name on call to vkt::Context::getVariablePointersFeatures
- Fix whitespace issues in C++ code
- variable_pointers_vars_ssbo_2_diff.amber only needs
  VariablePointersStorageBuffer
- Fetch newer amber, fixing invalid requirement for fragment shader
  https://github.com/google/amber/issues/553

Extend vkt::AmberTestCase so it can track instance extensions, device
extensions, and feature bits.

Components: Vulkan

Affects:
dEQP-VK.spirv_assembly.instruction.spirv1p4.entrypoint.*
dEQP-VK.spirv_assembly.instruction.spirv1p4.hlsl_functionality1.*
dEQP-VK.spirv_assembly.instruction.spirv1p4.loop_control.*
dEQP-VK.spirv_assembly.instruction.spirv1p4.nonwritable.*
dEQP-VK.spirv_assembly.instruction.spirv1p4.opcopymemory.*
dEQP-VK.spirv_assembly.instruction.spirv1p4.opptrdiff.*
dEQP-VK.spirv_assembly.instruction.spirv1p4.opptrequal.*
dEQP-VK.spirv_assembly.instruction.spirv1p4.opptrnotequal.*
dEQP-VK.spirv_assembly.instruction.spirv1p4.opselect.*
dEQP-VK.spirv_assembly.instruction.spirv1p4.uconvert.*
dEQP-VK.spirv_assembly.instruction.spirv1p4.uniformid.*
dEQP-VK.spirv_assembly.instruction.spirv1p4.wrap.*

VK-GL-CTS issue: 1705

Change-Id: I1e0adde2258a4c5a313609f7f1d7b2b51be1a373
(cherry picked from commit 94804dca849178b5e222d9d9d53a2a54fd21e8a3)
80 files changed:
android/cts/master/vk-master.txt
external/amber/CMakeLists.txt
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/comp_pc_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/comp_ssbo_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/comp_ubo_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/comp_workgroup_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/frag_pc_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/frag_ssbo_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/frag_ubo_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/geom_pc_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/geom_ssbo_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/geom_ubo_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_con_pc_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_con_ssbo_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_con_ubo_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_eval_pc_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_eval_ssbo_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_eval_ubo_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/vert_pc_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/vert_ssbo_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/vert_ubo_entry_point.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/counter_buffer.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/iteration_multiple.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/max_iterations.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/min_iterations.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/partial_count.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/peel_count.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/function_2_nonwritable.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/function_nonwritable.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/private_2_nonwritable.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/private_nonwritable.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopymemory/different_alignments.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopymemory/no_source_access_operands.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopymemory/no_target_access_operands.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/ssbo_comparisons_diff.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/variable_pointers_vars_ssbo_2_diff.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/variable_pointers_vars_ssbo_diff.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/variable_pointers_vars_wg_diff.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/wg_comparisons_diff.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/null_comparisons_ssbo_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/null_comparisons_wg_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/ssbo_comparisons_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_ssbo_2_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_ssbo_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_vars_ssbo_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_vars_wg_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_wg_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/wg_comparisons_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/null_comparisons_ssbo_not_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/null_comparisons_wg_not_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/ssbo_comparisons_not_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_ssbo_2_not_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_ssbo_not_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_vars_ssbo_not_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_vars_wg_not_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_wg_not_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/wg_comparisons_not_equal.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/scalar_select.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/struct_select.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/vector_select.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_extend_16.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_extend_16_64_bit.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_extend_251658240_64_bits.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_extend_61440.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_truncate_16.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_truncate_16_64_bit.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_truncate_983040.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_zero_extend_n4096.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/partially_active_uniform_id.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/subgroup_cfg_uniform_id.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/subgroup_uniform.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/workgroup_cfg_uniform_id.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/workgroup_uniform.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/wrap/no_signed_wrap.amber [new file with mode: 0644]
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/wrap/no_unsigned_wrap.amber [new file with mode: 0644]
external/vulkancts/modules/vulkan/amber/vktAmberTestCase.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmSpirvVersion1p4Tests.cpp
external/vulkancts/mustpass/master/vk-default-no-waivers.txt
external/vulkancts/mustpass/master/vk-default.txt