summaryrefslogtreecommitdiff
path: root/src/video_core/engines
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2018-10-18 02:38:58 -0300
committerGravatar ReinUsesLisp2018-10-23 01:07:20 -0300
commit5dfb43531ce3c02eddecba715193b0f9bb27bc37 (patch)
tree2154aeb80803b4f7fb6b0e6fc64fe02c21965802 /src/video_core/engines
parentMerge pull request #1550 from FernandoS27/fmul32 (diff)
downloadyuzu-5dfb43531ce3c02eddecba715193b0f9bb27bc37.tar.gz
yuzu-5dfb43531ce3c02eddecba715193b0f9bb27bc37.tar.xz
yuzu-5dfb43531ce3c02eddecba715193b0f9bb27bc37.zip
gl_shader_decompiler: Abstract VMAD into a video subset
Diffstat (limited to 'src/video_core/engines')
-rw-r--r--src/video_core/engines/shader_bytecode.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h
index d3095089c..bc61f953f 100644
--- a/src/video_core/engines/shader_bytecode.h
+++ b/src/video_core/engines/shader_bytecode.h
@@ -214,7 +214,7 @@ enum class IMinMaxExchange : u64 {
214 XHi = 3, 214 XHi = 3,
215}; 215};
216 216
217enum class VmadType : u64 { 217enum class VideoType : u64 {
218 Size16_Low = 0, 218 Size16_Low = 0,
219 Size16_High = 1, 219 Size16_High = 1,
220 Size32 = 2, 220 Size32 = 2,
@@ -783,6 +783,14 @@ union Instruction {
783 } psetp; 783 } psetp;
784 784
785 union { 785 union {
786 BitField<43, 4, PredCondition> cond;
787 BitField<45, 2, PredOperation> op;
788 BitField<3, 3, u64> pred3;
789 BitField<0, 3, u64> pred0;
790 BitField<39, 3, u64> pred39;
791 } vsetp;
792
793 union {
786 BitField<12, 3, u64> pred12; 794 BitField<12, 3, u64> pred12;
787 BitField<15, 1, u64> neg_pred12; 795 BitField<15, 1, u64> neg_pred12;
788 BitField<24, 2, PredOperation> cond; 796 BitField<24, 2, PredOperation> cond;
@@ -1154,15 +1162,17 @@ union Instruction {
1154 union { 1162 union {
1155 BitField<48, 1, u64> signed_a; 1163 BitField<48, 1, u64> signed_a;
1156 BitField<38, 1, u64> is_byte_chunk_a; 1164 BitField<38, 1, u64> is_byte_chunk_a;
1157 BitField<36, 2, VmadType> type_a; 1165 BitField<36, 2, VideoType> type_a;
1158 BitField<36, 2, u64> byte_height_a; 1166 BitField<36, 2, u64> byte_height_a;
1159 1167
1160 BitField<49, 1, u64> signed_b; 1168 BitField<49, 1, u64> signed_b;
1161 BitField<50, 1, u64> use_register_b; 1169 BitField<50, 1, u64> use_register_b;
1162 BitField<30, 1, u64> is_byte_chunk_b; 1170 BitField<30, 1, u64> is_byte_chunk_b;
1163 BitField<28, 2, VmadType> type_b; 1171 BitField<28, 2, VideoType> type_b;
1164 BitField<28, 2, u64> byte_height_b; 1172 BitField<28, 2, u64> byte_height_b;
1173 } video;
1165 1174
1175 union {
1166 BitField<51, 2, VmadShr> shr; 1176 BitField<51, 2, VmadShr> shr;
1167 BitField<55, 1, u64> saturate; // Saturates the result (a * b + c) 1177 BitField<55, 1, u64> saturate; // Saturates the result (a * b + c)
1168 BitField<47, 1, u64> cc; 1178 BitField<47, 1, u64> cc;