Loading libs/hwui/GlopBuilder.cpp +10 −2 Original line number Diff line number Diff line Loading @@ -35,6 +35,10 @@ namespace uirenderer { LOG_ALWAYS_FATAL_IF(stageFlag & mStageFlags, "Stage %d cannot be run twice"); \ mStageFlags = static_cast<StageFlags>(mStageFlags | stageFlag) #define REQUIRE_STAGES(requiredFlags) \ LOG_ALWAYS_FATAL_IF((mStageFlags & requiredFlags) != requiredFlags, \ "not prepared for current stage") GlopBuilder::GlopBuilder(RenderState& renderState, Caches& caches, Glop* outGlop) : mRenderState(renderState) , mCaches(caches) Loading Loading @@ -127,12 +131,14 @@ GlopBuilder& GlopBuilder::setOptionalPaint(const SkPaint* paint, float alphaScal } TRIGGER_STAGE(kFillStage); REQUIRE_STAGES(kMeshStage); mOutGlop->fill.color = { alphaScale, alphaScale, alphaScale, alphaScale }; const bool SWAP_SRC_DST = false; // TODO: account for texture blend if (alphaScale < 1.0f) { if (alphaScale < 1.0f || (mOutGlop->mesh.vertexFlags & kAlpha_Attrib)) { Blend::getFactors(SkXfermode::kSrcOver_Mode, SWAP_SRC_DST, &mOutGlop->blend.src, &mOutGlop->blend.dst); } else { Loading @@ -143,6 +149,7 @@ GlopBuilder& GlopBuilder::setOptionalPaint(const SkPaint* paint, float alphaScal } GlopBuilder& GlopBuilder::setPaint(const SkPaint& paint, float alphaScale) { TRIGGER_STAGE(kFillStage); REQUIRE_STAGES(kMeshStage); const SkShader* shader = paint.getShader(); const SkColorFilter* colorFilter = paint.getColorFilter(); Loading @@ -169,6 +176,7 @@ GlopBuilder& GlopBuilder::setPaint(const SkPaint& paint, float alphaScale) { mOutGlop->blend = { GL_ZERO, GL_ZERO }; if (mOutGlop->fill.color.a < 1.0f || (mOutGlop->mesh.vertexFlags & kAlpha_Attrib) || PaintUtils::isBlendedShader(shader) || PaintUtils::isBlendedColorFilter(colorFilter) || mode != SkXfermode::kSrcOver_Mode) { Loading Loading @@ -242,7 +250,7 @@ GlopBuilder& GlopBuilder::setPaint(const SkPaint& paint, float alphaScale) { } void GlopBuilder::build() { LOG_ALWAYS_FATAL_IF(mStageFlags != kAllStages, "glop not fully prepared!"); REQUIRE_STAGES(kAllStages); mDescription.modulate = mOutGlop->fill.color.a < 1.0f; mOutGlop->fill.program = mCaches.programCache.get(mDescription); Loading libs/hwui/renderstate/MeshState.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -67,7 +67,11 @@ MeshState::~MeshState() { } void MeshState::dump() { ALOGD("MeshState vertices: unitQuad %d, current %d", mUnitQuadBuffer, mCurrentBuffer); ALOGD("MeshState VBOs: unitQuad %d, current %d", mUnitQuadBuffer, mCurrentBuffer); ALOGD("MeshState vertices: vertex data %p, stride %d", mCurrentPositionPointer, mCurrentPositionStride); ALOGD("MeshState texCoord: data %p, stride %d", mCurrentTexCoordsPointer, mCurrentTexCoordsStride); } /////////////////////////////////////////////////////////////////////////////// Loading libs/hwui/tests/main.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -210,7 +210,7 @@ public: renderer->drawColor(0xFFFFFFFF, SkXfermode::kSrcOver_Mode); renderer->insertReorderBarrier(true); card = createCard(40, 40, 200, 200); card = createCard(40, 40, 400, 400); renderer->drawRenderNode(card.get(), DUMMY, 0); renderer->insertReorderBarrier(false); Loading @@ -228,11 +228,10 @@ private: node->setPropertyFieldsDirty(RenderNode::X | RenderNode::Y); DisplayListRenderer* renderer = startRecording(node.get()); renderer->drawColor(0xFFFF00FF, SkXfermode::kSrcOver_Mode); SkPaint paint; paint.setAntiAlias(true); paint.setColor(0xFF00FFFF); paint.setColor(0xFF000000); renderer->drawOval(0, 0, width, height, paint); endRecording(renderer, node.get()); Loading Loading
libs/hwui/GlopBuilder.cpp +10 −2 Original line number Diff line number Diff line Loading @@ -35,6 +35,10 @@ namespace uirenderer { LOG_ALWAYS_FATAL_IF(stageFlag & mStageFlags, "Stage %d cannot be run twice"); \ mStageFlags = static_cast<StageFlags>(mStageFlags | stageFlag) #define REQUIRE_STAGES(requiredFlags) \ LOG_ALWAYS_FATAL_IF((mStageFlags & requiredFlags) != requiredFlags, \ "not prepared for current stage") GlopBuilder::GlopBuilder(RenderState& renderState, Caches& caches, Glop* outGlop) : mRenderState(renderState) , mCaches(caches) Loading Loading @@ -127,12 +131,14 @@ GlopBuilder& GlopBuilder::setOptionalPaint(const SkPaint* paint, float alphaScal } TRIGGER_STAGE(kFillStage); REQUIRE_STAGES(kMeshStage); mOutGlop->fill.color = { alphaScale, alphaScale, alphaScale, alphaScale }; const bool SWAP_SRC_DST = false; // TODO: account for texture blend if (alphaScale < 1.0f) { if (alphaScale < 1.0f || (mOutGlop->mesh.vertexFlags & kAlpha_Attrib)) { Blend::getFactors(SkXfermode::kSrcOver_Mode, SWAP_SRC_DST, &mOutGlop->blend.src, &mOutGlop->blend.dst); } else { Loading @@ -143,6 +149,7 @@ GlopBuilder& GlopBuilder::setOptionalPaint(const SkPaint* paint, float alphaScal } GlopBuilder& GlopBuilder::setPaint(const SkPaint& paint, float alphaScale) { TRIGGER_STAGE(kFillStage); REQUIRE_STAGES(kMeshStage); const SkShader* shader = paint.getShader(); const SkColorFilter* colorFilter = paint.getColorFilter(); Loading @@ -169,6 +176,7 @@ GlopBuilder& GlopBuilder::setPaint(const SkPaint& paint, float alphaScale) { mOutGlop->blend = { GL_ZERO, GL_ZERO }; if (mOutGlop->fill.color.a < 1.0f || (mOutGlop->mesh.vertexFlags & kAlpha_Attrib) || PaintUtils::isBlendedShader(shader) || PaintUtils::isBlendedColorFilter(colorFilter) || mode != SkXfermode::kSrcOver_Mode) { Loading Loading @@ -242,7 +250,7 @@ GlopBuilder& GlopBuilder::setPaint(const SkPaint& paint, float alphaScale) { } void GlopBuilder::build() { LOG_ALWAYS_FATAL_IF(mStageFlags != kAllStages, "glop not fully prepared!"); REQUIRE_STAGES(kAllStages); mDescription.modulate = mOutGlop->fill.color.a < 1.0f; mOutGlop->fill.program = mCaches.programCache.get(mDescription); Loading
libs/hwui/renderstate/MeshState.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -67,7 +67,11 @@ MeshState::~MeshState() { } void MeshState::dump() { ALOGD("MeshState vertices: unitQuad %d, current %d", mUnitQuadBuffer, mCurrentBuffer); ALOGD("MeshState VBOs: unitQuad %d, current %d", mUnitQuadBuffer, mCurrentBuffer); ALOGD("MeshState vertices: vertex data %p, stride %d", mCurrentPositionPointer, mCurrentPositionStride); ALOGD("MeshState texCoord: data %p, stride %d", mCurrentTexCoordsPointer, mCurrentTexCoordsStride); } /////////////////////////////////////////////////////////////////////////////// Loading
libs/hwui/tests/main.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -210,7 +210,7 @@ public: renderer->drawColor(0xFFFFFFFF, SkXfermode::kSrcOver_Mode); renderer->insertReorderBarrier(true); card = createCard(40, 40, 200, 200); card = createCard(40, 40, 400, 400); renderer->drawRenderNode(card.get(), DUMMY, 0); renderer->insertReorderBarrier(false); Loading @@ -228,11 +228,10 @@ private: node->setPropertyFieldsDirty(RenderNode::X | RenderNode::Y); DisplayListRenderer* renderer = startRecording(node.get()); renderer->drawColor(0xFFFF00FF, SkXfermode::kSrcOver_Mode); SkPaint paint; paint.setAntiAlias(true); paint.setColor(0xFF00FFFF); paint.setColor(0xFF000000); renderer->drawOval(0, 0, width, height, paint); endRecording(renderer, node.get()); Loading