diff --git a/src/xenia/gpu/d3d11/d3d11_shader_translator.cc b/src/xenia/gpu/d3d11/d3d11_shader_translator.cc index 32fd1aad5..213608de9 100644 --- a/src/xenia/gpu/d3d11/d3d11_shader_translator.cc +++ b/src/xenia/gpu/d3d11/d3d11_shader_translator.cc @@ -289,6 +289,7 @@ int D3D11ShaderTranslator::TranslatePixelShader( " float4 r%d = c[%d];\n", n, n + 256); } append(" float4 t;\n"); + append(" float s;\n"); // scalar result (used for RETAIN_PREV) // Bring registers local. if (alloc_counts.params) { @@ -1027,6 +1028,11 @@ int D3D11ShaderTranslator::TranslateALU_SUB_CONST_1(const instr_alu_t& alu) { return TranslateALU_SUB_CONST_0(alu); } +int D3D11ShaderTranslator::TranslateALU_RETAIN_PREV(const instr_alu_t& alu) { + // TODO(benvanik): pull out prev value in s. + return 1; +} + namespace { typedef int (D3D11ShaderTranslator::*TranslateFn)(const instr_alu_t& alu); diff --git a/src/xenia/gpu/d3d11/d3d11_shader_translator.h b/src/xenia/gpu/d3d11/d3d11_shader_translator.h index 1f8823cc1..72be1aee8 100644 --- a/src/xenia/gpu/d3d11/d3d11_shader_translator.h +++ b/src/xenia/gpu/d3d11/d3d11_shader_translator.h @@ -105,6 +105,7 @@ private: int TranslateALU_ADD_CONST_1(const xenos::instr_alu_t& alu); int TranslateALU_SUB_CONST_0(const xenos::instr_alu_t& alu); int TranslateALU_SUB_CONST_1(const xenos::instr_alu_t& alu); + int TranslateALU_RETAIN_PREV(const xenos::instr_alu_t& alu); void PrintDestFecth(uint32_t dst_reg, uint32_t dst_swiz); void AppendFetchDest(uint32_t dst_reg, uint32_t dst_swiz);