From e6b535d9422075a0845d6faf6f383c3d3d81f0ab Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Tue, 30 Mar 2021 19:56:09 +0200 Subject: [PATCH] coarse.comp: extract area commands into function No functional changes. Signed-off-by: Elias Naur --- piet-gpu/shader/coarse.comp | 64 +++++++++++------------------------- piet-gpu/shader/coarse.spv | Bin 58380 -> 55312 bytes 2 files changed, 20 insertions(+), 44 deletions(-) diff --git a/piet-gpu/shader/coarse.comp b/piet-gpu/shader/coarse.comp index a4837bd..1266ed8 100644 --- a/piet-gpu/shader/coarse.comp +++ b/piet-gpu/shader/coarse.comp @@ -91,6 +91,23 @@ bool alloc_cmd(inout Alloc cmd_alloc, inout CmdRef cmd_ref, inout uint cmd_limit return true; } +void write_fill(Alloc alloc, inout CmdRef cmd_ref, uint flags, Tile tile, float linewidth) { + if (fill_mode_from_flags(flags) == MODE_NONZERO) { + if (tile.tile.offset != 0) { + CmdFill cmd_fill = CmdFill(tile.tile.offset, tile.backdrop); + Cmd_Fill_write(alloc, cmd_ref, cmd_fill); + cmd_ref.offset += 4 + CmdFill_size; + } else { + Cmd_Solid_write(alloc, cmd_ref); + cmd_ref.offset += 4; + } + } else { + CmdStroke cmd_stroke = CmdStroke(tile.tile.offset, 0.5 * linewidth); + Cmd_Stroke_write(alloc, cmd_ref, cmd_stroke); + cmd_ref.offset += 4 + CmdStroke_size; + } +} + void main() { if (mem_error != NO_ERROR) { return; @@ -320,20 +337,7 @@ void main() { if (!alloc_cmd(cmd_alloc, cmd_ref, cmd_limit)) { break; } - if (fill_mode_from_flags(tag.flags) == MODE_NONZERO) { - if (tile.tile.offset != 0) { - CmdFill cmd_fill = CmdFill(tile.tile.offset, tile.backdrop); - Cmd_Fill_write(cmd_alloc, cmd_ref, cmd_fill); - cmd_ref.offset += 4 + CmdFill_size; - } else { - Cmd_Solid_write(cmd_alloc, cmd_ref); - cmd_ref.offset += 4; - } - } else { - CmdStroke cmd_stroke = CmdStroke(tile.tile.offset, 0.5 * fill.linewidth); - Cmd_Stroke_write(cmd_alloc, cmd_ref, cmd_stroke); - cmd_ref.offset += 4 + CmdStroke_size; - } + write_fill(cmd_alloc, cmd_ref, tag.flags, tile, fill.linewidth); Cmd_Color_write(cmd_alloc, cmd_ref, CmdColor(fill.rgba_color)); cmd_ref.offset += 4 + CmdColor_size; break; @@ -344,20 +348,7 @@ void main() { if (!alloc_cmd(cmd_alloc, cmd_ref, cmd_limit)) { break; } - if (fill_mode_from_flags(tag.flags) == MODE_NONZERO) { - if (tile.tile.offset != 0) { - CmdFill cmd_fill = CmdFill(tile.tile.offset, tile.backdrop); - Cmd_Fill_write(cmd_alloc, cmd_ref, cmd_fill); - cmd_ref.offset += 4 + CmdFill_size; - } else { - Cmd_Solid_write(cmd_alloc, cmd_ref); - cmd_ref.offset += 4; - } - } else { - CmdStroke cmd_stroke = CmdStroke(tile.tile.offset, 0.5 * fill_img.linewidth); - Cmd_Stroke_write(cmd_alloc, cmd_ref, cmd_stroke); - cmd_ref.offset += 4 + CmdStroke_size; - } + write_fill(cmd_alloc, cmd_ref, tag.flags, tile, fill_img.linewidth); Cmd_Image_write(cmd_alloc, cmd_ref, CmdImage(fill_img.index, fill_img.offset)); cmd_ref.offset += 4 + CmdImage_size; break; @@ -373,22 +364,7 @@ void main() { if (!alloc_cmd(cmd_alloc, cmd_ref, cmd_limit)) { break; } - if (fill_mode_from_flags(tag.flags) == MODE_NONZERO) { - if (tile.tile.offset != 0) { - CmdFill cmd_fill = CmdFill(tile.tile.offset, tile.backdrop); - Cmd_Fill_write(cmd_alloc, cmd_ref, cmd_fill); - cmd_ref.offset += 4 + CmdFill_size; - } else { - // TODO: here is where a bunch of optimization magic should happen - float alpha = tile.backdrop == 0 ? 0.0 : 1.0; - Cmd_Alpha_write(cmd_alloc, cmd_ref, CmdAlpha(alpha)); - cmd_ref.offset += 4 + CmdAlpha_size; - } - } else { - CmdStroke cmd_stroke = CmdStroke(tile.tile.offset, 0.5 * begin_clip.linewidth); - Cmd_Stroke_write(cmd_alloc, cmd_ref, cmd_stroke); - cmd_ref.offset += 4 + CmdStroke_size; - } + write_fill(cmd_alloc, cmd_ref, tag.flags, tile, begin_clip.linewidth); Cmd_BeginClip_write(cmd_alloc, cmd_ref); cmd_ref.offset += 4; if (clip_depth < 32) { diff --git a/piet-gpu/shader/coarse.spv b/piet-gpu/shader/coarse.spv index 763da55dfe178000cde8215b1f25e0e200f1a2dc..65e834780b76dcadf4593b0854cc03b2340ad247 100644 GIT binary patch literal 55312 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ü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 Oa{bCVbT0F3^#1^bvCp~y literal 58380 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