Created
June 26, 2015 22:30
-
-
Save Subv/d3a20c33e7215d1adece to your computer and use it in GitHub Desktop.
Citra patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/src/video_core/vertex_shader.cpp b/src/video_core/vertex_shader.cpp | |
| index 87006a8..cfa1d3b 100644 | |
| --- a/src/video_core/vertex_shader.cpp | |
| +++ b/src/video_core/vertex_shader.cpp | |
| @@ -103,13 +103,13 @@ static void ProcessShaderCode(VertexShaderState& state) { | |
| auto LookupSourceRegister = [&](const SourceRegister& source_reg) -> const float24* { | |
| switch (source_reg.GetRegisterType()) { | |
| case RegisterType::Input: | |
| - return state.input_register_table[source_reg.GetIndex()]; | |
| + return state.input_register_table[source_reg]; | |
| case RegisterType::Temporary: | |
| - return &state.temporary_registers[source_reg.GetIndex()].x; | |
| + return &state.temporary_registers[source_reg - 0x10].x; | |
| case RegisterType::FloatUniform: | |
| - return &uniforms.f[source_reg.GetIndex()].x; | |
| + return &uniforms.f[source_reg - 0x20].x; | |
| default: | |
| return dummy_vec4_float24; | |
| @@ -131,28 +131,28 @@ static void ProcessShaderCode(VertexShaderState& state) { | |
| const bool negate_src2 = ((bool)swizzle.negate_src2 != false); | |
| float24 src1[4] = { | |
| - src1_[(int)swizzle.GetSelectorSrc1(0)], | |
| - src1_[(int)swizzle.GetSelectorSrc1(1)], | |
| - src1_[(int)swizzle.GetSelectorSrc1(2)], | |
| - src1_[(int)swizzle.GetSelectorSrc1(3)], | |
| + src1_[(int)swizzle.src1_selector_0.Value()], | |
| + src1_[(int)swizzle.src1_selector_1.Value()], | |
| + src1_[(int)swizzle.src1_selector_2.Value()], | |
| + src1_[(int)swizzle.src1_selector_3.Value()], | |
| }; | |
| if (negate_src1) { | |
| - src1[0] = src1[0] * float24::FromFloat32(-1); | |
| - src1[1] = src1[1] * float24::FromFloat32(-1); | |
| - src1[2] = src1[2] * float24::FromFloat32(-1); | |
| - src1[3] = src1[3] * float24::FromFloat32(-1); | |
| + src1[0] = -src1[0]; | |
| + src1[1] = -src1[1]; | |
| + src1[2] = -src1[2]; | |
| + src1[3] = -src1[3]; | |
| } | |
| float24 src2[4] = { | |
| - src2_[(int)swizzle.GetSelectorSrc2(0)], | |
| - src2_[(int)swizzle.GetSelectorSrc2(1)], | |
| - src2_[(int)swizzle.GetSelectorSrc2(2)], | |
| - src2_[(int)swizzle.GetSelectorSrc2(3)], | |
| + src2_[(int)swizzle.src2_selector_0.Value()], | |
| + src2_[(int)swizzle.src2_selector_1.Value()], | |
| + src2_[(int)swizzle.src2_selector_2.Value()], | |
| + src2_[(int)swizzle.src2_selector_3.Value()], | |
| }; | |
| if (negate_src2) { | |
| - src2[0] = src2[0] * float24::FromFloat32(-1); | |
| - src2[1] = src2[1] * float24::FromFloat32(-1); | |
| - src2[2] = src2[2] * float24::FromFloat32(-1); | |
| - src2[3] = src2[3] * float24::FromFloat32(-1); | |
| + src2[0] = -src2[0]; | |
| + src2[1] = -src2[1]; | |
| + src2[2] = -src2[2]; | |
| + src2[3] = -src2[3]; | |
| } | |
| float24* dest = (instr.common.dest.Value() < 0x10) ? &state.output_registers[instr.common.dest.Value().GetIndex()][0] | |
| @@ -360,40 +360,40 @@ static void ProcessShaderCode(VertexShaderState& state) { | |
| const bool negate_src3 = ((bool)swizzle.negate_src3 != false); | |
| float24 src1[4] = { | |
| - src1_[(int)swizzle.GetSelectorSrc1(0)], | |
| - src1_[(int)swizzle.GetSelectorSrc1(1)], | |
| - src1_[(int)swizzle.GetSelectorSrc1(2)], | |
| - src1_[(int)swizzle.GetSelectorSrc1(3)], | |
| + src1_[(int)swizzle.src1_selector_0.Value()], | |
| + src1_[(int)swizzle.src1_selector_1.Value()], | |
| + src1_[(int)swizzle.src1_selector_2.Value()], | |
| + src1_[(int)swizzle.src1_selector_3.Value()], | |
| }; | |
| if (negate_src1) { | |
| - src1[0] = src1[0] * float24::FromFloat32(-1); | |
| - src1[1] = src1[1] * float24::FromFloat32(-1); | |
| - src1[2] = src1[2] * float24::FromFloat32(-1); | |
| - src1[3] = src1[3] * float24::FromFloat32(-1); | |
| + src1[0] = -src1[0]; | |
| + src1[1] = -src1[1]; | |
| + src1[2] = -src1[2]; | |
| + src1[3] = -src1[3]; | |
| } | |
| float24 src2[4] = { | |
| - src2_[(int)swizzle.GetSelectorSrc2(0)], | |
| - src2_[(int)swizzle.GetSelectorSrc2(1)], | |
| - src2_[(int)swizzle.GetSelectorSrc2(2)], | |
| - src2_[(int)swizzle.GetSelectorSrc2(3)], | |
| + src2_[(int)swizzle.src2_selector_0.Value()], | |
| + src2_[(int)swizzle.src2_selector_1.Value()], | |
| + src2_[(int)swizzle.src2_selector_2.Value()], | |
| + src2_[(int)swizzle.src2_selector_3.Value()], | |
| }; | |
| if (negate_src2) { | |
| - src2[0] = src2[0] * float24::FromFloat32(-1); | |
| - src2[1] = src2[1] * float24::FromFloat32(-1); | |
| - src2[2] = src2[2] * float24::FromFloat32(-1); | |
| - src2[3] = src2[3] * float24::FromFloat32(-1); | |
| + src2[0] = -src2[0]; | |
| + src2[1] = -src2[1]; | |
| + src2[2] = -src2[2]; | |
| + src2[3] = -src2[3]; | |
| } | |
| float24 src3[4] = { | |
| - src3_[(int)swizzle.GetSelectorSrc3(0)], | |
| - src3_[(int)swizzle.GetSelectorSrc3(1)], | |
| - src3_[(int)swizzle.GetSelectorSrc3(2)], | |
| - src3_[(int)swizzle.GetSelectorSrc3(3)], | |
| + src3_[(int)swizzle.src3_selector_0.Value()], | |
| + src3_[(int)swizzle.src3_selector_1.Value()], | |
| + src3_[(int)swizzle.src3_selector_2.Value()], | |
| + src3_[(int)swizzle.src3_selector_3.Value()], | |
| }; | |
| if (negate_src3) { | |
| - src3[0] = src3[0] * float24::FromFloat32(-1); | |
| - src3[1] = src3[1] * float24::FromFloat32(-1); | |
| - src3[2] = src3[2] * float24::FromFloat32(-1); | |
| - src3[3] = src3[3] * float24::FromFloat32(-1); | |
| + src3[0] = -src3[0]; | |
| + src3[1] = -src3[1]; | |
| + src3[2] = -src3[2]; | |
| + src3[3] = -src3[3]; | |
| } | |
| float24* dest = (instr.mad.dest.Value() < 0x10) ? &state.output_registers[instr.mad.dest.Value().GetIndex()][0] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment