From 9f938e06731088c6073e3a26514f71d54937882e Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Sun, 15 Sep 2024 16:37:12 -0700 Subject: [PATCH] A slap on the wrist - Add restrict qualifier to images in downsample shaders - Early out when there are no changed pages in IndirectInstancer#uploadInstances --- .../backend/engine/indirect/IndirectInstancer.java | 4 ++++ .../internal/indirect/downsample_first.glsl | 12 ++++++------ .../internal/indirect/downsample_second.glsl | 14 +++++++------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/common/src/backend/java/dev/engine_room/flywheel/backend/engine/indirect/IndirectInstancer.java b/common/src/backend/java/dev/engine_room/flywheel/backend/engine/indirect/IndirectInstancer.java index fc8e1361e..2209069bb 100644 --- a/common/src/backend/java/dev/engine_room/flywheel/backend/engine/indirect/IndirectInstancer.java +++ b/common/src/backend/java/dev/engine_room/flywheel/backend/engine/indirect/IndirectInstancer.java @@ -82,6 +82,10 @@ public class IndirectInstancer extends AbstractInstancer } public void uploadInstances(StagingBuffer stagingBuffer, int instanceVbo) { + if (changedPages.isEmpty()) { + return; + } + int numPages = mapping.pageCount(); var instanceCount = instances.size(); diff --git a/common/src/backend/resources/assets/flywheel/flywheel/internal/indirect/downsample_first.glsl b/common/src/backend/resources/assets/flywheel/flywheel/internal/indirect/downsample_first.glsl index 351995767..394667598 100644 --- a/common/src/backend/resources/assets/flywheel/flywheel/internal/indirect/downsample_first.glsl +++ b/common/src/backend/resources/assets/flywheel/flywheel/internal/indirect/downsample_first.glsl @@ -1,12 +1,12 @@ #include "flywheel:internal/indirect/downsample.glsl" layout(binding = 0) uniform sampler2D mip_0; -layout(binding = 1, r32f) uniform writeonly image2D mip_1; -layout(binding = 2, r32f) uniform writeonly image2D mip_2; -layout(binding = 3, r32f) uniform writeonly image2D mip_3; -layout(binding = 4, r32f) uniform writeonly image2D mip_4; -layout(binding = 5, r32f) uniform writeonly image2D mip_5; -layout(binding = 6, r32f) uniform writeonly image2D mip_6; +layout(binding = 1, r32f) uniform restrict writeonly image2D mip_1; +layout(binding = 2, r32f) uniform restrict writeonly image2D mip_2; +layout(binding = 3, r32f) uniform restrict writeonly image2D mip_3; +layout(binding = 4, r32f) uniform restrict writeonly image2D mip_4; +layout(binding = 5, r32f) uniform restrict writeonly image2D mip_5; +layout(binding = 6, r32f) uniform restrict writeonly image2D mip_6; float reduce_load_mip_0(uvec2 tex) { // NOTE: mip_0 is the actual depth buffer, and mip_1 is the "base" of our depth pyramid and has the next diff --git a/common/src/backend/resources/assets/flywheel/flywheel/internal/indirect/downsample_second.glsl b/common/src/backend/resources/assets/flywheel/flywheel/internal/indirect/downsample_second.glsl index afedc061c..29ba31ea0 100644 --- a/common/src/backend/resources/assets/flywheel/flywheel/internal/indirect/downsample_second.glsl +++ b/common/src/backend/resources/assets/flywheel/flywheel/internal/indirect/downsample_second.glsl @@ -1,12 +1,12 @@ #include "flywheel:internal/indirect/downsample.glsl" -layout(binding = 0, r32f) uniform readonly image2D mip_6; -layout(binding = 1, r32f) uniform writeonly image2D mip_7; -layout(binding = 2, r32f) uniform writeonly image2D mip_8; -layout(binding = 3, r32f) uniform writeonly image2D mip_9; -layout(binding = 4, r32f) uniform writeonly image2D mip_10; -layout(binding = 5, r32f) uniform writeonly image2D mip_11; -layout(binding = 6, r32f) uniform writeonly image2D mip_12; +layout(binding = 0, r32f) uniform restrict readonly image2D mip_6; +layout(binding = 1, r32f) uniform restrict writeonly image2D mip_7; +layout(binding = 2, r32f) uniform restrict writeonly image2D mip_8; +layout(binding = 3, r32f) uniform restrict writeonly image2D mip_9; +layout(binding = 4, r32f) uniform restrict writeonly image2D mip_10; +layout(binding = 5, r32f) uniform restrict writeonly image2D mip_11; +layout(binding = 6, r32f) uniform restrict writeonly image2D mip_12; float reduce_load_mip_6(ivec2 tex) { // NOTE: We could bind mip_6 as a sampler2D and use textureGather,