summaryrefslogtreecommitdiffstats
path: root/opengl/libs/GLES2_dbg/generate_debugger_message_proto.py
blob: 466c447cff2b04641b1938509954d90dfb860d06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/usr/bin/python
# -*- coding: utf-8 -*-

#
# Copyright 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.
#

import os

def generate_egl_entries(output, lines, i):
    for line in lines:
        if line.find("EGL_ENTRY(") >= 0:
            line = line.split(",")[1].strip() #extract EGL function name
            output.write("        %s = %d;\n" % (line, i))
            i += 1
    return i    


def generate_gl_entries(output,lines,i):
    for line in lines:
        if line.find("API_ENTRY(") >= 0:
            line = line[line.find("(") + 1: line.find(")")] #extract GL function name
            output.write("        %s = %d;\n" % (line, i))
            i += 1
    return i


if __name__ == "__main__":
    output = open("debugger_message.proto",'w')
    output.write("""\
/*
 * 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.
 */

// do not edit; auto generated by generate_debugger_message_proto.py

package com.android.glesv2debugger;

option optimize_for = LITE_RUNTIME;

message Message
{
    required int32 context_id = 1; // GL context id
    enum Function
    {
""")

    i = 0;
    
    lines = open("gl2_api_annotated.in").readlines()
    i = generate_gl_entries(output, lines, i)
    output.write("        // end of GL functions\n")
    
    #lines = open("gl2ext_api.in").readlines()
    #i = generate_gl_entries(output, lines, i)
    #output.write("        // end of GL EXT functions\n")
    
    lines = open("../EGL/egl_entries.in").readlines()
    i = generate_egl_entries(output, lines, i)
    output.write("        // end of GL EXT functions\n")
    
    output.write("        ACK = %d;\n" % (i))
    i += 1
    
    output.write("        NEG = %d;\n" % (i))
    i += 1
    
    output.write("        CONTINUE = %d;\n" % (i))
    i += 1
    
    output.write("        SKIP = %d;\n" % (i))
    i += 1
    
    output.write("        SETPROP = %d;\n" % (i))
    i += 1
    
    output.write("""    }
    required Function function = 2 [default = NEG]; // type/function of message
    enum Type
    {
        BeforeCall = 0;
        AfterCall = 1;
        Response = 2; // currently used for misc messages
    }
    required Type type = 3;
    required bool expect_response = 4;
    optional int32 ret = 5; // return value from previous GL call
    optional int32 arg0 = 6; // args to GL call
    optional int32 arg1 = 7;
    optional int32 arg2 = 8;
    optional int32 arg3 = 9;
    optional int32 arg4 = 16;
    optional int32 arg5 = 17;
    optional int32 arg6 = 18;
    optional int32 arg7 = 19;
    optional int32 arg8 = 20;

    optional bytes data = 10; // variable length data used for GL call
    enum DataType
    {
        ReferencedImage = 0; // for image sourced from ReadPixels
        NonreferencedImage = 1; // for image sourced from ReadPixels
    };
    optional DataType data_type = 23; // most data types can be inferred from function
    optional int32 pixel_format = 24; // used for image data if format and type 
    optional int32 pixel_type = 25;   //     cannot be determined from arg 
    
    optional float time = 11; // duration of previous GL call (ms)
    enum Prop
    {
        Capture = 0; // arg0 = true | false
        TimeMode = 1; // arg0 = SYSTEM_TIME_* in utils/Timers.h
        ExpectResponse = 2; // arg0 = enum Function, arg1 = true/false
    };
    optional Prop prop = 21; // used with SETPROP, value in arg0
    optional float clock = 22; // wall clock in seconds
}
""")

    output.close()
    
    os.system("aprotoc --cpp_out=src --java_out=../../../../../development/tools/glesv2debugger/src debugger_message.proto")
    os.system('mv -f "src/debugger_message.pb.cc" "src/debugger_message.pb.cpp"')