libnx
nvioctl.h
1 #pragma once
2 #include "../types.h"
3 
4 typedef struct {
5  u32 arch; // 0x120 (NVGPU_GPU_ARCH_GM200)
6  u32 impl; // 0xB (NVGPU_GPU_IMPL_GM20B)
7  u32 rev; // 0xA1 (Revision A1)
8  u32 num_gpc; // 0x1
9  u64 L2_cache_size; // 0x40000
10  u64 on_board_video_memory_size; // 0x0 (not used)
11  u32 num_tpc_per_gpc; // 0x2
12  u32 bus_type; // 0x20 (NVGPU_GPU_BUS_TYPE_AXI)
13  u32 big_page_size; // 0x20000
14  u32 compression_page_size; // 0x20000
15  u32 pde_coverage_bit_count; // 0x1B
16  u32 available_big_page_sizes; // 0x30000
17  u32 gpc_mask; // 0x1
18  u32 sm_arch_sm_version; // 0x503 (Maxwell Generation 5.0.3?)
19  u32 sm_arch_spa_version; // 0x503 (Maxwell Generation 5.0.3?)
20  u32 sm_arch_warp_count; // 0x80
21  u32 gpu_va_bit_count; // 0x28
22  u32 reserved; // NULL
23  u64 flags; // 0x55
24  u32 twod_class; // 0x902D (FERMI_TWOD_A)
25  u32 threed_class; // 0xB197 (MAXWELL_B)
26  u32 compute_class; // 0xB1C0 (MAXWELL_COMPUTE_B)
27  u32 gpfifo_class; // 0xB06F (MAXWELL_CHANNEL_GPFIFO_A)
28  u32 inline_to_memory_class; // 0xA140 (KEPLER_INLINE_TO_MEMORY_B)
29  u32 dma_copy_class; // 0xB0B5 (MAXWELL_DMA_COPY_A)
30  u32 max_fbps_count; // 0x1
31  u32 fbp_en_mask; // 0x0 (disabled)
32  u32 max_ltc_per_fbp; // 0x2
33  u32 max_lts_per_ltc; // 0x1
34  u32 max_tex_per_tpc; // 0x0 (not supported)
35  u32 max_gpc_count; // 0x1
36  u32 rop_l2_en_mask_0; // 0x21D70 (fuse_status_opt_rop_l2_fbp_r)
37  u32 rop_l2_en_mask_1; // 0x0
38  u64 chipname; // 0x6230326D67 ("gm20b")
39  u64 gr_compbit_store_base_hw; // 0x0 (not supported)
41 
42 typedef struct {
43  u64 offset;
44  u32 page_size;
45  u32 pad;
46  u64 pages;
48 
49 typedef struct {
50  u32 mask; // always 0x07
51  u32 flush; // active flush bit field
53 
54 typedef struct {
55  u32 id;
56  u32 value;
58 
59 typedef struct {
60  u32 entry0;
61  u32 entry1;
63 
64 //Used with nvioctlChannel_AllocObjCtx().
65 enum nvioctl_channel_obj_classnum {
66  NvChannelObjClassNum_2D = 0x902D,
67  NvChannelObjClassNum_3D = 0xB197,
68  NvChannelObjClassNum_Compute = 0xB1C0,
69  NvChannelObjClassNum_Kepler = 0xA140,
70  NvChannelObjClassNum_DMA = 0xB0B5,
71  NvChannelObjClassNum_ChannelGpfifo = 0xB06F
72 };
73 
74 //Used with nvioctlChannel_SetPriority().
75 enum nvioctl_channel_priority {
76  NvChannelPriority_Low = 0x32,
77  NvChannelPriority_Medium = 0x64,
78  NvChannelPriority_High = 0x96
79 };
80 
81 Result nvioctlNvhostCtrl_EventSignal(u32 fd, u32 event_id);
82 Result nvioctlNvhostCtrl_EventWait(u32 fd, u32 syncpt_id, u32 threshold, s32 timeout, u32 event_id, u32 *out);
83 Result nvioctlNvhostCtrl_EventRegister(u32 fd, u32 event_id);
84 
85 Result nvioctlNvhostCtrlGpu_ZCullGetCtxSize(u32 fd, u32 *out);
86 Result nvioctlNvhostCtrlGpu_ZCullGetInfo(u32 fd, u32 out[40>>2]);
87 Result nvioctlNvhostCtrlGpu_GetCharacteristics(u32 fd, gpu_characteristics *out);
88 Result nvioctlNvhostCtrlGpu_GetTpcMasks(u32 fd, u32 inval, u32 out[24>>2]);
89 Result nvioctlNvhostCtrlGpu_GetL2State(u32 fd, nvioctl_l2_state *out);
90 
91 Result nvioctlNvhostAsGpu_BindChannel(u32 fd, u32 channel_fd);
92 Result nvioctlNvhostAsGpu_AllocSpace(u32 fd, u32 pages, u32 page_size, u32 flags, u64 align, u64 *offset);
93 Result nvioctlNvhostAsGpu_MapBufferEx(u32 fd, u32 flags, u32 kind, u32 nvmap_handle, u32 page_size, u64 buffer_offset, u64 mapping_size, u64 input_offset, u64 *offset);
94 Result nvioctlNvhostAsGpu_GetVARegions(u32 fd, nvioctl_va_region regions[2]);
95 Result nvioctlNvhostAsGpu_InitializeEx(u32 fd, u32 big_page_size, u32 flags);
96 
97 Result nvioctlNvmap_Create(u32 fd, u32 size, u32 *nvmap_handle);
98 Result nvioctlNvmap_FromId(u32 fd, u32 id, u32 *nvmap_handle);
99 Result nvioctlNvmap_Alloc(u32 fd, u32 nvmap_handle, u32 heapmask, u32 flags, u32 align, u8 kind, void* addr);
100 Result nvioctlNvmap_GetId(u32 fd, u32 nvmap_handle, u32 *id);
101 
102 Result nvioctlChannel_SetNvmapFd(u32 fd, u32 nvmap_fd);
103 Result nvioctlChannel_SubmitGpfifo(u32 fd, nvioctl_gpfifo_entry *entries, u32 num_entries, u32 flags, nvioctl_fence *fence_out);
104 Result nvioctlChannel_AllocObjCtx(u32 fd, u32 class_num, u32 flags);
105 Result nvioctlChannel_ZCullBind(u32 fd, u64 gpu_va, u32 mode);
106 Result nvioctlChannel_SetErrorNotifier(u32 fd, u64 offset, u64 size, u32 nvmap_handle);
107 Result nvioctlChannel_SetPriority(u32 fd, u32 priority);
108 Result nvioctlChannel_AllocGpfifoEx2(u32 fd, u32 num_entries, u32 flags, u32 unk0, u32 unk1, u32 unk2, u32 unk3, nvioctl_fence *fence_out);
109 Result nvioctlChannel_SetUserData(u32 fd, void* addr);
110 
Definition: nvioctl.h:42
Definition: nvioctl.h:49
u32 Result
Function error code result type.
Definition: types.h:46
uint8_t u8
8-bit unsigned integer.
Definition: types.h:21
uint64_t u64
64-bit unsigned integer.
Definition: types.h:24
Definition: nvioctl.h:54
uint32_t u32
32-bit unsigned integer.
Definition: types.h:23
int32_t s32
32-bit signed integer.
Definition: types.h:29
Definition: nvioctl.h:4
Definition: nvioctl.h:59