mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 12:32:40 +02:00
nvchannel: Implement GET_CLK_RATE and SET_SUBMIT_TIMEOUT
This commit is contained in:
parent
be45a91b9c
commit
b615b01d44
@ -161,6 +161,11 @@ typedef struct {
|
|||||||
u32 iova;
|
u32 iova;
|
||||||
} nvioctl_command_buffer_map;
|
} nvioctl_command_buffer_map;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint32_t rate;
|
||||||
|
uint32_t moduleid;
|
||||||
|
} nvioctl_clk_rate;
|
||||||
|
|
||||||
#define NVGPU_ZBC_TYPE_INVALID 0
|
#define NVGPU_ZBC_TYPE_INVALID 0
|
||||||
#define NVGPU_ZBC_TYPE_COLOR 1
|
#define NVGPU_ZBC_TYPE_COLOR 1
|
||||||
#define NVGPU_ZBC_TYPE_DEPTH 2
|
#define NVGPU_ZBC_TYPE_DEPTH 2
|
||||||
@ -284,5 +289,7 @@ Result nvioctlChannel_Submit(u32 fd, const nvioctl_cmdbuf *cmdbufs, u32 num_cmdb
|
|||||||
const nvioctl_syncpt_incr *syncpt_incrs, u32 num_syncpt_incrs, nvioctl_fence *fences, u32 num_fences);
|
const nvioctl_syncpt_incr *syncpt_incrs, u32 num_syncpt_incrs, nvioctl_fence *fences, u32 num_fences);
|
||||||
Result nvioctlChannel_GetSyncpt(u32 fd, u32 module_id, u32 *syncpt);
|
Result nvioctlChannel_GetSyncpt(u32 fd, u32 module_id, u32 *syncpt);
|
||||||
Result nvioctlChannel_GetModuleClockRate(u32 fd, u32 module_id, u32 *freq);
|
Result nvioctlChannel_GetModuleClockRate(u32 fd, u32 module_id, u32 *freq);
|
||||||
|
Result nvioctlChannel_SetModuleClockRate(u32 fd, u32 module_id, u32 freq);
|
||||||
Result nvioctlChannel_MapCommandBuffer(u32 fd, nvioctl_command_buffer_map *maps, u32 num_maps, bool compressed);
|
Result nvioctlChannel_MapCommandBuffer(u32 fd, nvioctl_command_buffer_map *maps, u32 num_maps, bool compressed);
|
||||||
Result nvioctlChannel_UnmapCommandBuffer(u32 fd, const nvioctl_command_buffer_map *maps, u32 num_maps, bool compressed);
|
Result nvioctlChannel_UnmapCommandBuffer(u32 fd, const nvioctl_command_buffer_map *maps, u32 num_maps, bool compressed);
|
||||||
|
Result nvioctlChannel_SetSubmitTimeout(u32 fd, u32 timeout);
|
||||||
|
@ -254,11 +254,8 @@ Result nvioctlChannel_GetSyncpt(u32 fd, u32 id, u32 *syncpt) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result nvioctlChannel_GetModuleClockRate(u32 fd, u32 module_id, u32 *freq) {
|
Result nvioctlChannel_GetModuleClockRate(u32 fd, u32 module_id, u32 *freq) {
|
||||||
struct {
|
nvioctl_clk_rate data = {
|
||||||
__nv_out u32 rate;
|
.moduleid = module_id,
|
||||||
__nv_in u32 module;
|
|
||||||
} data = {
|
|
||||||
.module = module_id,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
u32 nr = _NV_IOWR(0, hosversionBefore(8,0,0) ? 0x14 : 0x23, data);
|
u32 nr = _NV_IOWR(0, hosversionBefore(8,0,0) ? 0x14 : 0x23, data);
|
||||||
@ -270,6 +267,25 @@ Result nvioctlChannel_GetModuleClockRate(u32 fd, u32 module_id, u32 *freq) {
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result nvioctlChannel_SetModuleClockRate(u32 fd, u32 module_id, u32 freq) {
|
||||||
|
nvioctl_clk_rate data = {
|
||||||
|
.rate = freq,
|
||||||
|
.moduleid = module_id,
|
||||||
|
};
|
||||||
|
|
||||||
|
return nvIoctl(fd, _NV_IOW(0, 0x08, data), &data);
|
||||||
|
}
|
||||||
|
|
||||||
|
Result nvioctlChannel_SetSubmitTimeout(u32 fd, u32 timeout) {
|
||||||
|
struct {
|
||||||
|
__nv_in u32 timeout;
|
||||||
|
} data = {
|
||||||
|
.timeout = timeout,
|
||||||
|
};
|
||||||
|
|
||||||
|
return nvIoctl(fd, _NV_IOW(0, 0x07, data), &data);
|
||||||
|
}
|
||||||
|
|
||||||
Result nvioctlChannel_MapCommandBuffer(u32 fd, nvioctl_command_buffer_map *maps, u32 num_maps, bool compressed) {
|
Result nvioctlChannel_MapCommandBuffer(u32 fd, nvioctl_command_buffer_map *maps, u32 num_maps, bool compressed) {
|
||||||
if (num_maps > 0x200)
|
if (num_maps > 0x200)
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_OutOfMemory);
|
return MAKERESULT(Module_Libnx, LibnxError_OutOfMemory);
|
||||||
|
Loading…
Reference in New Issue
Block a user