summaryrefslogtreecommitdiff
path: root/rtl/gfx/gfx_cmd.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-11-10 17:53:40 -0600
committerAlejandro Soto <alejandro@34project.org>2023-11-10 17:54:05 -0600
commit152a3970fc3d0d55823840cf45edcf84c5b471fd (patch)
treec31a7e9f91902d1a712e9d486c220b9b7b20ba67 /rtl/gfx/gfx_cmd.sv
parente8fc1d013a5fa31aada5093fd9e12f4753a31b76 (diff)
rtl/gfx: implement fragment mask clear
Diffstat (limited to 'rtl/gfx/gfx_cmd.sv')
-rw-r--r--rtl/gfx/gfx_cmd.sv15
1 files changed, 12 insertions, 3 deletions
diff --git a/rtl/gfx/gfx_cmd.sv b/rtl/gfx/gfx_cmd.sv
index 424cf5d..98845c9 100644
--- a/rtl/gfx/gfx_cmd.sv
+++ b/rtl/gfx/gfx_cmd.sv
@@ -15,13 +15,15 @@ module gfx_cmd
output logic swap_buffers,
enable_clear,
+ start_clear,
output rgb24 clear_color
);
struct packed
{
- logic[5:0] mbz;
- logic enable_clear,
+ logic[4:0] mbz;
+ logic start_frame,
+ enable_clear,
swap_buffers;
rgb24 clear_color;
} readdata_scan, writedata_scan;
@@ -36,17 +38,21 @@ module gfx_cmd
assign cmd_readdata = readdata_scan;
rgb24 next_clear_color;
- logic next_enable_clear, next_swap_buffers;
+ logic next_start_clear, next_enable_clear, next_swap_buffers;
always_ff @(posedge clk or negedge rst_n)
if (!rst_n) begin
+ start_clear <= 0;
enable_clear <= 0;
swap_buffers <= 0;
+ next_start_clear <= 0;
next_enable_clear <= 0;
next_swap_buffers <= 0;
end else begin
+ start_clear <= 0;
if (vsync) begin
+ start_clear <= next_start_clear;
enable_clear <= next_enable_clear;
swap_buffers <= next_swap_buffers;
end
@@ -54,6 +60,9 @@ module gfx_cmd
if (cmd_write) begin
next_enable_clear <= writedata_scan.enable_clear;
next_swap_buffers <= writedata_scan.swap_buffers;
+
+ if (!next_start_clear)
+ next_start_clear <= writedata_scan.start_frame && writedata_scan.enable_clear;
end
end