| OLD | NEW | 
| (Empty) |  | 
 |    1 /* | 
 |    2  * Copyright 2016 Google Inc. | 
 |    3  * | 
 |    4  * Use of this source code is governed by a BSD-style license that can be | 
 |    5  * found in the LICENSE file. | 
 |    6  */ | 
 |    7  | 
 |    8 #include "SkSLContext.h" | 
 |    9 #include "SkSLMemoryLayout.h" | 
 |   10  | 
 |   11 #include "Test.h" | 
 |   12  | 
 |   13 #if SK_SUPPORT_GPU | 
 |   14  | 
 |   15 DEF_TEST(SkSLMemoryLayout140Test, r) { | 
 |   16     SkSL::Context context; | 
 |   17     SkSL::MemoryLayout layout(SkSL::MemoryLayout::k140_Standard); | 
 |   18  | 
 |   19     // basic types | 
 |   20     REPORTER_ASSERT(r,  4 == layout.size(*context.fFloat_Type)); | 
 |   21     REPORTER_ASSERT(r,  8 == layout.size(*context.fVec2_Type)); | 
 |   22     REPORTER_ASSERT(r, 12 == layout.size(*context.fVec3_Type)); | 
 |   23     REPORTER_ASSERT(r, 16 == layout.size(*context.fVec4_Type)); | 
 |   24     REPORTER_ASSERT(r,  4 == layout.size(*context.fInt_Type)); | 
 |   25     REPORTER_ASSERT(r,  8 == layout.size(*context.fIVec2_Type)); | 
 |   26     REPORTER_ASSERT(r, 12 == layout.size(*context.fIVec3_Type)); | 
 |   27     REPORTER_ASSERT(r, 16 == layout.size(*context.fIVec4_Type)); | 
 |   28     REPORTER_ASSERT(r,  1 == layout.size(*context.fBool_Type)); | 
 |   29     REPORTER_ASSERT(r,  2 == layout.size(*context.fBVec2_Type)); | 
 |   30     REPORTER_ASSERT(r,  3 == layout.size(*context.fBVec3_Type)); | 
 |   31     REPORTER_ASSERT(r,  4 == layout.size(*context.fBVec4_Type)); | 
 |   32     REPORTER_ASSERT(r, 32 == layout.size(*context.fMat2x2_Type)); | 
 |   33     REPORTER_ASSERT(r, 32 == layout.size(*context.fMat2x4_Type)); | 
 |   34     REPORTER_ASSERT(r, 48 == layout.size(*context.fMat3x3_Type)); | 
 |   35     REPORTER_ASSERT(r, 64 == layout.size(*context.fMat4x2_Type)); | 
 |   36     REPORTER_ASSERT(r, 64 == layout.size(*context.fMat4x4_Type)); | 
 |   37     REPORTER_ASSERT(r,  4 == layout.alignment(*context.fFloat_Type)); | 
 |   38     REPORTER_ASSERT(r,  8 == layout.alignment(*context.fVec2_Type)); | 
 |   39     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fVec3_Type)); | 
 |   40     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fVec4_Type)); | 
 |   41     REPORTER_ASSERT(r,  4 == layout.alignment(*context.fInt_Type)); | 
 |   42     REPORTER_ASSERT(r,  8 == layout.alignment(*context.fIVec2_Type)); | 
 |   43     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fIVec3_Type)); | 
 |   44     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fIVec4_Type)); | 
 |   45     REPORTER_ASSERT(r,  1 == layout.alignment(*context.fBool_Type)); | 
 |   46     REPORTER_ASSERT(r,  2 == layout.alignment(*context.fBVec2_Type)); | 
 |   47     REPORTER_ASSERT(r,  4 == layout.alignment(*context.fBVec3_Type)); | 
 |   48     REPORTER_ASSERT(r,  4 == layout.alignment(*context.fBVec4_Type)); | 
 |   49     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fMat2x2_Type)); | 
 |   50     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fMat2x4_Type)); | 
 |   51     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fMat3x3_Type)); | 
 |   52     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fMat4x2_Type)); | 
 |   53     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fMat4x4_Type)); | 
 |   54  | 
 |   55     // struct 1 | 
 |   56     std::vector<SkSL::Type::Field> fields1; | 
 |   57     fields1.emplace_back(SkSL::Modifiers(), SkString("a"), context.fVec3_Type.ge
     t()); | 
 |   58     SkSL::Type s1(SkString("s1"), fields1); | 
 |   59     REPORTER_ASSERT(r, 16 == layout.size(s1)); | 
 |   60     REPORTER_ASSERT(r, 16 == layout.alignment(s1)); | 
 |   61  | 
 |   62     fields1.emplace_back(SkSL::Modifiers(), SkString("b"), context.fFloat_Type.g
     et()); | 
 |   63     SkSL::Type s2(SkString("s2"), fields1); | 
 |   64     REPORTER_ASSERT(r, 16 == layout.size(s2)); | 
 |   65     REPORTER_ASSERT(r, 16 == layout.alignment(s2)); | 
 |   66  | 
 |   67     fields1.emplace_back(SkSL::Modifiers(), SkString("c"), context.fBool_Type.ge
     t()); | 
 |   68     SkSL::Type s3(SkString("s3"), fields1); | 
 |   69     REPORTER_ASSERT(r, 32 == layout.size(s3)); | 
 |   70     REPORTER_ASSERT(r, 16 == layout.alignment(s3)); | 
 |   71  | 
 |   72     // struct 2 | 
 |   73     std::vector<SkSL::Type::Field> fields2; | 
 |   74     fields2.emplace_back(SkSL::Modifiers(), SkString("a"), context.fInt_Type.get
     ()); | 
 |   75     SkSL::Type s4(SkString("s4"), fields2); | 
 |   76     REPORTER_ASSERT(r, 16 == layout.size(s4)); | 
 |   77     REPORTER_ASSERT(r, 16 == layout.alignment(s4)); | 
 |   78  | 
 |   79     fields2.emplace_back(SkSL::Modifiers(), SkString("b"), context.fVec3_Type.ge
     t()); | 
 |   80     SkSL::Type s5(SkString("s5"), fields2); | 
 |   81     REPORTER_ASSERT(r, 32 == layout.size(s5)); | 
 |   82     REPORTER_ASSERT(r, 16 == layout.alignment(s5)); | 
 |   83  | 
 |   84     // arrays | 
 |   85     SkSL::Type array1(SkString("float[4]"), SkSL::Type::kArray_Kind, *context.fF
     loat_Type, 4); | 
 |   86     REPORTER_ASSERT(r, 64 == layout.size(array1)); | 
 |   87     REPORTER_ASSERT(r, 16 == layout.alignment(array1)); | 
 |   88     REPORTER_ASSERT(r, 16 == layout.stride(array1)); | 
 |   89  | 
 |   90     SkSL::Type array2(SkString("vec4[4]"), SkSL::Type::kArray_Kind, *context.fVe
     c4_Type, 4); | 
 |   91     REPORTER_ASSERT(r, 64 == layout.size(array2)); | 
 |   92     REPORTER_ASSERT(r, 16 == layout.alignment(array2)); | 
 |   93     REPORTER_ASSERT(r, 16 == layout.stride(array2)); | 
 |   94 } | 
 |   95  | 
 |   96 DEF_TEST(SkSLMemoryLayout430Test, r) { | 
 |   97     SkSL::Context context; | 
 |   98     SkSL::MemoryLayout layout(SkSL::MemoryLayout::k430_Standard); | 
 |   99  | 
 |  100     // basic types | 
 |  101     REPORTER_ASSERT(r,  4 == layout.size(*context.fFloat_Type)); | 
 |  102     REPORTER_ASSERT(r,  8 == layout.size(*context.fVec2_Type)); | 
 |  103     REPORTER_ASSERT(r, 12 == layout.size(*context.fVec3_Type)); | 
 |  104     REPORTER_ASSERT(r, 16 == layout.size(*context.fVec4_Type)); | 
 |  105     REPORTER_ASSERT(r,  4 == layout.size(*context.fInt_Type)); | 
 |  106     REPORTER_ASSERT(r,  8 == layout.size(*context.fIVec2_Type)); | 
 |  107     REPORTER_ASSERT(r, 12 == layout.size(*context.fIVec3_Type)); | 
 |  108     REPORTER_ASSERT(r, 16 == layout.size(*context.fIVec4_Type)); | 
 |  109     REPORTER_ASSERT(r,  1 == layout.size(*context.fBool_Type)); | 
 |  110     REPORTER_ASSERT(r,  2 == layout.size(*context.fBVec2_Type)); | 
 |  111     REPORTER_ASSERT(r,  3 == layout.size(*context.fBVec3_Type)); | 
 |  112     REPORTER_ASSERT(r,  4 == layout.size(*context.fBVec4_Type)); | 
 |  113     REPORTER_ASSERT(r, 16 == layout.size(*context.fMat2x2_Type)); | 
 |  114     REPORTER_ASSERT(r, 32 == layout.size(*context.fMat2x4_Type)); | 
 |  115     REPORTER_ASSERT(r, 48 == layout.size(*context.fMat3x3_Type)); | 
 |  116     REPORTER_ASSERT(r, 32 == layout.size(*context.fMat4x2_Type)); | 
 |  117     REPORTER_ASSERT(r, 64 == layout.size(*context.fMat4x4_Type)); | 
 |  118     REPORTER_ASSERT(r,  4 == layout.alignment(*context.fFloat_Type)); | 
 |  119     REPORTER_ASSERT(r,  8 == layout.alignment(*context.fVec2_Type)); | 
 |  120     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fVec3_Type)); | 
 |  121     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fVec4_Type)); | 
 |  122     REPORTER_ASSERT(r,  4 == layout.alignment(*context.fInt_Type)); | 
 |  123     REPORTER_ASSERT(r,  8 == layout.alignment(*context.fIVec2_Type)); | 
 |  124     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fIVec3_Type)); | 
 |  125     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fIVec4_Type)); | 
 |  126     REPORTER_ASSERT(r,  1 == layout.alignment(*context.fBool_Type)); | 
 |  127     REPORTER_ASSERT(r,  2 == layout.alignment(*context.fBVec2_Type)); | 
 |  128     REPORTER_ASSERT(r,  4 == layout.alignment(*context.fBVec3_Type)); | 
 |  129     REPORTER_ASSERT(r,  4 == layout.alignment(*context.fBVec4_Type)); | 
 |  130     REPORTER_ASSERT(r,  8 == layout.alignment(*context.fMat2x2_Type)); | 
 |  131     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fMat2x4_Type)); | 
 |  132     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fMat3x3_Type)); | 
 |  133     REPORTER_ASSERT(r,  8 == layout.alignment(*context.fMat4x2_Type)); | 
 |  134     REPORTER_ASSERT(r, 16 == layout.alignment(*context.fMat4x4_Type)); | 
 |  135  | 
 |  136     // struct 1 | 
 |  137     std::vector<SkSL::Type::Field> fields1; | 
 |  138     fields1.emplace_back(SkSL::Modifiers(), SkString("a"), context.fVec3_Type.ge
     t()); | 
 |  139     SkSL::Type s1(SkString("s1"), fields1); | 
 |  140     REPORTER_ASSERT(r, 16 == layout.size(s1)); | 
 |  141     REPORTER_ASSERT(r, 16 == layout.alignment(s1)); | 
 |  142  | 
 |  143     fields1.emplace_back(SkSL::Modifiers(), SkString("b"), context.fFloat_Type.g
     et()); | 
 |  144     SkSL::Type s2(SkString("s2"), fields1); | 
 |  145     REPORTER_ASSERT(r, 16 == layout.size(s2)); | 
 |  146     REPORTER_ASSERT(r, 16 == layout.alignment(s2)); | 
 |  147  | 
 |  148     fields1.emplace_back(SkSL::Modifiers(), SkString("c"), context.fBool_Type.ge
     t()); | 
 |  149     SkSL::Type s3(SkString("s3"), fields1); | 
 |  150     REPORTER_ASSERT(r, 32 == layout.size(s3)); | 
 |  151     REPORTER_ASSERT(r, 16 == layout.alignment(s3)); | 
 |  152  | 
 |  153     // struct 2 | 
 |  154     std::vector<SkSL::Type::Field> fields2; | 
 |  155     fields2.emplace_back(SkSL::Modifiers(), SkString("a"), context.fInt_Type.get
     ()); | 
 |  156     SkSL::Type s4(SkString("s4"), fields2); | 
 |  157     REPORTER_ASSERT(r, 4 == layout.size(s4)); | 
 |  158     REPORTER_ASSERT(r, 4 == layout.alignment(s4)); | 
 |  159  | 
 |  160     fields2.emplace_back(SkSL::Modifiers(), SkString("b"), context.fVec3_Type.ge
     t()); | 
 |  161     SkSL::Type s5(SkString("s5"), fields2); | 
 |  162     REPORTER_ASSERT(r, 32 == layout.size(s5)); | 
 |  163     REPORTER_ASSERT(r, 16 == layout.alignment(s5)); | 
 |  164  | 
 |  165     // arrays | 
 |  166     SkSL::Type array1(SkString("float[4]"), SkSL::Type::kArray_Kind, *context.fF
     loat_Type, 4); | 
 |  167     REPORTER_ASSERT(r, 16 == layout.size(array1)); | 
 |  168     REPORTER_ASSERT(r, 4 == layout.alignment(array1)); | 
 |  169     REPORTER_ASSERT(r, 4 == layout.stride(array1)); | 
 |  170  | 
 |  171     SkSL::Type array2(SkString("vec4[4]"), SkSL::Type::kArray_Kind, *context.fVe
     c4_Type, 4); | 
 |  172     REPORTER_ASSERT(r, 64 == layout.size(array2)); | 
 |  173     REPORTER_ASSERT(r, 16 == layout.alignment(array2)); | 
 |  174     REPORTER_ASSERT(r, 16 == layout.stride(array2)); | 
 |  175 } | 
 |  176 #endif | 
| OLD | NEW |