Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,48 @@ if (PkgConfig_FOUND)
pkg_check_modules(LIBURING liburing)
endif()

# ============================================================
# Shader compilation
#
# If glslangValidator is available, compile compute shaders
# from GLSL to SPIR-V automatically during the build.
# ============================================================

find_program(GLSLANG_VALIDATOR glslangValidator)

if(GLSLANG_VALIDATOR)
message(STATUS "Found glslangValidator: ${GLSLANG_VALIDATOR}")

# Find all .comp shader files
file(GLOB SHADER_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/shaders/*.comp)

set(SPIRV_SHADERS)
foreach(SHADER ${SHADER_SOURCES})
get_filename_component(SHADER_NAME ${SHADER} NAME)
set(SPIRV "${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.spv")

add_custom_command(
OUTPUT ${SPIRV}
COMMAND ${CMAKE_COMMAND} -E make_directory
"${CMAKE_CURRENT_BINARY_DIR}/shaders"
COMMAND ${GLSLANG_VALIDATOR} -V ${SHADER} -o ${SPIRV}
DEPENDS ${SHADER}
COMMENT "Compiling shader ${SHADER_NAME} to SPIR-V"
VERBATIM
)

list(APPEND SPIRV_SHADERS ${SPIRV})
endforeach()

if(SPIRV_SHADERS)
add_custom_target(shaders ALL DEPENDS ${SPIRV_SHADERS})
message(STATUS "Shader compilation enabled (${list_length} shaders found)")
endif()
else()
message(STATUS "glslangValidator not found - shader compilation disabled")
message(STATUS " To enable: install vulkan-tools or spirv-tools package")
endif()

# ============================================================
# Core runtime library
#
Expand Down Expand Up @@ -232,6 +274,17 @@ if (DS_BUILD_TESTS)
add_test(NAME ds_cpu_backend_test COMMAND ds_cpu_backend_test)
add_test(NAME ds_error_handling_test COMMAND ds_error_handling_test)

# GDeflate format test
add_executable(ds_gdeflate_format_test
tests/gdeflate_format_test.cpp
)
if (TARGET ds_runtime)
target_link_libraries(ds_gdeflate_format_test PRIVATE ds_runtime)
elseif (TARGET ds_runtime_static)
target_link_libraries(ds_gdeflate_format_test PRIVATE ds_runtime_static)
endif()
add_test(NAME ds_gdeflate_format_test COMMAND ds_gdeflate_format_test)

if (LIBURING_FOUND)
add_executable(ds_io_uring_tests
tests/io_uring_backend_test.cpp
Expand Down
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,16 @@ The codebase has been significantly improved:
- ⚠️ **io_uring backend**: Requires liburing dependency (not built by default)
- ⚠️ **Request cancellation**: Enum added but cancel() method not yet implemented

### 📋 Investigation & Planning Complete (Phase 0)
Comprehensive investigation and planning documents have been created:
- **[Master Roadmap](docs/master_roadmap.md)** (30KB) - Complete 36-week phased plan with microtasks
- **[GDeflate Investigation](docs/investigation_gdeflate.md)** (16KB) - CPU & GPU implementation plan
- **[Vulkan Compute Investigation](docs/investigation_vulkan_compute.md)** (26KB) - GPU compute pipelines
- **[io_uring Investigation](docs/investigation_io_uring.md)** (20KB) - Multi-worker backend enhancement
- **[Additional Features](docs/investigation_remaining_features.md)** (18KB) - Cancellation, GPU workflows, Wine/Proton

Timeline: 36 weeks for full implementation, 12 weeks for MVP

See [MISSING_FEATURES.md](MISSING_FEATURES.md) for the complete roadmap and [COMPARISON.md](COMPARISON.md) for documentation vs reality comparison.

---
Expand Down
Loading
Loading