// Headless GPU implementation - functional stubs for testing // Workspace: demo (shared across all workspaces) #if defined(DEMO_HEADLESS) #include "gpu.h" #include "platform/stub_types.h" #include static bool g_initialized = false; GpuBuffer gpu_create_buffer(WGPUDevice device, size_t size, uint32_t usage, const void* data) { (void)device; (void)size; (void)usage; (void)data; return {nullptr, 0}; } RenderPass gpu_create_render_pass(WGPUDevice device, WGPUTextureFormat format, const char* shader_code, ResourceBinding* bindings, int num_bindings) { (void)device; (void)format; (void)shader_code; (void)bindings; (void)num_bindings; return {nullptr, nullptr, 0, 0}; } ComputePass gpu_create_compute_pass(WGPUDevice device, const char* shader_code, ResourceBinding* bindings, int num_bindings) { (void)device; (void)shader_code; (void)bindings; (void)num_bindings; return {nullptr, nullptr, 0, 0, 0}; } void gpu_init(PlatformState* platform_state) { (void)platform_state; if (!g_initialized) { printf("[headless] GPU initialized\n"); g_initialized = true; } } void gpu_draw(float audio_peak, float aspect_ratio, float time, float beat) { (void)audio_peak; (void)aspect_ratio; (void)time; (void)beat; } void gpu_resize(int width, int height) { (void)width; (void)height; } void gpu_shutdown() { if (g_initialized) { printf("[headless] GPU shutdown\n"); g_initialized = false; } } const GpuContext* gpu_get_context() { static GpuContext ctx = {nullptr, nullptr, WGPUTextureFormat_BGRA8Unorm}; return &ctx; } MainSequence* gpu_get_main_sequence() { return nullptr; } #if !defined(STRIP_ALL) void gpu_simulate_until(float time, float bpm) { (void)time; (void)bpm; } void gpu_add_custom_effect(Effect* effect, float start_time, float end_time, int priority) { (void)effect; (void)start_time; (void)end_time; (void)priority; } #endif #endif // DEMO_HEADLESS