示例#1
0
        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));
        }
示例#2
0
        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);
        }