d129905a66
* FinishInitalize needed for 3.0.1+ games * nvdrv:s and nvdrv:t both use NVDRV * Most settings return 0 on hardware, disabled NV_MEMORY_PROFILER for now. NVN_THROUGH_OPENGL & NVRM_GPU_PREVENT_USE are a few interesting settings to look at. Carefully choosing settings can help with drawing graphics later on * Initial /dev/nvhost-gpu support * ZCullBind * Stubbed SetErrorNotifier * Fixed SetErrorNotifier log, Added SetChannelPriority * Allocate GPFIFO Ex2, Allocate Obj Ctx, Submit GPFIFO * oops * Fixed up naming/structs/enums. Used vector instead of array for "gpfifo_entry" * Added missing fixes * /dev/nvhost-ctrl-gpu * unneeded struct * Forgot u32 in enum class * Automatic descriptor swapping for ioctls, fixed nvgpu_gpu_get_tpc_masks_args being incorrect size * nvdrv#QueryEvent * Renamed logs for nvdrv * Refactor ioctl so nv_result isn't needed * /dev/nvhost-as-gpu * Fixed Log service naming, CtxObjects now u32, renamed all structs, added static_asserts to structs, used INSERT_PADDING_WORDS instead of u32s * nvdevices now uses "Ioctl" union, * IoctlGpfifoEntry now uses bit field * final changes
36 lines
916 B
C++
36 lines
916 B
C++
// Copyright 2018 yuzu emulator team
|
|
// Licensed under GPLv2 or any later version
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include "core/hle/service/nvdrv/nvdrv.h"
|
|
#include "core/hle/service/service.h"
|
|
|
|
namespace Service {
|
|
namespace Nvidia {
|
|
|
|
class NVDRV final : public ServiceFramework<NVDRV> {
|
|
public:
|
|
NVDRV(std::shared_ptr<Module> nvdrv, const char* name);
|
|
~NVDRV() = default;
|
|
|
|
private:
|
|
void Open(Kernel::HLERequestContext& ctx);
|
|
void Ioctl(Kernel::HLERequestContext& ctx);
|
|
void Close(Kernel::HLERequestContext& ctx);
|
|
void Initialize(Kernel::HLERequestContext& ctx);
|
|
void QueryEvent(Kernel::HLERequestContext& ctx);
|
|
void SetClientPID(Kernel::HLERequestContext& ctx);
|
|
void FinishInitialize(Kernel::HLERequestContext& ctx);
|
|
|
|
std::shared_ptr<Module> nvdrv;
|
|
|
|
u64 pid{};
|
|
};
|
|
|
|
} // namespace Nvidia
|
|
} // namespace Service
|