Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 99bc64e7 authored by Chris Craik's avatar Chris Craik Committed by Android Git Automerger
Browse files

am 97d572ec: am f2ecf428: Merge "Build layer damage bounds for shadows" into lmp-dev

* commit '97d572ecb4804fc764a2bc99d0a0f6dddfe6fbd8':
  Build layer damage bounds for shadows
parents 5374ff29 08ac4977
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -136,6 +136,7 @@ void AmbientShadow::createAmbientShadow(bool isCasterOpaque,
        }
    }
    shadowVertexBuffer.setMode(mode);
    shadowVertexBuffer.computeBounds<AlphaVertex>();

#if DEBUG_SHADOW
    for (int i = 0; i < SHADOW_VERTEX_COUNT; i++) {
+3 −13
Original line number Diff line number Diff line
@@ -794,16 +794,6 @@ void PathTessellator::tessellatePath(const SkPath &path, const SkPaint* paint,
    vertexBuffer.setBounds(bounds);
}

static void expandRectToCoverVertex(Rect& rect, float x, float y) {
    rect.left = fminf(rect.left, x);
    rect.top = fminf(rect.top, y);
    rect.right = fmaxf(rect.right, x);
    rect.bottom = fmaxf(rect.bottom, y);
}
static void expandRectToCoverVertex(Rect& rect, const Vertex& vertex) {
    expandRectToCoverVertex(rect, vertex.x, vertex.y);
}

template <class TYPE>
static void instanceVertices(VertexBuffer& srcBuffer, VertexBuffer& dstBuffer,
        const float* points, int count, Rect& bounds) {
@@ -814,7 +804,7 @@ static void instanceVertices(VertexBuffer& srcBuffer, VertexBuffer& dstBuffer,
    dstBuffer.alloc<TYPE>(numPoints * verticesPerPoint + (numPoints - 1) * 2);

    for (int i = 0; i < count; i += 2) {
        expandRectToCoverVertex(bounds, points[i + 0], points[i + 1]);
        bounds.expandToCoverVertex(points[i + 0], points[i + 1]);
        dstBuffer.copyInto<TYPE>(srcBuffer, points[i + 0], points[i + 1]);
    }
    dstBuffer.createDegenerateSeparators<TYPE>(verticesPerPoint);
@@ -896,8 +886,8 @@ void PathTessellator::tessellateLines(const float* points, int count, const SkPa
        }

        // calculate bounds
        expandRectToCoverVertex(bounds, tempVerticesData[0]);
        expandRectToCoverVertex(bounds, tempVerticesData[1]);
        bounds.expandToCoverVertex(tempVerticesData[0].x, tempVerticesData[0].y);
        bounds.expandToCoverVertex(tempVerticesData[1].x, tempVerticesData[1].y);
    }

    // since multiple objects tessellated into buffer, separate them with degen tris
+7 −0
Original line number Diff line number Diff line
@@ -241,6 +241,13 @@ public:
        bottom = ceilf(bottom);
    }

    void expandToCoverVertex(float x, float y) {
        left = fminf(left, x);
        top = fminf(top, y);
        right = fmaxf(right, x);
        bottom = fmaxf(bottom, y);
    }

    void dump(const char* label = NULL) const {
        ALOGD("%s[l=%f t=%f r=%f b=%f]", label ? label : "Rect", left, top, right, bottom);
    }
+1 −0
Original line number Diff line number Diff line
@@ -508,6 +508,7 @@ void SpotShadow::createSpotShadow(bool isCasterOpaque, const Vector3* poly,
    computeSpotShadow(isCasterOpaque, light, lightVertexCount, lightCenter, poly,
            polyLength, retStrips);
    retStrips.setMode(VertexBuffer::kTwoPolyRingShadow);
    retStrips.computeBounds<AlphaVertex>();
}

/**
+0 −2
Original line number Diff line number Diff line
@@ -273,8 +273,6 @@ static void tessellateShadows(
            isCasterOpaque, casterPolygon, casterVertexCount,
            *drawTransform, lightCenter, lightRadius, casterBounds, *localClip,
            spotBuffer);

    // TODO: set ambientBuffer & spotBuffer's bounds for correct layer damage
}

class ShadowProcessor : public TaskProcessor<TessellationCache::vertexBuffer_pair_t*> {
Loading