aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/vertex_shader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/vertex_shader.cpp')
-rw-r--r--src/video_core/vertex_shader.cpp12
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];