[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