blob: 3912be59758ca87292a9d13f13a8cd8f8f6ff9b1 [file]
/*
* Copyright (C) 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-parameter"
#include <android/ipcrenderbuffer/RenderBufferDebugUtils.h>
#include <android/ipcrenderbuffer/RenderBufferOps.h>
namespace android {
std::string opToString(IPCRenderBufferOp* op) {
switch (op->type) {
case TYPE_SAVE: {
SaveOp* co = (SaveOp*)op;
return co->toString();
break;
}
case TYPE_RESTORE: {
RestoreOp* co = (RestoreOp*)op;
return co->toString();
break;
}
case TYPE_SAVELAYER: {
SaveLayerOp* co = (SaveLayerOp*)op;
return co->toString();
break;
}
case TYPE_SAVEBEHIND: {
SaveBehindOp* co = (SaveBehindOp*)op;
return co->toString();
break;
}
case TYPE_CONCAT: {
ConcatOp* co = (ConcatOp*)op;
return co->toString();
break;
}
case TYPE_SETMATRIX: {
SetMatrixOp* co = (SetMatrixOp*)op;
return co->toString();
break;
}
case TYPE_SCALE: {
ScaleOp* co = (ScaleOp*)op;
return co->toString();
break;
}
case TYPE_TRANSLATE: {
TranslateOp* co = (TranslateOp*)op;
return co->toString();
break;
}
case TYPE_CLIPPATH: {
ClipPathOp* co = (ClipPathOp*)op;
return co->toString();
break;
}
case TYPE_CLIPRECT: {
ClipRectOp* co = (ClipRectOp*)op;
return co->toString();
break;
}
case TYPE_CLIPRRECT: {
ClipRRectOp* co = (ClipRRectOp*)op;
return co->toString();
break;
}
case TYPE_CLIPREGION: {
ClipRegionOp* co = (ClipRegionOp*)op;
return co->toString();
break;
}
case TYPE_CLIPSHADER: {
ClipShaderOp* co = (ClipShaderOp*)op;
return co->toString();
break;
}
case TYPE_RESETCLIP: {
ResetClipOp* co = (ResetClipOp*)op;
return co->toString();
break;
}
case TYPE_DRAWPAINT: {
DrawPaintOp* co = (DrawPaintOp*)op;
return co->toString();
break;
}
case TYPE_DRAWBEHIND: {
DrawBehindOp* co = (DrawBehindOp*)op;
return co->toString();
break;
}
case TYPE_DRAWPATH: {
DrawPathOp* co = (DrawPathOp*)op;
return co->toString();
break;
}
case TYPE_DRAWRECT: {
DrawRectOp* co = (DrawRectOp*)op;
return co->toString();
break;
}
case TYPE_DRAWREGION: {
DrawRegionOp* co = (DrawRegionOp*)op;
return co->toString();
break;
}
case TYPE_DRAWOVAL: {
DrawOvalOp* co = (DrawOvalOp*)op;
return co->toString();
break;
}
case TYPE_DRAWARC: {
DrawArcOp* co = (DrawArcOp*)op;
return co->toString();
break;
}
case TYPE_DRAWRRECT: {
DrawRRectOp* co = (DrawRRectOp*)op;
return co->toString();
break;
}
case TYPE_DRAWANNOTATION: {
DrawAnnotationOp* co = (DrawAnnotationOp*)op;
return co->toString();
break;
}
case TYPE_DRAWDRAWABLE: {
DrawDrawableOp* co = (DrawDrawableOp*)op;
return co->toString();
break;
}
case TYPE_DRAWPICTURE: {
DrawPictureOp* co = (DrawPictureOp*)op;
return co->toString();
break;
}
case TYPE_DRAWIMAGE: {
DrawImageOp* co = (DrawImageOp*)op;
return co->toString();
break;
}
case TYPE_DRAWIMAGERECT: {
DrawImageRectOp* co = (DrawImageRectOp*)op;
return co->toString();
break;
}
case TYPE_DRAWTEXTBLOB: {
DrawTextBlobOp* co = (DrawTextBlobOp*)op;
return co->toString();
break;
}
case TYPE_DRAWPATCH: {
DrawPatchOp* co = (DrawPatchOp*)op;
return co->toString();
break;
}
case TYPE_DRAWPOINTS: {
DrawPointsOp* co = (DrawPointsOp*)op;
return co->toString();
break;
}
case TYPE_DRAWVERTICES: {
DrawVerticesOp* co = (DrawVerticesOp*)op;
return co->toString();
break;
}
case TYPE_DRAWSKMESH: {
DrawSkMeshOp* co = (DrawSkMeshOp*)op;
return co->toString();
break;
}
case TYPE_DRAWATLAS: {
DrawAtlasOp* co = (DrawAtlasOp*)op;
return co->toString();
break;
}
case TYPE_DRAWPROXYSURFACECONTROL: {
DrawProxySurfaceControlOp* co = (DrawProxySurfaceControlOp*)op;
return co->toString();
break;
}
case TYPE_BEGINRENDERTARGET: {
BeginRenderTargetOp* co = (BeginRenderTargetOp*)op;
return co->toString();
break;
}
case TYPE_ENDRENDERTARGET: {
BeginRenderTargetOp* co = (BeginRenderTargetOp*)op;
return co->toString();
break;
}
default: {
ALOGE("Unexpected op in RenderCommandBuffer");
break;
}
}
return "Unknown OP";
}
std::string opTypeToString(uint32_t type) {
switch (type) {
case TYPE_SAVE:
return "TYPE_SAVE";
case TYPE_RESTORE:
return "TYPE_RESTORE";
case TYPE_SAVELAYER:
return "TYPE_SAVELAYER";
case TYPE_SAVEBEHIND:
return "TYPE_SAVEBEHIND";
case TYPE_CONCAT:
return "TYPE_CONCAT";
case TYPE_SETMATRIX:
return "TYPE_SETMATRIX";
case TYPE_SCALE:
return "TYPE_SCALE";
case TYPE_TRANSLATE:
return "TYPE_TRANSLATE";
case TYPE_CLIPPATH:
return "TYPE_CLIPPATH";
case TYPE_CLIPRECT:
return "TYPE_CLIPRECT";
case TYPE_CLIPRRECT:
return "TYPE_CLIPRRECT";
case TYPE_CLIPREGION:
return "TYPE_CLIPREGION";
case TYPE_CLIPSHADER:
return "TYPE_CLIPSHADER";
case TYPE_RESETCLIP:
return "TYPE_RESETCLIP";
case TYPE_DRAWPAINT:
return "TYPE_DRAWPAINT";
case TYPE_DRAWBEHIND:
return "TYPE_DRAWBEHIND";
case TYPE_DRAWPATH:
return "TYPE_DRAWPATH";
case TYPE_DRAWRECT:
return "TYPE_DRAWRECT";
case TYPE_DRAWREGION:
return "TYPE_DRAWREGION";
case TYPE_DRAWOVAL:
return "TYPE_DRAWOVAL";
case TYPE_DRAWARC:
return "TYPE_DRAWARC";
case TYPE_DRAWRRECT:
return "TYPE_DRAWRRECT";
case TYPE_DRAWDRRECT:
return "TYPE_DRAWDRRECT";
case TYPE_DRAWANNOTATION:
return "TYPE_DRAWANNOTATION";
case TYPE_DRAWDRAWABLE:
return "TYPE_DRAWDRAWABLE";
case TYPE_DRAWPICTURE:
return "TYPE_DRAWPICTURE";
case TYPE_DRAWIMAGE:
return "TYPE_DRAWIMAGE";
case TYPE_DRAWIMAGERECT:
return "TYPE_DRAWIMAGERECT";
case TYPE_DRAWIMAGELATTICE:
return "TYPE_DRAWIMAGELATTICE";
case TYPE_DRAWTEXTBLOB:
return "TYPE_DRAWTEXTBLOB";
case TYPE_DRAWPATCH:
return "TYPE_DRAWPATCH";
case TYPE_DRAWPOINTS:
return "TYPE_DRAWPOINTS";
case TYPE_DRAWVERTICES:
return "TYPE_DRAWVERTICES";
case TYPE_DRAWATLAS:
return "TYPE_DRAWATLAS";
case TYPE_DRAWSHADOWREC:
return "TYPE_DRAWSHADOWREC";
case TYPE_DRAWVECTORDRAWABLE:
return "TYPE_DRAWVECTORDRAWABLE";
case TYPE_DRAWRIPPLEDRAWABLE:
return "TYPE_DRAWRIPPLEDRAWABLE";
case TYPE_DRAWWEBVIEW:
return "TYPE_DRAWWEBVIEW";
case TYPE_DRAWSKMESH:
return "TYPE_DRAWSKMESH";
case TYPE_DRAWMESH:
return "TYPE_DRAWMESH";
case TYPE_DRAWPROXYSURFACECONTROL:
return "TYPE_DRAWPROXYSURFACECONTROL";
case TYPE_BEGINRENDERTARGET:
return "TYPE_BEGINRENDERTARGET";
case TYPE_ENDRENDERTARGET:
return "TYPE_ENDRENDERTARGET";
default:
return "Unknown op type " + std::to_string(type);
}
}
std::string skmatrixToString(const SkM44& matrix) {
return std::to_string(matrix.rc(0, 0)) + std::string(" ") + std::to_string(matrix.rc(0, 1)) +
std::string(" ") + std::to_string(matrix.rc(0, 2)) + std::string(" ") +
std::to_string(matrix.rc(0, 3)) + std::string(" ") + std::to_string(matrix.rc(1, 0)) +
std::string(" ") + std::to_string(matrix.rc(1, 1)) + std::string(" ") +
std::to_string(matrix.rc(1, 2)) + std::string(" ") + std::to_string(matrix.rc(1, 3)) +
std::string(" ") + std::to_string(matrix.rc(2, 0)) + std::string(" ") +
std::to_string(matrix.rc(2, 1)) + std::string(" ") + std::to_string(matrix.rc(2, 2)) +
std::string(" ") + std::to_string(matrix.rc(2, 3)) + std::string(" ") +
std::to_string(matrix.rc(3, 0)) + std::string(" ") + std::to_string(matrix.rc(3, 1)) +
std::string(" ") + std::to_string(matrix.rc(3, 2)) + std::string(" ") +
std::to_string(matrix.rc(3, 3));
}
std::string rectToString(const SkRect& rect) {
return std::to_string(rect.fLeft) + std::string(std::string(" ")) + std::to_string(rect.fTop) +
std::string(std::string(" ")) + std::to_string(rect.fRight) +
std::string(std::string(" ")) + std::to_string(rect.fBottom);
}
} // namespace android