mirror of
https://github.com/switchbrew/libnx.git
synced 2025-07-04 10:32:15 +02:00
Added Dma
This commit is contained in:
parent
1e51ea6662
commit
8b5b328a1f
@ -63,19 +63,22 @@ extern "C" {
|
|||||||
#include "switch/nvidia/info.h"
|
#include "switch/nvidia/info.h"
|
||||||
#include "switch/nvidia/fence.h"
|
#include "switch/nvidia/fence.h"
|
||||||
#include "switch/nvidia/rect.h"
|
#include "switch/nvidia/rect.h"
|
||||||
|
|
||||||
#include "switch/nvidia/gpu/cmd_list.h"
|
#include "switch/nvidia/gpu/cmd_list.h"
|
||||||
#include "switch/nvidia/gpu/gpfifo.h"
|
#include "switch/nvidia/gpu/gpfifo.h"
|
||||||
#include "switch/nvidia/gpu/zcull_ctx.h"
|
#include "switch/nvidia/gpu/zcull_ctx.h"
|
||||||
#include "switch/nvidia/gpu/3d_ctx.h"
|
#include "switch/nvidia/gpu/3d_ctx.h"
|
||||||
#include "switch/nvidia/gpu/error_notifier.h"
|
#include "switch/nvidia/gpu/error_notifier.h"
|
||||||
#include "switch/nvidia/gpu/gpu.h"
|
#include "switch/nvidia/gpu/gpu.h"
|
||||||
#include "switch/nvidia/cmds/vn.h"
|
|
||||||
#include "switch/nvidia/cmds/common.h"
|
#include "switch/nvidia/cmds/common.h"
|
||||||
#include "switch/nvidia/cmds/3d.h"
|
#include "switch/nvidia/cmds/3d.h"
|
||||||
#include "switch/nvidia/cmds/3d_init.h"
|
#include "switch/nvidia/cmds/3d_init.h"
|
||||||
#include "switch/nvidia/cmds/3d_rendertarget.h"
|
#include "switch/nvidia/cmds/3d_rendertarget.h"
|
||||||
#include "switch/nvidia/cmds/3d_viewport.h"
|
#include "switch/nvidia/cmds/3d_viewport.h"
|
||||||
#include "switch/nvidia/cmds/3d_clear.h"
|
#include "switch/nvidia/cmds/3d_clear.h"
|
||||||
|
#include "switch/nvidia/cmds/dma.h"
|
||||||
|
#include "switch/nvidia/cmds/dma_copy.h"
|
||||||
|
|
||||||
#include "switch/runtime/env.h"
|
#include "switch/runtime/env.h"
|
||||||
#include "switch/runtime/nxlink.h"
|
#include "switch/runtime/nxlink.h"
|
||||||
|
13
nx/include/switch/nvidia/cmds/dma.h
Normal file
13
nx/include/switch/nvidia/cmds/dma.h
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
enum {
|
||||||
|
NvRegDma_Launch = 0xC0,
|
||||||
|
NvRegDma_SourceAddr = 0x100,
|
||||||
|
NvRegDma_DestinationAddr = 0x102,
|
||||||
|
NvRegDma_SourcePitch = 0x104,
|
||||||
|
NvRegDma_DestinationPitch = 0x105,
|
||||||
|
NvRegDma_Count = 0x106,
|
||||||
|
/*
|
||||||
|
0x1C0 MemsetValue? 1 uint
|
||||||
|
0x1C2 MemsetControl? 1 bitfield Seen: 0x34444
|
||||||
|
0x1C4 MemsetLength? 1 uint In units of 4 bytes.
|
||||||
|
*/
|
||||||
|
};
|
1
nx/include/switch/nvidia/cmds/dma_copy.h
Normal file
1
nx/include/switch/nvidia/cmds/dma_copy.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
void vnDmaCopy(Vn* vn, iova_t dst, iova_t src, size_t num);
|
30
nx/source/nvidia/cmds/dma_copy.c
Normal file
30
nx/source/nvidia/cmds/dma_copy.c
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#include <switch.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define DMA_MAXCOPY 0x3FFFFF
|
||||||
|
|
||||||
|
void vnDmaCopy(Vn* vn, iova_t dst, iova_t src, size_t num) {
|
||||||
|
while (num) {
|
||||||
|
size_t part = num;
|
||||||
|
|
||||||
|
if (part >= DMA_MAXCOPY)
|
||||||
|
part = DMA_MAXCOPY;
|
||||||
|
|
||||||
|
vnAddCmd(
|
||||||
|
vn,
|
||||||
|
NvIncr(
|
||||||
|
4, NvRegDma_SourceAddr,
|
||||||
|
src>>32, src,
|
||||||
|
dst>>32, dst,
|
||||||
|
1, 1,
|
||||||
|
part
|
||||||
|
),
|
||||||
|
NvImm(
|
||||||
|
4, NvRegDma_Launch,
|
||||||
|
0x186
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
num -= part;
|
||||||
|
}
|
||||||
|
}
|
0
nx/source/nvidia/cmds/dma_memset.c
Normal file
0
nx/source/nvidia/cmds/dma_memset.c
Normal file
Loading…
Reference in New Issue
Block a user