public static unsafe FrameBuffer CreateFrameBuffer() { var targetProcId = SysCalls.GetProcessIDForCommand(SysCallTarget.GetFramebufferInfo); var fbInfoMem = SysCalls.RequestMessageBuffer(4096, targetProcId); SysCalls.GetFramebufferInfo(fbInfoMem); var fbPresent = (int *)fbInfoMem.Start; if (*fbPresent == 0) { return(null); } var fbInfo = *(BootInfoFramebufferInfo *)(fbInfoMem.Start + 4); fbInfo.FbAddr = SysCalls.GetPhysicalMemory(fbInfo.FbAddr, fbInfo.RequiredMemory); return(new FrameBuffer(ref fbInfo)); }
public static unsafe FrameBuffer Create() { var targetProcId = SysCalls.GetProcessIDForCommand(SysCallTarget.GetFramebufferInfo); var fbInfoMem = SysCalls.RequestMessageBuffer(4096, targetProcId); SysCalls.GetFramebufferInfo(fbInfoMem); var fbPresent = (int *)fbInfoMem.Start; if (*fbPresent == 0) { return(null); } var fbInfo = (BootInfoFramebufferInfo *)(fbInfoMem.Start + 4); var fb = new FrameBuffer(fbInfo->FbAddr, (int)fbInfo->FbWidth, (int)fbInfo->FbHeight, (int)fbInfo->FbPitch, (int)fbInfo->FbBpp); fb.RequestMemory(); return(fb); }