Skip to content

feat(rendering): add occlusion culling backends and bindless texturing - #95

Open
ZhuRuoLing wants to merge 29 commits into
Anvil-Dev:dev/26.1from
ZhuRuoLing:feat/occusion_culling
Open

feat(rendering): add occlusion culling backends and bindless texturing#95
ZhuRuoLing wants to merge 29 commits into
Anvil-Dev:dev/26.1from
ZhuRuoLing:feat/occusion_culling

Conversation

@ZhuRuoLing

@ZhuRuoLing ZhuRuoLing commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR extends the Minecraft 26.1 rendering module with an occlusion-culling framework and GPU-side rendering infrastructure. It adds an OpenGL samples-query backend, Hi-Z depth-processing foundations, feature-submit filtering, and compute/texture capability plumbing.

Changes

  • Added OcclusionCuller, OcclusionKey, OcclusionMethod, culling statistics, and wrapped submit-node storage.
  • Added automatic backend selection with Hi-Z, GPU Query, and no-op implementations.
  • Added pooled OpenGL samples queries, AABB query rendering, frustum pre-pass support, and one-frame-latency result reads.
  • Added visibility filtering for vanilla and NeoForge block, model, item, flame, leash, name-tag, particle, shadow, text, and custom feature renderers.
  • Added padded R32F depth conversion and FidelityFX SPD mip-chain foundations.
  • Refactored compute pipelines to use named resource layouts and ordered binding allocation.
  • Added explicit texture, image, buffer, atomic-counter, and bindless image-array bindings.
  • Added GPU capability reporting, extended texture formats, OpenGL texture allocation, and ARB bindless texture handles/residency scopes.
  • Added reusable GPU resource pools, transform/size UBOs, rendering debug options, and development JVM arguments.
  • Updated ApiStatus.Internal placement and sync-module imports.
  • Added the test_occlusion block, block entity renderer, generated assets, and compute-test binding updates.

Impact and Compatibility

  • The Hi-Z path currently provides depth conversion and SPD infrastructure; visibility decisions and SPD dispatch still require follow-up work.
  • The bindless SPD pipeline is defined, but runtime registration and dispatch selection are not complete.
  • Bindless image arrays require ARB_bindless_texture; the regular SPD path remains available.
  • ALRComputePass now uses explicit bindings, lazy Supplier<String> debug groups, and popDebugGroup(); internal callers were updated.
  • The rendering and test modules compile successfully with the focused Gradle tasks.

TODO

  • Complete Hi-Z SPD dispatch and visibility decisions.
  • Register and select the bindless SPD pipeline at runtime.
  • Add Minecraft runtime and GPU validation for the occlusion-culling paths.

@ZhuRuoLing
ZhuRuoLing marked this pull request as draft August 7, 2026 21:58
@ZhuRuoLing
ZhuRuoLing force-pushed the feat/occusion_culling branch from 3c58b50 to 4cdf68c Compare August 13, 2026 22:34
@ZhuRuoLing ZhuRuoLing changed the title Refactor API status handling and add occlusion culling feat(rendering): add occlusion culling backends and bindless texturing Sep 4, 2026
@ZhuRuoLing
ZhuRuoLing marked this pull request as ready for review September 8, 2026 11:22
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Anvil-Dev Anvil-Dev deleted a comment from Gugle2308 Sep 8, 2026
@Gugle2308

Copy link
Copy Markdown

⚠️ Dangerous command requires approval:

grep -o '"head": *{' /tmp/pr95.json; python3 -c "
import json
d=json.load(open('/tmp/pr95.json'))
print('head sha:', d['head']['sha'])
print('head ref:', d['head']['ref'])
print('base ref:', d['base']...

Reason: script execution via -e/-c flag

Reply /approve to execute, /approve session to approve this pattern for the session, /approve always to approve permanently, or /deny to cancel.

@Gugle2308

Copy link
Copy Markdown

All verification complete. This is round 18 (十八复) — delta is a single commit 「SO AMD FUCK U」fixing an AMD driver issue, and the fix is incomplete (regular shader only). Writing the review:

代码审查摘要 — PR #95(十八复 / synchronize)

操作: synchronize · HEAD: 7fda2234(「feat(rendering): SO AMD FUCK U」09-08 17:10Z,非零增量
本轮真增量: compare 3249356c...7fda2234 = 1 commit / 7 文件 / 224 行(vs 全量 157 文件 / 9594 行)
增量文件: ALRComputePipelines、GlComputePassBackend、ALRComputeProgramInstance、MinecraftMixin、DepthTexConverter、hiz_occlusion_test.csh、hiz_occlusion_test_bindless.csh

🔴 关键

  • AMD 动态索引 workaround 只修了 regular 变体,bindless 变体仍是动态 image 数组索引hiz_occlusion_test_bindless.csh:133 仍是 imageLoad(uInputs[mip], ...),而 regular 变体本轮新增 loadHiZ() 用 0..12 常量 case 逐 mip 展开(hiz_occlusion_test.csh:40-57)。两个 shader 的 mip 选择循环完全相同for level < validMips 内按 AABB 尺寸 break → mip 逐 invocation 不同 = 非 dynamically uniform)——对 opaque 数组做非常量索引本就是 UB,AMD 驱动上表现为此 commit 想修的故障。bindless 是活动派发路径HierarchicalZOcclusionCuller.dispatch 264-266 行按 useBindlessTexturing 选 HIZ_OCCLUSION_TEST_BINDLESS,且该管线已 registerPipeline),所以在「支持 bindless 的 AMD 机器」上故障原样保留。修复:把同一 loadHiZ switch 复制进 bindless 变体——这正是 §34 双 shader 分叉教训(十五复刚统一过 pixel 缩放行)的又一次重演:修一个变体忘另一个。

⚠️ 警告

  • GlComputePassBackend.setupTexture 注释掉的代码块 + 只为注释服务的参数programInstance 参数只被注释代码引用(按 binding 名查 TEXTURE_OR_IMAGE 布局 + glUniform1i)。如果 AnvilLib 全部 compute shader 的 sampler/image 都带 layout(binding=N),这块注释是多余实验,请连参数一起删掉;如果存在不带 layout binding 的 uniform sampler2D 而走 bindTexture() 的 shader,注释掉的 glUniform1i 是必须的(否则绑定到 unit≥1 的纹理永不生效,默认采 unit 0)——两种情况二选一,别留死代码。
  • MinecraftMixin.onCreateInstance 新增 LOGGER.info(ALRHICapabilities.getInstance().toString()) — 每次游戏启动打一条 INFO 级调试日志(上一行 ALROptimizations.create() 已消费过该单例,null 安全,纯噪音)。合并前删掉或降 DEBUG。

✅ 正向确认

  • 四条 SPD 管线 withName 去重FFX_SPD_DOWNSAMPLE_PASS_NO_LDSffx_spd_downsample_pass_no_lds..._BINDLESS_NO_LDS..._bindless_no_lds,不再与基础变体共享名字(§38 已核实 program 缓存 key=(location, defines),改名无碰撞风险,纯标签准确性收益)。
  • DepthTexConverter.runConvertTEXTURE_FETCH_BARRIER — convert 产物被后续 pass 以纹理采样方式消费,barrier 补得正确。
  • loadHiZ switch 0..12 覆盖完整数组(MAX_MIP_LEVELS=12 → 13 槽),default: 1.0 保守(恒过深度测试 = 不误剔);mipLevels 注释明确是「含 mip 0 的条目数」,clamp(..., MAX_MIP_LEVELS+1) 上限 13 → 循环内 mip ≤ 12,与数组/switch 边界自洽,无 off-by-one
  • bindless 变体 corners 缩进修正 = 与 regular 对齐的纯格式。

📋 跨轮次未修项核对(本轮未触碰文件,合并 grep 确认全部原样,行号 = 9594 行全量 diff 基线)

问题 行号 状态
simpleCodec(TestBloomBlock::new) codec 引用错类 9402 ❌ 未修
getBuffer(6 * 6) + drawIndexed(0, 0, 6 * 6, 1)(QUADS 24 顶点 vs 36 索引) 6440 / 6497 ❌ 未修(GPU_QUERY 接线后 active)
new AABB(worldPosition) 零尺寸盒 + inflate(0.1) 9441 / 6805 ❌ 未修
IntSizeUbo 宽高互换(getHeight 先行) 3324 ❌ 未修
midTex = textures.get(6) SPD mid-mip 语义 6214 / 6250 ❌ 未修
mipmap 节流(十六复 §37 引入项) 5200-5307 原样(interval 默认 0,inert)
GL46.* 入口点 / isSupported 恒 true / 阻塞读 / alrSetWasUsed / 提交门控死锁等 各处 ❌ 未修
十七复 ⚠️GL_KHR_shader_subgroup 探测 vs shader _quad : require、define=0 变体无条件注册、HZOC 死 import) ❌ 本轮未触碰

结论

REQUEST_CHANGES — 本轮 commit 的 AMD 修复方向正确(常量索引 switch + TEXTURE_FETCH_BARRIER),但只修了双变体中的一半:bindless 派发路径上动态 image 数组索引原样保留,AMD 故障在 bindless 配置下必然复现;请同步修复 bindless 变体并清理 setupTexture 死代码与启动 INFO 日志。旧 blocker(codec 错类 / 6*6 索引越界 / AABB 零尺寸 / IntSizeUbo)已跨 10+ 轮未修,建议优先处理。

gh 未认证(token invalid,401),标题未修改(现标题准确无需改)。

@Gugle2308

Copy link
Copy Markdown

🌿 Roseau API Breaking Change Report

Module Status Breaking Changes
codec ✅ Compatible 0
collision ✅ Compatible 0
config ✅ Compatible 0
integration ✅ Compatible 0
moveable-entity-block ✅ Compatible 0
network ✅ Compatible 0
rendering 🔴 BC detected 44
space-select ✅ Compatible 0
font ✅ Compatible 0
util ✅ Compatible 0
explosion ✅ Compatible 0
rpc ✅ Compatible 0
multiblock ✅ Compatible 0
recipe ✅ Compatible 0
registrum ✅ Compatible 0
sync ✅ Compatible 0
wheel ✅ Compatible 0
main ✅ Compatible 0

🔴 rendering — 44 breaking change(s)

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension.alrCompileComputeShader(dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ALRComputeProgramInstanceKey)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePass.java:66

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass.bind(int,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout<T>,T)
METHOD_RETURN_TYPE_ERASURE_CHANGED
✗ binary-breaking
✓ source-compatible

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePass.java:66

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass.bind(int,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout<T>,T)
METHOD_RETURN_TYPE_CHANGED_INCOMPATIBLE
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePass.java:59

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass.bindAll(java.util.List<? extends java.lang.Object>)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePass.java:24

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass.popDebugGroup(java.lang.String)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePass.java:20

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass.pushDebugGroup(java.lang.String)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePassBackend.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePassBackend
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePassBackend.pushDebugGroup(java.lang.String)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePipeline.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePipeline
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePipeline
TYPE_KIND_CHANGED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/AtomicCounterBinding.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.AtomicCounterBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.AtomicCounterBinding
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/AtomicCounterBinding.java:17

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.AtomicCounterBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.AtomicCounterBinding.apply(int,com.mojang.blaze3d.buffers.GpuBufferSlice,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.AtomicCounterBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout.apply(int,T,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout.apply(int,T,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ImageBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout.apply(int,T,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ImageBinding.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ImageBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ImageBinding
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ImageBinding.java:26

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ImageBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ImageBinding.apply(int,com.mojang.blaze3d.textures.GpuTexture,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ShaderStorageBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout.apply(int,T,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ShaderStorageBinding.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ShaderStorageBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ShaderStorageBinding
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ShaderStorageBinding.java:18

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ShaderStorageBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ShaderStorageBinding.apply(int,com.mojang.blaze3d.buffers.GpuBufferSlice,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.TextureBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout.apply(int,T,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/TextureBinding.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.TextureBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.TextureBinding
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/TextureBinding.java:18

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.TextureBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.TextureBinding.apply(int,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.TextureBinding$SamplerAndTexture,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.UniformBlockBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout.apply(int,T,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/UniformBlockBinding.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.UniformBlockBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.UniformBlockBinding
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/UniformBlockBinding.java:17

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.UniformBlockBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.UniformBlockBinding.apply(int,com.mojang.blaze3d.buffers.GpuBufferSlice,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/shader/ALRComputeProgramInstance.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ALRComputeProgramInstance
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ALRComputeProgramInstance
TYPE_KIND_CHANGED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/shader/ShaderResourceType.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ShaderResourceType
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ShaderResourceType.IMAGE
FIELD_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/shader/ShaderResourceType.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ShaderResourceType
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ShaderResourceType.TEXTURE
FIELD_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferSizeCalculator.java

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferSizeCalculator
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferSizeCalculator
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferSizeCalculator.java

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferSizeCalculator
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferSizeCalculator
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferWriter.java

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferWriter.java

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferWriter.java

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferWriter.java

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferWriter.java:38

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter.putStructArray(E[],dev.anvilcraft.lib.v2.rendering.foundation.buffers.object.BufferObjectLayoutDefinition<E>)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/std140/Std140Writer.java:106

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.std140.Std140Writer
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.std140.Std140Writer.putStructArray(E[],dev.anvilcraft.lib.v2.rendering.foundation.buffers.object.BufferObjectLayoutDefinition<E>)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

Full CSVs: see the Artifacts section of this workflow run.

@Gugle2308

Copy link
Copy Markdown

💾 Self-improvement review: Patched SKILL.md in skill 'rendering-gpu-pr-review' (1 replacement). · Patched references/pr95-occlusion-culling-review-matrix.md in skill 'rendering-gpu-pr-review' (1 replacement).

@Gugle2308

Copy link
Copy Markdown

代码审查摘要 — PR #95(synchronize 复审查 · 十九复)

操作: synchronize
本轮增量: 2 commits(29e0ae22「add ApiStatus.Internal annotation and cache disposing」+ 5a16c602「fix ai slop」09-09),compare 7fda2234...5a16c602 = 21 文件 / 455 行;全量 diff 158 文件 / 9719 行(上轮 9594,+125 漂移)
审查方法: compare API 增量定位 → 增量 diff 全读 → 旧项合并 grep 回归(codec/6*6/AABB/IntSizeUbo/midTex/isSupported/GL46/Unsafe)


🔴 关键(本轮新增)

  • GlTextureMixin(新文件)无守卫硬转 + dispose 不解除驻留 — 注入 GlTexture.close() HEAD,对全游戏每一次纹理关闭(含原版纹理)生效:
    1. (ALRGpuDeviceExtension) RenderSystem.getDevice()instanceof/null 守卫——device 为 null(关闭时序/非渲染线程)时 backend.alrGetBindlessTexturingSupport() 直接 NPE;mixin 未生效时 CCE。这是 §8 模式落在最热路径上(每次纹理销毁都跑),建议改为 if (RenderSystem.getDevice() instanceof ALRGpuDeviceExtension backend && backend.alrGetBindlessTexturingSupport() != null)
    2. alrTextureDisposed 只删 cache 条目,不调用 alrTextureHandleDeleteResident(glMakeTextureHandleNonResidentARB)。若纹理关闭时其 resident scope 仍开着(scope.close 延后执行),GL 对象已删后 scope.close 会对失效 handle 调 nonResident → GL_INVALID_VALUE/UB。需保证「scope 先于纹理 close 关闭」,或在 dispose 时对仍 resident 的 handle 补 de-resident。
    3. 缓存键是 (texture, sampler) 实例引用,eviction 用 key.texture() == texture 恒等比较——同 glId 经不同 Java 实例(view/包装)访问时命中不了;好在 eviction 发生在 HEAD(GL 删除前),时序方向正确,但建议注释说明该恒等前提。

⚠️ 警告

  • OcclusionCuller 接口打 @ApiStatus.Internal,与本轮同步加的公开使用 javadoc 自相矛盾 — 新 javadoc 用「A typical block-entity renderer submits its geometry as follows」示范 ALROptimizations.getOcclusionCuller() + wrapSubmitNodeStorage 用法(面向库使用者),却把整个接口标 Internal。二选一:真内部 → javadoc 示例标注 internal-only/移除;对外扩展点 → 去掉接口级 Internal(保留 OCCLUSION_QUERY/TestOcclusion 等实现的 Internal 即可)。
  • alrTextureDisposed 是接口新增抽象方法(非 default)——BindlessTexturingSupport 若有其他实现者会编译失败;目前仅 GlBindlessTexturingSupport 一个实现,确认无 test/mock 实现者即可。
  • 旧 blockers 本轮文件未触碰,全部仍存(行号为 9719 行全量 diff 基线):
    • getBuffer(6 * 6) + drawIndexed(0, 0, 6 * 6, 1)6564 / 6621(QUADS 6 面=24 顶点却用 TRIANGLES 索引数 36,GPU 越界读,active)
    • frustum pre-pass 命中的 key 仍建 query 并绘制(6569-6581 无 continue)——结果在 shouldDraw 已被 CPU 侧短路,纯浪费 + 池抖动
    • runQueries 的 push/pop debug group 无 try/finally(push 6571 / pop 6632)——renderPass 内异常跳过 releaseInstance 循环 + pop,debug 栈失衡 + 池泄漏
    • IntSizeUbo DEFINITION getHeight 先于 getWidth(3347,与 GLSL 声明序互换)
    • new AABB(worldPosition) 零尺寸盒(9566)+ inflate(0.1)(6929)
    • midTex = textures.get(6)(6336/6372,SPD mid-mip 槽语义错)
    • GPU_QUERY.isSupported() 恒 true(4958-4960)
    • GL46 硬依赖入口点 ×38
    • MemoryAccess sun.misc.Unsafe 反射读取(7125-7148)
    • alrSetWasUsed(true) 篡改 original collection(5157)
    • §31 阈值不对称:useBindlessTexturingmaxImageUnit() < 16HIERARCHICAL_Z.isSupported()> 16(4969)——==16 时两侧判定矛盾

✅ 修复确认(正向)

  • TestOcclusionBlock.codec() 错类终于修复simpleCodec(TestBloomBlock::new)simpleCodec(TestOcclusionBlock::new)(9527),§25 多轮 blocker 闭环。
  • HierarchicalZOcclusionCuller 死 import 清理(移除 ALROptions/ALRHICapabilities/ALRComputePipeline)——呼应「fix ai slop」提交名。
  • GlTextureMixin 注册在 anvillib_rendering.mixins.jsonclient 数组(line 29,与 GlDeviceMixin 同级)——GlTexture 是 client-only 类,dist 归属正确,无 §33 类问题。
  • §30「handle cache 无 evict」TODO 落地alrTextureDisposed 遍历 texture/image 双 cache 按纹理清键,方向正确。
  • OcclusionCuller.createInstance 末尾 return new NoOpOcclusionCuller() 与 javadoc「never null」声明一致 ✅。
  • 52 处 import org.jetbrains.annotations.ApiStatus 新增中,本轮 17 个文件各仅 1 处、无同文件重复 import。

💡 建议

  • @SuppressWarnings("resource") 放在 alrTextureDisposed 上仅因 record key 持 GpuTexture——语义上该方法是「放弃缓存引用」而非关闭资源,可加一行注释说明(避免后人误以为这里释放了 GL 资源)。
  • ApiStatus.Internal 批量清扫本身是好事(明确内部 API 边界),建议顺带把 createInstance@SuppressWarnings("ConstantValue") 清理掉——如今 fallback 链已是运行期判定,该抑制项疑似过期。

📋 结论: REQUEST_CHANGES

本轮增量质量比前几轮好(codec 九轮终修 + 死代码清理 + evict 落地),但 GlTextureMixin 在全局纹理关闭热路径上缺 null/instanceof 守卫、dispose 不解除驻留,属必须补强的健壮性问题;drawIndexed 6*6 越界、零尺寸 AABB、IntSizeUbo 互换等 active 旧 blocker 仍原样存在,建议下轮一并处理。

(gh 未认证 — token invalid,跳过标题修改;标题本身准确无需改。)

@Gugle2308

Copy link
Copy Markdown

💾 Self-improvement review: Patched SKILL.md in skill 'rendering-gpu-pr-review' (1 replacement). · Patched references/pr95-occlusion-culling-review-matrix.md in skill 'rendering-gpu-pr-review' (1 replacement).

@Gugle2308

Copy link
Copy Markdown

🌿 Roseau API Breaking Change Report

Module Status Breaking Changes
codec ✅ Compatible 0
collision ✅ Compatible 0
config ✅ Compatible 0
integration ✅ Compatible 0
moveable-entity-block ✅ Compatible 0
network ✅ Compatible 0
rendering 🔴 BC detected 44
space-select ✅ Compatible 0
font ✅ Compatible 0
util ✅ Compatible 0
explosion ✅ Compatible 0
rpc ✅ Compatible 0
multiblock ✅ Compatible 0
recipe ✅ Compatible 0
registrum ✅ Compatible 0
sync ✅ Compatible 0
wheel ✅ Compatible 0
main ✅ Compatible 0

🔴 rendering — 44 breaking change(s)

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/ALRGpuDeviceExtension.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.ALRGpuDeviceExtension.alrCompileComputeShader(dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ALRComputeProgramInstanceKey)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePass.java:66

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass.bind(int,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout<T>,T)
METHOD_RETURN_TYPE_ERASURE_CHANGED
✗ binary-breaking
✓ source-compatible

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePass.java:66

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass.bind(int,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout<T>,T)
METHOD_RETURN_TYPE_CHANGED_INCOMPATIBLE
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePass.java:59

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass.bindAll(java.util.List<? extends java.lang.Object>)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePass.java:24

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass.popDebugGroup(java.lang.String)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePass.java:20

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass.pushDebugGroup(java.lang.String)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePassBackend.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePassBackend
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePassBackend.pushDebugGroup(java.lang.String)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/ALRComputePipeline.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePipeline
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePipeline
TYPE_KIND_CHANGED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/AtomicCounterBinding.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.AtomicCounterBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.AtomicCounterBinding
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/AtomicCounterBinding.java:17

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.AtomicCounterBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.AtomicCounterBinding.apply(int,com.mojang.blaze3d.buffers.GpuBufferSlice,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.AtomicCounterBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout.apply(int,T,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout.apply(int,T,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ImageBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout.apply(int,T,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ImageBinding.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ImageBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ImageBinding
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ImageBinding.java:26

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ImageBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ImageBinding.apply(int,com.mojang.blaze3d.textures.GpuTexture,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ShaderStorageBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout.apply(int,T,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ShaderStorageBinding.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ShaderStorageBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ShaderStorageBinding
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ShaderStorageBinding.java:18

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ShaderStorageBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ShaderStorageBinding.apply(int,com.mojang.blaze3d.buffers.GpuBufferSlice,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.TextureBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout.apply(int,T,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/TextureBinding.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.TextureBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.TextureBinding
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/TextureBinding.java:18

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.TextureBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.TextureBinding.apply(int,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.TextureBinding$SamplerAndTexture,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/ComputeBindingLayout.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.UniformBlockBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.ComputeBindingLayout.apply(int,T,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/UniformBlockBinding.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.UniformBlockBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.UniformBlockBinding
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/pipeline/bindings/UniformBlockBinding.java:17

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.UniformBlockBinding
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.bindings.UniformBlockBinding.apply(int,com.mojang.blaze3d.buffers.GpuBufferSlice,dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.pipeline.ALRComputePass)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/shader/ALRComputeProgramInstance.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ALRComputeProgramInstance
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ALRComputeProgramInstance
TYPE_KIND_CHANGED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/shader/ShaderResourceType.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ShaderResourceType
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ShaderResourceType.IMAGE
FIELD_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/extension/blaze3d/compute/shader/ShaderResourceType.java

dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ShaderResourceType
dev.anvilcraft.lib.v2.rendering.extension.blaze3d.compute.shader.ShaderResourceType.TEXTURE
FIELD_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferSizeCalculator.java

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferSizeCalculator
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferSizeCalculator
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferSizeCalculator.java

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferSizeCalculator
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferSizeCalculator
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferWriter.java

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferWriter.java

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferWriter.java

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferWriter.java

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
TYPE_NEW_ABSTRACT_METHOD
✓ binary-compatible
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/BufferWriter.java:38

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.BufferWriter.putStructArray(E[],dev.anvilcraft.lib.v2.rendering.foundation.buffers.object.BufferObjectLayoutDefinition<E>)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

dev/anvilcraft/lib/v2/rendering/foundation/buffers/layout/std140/Std140Writer.java:106

dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.std140.Std140Writer
dev.anvilcraft.lib.v2.rendering.foundation.buffers.layout.std140.Std140Writer.putStructArray(E[],dev.anvilcraft.lib.v2.rendering.foundation.buffers.object.BufferObjectLayoutDefinition<E>)
EXECUTABLE_REMOVED
✗ binary-breaking
✗ source-breaking

Full CSVs: see the Artifacts section of this workflow run.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants