Merge "Switch Java calls to enableZ and disableZ; remove isRecordingFor"
This commit is contained in:
committed by
Android (Google) Code Review
commit
d50178eae6
@@ -54,11 +54,11 @@ public class CanvasPerfTest {
|
||||
canvas = node.start(200, 200);
|
||||
int save = canvas.save();
|
||||
canvas.clipRect(1, 1, 199, 199);
|
||||
canvas.insertReorderBarrier();
|
||||
canvas.enableZ();
|
||||
for (int i = 0; i < 5; i++) {
|
||||
canvas.drawRenderNode(child);
|
||||
}
|
||||
canvas.insertInorderBarrier();
|
||||
canvas.disableZ();
|
||||
canvas.restoreToCount(save);
|
||||
node.end(canvas);
|
||||
}
|
||||
|
||||
@@ -54,9 +54,9 @@ public class GhostView extends View {
|
||||
mView.mRecreateDisplayList = true;
|
||||
RenderNode renderNode = mView.updateDisplayListIfDirty();
|
||||
if (renderNode.hasDisplayList()) {
|
||||
dlCanvas.insertReorderBarrier(); // enable shadow for this rendernode
|
||||
dlCanvas.enableZ(); // enable shadow for this rendernode
|
||||
dlCanvas.drawRenderNode(renderNode);
|
||||
dlCanvas.insertInorderBarrier(); // re-disable reordering/shadows
|
||||
dlCanvas.disableZ(); // re-disable reordering/shadows
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4130,13 +4130,11 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
|
||||
|
||||
@Override
|
||||
protected void dispatchDraw(Canvas canvas) {
|
||||
boolean usingRenderNodeProperties = canvas.isRecordingFor(mRenderNode);
|
||||
final int childrenCount = mChildrenCount;
|
||||
final View[] children = mChildren;
|
||||
int flags = mGroupFlags;
|
||||
|
||||
if ((flags & FLAG_RUN_ANIMATION) != 0 && canAnimate()) {
|
||||
final boolean buildCache = !isHardwareAccelerated();
|
||||
for (int i = 0; i < childrenCount; i++) {
|
||||
final View child = children[i];
|
||||
if ((child.mViewFlags & VISIBILITY_MASK) == VISIBLE) {
|
||||
@@ -4177,12 +4175,12 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
|
||||
boolean more = false;
|
||||
final long drawingTime = getDrawingTime();
|
||||
|
||||
if (usingRenderNodeProperties) canvas.insertReorderBarrier();
|
||||
canvas.enableZ();
|
||||
final int transientCount = mTransientIndices == null ? 0 : mTransientIndices.size();
|
||||
int transientIndex = transientCount != 0 ? 0 : -1;
|
||||
// Only use the preordered list if not HW accelerated, since the HW pipeline will do the
|
||||
// draw reordering internally
|
||||
final ArrayList<View> preorderedList = usingRenderNodeProperties
|
||||
final ArrayList<View> preorderedList = isHardwareAccelerated()
|
||||
? null : buildOrderedChildList();
|
||||
final boolean customOrder = preorderedList == null
|
||||
&& isChildrenDrawingOrderEnabled();
|
||||
@@ -4229,7 +4227,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
|
||||
more |= drawChild(canvas, child, drawingTime);
|
||||
}
|
||||
}
|
||||
if (usingRenderNodeProperties) canvas.insertInorderBarrier();
|
||||
canvas.disableZ();
|
||||
|
||||
if (isShowingLayoutBounds()) {
|
||||
onDebugDraw(canvas);
|
||||
|
||||
@@ -249,11 +249,11 @@ public class ViewOverlay {
|
||||
* This means that we need to insert reorder barriers manually though, so that children
|
||||
* of the OverlayViewGroup can cast shadows and Z reorder with each other.
|
||||
*/
|
||||
canvas.insertReorderBarrier();
|
||||
canvas.enableZ();
|
||||
|
||||
super.dispatchDraw(canvas);
|
||||
|
||||
canvas.insertInorderBarrier();
|
||||
canvas.disableZ();
|
||||
final int numDrawables = (mDrawables == null) ? 0 : mDrawables.size();
|
||||
for (int i = 0; i < numDrawables; ++i) {
|
||||
mDrawables.get(i).draw(canvas);
|
||||
|
||||
@@ -58,9 +58,6 @@ public class Canvas extends BaseCanvas {
|
||||
return mNativeCanvasWrapper;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public boolean isRecordingFor(Object o) { return false; }
|
||||
|
||||
// may be null
|
||||
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 117521088)
|
||||
private Bitmap mBitmap;
|
||||
@@ -189,22 +186,6 @@ public class Canvas extends BaseCanvas {
|
||||
mBitmap = bitmap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use {@link #enableZ()} instead
|
||||
* @hide */
|
||||
@Deprecated
|
||||
public void insertReorderBarrier() {
|
||||
enableZ();
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use {@link #disableZ()} instead
|
||||
* @hide */
|
||||
@Deprecated
|
||||
public void insertInorderBarrier() {
|
||||
disableZ();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Enables Z support which defaults to disabled. This allows for RenderNodes drawn with
|
||||
* {@link #drawRenderNode(RenderNode)} to be re-arranged based off of their
|
||||
|
||||
@@ -79,12 +79,6 @@ public final class RecordingCanvas extends BaseRecordingCanvas {
|
||||
return nFinishRecording(mNativeCanvasWrapper);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@Override
|
||||
public boolean isRecordingFor(Object o) {
|
||||
return o == mNode;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Constructors
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
@@ -145,12 +139,12 @@ public final class RecordingCanvas extends BaseRecordingCanvas {
|
||||
|
||||
@Override
|
||||
public void enableZ() {
|
||||
nInsertReorderBarrier(mNativeCanvasWrapper, true);
|
||||
nEnableZ(mNativeCanvasWrapper, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disableZ() {
|
||||
nInsertReorderBarrier(mNativeCanvasWrapper, false);
|
||||
nEnableZ(mNativeCanvasWrapper, false);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
@@ -300,7 +294,7 @@ public final class RecordingCanvas extends BaseRecordingCanvas {
|
||||
@CriticalNative
|
||||
private static native int nGetMaximumTextureHeight();
|
||||
@CriticalNative
|
||||
private static native void nInsertReorderBarrier(long renderer, boolean enableReorder);
|
||||
private static native void nEnableZ(long renderer, boolean enableZ);
|
||||
@CriticalNative
|
||||
private static native long nFinishRecording(long renderer);
|
||||
@CriticalNative
|
||||
|
||||
@@ -57,8 +57,8 @@ public:
|
||||
LOG_ALWAYS_FATAL("SkiaCanvas does not produce a DisplayList");
|
||||
return nullptr;
|
||||
}
|
||||
virtual void insertReorderBarrier(bool enableReorder) override {
|
||||
LOG_ALWAYS_FATAL("SkiaCanvas does not support reordering barriers");
|
||||
virtual void enableZ(bool enableZ) override {
|
||||
LOG_ALWAYS_FATAL("SkiaCanvas does not support enableZ");
|
||||
}
|
||||
|
||||
virtual void setBitmap(const SkBitmap& bitmap) override;
|
||||
|
||||
@@ -144,7 +144,7 @@ public:
|
||||
virtual void resetRecording(int width, int height,
|
||||
uirenderer::RenderNode* renderNode = nullptr) = 0;
|
||||
virtual uirenderer::DisplayList* finishRecording() = 0;
|
||||
virtual void insertReorderBarrier(bool enableReorder) = 0;
|
||||
virtual void enableZ(bool enableZ) = 0;
|
||||
|
||||
bool isHighContrastText() const { return uirenderer::Properties::enableHighContrastText; }
|
||||
|
||||
|
||||
@@ -124,10 +124,10 @@ static jint android_view_DisplayListCanvas_getMaxTextureSize(CRITICAL_JNI_PARAMS
|
||||
#endif
|
||||
}
|
||||
|
||||
static void android_view_DisplayListCanvas_insertReorderBarrier(CRITICAL_JNI_PARAMS_COMMA jlong canvasPtr,
|
||||
static void android_view_DisplayListCanvas_enableZ(CRITICAL_JNI_PARAMS_COMMA jlong canvasPtr,
|
||||
jboolean reorderEnable) {
|
||||
Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr);
|
||||
canvas->insertReorderBarrier(reorderEnable);
|
||||
canvas->enableZ(reorderEnable);
|
||||
}
|
||||
|
||||
static jlong android_view_DisplayListCanvas_finishRecording(CRITICAL_JNI_PARAMS_COMMA jlong canvasPtr) {
|
||||
@@ -194,7 +194,7 @@ static JNINativeMethod gMethods[] = {
|
||||
{ "nResetDisplayListCanvas", "(JJII)V", (void*) android_view_DisplayListCanvas_resetDisplayListCanvas },
|
||||
{ "nGetMaximumTextureWidth", "()I", (void*) android_view_DisplayListCanvas_getMaxTextureSize },
|
||||
{ "nGetMaximumTextureHeight", "()I", (void*) android_view_DisplayListCanvas_getMaxTextureSize },
|
||||
{ "nInsertReorderBarrier", "(JZ)V", (void*) android_view_DisplayListCanvas_insertReorderBarrier },
|
||||
{ "nEnableZ", "(JZ)V", (void*) android_view_DisplayListCanvas_enableZ },
|
||||
{ "nFinishRecording", "(J)J", (void*) android_view_DisplayListCanvas_finishRecording },
|
||||
{ "nDrawRenderNode", "(JJ)V", (void*) android_view_DisplayListCanvas_drawRenderNode },
|
||||
{ "nDrawTextureLayer", "(JJ)V", (void*) android_view_DisplayListCanvas_drawTextureLayer },
|
||||
|
||||
@@ -57,7 +57,7 @@ void SkiaRecordingCanvas::initDisplayList(uirenderer::RenderNode* renderNode, in
|
||||
|
||||
uirenderer::DisplayList* SkiaRecordingCanvas::finishRecording() {
|
||||
// close any existing chunks if necessary
|
||||
insertReorderBarrier(false);
|
||||
enableZ(false);
|
||||
mRecorder.restoreToCount(1);
|
||||
return mDisplayList.release();
|
||||
}
|
||||
@@ -85,8 +85,8 @@ void SkiaRecordingCanvas::drawCircle(uirenderer::CanvasPropertyPrimitive* x,
|
||||
drawDrawable(mDisplayList->allocateDrawable<AnimatedCircle>(x, y, radius, paint));
|
||||
}
|
||||
|
||||
void SkiaRecordingCanvas::insertReorderBarrier(bool enableReorder) {
|
||||
if (mCurrentBarrier && enableReorder) {
|
||||
void SkiaRecordingCanvas::enableZ(bool enableZ) {
|
||||
if (mCurrentBarrier && enableZ) {
|
||||
// Already in a re-order section, nothing to do
|
||||
return;
|
||||
}
|
||||
@@ -98,7 +98,7 @@ void SkiaRecordingCanvas::insertReorderBarrier(bool enableReorder) {
|
||||
mCurrentBarrier = nullptr;
|
||||
drawDrawable(drawable);
|
||||
}
|
||||
if (enableReorder) {
|
||||
if (enableZ) {
|
||||
mCurrentBarrier =
|
||||
mDisplayList->allocateDrawable<StartReorderBarrierDrawable>(mDisplayList.get());
|
||||
drawDrawable(mCurrentBarrier);
|
||||
|
||||
@@ -69,7 +69,7 @@ public:
|
||||
|
||||
virtual void drawVectorDrawable(VectorDrawableRoot* vectorDrawable) override;
|
||||
|
||||
virtual void insertReorderBarrier(bool enableReorder) override;
|
||||
virtual void enableZ(bool enableZ) override;
|
||||
virtual void drawLayer(uirenderer::DeferredLayerUpdater* layerHandle) override;
|
||||
virtual void drawRenderNode(uirenderer::RenderNode* renderNode) override;
|
||||
virtual void callDrawGLFunction(Functor* functor,
|
||||
|
||||
@@ -56,9 +56,9 @@ public:
|
||||
(float)magnifier->height(), 0, 0, (float)props.getWidth(),
|
||||
(float)props.getHeight(), nullptr);
|
||||
});
|
||||
canvas.insertReorderBarrier(true);
|
||||
canvas.enableZ(true);
|
||||
canvas.drawRenderNode(zoomImageView.get());
|
||||
canvas.insertReorderBarrier(false);
|
||||
canvas.enableZ(false);
|
||||
}
|
||||
|
||||
void doFrame(int frameNr) override {
|
||||
|
||||
@@ -36,7 +36,7 @@ public:
|
||||
int cardsize = std::min(width, height) - dp(64);
|
||||
|
||||
renderer.drawColor(Color::White, SkBlendMode::kSrcOver);
|
||||
renderer.insertReorderBarrier(true);
|
||||
renderer.enableZ(true);
|
||||
|
||||
int x = dp(32);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
@@ -52,7 +52,7 @@ public:
|
||||
mCards.push_back(card);
|
||||
}
|
||||
|
||||
renderer.insertReorderBarrier(false);
|
||||
renderer.enableZ(false);
|
||||
}
|
||||
|
||||
void doFrame(int frameNr) override {
|
||||
|
||||
@@ -29,7 +29,7 @@ public:
|
||||
sp<RenderNode> card;
|
||||
void createContent(int width, int height, Canvas& canvas) override {
|
||||
canvas.drawColor(0xFFFFFFFF, SkBlendMode::kSrcOver);
|
||||
canvas.insertReorderBarrier(true);
|
||||
canvas.enableZ(true);
|
||||
|
||||
card = TestUtils::createNode(50, 50, 250, 250, [](RenderProperties& props, Canvas& canvas) {
|
||||
canvas.drawColor(0xFFFF00FF, SkBlendMode::kSrcOver);
|
||||
@@ -47,7 +47,7 @@ public:
|
||||
});
|
||||
canvas.drawRenderNode(card.get());
|
||||
|
||||
canvas.insertReorderBarrier(false);
|
||||
canvas.enableZ(false);
|
||||
}
|
||||
void doFrame(int frameNr) override {
|
||||
int curFrame = frameNr % 150;
|
||||
|
||||
@@ -27,7 +27,7 @@ public:
|
||||
std::vector<sp<RenderNode> > cards;
|
||||
void createContent(int width, int height, Canvas& canvas) override {
|
||||
canvas.drawColor(0xFFFFFFFF, SkBlendMode::kSrcOver);
|
||||
canvas.insertReorderBarrier(true);
|
||||
canvas.enableZ(true);
|
||||
int ci = 0;
|
||||
|
||||
for (int x = 0; x < width; x += mSpacing) {
|
||||
@@ -45,7 +45,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
canvas.insertReorderBarrier(false);
|
||||
canvas.enableZ(false);
|
||||
}
|
||||
void doFrame(int frameNr) override {
|
||||
int curFrame = frameNr % 50;
|
||||
|
||||
@@ -29,7 +29,7 @@ public:
|
||||
std::vector<sp<RenderNode> > cards;
|
||||
void createContent(int width, int height, Canvas& canvas) override {
|
||||
canvas.drawColor(0xFFFFFFFF, SkBlendMode::kSrcOver);
|
||||
canvas.insertReorderBarrier(true);
|
||||
canvas.enableZ(true);
|
||||
|
||||
for (int x = dp(8); x < (width - dp(58)); x += dp(58)) {
|
||||
for (int y = dp(8); y < (height - dp(58)); y += dp(58)) {
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
canvas.insertReorderBarrier(false);
|
||||
canvas.enableZ(false);
|
||||
}
|
||||
void doFrame(int frameNr) override {
|
||||
int curFrame = frameNr % 150;
|
||||
|
||||
@@ -29,7 +29,7 @@ public:
|
||||
std::vector<sp<RenderNode> > cards;
|
||||
void createContent(int width, int height, Canvas& canvas) override {
|
||||
canvas.drawColor(0xFFFFFFFF, SkBlendMode::kSrcOver);
|
||||
canvas.insertReorderBarrier(true);
|
||||
canvas.enableZ(true);
|
||||
|
||||
for (int x = dp(16); x < (width - dp(116)); x += dp(116)) {
|
||||
for (int y = dp(16); y < (height - dp(116)); y += dp(116)) {
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
canvas.insertReorderBarrier(false);
|
||||
canvas.enableZ(false);
|
||||
}
|
||||
void doFrame(int frameNr) override {
|
||||
int curFrame = frameNr % 150;
|
||||
|
||||
@@ -29,7 +29,7 @@ public:
|
||||
std::vector<sp<RenderNode> > cards;
|
||||
void createContent(int width, int height, Canvas& canvas) override {
|
||||
canvas.drawColor(0xFFFFFFFF, SkBlendMode::kSrcOver);
|
||||
canvas.insertReorderBarrier(true);
|
||||
canvas.enableZ(true);
|
||||
|
||||
int outset = 50;
|
||||
for (int i = 0; i < 10; i++) {
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
cards.push_back(card);
|
||||
}
|
||||
|
||||
canvas.insertReorderBarrier(false);
|
||||
canvas.enableZ(false);
|
||||
}
|
||||
void doFrame(int frameNr) override {
|
||||
int curFrame = frameNr % 10;
|
||||
|
||||
@@ -67,7 +67,7 @@ public:
|
||||
mBg = createBitmapNode(canvas, 0xFF9C27B0, 0, 0, width, height);
|
||||
canvas.drawRenderNode(mBg.get());
|
||||
|
||||
canvas.insertReorderBarrier(true);
|
||||
canvas.enableZ(true);
|
||||
mSingleBitmap = mAllocator(dp(160), dp(120), kRGBA_8888_SkColorType,
|
||||
[](SkBitmap& skBitmap) { skBitmap.eraseColor(0xFF0000FF); });
|
||||
|
||||
@@ -80,7 +80,7 @@ public:
|
||||
mCards.push_back(card);
|
||||
}
|
||||
}
|
||||
canvas.insertReorderBarrier(false);
|
||||
canvas.enableZ(false);
|
||||
}
|
||||
|
||||
void doFrame(int frameNr) override {
|
||||
|
||||
@@ -133,14 +133,14 @@ void BM_DisplayListCanvas_basicViewGroupDraw(benchmark::State& benchState) {
|
||||
int clipRestoreCount = canvas->save(SaveFlags::MatrixClip);
|
||||
canvas->clipRect(1, 1, 199, 199, SkClipOp::kIntersect);
|
||||
|
||||
canvas->insertReorderBarrier(true);
|
||||
canvas->enableZ(true);
|
||||
|
||||
// Draw child loop
|
||||
for (int i = 0; i < benchState.range(0); i++) {
|
||||
canvas->drawRenderNode(child.get());
|
||||
}
|
||||
|
||||
canvas->insertReorderBarrier(false);
|
||||
canvas->enableZ(false);
|
||||
canvas->restoreToCount(clipRestoreCount);
|
||||
|
||||
delete canvas->finishRecording();
|
||||
|
||||
@@ -108,27 +108,27 @@ protected:
|
||||
TEST(RenderNodeDrawable, zReorder) {
|
||||
auto parent = TestUtils::createSkiaNode(0, 0, 100, 100, [](RenderProperties& props,
|
||||
SkiaRecordingCanvas& canvas) {
|
||||
canvas.insertReorderBarrier(true);
|
||||
canvas.insertReorderBarrier(false);
|
||||
canvas.enableZ(true);
|
||||
canvas.enableZ(false);
|
||||
drawOrderedNode(&canvas, 0, 10.0f); // in reorder=false at this point, so played inorder
|
||||
drawOrderedRect(&canvas, 1);
|
||||
canvas.insertReorderBarrier(true);
|
||||
canvas.enableZ(true);
|
||||
drawOrderedNode(&canvas, 6, 2.0f);
|
||||
drawOrderedRect(&canvas, 3);
|
||||
drawOrderedNode(&canvas, 4, 0.0f);
|
||||
drawOrderedRect(&canvas, 5);
|
||||
drawOrderedNode(&canvas, 2, -2.0f);
|
||||
drawOrderedNode(&canvas, 7, 2.0f);
|
||||
canvas.insertReorderBarrier(false);
|
||||
canvas.enableZ(false);
|
||||
drawOrderedRect(&canvas, 8);
|
||||
drawOrderedNode(&canvas, 9, -10.0f); // in reorder=false at this point, so played inorder
|
||||
canvas.insertReorderBarrier(true); // reorder a node ahead of drawrect op
|
||||
canvas.enableZ(true); // reorder a node ahead of drawrect op
|
||||
drawOrderedRect(&canvas, 11);
|
||||
drawOrderedNode(&canvas, 10, -1.0f);
|
||||
canvas.insertReorderBarrier(false);
|
||||
canvas.insertReorderBarrier(true); // test with two empty reorder sections
|
||||
canvas.insertReorderBarrier(true);
|
||||
canvas.insertReorderBarrier(false);
|
||||
canvas.enableZ(false);
|
||||
canvas.enableZ(true); // test with two empty reorder sections
|
||||
canvas.enableZ(true);
|
||||
canvas.enableZ(false);
|
||||
drawOrderedRect(&canvas, 12);
|
||||
});
|
||||
|
||||
@@ -1142,7 +1142,7 @@ TEST(ReorderBarrierDrawable, testShadowMatrix) {
|
||||
0, 0, CANVAS_WIDTH, CANVAS_HEIGHT,
|
||||
[](RenderProperties& props, SkiaRecordingCanvas& canvas) {
|
||||
canvas.translate(TRANSLATE_X, TRANSLATE_Y);
|
||||
canvas.insertReorderBarrier(true);
|
||||
canvas.enableZ(true);
|
||||
|
||||
auto node = TestUtils::createSkiaNode(
|
||||
CASTER_X, CASTER_Y, CASTER_X + CASTER_WIDTH, CASTER_Y + CASTER_HEIGHT,
|
||||
@@ -1152,7 +1152,7 @@ TEST(ReorderBarrierDrawable, testShadowMatrix) {
|
||||
props.mutableOutline().setShouldClip(true);
|
||||
});
|
||||
canvas.drawRenderNode(node.get());
|
||||
canvas.insertReorderBarrier(false);
|
||||
canvas.enableZ(false);
|
||||
});
|
||||
|
||||
// create a canvas not backed by any device/pixels, but with dimensions to avoid quick rejection
|
||||
|
||||
Reference in New Issue
Block a user