1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
`include "gfx/gfx_defs.sv"
module gfx
(
input logic clk,
rst_n,
input cmd_addr cmd_address,
input logic cmd_read,
cmd_write,
input cmd_word cmd_writedata,
output cmd_word cmd_readdata,
input logic mem_waitrequest,
mem_readdatavalid,
input vram_word mem_readdata,
output vram_byte_addr mem_address,
output logic mem_read,
mem_write,
output vram_word mem_writedata,
input logic scan_ready,
output logic scan_valid,
scan_endofpacket,
scan_startofpacket,
output rgb30 scan_data
);
logic enable_clear, program_start, start_clear, swap_buffers;
rgb24 clear_color;
cmd_word program_header_base, program_header_size;
gfx_cmd cmd
(
.*
);
logic batch_read, fetch_read;
vram_addr batch_address, fetch_address;
gfx_sp sp
(
.*
);
logic frag_mask, scan_mask;
gfx_masks masks
(
.frag_mask_read_addr(),
.*
);
logic raster_ready;
fixed_tri raster_ws;
bary_lanes barys;
paint_lanes raster_valid;
frag_xy_lanes fragments;
gfx_raster raster
(
.ws(raster_ws),
.in_ready(raster_ready),
.in_valid(0), //TODO
.out_ready(funnel_ready),
.out_valid(raster_valid),
.vertex_a(), //TODO
.vertex_b(), //TODO
.vertex_c(), //TODO
.*
);
logic frag_mask_set, frag_mask_write, frag_wait;
linear_coord frag_mask_write_addr;
gfx_clear clear
(
.*
);
logic funnel_ready, funnel_valid;
frag_xy frag;
fixed_tri frag_bary, frag_ws;
gfx_funnel funnel
(
.in_ready(funnel_ready),
.in_valid(raster_valid),
.out_ready(frag_ready),
.out_valid(funnel_valid),
.*
);
logic frag_ready, frag_valid;
frag_paint frag_out;
gfx_frag frag_
(
.out(frag_out),
.ws(frag_ws),
.bary(frag_bary),
.in_ready(frag_ready),
.in_valid(funnel_valid),
.out_ready(rop_ready),
.out_valid(frag_valid),
.*
);
logic rop_mask_assert, rop_ready, rop_write;
vram_word rop_writedata;
half_coord rop_address;
linear_coord rop_mask_addr;
gfx_rop rop
(
.in(frag_out),
.in_ready(rop_ready),
.in_valid(frag_valid),
.mask_addr(rop_mask_addr),
.mask_assert(rop_mask_assert),
.*
);
logic batch_readdatavalid, fb_readdatavalid, fetch_readdatavalid,
batch_waitrequest, fb_waitrequest, fetch_waitrequest, rop_waitrequest;
vram_word batch_readdata, fb_readdata, fetch_readdata;
gfx_mem mem
(
.*
);
logic fb_read, vsync;
half_coord fb_address;
linear_coord scan_mask_addr;
gfx_scanout scanout
(
.mask(scan_mask),
.mask_addr(scan_mask_addr),
.*
);
endmodule
|