From 577a76dc06d643dfd73b97d02c6c9b9faa35efdf Mon Sep 17 00:00:00 2001 From: plutooo Date: Sat, 10 Mar 2018 16:43:01 +0100 Subject: [PATCH] Minor fixes, adding custom flag to buffer allocation --- nx/include/switch/nvidia/address_space.h | 2 +- nx/include/switch/nvidia/buffer.h | 3 ++- nx/source/nvidia/address_space.c | 4 ++-- nx/source/nvidia/buffer.c | 2 +- nx/source/nvidia/gpu/zcull_ctx.c | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/nx/include/switch/nvidia/address_space.h b/nx/include/switch/nvidia/address_space.h index 6ed435fc..63059974 100644 --- a/nx/include/switch/nvidia/address_space.h +++ b/nx/include/switch/nvidia/address_space.h @@ -20,7 +20,7 @@ Result nvasReserveAlign(NvAddressSpace* a, NvPageSize align, u32 pages, NvPageSi Result nvasReserveAtFixedAddr(NvAddressSpace* a, iova_t addr, u32 pages, NvPageSize page_sz); Result nvasReserveFull(NvAddressSpace* a); -Result nvasMapBuffer(NvAddressSpace* a, NvBuffer* buffer, iova_t* iova_out); +Result nvasMapBuffer(NvAddressSpace* a, NvBuffer* buffer, NvBufferKind kind, iova_t* iova_out); struct NvChannel; Result nvasBindToChannel(NvAddressSpace* a, struct NvChannel* channel); diff --git a/nx/include/switch/nvidia/buffer.h b/nx/include/switch/nvidia/buffer.h index 4f06259c..55fd7196 100644 --- a/nx/include/switch/nvidia/buffer.h +++ b/nx/include/switch/nvidia/buffer.h @@ -3,7 +3,8 @@ #include "../types.h" typedef enum { - NvBufferFlags_Writable=1 + NvBufferFlags_Writable=1, + NvBufferFlags_Nintendo=0x20000, } NvBufferFlags; typedef enum { diff --git a/nx/source/nvidia/address_space.c b/nx/source/nvidia/address_space.c index 224849c4..ee0211ec 100644 --- a/nx/source/nvidia/address_space.c +++ b/nx/source/nvidia/address_space.c @@ -43,8 +43,8 @@ Result nvasReserveFull(NvAddressSpace* a) { return nvasReserveAlign(a, NvPageSize_64K, 0x10000, NvPageSize_64K, NULL); } -Result nvasMapBuffer(NvAddressSpace* a, NvBuffer* buffer, iova_t* iova_out) { - return nvioctlNvhostAsGpu_MapBufferEx(a->fd, 0, buffer->kind, buffer->fd, 0, 0, buffer->size, 0, iova_out); +Result nvasMapBuffer(NvAddressSpace* a, NvBuffer* buffer, NvBufferKind kind, iova_t* iova_out) { + return nvioctlNvhostAsGpu_MapBufferEx(a->fd, 0, kind, buffer->fd, 0, 0, buffer->size, 0, iova_out); } Result nvasBindToChannel(NvAddressSpace* a, NvChannel* channel) diff --git a/nx/source/nvidia/buffer.c b/nx/source/nvidia/buffer.c index 1ce3a80c..535be161 100644 --- a/nx/source/nvidia/buffer.c +++ b/nx/source/nvidia/buffer.c @@ -54,7 +54,7 @@ static Result _nvbufCreate(NvBuffer* m, size_t size, u32 flags, u32 align, NvBuf m->fd = -1; if (R_SUCCEEDED(rc)) - rc = nvioctlNvmap_Alloc(g_nvmap_fd, m->fd, 0, flags, align, kind, m->ptr); + rc = nvioctlNvmap_Alloc(g_nvmap_fd, m->fd, 0, flags | NvBufferFlags_Nintendo, align, kind, m->ptr); if (R_FAILED(rc)) nvbufFree(m); diff --git a/nx/source/nvidia/gpu/zcull_ctx.c b/nx/source/nvidia/gpu/zcull_ctx.c index 8986c71a..565e52a0 100644 --- a/nx/source/nvidia/gpu/zcull_ctx.c +++ b/nx/source/nvidia/gpu/zcull_ctx.c @@ -10,7 +10,7 @@ Result nvzcullCreate(NvZcullContext* z, NvGpu* parent) iova_t iova_out; if (R_SUCCEEDED(rc)) - rc = nvasMapBuffer(&parent->addr_space, &z->ctx_buf, &iova_out); + rc = nvasMapBuffer(&parent->addr_space, &z->ctx_buf, NvBufferKind_Pitch, &iova_out); if (R_SUCCEEDED(rc)) rc = nvioctlChannel_ZCullBind(parent->gpu_channel.fd, iova_out, NvZcullConfig_SeparateBuffer);