[Mesa-dev] [PATCH mesa 3/3] egl: remove dead code in glvnd dispatch generation code
Eric Engestrom
eric.engestrom at intel.com
Wed Nov 7 13:20:22 UTC 2018
g_egldispatchstubs.[ch] are completely identical before and after this
patch.
Signed-off-by: Eric Engestrom <eric.engestrom at intel.com>
---
src/egl/generate/eglFunctionList.py | 203 +++++++++++----------------
src/egl/generate/gen_egl_dispatch.py | 61 ++------
2 files changed, 91 insertions(+), 173 deletions(-)
diff --git a/src/egl/generate/eglFunctionList.py b/src/egl/generate/eglFunctionList.py
index 667704eb2cb46fd06ff2..a480efca0d77a956dd78 100644
--- a/src/egl/generate/eglFunctionList.py
+++ b/src/egl/generate/eglFunctionList.py
@@ -5,36 +5,10 @@
This is used from gen_egl_dispatch.py.
-EGL_FUNCTIONS is a sequence of (name, eglData) pairs, where name is the name
-of the function, and eglData is a dictionary containing data about that
-function.
+EGL_FUNCTIONS is a sequence of (name, method) pairs, where name is the name
+of the function, and method is a string describing how to select a vendor
+library for that function:
-The values in the eglData dictionary are:
-- method (string):
- How to select a vendor library. See "Method values" below.
-
-- prefix (string):
- This string is prepended to the name of the dispatch function. If
- unspecified, the default is "" (an empty string).
-
-- static (boolean)
- If True, this function should be declared static.
-
-- "public" (boolean)
- If True, the function should be exported from the library. Vendor libraries
- generally should not use this.
-
-- extension (string):
- If specified, this is the name of a macro to check for before defining a
- function. Used for checking for extension macros and such.
-
-- retval (string):
- If specified, this is a C expression with the default value to return if we
- can't find a function to call. By default, it will try to guess from the
- return type: EGL_NO_whatever for the various handle types, NULL for
- pointers, and zero for everything else.
-
-method values:
- "custom"
The dispatch stub will be hand-written instead of generated.
@@ -53,158 +27,139 @@
Select the vendor that owns the current context.
"""
-def _eglFunc(name, method, static=None, public=False, inheader=None, prefix="dispatch_", extension=None, retval=None):
- """
- A convenience function to define an entry in the EGL function list.
- """
- if static is None:
- static = (not public and method != "custom")
- if inheader is None:
- inheader = (not static)
- values = {
- "method" : method,
- "prefix" : prefix,
- "extension" : extension,
- "retval" : retval,
- "static" : static,
- "public" : public,
- "inheader" : inheader,
- }
- return (name, values)
-
EGL_FUNCTIONS = (
# EGL_VERSION_1_0
- _eglFunc("eglChooseConfig", "none"),
- _eglFunc("eglCopyBuffers", "none"),
- _eglFunc("eglCreateContext", "none"),
- _eglFunc("eglCreatePbufferSurface", "none"),
- _eglFunc("eglCreatePixmapSurface", "none"),
- _eglFunc("eglCreateWindowSurface", "none"),
- _eglFunc("eglDestroyContext", "none"),
- _eglFunc("eglDestroySurface", "none"),
- _eglFunc("eglGetConfigAttrib", "none"),
- _eglFunc("eglGetConfigs", "none"),
- _eglFunc("eglQueryContext", "none"),
- _eglFunc("eglQuerySurface", "none"),
- _eglFunc("eglSwapBuffers", "none"),
- _eglFunc("eglWaitGL", "none"),
- _eglFunc("eglWaitNative", "none"),
- _eglFunc("eglTerminate", "none"),
- _eglFunc("eglInitialize", "none"),
+ ("eglChooseConfig", "none"),
+ ("eglCopyBuffers", "none"),
+ ("eglCreateContext", "none"),
+ ("eglCreatePbufferSurface", "none"),
+ ("eglCreatePixmapSurface", "none"),
+ ("eglCreateWindowSurface", "none"),
+ ("eglDestroyContext", "none"),
+ ("eglDestroySurface", "none"),
+ ("eglGetConfigAttrib", "none"),
+ ("eglGetConfigs", "none"),
+ ("eglQueryContext", "none"),
+ ("eglQuerySurface", "none"),
+ ("eglSwapBuffers", "none"),
+ ("eglWaitGL", "none"),
+ ("eglWaitNative", "none"),
+ ("eglTerminate", "none"),
+ ("eglInitialize", "none"),
- _eglFunc("eglGetCurrentDisplay", "none"),
- _eglFunc("eglGetCurrentSurface", "none"),
- _eglFunc("eglGetDisplay", "none"),
- _eglFunc("eglGetError", "none"),
- _eglFunc("eglGetProcAddress", "none"),
- _eglFunc("eglMakeCurrent", "none"),
- _eglFunc("eglQueryString", "none"),
+ ("eglGetCurrentDisplay", "none"),
+ ("eglGetCurrentSurface", "none"),
+ ("eglGetDisplay", "none"),
+ ("eglGetError", "none"),
+ ("eglGetProcAddress", "none"),
+ ("eglMakeCurrent", "none"),
+ ("eglQueryString", "none"),
# EGL_VERSION_1_1
- _eglFunc("eglBindTexImage", "none"),
- _eglFunc("eglReleaseTexImage", "none"),
- _eglFunc("eglSurfaceAttrib", "none"),
- _eglFunc("eglSwapInterval", "none"),
+ ("eglBindTexImage", "none"),
+ ("eglReleaseTexImage", "none"),
+ ("eglSurfaceAttrib", "none"),
+ ("eglSwapInterval", "none"),
# EGL_VERSION_1_2
- _eglFunc("eglCreatePbufferFromClientBuffer", "none"),
- _eglFunc("eglWaitClient", "none"),
- _eglFunc("eglBindAPI", "none"),
- _eglFunc("eglQueryAPI", "none"),
- _eglFunc("eglReleaseThread", "none"),
+ ("eglCreatePbufferFromClientBuffer", "none"),
+ ("eglWaitClient", "none"),
+ ("eglBindAPI", "none"),
+ ("eglQueryAPI", "none"),
+ ("eglReleaseThread", "none"),
# EGL_VERSION_1_4
- _eglFunc("eglGetCurrentContext", "none"),
+ ("eglGetCurrentContext", "none"),
# EGL_VERSION_1_5
- _eglFunc("eglCreateSync", "none"),
- _eglFunc("eglDestroySync", "none"),
- _eglFunc("eglClientWaitSync", "none"),
- _eglFunc("eglGetSyncAttrib", "none"),
- _eglFunc("eglCreateImage", "none"),
- _eglFunc("eglDestroyImage", "none"),
- _eglFunc("eglCreatePlatformWindowSurface", "none"),
- _eglFunc("eglCreatePlatformPixmapSurface", "none"),
- _eglFunc("eglWaitSync", "none"),
- _eglFunc("eglGetPlatformDisplay", "none"),
+ ("eglCreateSync", "none"),
+ ("eglDestroySync", "none"),
+ ("eglClientWaitSync", "none"),
+ ("eglGetSyncAttrib", "none"),
+ ("eglCreateImage", "none"),
+ ("eglDestroyImage", "none"),
+ ("eglCreatePlatformWindowSurface", "none"),
+ ("eglCreatePlatformPixmapSurface", "none"),
+ ("eglWaitSync", "none"),
+ ("eglGetPlatformDisplay", "none"),
# EGL_EXT_platform_base
- _eglFunc("eglCreatePlatformWindowSurfaceEXT", "display"),
- _eglFunc("eglCreatePlatformPixmapSurfaceEXT", "display"),
- _eglFunc("eglGetPlatformDisplayEXT", "none"),
+ ("eglCreatePlatformWindowSurfaceEXT", "display"),
+ ("eglCreatePlatformPixmapSurfaceEXT", "display"),
+ ("eglGetPlatformDisplayEXT", "none"),
# TODO: Most of these extensions should be provided by the vendor
# libraries, not by libEGL. They're here now to make testing everything
# else easier.
# EGL_EXT_swap_buffers_with_damage
- _eglFunc("eglSwapBuffersWithDamageEXT", "display"),
+ ("eglSwapBuffersWithDamageEXT", "display"),
# KHR_EXT_swap_buffers_with_damage
- _eglFunc("eglSwapBuffersWithDamageKHR", "display"),
+ ("eglSwapBuffersWithDamageKHR", "display"),
# EGL_KHR_cl_event2
- _eglFunc("eglCreateSync64KHR", "display"),
+ ("eglCreateSync64KHR", "display"),
# EGL_KHR_fence_sync
- _eglFunc("eglCreateSyncKHR", "display"),
- _eglFunc("eglDestroySyncKHR", "display"),
- _eglFunc("eglClientWaitSyncKHR", "display"),
- _eglFunc("eglGetSyncAttribKHR", "display"),
+ ("eglCreateSyncKHR", "display"),
+ ("eglDestroySyncKHR", "display"),
+ ("eglClientWaitSyncKHR", "display"),
+ ("eglGetSyncAttribKHR", "display"),
# EGL_KHR_image
- _eglFunc("eglCreateImageKHR", "display"),
- _eglFunc("eglDestroyImageKHR", "display"),
+ ("eglCreateImageKHR", "display"),
+ ("eglDestroyImageKHR", "display"),
# EGL_KHR_image_base
# eglCreateImageKHR already defined in EGL_KHR_image
# eglDestroyImageKHR already defined in EGL_KHR_image
# EGL_KHR_reusable_sync
- _eglFunc("eglSignalSyncKHR", "display"),
+ ("eglSignalSyncKHR", "display"),
# eglCreateSyncKHR already defined in EGL_KHR_fence_sync
# eglDestroySyncKHR already defined in EGL_KHR_fence_sync
# eglClientWaitSyncKHR already defined in EGL_KHR_fence_sync
# eglGetSyncAttribKHR already defined in EGL_KHR_fence_sync
# EGL_KHR_wait_sync
- _eglFunc("eglWaitSyncKHR", "display"),
+ ("eglWaitSyncKHR", "display"),
# EGL_MESA_drm_image
- _eglFunc("eglCreateDRMImageMESA", "display"),
- _eglFunc("eglExportDRMImageMESA", "display"),
+ ("eglCreateDRMImageMESA", "display"),
+ ("eglExportDRMImageMESA", "display"),
# EGL_MESA_image_dma_buf_export
- _eglFunc("eglExportDMABUFImageQueryMESA", "display"),
- _eglFunc("eglExportDMABUFImageMESA", "display"),
+ ("eglExportDMABUFImageQueryMESA", "display"),
+ ("eglExportDMABUFImageMESA", "display"),
# EGL_NOK_swap_region
- _eglFunc("eglSwapBuffersRegionNOK", "display"),
+ ("eglSwapBuffersRegionNOK", "display"),
# EGL_NV_post_sub_buffer
- _eglFunc("eglPostSubBufferNV", "display"),
+ ("eglPostSubBufferNV", "display"),
# EGL_WL_bind_wayland_display
- _eglFunc("eglCreateWaylandBufferFromImageWL", "display"),
- _eglFunc("eglUnbindWaylandDisplayWL", "display"),
- _eglFunc("eglQueryWaylandBufferWL", "display"),
- _eglFunc("eglBindWaylandDisplayWL", "display"),
+ ("eglCreateWaylandBufferFromImageWL", "display"),
+ ("eglUnbindWaylandDisplayWL", "display"),
+ ("eglQueryWaylandBufferWL", "display"),
+ ("eglBindWaylandDisplayWL", "display"),
# EGL_CHROMIUM_get_sync_values
- _eglFunc("eglGetSyncValuesCHROMIUM", "display"),
+ ("eglGetSyncValuesCHROMIUM", "display"),
# EGL_ANDROID_native_fence_sync
- _eglFunc("eglDupNativeFenceFDANDROID", "display"),
+ ("eglDupNativeFenceFDANDROID", "display"),
# EGL_EXT_image_dma_buf_import_modifiers
- _eglFunc("eglQueryDmaBufFormatsEXT", "display"),
- _eglFunc("eglQueryDmaBufModifiersEXT", "display"),
+ ("eglQueryDmaBufFormatsEXT", "display"),
+ ("eglQueryDmaBufModifiersEXT", "display"),
# EGL_EXT_device_base
- _eglFunc("eglQueryDeviceAttribEXT", "device"),
- _eglFunc("eglQueryDeviceStringEXT", "device"),
- _eglFunc("eglQueryDevicesEXT", "none"),
- _eglFunc("eglQueryDisplayAttribEXT", "display"),
+ ("eglQueryDeviceAttribEXT", "device"),
+ ("eglQueryDeviceStringEXT", "device"),
+ ("eglQueryDevicesEXT", "none"),
+ ("eglQueryDisplayAttribEXT", "display"),
)
diff --git a/src/egl/generate/gen_egl_dispatch.py b/src/egl/generate/gen_egl_dispatch.py
index 0c4d2956eff28911336c..d40774ddd853a4de4140 100644
--- a/src/egl/generate/gen_egl_dispatch.py
+++ b/src/egl/generate/gen_egl_dispatch.py
@@ -56,9 +56,9 @@ def main():
xmlFunctions = genCommon.getFunctions(args.xml_files)
xmlByName = dict((f.name, f) for f in xmlFunctions)
functions = []
- for (name, eglFunc) in eglFunctionList.EGL_FUNCTIONS:
+ for (name, method) in eglFunctionList.EGL_FUNCTIONS:
func = xmlByName[name]
- eglFunc = fixupEglFunc(func, eglFunc)
+ eglFunc = fixupEglFunc(func, method)
functions.append((func, eglFunc))
# Sort the function list by name.
@@ -70,24 +70,17 @@ def main():
text = generateSource(functions)
sys.stdout.write(text)
-def fixupEglFunc(func, eglFunc):
- result = dict(eglFunc)
- if result.get("prefix") is None:
- result["prefix"] = ""
+def fixupEglFunc(func, method):
+ result = {"method": method}
- if result.get("extension") is not None:
- text = "defined(" + result["extension"] + ")"
- result["extension"] = text
-
- if result["method"] in ("none", "custom"):
+ if result["method"] is "none":
return result
if result["method"] not in ("display", "device", "current"):
raise ValueError("Invalid dispatch method %r for function %r" % (result["method"], func.name))
if func.hasReturn():
- if result.get("retval") is None:
- result["retval"] = getDefaultReturnValue(func.rt)
+ result["retval"] = getDefaultReturnValue(func.rt)
return result
@@ -107,19 +100,11 @@ def generateHeader(functions):
""".lstrip("\n"))
text += "enum {\n"
- for (func, eglFunc) in functions:
- text += generateGuardBegin(func, eglFunc)
+ for (func, _) in functions:
text += " __EGL_DISPATCH_" + func.name + ",\n"
- text += generateGuardEnd(func, eglFunc)
text += " __EGL_DISPATCH_COUNT\n"
text += "};\n"
- for (func, eglFunc) in functions:
- if eglFunc["inheader"]:
- text += generateGuardBegin(func, eglFunc)
- text += "{f.rt} EGLAPIENTRY {ex[prefix]}{f.name}({f.decArgs});\n".format(f=func, ex=eglFunc)
- text += generateGuardEnd(func, eglFunc)
-
text += textwrap.dedent(r"""
#ifdef __cplusplus
}
@@ -137,58 +122,36 @@ def generateSource(functions):
for (func, eglFunc) in functions:
if eglFunc["method"] not in ("custom", "none"):
- text += generateGuardBegin(func, eglFunc)
text += generateDispatchFunc(func, eglFunc)
- text += generateGuardEnd(func, eglFunc)
text += "\n"
text += "const char * const __EGL_DISPATCH_FUNC_NAMES[__EGL_DISPATCH_COUNT + 1] = {\n"
- for (func, eglFunc) in functions:
- text += generateGuardBegin(func, eglFunc)
+ for (func, _) in functions:
text += ' "' + func.name + '",\n'
- text += generateGuardEnd(func, eglFunc)
text += " NULL\n"
text += "};\n"
text += "const __eglMustCastToProperFunctionPointerType __EGL_DISPATCH_FUNCS[__EGL_DISPATCH_COUNT + 1] = {\n"
for (func, eglFunc) in functions:
- text += generateGuardBegin(func, eglFunc)
if eglFunc["method"] != "none":
- text += " (__eglMustCastToProperFunctionPointerType) " + eglFunc.get("prefix", "") + func.name + ",\n"
+ text += " (__eglMustCastToProperFunctionPointerType) dispatch_" + func.name + ",\n"
else:
text += " NULL, // " + func.name + "\n"
- text += generateGuardEnd(func, eglFunc)
text += " NULL\n"
text += "};\n"
return text
-def generateGuardBegin(func, eglFunc):
- ext = eglFunc.get("extension")
- if ext is not None:
- return "#if " + ext + "\n"
- else:
- return ""
-
-def generateGuardEnd(func, eglFunc):
- if eglFunc.get("extension") is not None:
- return "#endif\n"
- else:
- return ""
-
def generateDispatchFunc(func, eglFunc):
text = ""
- if eglFunc.get("static"):
- text += "static "
- elif eglFunc.get("public"):
- text += "PUBLIC "
+ text += "static "
text += textwrap.dedent(
r"""
- {f.rt} EGLAPIENTRY {ef[prefix]}{f.name}({f.decArgs})
+ {f.rt} EGLAPIENTRY dispatch_{f.name}({f.decArgs})
{{
typedef {f.rt} EGLAPIENTRY (* _pfn_{f.name})({f.decArgs});
- """).lstrip("\n").format(f=func, ef=eglFunc)
+ """).lstrip("\n").format(f=func)
if func.hasReturn():
text += " {f.rt} _ret = {ef[retval]};\n".format(f=func, ef=eglFunc)
--
Cheers,
Eric
More information about the mesa-dev
mailing list