mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-30 07:29:02 -05:00 
			
		
		
		
	Merge pull request #3420 from namkazt/master2
nvhost_gpu: implement ChannelSetTimeslice
This commit is contained in:
		| @@ -44,6 +44,8 @@ u32 nvhost_gpu::ioctl(Ioctl command, const std::vector<u8>& input, const std::ve | ||||
|         return GetWaitbase(input, output); | ||||
|     case IoctlCommand::IocChannelSetTimeoutCommand: | ||||
|         return ChannelSetTimeout(input, output); | ||||
|     case IoctlCommand::IocChannelSetTimeslice: | ||||
|         return ChannelSetTimeslice(input, output); | ||||
|     default: | ||||
|         break; | ||||
|     } | ||||
| @@ -228,4 +230,14 @@ u32 nvhost_gpu::ChannelSetTimeout(const std::vector<u8>& input, std::vector<u8>& | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| u32 nvhost_gpu::ChannelSetTimeslice(const std::vector<u8>& input, std::vector<u8>& output) { | ||||
|     IoctlSetTimeslice params{}; | ||||
|     std::memcpy(¶ms, input.data(), sizeof(IoctlSetTimeslice)); | ||||
|     LOG_INFO(Service_NVDRV, "called, timeslice=0x{:X}", params.timeslice); | ||||
|  | ||||
|     channel_timeslice = params.timeslice; | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| } // namespace Service::Nvidia::Devices | ||||
|   | ||||
| @@ -48,6 +48,7 @@ private: | ||||
|         IocAllocObjCtxCommand = 0xC0104809, | ||||
|         IocChannelGetWaitbaseCommand = 0xC0080003, | ||||
|         IocChannelSetTimeoutCommand = 0x40044803, | ||||
|         IocChannelSetTimeslice = 0xC004481D, | ||||
|     }; | ||||
|  | ||||
|     enum class CtxObjects : u32_le { | ||||
| @@ -101,6 +102,11 @@ private: | ||||
|     static_assert(sizeof(IoctlChannelSetPriority) == 4, | ||||
|                   "IoctlChannelSetPriority is incorrect size"); | ||||
|  | ||||
|     struct IoctlSetTimeslice { | ||||
|         u32_le timeslice; | ||||
|     }; | ||||
|     static_assert(sizeof(IoctlSetTimeslice) == 4, "IoctlSetTimeslice is incorrect size"); | ||||
|  | ||||
|     struct IoctlEventIdControl { | ||||
|         u32_le cmd; // 0=disable, 1=enable, 2=clear | ||||
|         u32_le id; | ||||
| @@ -174,6 +180,7 @@ private: | ||||
|     u64_le user_data{}; | ||||
|     IoctlZCullBind zcull_params{}; | ||||
|     u32_le channel_priority{}; | ||||
|     u32_le channel_timeslice{}; | ||||
|  | ||||
|     u32 SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output); | ||||
|     u32 SetClientData(const std::vector<u8>& input, std::vector<u8>& output); | ||||
| @@ -188,6 +195,7 @@ private: | ||||
|                   const std::vector<u8>& input2, IoctlVersion version); | ||||
|     u32 GetWaitbase(const std::vector<u8>& input, std::vector<u8>& output); | ||||
|     u32 ChannelSetTimeout(const std::vector<u8>& input, std::vector<u8>& output); | ||||
|     u32 ChannelSetTimeslice(const std::vector<u8>& input, std::vector<u8>& output); | ||||
|  | ||||
|     std::shared_ptr<nvmap> nvmap_dev; | ||||
|     u32 assigned_syncpoints{}; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bunnei
					bunnei