From bf6b4e2e8ebb63f6b8466bc98650ce75f3bdc79f Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Sun, 12 Nov 2023 01:37:02 -0600 Subject: rtl/gfx: implement fragment shading --- rtl/gfx/gfx_defs.sv | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'rtl/gfx/gfx_defs.sv') diff --git a/rtl/gfx/gfx_defs.sv b/rtl/gfx/gfx_defs.sv index cc6e6f3..429928c 100644 --- a/rtl/gfx/gfx_defs.sv +++ b/rtl/gfx/gfx_defs.sv @@ -38,9 +38,13 @@ typedef logic[19:0] half_coord; `define GFX_Y_RES 480 `define GFX_LINEAR_RES (`GFX_X_RES * `GFX_Y_RES) +`define COLOR_CHANNELS 4 + +typedef logic[7:0] color8; + typedef struct packed { - logic[7:0] r, g, b; + color8 r, g, b; } rgb24; typedef struct packed @@ -50,13 +54,14 @@ typedef struct packed typedef struct packed { - logic[7:0] a, r, g, b; + color8 a, r, g, b; } rgb32; `define FIXED_FRAC 16 `define FIXED_FMA_STAGES 5 `define FIXED_FMA_DOT_STAGES (2 * `FIXED_FMA_STAGES) +`define LERP_STAGES `FIXED_FMA_DOT_STAGES typedef logic signed[31:0] fixed; typedef fixed[2:0] fixed_tri; @@ -119,6 +124,7 @@ typedef struct packed typedef frag_xy[`GFX_FINE_LANES - 1:0] frag_xy_lanes; typedef logic[`GFX_FINE_LANES - 1:0] paint_lanes; +typedef fixed[`COLOR_CHANNELS - 1:0] color_lerp_lanes; typedef struct packed { @@ -126,6 +132,7 @@ typedef struct packed rgb32 color; } frag_paint; -`define GFX_FRAG_ADDR_STAGES 3 +`define GFX_FRAG_ADDR_STAGES 3 +`define GFX_FRAG_SHADE_STAGES (`LERP_STAGES + 1) `endif -- cgit v1.2.3