summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDrChat <arkolbed@gmail.com>2017-08-07 21:40:24 -0500
committerDrChat <arkolbed@gmail.com>2017-08-07 21:40:24 -0500
commit8bfe22bbd76f0a3af5a3de3ed5a5b4d29b24f651 (patch)
treeaf475c8cb9522349b34c510e2a42c78237221f98 /src
parentcfc65a01978814e349938e90e227332b2dde9265 (diff)
GPU Shader Translator: Add cases for memexport registers
Diffstat (limited to 'src')
-rw-r--r--src/xenia/gpu/shader_translator.cc27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/xenia/gpu/shader_translator.cc b/src/xenia/gpu/shader_translator.cc
index 4fbc62b83..f919d3c32 100644
--- a/src/xenia/gpu/shader_translator.cc
+++ b/src/xenia/gpu/shader_translator.cc
@@ -1130,6 +1130,16 @@ void ShaderTranslator::ParseAluVectorInstruction(
: InstructionStorageAddressingMode::kStatic;
} else if (is_vertex_shader()) {
switch (dest_num) {
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ case 36:
+ case 37:
+ // TODO: Memexport registers
+ i.result.storage_target = InstructionStorageTarget::kNone;
+ i.result.storage_index = 0;
+ break;
case 62:
i.result.storage_target = InstructionStorageTarget::kPosition;
break;
@@ -1171,9 +1181,26 @@ void ShaderTranslator::ParseAluVectorInstruction(
i.result.storage_target = InstructionStorageTarget::kColorTarget;
i.result.storage_index = 3;
break;
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ case 36:
+ case 37:
+ // TODO: Memexport registers
+ i.result.storage_target = InstructionStorageTarget::kNone;
+ i.result.storage_index = 0;
+ break;
case 61:
i.result.storage_target = InstructionStorageTarget::kDepth;
break;
+ default:
+ XELOGE(
+ "ShaderTranslator::ParseAluVectorInstruction: Unsupported write "
+ "to export %d",
+ dest_num);
+ i.result.storage_target = InstructionStorageTarget::kNone;
+ i.result.storage_index = 0;
}
}
if (op.is_export()) {