summaryrefslogtreecommitdiffstats
path: root/src/video_core/command_classes/nvdec.cpp
diff options
context:
space:
mode:
authorKelebek1 <eeeedddccc@hotmail.co.uk>2021-06-29 06:54:54 +0200
committerKelebek1 <eeeedddccc@hotmail.co.uk>2021-07-01 07:22:05 +0200
commit208a04dcffe8142070bd8136b42def6a3233bb0f (patch)
tree60814ffb191978100a259ee230989a6f255a4460 /src/video_core/command_classes/nvdec.cpp
parentMerge pull request #6529 from ReinUsesLisp/reaper-fixups (diff)
downloadyuzu-208a04dcffe8142070bd8136b42def6a3233bb0f.tar
yuzu-208a04dcffe8142070bd8136b42def6a3233bb0f.tar.gz
yuzu-208a04dcffe8142070bd8136b42def6a3233bb0f.tar.bz2
yuzu-208a04dcffe8142070bd8136b42def6a3233bb0f.tar.lz
yuzu-208a04dcffe8142070bd8136b42def6a3233bb0f.tar.xz
yuzu-208a04dcffe8142070bd8136b42def6a3233bb0f.tar.zst
yuzu-208a04dcffe8142070bd8136b42def6a3233bb0f.zip
Diffstat (limited to 'src/video_core/command_classes/nvdec.cpp')
-rw-r--r--src/video_core/command_classes/nvdec.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/video_core/command_classes/nvdec.cpp b/src/video_core/command_classes/nvdec.cpp
index e4f919afd..b5e3b70fc 100644
--- a/src/video_core/command_classes/nvdec.cpp
+++ b/src/video_core/command_classes/nvdec.cpp
@@ -8,22 +8,21 @@
namespace Tegra {
-Nvdec::Nvdec(GPU& gpu_) : gpu(gpu_), codec(std::make_unique<Codec>(gpu)) {}
+#define NVDEC_REG_INDEX(field_name) \
+ (offsetof(NvdecCommon::NvdecRegisters, field_name) / sizeof(u64))
+
+Nvdec::Nvdec(GPU& gpu_) : gpu(gpu_), state{}, codec(std::make_unique<Codec>(gpu, state)) {}
Nvdec::~Nvdec() = default;
-void Nvdec::ProcessMethod(Method method, u32 argument) {
- if (method == Method::SetVideoCodec) {
- codec->StateWrite(static_cast<u32>(method), argument);
- } else {
- codec->StateWrite(static_cast<u32>(method), static_cast<u64>(argument) << 8);
- }
+void Nvdec::ProcessMethod(u32 method, u32 argument) {
+ state.reg_array[method] = static_cast<u64>(argument) << 8;
switch (method) {
- case Method::SetVideoCodec:
+ case NVDEC_REG_INDEX(set_codec_id):
codec->SetTargetCodec(static_cast<NvdecCommon::VideoCodec>(argument));
break;
- case Method::Execute:
+ case NVDEC_REG_INDEX(execute):
Execute();
break;
}