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

Commit 729031d7 authored by Brian Salomon's avatar Brian Salomon Committed by Android (Google) Code Review
Browse files

Merge "Remove code to work with old SkMesh::Make[Indexed] API."

parents 026201b8 47916aa1
Loading
Loading
Loading
Loading
+17 −23
Original line number Diff line number Diff line
@@ -37,16 +37,6 @@ sk_sp<SkMesh::IndexBuffer> genIndexBuffer(JNIEnv* env, jobject buffer, int size,
    return indexBuffer;
}

// TODO(b/260252882): undefine SK_LEGACY_MESH_MAKE and remove this.
template <typename T>
SkMesh get_mesh_from_result(T&& result) {
#ifdef SK_LEGACY_MESH_MAKE
    return result;
#else
    return result.mesh;
#endif
}

static jlong make(JNIEnv* env, jobject, jlong meshSpec, jint mode, jobject vertexBuffer,
                  jboolean isDirect, jint vertexCount, jint vertexOffset, jint left, jint top,
                  jint right, jint bottom) {
@@ -54,8 +44,9 @@ static jlong make(JNIEnv* env, jobject, jlong meshSpec, jint mode, jobject verte
    sk_sp<SkMesh::VertexBuffer> skVertexBuffer =
            genVertexBuffer(env, vertexBuffer, vertexCount * skMeshSpec->stride(), isDirect);
    auto skRect = SkRect::MakeLTRB(left, top, right, bottom);
    auto mesh = get_mesh_from_result(SkMesh::Make(skMeshSpec, SkMesh::Mode(mode), skVertexBuffer,
                                                  vertexCount, vertexOffset, nullptr, skRect));
    auto mesh = SkMesh::Make(skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, vertexCount,
                             vertexOffset, nullptr, skRect)
                        .mesh;
    auto meshPtr = std::make_unique<MeshWrapper>(MeshWrapper{mesh, MeshUniformBuilder(skMeshSpec)});
    return reinterpret_cast<jlong>(meshPtr.release());
}
@@ -70,9 +61,10 @@ static jlong makeIndexed(JNIEnv* env, jobject, jlong meshSpec, jint mode, jobjec
    sk_sp<SkMesh::IndexBuffer> skIndexBuffer =
            genIndexBuffer(env, indexBuffer, indexCount * gIndexByteSize, isIndexDirect);
    auto skRect = SkRect::MakeLTRB(left, top, right, bottom);
    auto mesh = get_mesh_from_result(SkMesh::MakeIndexed(
            skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, vertexCount, vertexOffset,
            skIndexBuffer, indexCount, indexOffset, nullptr, skRect));
    auto mesh = SkMesh::MakeIndexed(skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, vertexCount,
                                    vertexOffset, skIndexBuffer, indexCount, indexOffset, nullptr,
                                    skRect)
                        .mesh;
    auto meshPtr = std::make_unique<MeshWrapper>(MeshWrapper{mesh, MeshUniformBuilder(skMeshSpec)});
    return reinterpret_cast<jlong>(meshPtr.release());
}
@@ -81,15 +73,17 @@ static void updateMesh(JNIEnv* env, jobject, jlong meshWrapper, jboolean indexed
    auto wrapper = reinterpret_cast<MeshWrapper*>(meshWrapper);
    auto mesh = wrapper->mesh;
    if (indexed) {
        wrapper->mesh = get_mesh_from_result(SkMesh::MakeIndexed(
                sk_ref_sp(mesh.spec()), mesh.mode(), sk_ref_sp(mesh.vertexBuffer()),
                mesh.vertexCount(), mesh.vertexOffset(), sk_ref_sp(mesh.indexBuffer()),
                mesh.indexCount(), mesh.indexOffset(), wrapper->builder.fUniforms, mesh.bounds()));
        wrapper->mesh = SkMesh::MakeIndexed(sk_ref_sp(mesh.spec()), mesh.mode(),
                                            sk_ref_sp(mesh.vertexBuffer()), mesh.vertexCount(),
                                            mesh.vertexOffset(), sk_ref_sp(mesh.indexBuffer()),
                                            mesh.indexCount(), mesh.indexOffset(),
                                            wrapper->builder.fUniforms, mesh.bounds())
                                .mesh;
    } else {
        wrapper->mesh = get_mesh_from_result(
                SkMesh::Make(sk_ref_sp(mesh.spec()), mesh.mode(), sk_ref_sp(mesh.vertexBuffer()),
                             mesh.vertexCount(), mesh.vertexOffset(), wrapper->builder.fUniforms,
                             mesh.bounds()));
        wrapper->mesh = SkMesh::Make(sk_ref_sp(mesh.spec()), mesh.mode(),
                                     sk_ref_sp(mesh.vertexBuffer()), mesh.vertexCount(),
                                     mesh.vertexOffset(), wrapper->builder.fUniforms, mesh.bounds())
                                .mesh;
    }
}