# -*- 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.
#
#-------------------------------------------------------------------------
import os
import string
from common import *
from khr_util.format import indentLines
from khr_util.gen_str_util import addValuePrefix, genStrUtilProtos, genStrUtilImpls
# Bitfield mapping
BITFIELD_GROUPS = [
("APIBits", [
"OPENGL_BIT",
"OPENGL_ES_BIT",
"OPENGL_ES2_BIT",
"OPENGL_ES3_BIT_KHR",
"OPENVG_BIT"
]),
("SurfaceBits", [
"PBUFFER_BIT",
"PIXMAP_BIT",
"WINDOW_BIT",
"MULTISAMPLE_RESOLVE_BOX_BIT",
"SWAP_BEHAVIOR_PRESERVED_BIT",
"VG_ALPHA_FORMAT_PRE_BIT",
"VG_COLORSPACE_LINEAR_BIT",
"LOCK_SURFACE_BIT_KHR",
"OPTIMAL_FORMAT_BIT_KHR"
])
]
# Enum mapping
ENUM_GROUPS = [
("Boolean", ["TRUE", "FALSE"]),
("BoolDontCare", ["TRUE", "FALSE", "DONT_CARE"]),
("API", ["OPENGL_API", "OPENGL_ES_API", "OPENVG_API"]),
("Error", [
"SUCCESS",
"NOT_INITIALIZED",
"BAD_ACCESS",
"BAD_ALLOC",
"BAD_ATTRIBUTE",
"BAD_CONFIG",
"BAD_CONTEXT",
"BAD_CURRENT_SURFACE",
"BAD_DISPLAY",
"BAD_MATCH",
"BAD_NATIVE_PIXMAP",
"BAD_NATIVE_WINDOW",
"BAD_PARAMETER",
"BAD_SURFACE",
"CONTEXT_LOST"
]),
("ContextAttrib", [
"CONFIG_ID",
"CONTEXT_CLIENT_TYPE",
"CONTEXT_CLIENT_VERSION",
"RENDER_BUFFER"
]),
("ConfigAttrib", [
"BUFFER_SIZE",
"RED_SIZE",
"GREEN_SIZE",
"BLUE_SIZE",
"LUMINANCE_SIZE",
"ALPHA_SIZE",
"ALPHA_MASK_SIZE",
"BIND_TO_TEXTURE_RGB",
"BIND_TO_TEXTURE_RGBA",
"COLOR_BUFFER_TYPE",
"CONFIG_CAVEAT",
"CONFIG_ID",
"CONFORMANT",
"DEPTH_SIZE",
"LEVEL",
"MATCH_NATIVE_PIXMAP",
"MAX_SWAP_INTERVAL",
"MIN_SWAP_INTERVAL",
"NATIVE_RENDERABLE",
"NATIVE_VISUAL_TYPE",
"RENDERABLE_TYPE",
"SAMPLE_BUFFERS",
"SAMPLES",
"STENCIL_SIZE",
"SURFACE_TYPE",
"TRANSPARENT_TYPE",
"TRANSPARENT_RED_VALUE",
"TRANSPARENT_GREEN_VALUE",
"TRANSPARENT_BLUE_VALUE",
"COLOR_COMPONENT_TYPE_EXT"
]),
("SurfaceAttrib", [
"CONFIG_ID",
"WIDTH",
"HEIGHT",
"HORIZONTAL_RESOLUTION",
"VERTICAL_RESOLUTION",
"LARGEST_PBUFFER",
"MIPMAP_TEXTURE",
"MIPMAP_LEVEL",
"MULTISAMPLE_RESOLVE",
"PIXEL_ASPECT_RATIO",
"RENDER_BUFFER",
"SWAP_BEHAVIOR",
"TEXTURE_FORMAT",
"TEXTURE_TARGET",
"ALPHA_FORMAT",
"COLORSPACE"
]),
("YuvOrder", [
"NONE",
"YUV_ORDER_YUV_EXT",
"YUV_ORDER_YVU_EXT",
"YUV_ORDER_YUYV_EXT",
"YUV_ORDER_UYVY_EXT",
"YUV_ORDER_YVYU_EXT",
"YUV_ORDER_VYUY_EXT",
"YUV_ORDER_AYUV_EXT",
]),
("YuvPlaneBpp", [
"YUV_PLANE_BPP_0_EXT",
"YUV_PLANE_BPP_8_EXT",
"YUV_PLANE_BPP_10_EXT",
]),
("ColorComponentType", ["COLOR_COMPONENT_TYPE_FIXED_EXT", "COLOR_COMPONENT_TYPE_FLOAT_EXT"]),
("SurfaceTarget", ["READ", "DRAW"]),
# ConfigAttrib values
("ColorBufferType", ["RGB_BUFFER", "LUMINANCE_BUFFER"]),
("ConfigCaveat", ["NONE", "SLOW_CONFIG", "NON_CONFORMANT_CONFIG"]),
("TransparentType", ["NONE", "TRANSPARENT_RGB"]),
# SurfaceAttrib values
("MultisampleResolve", ["MULTISAMPLE_RESOLVE_DEFAULT", "MULTISAMPLE_RESOLVE_BOX"]),
("RenderBuffer", ["SINGLE_BUFFER", "BACK_BUFFER"]),
("SwapBehavior", ["BUFFER_DESTROYED", "BUFFER_PRESERVED"]),
("TextureFormat", ["NO_TEXTURE", "TEXTURE_RGB", "TEXTURE_RGBA"]),
("TextureTarget", ["NO_TEXTURE", "TEXTURE_2D"]),
("AlphaFormat", ["ALPHA_FORMAT_NONPRE", "ALPHA_FORMAT_PRE"]),
("Colorspace", ["COLORSPACE_sRGB", "COLORSPACE_LINEAR"])
]
def gen (iface):
enumGroups = addValuePrefix(ENUM_GROUPS, "EGL_")
bitfieldGroups = addValuePrefix(BITFIELD_GROUPS, "EGL_")
prototypeFile = os.path.join(EGL_DIR, "egluStrUtilPrototypes.inl")
implFile = os.path.join(EGL_DIR, "egluStrUtil.inl")
writeInlFile(prototypeFile, indentLines(genStrUtilProtos(iface, enumGroups, bitfieldGroups)))
writeInlFile(implFile, genStrUtilImpls(iface, enumGroups, bitfieldGroups))