summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/frontend
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-04-14 06:04:59 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:27 +0200
commitb126987c59964d81ae3705ad7ad6c0ace8714e19 (patch)
treed6384469b9450431de5679dcd12fa2ce18e9a8dd /src/shader_recompiler/frontend
parentshader: Implement early Z tests (diff)
downloadyuzu-b126987c59964d81ae3705ad7ad6c0ace8714e19.tar
yuzu-b126987c59964d81ae3705ad7ad6c0ace8714e19.tar.gz
yuzu-b126987c59964d81ae3705ad7ad6c0ace8714e19.tar.bz2
yuzu-b126987c59964d81ae3705ad7ad6c0ace8714e19.tar.lz
yuzu-b126987c59964d81ae3705ad7ad6c0ace8714e19.tar.xz
yuzu-b126987c59964d81ae3705ad7ad6c0ace8714e19.tar.zst
yuzu-b126987c59964d81ae3705ad7ad6c0ace8714e19.zip
Diffstat (limited to 'src/shader_recompiler/frontend')
-rw-r--r--src/shader_recompiler/frontend/ir/attribute.cpp7
-rw-r--r--src/shader_recompiler/frontend/ir/attribute.h2
2 files changed, 9 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/attribute.cpp b/src/shader_recompiler/frontend/ir/attribute.cpp
index 7993e5c43..4d0b8b8e5 100644
--- a/src/shader_recompiler/frontend/ir/attribute.cpp
+++ b/src/shader_recompiler/frontend/ir/attribute.cpp
@@ -20,6 +20,13 @@ u32 GenericAttributeIndex(Attribute attribute) {
return (static_cast<u32>(attribute) - static_cast<u32>(Attribute::Generic0X)) / 4u;
}
+u32 GenericAttributeElement(Attribute attribute) {
+ if (!IsGeneric(attribute)) {
+ throw InvalidArgument("Attribute is not generic {}", attribute);
+ }
+ return static_cast<u32>(attribute) % 4;
+}
+
std::string NameOf(Attribute attribute) {
switch (attribute) {
case Attribute::PrimitiveId:
diff --git a/src/shader_recompiler/frontend/ir/attribute.h b/src/shader_recompiler/frontend/ir/attribute.h
index 34ec7e0cd..8bf2ddf30 100644
--- a/src/shader_recompiler/frontend/ir/attribute.h
+++ b/src/shader_recompiler/frontend/ir/attribute.h
@@ -226,6 +226,8 @@ enum class Attribute : u64 {
[[nodiscard]] u32 GenericAttributeIndex(Attribute attribute);
+[[nodiscard]] u32 GenericAttributeElement(Attribute attribute);
+
[[nodiscard]] std::string NameOf(Attribute attribute);
} // namespace Shader::IR