]> git.cworth.org Git - apitrace/blob - common/trace_parser_flags.cpp
Merge branch 'glproc-cleanup'
[apitrace] / common / trace_parser_flags.cpp
1 /**************************************************************************
2  *
3  * Copyright 2011 Jose Fonseca
4  * All Rights Reserved.
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22  * THE SOFTWARE.
23  *
24  **************************************************************************/
25
26
27 /**
28  * Label functions based on their name.
29  */
30
31
32 #include "trace_lookup.hpp"
33 #include "trace_parser.hpp"
34
35
36 using namespace trace;
37
38
39 /**
40  * Shortcut for SwapBuffers, which terminate and swap bound render buffer.
41  */
42 #define CALL_FLAG_SWAPBUFFERS (CALL_FLAG_END_FRAME | CALL_FLAG_SWAP_RENDERTARGET)
43
44
45
46 /** 
47  * Default call flags.
48  */
49 const CallFlags
50 defaultCallFlags = 0;
51
52
53 /**
54  * Call flags lookup table.
55  */
56 const Entry<CallFlags>
57 callFlagTable[] = {
58     { "CGLFlushDrawable",               CALL_FLAG_END_FRAME },
59     { "eglGetProcAddress",              CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
60     { "eglQueryString",                 CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
61     { "eglSwapBuffers",                 CALL_FLAG_SWAPBUFFERS },
62     { "glFrameTerminatorGREMEDY",       CALL_FLAG_END_FRAME },
63     { "glGetError",                     CALL_FLAG_NO_SIDE_EFFECTS }, // verbose will be set later for GL_NO_ERROR 
64     { "glGetString",                    CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
65     { "glGetStringi",                   CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
66     { "glIsAsyncMarkerSGIX",            CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
67     { "glIsBuffer",                     CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
68     { "glIsBufferARB",                  CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
69     { "glIsBufferResidentNV",           CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
70     { "glIsEnabled",                    CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
71     { "glIsEnabledIndexedEXT",          CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
72     { "glIsEnabledi",                   CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
73     { "glIsFenceAPPLE",                 CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
74     { "glIsFenceNV",                    CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
75     { "glIsFramebuffer",                CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
76     { "glIsFramebufferEXT",             CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
77     { "glIsList",                       CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
78     { "glIsNameAMD",                    CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
79     { "glIsNamedBufferResidentNV",      CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
80     { "glIsNamedStringARB",             CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
81     { "glIsObjectBufferATI",            CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
82     { "glIsOcclusionQueryNV",           CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
83     { "glIsProgram",                    CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
84     { "glIsProgramARB",                 CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
85     { "glIsProgramNV",                  CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
86     { "glIsProgramPipeline",            CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
87     { "glIsQuery",                      CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
88     { "glIsQueryARB",                   CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
89     { "glIsRenderbuffer",               CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
90     { "glIsRenderbufferEXT",            CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
91     { "glIsSampler",                    CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
92     { "glIsShader",                     CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
93     { "glIsSync",                       CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
94     { "glIsTexture",                    CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
95     { "glIsTextureEXT",                 CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
96     { "glIsTransformFeedback",          CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
97     { "glIsTransformFeedbackNV",        CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
98     { "glIsVariantEnabledEXT",          CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
99     { "glIsVertexArray",                CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
100     { "glIsVertexArrayAPPLE",           CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
101     { "glIsVertexAttribEnabledAPPLE",   CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
102     { "glXGetClientString",             CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
103     { "glXGetCurrentContext",           CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
104     { "glXGetCurrentDisplay",           CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
105     { "glXGetCurrentDrawable",          CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
106     { "glXGetProcAddress",              CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
107     { "glXGetProcAddressARB",           CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
108     { "glXIsDirect",                    CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
109     { "glXQueryExtension",              CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
110     { "glXQueryExtensionsString",       CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
111     { "glXQueryVersion",                CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
112     { "glXSwapBuffers",                 CALL_FLAG_SWAPBUFFERS },
113     { "wglGetDefaultProcAddress",       CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
114     { "wglGetProcAddress",              CALL_FLAG_NO_SIDE_EFFECTS | CALL_FLAG_VERBOSE },
115     { "wglSwapBuffers",                 CALL_FLAG_SWAPBUFFERS },
116     { "wglSwapLayerBuffers",            CALL_FLAG_SWAPBUFFERS },
117     { "wglSwapMultipleBuffers",         CALL_FLAG_SWAPBUFFERS },
118     // NOTE: New entries must be sorted alphabetically
119 };
120
121
122 /**
123  * Lookup call flags by name.
124  */
125 CallFlags
126 Parser::lookupCallFlags(const char *name) {
127     return entryLookup(name, callFlagTable, defaultCallFlags);
128 }