コード例 #1
0
		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);
			}
		}
コード例 #2
0
 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
     });
 }
コード例 #3
0
        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;
        }
コード例 #4
0
 public int sceGeListEnQueueHead(uint InstructionAddressStart, uint InstructionAddressStall, int CallbackId, PspGeListArgs* Args)
 {
     var DisplayList = _sceGeListEnQueue(InstructionAddressStart, InstructionAddressStall, CallbackId, Args);
     GpuProcessor.EnqueueDisplayListFirst(DisplayList);
     return DisplayList.Id;
 }