diff options
| author | 2015-08-21 15:31:20 -0700 | |
|---|---|---|
| committer | 2015-08-21 15:32:58 -0700 | |
| commit | 216048ffb0a4c41836c6ddb63f9b2e7a64593837 (patch) | |
| tree | d44b13fb66771269e572d06d77bc47132b34e613 | |
| parent | 655c5d4c70de1f24604927a6f1400f52749e18f7 (diff) | |
Add static asserts around assumed-static skia enum values
Protects assumptions around enums value built into LUTs
Change-Id: Ica0692e4309d50b4d3897e0f3f47809d14f786fe
| -rw-r--r-- | libs/hwui/SkiaShader.cpp | 9 | ||||
| -rw-r--r-- | libs/hwui/renderstate/Blend.cpp | 20 |
2 files changed, 28 insertions, 1 deletions
diff --git a/libs/hwui/SkiaShader.cpp b/libs/hwui/SkiaShader.cpp index 1f959469fb56..6c105cfc7b00 100644 --- a/libs/hwui/SkiaShader.cpp +++ b/libs/hwui/SkiaShader.cpp @@ -32,12 +32,19 @@ namespace uirenderer { // Support /////////////////////////////////////////////////////////////////////////////// -static const GLenum gTileModes[] = { +static constexpr GLenum gTileModes[] = { GL_CLAMP_TO_EDGE, // == SkShader::kClamp_TileMode GL_REPEAT, // == SkShader::kRepeat_Mode GL_MIRRORED_REPEAT // == SkShader::kMirror_TileMode }; +static_assert(gTileModes[SkShader::kClamp_TileMode] == GL_CLAMP_TO_EDGE, + "SkShader TileModes have changed"); +static_assert(gTileModes[SkShader::kRepeat_TileMode] == GL_REPEAT, + "SkShader TileModes have changed"); +static_assert(gTileModes[SkShader::kMirror_TileMode] == GL_MIRRORED_REPEAT, + "SkShader TileModes have changed"); + /** * This function does not work for n == 0. */ diff --git a/libs/hwui/renderstate/Blend.cpp b/libs/hwui/renderstate/Blend.cpp index 29927ed8667b..b21e15e8fad9 100644 --- a/libs/hwui/renderstate/Blend.cpp +++ b/libs/hwui/renderstate/Blend.cpp @@ -30,6 +30,26 @@ struct Blender { GLenum dst; }; +// assumptions made by lookup tables in either this file or ProgramCache +static_assert(0 == SkXfermode::kClear_Mode, "SkXfermode enums have changed"); +static_assert(1 == SkXfermode::kSrc_Mode, "SkXfermode enums have changed"); +static_assert(2 == SkXfermode::kDst_Mode, "SkXfermode enums have changed"); +static_assert(3 == SkXfermode::kSrcOver_Mode, "SkXfermode enums have changed"); +static_assert(4 == SkXfermode::kDstOver_Mode, "SkXfermode enums have changed"); +static_assert(5 == SkXfermode::kSrcIn_Mode, "SkXfermode enums have changed"); +static_assert(6 == SkXfermode::kDstIn_Mode, "SkXfermode enums have changed"); +static_assert(7 == SkXfermode::kSrcOut_Mode, "SkXfermode enums have changed"); +static_assert(8 == SkXfermode::kDstOut_Mode, "SkXfermode enums have changed"); +static_assert(9 == SkXfermode::kSrcATop_Mode, "SkXfermode enums have changed"); +static_assert(10 == SkXfermode::kDstATop_Mode, "SkXfermode enums have changed"); +static_assert(11 == SkXfermode::kXor_Mode, "SkXfermode enums have changed"); +static_assert(12 == SkXfermode::kPlus_Mode, "SkXfermode enums have changed"); +static_assert(13 == SkXfermode::kModulate_Mode, "SkXfermode enums have changed"); +static_assert(14 == SkXfermode::kScreen_Mode, "SkXfermode enums have changed"); +static_assert(15 == SkXfermode::kOverlay_Mode, "SkXfermode enums have changed"); +static_assert(16 == SkXfermode::kDarken_Mode, "SkXfermode enums have changed"); +static_assert(17 == SkXfermode::kLighten_Mode, "SkXfermode enums have changed"); + // In this array, the index of each Blender equals the value of the first // entry. For instance, gBlends[1] == gBlends[SkXfermode::kSrc_Mode] const Blender kBlends[] = { |