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

Commit 9cc7f77e authored by Kevin Lubick's avatar Kevin Lubick
Browse files

Use moved SkMesh APIs

These were moved in http://review.skia.org/724398

#ifdefs added to handle CPU only builds appropriately.

Change-Id: I23b27f78f35ea6a855eb707066c54e28484101e9
parent c34e1016
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
    }
};