Browse Source
Merge pull request #1046 from ogniK5377/missing-channels
Merge pull request #1046 from ogniK5377/missing-channels
Added missing channel devicesnce_cpp
committed by
GitHub
6 changed files with 148 additions and 0 deletions
-
4src/core/CMakeLists.txt
-
34src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp
-
36src/core/hle/service/nvdrv/devices/nvhost_nvjpg.h
-
34src/core/hle/service/nvdrv/devices/nvhost_vic.cpp
-
36src/core/hle/service/nvdrv/devices/nvhost_vic.h
-
4src/core/hle/service/nvdrv/nvdrv.cpp
@ -0,0 +1,34 @@ |
|||||
|
// Copyright 2018 yuzu emulator team
|
||||
|
// Licensed under GPLv2 or any later version
|
||||
|
// Refer to the license.txt file included.
|
||||
|
|
||||
|
#include <cstring>
|
||||
|
|
||||
|
#include "common/assert.h"
|
||||
|
#include "common/logging/log.h"
|
||||
|
#include "core/hle/service/nvdrv/devices/nvhost_nvjpg.h"
|
||||
|
|
||||
|
namespace Service::Nvidia::Devices { |
||||
|
|
||||
|
u32 nvhost_nvjpg::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) { |
||||
|
LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}", |
||||
|
command.raw, input.size(), output.size()); |
||||
|
|
||||
|
switch (static_cast<IoctlCommand>(command.raw)) { |
||||
|
case IoctlCommand::IocSetNVMAPfdCommand: |
||||
|
return SetNVMAPfd(input, output); |
||||
|
} |
||||
|
|
||||
|
UNIMPLEMENTED_MSG("Unimplemented ioctl"); |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
u32 nvhost_nvjpg::SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output) { |
||||
|
IoctlSetNvmapFD params{}; |
||||
|
std::memcpy(¶ms, input.data(), input.size()); |
||||
|
LOG_DEBUG(Service_NVDRV, "called, fd={}", params.nvmap_fd); |
||||
|
nvmap_fd = params.nvmap_fd; |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
} // namespace Service::Nvidia::Devices
|
||||
@ -0,0 +1,36 @@ |
|||||
|
// Copyright 2018 yuzu emulator team |
||||
|
// Licensed under GPLv2 or any later version |
||||
|
// Refer to the license.txt file included. |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include <vector> |
||||
|
#include "common/common_types.h" |
||||
|
#include "common/swap.h" |
||||
|
#include "core/hle/service/nvdrv/devices/nvdevice.h" |
||||
|
|
||||
|
namespace Service::Nvidia::Devices { |
||||
|
|
||||
|
class nvhost_nvjpg final : public nvdevice { |
||||
|
public: |
||||
|
nvhost_nvjpg() = default; |
||||
|
~nvhost_nvjpg() override = default; |
||||
|
|
||||
|
u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; |
||||
|
|
||||
|
private: |
||||
|
enum class IoctlCommand : u32_le { |
||||
|
IocSetNVMAPfdCommand = 0x40044801, |
||||
|
}; |
||||
|
|
||||
|
struct IoctlSetNvmapFD { |
||||
|
u32_le nvmap_fd; |
||||
|
}; |
||||
|
static_assert(sizeof(IoctlSetNvmapFD) == 4, "IoctlSetNvmapFD is incorrect size"); |
||||
|
|
||||
|
u32_le nvmap_fd{}; |
||||
|
|
||||
|
u32 SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output); |
||||
|
}; |
||||
|
|
||||
|
} // namespace Service::Nvidia::Devices |
||||
@ -0,0 +1,34 @@ |
|||||
|
// Copyright 2018 yuzu emulator team
|
||||
|
// Licensed under GPLv2 or any later version
|
||||
|
// Refer to the license.txt file included.
|
||||
|
|
||||
|
#include <cstring>
|
||||
|
|
||||
|
#include "common/assert.h"
|
||||
|
#include "common/logging/log.h"
|
||||
|
#include "core/hle/service/nvdrv/devices/nvhost_vic.h"
|
||||
|
|
||||
|
namespace Service::Nvidia::Devices { |
||||
|
|
||||
|
u32 nvhost_vic::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) { |
||||
|
LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}", |
||||
|
command.raw, input.size(), output.size()); |
||||
|
|
||||
|
switch (static_cast<IoctlCommand>(command.raw)) { |
||||
|
case IoctlCommand::IocSetNVMAPfdCommand: |
||||
|
return SetNVMAPfd(input, output); |
||||
|
} |
||||
|
|
||||
|
UNIMPLEMENTED_MSG("Unimplemented ioctl"); |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
u32 nvhost_vic::SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output) { |
||||
|
IoctlSetNvmapFD params{}; |
||||
|
std::memcpy(¶ms, input.data(), input.size()); |
||||
|
LOG_DEBUG(Service_NVDRV, "called, fd={}", params.nvmap_fd); |
||||
|
nvmap_fd = params.nvmap_fd; |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
} // namespace Service::Nvidia::Devices
|
||||
@ -0,0 +1,36 @@ |
|||||
|
// Copyright 2018 yuzu emulator team |
||||
|
// Licensed under GPLv2 or any later version |
||||
|
// Refer to the license.txt file included. |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include <vector> |
||||
|
#include "common/common_types.h" |
||||
|
#include "common/swap.h" |
||||
|
#include "core/hle/service/nvdrv/devices/nvdevice.h" |
||||
|
|
||||
|
namespace Service::Nvidia::Devices { |
||||
|
|
||||
|
class nvhost_vic final : public nvdevice { |
||||
|
public: |
||||
|
nvhost_vic() = default; |
||||
|
~nvhost_vic() override = default; |
||||
|
|
||||
|
u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; |
||||
|
|
||||
|
private: |
||||
|
enum class IoctlCommand : u32_le { |
||||
|
IocSetNVMAPfdCommand = 0x40044801, |
||||
|
}; |
||||
|
|
||||
|
struct IoctlSetNvmapFD { |
||||
|
u32_le nvmap_fd; |
||||
|
}; |
||||
|
static_assert(sizeof(IoctlSetNvmapFD) == 4, "IoctlSetNvmapFD is incorrect size"); |
||||
|
|
||||
|
u32_le nvmap_fd{}; |
||||
|
|
||||
|
u32 SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output); |
||||
|
}; |
||||
|
|
||||
|
} // namespace Service::Nvidia::Devices |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue