Loading libs/hwui/jni/Mesh.cpp +17 −23 Original line number Original line Diff line number Diff line Loading @@ -37,16 +37,6 @@ sk_sp<SkMesh::IndexBuffer> genIndexBuffer(JNIEnv* env, jobject buffer, int size, return indexBuffer; 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, static jlong make(JNIEnv* env, jobject, jlong meshSpec, jint mode, jobject vertexBuffer, jboolean isDirect, jint vertexCount, jint vertexOffset, jint left, jint top, jboolean isDirect, jint vertexCount, jint vertexOffset, jint left, jint top, jint right, jint bottom) { jint right, jint bottom) { Loading @@ -54,8 +44,9 @@ static jlong make(JNIEnv* env, jobject, jlong meshSpec, jint mode, jobject verte sk_sp<SkMesh::VertexBuffer> skVertexBuffer = sk_sp<SkMesh::VertexBuffer> skVertexBuffer = genVertexBuffer(env, vertexBuffer, vertexCount * skMeshSpec->stride(), isDirect); genVertexBuffer(env, vertexBuffer, vertexCount * skMeshSpec->stride(), isDirect); auto skRect = SkRect::MakeLTRB(left, top, right, bottom); auto skRect = SkRect::MakeLTRB(left, top, right, bottom); auto mesh = get_mesh_from_result(SkMesh::Make(skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, auto mesh = SkMesh::Make(skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, vertexCount, vertexCount, vertexOffset, nullptr, skRect)); vertexOffset, nullptr, skRect) .mesh; auto meshPtr = std::make_unique<MeshWrapper>(MeshWrapper{mesh, MeshUniformBuilder(skMeshSpec)}); auto meshPtr = std::make_unique<MeshWrapper>(MeshWrapper{mesh, MeshUniformBuilder(skMeshSpec)}); return reinterpret_cast<jlong>(meshPtr.release()); return reinterpret_cast<jlong>(meshPtr.release()); } } Loading @@ -70,9 +61,10 @@ static jlong makeIndexed(JNIEnv* env, jobject, jlong meshSpec, jint mode, jobjec sk_sp<SkMesh::IndexBuffer> skIndexBuffer = sk_sp<SkMesh::IndexBuffer> skIndexBuffer = genIndexBuffer(env, indexBuffer, indexCount * gIndexByteSize, isIndexDirect); genIndexBuffer(env, indexBuffer, indexCount * gIndexByteSize, isIndexDirect); auto skRect = SkRect::MakeLTRB(left, top, right, bottom); auto skRect = SkRect::MakeLTRB(left, top, right, bottom); auto mesh = get_mesh_from_result(SkMesh::MakeIndexed( auto mesh = SkMesh::MakeIndexed(skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, vertexCount, skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, vertexCount, vertexOffset, vertexOffset, skIndexBuffer, indexCount, indexOffset, nullptr, skIndexBuffer, indexCount, indexOffset, nullptr, skRect)); skRect) .mesh; auto meshPtr = std::make_unique<MeshWrapper>(MeshWrapper{mesh, MeshUniformBuilder(skMeshSpec)}); auto meshPtr = std::make_unique<MeshWrapper>(MeshWrapper{mesh, MeshUniformBuilder(skMeshSpec)}); return reinterpret_cast<jlong>(meshPtr.release()); return reinterpret_cast<jlong>(meshPtr.release()); } } Loading @@ -81,15 +73,17 @@ static void updateMesh(JNIEnv* env, jobject, jlong meshWrapper, jboolean indexed auto wrapper = reinterpret_cast<MeshWrapper*>(meshWrapper); auto wrapper = reinterpret_cast<MeshWrapper*>(meshWrapper); auto mesh = wrapper->mesh; auto mesh = wrapper->mesh; if (indexed) { if (indexed) { wrapper->mesh = get_mesh_from_result(SkMesh::MakeIndexed( wrapper->mesh = SkMesh::MakeIndexed(sk_ref_sp(mesh.spec()), mesh.mode(), sk_ref_sp(mesh.spec()), mesh.mode(), sk_ref_sp(mesh.vertexBuffer()), sk_ref_sp(mesh.vertexBuffer()), mesh.vertexCount(), mesh.vertexCount(), mesh.vertexOffset(), sk_ref_sp(mesh.indexBuffer()), mesh.vertexOffset(), sk_ref_sp(mesh.indexBuffer()), mesh.indexCount(), mesh.indexOffset(), wrapper->builder.fUniforms, mesh.bounds())); mesh.indexCount(), mesh.indexOffset(), wrapper->builder.fUniforms, mesh.bounds()) .mesh; } else { } else { wrapper->mesh = get_mesh_from_result( wrapper->mesh = SkMesh::Make(sk_ref_sp(mesh.spec()), mesh.mode(), SkMesh::Make(sk_ref_sp(mesh.spec()), mesh.mode(), sk_ref_sp(mesh.vertexBuffer()), sk_ref_sp(mesh.vertexBuffer()), mesh.vertexCount(), mesh.vertexCount(), mesh.vertexOffset(), wrapper->builder.fUniforms, mesh.vertexOffset(), wrapper->builder.fUniforms, mesh.bounds()) mesh.bounds())); .mesh; } } } } Loading Loading
libs/hwui/jni/Mesh.cpp +17 −23 Original line number Original line Diff line number Diff line Loading @@ -37,16 +37,6 @@ sk_sp<SkMesh::IndexBuffer> genIndexBuffer(JNIEnv* env, jobject buffer, int size, return indexBuffer; 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, static jlong make(JNIEnv* env, jobject, jlong meshSpec, jint mode, jobject vertexBuffer, jboolean isDirect, jint vertexCount, jint vertexOffset, jint left, jint top, jboolean isDirect, jint vertexCount, jint vertexOffset, jint left, jint top, jint right, jint bottom) { jint right, jint bottom) { Loading @@ -54,8 +44,9 @@ static jlong make(JNIEnv* env, jobject, jlong meshSpec, jint mode, jobject verte sk_sp<SkMesh::VertexBuffer> skVertexBuffer = sk_sp<SkMesh::VertexBuffer> skVertexBuffer = genVertexBuffer(env, vertexBuffer, vertexCount * skMeshSpec->stride(), isDirect); genVertexBuffer(env, vertexBuffer, vertexCount * skMeshSpec->stride(), isDirect); auto skRect = SkRect::MakeLTRB(left, top, right, bottom); auto skRect = SkRect::MakeLTRB(left, top, right, bottom); auto mesh = get_mesh_from_result(SkMesh::Make(skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, auto mesh = SkMesh::Make(skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, vertexCount, vertexCount, vertexOffset, nullptr, skRect)); vertexOffset, nullptr, skRect) .mesh; auto meshPtr = std::make_unique<MeshWrapper>(MeshWrapper{mesh, MeshUniformBuilder(skMeshSpec)}); auto meshPtr = std::make_unique<MeshWrapper>(MeshWrapper{mesh, MeshUniformBuilder(skMeshSpec)}); return reinterpret_cast<jlong>(meshPtr.release()); return reinterpret_cast<jlong>(meshPtr.release()); } } Loading @@ -70,9 +61,10 @@ static jlong makeIndexed(JNIEnv* env, jobject, jlong meshSpec, jint mode, jobjec sk_sp<SkMesh::IndexBuffer> skIndexBuffer = sk_sp<SkMesh::IndexBuffer> skIndexBuffer = genIndexBuffer(env, indexBuffer, indexCount * gIndexByteSize, isIndexDirect); genIndexBuffer(env, indexBuffer, indexCount * gIndexByteSize, isIndexDirect); auto skRect = SkRect::MakeLTRB(left, top, right, bottom); auto skRect = SkRect::MakeLTRB(left, top, right, bottom); auto mesh = get_mesh_from_result(SkMesh::MakeIndexed( auto mesh = SkMesh::MakeIndexed(skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, vertexCount, skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, vertexCount, vertexOffset, vertexOffset, skIndexBuffer, indexCount, indexOffset, nullptr, skIndexBuffer, indexCount, indexOffset, nullptr, skRect)); skRect) .mesh; auto meshPtr = std::make_unique<MeshWrapper>(MeshWrapper{mesh, MeshUniformBuilder(skMeshSpec)}); auto meshPtr = std::make_unique<MeshWrapper>(MeshWrapper{mesh, MeshUniformBuilder(skMeshSpec)}); return reinterpret_cast<jlong>(meshPtr.release()); return reinterpret_cast<jlong>(meshPtr.release()); } } Loading @@ -81,15 +73,17 @@ static void updateMesh(JNIEnv* env, jobject, jlong meshWrapper, jboolean indexed auto wrapper = reinterpret_cast<MeshWrapper*>(meshWrapper); auto wrapper = reinterpret_cast<MeshWrapper*>(meshWrapper); auto mesh = wrapper->mesh; auto mesh = wrapper->mesh; if (indexed) { if (indexed) { wrapper->mesh = get_mesh_from_result(SkMesh::MakeIndexed( wrapper->mesh = SkMesh::MakeIndexed(sk_ref_sp(mesh.spec()), mesh.mode(), sk_ref_sp(mesh.spec()), mesh.mode(), sk_ref_sp(mesh.vertexBuffer()), sk_ref_sp(mesh.vertexBuffer()), mesh.vertexCount(), mesh.vertexCount(), mesh.vertexOffset(), sk_ref_sp(mesh.indexBuffer()), mesh.vertexOffset(), sk_ref_sp(mesh.indexBuffer()), mesh.indexCount(), mesh.indexOffset(), wrapper->builder.fUniforms, mesh.bounds())); mesh.indexCount(), mesh.indexOffset(), wrapper->builder.fUniforms, mesh.bounds()) .mesh; } else { } else { wrapper->mesh = get_mesh_from_result( wrapper->mesh = SkMesh::Make(sk_ref_sp(mesh.spec()), mesh.mode(), SkMesh::Make(sk_ref_sp(mesh.spec()), mesh.mode(), sk_ref_sp(mesh.vertexBuffer()), sk_ref_sp(mesh.vertexBuffer()), mesh.vertexCount(), mesh.vertexCount(), mesh.vertexOffset(), wrapper->builder.fUniforms, mesh.vertexOffset(), wrapper->builder.fUniforms, mesh.bounds()) mesh.bounds())); .mesh; } } } } Loading