diff options
Diffstat (limited to 'src/video_core/vertex_shader.cpp')
| -rw-r--r-- | src/video_core/vertex_shader.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/video_core/vertex_shader.cpp b/src/video_core/vertex_shader.cpp index 935fe66f0..bed5081a0 100644 --- a/src/video_core/vertex_shader.cpp +++ b/src/video_core/vertex_shader.cpp @@ -160,8 +160,8 @@ static void ProcessShaderCode(VertexShaderState& state) { const float24* src1_ = LookupSourceRegister(instr.common.GetSrc1(is_inverted) + address_offset); const float24* src2_ = LookupSourceRegister(instr.common.GetSrc2(is_inverted)); - const bool negate_src1 = (swizzle.negate_src1 != false); - const bool negate_src2 = (swizzle.negate_src2 != false); + const bool negate_src1 = ((bool)swizzle.negate_src1 != false); + const bool negate_src2 = ((bool)swizzle.negate_src2 != false); float24 src1[4] = { src1_[(int)swizzle.GetSelectorSrc1(0)], @@ -385,8 +385,8 @@ static void ProcessShaderCode(VertexShaderState& state) { // TODO: Do we need to consider swizzlers here? auto flow_control = instr.flow_control; - bool results[3] = { flow_control.refx == state.conditional_code[0], - flow_control.refy == state.conditional_code[1] }; + bool results[3] = { (bool)flow_control.refx == state.conditional_code[0], + (bool)flow_control.refy == state.conditional_code[1] }; switch (flow_control.op) { case flow_control.Or: @@ -469,6 +469,10 @@ OutputVertex RunShader(const InputVertex& input, int num_attributes) // Setup output register table OutputVertex ret; + // Zero output so that attributes which aren't output won't have denormals in them, which will + // slow us down later. + memset(&ret, 0, sizeof(ret)); + for (int i = 0; i < 7; ++i) { const auto& output_register_map = registers.vs_output_attributes[i]; |
