public int _sceGeListEnQueue(uint InstructionAddressStart, uint InstructionAddressStall, int CallbackId, PspGeListArgs* Args, Action<GpuDisplayList> Action) { //Console.WriteLine("aaaaaaaaaaa"); if (GpuStateStructPartition == null) { GpuStateStructPartition = MemoryManager.GetPartition(Managers.HleMemoryManager.Partitions.Kernel0).Allocate( sizeof(GpuStateStruct), Name: "GpuStateStruct" ); GpuStateStructPointer = (GpuStateStruct*)MemoryManager.Memory.PspAddressToPointerSafe(GpuStateStructPartition.Low, Marshal.SizeOf(typeof(GpuStateStruct))); } //Console.WriteLine("_sceGeListEnQueue"); try { var DisplayList = GpuProcessor.DequeueFreeDisplayList(); { DisplayList.InstructionAddressStart = InstructionAddressStart; DisplayList.InstructionAddressCurrent = InstructionAddressStart; DisplayList.InstructionAddressStall = InstructionAddressStall; DisplayList.CallbacksId = -1; DisplayList.Callbacks = default(PspGeCallbackData); if (CallbackId != -1) { try { //DisplayList.Callbacks = Callbacks[CallbackId]; DisplayList.Callbacks = Callbacks[CallbackId]; DisplayList.CallbacksId = CallbackId; } catch { } } DisplayList.GpuStateStructPointer = null; if (Args != null) { DisplayList.GpuStateStructPointer = (GpuStateStruct*)CpuProcessor.Memory.PspAddressToPointerSafe(Args[0].GpuStateStructAddress, Marshal.SizeOf(typeof(GpuStateStruct))); } if (DisplayList.GpuStateStructPointer == null) { DisplayList.GpuStateStructPointer = GpuStateStructPointer; } Action(DisplayList); } return DisplayList.Id; } catch (Exception Exception) { Console.Error.WriteLine(Exception); //return -1; throw(Exception); } }
public int sceGeListEnQueue(uint InstructionAddressStart, uint InstructionAddressStall, int CallbackId, PspGeListArgs* Args) { return _sceGeListEnQueue(InstructionAddressStart, InstructionAddressStall, CallbackId, Args, (DisplayList) => { GpuProcessor.EnqueueDisplayListLast(DisplayList); #if LIST_SYNC DisplayList.WaitCompletedSync(); #endif }); }
private GpuDisplayList _sceGeListEnQueue(uint InstructionAddressStart, uint InstructionAddressStall, int CallbackId, PspGeListArgs* Args) { var DisplayList = GpuProcessor.DequeueFreeDisplayList(); DisplayList.SetInstructionAddressStartAndCurrent(InstructionAddressStart); DisplayList.SetInstructionAddressStall(InstructionAddressStall); DisplayList.CallbacksId = -1; DisplayList.Callbacks = default(PspGeCallbackData); if (CallbackId != -1) { DisplayList.Callbacks = Callbacks[CallbackId]; DisplayList.CallbacksId = CallbackId; } DisplayList.GpuStateStructPointer = null; if (Args != null) { DisplayList.GpuStateStructPointer = (GpuStateStruct*)CpuProcessor.Memory.PspAddressToPointerSafe(Args->GpuStateStructAddress, Marshal.SizeOf(typeof(GpuStateStruct))); } if (DisplayList.GpuStateStructPointer == null) { DisplayList.GpuStateStructPointer = GpuStateStructPointer; } return DisplayList; }
public int sceGeListEnQueueHead(uint InstructionAddressStart, uint InstructionAddressStall, int CallbackId, PspGeListArgs* Args) { var DisplayList = _sceGeListEnQueue(InstructionAddressStart, InstructionAddressStall, CallbackId, Args); GpuProcessor.EnqueueDisplayListFirst(DisplayList); return DisplayList.Id; }