Harbor

Changelog b72c8ac274b6

pin gpu descriptor prep

@sky · 1 month ago · parent a58b553aa0e4
0 added 11 modified 0 deleted
gpu/backend/backend.odin +7 -0 modified
549 unchanged lines hidden
550 550 destroy_shader: proc(handle: Shader_Handle),
551 551
552 552 // --- Draw ---
553 + draw: proc(
554 + ctx: Frame_Context,
555 + vertex_count, instance_count: u32,
556 + first_vertex: u32,
557 + first_instance: u32,
558 + ),
553 559 draw_indexed: proc(
554 560 ctx: Frame_Context,
555 561 index_count, instance_count: u32,
70 unchanged lines hidden
626 632 b.destroy_framebuffer != nil &&
627 633 b.create_shader_module != nil &&
628 634 b.destroy_shader != nil &&
635 + b.draw != nil &&
629 636 b.draw_indexed != nil &&
630 637 b.create_compute_pipeline != nil &&
631 638 b.destroy_compute_pipeline != nil &&
10 unchanged lines hidden
gpu/backend/d3d11/d3d11_backend.odin +1 -0 modified
411 unchanged lines hidden
412 412 destroy_shader = destroy_shader_d3d11,
413 413
414 414 // Draw
415 + draw = draw_d3d11,
415 416 draw_indexed = draw_indexed_d3d11,
416 417
417 418 // Compute
173 unchanged lines hidden
gpu/backend/d3d11/d3d11_ops.odin modified

Diff hidden because this file has more than 800 lines.

gpu/backend/d3d12/d3d12_backend.odin modified

Diff hidden because this file has more than 800 lines.

gpu/backend/d3d12/d3d12_ops.odin modified

Diff hidden because this file has more than 800 lines.

gpu/backend/opengl/gl_backend.odin +1 -0 modified
216 unchanged lines hidden
217 217 destroy_framebuffer = destroy_framebuffer_opengl,
218 218 create_shader_module = create_shader_module_opengl,
219 219 destroy_shader = destroy_shader_opengl,
220 + draw = draw_opengl,
220 221 draw_indexed = draw_indexed_opengl,
221 222 create_compute_pipeline = create_compute_pipeline_opengl,
222 223 destroy_compute_pipeline = destroy_compute_pipeline_opengl,
82 unchanged lines hidden
gpu/backend/opengl/gl_ops.odin modified

Diff hidden because this file has more than 800 lines.

gpu/backend/vulkan/vk_backend.odin +1 -0 modified
362 unchanged lines hidden
363 363 destroy_shader = destroy_shader_vk,
364 364
365 365 // Draw
366 + draw = draw_vk,
366 367 draw_indexed = draw_indexed_vk,
367 368
368 369 // Compute
172 unchanged lines hidden
gpu/backend/vulkan/vk_ops.odin modified

Diff hidden because this file has more than 800 lines.

gpu/compiler/executor.odin modified

Diff hidden because this file has more than 800 lines.

gpu/docs/gpu_intent_api.md +9 -0 modified
53 unchanged lines hidden
54 54
55 55 D3D12 runtime fence behavior cannot be executed by Linux CI. D3D12 lifetime and transition work is accepted by static backend checks, pure fence-order tests where available, and explicit Windows runtime verification debt.
56 56
57 + Current backend sync matrix:
58 +
59 + | Backend | Compute barrier scope | Sampled target feedback | Runtime proof |
60 + | --- | --- | --- | --- |
61 + | Vulkan | Conservative compute-write barrier for later shader reads/writes plus vertex/index fetch. Indirect command reads stay Phase 7. | Render pass final layouts come from target usage; descriptor layout is caller-declared. | Static checks now; device smoke gate still needed. |
62 + | D3D11 | Immediate context resolves many SRV/RTV/UAV conflicts by auto-unbinding and debug warnings. Manual hazard cleanup needs slot tracking before it is safe. | No explicit image states; render-target/SRV overlap needs future warning-proof validation, not broad unbinds. | Windows runtime deferred. |
63 + | D3D12 | Global UAV barrier only. Storage descriptor binding is still a separate unsupported root-signature gap. | Render/depth targets transition to write at pass begin and to shader-resource lazily when bound as sampled descriptors. | Windows runtime deferred. |
64 + | OpenGL | Storage, texture-fetch, and framebuffer barriers are emitted after compute when requested. Indirect command barriers stay Phase 7. | Feedback-loop validation is a future diagnostics gap; current backend does not track attached texture handles at descriptor bind. | Linux device smoke gate still needed. |
65 +
57 66 ## Public frame shape
58 67
59 68 Target API shape:
184 unchanged lines hidden