diff options
author | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-03-28 00:47:00 +0100 |
---|---|---|
committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-07-23 03:51:24 +0200 |
commit | 51475e21ba5e9a17730a2b5a868dc73d53db9bc1 (patch) | |
tree | 75b91429b808db9640a248e886fcb6cea1cef8e8 /src/shader_recompiler/frontend/maxwell/translate/impl/video_helper.cpp | |
parent | shader: Add missing I2I exception when CC is used (diff) | |
download | yuzu-51475e21ba5e9a17730a2b5a868dc73d53db9bc1.tar yuzu-51475e21ba5e9a17730a2b5a868dc73d53db9bc1.tar.gz yuzu-51475e21ba5e9a17730a2b5a868dc73d53db9bc1.tar.bz2 yuzu-51475e21ba5e9a17730a2b5a868dc73d53db9bc1.tar.lz yuzu-51475e21ba5e9a17730a2b5a868dc73d53db9bc1.tar.xz yuzu-51475e21ba5e9a17730a2b5a868dc73d53db9bc1.tar.zst yuzu-51475e21ba5e9a17730a2b5a868dc73d53db9bc1.zip |
Diffstat (limited to 'src/shader_recompiler/frontend/maxwell/translate/impl/video_helper.cpp')
-rw-r--r-- | src/shader_recompiler/frontend/maxwell/translate/impl/video_helper.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/video_helper.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/video_helper.cpp new file mode 100644 index 000000000..e1f4174cf --- /dev/null +++ b/src/shader_recompiler/frontend/maxwell/translate/impl/video_helper.cpp @@ -0,0 +1,30 @@ +// Copyright 2021 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "shader_recompiler/exception.h" +#include "shader_recompiler/frontend/maxwell/translate/impl/video_helper.h" + +namespace Shader::Maxwell { + +IR::U32 ExtractVideoOperandValue(IR::IREmitter& ir, const IR::U32& value, VideoWidth width, + u32 selector, bool is_signed) { + switch (width) { + case VideoWidth::Byte: + case VideoWidth::Unknown: + return ir.BitFieldExtract(value, ir.Imm32(selector * 8), ir.Imm32(8), is_signed); + case VideoWidth::Short: + return ir.BitFieldExtract(value, ir.Imm32(selector * 16), ir.Imm32(16), is_signed); + case VideoWidth::Word: + return value; + default: + throw NotImplementedException("Unknown VideoWidth {}", width); + } +} + +VideoWidth GetVideoSourceWidth(VideoWidth width, bool is_immediate) { + // immediates must be 16-bit format. + return is_immediate ? VideoWidth::Short : width; +} + +} // namespace Shader::Maxwell |