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()
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()
# ####################################################################################################################### 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")
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()
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()