Phase 8: wire IDCT QPU dispatch through public API
daedalus_ctx now owns a v3d_runner when V3D is available. The public API's dispatch_vp9_idct8 routes QPU calls through a new dispatch_idct8_qpu helper that: (1) lazy-creates the cycle 1 v4 pipeline on first use, (2) allocates 3 host-visible SSBOs per call (coeffs/dst/meta), (3) memcpy host->GPU, (4) dispatch with the v4 32-blocks-per-WG geometry, (5) memcpy GPU->host. Per-call alloc is intentional for Phase 8 correctness-first scope; buffer-pool perf optimization is deferred. Added daedalus_ctx_create_no_qpu() for fast-path callers that know they want CPU only. test_api_idct extended to a 3-mode matrix: CPU forced, QPU forced, AUTO recipe. All three deliver 4096/4096 bit-exact on hertz with V3D 7.1.7.0: recipe substrate for VP9_IDCT8: 2 (QPU) [CPU] 4096/4096 bit-exact [QPU] 4096/4096 bit-exact (real QPU dispatch through the API) [AUTO] 4096/4096 bit-exact (recipe routes to QPU) Next Phase 8 sub-step: same wiring pattern for cycle 2 LPF wd=4 and cycle 4 LPF wd=8 (the other two recipe-QPU kernels). Cycle 3 MC and cycle 5 CDEF only need the dispatch hook (recipe routes to CPU; QPU stays opportunistic via explicit override). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -282,6 +282,7 @@ endif()
|
||||
|
||||
add_library(daedalus_core STATIC
|
||||
src/daedalus_core.c
|
||||
src/v3d_runner.c
|
||||
${FFASM_SOURCES}
|
||||
${FFASM_LPF_SOURCES}
|
||||
${FFASM_MC_SOURCES}
|
||||
@@ -290,7 +291,12 @@ add_library(daedalus_core STATIC
|
||||
${DAV1D_CDEF_C_SOURCES}
|
||||
)
|
||||
target_include_directories(daedalus_core PUBLIC include)
|
||||
target_include_directories(daedalus_core PRIVATE src)
|
||||
target_link_libraries(daedalus_core PUBLIC Vulkan::Vulkan)
|
||||
target_compile_options(daedalus_core PRIVATE -O2)
|
||||
if (DAEDALUS_BUILD_VULKAN)
|
||||
add_dependencies(daedalus_core daedalus_shaders)
|
||||
endif()
|
||||
|
||||
add_executable(test_api_idct
|
||||
tests/test_api_idct.c
|
||||
|
||||
Reference in New Issue
Block a user