replicant-frameworks_native/opengl/libs/GLES_trace/gltrace.proto
Siva Velusamy 50129e4ae2 gltrace: Send vertex attribute data after glDraw() call.
This patch enables tracing of vertex attribute data that
is specified using glVertexAttribPointer().

At the time the glVertexAttribPointer() call is made, we
only receive a pointer in client space, without any indication
of the size (# of attributes). This size is known only at
the time of the glDraw() call.

This patch generates a new message glVertexAttribPointerData()
when a draw call is issued that contains the vertex attribute
data.

A glDrawArrays() call directly gives the size of data to copy.
A glDrawElements() call gives the indices to copy. In such a
case, all data between the min & max indices drawn are copied
and sent to the host. To support glDrawElements() with an
element array buffer, this patch also adds state that maintains
a copy of all element array buffers.

Change-Id: I434da794a0aa9ada8e7474e219ffb1d79b183ecf
2012-03-01 17:41:53 -08:00

556 lines
18 KiB
Protocol Buffer

/*
* Copyright (C) 2011 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.
*/
package android.gltrace;
option optimize_for = LITE_RUNTIME;
option java_package = "com.android.ide.eclipse.gltrace";
option java_outer_classname = "GLProtoBuf";
message GLMessage {
enum Function {
glActiveTexture = 0;
glAlphaFunc = 1;
glAlphaFuncx = 2;
glAlphaFuncxOES = 3;
glAttachShader = 4;
glBeginPerfMonitorAMD = 5;
glBindAttribLocation = 6;
glBindBuffer = 7;
glBindFramebuffer = 8;
glBindFramebufferOES = 9;
glBindRenderbuffer = 10;
glBindRenderbufferOES = 11;
glBindTexture = 12;
glBindVertexArrayOES = 13;
glBlendColor = 14;
glBlendEquation = 15;
glBlendEquationOES = 16;
glBlendEquationSeparate = 17;
glBlendEquationSeparateOES = 18;
glBlendFunc = 19;
glBlendFuncSeparate = 20;
glBlendFuncSeparateOES = 21;
glBufferData = 22;
glBufferSubData = 23;
glCheckFramebufferStatus = 24;
glCheckFramebufferStatusOES = 25;
glClearColor = 26;
glClearColorx = 27;
glClearColorxOES = 28;
glClearDepthf = 29;
glClearDepthfOES = 30;
glClearDepthx = 31;
glClearDepthxOES = 32;
glClear = 33;
glClearStencil = 34;
glClientActiveTexture = 35;
glClipPlanef = 36;
glClipPlanefIMG = 37;
glClipPlanefOES = 38;
glClipPlanex = 39;
glClipPlanexIMG = 40;
glClipPlanexOES = 41;
glColor4f = 42;
glColor4ub = 43;
glColor4x = 44;
glColor4xOES = 45;
glColorMask = 46;
glColorPointer = 47;
glCompileShader = 48;
glCompressedTexImage2D = 49;
glCompressedTexImage3DOES = 50;
glCompressedTexSubImage2D = 51;
glCompressedTexSubImage3DOES = 52;
glCopyTexImage2D = 53;
glCopyTexSubImage2D = 54;
glCopyTexSubImage3DOES = 55;
glCoverageMaskNV = 56;
glCoverageOperationNV = 57;
glCreateProgram = 58;
glCreateShader = 59;
glCullFace = 60;
glCurrentPaletteMatrixOES = 61;
glDeleteBuffers = 62;
glDeleteFencesNV = 63;
glDeleteFramebuffers = 64;
glDeleteFramebuffersOES = 65;
glDeletePerfMonitorsAMD = 66;
glDeleteProgram = 67;
glDeleteRenderbuffers = 68;
glDeleteRenderbuffersOES = 69;
glDeleteShader = 70;
glDeleteTextures = 71;
glDeleteVertexArraysOES = 72;
glDepthFunc = 73;
glDepthMask = 74;
glDepthRangef = 75;
glDepthRangefOES = 76;
glDepthRangex = 77;
glDepthRangexOES = 78;
glDetachShader = 79;
glDisableClientState = 80;
glDisableDriverControlQCOM = 81;
glDisable = 82;
glDisableVertexAttribArray = 83;
glDiscardFramebufferEXT = 84;
glDrawArrays = 85;
glDrawElements = 86;
glDrawTexfOES = 87;
glDrawTexfvOES = 88;
glDrawTexiOES = 89;
glDrawTexivOES = 90;
glDrawTexsOES = 91;
glDrawTexsvOES = 92;
glDrawTexxOES = 93;
glDrawTexxvOES = 94;
glEGLImageTargetRenderbufferStorageOES = 95;
glEGLImageTargetTexture2DOES = 96;
glEnableClientState = 97;
glEnableDriverControlQCOM = 98;
glEnable = 99;
glEnableVertexAttribArray = 100;
glEndPerfMonitorAMD = 101;
glEndTilingQCOM = 102;
glExtGetBufferPointervQCOM = 103;
glExtGetBuffersQCOM = 104;
glExtGetFramebuffersQCOM = 105;
glExtGetProgramBinarySourceQCOM = 106;
glExtGetProgramsQCOM = 107;
glExtGetRenderbuffersQCOM = 108;
glExtGetShadersQCOM = 109;
glExtGetTexLevelParameterivQCOM = 110;
glExtGetTexSubImageQCOM = 111;
glExtGetTexturesQCOM = 112;
glExtIsProgramBinaryQCOM = 113;
glExtTexObjectStateOverrideiQCOM = 114;
glFinishFenceNV = 115;
glFinish = 116;
glFlush = 117;
glFogf = 118;
glFogfv = 119;
glFogx = 120;
glFogxOES = 121;
glFogxv = 122;
glFogxvOES = 123;
glFramebufferRenderbuffer = 124;
glFramebufferRenderbufferOES = 125;
glFramebufferTexture2D = 126;
glFramebufferTexture2DMultisampleIMG = 127;
glFramebufferTexture2DOES = 128;
glFramebufferTexture3DOES = 129;
glFrontFace = 130;
glFrustumf = 131;
glFrustumfOES = 132;
glFrustumx = 133;
glFrustumxOES = 134;
glGenBuffers = 135;
glGenerateMipmap = 136;
glGenerateMipmapOES = 137;
glGenFencesNV = 138;
glGenFramebuffers = 139;
glGenFramebuffersOES = 140;
glGenPerfMonitorsAMD = 141;
glGenRenderbuffers = 142;
glGenRenderbuffersOES = 143;
glGenTextures = 144;
glGenVertexArraysOES = 145;
glGetActiveAttrib = 146;
glGetActiveUniform = 147;
glGetAttachedShaders = 148;
glGetAttribLocation = 149;
glGetBooleanv = 150;
glGetBufferParameteriv = 151;
glGetBufferPointervOES = 152;
glGetClipPlanef = 153;
glGetClipPlanefOES = 154;
glGetClipPlanex = 155;
glGetClipPlanexOES = 156;
glGetDriverControlsQCOM = 157;
glGetDriverControlStringQCOM = 158;
glGetError = 159;
glGetFenceivNV = 160;
glGetFixedv = 161;
glGetFixedvOES = 162;
glGetFloatv = 163;
glGetFramebufferAttachmentParameteriv = 164;
glGetFramebufferAttachmentParameterivOES = 165;
glGetIntegerv = 166;
glGetLightfv = 167;
glGetLightxv = 168;
glGetLightxvOES = 169;
glGetMaterialfv = 170;
glGetMaterialxv = 171;
glGetMaterialxvOES = 172;
glGetPerfMonitorCounterDataAMD = 173;
glGetPerfMonitorCounterInfoAMD = 174;
glGetPerfMonitorCountersAMD = 175;
glGetPerfMonitorCounterStringAMD = 176;
glGetPerfMonitorGroupsAMD = 177;
glGetPerfMonitorGroupStringAMD = 178;
glGetPointerv = 179;
glGetProgramBinaryOES = 180;
glGetProgramInfoLog = 181;
glGetProgramiv = 182;
glGetRenderbufferParameteriv = 183;
glGetRenderbufferParameterivOES = 184;
glGetShaderInfoLog = 185;
glGetShaderiv = 186;
glGetShaderPrecisionFormat = 187;
glGetShaderSource = 188;
glGetString = 189;
glGetTexEnvfv = 190;
glGetTexEnviv = 191;
glGetTexEnvxv = 192;
glGetTexEnvxvOES = 193;
glGetTexGenfvOES = 194;
glGetTexGenivOES = 195;
glGetTexGenxvOES = 196;
glGetTexParameterfv = 197;
glGetTexParameteriv = 198;
glGetTexParameterxv = 199;
glGetTexParameterxvOES = 200;
glGetUniformfv = 201;
glGetUniformiv = 202;
glGetUniformLocation = 203;
glGetVertexAttribfv = 204;
glGetVertexAttribiv = 205;
glGetVertexAttribPointerv = 206;
glHint = 207;
glIsBuffer = 208;
glIsEnabled = 209;
glIsFenceNV = 210;
glIsFramebuffer = 211;
glIsFramebufferOES = 212;
glIsProgram = 213;
glIsRenderbuffer = 214;
glIsRenderbufferOES = 215;
glIsShader = 216;
glIsTexture = 217;
glIsVertexArrayOES = 218;
glLightf = 219;
glLightfv = 220;
glLightModelf = 221;
glLightModelfv = 222;
glLightModelx = 223;
glLightModelxOES = 224;
glLightModelxv = 225;
glLightModelxvOES = 226;
glLightx = 227;
glLightxOES = 228;
glLightxv = 229;
glLightxvOES = 230;
glLineWidth = 231;
glLineWidthx = 232;
glLineWidthxOES = 233;
glLinkProgram = 234;
glLoadIdentity = 235;
glLoadMatrixf = 236;
glLoadMatrixx = 237;
glLoadMatrixxOES = 238;
glLoadPaletteFromModelViewMatrixOES = 239;
glLogicOp = 240;
glMapBufferOES = 241;
glMaterialf = 242;
glMaterialfv = 243;
glMaterialx = 244;
glMaterialxOES = 245;
glMaterialxv = 246;
glMaterialxvOES = 247;
glMatrixIndexPointerOES = 248;
glMatrixMode = 249;
glMultiDrawArraysEXT = 250;
glMultiDrawElementsEXT = 251;
glMultiTexCoord4f = 252;
glMultiTexCoord4x = 253;
glMultiTexCoord4xOES = 254;
glMultMatrixf = 255;
glMultMatrixx = 256;
glMultMatrixxOES = 257;
glNormal3f = 258;
glNormal3x = 259;
glNormal3xOES = 260;
glNormalPointer = 261;
glOrthof = 262;
glOrthofOES = 263;
glOrthox = 264;
glOrthoxOES = 265;
glPixelStorei = 266;
glPointParameterf = 267;
glPointParameterfv = 268;
glPointParameterx = 269;
glPointParameterxOES = 270;
glPointParameterxv = 271;
glPointParameterxvOES = 272;
glPointSize = 273;
glPointSizePointerOES = 274;
glPointSizex = 275;
glPointSizexOES = 276;
glPolygonOffset = 277;
glPolygonOffsetx = 278;
glPolygonOffsetxOES = 279;
glPopMatrix = 280;
glProgramBinaryOES = 281;
glPushMatrix = 282;
glQueryMatrixxOES = 283;
glReadPixels = 284;
glReleaseShaderCompiler = 285;
glRenderbufferStorage = 286;
glRenderbufferStorageMultisampleIMG = 287;
glRenderbufferStorageOES = 288;
glRotatef = 289;
glRotatex = 290;
glRotatexOES = 291;
glSampleCoverage = 292;
glSampleCoveragex = 293;
glSampleCoveragexOES = 294;
glScalef = 295;
glScalex = 296;
glScalexOES = 297;
glScissor = 298;
glSelectPerfMonitorCountersAMD = 299;
glSetFenceNV = 300;
glShadeModel = 301;
glShaderBinary = 302;
glShaderSource = 303;
glStartTilingQCOM = 304;
glStencilFunc = 305;
glStencilFuncSeparate = 306;
glStencilMask = 307;
glStencilMaskSeparate = 308;
glStencilOp = 309;
glStencilOpSeparate = 310;
glTestFenceNV = 311;
glTexCoordPointer = 312;
glTexEnvf = 313;
glTexEnvfv = 314;
glTexEnvi = 315;
glTexEnviv = 316;
glTexEnvx = 317;
glTexEnvxOES = 318;
glTexEnvxv = 319;
glTexEnvxvOES = 320;
glTexGenfOES = 321;
glTexGenfvOES = 322;
glTexGeniOES = 323;
glTexGenivOES = 324;
glTexGenxOES = 325;
glTexGenxvOES = 326;
glTexImage2D = 327;
glTexImage3DOES = 328;
glTexParameterf = 329;
glTexParameterfv = 330;
glTexParameteri = 331;
glTexParameteriv = 332;
glTexParameterx = 333;
glTexParameterxOES = 334;
glTexParameterxv = 335;
glTexParameterxvOES = 336;
glTexSubImage2D = 337;
glTexSubImage3DOES = 338;
glTranslatef = 339;
glTranslatex = 340;
glTranslatexOES = 341;
glUniform1f = 342;
glUniform1fv = 343;
glUniform1i = 344;
glUniform1iv = 345;
glUniform2f = 346;
glUniform2fv = 347;
glUniform2i = 348;
glUniform2iv = 349;
glUniform3f = 350;
glUniform3fv = 351;
glUniform3i = 352;
glUniform3iv = 353;
glUniform4f = 354;
glUniform4fv = 355;
glUniform4i = 356;
glUniform4iv = 357;
glUniformMatrix2fv = 358;
glUniformMatrix3fv = 359;
glUniformMatrix4fv = 360;
glUnmapBufferOES = 361;
glUseProgram = 362;
glValidateProgram = 363;
glVertexAttrib1f = 364;
glVertexAttrib1fv = 365;
glVertexAttrib2f = 366;
glVertexAttrib2fv = 367;
glVertexAttrib3f = 368;
glVertexAttrib3fv = 369;
glVertexAttrib4f = 370;
glVertexAttrib4fv = 371;
glVertexAttribPointer = 372;
glVertexPointer = 373;
glViewport = 374;
glWeightPointerOES = 375;
glActiveShaderProgramEXT = 502;
glAlphaFuncQCOM = 503;
glBeginQueryEXT = 504;
glBindProgramPipelineEXT = 505;
glBlitFramebufferANGLE = 506;
glCreateShaderProgramvEXT = 507;
glDeleteProgramPipelinesEXT = 508;
glDeleteQueriesEXT = 509;
glDrawBuffersNV = 510;
glEndQueryEXT = 511;
glFramebufferTexture2DMultisampleEXT = 512;
glGenProgramPipelinesEXT = 513;
glGenQueriesEXT = 514;
glGetGraphicsResetStatusEXT = 515;
glGetObjectLabelEXT = 516;
glGetProgramPipelineInfoLogEXT = 517;
glGetProgramPipelineivEXT = 518;
glGetQueryObjectuivEXT = 519;
glGetQueryivEXT = 520;
glGetnUniformfvEXT = 521;
glGetnUniformivEXT = 521;
glInsertEventMarkerEXT = 522;
glIsProgramPipelineEXT = 523;
glIsQueryEXT = 524;
glLabelObjectEXT = 525;
glPopGroupMarkerEXT = 526;
glProgramParameteriEXT = 527;
glProgramUniform1fEXT = 528;
glProgramUniform1fvEXT = 529;
glProgramUniform1iEXT = 530;
glProgramUniform1ivEXT = 531;
glProgramUniform2fEXT = 532;
glProgramUniform2fvEXT = 533;
glProgramUniform2iEXT = 534;
glProgramUniform2ivEXT = 535;
glProgramUniform3fEXT = 536;
glProgramUniform3fvEXT = 537;
glProgramUniform3iEXT = 538;
glProgramUniform3ivEXT = 539;
glProgramUniform4fEXT = 540;
glProgramUniform4fvEXT = 541;
glProgramUniform4iEXT = 542;
glProgramUniform4ivEXT = 543;
glProgramUniformMatrix2fvEXT = 544;
glProgramUniformMatrix3fvEXT = 545;
glProgramUniformMatrix4fvEXT = 546;
glPushGroupMarkerEXT = 547;
glReadBufferNV = 548;
glReadnPixelsEXT = 549;
glRenderbufferStorageMultisampleANGLE = 550;
glRenderbufferStorageMultisampleAPPLE = 551;
glRenderbufferStorageMultisampleEXT = 552;
glResolveMultisampleFramebufferAPPLE = 553;
glTexStorage1DEXT = 554;
glTexStorage2DEXT = 555;
glTexStorage3DEXT = 556;
glTextureStorage1DEXT = 557;
glTextureStorage2DEXT = 558;
glTextureStorage3DEXT = 559;
glUseProgramStagesEXT = 560;
glValidateProgramPipelineEXT = 561;
eglGetDisplay = 2000;
eglInitialize = 2001;
eglTerminate = 2002;
eglGetConfigs = 2003;
eglChooseConfig = 2004;
eglGetConfigAttrib = 2005;
eglCreateWindowSurface = 2006;
eglCreatePixmapSurface = 2007;
eglCreatePbufferSurface = 2008;
eglDestroySurface = 2009;
eglQuerySurface = 2010;
eglCreateContext = 2011;
eglDestroyContext = 2012;
eglMakeCurrent = 2013;
eglGetCurrentContext = 2014;
eglGetCurrentSurface = 2015;
eglGetCurrentDisplay = 2016;
eglQueryContext = 2017;
eglWaitGL = 2018;
eglWaitNative = 2019;
eglSwapBuffers = 2020;
eglCopyBuffers = 2021;
eglGetError = 2022;
eglQueryString = 2023;
eglGetProcAddress = 2024;
eglSurfaceAttrib = 2025;
eglBindTexImage = 2026;
eglReleaseTexImage = 2027;
eglSwapInterval = 2028;
eglBindAPI = 2029;
eglQueryAPI = 2030;
eglWaitClient = 2031;
eglReleaseThread = 2032;
eglCreatePbufferFromClientBuffer = 2033;
eglLockSurfaceKHR = 2034;
eglUnlockSurfaceKHR = 2035;
eglCreateImageKHR = 2036;
eglDestroyImageKHR = 2037;
eglCreateSyncKHR = 2038;
eglDestroySyncKHR = 2039;
eglClientWaitSyncKHR = 2040;
eglGetSyncAttribKHR = 2041;
eglSetSwapRectangleANDROID = 2042;
eglGetRenderBufferANDROID = 2043;
eglGetSystemTimeFrequencyNV = 2044;
eglGetSystemTimeNV = 2045;
invalid = 3000;
glVertexAttribPointerData = 3001;
}
// A GL call's return data and arguments are formatted into this DataType
message DataType {
enum Type {
VOID = 1; // GLvoid
CHAR = 2; // GLchar
BYTE = 3; // GLbyte, GLubyte
INT = 4; // GLbitfield, GLshort, GLint, GLsizei, GLushort, GLuint, GLfixed
FLOAT = 5; // GLfloat, GLclampf
BOOL = 6; // GLboolean
ENUM = 7; // GLenum
};
required Type type = 1 [default = VOID];
required bool isArray = 2 [default = false];
repeated int32 intValue = 3;
repeated float floatValue = 4;
repeated bytes charValue = 5;
repeated bytes rawBytes = 6;
repeated bool boolValue = 7;
}
message FrameBuffer {
required int32 width = 1;
required int32 height = 2;
repeated bytes contents = 3;
}
required int32 context_id = 1; // GL context ID
required int64 start_time = 2; // time when call was invoked
required int32 duration = 3; // duration of the call (MONOTONIC TIME)
required Function function = 4 [default = invalid]; // GL function called
repeated DataType args = 5; // GL function's arguments
optional DataType returnValue = 6; // GL function's return value
optional FrameBuffer fb = 7; // contents of the framebuffer
optional int32 threadtime = 8; // duration of the call (THREAD TIME)
};