summaryrefslogtreecommitdiff
path: root/src/video_core/engines
diff options
context:
space:
mode:
authorGravatar Subv2018-09-08 16:13:02 -0500
committerGravatar Subv2018-09-15 11:21:21 -0500
commitc878a819d79da42bfdaefb8a1dea8a452c808df6 (patch)
tree33840b83f4cdd853e05907221e7be605e7ed6a31 /src/video_core/engines
parentMerge pull request #1310 from lioncash/kernel-ns (diff)
downloadyuzu-c878a819d79da42bfdaefb8a1dea8a452c808df6.tar.gz
yuzu-c878a819d79da42bfdaefb8a1dea8a452c808df6.tar.xz
yuzu-c878a819d79da42bfdaefb8a1dea8a452c808df6.zip
Shaders: Implemented multiple-word loads and stores to and from attribute memory.
This seems to be an optimization performed by nouveau.
Diffstat (limited to 'src/video_core/engines')
-rw-r--r--src/video_core/engines/shader_bytecode.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h
index 58f2904ce..d6e2397f2 100644
--- a/src/video_core/engines/shader_bytecode.h
+++ b/src/video_core/engines/shader_bytecode.h
@@ -67,6 +67,13 @@ private:
67 u64 value{}; 67 u64 value{};
68}; 68};
69 69
70enum class AttributeSize : u64 {
71 Word = 0,
72 DoubleWord = 1,
73 TripleWord = 2,
74 QuadWord = 3,
75};
76
70union Attribute { 77union Attribute {
71 Attribute() = default; 78 Attribute() = default;
72 79
@@ -87,9 +94,10 @@ union Attribute {
87 }; 94 };
88 95
89 union { 96 union {
97 BitField<20, 10, u64> immediate;
90 BitField<22, 2, u64> element; 98 BitField<22, 2, u64> element;
91 BitField<24, 6, Index> index; 99 BitField<24, 6, Index> index;
92 BitField<47, 3, u64> size; 100 BitField<47, 3, AttributeSize> size;
93 } fmt20; 101 } fmt20;
94 102
95 union { 103 union {