mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-31 07:59:02 -05:00 
			
		
		
		
	Merge pull request #1762 from bunnei/getgputime
nvhost_ctrl_gpu: Implement IoctlGetGpuTime.
This commit is contained in:
		| @@ -5,6 +5,8 @@ | ||||
| #include <cstring> | ||||
| #include "common/assert.h" | ||||
| #include "common/logging/log.h" | ||||
| #include "core/core_timing.h" | ||||
| #include "core/core_timing_util.h" | ||||
| #include "core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h" | ||||
|  | ||||
| namespace Service::Nvidia::Devices { | ||||
| @@ -33,6 +35,8 @@ u32 nvhost_ctrl_gpu::ioctl(Ioctl command, const std::vector<u8>& input, std::vec | ||||
|         return ZBCQueryTable(input, output); | ||||
|     case IoctlCommand::IocFlushL2: | ||||
|         return FlushL2(input, output); | ||||
|     case IoctlCommand::IocGetGpuTime: | ||||
|         return GetGpuTime(input, output); | ||||
|     } | ||||
|     UNIMPLEMENTED_MSG("Unimplemented ioctl"); | ||||
|     return 0; | ||||
| @@ -169,4 +173,13 @@ u32 nvhost_ctrl_gpu::FlushL2(const std::vector<u8>& input, std::vector<u8>& outp | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| u32 nvhost_ctrl_gpu::GetGpuTime(const std::vector<u8>& input, std::vector<u8>& output) { | ||||
|     LOG_DEBUG(Service_NVDRV, "called"); | ||||
|     IoctlGetGpuTime params{}; | ||||
|     std::memcpy(¶ms, input.data(), input.size()); | ||||
|     params.gpu_time = CoreTiming::cyclesToNs(CoreTiming::GetTicks()); | ||||
|     std::memcpy(output.data(), ¶ms, output.size()); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| } // namespace Service::Nvidia::Devices | ||||
|   | ||||
| @@ -156,6 +156,11 @@ private: | ||||
|     }; | ||||
|     static_assert(sizeof(IoctlFlushL2) == 8, "IoctlFlushL2 is incorrect size"); | ||||
|  | ||||
|     struct IoctlGetGpuTime { | ||||
|         u64_le gpu_time; | ||||
|     }; | ||||
|     static_assert(sizeof(IoctlGetGpuTime) == 8, "IoctlGetGpuTime 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); | ||||
| @@ -164,6 +169,7 @@ private: | ||||
|     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); | ||||
|     u32 GetGpuTime(const std::vector<u8>& input, std::vector<u8>& output); | ||||
| }; | ||||
|  | ||||
| } // namespace Service::Nvidia::Devices | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bunnei
					bunnei