summaryrefslogtreecommitdiff
path: root/src/video_core/primitive_assembly.cpp
diff options
context:
space:
mode:
authorGravatar Tony Wasserka2014-07-27 14:58:30 +0200
committerGravatar Tony Wasserka2014-08-12 13:48:56 +0200
commit9a76a2d0611fc0c35b665fb886d437e8f4d5b4df (patch)
tree3dc2277e820070ef0d13769c10892f1fd2460d13 /src/video_core/primitive_assembly.cpp
parentPica: Add vertex shader implementation. (diff)
downloadyuzu-9a76a2d0611fc0c35b665fb886d437e8f4d5b4df.tar.gz
yuzu-9a76a2d0611fc0c35b665fb886d437e8f4d5b4df.tar.xz
yuzu-9a76a2d0611fc0c35b665fb886d437e8f4d5b4df.zip
Pica: Add primitive assembly stage.
Diffstat (limited to 'src/video_core/primitive_assembly.cpp')
-rw-r--r--src/video_core/primitive_assembly.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/video_core/primitive_assembly.cpp b/src/video_core/primitive_assembly.cpp
new file mode 100644
index 000000000..b2196d13c
--- /dev/null
+++ b/src/video_core/primitive_assembly.cpp
@@ -0,0 +1,52 @@
1// Copyright 2014 Citra Emulator Project
2// Licensed under GPLv2
3// Refer to the license.txt file included.
4
5#include "pica.h"
6#include "primitive_assembly.h"
7#include "vertex_shader.h"
8
9namespace Pica {
10
11namespace PrimitiveAssembly {
12
13static OutputVertex buffer[2];
14static int buffer_index = 0; // TODO: reset this on emulation restart
15
16void SubmitVertex(OutputVertex& vtx)
17{
18 switch (registers.triangle_topology) {
19 case Regs::TriangleTopology::List:
20 case Regs::TriangleTopology::ListIndexed:
21 if (buffer_index < 2) {
22 buffer[buffer_index++] = vtx;
23 } else {
24 buffer_index = 0;
25
26 // TODO
27 // Clipper::ProcessTriangle(buffer[0], buffer[1], vtx);
28 }
29 break;
30
31 case Regs::TriangleTopology::Fan:
32 if (buffer_index == 2) {
33 buffer_index = 0;
34
35 // TODO
36 // Clipper::ProcessTriangle(buffer[0], buffer[1], vtx);
37
38 buffer[1] = vtx;
39 } else {
40 buffer[buffer_index++] = vtx;
41 }
42 break;
43
44 default:
45 ERROR_LOG(GPU, "Unknown triangle mode %x:", (int)registers.triangle_topology.Value());
46 break;
47 }
48}
49
50} // namespace
51
52} // namespace