diff options
| author | 2018-10-18 02:38:58 -0300 | |
|---|---|---|
| committer | 2018-10-23 01:07:20 -0300 | |
| commit | 5dfb43531ce3c02eddecba715193b0f9bb27bc37 (patch) | |
| tree | 2154aeb80803b4f7fb6b0e6fc64fe02c21965802 /src/video_core/engines | |
| parent | Merge pull request #1550 from FernandoS27/fmul32 (diff) | |
| download | yuzu-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.h | 16 |
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 | ||
| 217 | enum class VmadType : u64 { | 217 | enum 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; |