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