diff options
author | 2023-07-20 17:11:30 +0000 | |
---|---|---|
committer | 2023-07-24 12:03:59 +0000 | |
commit | 9cc7f77e5f0be90b905e3b7fef9d6f4300643ec2 (patch) | |
tree | 7542310ba952525e25d1809409b41baec442eaec | |
parent | c34e1016c38e316be1f555d818c558b47437dfd2 (diff) |
Use moved SkMesh APIs
These were moved in http://review.skia.org/724398
#ifdefs added to handle CPU only builds appropriately.
Change-Id: I23b27f78f35ea6a855eb707066c54e28484101e9
-rw-r--r-- | libs/hwui/Mesh.h | 25 | ||||
-rw-r--r-- | libs/hwui/RecordingCanvas.cpp | 10 |
2 files changed, 27 insertions, 8 deletions
diff --git a/libs/hwui/Mesh.h b/libs/hwui/Mesh.h index 13e3c8e7bf77..764d1efcc8f4 100644 --- a/libs/hwui/Mesh.h +++ b/libs/hwui/Mesh.h @@ -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()), - mVertexBufferData.size()); + 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()), - mIndexBufferData.size()); + 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) diff --git a/libs/hwui/RecordingCanvas.cpp b/libs/hwui/RecordingCanvas.cpp index 3cd0e75c17c2..71f47e92e055 100644 --- a/libs/hwui/RecordingCanvas.cpp +++ b/libs/hwui/RecordingCanvas.cpp @@ -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 } }; |