From 34692ab826abc8f8faa61bdb2280b742424528f1 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sat, 7 Dec 2013 15:14:29 -0500 Subject: Remove unnecessary Src/ folders --- Source/Core/VideoBackends/Software/SetupUnit.cpp | 176 +++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 Source/Core/VideoBackends/Software/SetupUnit.cpp (limited to 'Source/Core/VideoBackends/Software/SetupUnit.cpp') diff --git a/Source/Core/VideoBackends/Software/SetupUnit.cpp b/Source/Core/VideoBackends/Software/SetupUnit.cpp new file mode 100644 index 0000000000..b08584e0a9 --- /dev/null +++ b/Source/Core/VideoBackends/Software/SetupUnit.cpp @@ -0,0 +1,176 @@ +// Copyright 2013 Dolphin Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#include "SetupUnit.h" + +#include "CPMemLoader.h" +#include "OpcodeDecoder.h" +#include "SWStatistics.h" +#include "Clipper.h" + + +void SetupUnit::Init(u8 primitiveType) +{ + m_PrimType = primitiveType; + + m_VertexCounter = 0; + m_VertPointer[0] = &m_Vertices[0]; + m_VertPointer[1] = &m_Vertices[1]; + m_VertPointer[2] = &m_Vertices[2]; + m_VertWritePointer = m_VertPointer[0]; +} + +void SetupUnit::SetupVertex() +{ + switch(m_PrimType) + { + case GX_DRAW_QUADS: + SetupQuad(); + break; + case GX_DRAW_TRIANGLES: + SetupTriangle(); + break; + case GX_DRAW_TRIANGLE_STRIP: + SetupTriStrip(); + break; + case GX_DRAW_TRIANGLE_FAN: + SetupTriFan(); + break; + case GX_DRAW_LINES: + SetupLine(); + break; + case GX_DRAW_LINE_STRIP: + SetupLineStrip(); + break; + case GX_DRAW_POINTS: + SetupPoint(); + break; + } +} + + + void SetupUnit::SetupQuad() + { + if (m_VertexCounter < 2) + { + m_VertexCounter++; + m_VertWritePointer = m_VertPointer[m_VertexCounter]; + return; + } + + Clipper::ProcessTriangle(m_VertPointer[0], m_VertPointer[1], m_VertPointer[2]); + + m_VertexCounter++; + m_VertexCounter &= 3; + m_VertWritePointer = &m_Vertices[m_VertexCounter & 1]; + OutputVertexData* temp = m_VertPointer[1]; + m_VertPointer[1] = m_VertPointer[2]; + m_VertPointer[2] = temp; +} + +void SetupUnit::SetupTriangle() +{ + if (m_VertexCounter < 2) + { + m_VertexCounter++; + m_VertWritePointer = m_VertPointer[m_VertexCounter]; + return; + } + + Clipper::ProcessTriangle(m_VertPointer[0], m_VertPointer[1], m_VertPointer[2]); + + m_VertexCounter = 0; + m_VertWritePointer = m_VertPointer[0]; +} + +void SetupUnit::SetupTriStrip() +{ + if (m_VertexCounter < 2) + { + m_VertexCounter++; + m_VertWritePointer = m_VertPointer[m_VertexCounter]; + return; + } + + Clipper::ProcessTriangle(m_VertPointer[0], m_VertPointer[1], m_VertPointer[2]); + + m_VertexCounter++; + m_VertPointer[2 - (m_VertexCounter & 1)] = m_VertPointer[0]; + m_VertWritePointer = m_VertPointer[0]; + + m_VertPointer[0] = &m_Vertices[(m_VertexCounter + 1) % 3]; +} + +void SetupUnit::SetupTriFan() +{ + if (m_VertexCounter < 2) + { + m_VertexCounter++; + m_VertWritePointer = m_VertPointer[m_VertexCounter]; + return; + } + + Clipper::ProcessTriangle(m_VertPointer[0], m_VertPointer[1], m_VertPointer[2]); + + m_VertexCounter++; + m_VertPointer[1] = m_VertPointer[2]; + m_VertPointer[2] = &m_Vertices[2 - (m_VertexCounter & 1)]; + + m_VertWritePointer = m_VertPointer[2]; +} + +void SetupUnit::SetupLine() +{ + if (m_VertexCounter < 1) + { + m_VertexCounter++; + m_VertWritePointer = m_VertPointer[m_VertexCounter]; + return; + } + + Clipper::ProcessLine(m_VertPointer[0], m_VertPointer[1]); + + m_VertexCounter = 0; + m_VertWritePointer = m_VertPointer[0]; +} + +void SetupUnit::SetupLineStrip() +{ + if (m_VertexCounter < 1) + { + m_VertexCounter++; + m_VertWritePointer = m_VertPointer[m_VertexCounter]; + return; + } + + m_VertexCounter++; + + Clipper::ProcessLine(m_VertPointer[0], m_VertPointer[1]); + + m_VertWritePointer = m_VertPointer[0]; + + m_VertPointer[0] = m_VertPointer[1]; + m_VertPointer[1] = &m_Vertices[m_VertexCounter & 1]; +} + +void SetupUnit::SetupPoint() +{} + +void SetupUnit::DoState(PointerWrap &p) +{ + // TODO: some or all of this is making the save states stop working once dolphin is closed...sometimes (usually) + // I have no idea what specifically is wrong, or if this is even important. Disabling it doesn't seem to make any noticible difference... +/* p.Do(m_PrimType); + p.Do(m_VertexCounter); + for (int i = 0; i < 3; ++i) + m_Vertices[i].DoState(p); + + if (p.GetMode() == PointerWrap::MODE_READ) + { + m_VertPointer[0] = &m_Vertices[0]; + m_VertPointer[1] = &m_Vertices[1]; + m_VertPointer[2] = &m_Vertices[2]; + m_VertWritePointer = m_VertPointer[0]; + }*/ +} -- cgit v1.2.3 From 2afe2152712981e21d6bda6f029292ed2b1cf91e Mon Sep 17 00:00:00 2001 From: Lioncash Date: Mon, 17 Feb 2014 05:18:15 -0500 Subject: Convert all includes to relative paths. --- Source/Core/VideoBackends/Software/SetupUnit.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'Source/Core/VideoBackends/Software/SetupUnit.cpp') diff --git a/Source/Core/VideoBackends/Software/SetupUnit.cpp b/Source/Core/VideoBackends/Software/SetupUnit.cpp index b08584e0a9..c324dcf767 100644 --- a/Source/Core/VideoBackends/Software/SetupUnit.cpp +++ b/Source/Core/VideoBackends/Software/SetupUnit.cpp @@ -2,12 +2,11 @@ // Licensed under GPLv2 // Refer to the license.txt file included. -#include "SetupUnit.h" - -#include "CPMemLoader.h" -#include "OpcodeDecoder.h" -#include "SWStatistics.h" -#include "Clipper.h" +#include "VideoBackends/Software/Clipper.h" +#include "VideoBackends/Software/CPMemLoader.h" +#include "VideoBackends/Software/OpcodeDecoder.h" +#include "VideoBackends/Software/SetupUnit.h" +#include "VideoBackends/Software/SWStatistics.h" void SetupUnit::Init(u8 primitiveType) -- cgit v1.2.3 From 31cfc73a09a8685cbab20502b4bc132e98e2feb5 Mon Sep 17 00:00:00 2001 From: Matthew Parlane Date: Tue, 11 Mar 2014 00:30:55 +1300 Subject: Fixes spacing for "for", "while", "switch" and "if" Also moved && and || to ends of lines instead of start. Fixed misc vertical alignments and some { needed newlining. --- Source/Core/VideoBackends/Software/SetupUnit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/VideoBackends/Software/SetupUnit.cpp') diff --git a/Source/Core/VideoBackends/Software/SetupUnit.cpp b/Source/Core/VideoBackends/Software/SetupUnit.cpp index c324dcf767..560e1d4863 100644 --- a/Source/Core/VideoBackends/Software/SetupUnit.cpp +++ b/Source/Core/VideoBackends/Software/SetupUnit.cpp @@ -22,7 +22,7 @@ void SetupUnit::Init(u8 primitiveType) void SetupUnit::SetupVertex() { - switch(m_PrimType) + switch (m_PrimType) { case GX_DRAW_QUADS: SetupQuad(); -- cgit v1.2.3 From 39d439fc48ef44d0a28113a10cb796cd8989f944 Mon Sep 17 00:00:00 2001 From: magumagu Date: Thu, 8 May 2014 16:53:18 -0700 Subject: Opcode decoding: handle missing opcodes 0x88 etc. Hardware testing shows that they do the same thing as the 0x80 family of opcodes: they draw quads. --- Source/Core/VideoBackends/Software/SetupUnit.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'Source/Core/VideoBackends/Software/SetupUnit.cpp') diff --git a/Source/Core/VideoBackends/Software/SetupUnit.cpp b/Source/Core/VideoBackends/Software/SetupUnit.cpp index 560e1d4863..da62490c50 100644 --- a/Source/Core/VideoBackends/Software/SetupUnit.cpp +++ b/Source/Core/VideoBackends/Software/SetupUnit.cpp @@ -25,6 +25,7 @@ void SetupUnit::SetupVertex() switch (m_PrimType) { case GX_DRAW_QUADS: + case GX_DRAW_QUADS_2: SetupQuad(); break; case GX_DRAW_TRIANGLES: -- cgit v1.2.3 From 9b82d720705c8e6fd34c336a92dde5a8b10471b9 Mon Sep 17 00:00:00 2001 From: magumagu Date: Sat, 17 May 2014 11:55:32 -0700 Subject: Video backends: warn on usage of GL_DRAW_QUADS_2. It's not normally used, so if it shows up, it could indicate a CPU emulation bug. --- Source/Core/VideoBackends/Software/SetupUnit.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'Source/Core/VideoBackends/Software/SetupUnit.cpp') diff --git a/Source/Core/VideoBackends/Software/SetupUnit.cpp b/Source/Core/VideoBackends/Software/SetupUnit.cpp index da62490c50..171350db60 100644 --- a/Source/Core/VideoBackends/Software/SetupUnit.cpp +++ b/Source/Core/VideoBackends/Software/SetupUnit.cpp @@ -25,7 +25,10 @@ void SetupUnit::SetupVertex() switch (m_PrimType) { case GX_DRAW_QUADS: + SetupQuad(); + break; case GX_DRAW_QUADS_2: + WARN_LOG(VIDEO, "Non-standard primitive drawing command GL_DRAW_QUADS_2"); SetupQuad(); break; case GX_DRAW_TRIANGLES: -- cgit v1.2.3 From 522a5c35ad97718478ccdc75ae519ce910dd6dcb Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 29 Jul 2014 20:55:07 -0400 Subject: Convert some more header inclusions into forward declarations --- Source/Core/VideoBackends/Software/SetupUnit.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'Source/Core/VideoBackends/Software/SetupUnit.cpp') diff --git a/Source/Core/VideoBackends/Software/SetupUnit.cpp b/Source/Core/VideoBackends/Software/SetupUnit.cpp index 171350db60..37e45f9f28 100644 --- a/Source/Core/VideoBackends/Software/SetupUnit.cpp +++ b/Source/Core/VideoBackends/Software/SetupUnit.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2 // Refer to the license.txt file included. +#include "Common/ChunkFile.h" #include "VideoBackends/Software/Clipper.h" #include "VideoBackends/Software/CPMemLoader.h" #include "VideoBackends/Software/OpcodeDecoder.h" -- cgit v1.2.3 From 34eb0c6e1c4a0adce1fc4f2b2125eab5591a5d27 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 10 Aug 2014 21:51:55 -0400 Subject: Software: Fix over-indentation of SetupQuad() --- Source/Core/VideoBackends/Software/SetupUnit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Source/Core/VideoBackends/Software/SetupUnit.cpp') diff --git a/Source/Core/VideoBackends/Software/SetupUnit.cpp b/Source/Core/VideoBackends/Software/SetupUnit.cpp index 37e45f9f28..dfa8e5e423 100644 --- a/Source/Core/VideoBackends/Software/SetupUnit.cpp +++ b/Source/Core/VideoBackends/Software/SetupUnit.cpp @@ -54,8 +54,8 @@ void SetupUnit::SetupVertex() } - void SetupUnit::SetupQuad() - { +void SetupUnit::SetupQuad() +{ if (m_VertexCounter < 2) { m_VertexCounter++; -- cgit v1.2.3 From cb86db7b68481edf129a4bfcf6cd44a9a0f32ac8 Mon Sep 17 00:00:00 2001 From: Stevoisiak Date: Sun, 11 Jan 2015 00:17:29 -0500 Subject: Minor consistency changes Mostly small changes, like capitalization and spelling --- Source/Core/VideoBackends/Software/SetupUnit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/VideoBackends/Software/SetupUnit.cpp') diff --git a/Source/Core/VideoBackends/Software/SetupUnit.cpp b/Source/Core/VideoBackends/Software/SetupUnit.cpp index dfa8e5e423..2b47f15387 100644 --- a/Source/Core/VideoBackends/Software/SetupUnit.cpp +++ b/Source/Core/VideoBackends/Software/SetupUnit.cpp @@ -163,7 +163,7 @@ void SetupUnit::SetupPoint() void SetupUnit::DoState(PointerWrap &p) { - // TODO: some or all of this is making the save states stop working once dolphin is closed...sometimes (usually) + // TODO: some or all of this is making the save states stop working once Dolphin is closed...sometimes (usually) // I have no idea what specifically is wrong, or if this is even important. Disabling it doesn't seem to make any noticible difference... /* p.Do(m_PrimType); p.Do(m_VertexCounter); -- cgit v1.2.3 From cefcb0ace9d363b3679b4e93bcc9ec05f1e5f4f8 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Mon, 18 May 2015 01:08:10 +0200 Subject: Update license headers to GPLv2+ --- Source/Core/VideoBackends/Software/SetupUnit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/VideoBackends/Software/SetupUnit.cpp') diff --git a/Source/Core/VideoBackends/Software/SetupUnit.cpp b/Source/Core/VideoBackends/Software/SetupUnit.cpp index 2b47f15387..bb99d3f6d1 100644 --- a/Source/Core/VideoBackends/Software/SetupUnit.cpp +++ b/Source/Core/VideoBackends/Software/SetupUnit.cpp @@ -1,5 +1,5 @@ // Copyright 2013 Dolphin Emulator Project -// Licensed under GPLv2 +// Licensed under GPLv2+ // Refer to the license.txt file included. #include "Common/ChunkFile.h" -- cgit v1.2.3 From 30ebb2459eb97ba544547183854775df8460b475 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Sun, 24 May 2015 06:55:12 +0200 Subject: Set copyright year to when a file was created --- Source/Core/VideoBackends/Software/SetupUnit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/VideoBackends/Software/SetupUnit.cpp') diff --git a/Source/Core/VideoBackends/Software/SetupUnit.cpp b/Source/Core/VideoBackends/Software/SetupUnit.cpp index bb99d3f6d1..e8604d78ee 100644 --- a/Source/Core/VideoBackends/Software/SetupUnit.cpp +++ b/Source/Core/VideoBackends/Software/SetupUnit.cpp @@ -1,4 +1,4 @@ -// Copyright 2013 Dolphin Emulator Project +// Copyright 2009 Dolphin Emulator Project // Licensed under GPLv2+ // Refer to the license.txt file included. -- cgit v1.2.3