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

Commit 9a114ce0 authored by Kevin Lubick's avatar Kevin Lubick Committed by Android (Google) Code Review
Browse files

Merge "Use moved SkMesh APIs" into main

parents 7e705565 9cc7f77e
Loading
Loading
Loading
Loading
+19 −6
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@

#include <GrDirectContext.h>
#include <SkMesh.h>
#include <include/gpu/ganesh/SkMeshGanesh.h>
#include <jni.h>
#include <log/log.h>

@@ -143,14 +144,26 @@ public:
        }

        if (mIsDirty || genId != mGenerationId) {
            auto vb = SkMesh::MakeVertexBuffer(
                    context, reinterpret_cast<const void*>(mVertexBufferData.data()),
            auto vertexData = reinterpret_cast<const void*>(mVertexBufferData.data());
#ifdef __ANDROID__
            auto vb = SkMeshes::MakeVertexBuffer(context,
                                                 vertexData,
                                                 mVertexBufferData.size());
#else
            auto vb = SkMeshes::MakeVertexBuffer(vertexData,
                                                 mVertexBufferData.size());
#endif
            auto meshMode = SkMesh::Mode(mMode);
            if (!mIndexBufferData.empty()) {
                auto ib = SkMesh::MakeIndexBuffer(
                        context, reinterpret_cast<const void*>(mIndexBufferData.data()),
                auto indexData = reinterpret_cast<const void*>(mIndexBufferData.data());
#ifdef __ANDROID__
                auto ib = SkMeshes::MakeIndexBuffer(context,
                                                    indexData,
                                                    mIndexBufferData.size());
#else
                auto ib = SkMeshes::MakeIndexBuffer(indexData,
                                                    mIndexBufferData.size());
#endif
                mMesh = SkMesh::MakeIndexed(mMeshSpec, meshMode, vb, mVertexCount, mVertexOffset,
                                            ib, mIndexCount, mIndexOffset, mBuilder->fUniforms,
                                            mBounds)
+8 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include "SkImageFilter.h"
#include "SkImageInfo.h"
#include "SkLatticeIter.h"
#include "SkMesh.h"
#include "SkPaint.h"
#include "SkPicture.h"
#include "SkRRect.h"
@@ -49,6 +50,7 @@
#include "effects/GainmapRenderer.h"
#include "include/gpu/GpuTypes.h"  // from Skia
#include "include/gpu/GrDirectContext.h"
#include "include/gpu/ganesh/SkMeshGanesh.h"
#include "pipeline/skia/AnimatedDrawables.h"
#include "pipeline/skia/FunctorDrawable.h"
#ifdef __ANDROID__
@@ -527,12 +529,13 @@ struct DrawSkMesh final : Op {
    mutable bool isGpuBased;
    mutable GrDirectContext::DirectContextID contextId;
    void draw(SkCanvas* c, const SkMatrix&) const {
#ifdef __ANDROID__
        GrDirectContext* directContext = c->recordingContext()->asDirectContext();

        GrDirectContext::DirectContextID id = directContext->directContextID();
        if (!isGpuBased || contextId != id) {
            sk_sp<SkMesh::VertexBuffer> vb =
                    SkMesh::CopyVertexBuffer(directContext, cpuMesh.refVertexBuffer());
                    SkMeshes::CopyVertexBuffer(directContext, cpuMesh.refVertexBuffer());
            if (!cpuMesh.indexBuffer()) {
                gpuMesh = SkMesh::Make(cpuMesh.refSpec(), cpuMesh.mode(), vb, cpuMesh.vertexCount(),
                                       cpuMesh.vertexOffset(), cpuMesh.refUniforms(),
@@ -540,7 +543,7 @@ struct DrawSkMesh final : Op {
                                  .mesh;
            } else {
                sk_sp<SkMesh::IndexBuffer> ib =
                        SkMesh::CopyIndexBuffer(directContext, cpuMesh.refIndexBuffer());
                        SkMeshes::CopyIndexBuffer(directContext, cpuMesh.refIndexBuffer());
                gpuMesh = SkMesh::MakeIndexed(cpuMesh.refSpec(), cpuMesh.mode(), vb,
                                              cpuMesh.vertexCount(), cpuMesh.vertexOffset(), ib,
                                              cpuMesh.indexCount(), cpuMesh.indexOffset(),
@@ -553,6 +556,9 @@ struct DrawSkMesh final : Op {
        }

        c->drawMesh(gpuMesh, blender, paint);
#else
        c->drawMesh(cpuMesh, blender, paint);
#endif
    }
};