summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/nvdrv/nvdrv_a.cpp
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2018-01-15 23:39:00 +0100
committerbunnei <bunneidev@gmail.com>2018-01-17 01:03:49 +0100
commit30657f9ca1485dcf9611d3c4ea3c74d52b350dec (patch)
tree66254dcdc6002297706d9c7169a46eaff806c611 /src/core/hle/service/nvdrv/nvdrv_a.cpp
parentVI: Stubbed GetNativeHandle, Create/DestroyStrayLayer and CloseDisplay (diff)
downloadyuzu-30657f9ca1485dcf9611d3c4ea3c74d52b350dec.tar
yuzu-30657f9ca1485dcf9611d3c4ea3c74d52b350dec.tar.gz
yuzu-30657f9ca1485dcf9611d3c4ea3c74d52b350dec.tar.bz2
yuzu-30657f9ca1485dcf9611d3c4ea3c74d52b350dec.tar.lz
yuzu-30657f9ca1485dcf9611d3c4ea3c74d52b350dec.tar.xz
yuzu-30657f9ca1485dcf9611d3c4ea3c74d52b350dec.tar.zst
yuzu-30657f9ca1485dcf9611d3c4ea3c74d52b350dec.zip
Diffstat (limited to '')
-rw-r--r--src/core/hle/service/nvdrv/nvdrv_a.cpp27
1 files changed, 6 insertions, 21 deletions
diff --git a/src/core/hle/service/nvdrv/nvdrv_a.cpp b/src/core/hle/service/nvdrv/nvdrv_a.cpp
index 84d89cb49..5d3e68792 100644
--- a/src/core/hle/service/nvdrv/nvdrv_a.cpp
+++ b/src/core/hle/service/nvdrv/nvdrv_a.cpp
@@ -4,15 +4,11 @@
#include "common/logging/log.h"
#include "core/hle/ipc_helpers.h"
-#include "core/hle/service/nvdrv/devices/nvdevice.h"
-#include "core/hle/service/nvdrv/devices/nvdisp_disp0.h"
-#include "core/hle/service/nvdrv/devices/nvhost_as_gpu.h"
-#include "core/hle/service/nvdrv/devices/nvmap.h"
#include "core/hle/service/nvdrv/nvdrv.h"
#include "core/hle/service/nvdrv/nvdrv_a.h"
namespace Service {
-namespace NVDRV {
+namespace Nvidia {
void NVDRV_A::Open(Kernel::HLERequestContext& ctx) {
LOG_WARNING(Service, "(STUBBED) called");
@@ -21,11 +17,7 @@ void NVDRV_A::Open(Kernel::HLERequestContext& ctx) {
std::string device_name = Memory::ReadCString(buffer.Address(), buffer.Size());
- auto device = devices[device_name];
- u32 fd = next_fd++;
-
- open_files[fd] = device;
-
+ u32 fd = nvdrv->Open(device_name);
IPC::RequestBuilder rb{ctx, 4};
rb.Push(RESULT_SUCCESS);
rb.Push<u32>(fd);
@@ -46,11 +38,8 @@ void NVDRV_A::Ioctl(Kernel::HLERequestContext& ctx) {
std::vector<u8> output(output_buffer.Size());
Memory::ReadBlock(input_buffer.Address(), input.data(), input_buffer.Size());
- auto itr = open_files.find(fd);
- ASSERT_MSG(itr != open_files.end(), "Tried to talk to an invalid device");
- auto device = itr->second;
- u32 nv_result = device->ioctl(command, input, output);
+ u32 nv_result = nvdrv->Ioctl(fd, command, input, output);
Memory::WriteBlock(output_buffer.Address(), output.data(), output_buffer.Size());
@@ -66,19 +55,15 @@ void NVDRV_A::Initialize(Kernel::HLERequestContext& ctx) {
rb.Push<u32>(0);
}
-NVDRV_A::NVDRV_A() : ServiceFramework("nvdrv:a") {
+NVDRV_A::NVDRV_A(std::shared_ptr<Module> nvdrv)
+ : ServiceFramework("nvdrv:a"), nvdrv(std::move(nvdrv)) {
static const FunctionInfo functions[] = {
{0, &NVDRV_A::Open, "Open"},
{1, &NVDRV_A::Ioctl, "Ioctl"},
{3, &NVDRV_A::Initialize, "Initialize"},
};
RegisterHandlers(functions);
-
- auto nvmap_dev = std::make_shared<Devices::nvmap>();
- devices["/dev/nvhost-as-gpu"] = std::make_shared<Devices::nvhost_as_gpu>();
- devices["/dev/nvmap"] = nvmap_dev;
- devices["/dev/nvdisp_disp0"] = std::make_shared<Devices::nvdisp_disp0>(nvmap_dev);
}
-} // namespace NVDRV
+} // namespace Nvidia
} // namespace Service