diff options
Diffstat (limited to 'src/tests/3d/test_3d_physics.cc')
| -rw-r--r-- | src/tests/3d/test_3d_physics.cc | 100 |
1 files changed, 6 insertions, 94 deletions
diff --git a/src/tests/3d/test_3d_physics.cc b/src/tests/3d/test_3d_physics.cc index eb1f5ef..2ee5a4a 100644 --- a/src/tests/3d/test_3d_physics.cc +++ b/src/tests/3d/test_3d_physics.cc @@ -11,6 +11,7 @@ #include "gpu/texture_manager.h" #include "platform/platform.h" #include "procedural/generator.h" +#include "../common/test_3d_helpers.h" #include <cmath> #include <cstdio> #include <cstring> @@ -25,100 +26,8 @@ static PhysicsSystem g_physics; static WGPUDevice g_device = nullptr; static WGPUQueue g_queue = nullptr; static WGPUSurface g_surface = nullptr; -static WGPUAdapter g_adapter = nullptr; static WGPUTextureFormat g_format = WGPUTextureFormat_Undefined; -// ... (init_wgpu implementation same as before) -void init_wgpu(PlatformState* platform_state) { - WGPUInstance instance = wgpuCreateInstance(nullptr); - if (!instance) { - fprintf(stderr, "Failed to create WGPU instance.\n"); - exit(1); - } - - g_surface = platform_create_wgpu_surface(instance, platform_state); - if (!g_surface) { - fprintf(stderr, "Failed to create WGPU surface.\n"); - exit(1); - } - - WGPURequestAdapterOptions adapter_opts = {}; - adapter_opts.compatibleSurface = g_surface; - adapter_opts.powerPreference = WGPUPowerPreference_HighPerformance; - -#if defined(DEMO_CROSS_COMPILE_WIN32) - auto on_adapter = [](WGPURequestAdapterStatus status, WGPUAdapter adapter, - const char* message, void* userdata) { - if (status == WGPURequestAdapterStatus_Success) { - *(WGPUAdapter*)userdata = adapter; - } - }; - wgpuInstanceRequestAdapter(instance, &adapter_opts, on_adapter, &g_adapter); -#else - auto on_adapter = [](WGPURequestAdapterStatus status, WGPUAdapter adapter, - WGPUStringView message, void* userdata, void* user2) { - (void)user2; - if (status == WGPURequestAdapterStatus_Success) { - *(WGPUAdapter*)userdata = adapter; - } - }; - WGPURequestAdapterCallbackInfo adapter_cb = {}; - adapter_cb.mode = WGPUCallbackMode_WaitAnyOnly; - adapter_cb.callback = on_adapter; - adapter_cb.userdata1 = &g_adapter; - wgpuInstanceRequestAdapter(instance, &adapter_opts, adapter_cb); -#endif - - while (!g_adapter) { - platform_wgpu_wait_any(instance); - } - - WGPUDeviceDescriptor device_desc = {}; - -#if defined(DEMO_CROSS_COMPILE_WIN32) - auto on_device = [](WGPURequestDeviceStatus status, WGPUDevice device, - const char* message, void* userdata) { - if (status == WGPURequestDeviceStatus_Success) { - *(WGPUDevice*)userdata = device; - } - }; - wgpuAdapterRequestDevice(g_adapter, &device_desc, on_device, &g_device); -#else - auto on_device = [](WGPURequestDeviceStatus status, WGPUDevice device, - WGPUStringView message, void* userdata, void* user2) { - (void)user2; - if (status == WGPURequestDeviceStatus_Success) { - *(WGPUDevice*)userdata = device; - } - }; - WGPURequestDeviceCallbackInfo device_cb = {}; - device_cb.mode = WGPUCallbackMode_WaitAnyOnly; - device_cb.callback = on_device; - device_cb.userdata1 = &g_device; - wgpuAdapterRequestDevice(g_adapter, &device_desc, device_cb); -#endif - - while (!g_device) { - platform_wgpu_wait_any(instance); - } - - g_queue = wgpuDeviceGetQueue(g_device); - - WGPUSurfaceCapabilities caps = {}; - wgpuSurfaceGetCapabilities(g_surface, g_adapter, &caps); - g_format = caps.formats[0]; - - WGPUSurfaceConfiguration config = {}; - config.device = g_device; - config.format = g_format; - config.usage = WGPUTextureUsage_RenderAttachment; - config.width = platform_state->width; - config.height = platform_state->height; - config.presentMode = WGPUPresentMode_Fifo; - config.alphaMode = WGPUCompositeAlphaMode_Opaque; - wgpuSurfaceConfigure(g_surface, &config); -} - void setup_scene() { g_scene.clear(); srand(12345); // Fixed seed @@ -205,8 +114,11 @@ int main(int argc, char** argv) { PlatformState platform_state = platform_init(false, 1280, 720); - // The test's own WGPU init sequence - init_wgpu(&platform_state); + WgpuSurfaceContext wgpu_ctx = init_wgpu_with_surface(&platform_state); + g_device = wgpu_ctx.device; + g_queue = wgpu_ctx.queue; + g_surface = wgpu_ctx.surface; + g_format = wgpu_ctx.format; InitShaderComposer(); |
