diff options
author | Ethan Nicholas <ethannicholas@google.com> | 2016-11-28 16:30:17 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-28 22:38:47 +0000 |
commit | 19671772c1a03bd973fae54dead4defc9ee1d4c3 (patch) | |
tree | b84497e9cf024f7d5dcfec6235ce8838bb25e1d8 /tests | |
parent | 59f9edb321ea29f7349bd4f13f3473e54831598a (diff) |
added support for layout(offset=...) to skslc
BUG=skia:
Change-Id: Idc1118503f9703496a0c852f0d8840b26e08b9fb
Reviewed-on: https://skia-review.googlesource.com/5283
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/SkSLErrorTest.cpp | 9 | ||||
-rw-r--r-- | tests/SkSLGLSLTest.cpp | 22 | ||||
-rw-r--r-- | tests/SkSLMemoryLayoutTest.cpp | 20 |
3 files changed, 37 insertions, 14 deletions
diff --git a/tests/SkSLErrorTest.cpp b/tests/SkSLErrorTest.cpp index 896b32ccb8..c653072dd1 100644 --- a/tests/SkSLErrorTest.cpp +++ b/tests/SkSLErrorTest.cpp @@ -378,4 +378,13 @@ DEF_TEST(SkSLBadCap, r) { "error: 1: unknown capability flag 'bugFreeDriver'\n1 error\n"); } +DEF_TEST(SkSLBadOffset, r) { + test_failure(r, + "struct Bad { layout (offset = 5) int x; } bad; void main() { bad.x = 5; }", + "error: 1: offset of field 'x' must be a multiple of 4\n1 error\n"); + test_failure(r, + "struct Bad { int x; layout (offset = 0) int y; } bad; void main() { bad.x = 5; }", + "error: 1: offset of field 'y' must be at least 4\n1 error\n"); +} + #endif diff --git a/tests/SkSLGLSLTest.cpp b/tests/SkSLGLSLTest.cpp index 52638a5795..490c4379fb 100644 --- a/tests/SkSLGLSLTest.cpp +++ b/tests/SkSLGLSLTest.cpp @@ -211,15 +211,13 @@ DEF_TEST(SkSLStructs, r) { "struct A {\n" " int x;\n" " int y;\n" - "}\n" - " a1, a2;\n" + "} a1, a2;\n" "A a3;\n" "struct B {\n" " float x;\n" " float[2] y;\n" " layout (binding = 1) A z;\n" - "}\n" - " b1, b2, b3;\n" + "} b1, b2, b3;\n" "void main() {\n" "}\n"); } @@ -589,4 +587,20 @@ DEF_TEST(SkSLTexture, r) { "}\n"); } +DEF_TEST(SkSLOffset, r) { + test(r, + "struct Test {" + "layout(offset = 0) int x;" + "layout(offset = 4) int y;" + "int z;" + "} test;", + *SkSL::GLSLCapsFactory::Default(), + "#version 400\n" + "out vec4 sk_FragColor;\n" + "struct Test {\n" + " layout (offset = 0) int x;\n" + " layout (offset = 4) int y;\n" + " int z;\n" + "} test;\n"); +} #endif diff --git a/tests/SkSLMemoryLayoutTest.cpp b/tests/SkSLMemoryLayoutTest.cpp index 336d8aa477..ff3d0105bd 100644 --- a/tests/SkSLMemoryLayoutTest.cpp +++ b/tests/SkSLMemoryLayoutTest.cpp @@ -55,29 +55,29 @@ DEF_TEST(SkSLMemoryLayout140Test, r) { // struct 1 std::vector<SkSL::Type::Field> fields1; fields1.emplace_back(SkSL::Modifiers(), SkString("a"), context.fVec3_Type.get()); - SkSL::Type s1(SkString("s1"), fields1); + SkSL::Type s1(SkSL::Position(), SkString("s1"), fields1); REPORTER_ASSERT(r, 16 == layout.size(s1)); REPORTER_ASSERT(r, 16 == layout.alignment(s1)); fields1.emplace_back(SkSL::Modifiers(), SkString("b"), context.fFloat_Type.get()); - SkSL::Type s2(SkString("s2"), fields1); + SkSL::Type s2(SkSL::Position(), SkString("s2"), fields1); REPORTER_ASSERT(r, 16 == layout.size(s2)); REPORTER_ASSERT(r, 16 == layout.alignment(s2)); fields1.emplace_back(SkSL::Modifiers(), SkString("c"), context.fBool_Type.get()); - SkSL::Type s3(SkString("s3"), fields1); + SkSL::Type s3(SkSL::Position(), SkString("s3"), fields1); REPORTER_ASSERT(r, 32 == layout.size(s3)); REPORTER_ASSERT(r, 16 == layout.alignment(s3)); // struct 2 std::vector<SkSL::Type::Field> fields2; fields2.emplace_back(SkSL::Modifiers(), SkString("a"), context.fInt_Type.get()); - SkSL::Type s4(SkString("s4"), fields2); + SkSL::Type s4(SkSL::Position(), SkString("s4"), fields2); REPORTER_ASSERT(r, 16 == layout.size(s4)); REPORTER_ASSERT(r, 16 == layout.alignment(s4)); fields2.emplace_back(SkSL::Modifiers(), SkString("b"), context.fVec3_Type.get()); - SkSL::Type s5(SkString("s5"), fields2); + SkSL::Type s5(SkSL::Position(), SkString("s5"), fields2); REPORTER_ASSERT(r, 32 == layout.size(s5)); REPORTER_ASSERT(r, 16 == layout.alignment(s5)); @@ -136,29 +136,29 @@ DEF_TEST(SkSLMemoryLayout430Test, r) { // struct 1 std::vector<SkSL::Type::Field> fields1; fields1.emplace_back(SkSL::Modifiers(), SkString("a"), context.fVec3_Type.get()); - SkSL::Type s1(SkString("s1"), fields1); + SkSL::Type s1(SkSL::Position(), SkString("s1"), fields1); REPORTER_ASSERT(r, 16 == layout.size(s1)); REPORTER_ASSERT(r, 16 == layout.alignment(s1)); fields1.emplace_back(SkSL::Modifiers(), SkString("b"), context.fFloat_Type.get()); - SkSL::Type s2(SkString("s2"), fields1); + SkSL::Type s2(SkSL::Position(), SkString("s2"), fields1); REPORTER_ASSERT(r, 16 == layout.size(s2)); REPORTER_ASSERT(r, 16 == layout.alignment(s2)); fields1.emplace_back(SkSL::Modifiers(), SkString("c"), context.fBool_Type.get()); - SkSL::Type s3(SkString("s3"), fields1); + SkSL::Type s3(SkSL::Position(), SkString("s3"), fields1); REPORTER_ASSERT(r, 32 == layout.size(s3)); REPORTER_ASSERT(r, 16 == layout.alignment(s3)); // struct 2 std::vector<SkSL::Type::Field> fields2; fields2.emplace_back(SkSL::Modifiers(), SkString("a"), context.fInt_Type.get()); - SkSL::Type s4(SkString("s4"), fields2); + SkSL::Type s4(SkSL::Position(), SkString("s4"), fields2); REPORTER_ASSERT(r, 4 == layout.size(s4)); REPORTER_ASSERT(r, 4 == layout.alignment(s4)); fields2.emplace_back(SkSL::Modifiers(), SkString("b"), context.fVec3_Type.get()); - SkSL::Type s5(SkString("s5"), fields2); + SkSL::Type s5(SkSL::Position(), SkString("s5"), fields2); REPORTER_ASSERT(r, 32 == layout.size(s5)); REPORTER_ASSERT(r, 16 == layout.alignment(s5)); |