diff options
| author | 2015-02-13 17:47:21 -0800 | |
|---|---|---|
| committer | 2015-02-17 15:45:46 -0800 | |
| commit | 922d3a7f6f8c1c05a996ee3e91e8cbadfff560c9 (patch) | |
| tree | 9b8acab9755321ae0e7564d2250f2106117412cb /libs/hwui/GlopBuilder.cpp | |
| parent | 91d415d863de73430af100ebd1b4f5b3b795e8d1 (diff) | |
Glop SkiaShader support
Change-Id: I894a0b62701bd02367ab970813e4c332147351a2
Diffstat (limited to 'libs/hwui/GlopBuilder.cpp')
| -rw-r--r-- | libs/hwui/GlopBuilder.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/libs/hwui/GlopBuilder.cpp b/libs/hwui/GlopBuilder.cpp index 91e0f8916f6e..bdc5c5c27552 100644 --- a/libs/hwui/GlopBuilder.cpp +++ b/libs/hwui/GlopBuilder.cpp @@ -39,7 +39,7 @@ namespace uirenderer { LOG_ALWAYS_FATAL_IF((mStageFlags & (requiredFlags)) != (requiredFlags), \ "not prepared for current stage") -static void setUnitQuadTextureCoords(Rect uvs, TextureVertex* quadVertex) {; +static void setUnitQuadTextureCoords(Rect uvs, TextureVertex* quadVertex) { TextureVertex::setUV(quadVertex++, uvs.left, uvs.top); TextureVertex::setUV(quadVertex++, uvs.right, uvs.top); TextureVertex::setUV(quadVertex++, uvs.left, uvs.bottom); @@ -49,6 +49,7 @@ static void setUnitQuadTextureCoords(Rect uvs, TextureVertex* quadVertex) {; GlopBuilder::GlopBuilder(RenderState& renderState, Caches& caches, Glop* outGlop) : mRenderState(renderState) , mCaches(caches) + , mShader(nullptr) , mOutGlop(outGlop) { mStageFlags = kInitialStage; } @@ -192,12 +193,7 @@ void GlopBuilder::setFill(int color, float alphaScale, SkXfermode::Mode mode, } } } - - if (shader) { - SkiaShader::describe(&mCaches, mDescription, mCaches.extensions(), *shader); - // TODO: store shader data - LOG_ALWAYS_FATAL("shaders not yet supported"); - } + mShader = shader; // shader resolved in ::build() if (colorFilter) { SkColor color; @@ -394,6 +390,11 @@ GlopBuilder& GlopBuilder::setRoundRectClipState(const RoundRectClipState* roundR void GlopBuilder::build() { REQUIRE_STAGES(kAllStages); + // serialize shader info into ShaderData + GLuint textureUnit = mOutGlop->fill.texture ? 1 : 0; + SkiaShader::store(mCaches, mShader, mOutGlop->transform.modelView, + &textureUnit, &mDescription, &(mOutGlop->fill.skiaShaderData)); + mOutGlop->fill.program = mCaches.programCache.get(mDescription); mOutGlop->transform.canvas.mapRect(mOutGlop->bounds); |