xref: /aosp_15_r20/external/deqp/scripts/egl/str_util.py (revision 35238bce31c2a825756842865a792f8cf7f89930)
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
23import os
24import string
25
26from egl.common import *
27from khr_util.format import indentLines
28from khr_util.gen_str_util import addValuePrefix, genStrUtilProtos, genStrUtilImpls
29
30# Bitfield mapping
31BITFIELD_GROUPS = [
32    ("APIBits", [
33        "OPENGL_BIT",
34        "OPENGL_ES_BIT",
35        "OPENGL_ES2_BIT",
36        "OPENGL_ES3_BIT_KHR",
37        "OPENVG_BIT"
38        ]),
39    ("SurfaceBits", [
40        "PBUFFER_BIT",
41        "PIXMAP_BIT",
42        "WINDOW_BIT",
43        "MULTISAMPLE_RESOLVE_BOX_BIT",
44        "SWAP_BEHAVIOR_PRESERVED_BIT",
45        "VG_ALPHA_FORMAT_PRE_BIT",
46        "VG_COLORSPACE_LINEAR_BIT",
47        "LOCK_SURFACE_BIT_KHR",
48        "OPTIMAL_FORMAT_BIT_KHR"
49        ])
50]
51
52# Enum mapping
53ENUM_GROUPS = [
54    ("Boolean", ["TRUE", "FALSE"]),
55    ("BoolDontCare", ["TRUE", "FALSE", "DONT_CARE"]),
56    ("API", ["OPENGL_API", "OPENGL_ES_API", "OPENVG_API"]),
57    ("Error", [
58        "SUCCESS",
59        "NOT_INITIALIZED",
60        "BAD_ACCESS",
61        "BAD_ALLOC",
62        "BAD_ATTRIBUTE",
63        "BAD_CONFIG",
64        "BAD_CONTEXT",
65        "BAD_CURRENT_SURFACE",
66        "BAD_DISPLAY",
67        "BAD_MATCH",
68        "BAD_NATIVE_PIXMAP",
69        "BAD_NATIVE_WINDOW",
70        "BAD_PARAMETER",
71        "BAD_SURFACE",
72        "CONTEXT_LOST"
73        ]),
74    ("ContextAttrib", [
75        "CONFIG_ID",
76        "CONTEXT_CLIENT_TYPE",
77        "CONTEXT_CLIENT_VERSION",
78        "RENDER_BUFFER"
79        ]),
80    ("ConfigAttrib", [
81        "BUFFER_SIZE",
82        "RED_SIZE",
83        "GREEN_SIZE",
84        "BLUE_SIZE",
85        "LUMINANCE_SIZE",
86        "ALPHA_SIZE",
87        "ALPHA_MASK_SIZE",
88        "BIND_TO_TEXTURE_RGB",
89        "BIND_TO_TEXTURE_RGBA",
90        "COLOR_BUFFER_TYPE",
91        "CONFIG_CAVEAT",
92        "CONFIG_ID",
93        "CONFORMANT",
94        "DEPTH_SIZE",
95        "LEVEL",
96        "MATCH_NATIVE_PIXMAP",
97        "MAX_SWAP_INTERVAL",
98        "MIN_SWAP_INTERVAL",
99        "NATIVE_RENDERABLE",
100        "NATIVE_VISUAL_TYPE",
101        "RENDERABLE_TYPE",
102        "SAMPLE_BUFFERS",
103        "SAMPLES",
104        "STENCIL_SIZE",
105        "SURFACE_TYPE",
106        "TRANSPARENT_TYPE",
107        "TRANSPARENT_RED_VALUE",
108        "TRANSPARENT_GREEN_VALUE",
109        "TRANSPARENT_BLUE_VALUE",
110        "COLOR_COMPONENT_TYPE_EXT",
111        "RECORDABLE_ANDROID",
112        ]),
113    ("SurfaceAttrib", [
114        "CONFIG_ID",
115        "WIDTH",
116        "HEIGHT",
117        "HORIZONTAL_RESOLUTION",
118        "VERTICAL_RESOLUTION",
119        "LARGEST_PBUFFER",
120        "MIPMAP_TEXTURE",
121        "MIPMAP_LEVEL",
122        "MULTISAMPLE_RESOLVE",
123        "PIXEL_ASPECT_RATIO",
124        "RENDER_BUFFER",
125        "SWAP_BEHAVIOR",
126        "TEXTURE_FORMAT",
127        "TEXTURE_TARGET",
128        "ALPHA_FORMAT",
129        "COLORSPACE"
130        ]),
131    ("YuvOrder", [
132        "NONE",
133        "YUV_ORDER_YUV_EXT",
134        "YUV_ORDER_YVU_EXT",
135        "YUV_ORDER_YUYV_EXT",
136        "YUV_ORDER_UYVY_EXT",
137        "YUV_ORDER_YVYU_EXT",
138        "YUV_ORDER_VYUY_EXT",
139        "YUV_ORDER_AYUV_EXT",
140        ]),
141    ("YuvPlaneBpp", [
142        "YUV_PLANE_BPP_0_EXT",
143        "YUV_PLANE_BPP_8_EXT",
144        "YUV_PLANE_BPP_10_EXT",
145        ]),
146    ("ColorComponentType", ["COLOR_COMPONENT_TYPE_FIXED_EXT", "COLOR_COMPONENT_TYPE_FLOAT_EXT"]),
147    ("SurfaceTarget", ["READ", "DRAW"]),
148
149    # ConfigAttrib values
150    ("ColorBufferType", ["RGB_BUFFER", "LUMINANCE_BUFFER"]),
151    ("ConfigCaveat", ["NONE", "SLOW_CONFIG", "NON_CONFORMANT_CONFIG"]),
152    ("TransparentType", ["NONE", "TRANSPARENT_RGB"]),
153
154    # SurfaceAttrib values
155    ("MultisampleResolve", ["MULTISAMPLE_RESOLVE_DEFAULT", "MULTISAMPLE_RESOLVE_BOX"]),
156    ("RenderBuffer", ["SINGLE_BUFFER", "BACK_BUFFER"]),
157    ("SwapBehavior", ["BUFFER_DESTROYED", "BUFFER_PRESERVED"]),
158    ("TextureFormat", ["NO_TEXTURE", "TEXTURE_RGB", "TEXTURE_RGBA"]),
159    ("TextureTarget", ["NO_TEXTURE", "TEXTURE_2D"]),
160    ("AlphaFormat", ["ALPHA_FORMAT_NONPRE", "ALPHA_FORMAT_PRE"]),
161    ("Colorspace", ["COLORSPACE_sRGB", "COLORSPACE_LINEAR"])
162]
163
164def gen (iface):
165    enumGroups = addValuePrefix(ENUM_GROUPS, "EGL_")
166    bitfieldGroups = addValuePrefix(BITFIELD_GROUPS, "EGL_")
167    prototypeFile = os.path.join(EGL_DIR, "egluStrUtilPrototypes.inl")
168    implFile = os.path.join(EGL_DIR, "egluStrUtil.inl")
169
170    writeInlFile(prototypeFile, indentLines(genStrUtilProtos(iface, enumGroups, bitfieldGroups)))
171    writeInlFile(implFile, genStrUtilImpls(iface, enumGroups, bitfieldGroups))
172