mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-31 16:09:03 -05:00 
			
		
		
		
	nvdrv/devices/nvidia_ctrl_gpu : add IoctlCommands with their params (#524)
* add IoctlCommands with their params in nvidia_ctrl_gpu.h * add function related to the changes done previously * fix clang-format * delete trailing whitespace * correct mistake
This commit is contained in:
		 greggameplayer
					greggameplayer
				
			
				
					committed by
					
						 Sebastian Valle
						Sebastian Valle
					
				
			
			
				
	
			
			
			 Sebastian Valle
						Sebastian Valle
					
				
			
						parent
						
							2f842a86fe
						
					
				
				
					commit
					be09dfeed9
				
			| @@ -26,6 +26,10 @@ u32 nvhost_ctrl_gpu::ioctl(Ioctl command, const std::vector<u8>& input, std::vec | ||||
|         return ZCullGetInfo(input, output); | ||||
|     case IoctlCommand::IocZbcSetTable: | ||||
|         return ZBCSetTable(input, output); | ||||
|     case IoctlCommand::IocZbcQueryTable: | ||||
|         return ZBCQueryTable(input, output); | ||||
|     case IoctlCommand::IocFlushL2: | ||||
|         return FlushL2(input, output); | ||||
|     } | ||||
|     UNIMPLEMENTED_MSG("Unimplemented ioctl"); | ||||
|     return 0; | ||||
| @@ -136,4 +140,22 @@ u32 nvhost_ctrl_gpu::ZBCSetTable(const std::vector<u8>& input, std::vector<u8>& | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| u32 nvhost_ctrl_gpu::ZBCQueryTable(const std::vector<u8>& input, std::vector<u8>& output) { | ||||
|     NGLOG_WARNING(Service_NVDRV, "(STUBBED) called"); | ||||
|     IoctlZbcQueryTable params{}; | ||||
|     std::memcpy(¶ms, input.data(), input.size()); | ||||
|     // TODO : To implement properly | ||||
|     std::memcpy(output.data(), ¶ms, output.size()); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| u32 nvhost_ctrl_gpu::FlushL2(const std::vector<u8>& input, std::vector<u8>& output) { | ||||
|     NGLOG_WARNING(Service_NVDRV, "(STUBBED) called"); | ||||
|     IoctlFlushL2 params{}; | ||||
|     std::memcpy(¶ms, input.data(), input.size()); | ||||
|     // TODO : To implement properly | ||||
|     std::memcpy(output.data(), ¶ms, output.size()); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| } // namespace Service::Nvidia::Devices | ||||
|   | ||||
| @@ -26,6 +26,18 @@ private: | ||||
|         IocZcullGetCtxSizeCommand = 0x80044701, | ||||
|         IocZcullGetInfo = 0x80284702, | ||||
|         IocZbcSetTable = 0x402C4703, | ||||
|         IocZbcQueryTable = 0xC0344704, | ||||
|         IocFlushL2 = 0x40084707, | ||||
|         IocInvalICache = 0x4008470D, | ||||
|         IocSetMmudebugMode = 0x4008470E, | ||||
|         IocSetSmDebugMode = 0x4010470F, | ||||
|         IocWaitForPause = 0xC0084710, | ||||
|         IocGetTcpExceptionEnStatus = 0x80084711, | ||||
|         IocNumVsms = 0x80084712, | ||||
|         IocVsmsMapping = 0xC0044713, | ||||
|         IocGetErrorChannelUserData = 0xC008471B, | ||||
|         IocGetGpuTime = 0xC010471C, | ||||
|         IocGetCpuTimeCorrelationInfo = 0xC108471D, | ||||
|     }; | ||||
|  | ||||
|     struct IoctlGpuCharacteristics { | ||||
| @@ -127,12 +139,31 @@ private: | ||||
|     }; | ||||
|     static_assert(sizeof(IoctlZbcSetTable) == 44, "IoctlZbcSetTable is incorrect size"); | ||||
|  | ||||
|     struct IoctlZbcQueryTable { | ||||
|         u32_le color_ds[4]; | ||||
|         u32_le color_l2[4]; | ||||
|         u32_le depth; | ||||
|         u32_le ref_cnt; | ||||
|         u32_le format; | ||||
|         u32_le type; | ||||
|         u32_le index_size; | ||||
|     }; | ||||
|     static_assert(sizeof(IoctlZbcQueryTable) == 52, "IoctlZbcQueryTable is incorrect size"); | ||||
|  | ||||
|     struct IoctlFlushL2 { | ||||
|         u32_le flush; // l2_flush | l2_invalidate << 1 | fb_flush << 2 | ||||
|         u32_le reserved; | ||||
|     }; | ||||
|     static_assert(sizeof(IoctlFlushL2) == 8, "IoctlFlushL2 is incorrect size"); | ||||
|  | ||||
|     u32 GetCharacteristics(const std::vector<u8>& input, std::vector<u8>& output); | ||||
|     u32 GetTPCMasks(const std::vector<u8>& input, std::vector<u8>& output); | ||||
|     u32 GetActiveSlotMask(const std::vector<u8>& input, std::vector<u8>& output); | ||||
|     u32 ZCullGetCtxSize(const std::vector<u8>& input, std::vector<u8>& output); | ||||
|     u32 ZCullGetInfo(const std::vector<u8>& input, std::vector<u8>& output); | ||||
|     u32 ZBCSetTable(const std::vector<u8>& input, std::vector<u8>& output); | ||||
|     u32 ZBCQueryTable(const std::vector<u8>& input, std::vector<u8>& output); | ||||
|     u32 FlushL2(const std::vector<u8>& input, std::vector<u8>& output); | ||||
| }; | ||||
|  | ||||
| } // namespace Service::Nvidia::Devices | ||||
|   | ||||
		Reference in New Issue
	
	Block a user