1# -*- coding: utf-8 -*-
2
3#-------------------------------------------------------------------------
4# drawElements Quality Program utilities
5# --------------------------------------
6#
7# Copyright 2015 The Android Open Source Project
8#
9# Licensed under the Apache License, Version 2.0 (the "License");
10# you may not use this file except in compliance with the License.
11# You may obtain a copy of the License at
12#
13#      http://www.apache.org/licenses/LICENSE-2.0
14#
15# Unless required by applicable law or agreed to in writing, software
16# distributed under the License is distributed on an "AS IS" BASIS,
17# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18# See the License for the specific language governing permissions and
19# limitations under the License.
20#
21#-------------------------------------------------------------------------
22
23from src_util import *
24
25# Functions that have special implementation
26OVERRIDE_FUNCS = set([
27	"glGetError",
28	"glGetIntegerv",
29	"glGetBooleanv",
30	"glGetFloatv",
31	"glGetString",
32	"glGetStringi",
33	"glCreateShader",
34	"glCreateProgram",
35	"glGetShaderiv",
36	"glGetProgramiv",
37	"glGenTextures",
38	"glGenQueries",
39	"glGenBuffers",
40	"glGenRenderbuffers",
41	"glGenFramebuffers",
42	"glGenVertexArrays",
43	"glGenSamplers",
44	"glGenTransformFeedbacks",
45	"glGenProgramPipelines",
46	"glGetInternalformativ",
47	"glMapBufferRange",
48	"glCheckFramebufferStatus",
49	"glReadPixels",
50	"glBindBuffer",
51	"glDeleteBuffers",
52	"glGetAttribLocation",
53])
54
55NULL_PLATFORM_DIR = os.path.normpath(os.path.join(SCRIPTS_DIR, "..", "..", "framework", "platform", "null"))
56
57def commandDummyImpl (command):
58	if command.name in OVERRIDE_FUNCS:
59		return None
60	template = """
61GLW_APICALL {returnType} GLW_APIENTRY {commandName} ({paramDecls})
62{{
63{body}{maybeReturn}
64}}"""
65	return template.format(
66		returnType	= command.type,
67		commandName	= command.name,
68		paramDecls	= commandParams(command),
69		body		= ''.join("\tDE_UNREF(%s);\n" % p.name for p in command.params),
70		maybeReturn = "\n\treturn (%s)0;" % command.type if command.type != 'void' else "")
71
72def commandInitStatement (command):
73	return "gl->%s\t= %s;" % (getFunctionMemberName(command.name), command.name)
74
75def genNullRenderContext (iface):
76	genCommandList(iface, commandInitStatement,
77				   directory	= NULL_PLATFORM_DIR,
78				   filename		= "tcuNullRenderContextInitFuncs.inl",
79				   align		= True)
80	genCommandList(iface, commandDummyImpl,
81				   directory	= NULL_PLATFORM_DIR,
82				   filename		= "tcuNullRenderContextFuncs.inl")
83
84if __name__ == "__main__":
85	genNullRenderContext(getHybridInterface())
86