CSPspEmu.Core.Gpu.GpuDisplayList.Process C# (CSharp) Method

Process() private method

Executes this Display List.
private Process ( ) : void
return void
        internal void Process()
        {
            Status.SetValue(DisplayListStatusEnum.Drawing);

            if (Debug) Console.WriteLine("Process() : {0} : 0x{1:X8} : 0x{2:X8} : 0x{3:X8}", this.Id, this.InstructionAddressCurrent, this.InstructionAddressStart, this.InstructionAddressStall);

            Done = false;
            while (!Done)
            {
                if ((InstructionAddressStall != 0) && (InstructionAddressCurrent >= InstructionAddressStall))
                {
                    if (Debug) Console.WriteLine("- STALLED --------------------------------------------------------------------");
                    Status.SetValue(DisplayListStatusEnum.Stalling);
                    while (!StallAddressUpdated.WaitOne(TimeSpan.FromSeconds(2)))
                    {
                        ConsoleUtils.SaveRestoreConsoleColor(ConsoleColor.Magenta, () =>
                        {
                            Console.WriteLine("DisplayListQueue.GetCountLock(): {0}", GpuProcessor.DisplayListQueue.GetCountLock());
                            Console.WriteLine("CurrentGpuDisplayList.Status: {0}", Status.ToStringDefault());
                        });
                        if (GpuProcessor.Syncing)
                        {
                            Done = true;
                            Status.SetValue(DisplayListStatusEnum.Completed);
                            return;
                        }
                    }

                }

                ProcessInstruction();
            }

            Status.SetValue(DisplayListStatusEnum.Completed);
        }

Usage Example

Example #1
0
        /// <summary>
        ///
        /// </summary>
        public void ProcessStep()
        {
            CurrentGpuDisplayList = null;

            if (DisplayListQueue.GetCountLock() > 0)
            {
                UsingGe = true;
                while (DisplayListQueue.GetCountLock() > 0)
                {
                    CurrentGpuDisplayList = DisplayListQueue.RemoveFirstAndGet();
                    CurrentGpuDisplayList.SetDequeued();
                    LastProcessedGpuDisplayList = CurrentGpuDisplayList;
                    CurrentGpuDisplayList.Process();
                    EnqueueFreeDisplayList(CurrentGpuDisplayList);
                }
                CurrentGpuDisplayList = null;

                Status2.SetValue(Status2Enum.Completed);
            }
        }
All Usage Examples Of CSPspEmu.Core.Gpu.GpuDisplayList::Process