From fa46a9eaa5c90fd4841fe24d47944b638ea25d4c Mon Sep 17 00:00:00 2001 From: espes Date: Sat, 23 Nov 2013 11:17:30 +1100 Subject: [PATCH] nv2a_psh tweaks --- hw/xbox/nv2a_psh.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/hw/xbox/nv2a_psh.c b/hw/xbox/nv2a_psh.c index f2b918d742..1775eab0b1 100644 --- a/hw/xbox/nv2a_psh.c +++ b/hw/xbox/nv2a_psh.c @@ -241,7 +241,8 @@ static QString* get_var(struct PixelShader *ps, int reg, bool is_dest) } break; case PS_REGISTER_C0: - if (ps->flags & PS_COMBINERCOUNT_UNIQUE_C0) { + /* TODO: should the final stage really always be unique? */ + if (ps->flags & PS_COMBINERCOUNT_UNIQUE_C0 || ps->cur_stage == 8) { QString *reg = qstring_from_fmt("c_%d_%d", ps->cur_stage, 0); add_const_ref(ps, qstring_get_str(reg)); if (ps->cur_stage == 8) { @@ -257,7 +258,7 @@ static QString* get_var(struct PixelShader *ps, int reg, bool is_dest) } break; case PS_REGISTER_C1: - if (ps->flags & PS_COMBINERCOUNT_UNIQUE_C1) { + if (ps->flags & PS_COMBINERCOUNT_UNIQUE_C1 || ps->cur_stage == 8) { QString *reg = qstring_from_fmt("c_%d_%d", ps->cur_stage, 1); add_const_ref(ps, qstring_get_str(reg)); if (ps->cur_stage == 8) { @@ -274,7 +275,7 @@ static QString* get_var(struct PixelShader *ps, int reg, bool is_dest) break; case PS_REGISTER_FOG: // TODO //return qstring_from_str("fog"); - return qstring_from_str("0.0"); + return qstring_from_str("vec4(1.0)"); case PS_REGISTER_V0: return qstring_from_str("v0"); case PS_REGISTER_V1: @@ -690,7 +691,7 @@ QString *psh_translate(uint32_t combiner_control, uint32_t shader_stage_program, struct InputInfo blank; ps.final_input.enabled = final_inputs_0 || final_inputs_1; if (ps.final_input.enabled) { - parse_combiner_inputs(final_inputs_0, &ps.final_input.a, &ps.final_input.a, + parse_combiner_inputs(final_inputs_0, &ps.final_input.a, &ps.final_input.b, &ps.final_input.c, &ps.final_input.d); parse_combiner_inputs(final_inputs_1, &ps.final_input.e, &ps.final_input.f, &ps.final_input.g, &blank);