102 lines
3.4 KiB
Python
102 lines
3.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
#-------------------------------------------------------------------------
|
|
# drawElements Quality Program utilities
|
|
# --------------------------------------
|
|
#
|
|
# Copyright 2015 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.
|
|
#
|
|
#-------------------------------------------------------------------------
|
|
|
|
from egl.common import *
|
|
from khr_util.format import indentLines, commandParams, commandArgs
|
|
import khr_util.registry
|
|
from itertools import chain
|
|
|
|
try:
|
|
from itertools import imap
|
|
except ImportError:
|
|
imap=map
|
|
|
|
def virtualMemberDecl (command):
|
|
return "virtual %s\t%s\t(%s) const\t= 0;" % (
|
|
command.type,
|
|
getFunctionMemberName(command.name),
|
|
commandParams(command))
|
|
|
|
def concreteMemberDecl (command):
|
|
return "%s\t%s\t(%s) const;" % (
|
|
command.type,
|
|
getFunctionMemberName(command.name),
|
|
commandParams(command))
|
|
|
|
def memberImpl (command):
|
|
template = """
|
|
{returnType} FuncPtrLibrary::{memberName} ({paramDecls}) const
|
|
{{
|
|
{maybeReturn}m_egl.{memberName}({arguments});
|
|
}}"""
|
|
return template.format(
|
|
returnType = command.type,
|
|
mangledName = getFunctionMemberName(command.name),
|
|
paramDecls = commandParams(command),
|
|
maybeReturn = "return " if command.type != 'void' else "",
|
|
memberName = getFunctionMemberName(command.name),
|
|
arguments = commandArgs(command))
|
|
|
|
def initFunctionEntry (command):
|
|
return "dst->%s\t= (%sFunc)\tloader->get(\"%s\");" % (
|
|
getFunctionMemberName(command.name),
|
|
command.name,
|
|
command.name)
|
|
|
|
def getExtOnlyIface (registry, api, extensions):
|
|
spec = khr_util.registry.InterfaceSpec()
|
|
|
|
for extension in registry.extensions:
|
|
if not khr_util.registry.getExtensionName(extension) in extensions:
|
|
continue
|
|
|
|
if not khr_util.registry.extensionSupports(extension, api):
|
|
continue
|
|
|
|
spec.addExtension(extension, api)
|
|
|
|
return khr_util.registry.createInterface(registry, spec, api)
|
|
|
|
def commandLibraryEntry (command):
|
|
return "\t{ \"%s\",\t(deFunctionPtr)%s }," % (command.name, command.name)
|
|
|
|
def genStaticLibrary (registry):
|
|
genCommandLists(registry, commandLibraryEntry,
|
|
check = lambda api, version: api == 'egl' and version in set(["1.4", "1.5"]),
|
|
directory = EGL_WRAPPER_DIR,
|
|
filePattern = "eglwStaticLibrary%s.inl",
|
|
align = True)
|
|
|
|
def gen (registry):
|
|
defaultIface = getDefaultInterface()
|
|
noExtIface = getInterface(registry, 'egl', VERSION)
|
|
extOnlyIface = getExtOnlyIface(registry, 'egl', EXTENSIONS)
|
|
|
|
genCommandList(defaultIface, virtualMemberDecl, EGL_WRAPPER_DIR, "eglwLibrary.inl", True)
|
|
genCommandList(defaultIface, concreteMemberDecl, EGL_WRAPPER_DIR, "eglwFuncPtrLibraryDecl.inl", True)
|
|
genCommandList(defaultIface, memberImpl, EGL_WRAPPER_DIR, "eglwFuncPtrLibraryImpl.inl")
|
|
|
|
genCommandList(noExtIface, initFunctionEntry, EGL_WRAPPER_DIR, "eglwInitCore.inl", True)
|
|
genCommandList(extOnlyIface, initFunctionEntry, EGL_WRAPPER_DIR, "eglwInitExtensions.inl", True)
|
|
|
|
genStaticLibrary(registry)
|