summaryrefslogtreecommitdiff
path: root/rtl/gfx/gfx.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-10-29 15:35:42 -0600
committerAlejandro Soto <alejandro@34project.org>2023-10-29 16:12:33 -0600
commitadabbf5f30729092a64fa1059bbc7d7b09d6b24e (patch)
tree4a4db581d233bcfda18d5e8f2e5606365d52852c /rtl/gfx/gfx.sv
parent98d493f9c80f356cdbc2669150d772e451c3b80e (diff)
rtl/gfx: implement double-buffered scanout
Diffstat (limited to '')
-rw-r--r--rtl/gfx/gfx.sv45
1 files changed, 44 insertions, 1 deletions
diff --git a/rtl/gfx/gfx.sv b/rtl/gfx/gfx.sv
index bae65e3..7749c50 100644
--- a/rtl/gfx/gfx.sv
+++ b/rtl/gfx/gfx.sv
@@ -17,7 +17,13 @@ module gfx
output logic[25:0] mem_address,
output logic mem_read,
mem_write,
- output logic[15:0] mem_writedata
+ output logic[15:0] mem_writedata,
+
+ input logic scan_ready,
+ output logic scan_valid,
+ scan_endofpacket,
+ scan_startofpacket,
+ output rgb30 scan_data
);
fp readdata, writedata;
@@ -60,6 +66,43 @@ module gfx
.*
);
+ logic frag_mask, scan_mask;
+
+ gfx_masks masks
+ (
+ .frag_mask_set(0),
+ .frag_mask_write(0),
+ .frag_mask_read_addr(),
+ .frag_mask_write_addr(),
+ .*
+ );
+
+ logic swap_buffers;
+ rgb24 clear_color;
+
+ assign swap_buffers = 0;
+ assign clear_color.r = 255;
+ assign clear_color.g = 0;
+ assign clear_color.b = 0;
+
+ linear_coord scan_mask_addr;
+
+ logic scanout_read_tmp;
+
+ gfx_scanout scanout
+ (
+ .mask(scan_mask),
+ .mask_addr(scan_mask_addr),
+
+ .fb_read(scanout_read_tmp),
+ .fb_address(),
+ .fb_readdata(),
+ .fb_waitrequest(0),
+ .fb_readdatavalid(scanout_read_tmp),
+
+ .*
+ );
+
logic[63:0] cnt_cycles, cnt_trans, snp_cycles, snp_trans;
logic[24:0] cnt_addr;
logic[31:0] cnt_done, cnt_start;