diff options
| author | Alejandro Soto <alejandro@34project.org> | 2023-11-10 17:53:40 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2023-11-10 17:54:05 -0600 |
| commit | 152a3970fc3d0d55823840cf45edcf84c5b471fd (patch) | |
| tree | c31a7e9f91902d1a712e9d486c220b9b7b20ba67 /rtl/gfx/gfx_cmd.sv | |
| parent | e8fc1d013a5fa31aada5093fd9e12f4753a31b76 (diff) | |
rtl/gfx: implement fragment mask clear
Diffstat (limited to '')
| -rw-r--r-- | rtl/gfx/gfx_cmd.sv | 15 |
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 |
