@@ -129,12 +129,12 @@ impl GpuContext { |
| 129 | 129 | let display = xlib_display.display_ptr(); |
| 130 | 130 | let screen = xlib_display.default_screen(); |
| 131 | 131 | |
| 132 | | - // Prefer GL over Vulkan for better X11 compositor integration |
| 132 | + // Try Vulkan first (higher texture limits), fall back to GL |
| 133 | + // GL has a 2048 texture limit on some systems which breaks full-screen windows |
| 133 | 134 | let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor { |
| 134 | | - backends: wgpu::Backends::GL, |
| 135 | + backends: wgpu::Backends::VULKAN | wgpu::Backends::GL, |
| 135 | 136 | ..Default::default() |
| 136 | 137 | }); |
| 137 | | - tracing::info!("Using OpenGL backend for better compositor compatibility"); |
| 138 | 138 | |
| 139 | 139 | let handle = XlibWindowHandle::new(window, display, screen); |
| 140 | 140 | |
@@ -149,14 +149,17 @@ impl GpuContext { |
| 149 | 149 | .await |
| 150 | 150 | .ok_or(GpuError::NoAdapter)?; |
| 151 | 151 | |
| 152 | | - tracing::info!("Using GPU adapter: {:?}", adapter.get_info().name); |
| 152 | + let adapter_info = adapter.get_info(); |
| 153 | + tracing::info!("Using GPU adapter: {:?} (backend: {:?})", adapter_info.name, adapter_info.backend); |
| 153 | 154 | |
| 154 | 155 | let (device, queue) = adapter |
| 155 | 156 | .request_device( |
| 156 | 157 | &wgpu::DeviceDescriptor { |
| 157 | 158 | label: Some("garterm"), |
| 158 | 159 | required_features: wgpu::Features::empty(), |
| 159 | | - required_limits: wgpu::Limits::downlevel_webgl2_defaults(), |
| 160 | + // Use default limits (8192 max texture) instead of downlevel (2048) |
| 161 | + // to support full-screen windows on high-res displays |
| 162 | + required_limits: wgpu::Limits::default(), |
| 160 | 163 | memory_hints: wgpu::MemoryHints::Performance, |
| 161 | 164 | }, |
| 162 | 165 | None, |