summaryrefslogtreecommitdiff
path: root/rtl/gfx/gfx_coarse.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-11-10 01:08:39 -0600
committerAlejandro Soto <alejandro@34project.org>2023-11-10 01:48:40 -0600
commit40b59e4cd26b7a3a6d0ff14d8480c172ce3fa845 (patch)
tree0a396a366145d8ea1f09e412b6fa60a7c1e79a71 /rtl/gfx/gfx_coarse.sv
parent881778cc7dbe1f01d343ee1ca4eea1b59c5eda3a (diff)
rtl/gfx: rename gfx_{coarse,fine} -> gfx_raster_{coarse,fine}
Diffstat (limited to 'rtl/gfx/gfx_coarse.sv')
-rw-r--r--rtl/gfx/gfx_coarse.sv122
1 files changed, 0 insertions, 122 deletions
diff --git a/rtl/gfx/gfx_coarse.sv b/rtl/gfx/gfx_coarse.sv
deleted file mode 100644
index 840c647..0000000
--- a/rtl/gfx/gfx_coarse.sv
+++ /dev/null
@@ -1,122 +0,0 @@
-`include "gfx/gfx_defs.sv"
-
-module gfx_coarse
-(
- input logic clk,
- rst_n,
-
- input raster_xy pos_ref,
- input coarse_dim span_x,
- span_y,
- input fixed_tri edge_refs,
- coarse_x_offsets,
- coarse_y_offsets,
- coarse_test_offsets,
-
- input logic in_valid,
- output logic in_ready,
-
- input logic out_ready,
- output logic out_valid,
-
- output raster_xy pos,
- output fixed_tri corners
-);
-
- fixed reference_x;
- logic end_x, end_y, running, send, send_valid, skid_ready, stall;
- raster_xy next_pos;
- fixed_tri edge_fns, edge_tests, edge_vert, edge_vert_next;
- coarse_dim stride_x, stride_y, width;
- logic[2:0] edge_signs;
-
- struct packed
- {
- raster_xy pos;
- fixed_tri corners;
- } out, skid_out;
-
- assign pos = skid_out.pos;
- assign corners = skid_out.corners;
-
- assign end_x = stride_x == 0;
- assign end_y = stride_y == 0;
-
- assign send = &edge_signs && send_valid;
- assign in_ready = skid_ready && !running;
-
- gfx_skid_buf #(.WIDTH($bits(out))) skid_buf
- (
- .in(out),
- .out(skid_out),
- .*
- );
-
- gfx_skid_flow skid_flow
- (
- .in_valid(send),
- .in_ready(skid_ready),
- .*
- );
-
- always_comb
- for (integer i = 0; i < 3; ++i) begin
- edge_tests[i] = edge_fns[i] + coarse_test_offsets[i];
- edge_vert_next[i] = edge_vert[i] + coarse_y_offsets[i];
- end
-
- always_ff @(posedge clk or negedge rst_n)
- if (!rst_n) begin
- running <= 0;
- send_valid <= 0;
- end else if (!stall) begin
- if (running)
- running <= !end_x || !end_y;
- else
- running <= in_ready && in_valid;
-
- send_valid <= running;
- end
-
- always_ff @(posedge clk)
- if (!stall) begin
- out.pos <= next_pos;
- out.corners <= edge_fns;
-
- stride_x <= stride_x - 1;
- next_pos.x <= next_pos.x + (1 << (`FIXED_FRAC + `GFX_RASTER_BITS));
-
- if (end_x) begin
- next_pos.x <= reference_x;
- next_pos.y <= next_pos.y + (1 << (`FIXED_FRAC + `GFX_RASTER_BITS));
-
- stride_x <= width;
- stride_y <= stride_y - 1;
- end
-
- if (in_ready && in_valid) begin
- next_pos <= pos_ref;
- reference_x <= pos_ref.x;
-
- width <= span_x;
- stride_x <= span_x;
- stride_y <= span_y;
- end
-
- for (integer i = 0; i < 3; ++i) begin
- edge_fns[i] <= edge_fns[i] + coarse_x_offsets[i];
- if (end_x) begin
- edge_fns[i] <= edge_vert_next[i];
- edge_vert[i] <= edge_vert_next[i];
- end
-
- if (in_ready && in_valid) begin
- edge_fns[i] <= edge_refs[i];
- edge_vert[i] <= edge_refs[i];
- end
-
- edge_signs[i] <= !edge_tests[i][$bits(fixed) - 1];
- end
- end
-
-endmodule