Exemplo n.º 1
0
def main(fileName, outputDir="./"):
    # The dict to maintain the mapping between library name and generated enum name.
    # It is better to keep in caller script.
    libraryDict = {
        "libdrm_amdgpu.so.1": "LibDrmAmdgpu",
        "libdrm.so.2": "LibDrm",
    }

    libraryDictAlts = None

    procMgr = proc.ProcMgr(fileName,
                           libraryDict,
                           needSpecializedInit=True,
                           libraryDictAlts=libraryDictAlts)

    intro = "Modify the procAnalysis.py and drmLoader.py in the tools/generate directory OR drmLoader.proc instead"

    # let procMgr generate the class named as Dri3Loader
    fp = open(os.path.join(outputDir, "g_drmLoader.h"), 'w')
    procMgr.GenerateHeader(fp)
    procMgr.GenerateIntro(fp, intro)
    # adding special include files or customized lines
    fp.write("#pragma once\n\n")
    fp.write("#include \"core/os/amdgpu/amdgpuHeaders.h\"\n")
    fp.write("#include \"palFile.h\"\n")
    fp.write("#include \"palLibrary.h\"\n\n")
    fp.write("namespace Pal\n")
    fp.write("{\n")
    fp.write("namespace Amdgpu\n")
    fp.write("{\n")
    procMgr.GenerateHeadFile(fp, "DrmLoader")
    fp.write("} // Amdgpu\n")
    fp.write("} // Pal\n")
    fp.close()

    fp = open(os.path.join(outputDir, "g_drmLoader.cpp"), 'w')
    procMgr.GenerateHeader(fp)
    procMgr.GenerateIntro(fp, intro)
    fp.write("#include \"core/os/amdgpu/amdgpuPlatform.h\"\n")
    fp.write("#include \"core/os/amdgpu/g_drmLoader.h\"\n")
    fp.write("#include \"palAssert.h\"\n")
    fp.write("#include \"palSysUtil.h\"\n\n")
    fp.write("#include <dlfcn.h>\n")
    fp.write("#include <time.h>\n")
    fp.write("#include <string.h>\n\n")
    fp.write("using namespace Util;\n\n")
    fp.write("namespace Pal\n")
    fp.write("{\n")
    fp.write("namespace Amdgpu\n")
    fp.write("{\n")
    procMgr.GenerateCppFile(fp, "DrmLoader")
    fp.write(
        "void DrmLoader::SpecializedInit(\n    Platform* pPlatform,\n    char*     pDtifLibName)\n"
    )
    fp.write("{\n")
    fp.write("}\n\n")
    fp.write("} // Linux\n")
    fp.write("} // Pal\n")
    fp.close()
Exemplo n.º 2
0
def main(fileName, outputDir="./"):
    # The dict to maintain the mapping between library name and generated enum name.
    # It is better to keep in caller script.
    libraryDict = {"libwayland-client.so.0": "LibWaylandClient"}

    procMgr = proc.ProcMgr(fileName, libraryDict, 0)
    intro = "Modify the procAnalysis.py and waylandLoader.py in the tools/generate directory OR waylandWindowSystem.proc instead"

    # let procMgr generate the class named as WaylandLoader
    fp = open(os.path.join(outputDir, "g_waylandLoader.h"), 'w')
    procMgr.GenerateHeader(fp)
    procMgr.GenerateIntro(fp, intro)
    # adding special include files or customized lines
    fp.write("#pragma once\n\n")
    fp.write(
        "#include \"core/os/amdgpu/wayland/mesa/wayland-drm-client-protocol.h\"\n\n"
    )
    fp.write("#ifdef None\n")
    fp.write("#undef None\n")
    fp.write("#endif\n")
    fp.write("#ifdef Success\n")
    fp.write("#undef Success\n")
    fp.write("#endif\n")
    fp.write("#ifdef Always\n")
    fp.write("#undef Always\n")
    fp.write("#endif\n\n")
    fp.write("#include \"palFile.h\"\n")
    fp.write("#include \"palLibrary.h\"\n\n")
    fp.write("using namespace Util;\n\n")
    fp.write("namespace Pal\n")
    fp.write("{\n")
    fp.write("namespace Amdgpu\n")
    fp.write("{\n")
    procMgr.GenerateHeadFile(fp, "WaylandLoader")
    fp.write("} // Amdgpu\n")
    fp.write("} // Pal\n")
    fp.close()

    fp = open(os.path.join(outputDir, "g_waylandLoader.cpp"), 'w')
    procMgr.GenerateHeader(fp)
    procMgr.GenerateIntro(fp, intro)
    fp.write("#include \"core/os/amdgpu/wayland/g_waylandLoader.h\"\n")
    fp.write("#include \"palAssert.h\"\n")
    fp.write("#include \"palSysUtil.h\"\n\n")
    fp.write("#include <string.h>\n\n")
    fp.write("using namespace Util;\n\n")
    fp.write("namespace Pal\n")
    fp.write("{\n")
    fp.write("namespace Amdgpu\n")
    fp.write("{\n")
    procMgr.GenerateCppFile(fp, "WaylandLoader")
    fp.write("} // Amdgpu\n")
    fp.write("} // Pal\n")
    fp.close()
Exemplo n.º 3
0
#
#######################################################################################################################

import procAnalysis as proc
import os, sys

if __name__ == '__main__':
    fileName = sys.argv[1]
    # The dict to maintain the mapping between library name and generated enum name.
    # It is better to keep in caller script.
    libraryDict = {
        "libdrm.so.2": "LibDrm",
        "libdrm_amdgpu.so.1": "LibDrmAmdgpu"
    }

    procMgr = proc.ProcMgr(fileName, libraryDict, 1)

    intro = "Modify the procsAnalysis.py and drmLoader.py in the tools/generate directory OR drmLoader.proc instead"

    # let procMgr generate the class named as Dri3Loader
    fp = open("g_drmLoader.h", 'w')
    procMgr.GenerateHeader(fp)
    procMgr.GenerateIntro(fp, intro)
    # adding special include files or customized lines
    fp.write("#pragma once\n\n")
    fp.write("#include \"core/os/amdgpu/amdgpuHeaders.h\"\n")
    fp.write("#include \"palFile.h\"\n")
    fp.write("#include \"palLibrary.h\"\n\n")
    fp.write("namespace Pal\n")
    fp.write("{\n")
    fp.write("namespace Amdgpu\n")
Exemplo n.º 4
0
def main(fileName, outputDir="./"):
    # The dict to maintain the mapping between library name and generated enum name.
    # It is better to keep in caller script.
    libraryDict = {
        "libxcb-sync.so.1": "LibXcbSync",
        "libxcb-present.so.0": "LibXcbPresent",
        "libxcb-dri3.so.0": "LibXcbDri3",
        "libxcb-dri2.so.0": "LibXcbDri2",
        "libxcb.so.1": "LibXcb",
        "libxshmfence.so.1": "LibXshmFence",
        "libX11-xcb.so": "LibX11Xcb",
        "libX11.so": "LibX11",
        "libxcb-randr.so.0": "LibXcbRandr"
    }

    procMgr = proc.ProcMgr(fileName, libraryDict, 0)
    intro = "Modify the procsAnalysis.py and dri3Loader.py in the tools/generate directory OR dri3WindowSystem.proc instead"

    # let procMgr generate the class named as Dri3Loader
    fp = open(os.path.join(outputDir, "g_dri3Loader.h"), 'w')
    procMgr.GenerateHeader(fp)
    procMgr.GenerateIntro(fp, intro)
    # adding special include files or customized lines
    fp.write("#pragma once\n\n")
    fp.write("#include <X11/Xlib.h>\n")
    fp.write("#include <X11/Xutil.h>\n")
    fp.write("#include <X11/extensions/dri2tokens.h>\n")
    fp.write("#ifdef None\n")
    fp.write("#undef None\n")
    fp.write("#endif\n")
    fp.write("#ifdef Success\n")
    fp.write("#undef Success\n")
    fp.write("#endif\n")
    fp.write("#ifdef Always\n")
    fp.write("#undef Always\n")
    fp.write("#endif\n")
    fp.write("#include <xcb/dri3.h>\n")
    fp.write("#include <xcb/dri2.h>\n")
    fp.write("#include <xcb/xcb.h>\n")
    fp.write("#include <xcb/present.h>\n")
    fp.write("#include <xcb/randr.h>\n")
    fp.write("extern \"C\"\n")
    fp.write("{\n")
    fp.write("    #include <X11/xshmfence.h>\n")
    fp.write("}\n\n")
    fp.write("#include \"palFile.h\"\n")
    fp.write("#include \"palLibrary.h\"\n\n")
    fp.write(
        "#define XCB_RANDR_SUPPORTS_LEASE ((XCB_RANDR_MAJOR_VERSION > 1) || \\\n                                  ((XCB_RANDR_MAJOR_VERSION == 1) && (XCB_RANDR_MINOR_VERSION >= 6)))\n\n"
    )
    fp.write("using namespace Util;\n")
    fp.write("namespace Pal\n")
    fp.write("{\n")
    fp.write("namespace Amdgpu\n")
    fp.write("{\n")
    procMgr.GenerateHeadFile(fp, "Dri3Loader")
    fp.write("} // Amdgpu\n")
    fp.write("} // Pal\n")
    fp.close()

    fp = open(os.path.join(outputDir, "g_dri3Loader.cpp"), 'w')
    procMgr.GenerateHeader(fp)
    procMgr.GenerateIntro(fp, intro)
    fp.write("#include \"core/os/amdgpu/dri3/g_dri3Loader.h\"\n")
    fp.write("#include \"palAssert.h\"\n")
    fp.write("#include \"palSysUtil.h\"\n\n")
    fp.write("#include <string.h>\n")
    fp.write("#include <xcb/xcb.h>\n\n")
    fp.write("using namespace Util;\n\n")
    fp.write("namespace Pal\n")
    fp.write("{\n")
    fp.write("namespace Amdgpu\n")
    fp.write("{\n")
    procMgr.GenerateCppFile(fp, "Dri3Loader")
    fp.write("} // Amdgpu\n")
    fp.write("} // Pal\n")
    fp.close()
Exemplo n.º 5
0
def main(fileName, outputDir="./"):
    # The dict to maintain the mapping between library name and generated enum name.
    # It is better to keep in caller script.
    libraryDict = {
        "libdrm.so.2": "LibDrm",
        "libdrm_amdgpu.so.1": "LibDrmAmdgpu"
    }

    procMgr = proc.ProcMgr(fileName, libraryDict, 1)

    intro = "Modify the procsAnalysis.py and drmLoader.py in the tools/generate directory OR drmLoader.proc instead"

    # let procMgr generate the class named as Dri3Loader
    fp = open(os.path.join(outputDir, "g_drmLoader.h"), 'w')
    procMgr.GenerateHeader(fp)
    procMgr.GenerateIntro(fp, intro)
    # adding special include files or customized lines
    fp.write("#pragma once\n\n")
    fp.write("#include \"core/os/amdgpu/amdgpuHeaders.h\"\n")
    fp.write("#include \"palFile.h\"\n")
    fp.write("#include \"palLibrary.h\"\n\n")
    fp.write("namespace Pal\n")
    fp.write("{\n")
    fp.write("namespace Amdgpu\n")
    fp.write("{\n")
    procMgr.GenerateHeadFile(fp, "DrmLoader")
    fp.write("} // Amdgpu\n")
    fp.write("} // Pal\n")
    fp.close()

    fp = open(os.path.join(outputDir, "g_drmLoader.cpp"), 'w')
    procMgr.GenerateHeader(fp)
    procMgr.GenerateIntro(fp, intro)
    fp.write("#include \"core/os/amdgpu/amdgpuPlatform.h\"\n")
    fp.write("#include \"core/os/amdgpu/g_drmLoader.h\"\n")
    fp.write("#include \"palAssert.h\"\n")
    fp.write("#include \"palSysUtil.h\"\n\n")
    fp.write("#include <dlfcn.h>\n")
    fp.write("#include <time.h>\n")
    fp.write("#include <string.h>\n\n")
    fp.write("using namespace Util;\n\n")
    fp.write("namespace Pal\n")
    fp.write("{\n")
    fp.write("namespace Amdgpu\n")
    fp.write("{\n")
    procMgr.GenerateCppFile(fp, "DrmLoader")
    fp.write(
        "void DrmLoader::SpecializedInit(\n    Platform* pPlatform,\n    char*     pDtifLibName)\n"
    )
    fp.write("{\n")
    fp.write("#if PAL_BUILD_DTIF\n")
    fp.write("    if (pPlatform->IsDtifEnabled())\n")
    fp.write("    {\n")
    fp.write(
        "        if (dlopen(\"libtcore2.so\", RTLD_LAZY | RTLD_GLOBAL) != nullptr)\n"
    )
    fp.write("        {\n")
    fp.write(
        "            if (m_library[LibDrmAmdgpu].Load(\"libdtif.so\") == Result::Success)\n"
    )
    fp.write("            {\n")
    fp.write(
        "                Dtif::DtifCreateFunc* pfnDtifCreate = nullptr;\n\n")
    fp.write(
        "                if (m_library[LibDrmAmdgpu].GetFunction(\"DtifCreate\", &pfnDtifCreate))\n"
    )
    fp.write("                {\n")
    fp.write("                    if (pfnDtifCreate(\"Vulkan\") != nullptr)\n")
    fp.write("                    {\n")
    fp.write("                        strcpy(pDtifLibName, \"libdtif.so\");\n")
    fp.write("                    }\n")
    fp.write("                }\n")
    fp.write("            }\n")
    fp.write("        }\n")
    fp.write("    }\n")
    fp.write("#endif // PAL_BUILD_DTIF\n")
    fp.write("}\n\n")
    fp.write("} // Linux\n")
    fp.write("} // Pal\n")
    fp.close()