summaryrefslogtreecommitdiff
path: root/rtl/gfx/gfx_setup_bounds.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-11-21 22:21:06 -0600
committerAlejandro Soto <alejandro@34project.org>2023-11-21 22:21:06 -0600
commitb943b9970564be0e4e8782b0f748912339e1009a (patch)
treedd911abd7525862a8f98a17f82882e4a7df0a58d /rtl/gfx/gfx_setup_bounds.sv
parent72f73c895e25f29d450de4da3deccb3fd0634c97 (diff)
rtl/gfx: implement support for negative coordinates
Diffstat (limited to 'rtl/gfx/gfx_setup_bounds.sv')
-rw-r--r--rtl/gfx/gfx_setup_bounds.sv16
1 files changed, 8 insertions, 8 deletions
diff --git a/rtl/gfx/gfx_setup_bounds.sv b/rtl/gfx/gfx_setup_bounds.sv
index 6a93db2..b110438 100644
--- a/rtl/gfx/gfx_setup_bounds.sv
+++ b/rtl/gfx/gfx_setup_bounds.sv
@@ -25,13 +25,13 @@ module gfx_setup_bounds
assign ref_prec.x.sub = 0;
assign ref_prec.x.fine = 0;
- assign ref_prec.x.coarse = ref_x;
- assign ref_prec.x.padding = 0;
+ assign ref_prec.x.padding = {`GFX_RASTER_PAD_BITS{ref_x[$bits(ref_x) - 1]}};
+ assign {ref_prec.x.sign, ref_prec.x.coarse} = ref_x;
assign ref_prec.y.sub = 0;
assign ref_prec.y.fine = 0;
- assign ref_prec.y.coarse = ref_y;
- assign ref_prec.y.padding = 0;
+ assign ref_prec.y.padding = {`GFX_RASTER_PAD_BITS{ref_y[$bits(ref_y) - 1]}};
+ assign {ref_prec.y.sign, ref_prec.y.coarse} = ref_y;
always_ff @(posedge clk)
if (!stall) begin
@@ -63,11 +63,11 @@ module gfx_setup_bounds
max.y <= y_a_lt_c ? hold_c.y : hold_a.y;
end
- ref_x <= min_prec.x.coarse;
- ref_y <= min_prec.y.coarse;
+ ref_x <= {min_prec.x.sign, min_prec.x.coarse};
+ ref_y <= {min_prec.y.sign, min_prec.y.coarse};
- span_x <= max_prec.x.coarse - min_prec.x.coarse;
- span_y <= max_prec.y.coarse - min_prec.y.coarse;
+ span_x <= {max_prec.x.sign, max_prec.x.coarse} - {min_prec.x.sign, min_prec.x.coarse};
+ span_y <= {max_prec.y.sign, max_prec.y.coarse} - {min_prec.y.sign, min_prec.y.coarse};
end
endmodule