diff options
| author | skal <pascal.massimino@gmail.com> | 2026-03-12 17:14:57 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-03-12 17:14:57 +0100 |
| commit | efad11008616d30f685752fc70aa05be524c1a78 (patch) | |
| tree | 3a2dad4e054749af900c03800b3868d7a26a7678 /src/gpu/gpu.cc | |
| parent | ce032eb25a480c086edcd7bbfa4a742e5e44a6a7 (diff) | |
fix(win): update wgpu-native to v27, unify Windows/macOS API paths
- fetch_win_deps.sh: update wgpu-native v0.19.4.1 → v27.0.4.0 (same as macOS)
- platform.h: remove v0.19 compat shims, Windows now uses WGPUStringView API
- gpu.cc/gpu.h: remove DEMO_CROSS_COMPILE_WIN32 old-API branches
- texture_readback.cc, visual_debug.cc, hybrid3d_effect.cc: same cleanup
- rotating_cube_effect.cc: remove #ifdef guard for depthSlice
- glfw3webgpu.c: remove old WGPUSurfaceDescriptorFromWindowsHWND branch
- asset_manager.cc: fix DEMO_STRIP_ALL→STRIP_ALL guard (vs_main was missing
in STRIP_ALL Windows builds because disk-loading path ran on embedded data)
- tracker.cc: skip MP3 assets gracefully in STRIP_ALL builds instead of fatal
handoff(Gemini): Windows .exe now runs under Wine. demo64k.exe renders frames
and progresses through audio timeline. Pre-existing test failures unchanged.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'src/gpu/gpu.cc')
| -rw-r--r-- | src/gpu/gpu.cc | 70 |
1 files changed, 12 insertions, 58 deletions
diff --git a/src/gpu/gpu.cc b/src/gpu/gpu.cc index e743bf7..a463a10 100644 --- a/src/gpu/gpu.cc +++ b/src/gpu/gpu.cc @@ -325,30 +325,6 @@ ComputePass gpu_create_compute_pass(WGPUDevice device, const char* shader_code, // --- Main Init/Draw --- #if !defined(STRIP_ALL) -#if defined(DEMO_CROSS_COMPILE_WIN32) -static void handle_request_adapter(WGPURequestAdapterStatus status, - WGPUAdapter adapter, const char* message, - void* userdata) { - if (status == WGPURequestAdapterStatus_Success) { - *((WGPUAdapter*)userdata) = adapter; - } else { - printf("Request adapter failed: %s\n", message ? message : "Unknown"); - } -} -static void handle_request_device(WGPURequestDeviceStatus status, - WGPUDevice device, const char* message, - void* userdata) { - if (status == WGPURequestDeviceStatus_Success) { - *((WGPUDevice*)userdata) = device; - } else { - printf("Request device failed: %s\n", message ? message : "Unknown"); - } -} -static void handle_device_error(WGPUErrorType type, const char* message, - void* userdata) { - printf("WebGPU Error: %s\n", message ? message : "Unknown"); -} -#else static void handle_request_adapter(WGPURequestAdapterStatus status, WGPUAdapter adapter, WGPUStringView message, void* userdata, void* userdata2) { @@ -377,29 +353,13 @@ static void handle_device_error(const WGPUDevice* device, WGPUErrorType type, (void)userdata2; printf("WebGPU Error: %.*s\n", (int)message.length, message.data); } -#endif /* defined(DEMO_CROSS_COMPILE_WIN32) */ #else // STRIP_ALL versions -#if defined(DEMO_CROSS_COMPILE_WIN32) -static void handle_request_adapter(WGPURequestAdapterStatus status, - WGPUAdapter adapter, const char* message, - void* userdata) { - if (status == WGPURequestAdapterStatus_Success) { - *((WGPUAdapter*)userdata) = adapter; - } -} -static void handle_request_device(WGPURequestDeviceStatus status, - WGPUDevice device, const char* message, - void* userdata) { - if (status == WGPURequestDeviceStatus_Success) { - *((WGPUDevice*)userdata) = device; - } -} -#else static void handle_request_adapter(WGPURequestAdapterStatus status, WGPUAdapter adapter, WGPUStringView message, void* userdata, void* userdata2) { (void)userdata2; + (void)message; if (status == WGPURequestAdapterStatus_Success) { *((WGPUAdapter*)userdata) = adapter; } @@ -408,58 +368,52 @@ static void handle_request_device(WGPURequestDeviceStatus status, WGPUDevice device, WGPUStringView message, void* userdata, void* userdata2) { (void)userdata2; + (void)message; if (status == WGPURequestDeviceStatus_Success) { *((WGPUDevice*)userdata) = device; } } -#endif /* defined(DEMO_CROSS_COMPILE_WIN32) */ #endif /* !defined(STRIP_ALL) */ void gpu_init(PlatformState* platform_state) { +#if defined(DEMO_CROSS_COMPILE_WIN32) + // Exclude GL backend: wgpu's WGL pixel-format selection panics under Wine. + WGPUInstanceExtras win_extras = {}; + win_extras.chain.sType = (WGPUSType)WGPUSType_InstanceExtras; + win_extras.backends = WGPUInstanceBackend_Primary; // Vulkan + DX12, no GL + WGPUInstanceDescriptor win_desc = {}; + win_desc.nextInChain = (WGPUChainedStruct*)&win_extras; + g_instance = wgpuCreateInstance(&win_desc); +#else g_instance = wgpuCreateInstance(nullptr); +#endif g_surface = platform_create_wgpu_surface(g_instance, platform_state); WGPURequestAdapterOptions adapter_opts = {}; adapter_opts.compatibleSurface = g_surface; adapter_opts.powerPreference = WGPUPowerPreference_HighPerformance; -#if defined(DEMO_CROSS_COMPILE_WIN32) - wgpuInstanceRequestAdapter(g_instance, &adapter_opts, handle_request_adapter, - &g_adapter); -#else WGPURequestAdapterCallbackInfo adapter_cb = {}; adapter_cb.mode = WGPUCallbackMode_WaitAnyOnly; adapter_cb.callback = handle_request_adapter; adapter_cb.userdata1 = &g_adapter; wgpuInstanceRequestAdapter(g_instance, &adapter_opts, adapter_cb); -#endif /* defined(DEMO_CROSS_COMPILE_WIN32) */ while (!g_adapter) platform_wgpu_wait_any(g_instance); WGPUDeviceDescriptor device_desc = {}; #if !defined(STRIP_ALL) -#if !defined(DEMO_CROSS_COMPILE_WIN32) device_desc.uncapturedErrorCallbackInfo.callback = handle_device_error; -#endif /* !defined(DEMO_CROSS_COMPILE_WIN32) */ #endif /* !defined(STRIP_ALL) */ -#if defined(DEMO_CROSS_COMPILE_WIN32) - wgpuAdapterRequestDevice(g_adapter, &device_desc, handle_request_device, - &g_device); -#else WGPURequestDeviceCallbackInfo device_cb = {}; device_cb.mode = WGPUCallbackMode_WaitAnyOnly; device_cb.callback = handle_request_device; device_cb.userdata1 = &g_device; wgpuAdapterRequestDevice(g_adapter, &device_desc, device_cb); -#endif /* defined(DEMO_CROSS_COMPILE_WIN32) */ while (!g_device) platform_wgpu_wait_any(g_instance); -#if defined(DEMO_CROSS_COMPILE_WIN32) && !defined(STRIP_ALL) - platform_wgpu_set_error_callback(g_device, handle_device_error); -#endif /* defined(DEMO_CROSS_COMPILE_WIN32) && !defined(STRIP_ALL) */ - g_queue = wgpuDeviceGetQueue(g_device); WGPUSurfaceCapabilities caps = {}; |
