From 7a2dc37d368063661c1dae9b590df8171a5dea7d Mon Sep 17 00:00:00 2001 From: Ishi Tatsuyuki Date: Tue, 30 Mar 2021 12:59:49 +0900 Subject: [PATCH] Remove manual blend stack spilling and rely on scratch memory instead v2: Add a panic when the nested blend depth exceeds the limit. v3: Rebase and partially remove code introduced in 22507de. --- piet-gpu/shader/coarse.comp | 17 ----------------- piet-gpu/shader/coarse.spv | Bin 57588 -> 55948 bytes piet-gpu/shader/kernel4.comp | 29 +++++++++++------------------ piet-gpu/shader/kernel4.spv | Bin 37584 -> 34572 bytes piet-gpu/shader/kernel4_idx.spv | Bin 37688 -> 34676 bytes piet-gpu/src/lib.rs | 2 ++ piet-gpu/src/render_ctx.rs | 4 ++++ 7 files changed, 17 insertions(+), 35 deletions(-) diff --git a/piet-gpu/shader/coarse.comp b/piet-gpu/shader/coarse.comp index 731da97..39c07c6 100644 --- a/piet-gpu/shader/coarse.comp +++ b/piet-gpu/shader/coarse.comp @@ -148,12 +148,6 @@ void main() { uint part_start_ix = 0; uint ready_ix = 0; - // Leave room for the fine rasterizer scratch allocation. - Alloc scratch_alloc = slice_mem(cmd_alloc, 0, Alloc_size); - cmd_ref.offset += Alloc_size; - - uint num_begin_slots = 0; - uint begin_slot = 0; bool mem_ok = mem_error == NO_ERROR; while (true) { for (uint i = 0; i < N_SLICE; i++) { @@ -373,8 +367,6 @@ void main() { if (clip_depth < 32) { clip_one_mask &= ~(1 << clip_depth); } - begin_slot++; - num_begin_slots = max(num_begin_slots, begin_slot); } clip_depth++; break; @@ -386,7 +378,6 @@ void main() { } Cmd_Solid_write(cmd_alloc, cmd_ref); cmd_ref.offset += 4; - begin_slot--; Cmd_EndClip_write(cmd_alloc, cmd_ref); cmd_ref.offset += 4; } @@ -414,13 +405,5 @@ void main() { } if (bin_tile_x + tile_x < conf.width_in_tiles && bin_tile_y + tile_y < conf.height_in_tiles) { Cmd_End_write(cmd_alloc, cmd_ref); - if (num_begin_slots > 0) { - // Write scratch allocation: one state per BeginClip per rasterizer chunk. - uint scratch_size = num_begin_slots * TILE_WIDTH_PX * TILE_HEIGHT_PX * CLIP_STATE_SIZE * 4; - MallocResult scratch = malloc(scratch_size); - // Ignore scratch.failed; we don't use the allocation and kernel4 - // checks for memory overflow before using it. - alloc_write(scratch_alloc, scratch_alloc.offset, scratch.alloc); - } } } diff --git a/piet-gpu/shader/coarse.spv b/piet-gpu/shader/coarse.spv index 5570675da63893e21c5db0bbe1ee5128bd9c62b0..4406d8f724bb521bcbe6652e5ecd7159a63a5c46 100644 GIT binary patch literal 55948 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 z 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 2) + CLIP_STATE_SIZE * (clip_depth * TILE_WIDTH_PX * TILE_HEIGHT_PX + - gl_LocalInvocationID.x + TILE_WIDTH_PX * gl_LocalInvocationID.y); for (uint k = 0; k < CHUNK; k++) { - uvec2 offset = chunk_offset(k); - uint srgb = packsRGB(vec4(rgba[k])); - mediump float alpha = clamp(abs(area[k]), 0.0, 1.0); - write_mem(scratch_alloc, base_ix + 0 + CLIP_STATE_SIZE * (offset.x + offset.y * TILE_WIDTH_PX), srgb); - write_mem(scratch_alloc, base_ix + 1 + CLIP_STATE_SIZE * (offset.x + offset.y * TILE_WIDTH_PX), floatBitsToUint(alpha)); + // We reject any inputs that might overflow in render_ctx.rs. + // The following is a sanity check so we don't corrupt memory should there be malformed inputs. + uint d = min(clip_depth, MAX_BLEND_STACK - 1); + blend_stack[d][k] = packsRGB(vec4(rgba[k])); + blend_alpha_stack[d][k] = clamp(abs(area[k]), 0.0, 1.0); rgba[k] = vec4(0.0); } clip_depth++; @@ -223,14 +220,10 @@ void main() { break; case Cmd_EndClip: clip_depth--; - base_ix = (scratch_alloc.offset >> 2) + CLIP_STATE_SIZE * (clip_depth * TILE_WIDTH_PX * TILE_HEIGHT_PX + - gl_LocalInvocationID.x + TILE_WIDTH_PX * gl_LocalInvocationID.y); for (uint k = 0; k < CHUNK; k++) { - uvec2 offset = chunk_offset(k); - uint srgb = read_mem(scratch_alloc, base_ix + 0 + CLIP_STATE_SIZE * (offset.x + offset.y * TILE_WIDTH_PX)); - uint alpha = read_mem(scratch_alloc, base_ix + 1 + CLIP_STATE_SIZE * (offset.x + offset.y * TILE_WIDTH_PX)); - mediump vec4 bg = unpacksRGB(srgb); - mediump vec4 fg = rgba[k] * area[k] * uintBitsToFloat(alpha); + uint d = min(clip_depth, MAX_BLEND_STACK - 1); + mediump vec4 bg = unpacksRGB(blend_stack[d][k]); + mediump vec4 fg = rgba[k] * area[k] * blend_alpha_stack[d][k]; rgba[k] = bg * (1.0 - fg.a) + fg; } cmd_ref.offset += 4; diff --git a/piet-gpu/shader/kernel4.spv b/piet-gpu/shader/kernel4.spv index 3e8849421bbf8d7eff0607ce84765fa4ab90e61c..5129b3feed13abbd901598c9c1877920498e89e9 100644 GIT binary patch literal 34572 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 diff --git a/piet-gpu/shader/kernel4_idx.spv b/piet-gpu/shader/kernel4_idx.spv index 17d2f475168c2d3a0c4cdf724b41622f609489f3..953eae12634cefc40bc72f7f66b2ecb73c362c80 100644 GIT binary patch literal 34676 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 POQ(Wu&+|;|dG>z*L#Hyh literal 37688 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 MAX_BLEND_STACK { + panic!("Maximum clip/blend stack size {} exceeded", MAX_BLEND_STACK); + } self.clip_stack.push(ClipElement { bbox: None, begin_ix,