From 2973ef94ba6811b70faea799066aae3042dee50f Mon Sep 17 00:00:00 2001 From: Johan Andersson Date: Sat, 19 Dec 2020 22:56:10 +0100 Subject: [PATCH] Add SPIRV parsing test case with Embark Rust shaders --- test-data/spv/embark.spv | Bin 0 -> 67256 bytes tests/parse_embark.rs | 16 ++++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 test-data/spv/embark.spv create mode 100644 tests/parse_embark.rs diff --git a/test-data/spv/embark.spv b/test-data/spv/embark.spv new file mode 100644 index 0000000000000000000000000000000000000000..4d826f98bb384a61215b1e6acdf51867aa020193 GIT binary patch literal 67256 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�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